1 | 'use strict';
|
2 |
|
3 | function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
4 |
|
5 | var helperPluginUtils = require('@babel/helper-plugin-utils');
|
6 | var fs = require('fs');
|
7 | var fastXmlParser = require('fast-xml-parser');
|
8 | var pluginTransformTypeScript = _interopDefault(require('@babel/plugin-transform-typescript'));
|
9 | var presetTypeScript = _interopDefault(require('@babel/preset-typescript'));
|
10 |
|
11 | var index = helperPluginUtils.declare((api, {
|
12 | jsxPragma,
|
13 | allExtensions = false,
|
14 | isTSX = false
|
15 | }) => {
|
16 | api.assertVersion(7);
|
17 | return {
|
18 | "presets": [[presetTypeScript, {
|
19 | jsxPragma,
|
20 | allExtensions,
|
21 | isTSX
|
22 | }]],
|
23 | "overrides": [{
|
24 | "test": filePath => {
|
25 | if (/\.vue$/.test(filePath)) {
|
26 | const json = fastXmlParser.parse(fs.readFileSync(filePath, {
|
27 | encoding: "utf8"
|
28 | }), {
|
29 | ignoreAttributes: false
|
30 | });
|
31 |
|
32 | if (typeof json.script !== "undefined" && typeof json.script["@_lang"] && json.script["@_lang"].toLowerCase() === "ts") {
|
33 | return true;
|
34 | }
|
35 | }
|
36 |
|
37 | return false;
|
38 | },
|
39 | "plugins": [[pluginTransformTypeScript, {
|
40 | jsxPragma,
|
41 | allExtensions,
|
42 | isTSX
|
43 | }]]
|
44 | }]
|
45 | };
|
46 | });
|
47 |
|
48 | module.exports = index;
|