UNPKG

2.15 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = void 0;
7
8var _helperPluginUtils = require("@babel/helper-plugin-utils");
9
10var _pluginSyntaxDecorators = _interopRequireDefault(require("@babel/plugin-syntax-decorators"));
11
12var _helperCreateClassFeaturesPlugin = require("@babel/helper-create-class-features-plugin");
13
14var _transformerLegacy = _interopRequireDefault(require("./transformer-legacy"));
15
16function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
18var _default = (0, _helperPluginUtils.declare)((api, options) => {
19 api.assertVersion(7);
20 const {
21 legacy = false
22 } = options;
23
24 if (typeof legacy !== "boolean") {
25 throw new Error("'legacy' must be a boolean.");
26 }
27
28 const {
29 decoratorsBeforeExport
30 } = options;
31
32 if (decoratorsBeforeExport === undefined) {
33 if (!legacy) {
34 throw new Error("The 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.");
35 }
36 } else {
37 if (legacy) {
38 throw new Error("'decoratorsBeforeExport' can't be used with legacy decorators.");
39 }
40
41 if (typeof decoratorsBeforeExport !== "boolean") {
42 throw new Error("'decoratorsBeforeExport' must be a boolean.");
43 }
44 }
45
46 if (legacy) {
47 return {
48 name: "proposal-decorators",
49 inherits: _pluginSyntaxDecorators.default,
50
51 manipulateOptions({
52 generatorOpts
53 }) {
54 generatorOpts.decoratorsBeforeExport = decoratorsBeforeExport;
55 },
56
57 visitor: _transformerLegacy.default
58 };
59 }
60
61 return (0, _helperCreateClassFeaturesPlugin.createClassFeaturePlugin)({
62 name: "proposal-decorators",
63 api,
64 feature: _helperCreateClassFeaturesPlugin.FEATURES.decorators,
65
66 manipulateOptions({
67 generatorOpts,
68 parserOpts
69 }) {
70 parserOpts.plugins.push(["decorators", {
71 decoratorsBeforeExport
72 }]);
73 generatorOpts.decoratorsBeforeExport = decoratorsBeforeExport;
74 }
75
76 });
77});
78
79exports.default = _default;
\No newline at end of file