147 lines
4.8 KiB
Plaintext
147 lines
4.8 KiB
Plaintext
|
'use strict';
|
||
|
|
||
|
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
|
||
|
var helperPluginUtils = require('@babel/helper-plugin-utils');
|
||
|
var transformTypeScript = require('@babel/plugin-transform-typescript');
|
||
|
require('@babel/plugin-syntax-jsx');
|
||
|
var transformModulesCommonJS = require('@babel/plugin-transform-modules-commonjs');
|
||
|
var helperValidatorOption = require('@babel/helper-validator-option');
|
||
|
|
||
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
||
|
|
||
|
var transformTypeScript__default = /*#__PURE__*/_interopDefault(transformTypeScript);
|
||
|
var transformModulesCommonJS__default = /*#__PURE__*/_interopDefault(transformModulesCommonJS);
|
||
|
|
||
|
const v = new helperValidatorOption.OptionValidator("@babel/preset-typescript");
|
||
|
function normalizeOptions(options = {}) {
|
||
|
let {
|
||
|
allowNamespaces = true,
|
||
|
jsxPragma,
|
||
|
onlyRemoveTypeImports
|
||
|
} = options;
|
||
|
const TopLevelOptions = {
|
||
|
ignoreExtensions: "ignoreExtensions",
|
||
|
allowNamespaces: "allowNamespaces",
|
||
|
disallowAmbiguousJSXLike: "disallowAmbiguousJSXLike",
|
||
|
jsxPragma: "jsxPragma",
|
||
|
jsxPragmaFrag: "jsxPragmaFrag",
|
||
|
onlyRemoveTypeImports: "onlyRemoveTypeImports",
|
||
|
optimizeConstEnums: "optimizeConstEnums",
|
||
|
rewriteImportExtensions: "rewriteImportExtensions",
|
||
|
allExtensions: "allExtensions",
|
||
|
isTSX: "isTSX"
|
||
|
};
|
||
|
const jsxPragmaFrag = v.validateStringOption(TopLevelOptions.jsxPragmaFrag, options.jsxPragmaFrag, "React.Fragment");
|
||
|
{
|
||
|
var allExtensions = v.validateBooleanOption(TopLevelOptions.allExtensions, options.allExtensions, false);
|
||
|
var isTSX = v.validateBooleanOption(TopLevelOptions.isTSX, options.isTSX, false);
|
||
|
if (isTSX) {
|
||
|
v.invariant(allExtensions, "isTSX:true requires allExtensions:true");
|
||
|
}
|
||
|
}
|
||
|
const ignoreExtensions = v.validateBooleanOption(TopLevelOptions.ignoreExtensions, options.ignoreExtensions, false);
|
||
|
const disallowAmbiguousJSXLike = v.validateBooleanOption(TopLevelOptions.disallowAmbiguousJSXLike, options.disallowAmbiguousJSXLike, false);
|
||
|
if (disallowAmbiguousJSXLike) {
|
||
|
{
|
||
|
v.invariant(allExtensions, "disallowAmbiguousJSXLike:true requires allExtensions:true");
|
||
|
}
|
||
|
}
|
||
|
const optimizeConstEnums = v.validateBooleanOption(TopLevelOptions.optimizeConstEnums, options.optimizeConstEnums, false);
|
||
|
const rewriteImportExtensions = v.validateBooleanOption(TopLevelOptions.rewriteImportExtensions, options.rewriteImportExtensions, false);
|
||
|
const normalized = {
|
||
|
ignoreExtensions,
|
||
|
allowNamespaces,
|
||
|
disallowAmbiguousJSXLike,
|
||
|
jsxPragma,
|
||
|
jsxPragmaFrag,
|
||
|
onlyRemoveTypeImports,
|
||
|
optimizeConstEnums,
|
||
|
rewriteImportExtensions
|
||
|
};
|
||
|
{
|
||
|
normalized.allExtensions = allExtensions;
|
||
|
normalized.isTSX = isTSX;
|
||
|
}
|
||
|
return normalized;
|
||
|
}
|
||
|
|
||
|
var pluginRewriteTSImports = helperPluginUtils.declare(function ({
|
||
|
types: t
|
||
|
}) {
|
||
|
return {
|
||
|
name: "preset-typescript/plugin-rewrite-ts-imports",
|
||
|
visitor: {
|
||
|
"ImportDeclaration|ExportAllDeclaration|ExportNamedDeclaration"({
|
||
|
node
|
||
|
}) {
|
||
|
const {
|
||
|
source
|
||
|
} = node;
|
||
|
const kind = t.isImportDeclaration(node) ? node.importKind : node.exportKind;
|
||
|
if (kind === "value" && source && /[\\/]/.test(source.value)) {
|
||
|
source.value = source.value.replace(/(\.[mc]?)ts$/, "$1js").replace(/\.tsx$/, ".js");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
});
|
||
|
|
||
|
var index = helperPluginUtils.declarePreset((api, opts) => {
|
||
|
api.assertVersion(7);
|
||
|
const {
|
||
|
allExtensions,
|
||
|
ignoreExtensions,
|
||
|
allowNamespaces,
|
||
|
disallowAmbiguousJSXLike,
|
||
|
isTSX,
|
||
|
jsxPragma,
|
||
|
jsxPragmaFrag,
|
||
|
onlyRemoveTypeImports,
|
||
|
optimizeConstEnums,
|
||
|
rewriteImportExtensions
|
||
|
} = normalizeOptions(opts);
|
||
|
const pluginOptions = disallowAmbiguousJSXLike => ({
|
||
|
allowDeclareFields: opts.allowDeclareFields,
|
||
|
allowNamespaces,
|
||
|
disallowAmbiguousJSXLike,
|
||
|
jsxPragma,
|
||
|
jsxPragmaFrag,
|
||
|
onlyRemoveTypeImports,
|
||
|
optimizeConstEnums
|
||
|
});
|
||
|
const getPlugins = (isTSX, disallowAmbiguousJSXLike) => {
|
||
|
{
|
||
|
return [[transformTypeScript__default.default, Object.assign({
|
||
|
isTSX
|
||
|
}, pluginOptions(disallowAmbiguousJSXLike))]];
|
||
|
}
|
||
|
};
|
||
|
const disableExtensionDetect = allExtensions || ignoreExtensions;
|
||
|
return {
|
||
|
plugins: rewriteImportExtensions ? [pluginRewriteTSImports] : [],
|
||
|
overrides: disableExtensionDetect ? [{
|
||
|
plugins: getPlugins(isTSX, disallowAmbiguousJSXLike)
|
||
|
}] : [{
|
||
|
test: /\.ts$/,
|
||
|
plugins: getPlugins(false, false)
|
||
|
}, {
|
||
|
test: /\.mts$/,
|
||
|
sourceType: "module",
|
||
|
plugins: getPlugins(false, true)
|
||
|
}, {
|
||
|
test: /\.cts$/,
|
||
|
sourceType: "unambiguous",
|
||
|
plugins: [[transformModulesCommonJS__default.default, {
|
||
|
allowTopLevelThis: true
|
||
|
}], [transformTypeScript__default.default, pluginOptions(true)]]
|
||
|
}, {
|
||
|
test: /\.tsx$/,
|
||
|
plugins: getPlugins(true, false)
|
||
|
}]
|
||
|
};
|
||
|
});
|
||
|
|
||
|
exports.default = index;
|
||
|
//# sourceMappingURL=index.js.map
|