UNPKG

1.3 kBJavaScriptView Raw
1'use strict';
2
3function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
4
5var helperPluginUtils = require('@babel/helper-plugin-utils');
6var fs = require('fs');
7var fastXmlParser = require('fast-xml-parser');
8var pluginTransformTypeScript = _interopDefault(require('@babel/plugin-transform-typescript'));
9var presetTypeScript = _interopDefault(require('@babel/preset-typescript'));
10
11var 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
48module.exports = index;