| | |
| | | var _default = (0, _helperPluginUtils.declare)((api, options) => { |
| | | api.assertVersion(7); |
| | | const { |
| | | legacy = false |
| | | legacy, |
| | | version = legacy ? "legacy" : "2018-09", |
| | | decoratorsBeforeExport = version === "2021-12" ? false : undefined |
| | | } = options; |
| | | |
| | | if (typeof legacy !== "boolean") { |
| | | throw new Error("'legacy' must be a boolean."); |
| | | if (version !== "2021-12" && version !== "2018-09" && version !== "legacy") { |
| | | throw new Error("Unsupported decorators version: " + version); |
| | | } |
| | | |
| | | const { |
| | | decoratorsBeforeExport |
| | | } = options; |
| | | if (legacy !== undefined) { |
| | | if (typeof legacy !== "boolean") { |
| | | throw new Error(".legacy must be a boolean."); |
| | | } |
| | | |
| | | if (options.version !== undefined) { |
| | | throw new Error("You can either use the .legacy or the .version option, not both."); |
| | | } |
| | | } |
| | | |
| | | if (decoratorsBeforeExport === undefined) { |
| | | if (!legacy) { |
| | | throw new Error("The '@babel/plugin-syntax-decorators' plugin requires a" + " 'decoratorsBeforeExport' option, whose value must be a boolean." + " If you want to use the legacy decorators semantics, you can set" + " the 'legacy: true' option."); |
| | | if (version === "2018-09") { |
| | | throw new Error("The decorators plugin, when .version is '2018-09' or not specified," + " requires a 'decoratorsBeforeExport' option, whose value must be a boolean."); |
| | | } |
| | | } else { |
| | | if (legacy) { |
| | | if (version === "legacy") { |
| | | throw new Error("'decoratorsBeforeExport' can't be used with legacy decorators."); |
| | | } |
| | | |
| | |
| | | return { |
| | | name: "syntax-decorators", |
| | | |
| | | manipulateOptions(opts, parserOpts) { |
| | | parserOpts.plugins.push(legacy ? "decorators-legacy" : ["decorators", { |
| | | decoratorsBeforeExport |
| | | }]); |
| | | manipulateOptions({ |
| | | generatorOpts |
| | | }, parserOpts) { |
| | | if (version === "legacy") { |
| | | parserOpts.plugins.push("decorators-legacy"); |
| | | } else if (version === "2018-09") { |
| | | parserOpts.plugins.push(["decorators", { |
| | | decoratorsBeforeExport |
| | | }]); |
| | | generatorOpts.decoratorsBeforeExport = decoratorsBeforeExport; |
| | | } else { |
| | | parserOpts.plugins.push(["decorators", { |
| | | decoratorsBeforeExport |
| | | }], "decoratorAutoAccessors"); |
| | | generatorOpts.decoratorsBeforeExport = decoratorsBeforeExport; |
| | | } |
| | | } |
| | | |
| | | }; |