@babel/plugin-proposal-decorators 7.20.0 → 7.20.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -4,19 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _helperPluginUtils = require("@babel/helper-plugin-utils");
9
-
10
8
  var _pluginSyntaxDecorators = require("@babel/plugin-syntax-decorators");
11
-
12
9
  var _helperCreateClassFeaturesPlugin = require("@babel/helper-create-class-features-plugin");
13
-
14
10
  var _transformerLegacy = require("./transformer-legacy");
15
-
16
11
  var _transformer = require("./transformer-2022-03");
17
-
18
12
  var _default = (0, _helperPluginUtils.declare)((api, options) => {
19
13
  api.assertVersion(7);
14
+
20
15
  {
21
16
  var {
22
17
  legacy
@@ -25,7 +20,6 @@ var _default = (0, _helperPluginUtils.declare)((api, options) => {
25
20
  const {
26
21
  version
27
22
  } = options;
28
-
29
23
  if (legacy || version === "legacy") {
30
24
  return {
31
25
  name: "proposal-decorators",
@@ -35,6 +29,7 @@ var _default = (0, _helperPluginUtils.declare)((api, options) => {
35
29
  } else if (version === "2021-12" || version === "2022-03") {
36
30
  return (0, _transformer.default)(api, options, version);
37
31
  } else {
32
+ api.assertVersion("^7.0.2");
38
33
  return (0, _helperCreateClassFeaturesPlugin.createClassFeaturePlugin)({
39
34
  name: "proposal-decorators",
40
35
  api,
@@ -43,7 +38,6 @@ var _default = (0, _helperPluginUtils.declare)((api, options) => {
43
38
  });
44
39
  }
45
40
  });
46
-
47
41
  exports.default = _default;
48
42
 
49
43
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["declare","api","options","assertVersion","legacy","version","name","inherits","syntaxDecorators","visitor","legacyVisitor","transformer2022_03","createClassFeaturePlugin","feature","FEATURES","decorators"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @babel/development/plugin-name */\n\nimport { declare } from \"@babel/helper-plugin-utils\";\nimport syntaxDecorators from \"@babel/plugin-syntax-decorators\";\nimport {\n createClassFeaturePlugin,\n FEATURES,\n} from \"@babel/helper-create-class-features-plugin\";\nimport legacyVisitor from \"./transformer-legacy\";\nimport transformer2022_03 from \"./transformer-2022-03\";\nimport type { Options as SyntaxOptions } from \"@babel/plugin-syntax-decorators\";\n\ninterface Options extends SyntaxOptions {\n /** @depreated use `constantSuper` assumption instead. Only supported in 2021-12 version. */\n loose?: boolean;\n}\n\nexport type { Options };\n\nexport default declare((api, options: Options) => {\n api.assertVersion(7);\n\n // Options are validated in @babel/plugin-syntax-decorators\n if (!process.env.BABEL_8_BREAKING) {\n // eslint-disable-next-line no-var\n var { legacy } = options;\n }\n const { version } = options;\n\n if (\n process.env.BABEL_8_BREAKING\n ? version === \"legacy\"\n : legacy || version === \"legacy\"\n ) {\n return {\n name: \"proposal-decorators\",\n inherits: syntaxDecorators,\n visitor: legacyVisitor,\n };\n } else if (version === \"2021-12\" || version === \"2022-03\") {\n return transformer2022_03(api, options, version);\n } else if (!process.env.BABEL_8_BREAKING) {\n return createClassFeaturePlugin({\n name: \"proposal-decorators\",\n\n api,\n feature: FEATURES.decorators,\n inherits: syntaxDecorators,\n // loose: options.loose, Not supported\n });\n } else {\n throw new Error(\n \"The '.version' option must be one of 'legacy', '2021-12' or '2022-03'.\",\n );\n }\n});\n"],"mappings":";;;;;;;AAEA;;AACA;;AACA;;AAIA;;AACA;;eAUe,IAAAA,0BAAA,EAAQ,CAACC,GAAD,EAAMC,OAAN,KAA2B;EAChDD,GAAG,CAACE,aAAJ,CAAkB,CAAlB;EAGmC;IAEjC,IAAI;MAAEC;IAAF,IAAaF,OAAjB;EACD;EACD,MAAM;IAAEG;EAAF,IAAcH,OAApB;;EAEA,IAGME,MAAM,IAAIC,OAAO,KAAK,QAH5B,EAIE;IACA,OAAO;MACLC,IAAI,EAAE,qBADD;MAELC,QAAQ,EAAEC,+BAFL;MAGLC,OAAO,EAAEC;IAHJ,CAAP;EAKD,CAVD,MAUO,IAAIL,OAAO,KAAK,SAAZ,IAAyBA,OAAO,KAAK,SAAzC,EAAoD;IACzD,OAAO,IAAAM,oBAAA,EAAmBV,GAAnB,EAAwBC,OAAxB,EAAiCG,OAAjC,CAAP;EACD,CAFM,MAEmC;IACxC,OAAO,IAAAO,yDAAA,EAAyB;MAC9BN,IAAI,EAAE,qBADwB;MAG9BL,GAH8B;MAI9BY,OAAO,EAAEC,yCAAA,CAASC,UAJY;MAK9BR,QAAQ,EAAEC;IALoB,CAAzB,CAAP;EAQD;AAKF,CApCc,C"}
1
+ {"version":3,"names":["declare","api","options","assertVersion","legacy","version","name","inherits","syntaxDecorators","visitor","legacyVisitor","transformer2022_03","createClassFeaturePlugin","feature","FEATURES","decorators"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @babel/development/plugin-name */\n\nimport { declare } from \"@babel/helper-plugin-utils\";\nimport syntaxDecorators from \"@babel/plugin-syntax-decorators\";\nimport {\n createClassFeaturePlugin,\n FEATURES,\n} from \"@babel/helper-create-class-features-plugin\";\nimport legacyVisitor from \"./transformer-legacy\";\nimport transformer2022_03 from \"./transformer-2022-03\";\nimport type { Options as SyntaxOptions } from \"@babel/plugin-syntax-decorators\";\n\ninterface Options extends SyntaxOptions {\n /** @depreated use `constantSuper` assumption instead. Only supported in 2021-12 version. */\n loose?: boolean;\n}\n\nexport type { Options };\n\nexport default declare((api, options: Options) => {\n api.assertVersion(7);\n\n // Options are validated in @babel/plugin-syntax-decorators\n if (!process.env.BABEL_8_BREAKING) {\n // eslint-disable-next-line no-var\n var { legacy } = options;\n }\n const { version } = options;\n\n if (\n process.env.BABEL_8_BREAKING\n ? version === \"legacy\"\n : legacy || version === \"legacy\"\n ) {\n return {\n name: \"proposal-decorators\",\n inherits: syntaxDecorators,\n visitor: legacyVisitor,\n };\n } else if (version === \"2021-12\" || version === \"2022-03\") {\n return transformer2022_03(api, options, version);\n } else if (!process.env.BABEL_8_BREAKING) {\n api.assertVersion(\"^7.0.2\");\n return createClassFeaturePlugin({\n name: \"proposal-decorators\",\n\n api,\n feature: FEATURES.decorators,\n inherits: syntaxDecorators,\n // loose: options.loose, Not supported\n });\n } else {\n throw new Error(\n \"The '.version' option must be one of 'legacy', '2021-12' or '2022-03'.\",\n );\n }\n});\n"],"mappings":";;;;;;AAEA;AACA;AACA;AAIA;AACA;AAAuD,eAUxC,IAAAA,0BAAO,EAAC,CAACC,GAAG,EAAEC,OAAgB,KAAK;EAChDD,GAAG,CAACE,aAAa,CAAC,CAAC,CAAC;;EAGe;IAEjC,IAAI;MAAEC;IAAO,CAAC,GAAGF,OAAO;EAC1B;EACA,MAAM;IAAEG;EAAQ,CAAC,GAAGH,OAAO;EAE3B,IAGME,MAAM,IAAIC,OAAO,KAAK,QAAQ,EAClC;IACA,OAAO;MACLC,IAAI,EAAE,qBAAqB;MAC3BC,QAAQ,EAAEC,+BAAgB;MAC1BC,OAAO,EAAEC;IACX,CAAC;EACH,CAAC,MAAM,IAAIL,OAAO,KAAK,SAAS,IAAIA,OAAO,KAAK,SAAS,EAAE;IACzD,OAAO,IAAAM,oBAAkB,EAACV,GAAG,EAAEC,OAAO,EAAEG,OAAO,CAAC;EAClD,CAAC,MAAyC;IACxCJ,GAAG,CAACE,aAAa,CAAC,QAAQ,CAAC;IAC3B,OAAO,IAAAS,yDAAwB,EAAC;MAC9BN,IAAI,EAAE,qBAAqB;MAE3BL,GAAG;MACHY,OAAO,EAAEC,yCAAQ,CAACC,UAAU;MAC5BR,QAAQ,EAAEC;IAEZ,CAAC,CAAC;EACJ;AAKF,CAAC,CAAC;AAAA"}
@@ -4,23 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = _default;
7
-
8
7
  var _core = require("@babel/core");
9
-
10
8
  var _pluginSyntaxDecorators = require("@babel/plugin-syntax-decorators");
11
-
12
9
  var _helperReplaceSupers = require("@babel/helper-replace-supers");
13
-
14
10
  var _helperSplitExportDeclaration = require("@babel/helper-split-export-declaration");
15
-
16
11
  function incrementId(id, idx = id.length - 1) {
17
12
  if (idx === -1) {
18
13
  id.unshift(65);
19
14
  return;
20
15
  }
21
-
22
16
  const current = id[idx];
23
-
24
17
  if (current === 90) {
25
18
  id[idx] = 97;
26
19
  } else if (current === 122) {
@@ -38,16 +31,13 @@ function createPrivateUidGeneratorForClass(classPath) {
38
31
  PrivateName(path) {
39
32
  privateNames.add(path.node.id.name);
40
33
  }
41
-
42
34
  });
43
35
  return () => {
44
36
  let reifiedId;
45
-
46
37
  do {
47
38
  incrementId(currentPrivateId);
48
39
  reifiedId = String.fromCharCode(...currentPrivateId);
49
40
  } while (privateNames.has(reifiedId));
50
-
51
41
  return _core.types.privateName(_core.types.identifier(reifiedId));
52
42
  };
53
43
  }
@@ -58,7 +48,6 @@ function createLazyPrivateUidGeneratorForClass(classPath) {
58
48
  if (!generator) {
59
49
  generator = createPrivateUidGeneratorForClass(classPath);
60
50
  }
61
-
62
51
  return generator();
63
52
  };
64
53
  }
@@ -66,9 +55,7 @@ function createLazyPrivateUidGeneratorForClass(classPath) {
66
55
  function replaceClassWithVar(path) {
67
56
  if (path.type === "ClassDeclaration") {
68
57
  const varId = path.scope.generateUidIdentifierBasedOnNode(path.node.id);
69
-
70
58
  const classId = _core.types.identifier(path.node.id.name);
71
-
72
59
  path.scope.rename(classId.name, varId.name);
73
60
  path.insertBefore(_core.types.variableDeclaration("let", [_core.types.variableDeclarator(varId)]));
74
61
  path.get("id").replaceWith(classId);
@@ -76,7 +63,6 @@ function replaceClassWithVar(path) {
76
63
  } else {
77
64
  let className;
78
65
  let varId;
79
-
80
66
  if (path.node.id) {
81
67
  className = path.node.id.name;
82
68
  varId = path.scope.parent.generateDeclaredUidIdentifier(className);
@@ -87,14 +73,11 @@ function replaceClassWithVar(path) {
87
73
  } else {
88
74
  varId = path.scope.parent.generateDeclaredUidIdentifier("decorated_class");
89
75
  }
90
-
91
76
  const newClassExpr = _core.types.classExpression(className && _core.types.identifier(className), path.node.superClass, path.node.body);
92
-
93
77
  const [newPath] = path.replaceWith(_core.types.sequenceExpression([newClassExpr, varId]));
94
78
  return [_core.types.cloneNode(varId), newPath.get("expressions.0")];
95
79
  }
96
80
  }
97
-
98
81
  function generateClassProperty(key, value, isStatic) {
99
82
  if (key.type === "PrivateName") {
100
83
  return _core.types.classPrivateProperty(key, value, undefined, isStatic);
@@ -102,18 +85,13 @@ function generateClassProperty(key, value, isStatic) {
102
85
  return _core.types.classProperty(key, value, undefined, undefined, isStatic);
103
86
  }
104
87
  }
105
-
106
88
  function addProxyAccessorsFor(element, originalKey, targetKey, isComputed = false) {
107
89
  const {
108
90
  static: isStatic
109
91
  } = element.node;
110
-
111
92
  const getterBody = _core.types.blockStatement([_core.types.returnStatement(_core.types.memberExpression(_core.types.thisExpression(), _core.types.cloneNode(targetKey)))]);
112
-
113
93
  const setterBody = _core.types.blockStatement([_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.memberExpression(_core.types.thisExpression(), _core.types.cloneNode(targetKey)), _core.types.identifier("v")))]);
114
-
115
94
  let getter, setter;
116
-
117
95
  if (originalKey.type === "PrivateName") {
118
96
  getter = _core.types.classPrivateMethod("get", _core.types.cloneNode(originalKey), [], getterBody, isStatic);
119
97
  setter = _core.types.classPrivateMethod("set", _core.types.cloneNode(originalKey), [_core.types.identifier("v")], setterBody, isStatic);
@@ -121,31 +99,25 @@ function addProxyAccessorsFor(element, originalKey, targetKey, isComputed = fals
121
99
  getter = _core.types.classMethod("get", _core.types.cloneNode(originalKey), [], getterBody, isComputed, isStatic);
122
100
  setter = _core.types.classMethod("set", _core.types.cloneNode(originalKey), [_core.types.identifier("v")], setterBody, isComputed, isStatic);
123
101
  }
124
-
125
102
  element.insertAfter(setter);
126
103
  element.insertAfter(getter);
127
104
  }
128
-
129
105
  function extractProxyAccessorsFor(targetKey) {
130
106
  return [_core.types.functionExpression(undefined, [], _core.types.blockStatement([_core.types.returnStatement(_core.types.memberExpression(_core.types.thisExpression(), _core.types.cloneNode(targetKey)))])), _core.types.functionExpression(undefined, [_core.types.identifier("value")], _core.types.blockStatement([_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.memberExpression(_core.types.thisExpression(), _core.types.cloneNode(targetKey)), _core.types.identifier("value")))]))];
131
107
  }
132
-
133
108
  const FIELD = 0;
134
109
  const ACCESSOR = 1;
135
110
  const METHOD = 2;
136
111
  const GETTER = 3;
137
112
  const SETTER = 4;
138
113
  const STATIC = 5;
139
-
140
114
  function getElementKind(element) {
141
115
  switch (element.node.type) {
142
116
  case "ClassProperty":
143
117
  case "ClassPrivateProperty":
144
118
  return FIELD;
145
-
146
119
  case "ClassAccessorProperty":
147
120
  return ACCESSOR;
148
-
149
121
  case "ClassMethod":
150
122
  case "ClassPrivateMethod":
151
123
  if (element.node.kind === "get") {
@@ -155,19 +127,16 @@ function getElementKind(element) {
155
127
  } else {
156
128
  return METHOD;
157
129
  }
158
-
159
130
  }
160
131
  }
161
132
 
162
133
  function isDecoratorInfo(info) {
163
134
  return "decorators" in info;
164
135
  }
165
-
166
136
  function filteredOrderedDecoratorInfo(info) {
167
137
  const filtered = info.filter(isDecoratorInfo);
168
138
  return [...filtered.filter(el => el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER), ...filtered.filter(el => !el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER), ...filtered.filter(el => el.isStatic && el.kind === FIELD), ...filtered.filter(el => !el.isStatic && el.kind === FIELD)];
169
139
  }
170
-
171
140
  function generateDecorationExprs(info) {
172
141
  return _core.types.arrayExpression(filteredOrderedDecoratorInfo(info).map(el => {
173
142
  const decs = el.decorators.length > 1 ? _core.types.arrayExpression(el.decorators) : el.decorators[0];
@@ -176,48 +145,38 @@ function generateDecorationExprs(info) {
176
145
  const {
177
146
  privateMethods
178
147
  } = el;
179
-
180
148
  if (Array.isArray(privateMethods)) {
181
149
  decInfo.push(...privateMethods);
182
150
  } else if (privateMethods) {
183
151
  decInfo.push(privateMethods);
184
152
  }
185
-
186
153
  return _core.types.arrayExpression(decInfo);
187
154
  }));
188
155
  }
189
-
190
156
  function extractElementLocalAssignments(decorationInfo) {
191
157
  const localIds = [];
192
-
193
158
  for (const el of filteredOrderedDecoratorInfo(decorationInfo)) {
194
159
  const {
195
160
  locals
196
161
  } = el;
197
-
198
162
  if (Array.isArray(locals)) {
199
163
  localIds.push(...locals);
200
164
  } else if (locals !== undefined) {
201
165
  localIds.push(locals);
202
166
  }
203
167
  }
204
-
205
168
  return localIds;
206
169
  }
207
-
208
170
  function addCallAccessorsFor(element, key, getId, setId) {
209
171
  element.insertAfter(_core.types.classPrivateMethod("get", _core.types.cloneNode(key), [], _core.types.blockStatement([_core.types.returnStatement(_core.types.callExpression(_core.types.cloneNode(getId), [_core.types.thisExpression()]))])));
210
172
  element.insertAfter(_core.types.classPrivateMethod("set", _core.types.cloneNode(key), [_core.types.identifier("v")], _core.types.blockStatement([_core.types.expressionStatement(_core.types.callExpression(_core.types.cloneNode(setId), [_core.types.thisExpression(), _core.types.identifier("v")]))])));
211
173
  }
212
-
213
174
  function isNotTsParameter(node) {
214
175
  return node.type !== "TSParameterProperty";
215
176
  }
216
-
217
177
  function movePrivateAccessor(element, key, methodLocalVar, isStatic) {
218
178
  let params;
219
179
  let block;
220
-
221
180
  if (element.node.kind === "set") {
222
181
  params = [_core.types.identifier("v")];
223
182
  block = [_core.types.expressionStatement(_core.types.callExpression(methodLocalVar, [_core.types.thisExpression(), _core.types.identifier("v")]))];
@@ -225,27 +184,22 @@ function movePrivateAccessor(element, key, methodLocalVar, isStatic) {
225
184
  params = [];
226
185
  block = [_core.types.returnStatement(_core.types.callExpression(methodLocalVar, [_core.types.thisExpression()]))];
227
186
  }
228
-
229
187
  element.replaceWith(_core.types.classPrivateMethod(element.node.kind, _core.types.cloneNode(key), params, _core.types.blockStatement(block), isStatic));
230
188
  }
231
-
232
189
  function isClassDecoratableElementPath(path) {
233
190
  const {
234
191
  type
235
192
  } = path;
236
193
  return type !== "TSDeclareMethod" && type !== "TSIndexSignature" && type !== "StaticBlock";
237
194
  }
238
-
239
195
  function staticBlockToIIFE(block) {
240
196
  return _core.types.callExpression(_core.types.arrowFunctionExpression([], _core.types.blockStatement(block.body)), []);
241
197
  }
242
-
243
198
  function maybeSequenceExpression(exprs) {
244
199
  if (exprs.length === 0) return _core.types.unaryExpression("void", _core.types.numericLiteral(0));
245
200
  if (exprs.length === 1) return exprs[0];
246
201
  return _core.types.sequenceExpression(exprs);
247
202
  }
248
-
249
203
  function transformClass(path, state, constantSuper, version) {
250
204
  const body = path.get("body.body");
251
205
  const classDecorators = path.node.decorators;
@@ -256,7 +210,6 @@ function transformClass(path, state, constantSuper, version) {
256
210
  if (!isClassDecoratableElementPath(element)) {
257
211
  continue;
258
212
  }
259
-
260
213
  if (element.node.decorators && element.node.decorators.length > 0) {
261
214
  hasElementDecorators = true;
262
215
  } else if (element.node.type === "ClassAccessorProperty") {
@@ -276,6 +229,7 @@ function transformClass(path, state, constantSuper, version) {
276
229
 
277
230
  if (!classDecorators && !hasElementDecorators) return;
278
231
  const elementDecoratorInfo = [];
232
+
279
233
  let firstFieldPath;
280
234
  let constructorPath;
281
235
  let requiresProtoInit = false;
@@ -284,20 +238,17 @@ function transformClass(path, state, constantSuper, version) {
284
238
  let protoInitLocal, staticInitLocal, classInitLocal, classLocal;
285
239
  const assignments = [];
286
240
  const scopeParent = path.scope.parent;
287
-
288
241
  const memoiseExpression = (expression, hint) => {
289
242
  const localEvaluatedId = scopeParent.generateDeclaredUidIdentifier(hint);
290
243
  assignments.push(_core.types.assignmentExpression("=", localEvaluatedId, expression));
291
244
  return _core.types.cloneNode(localEvaluatedId);
292
245
  };
293
-
294
246
  if (classDecorators) {
295
247
  classInitLocal = scopeParent.generateDeclaredUidIdentifier("initClass");
296
248
  const [localId, classPath] = replaceClassWithVar(path);
297
249
  path = classPath;
298
250
  classLocal = localId;
299
251
  path.node.decorators = null;
300
-
301
252
  for (const classDecorator of classDecorators) {
302
253
  if (!scopeParent.isStatic(classDecorator.expression)) {
303
254
  classDecorator.expression = memoiseExpression(classDecorator.expression, "dec");
@@ -307,22 +258,18 @@ function transformClass(path, state, constantSuper, version) {
307
258
  if (!path.node.id) {
308
259
  path.node.id = path.scope.generateUidIdentifier("Class");
309
260
  }
310
-
311
261
  classLocal = _core.types.cloneNode(path.node.id);
312
262
  }
313
-
314
263
  if (hasElementDecorators) {
315
264
  for (const element of body) {
316
265
  if (!isClassDecoratableElementPath(element)) {
317
266
  continue;
318
267
  }
319
-
320
268
  const {
321
269
  node
322
270
  } = element;
323
271
  const decorators = element.get("decorators");
324
272
  const hasDecorators = Array.isArray(decorators) && decorators.length > 0;
325
-
326
273
  if (hasDecorators) {
327
274
  for (const decoratorPath of decorators) {
328
275
  if (!scopeParent.isStatic(decoratorPath.node.expression)) {
@@ -330,15 +277,12 @@ function transformClass(path, state, constantSuper, version) {
330
277
  }
331
278
  }
332
279
  }
333
-
334
280
  const isComputed = "computed" in element.node && element.node.computed === true;
335
-
336
281
  if (isComputed) {
337
282
  if (!scopeParent.isStatic(node.key)) {
338
283
  node.key = memoiseExpression(node.key, "computedKey");
339
284
  }
340
285
  }
341
-
342
286
  const kind = getElementKind(element);
343
287
  const {
344
288
  key
@@ -346,41 +290,32 @@ function transformClass(path, state, constantSuper, version) {
346
290
  const isPrivate = key.type === "PrivateName";
347
291
  const isStatic = !!element.node.static;
348
292
  let name = "computedKey";
349
-
350
293
  if (isPrivate) {
351
294
  name = key.id.name;
352
295
  } else if (!isComputed && key.type === "Identifier") {
353
296
  name = key.name;
354
297
  }
355
-
356
298
  if (element.isClassMethod({
357
299
  kind: "constructor"
358
300
  })) {
359
301
  constructorPath = element;
360
302
  }
361
-
362
303
  if (hasDecorators) {
363
304
  let locals;
364
305
  let privateMethods;
365
-
366
306
  if (kind === ACCESSOR) {
367
307
  const {
368
308
  value
369
309
  } = element.node;
370
310
  const params = [_core.types.thisExpression()];
371
-
372
311
  if (value) {
373
312
  params.push(_core.types.cloneNode(value));
374
313
  }
375
-
376
314
  const newId = generateClassPrivateUid();
377
315
  const newFieldInitId = element.scope.parent.generateDeclaredUidIdentifier(`init_${name}`);
378
-
379
316
  const newValue = _core.types.callExpression(_core.types.cloneNode(newFieldInitId), params);
380
-
381
317
  const newField = generateClassProperty(newId, newValue, isStatic);
382
318
  const [newPath] = element.replaceWith(newField);
383
-
384
319
  if (isPrivate) {
385
320
  privateMethods = extractProxyAccessorsFor(newId);
386
321
  const getId = newPath.scope.parent.generateDeclaredUidIdentifier(`get_${name}`);
@@ -396,7 +331,6 @@ function transformClass(path, state, constantSuper, version) {
396
331
  const valuePath = element.get("value");
397
332
  valuePath.replaceWith(_core.types.callExpression(_core.types.cloneNode(initId), [_core.types.thisExpression(), valuePath.node].filter(v => v)));
398
333
  locals = initId;
399
-
400
334
  if (isPrivate) {
401
335
  privateMethods = extractProxyAccessorsFor(key);
402
336
  }
@@ -417,19 +351,17 @@ function transformClass(path, state, constantSuper, version) {
417
351
  async: isAsync
418
352
  } = element.node;
419
353
  privateMethods = _core.types.functionExpression(undefined, params.filter(isNotTsParameter), body, isAsync);
420
-
421
354
  if (kind === GETTER || kind === SETTER) {
422
355
  movePrivateAccessor(element, _core.types.cloneNode(key), _core.types.cloneNode(locals), isStatic);
423
356
  } else {
424
357
  const node = element.node;
358
+
425
359
  path.node.body.body.unshift(_core.types.classPrivateProperty(key, _core.types.cloneNode(locals), [], node.static));
426
360
  decoratedPrivateMethods.add(key.id.name);
427
361
  element.remove();
428
362
  }
429
363
  }
430
-
431
364
  let nameExpr;
432
-
433
365
  if (isComputed) {
434
366
  nameExpr = _core.types.cloneNode(key);
435
367
  } else if (key.type === "PrivateName") {
@@ -439,7 +371,6 @@ function transformClass(path, state, constantSuper, version) {
439
371
  } else {
440
372
  nameExpr = _core.types.cloneNode(key);
441
373
  }
442
-
443
374
  elementDecoratorInfo.push({
444
375
  kind,
445
376
  decorators: decorators.map(d => d.node.expression),
@@ -448,7 +379,6 @@ function transformClass(path, state, constantSuper, version) {
448
379
  privateMethods,
449
380
  locals
450
381
  });
451
-
452
382
  if (kind !== FIELD) {
453
383
  if (isStatic) {
454
384
  requiresStaticInit = true;
@@ -456,38 +386,28 @@ function transformClass(path, state, constantSuper, version) {
456
386
  requiresProtoInit = true;
457
387
  }
458
388
  }
459
-
460
389
  if (element.node) {
461
390
  element.node.decorators = null;
462
391
  }
463
-
464
392
  if (!firstFieldPath && !isStatic && (kind === FIELD || kind === ACCESSOR)) {
465
393
  firstFieldPath = element;
466
394
  }
467
395
  }
468
396
  }
469
397
  }
470
-
471
398
  const elementDecorations = generateDecorationExprs(elementDecoratorInfo);
472
-
473
399
  const classDecorations = _core.types.arrayExpression((classDecorators || []).map(d => d.expression));
474
-
475
400
  const locals = extractElementLocalAssignments(elementDecoratorInfo);
476
-
477
401
  if (requiresProtoInit) {
478
402
  protoInitLocal = scopeParent.generateDeclaredUidIdentifier("initProto");
479
403
  locals.push(protoInitLocal);
480
-
481
404
  const protoInitCall = _core.types.callExpression(_core.types.cloneNode(protoInitLocal), [_core.types.thisExpression()]);
482
-
483
405
  if (firstFieldPath) {
484
406
  const value = firstFieldPath.get("value");
485
407
  const body = [protoInitCall];
486
-
487
408
  if (value.node) {
488
409
  body.push(value.node);
489
410
  }
490
-
491
411
  value.replaceWith(_core.types.sequenceExpression(body));
492
412
  } else if (constructorPath) {
493
413
  if (path.node.superClass) {
@@ -498,7 +418,6 @@ function transformClass(path, state, constantSuper, version) {
498
418
  path.replaceWith(_core.types.callExpression(_core.types.cloneNode(protoInitLocal), [path.node]));
499
419
  path.skip();
500
420
  }
501
-
502
421
  }
503
422
  });
504
423
  } else {
@@ -506,41 +425,37 @@ function transformClass(path, state, constantSuper, version) {
506
425
  }
507
426
  } else {
508
427
  const body = [_core.types.expressionStatement(protoInitCall)];
509
-
510
428
  if (path.node.superClass) {
511
429
  body.unshift(_core.types.expressionStatement(_core.types.callExpression(_core.types.super(), [_core.types.spreadElement(_core.types.identifier("args"))])));
512
430
  }
513
-
514
431
  path.node.body.body.unshift(_core.types.classMethod("constructor", _core.types.identifier("constructor"), [_core.types.restElement(_core.types.identifier("args"))], _core.types.blockStatement(body)));
515
432
  }
516
433
  }
517
-
518
434
  if (requiresStaticInit) {
519
435
  staticInitLocal = scopeParent.generateDeclaredUidIdentifier("initStatic");
520
436
  locals.push(staticInitLocal);
521
437
  }
522
-
523
438
  if (decoratedPrivateMethods.size > 0) {
524
439
  path.traverse({
525
440
  PrivateName(path) {
526
441
  if (!decoratedPrivateMethods.has(path.node.id.name)) return;
527
442
  const parentPath = path.parentPath;
528
443
  const parentParentPath = parentPath.parentPath;
529
-
530
- if (parentParentPath.node.type === "AssignmentExpression" && parentParentPath.node.left === parentPath.node || parentParentPath.node.type === "UpdateExpression" || parentParentPath.node.type === "RestElement" || parentParentPath.node.type === "ArrayPattern" || parentParentPath.node.type === "ObjectProperty" && parentParentPath.node.value === parentPath.node && parentParentPath.parentPath.type === "ObjectPattern" || parentParentPath.node.type === "ForOfStatement" && parentParentPath.node.left === parentPath.node) {
444
+ if (
445
+ parentParentPath.node.type === "AssignmentExpression" && parentParentPath.node.left === parentPath.node ||
446
+ parentParentPath.node.type === "UpdateExpression" ||
447
+ parentParentPath.node.type === "RestElement" ||
448
+ parentParentPath.node.type === "ArrayPattern" ||
449
+ parentParentPath.node.type === "ObjectProperty" && parentParentPath.node.value === parentPath.node && parentParentPath.parentPath.type === "ObjectPattern" ||
450
+ parentParentPath.node.type === "ForOfStatement" && parentParentPath.node.left === parentPath.node) {
531
451
  throw path.buildCodeFrameError(`Decorated private methods are not updatable, but "#${path.node.id.name}" is updated via this expression.`);
532
452
  }
533
453
  }
534
-
535
454
  });
536
455
  }
537
-
538
456
  let classInitInjected = false;
539
-
540
457
  const classInitCall = classInitLocal && _core.types.callExpression(_core.types.cloneNode(classInitLocal), []);
541
-
542
458
  const originalClass = path.node;
543
-
544
459
  if (classDecorators) {
545
460
  locals.push(classLocal, classInitLocal);
546
461
  const statics = [];
@@ -551,9 +466,7 @@ function transformClass(path, state, constantSuper, version) {
551
466
  element.remove();
552
467
  return;
553
468
  }
554
-
555
469
  const isProperty = element.isClassProperty() || element.isClassPrivateProperty();
556
-
557
470
  if ((isProperty || element.isClassPrivateMethod()) && element.node.static) {
558
471
  if (isProperty && staticBlocks.length > 0) {
559
472
  const allValues = staticBlocks.map(staticBlockToIIFE);
@@ -561,52 +474,45 @@ function transformClass(path, state, constantSuper, version) {
561
474
  element.node.value = maybeSequenceExpression(allValues);
562
475
  staticBlocks = [];
563
476
  }
564
-
565
477
  element.node.static = false;
566
478
  statics.push(element.node);
567
479
  element.remove();
568
480
  }
569
481
  });
570
-
571
482
  if (statics.length > 0 || staticBlocks.length > 0) {
572
483
  const staticsClass = _core.template.expression.ast`
573
484
  class extends ${state.addHelper("identity")} {}
574
485
  `;
575
- staticsClass.body.body = [_core.types.staticBlock([_core.types.toStatement(path.node, false)]), ...statics];
486
+ staticsClass.body.body = [_core.types.staticBlock([_core.types.toStatement(originalClass, true) ||
487
+ _core.types.expressionStatement(originalClass)]), ...statics];
576
488
  const constructorBody = [];
577
-
578
489
  const newExpr = _core.types.newExpression(staticsClass, []);
579
-
580
490
  if (staticBlocks.length > 0) {
581
491
  constructorBody.push(...staticBlocks.map(staticBlockToIIFE));
582
492
  }
583
-
584
493
  if (classInitCall) {
585
494
  classInitInjected = true;
586
495
  constructorBody.push(classInitCall);
587
496
  }
588
-
589
497
  if (constructorBody.length > 0) {
590
498
  constructorBody.unshift(_core.types.callExpression(_core.types.super(), [_core.types.cloneNode(classLocal)]));
591
499
  staticsClass.body.body.push(_core.types.classMethod("constructor", _core.types.identifier("constructor"), [], _core.types.blockStatement([_core.types.expressionStatement(_core.types.sequenceExpression(constructorBody))])));
592
500
  } else {
593
501
  newExpr.arguments.push(_core.types.cloneNode(classLocal));
594
502
  }
595
-
596
503
  path.replaceWith(newExpr);
597
504
  }
598
505
  }
599
-
600
506
  if (!classInitInjected && classInitCall) {
601
507
  path.node.body.body.push(_core.types.staticBlock([_core.types.expressionStatement(classInitCall)]));
602
508
  }
603
-
604
509
  originalClass.body.body.unshift(_core.types.staticBlock([_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.arrayPattern(locals), _core.types.callExpression(state.addHelper(version === "2021-12" ? "applyDecs" : "applyDecs2203"), [_core.types.thisExpression(), elementDecorations, classDecorations]))), requiresStaticInit && _core.types.expressionStatement(_core.types.callExpression(_core.types.cloneNode(staticInitLocal), [_core.types.thisExpression()]))].filter(Boolean)));
510
+
605
511
  path.insertBefore(assignments.map(expr => _core.types.expressionStatement(expr)));
512
+
606
513
  path.scope.crawl();
607
514
  return path;
608
515
  }
609
-
610
516
  function _default({
611
517
  assertVersion,
612
518
  assumption
@@ -614,7 +520,6 @@ function _default({
614
520
  loose
615
521
  }, version) {
616
522
  var _assumption;
617
-
618
523
  assertVersion(version === "2021-12" ? "^7.16.0" : "^7.19.0");
619
524
  const VISITED = new WeakSet();
620
525
  const constantSuper = (_assumption = assumption("constantSuper")) != null ? _assumption : loose;
@@ -624,22 +529,19 @@ function _default({
624
529
  visitor: {
625
530
  "ExportNamedDeclaration|ExportDefaultDeclaration"(path) {
626
531
  var _declaration$decorato;
627
-
628
532
  const {
629
533
  declaration
630
534
  } = path.node;
631
-
632
- if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0) {
535
+ if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" &&
536
+ ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0) {
633
537
  (0, _helperSplitExportDeclaration.default)(path);
634
538
  }
635
539
  },
636
-
637
540
  Class(path, state) {
638
541
  if (VISITED.has(path)) return;
639
542
  const newPath = transformClass(path, state, constantSuper, version);
640
543
  if (newPath) VISITED.add(newPath);
641
544
  }
642
-
643
545
  }
644
546
  };
645
547
  }
@@ -1 +1 @@
1
- {"version":3,"names":["incrementId","id","idx","length","unshift","current","createPrivateUidGeneratorForClass","classPath","currentPrivateId","privateNames","Set","traverse","PrivateName","path","add","node","name","reifiedId","String","fromCharCode","has","t","privateName","identifier","createLazyPrivateUidGeneratorForClass","generator","replaceClassWithVar","type","varId","scope","generateUidIdentifierBasedOnNode","classId","rename","insertBefore","variableDeclaration","variableDeclarator","get","replaceWith","cloneNode","className","parent","generateDeclaredUidIdentifier","parentPath","newClassExpr","classExpression","superClass","body","newPath","sequenceExpression","generateClassProperty","key","value","isStatic","classPrivateProperty","undefined","classProperty","addProxyAccessorsFor","element","originalKey","targetKey","isComputed","static","getterBody","blockStatement","returnStatement","memberExpression","thisExpression","setterBody","expressionStatement","assignmentExpression","getter","setter","classPrivateMethod","classMethod","insertAfter","extractProxyAccessorsFor","functionExpression","FIELD","ACCESSOR","METHOD","GETTER","SETTER","STATIC","getElementKind","kind","isDecoratorInfo","info","filteredOrderedDecoratorInfo","filtered","filter","el","generateDecorationExprs","arrayExpression","map","decs","decorators","decInfo","numericLiteral","privateMethods","Array","isArray","push","extractElementLocalAssignments","decorationInfo","localIds","locals","addCallAccessorsFor","getId","setId","callExpression","isNotTsParameter","movePrivateAccessor","methodLocalVar","params","block","isClassDecoratableElementPath","staticBlockToIIFE","arrowFunctionExpression","maybeSequenceExpression","exprs","unaryExpression","transformClass","state","constantSuper","version","classDecorators","hasElementDecorators","generateClassPrivateUid","computed","newId","valueNode","newField","elementDecoratorInfo","firstFieldPath","constructorPath","requiresProtoInit","requiresStaticInit","decoratedPrivateMethods","protoInitLocal","staticInitLocal","classInitLocal","classLocal","assignments","scopeParent","memoiseExpression","expression","hint","localEvaluatedId","localId","classDecorator","generateUidIdentifier","hasDecorators","decoratorPath","isPrivate","isClassMethod","newFieldInitId","newValue","initId","valuePath","v","replaceSupers","ReplaceSupers","methodPath","objectRef","superRef","file","refToPreserve","replace","async","isAsync","remove","nameExpr","stringLiteral","d","elementDecorations","classDecorations","protoInitCall","CallExpression","exit","isSuper","skip","super","spreadElement","restElement","size","parentParentPath","left","buildCodeFrameError","classInitInjected","classInitCall","originalClass","statics","staticBlocks","forEach","isStaticBlock","isProperty","isClassProperty","isClassPrivateProperty","isClassPrivateMethod","allValues","staticsClass","template","ast","addHelper","staticBlock","toStatement","constructorBody","newExpr","newExpression","arguments","arrayPattern","Boolean","expr","crawl","assertVersion","assumption","loose","VISITED","WeakSet","inherits","syntaxDecorators","visitor","declaration","splitExportDeclaration","Class"],"sources":["../src/transformer-2022-03.ts"],"sourcesContent":["import type { NodePath, Scope } from \"@babel/traverse\";\nimport { types as t, template } from \"@babel/core\";\nimport syntaxDecorators from \"@babel/plugin-syntax-decorators\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport splitExportDeclaration from \"@babel/helper-split-export-declaration\";\nimport * as charCodes from \"charcodes\";\nimport type { PluginAPI, PluginObject, PluginPass } from \"@babel/core\";\nimport type { Options } from \"./index\";\n\ntype ClassDecoratableElement =\n | t.ClassMethod\n | t.ClassPrivateMethod\n | t.ClassProperty\n | t.ClassPrivateProperty\n | t.ClassAccessorProperty;\n\ntype ClassElement =\n | ClassDecoratableElement\n | t.TSDeclareMethod\n | t.TSIndexSignature\n | t.StaticBlock;\n\nfunction incrementId(id: number[], idx = id.length - 1): void {\n // If index is -1, id needs an additional character, unshift A\n if (idx === -1) {\n id.unshift(charCodes.uppercaseA);\n return;\n }\n\n const current = id[idx];\n\n if (current === charCodes.uppercaseZ) {\n // if current is Z, skip to a\n id[idx] = charCodes.lowercaseA;\n } else if (current === charCodes.lowercaseZ) {\n // if current is z, reset to A and carry the 1\n id[idx] = charCodes.uppercaseA;\n incrementId(id, idx - 1);\n } else {\n // else, increment by one\n id[idx] = current + 1;\n }\n}\n\n/**\n * Generates a new private name that is unique to the given class. This can be\n * used to create extra class fields and methods for the implementation, while\n * keeping the length of those names as small as possible. This is important for\n * minification purposes (though private names can generally be minified,\n * transpilations and polyfills cannot yet).\n */\nfunction createPrivateUidGeneratorForClass(\n classPath: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): () => t.PrivateName {\n const currentPrivateId: number[] = [];\n const privateNames = new Set<string>();\n\n classPath.traverse({\n PrivateName(path) {\n privateNames.add(path.node.id.name);\n },\n });\n\n return (): t.PrivateName => {\n let reifiedId;\n do {\n incrementId(currentPrivateId);\n reifiedId = String.fromCharCode(...currentPrivateId);\n } while (privateNames.has(reifiedId));\n\n return t.privateName(t.identifier(reifiedId));\n };\n}\n\n/**\n * Wraps the above generator function so that it's run lazily the first time\n * it's actually required. Several types of decoration do not require this, so it\n * saves iterating the class elements an additional time and allocating the space\n * for the Sets of element names.\n */\nfunction createLazyPrivateUidGeneratorForClass(\n classPath: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): () => t.PrivateName {\n let generator: () => t.PrivateName;\n\n return (): t.PrivateName => {\n if (!generator) {\n generator = createPrivateUidGeneratorForClass(classPath);\n }\n\n return generator();\n };\n}\n\n/**\n * Takes a class definition and replaces it with an equivalent class declaration\n * which is then assigned to a local variable. This allows us to reassign the\n * local variable with the decorated version of the class. The class definition\n * retains its original name so that `toString` is not affected, other\n * references to the class are renamed instead.\n */\nfunction replaceClassWithVar(\n path: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): [t.Identifier, NodePath<t.ClassDeclaration | t.ClassExpression>] {\n if (path.type === \"ClassDeclaration\") {\n const varId = path.scope.generateUidIdentifierBasedOnNode(path.node.id);\n const classId = t.identifier(path.node.id.name);\n\n path.scope.rename(classId.name, varId.name);\n\n path.insertBefore(\n t.variableDeclaration(\"let\", [t.variableDeclarator(varId)]),\n );\n path.get(\"id\").replaceWith(classId);\n\n return [t.cloneNode(varId), path];\n } else {\n let className: string;\n let varId: t.Identifier;\n\n if (path.node.id) {\n className = path.node.id.name;\n varId = path.scope.parent.generateDeclaredUidIdentifier(className);\n path.scope.rename(className, varId.name);\n } else if (\n path.parentPath.node.type === \"VariableDeclarator\" &&\n path.parentPath.node.id.type === \"Identifier\"\n ) {\n className = path.parentPath.node.id.name;\n varId = path.scope.parent.generateDeclaredUidIdentifier(className);\n } else {\n varId =\n path.scope.parent.generateDeclaredUidIdentifier(\"decorated_class\");\n }\n\n const newClassExpr = t.classExpression(\n className && t.identifier(className),\n path.node.superClass,\n path.node.body,\n );\n\n const [newPath] = path.replaceWith(\n t.sequenceExpression([newClassExpr, varId]),\n );\n\n return [\n t.cloneNode(varId),\n newPath.get(\"expressions.0\") as NodePath<t.ClassExpression>,\n ];\n }\n}\n\nfunction generateClassProperty(\n key: t.PrivateName | t.Identifier,\n value: t.Expression | undefined,\n isStatic: boolean,\n): t.ClassPrivateProperty | t.ClassProperty {\n if (key.type === \"PrivateName\") {\n return t.classPrivateProperty(key, value, undefined, isStatic);\n } else {\n return t.classProperty(key, value, undefined, undefined, isStatic);\n }\n}\n\nfunction addProxyAccessorsFor(\n element: NodePath<ClassDecoratableElement>,\n originalKey: t.PrivateName | t.Expression,\n targetKey: t.PrivateName,\n isComputed = false,\n): void {\n const { static: isStatic } = element.node;\n\n const getterBody = t.blockStatement([\n t.returnStatement(\n t.memberExpression(t.thisExpression(), t.cloneNode(targetKey)),\n ),\n ]);\n\n const setterBody = t.blockStatement([\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.memberExpression(t.thisExpression(), t.cloneNode(targetKey)),\n t.identifier(\"v\"),\n ),\n ),\n ]);\n\n let getter: t.ClassMethod | t.ClassPrivateMethod,\n setter: t.ClassMethod | t.ClassPrivateMethod;\n\n if (originalKey.type === \"PrivateName\") {\n getter = t.classPrivateMethod(\n \"get\",\n t.cloneNode(originalKey),\n [],\n getterBody,\n isStatic,\n );\n setter = t.classPrivateMethod(\n \"set\",\n t.cloneNode(originalKey),\n [t.identifier(\"v\")],\n setterBody,\n isStatic,\n );\n } else {\n getter = t.classMethod(\n \"get\",\n t.cloneNode(originalKey),\n [],\n getterBody,\n isComputed,\n isStatic,\n );\n setter = t.classMethod(\n \"set\",\n t.cloneNode(originalKey),\n [t.identifier(\"v\")],\n setterBody,\n isComputed,\n isStatic,\n );\n }\n\n element.insertAfter(setter);\n element.insertAfter(getter);\n}\n\nfunction extractProxyAccessorsFor(\n targetKey: t.PrivateName,\n): t.FunctionExpression[] {\n return [\n t.functionExpression(\n undefined,\n [],\n t.blockStatement([\n t.returnStatement(\n t.memberExpression(t.thisExpression(), t.cloneNode(targetKey)),\n ),\n ]),\n ),\n t.functionExpression(\n undefined,\n [t.identifier(\"value\")],\n t.blockStatement([\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.memberExpression(t.thisExpression(), t.cloneNode(targetKey)),\n t.identifier(\"value\"),\n ),\n ),\n ]),\n ),\n ];\n}\n\nconst FIELD = 0;\nconst ACCESSOR = 1;\nconst METHOD = 2;\nconst GETTER = 3;\nconst SETTER = 4;\n\nconst STATIC = 5;\n\nfunction getElementKind(element: NodePath<ClassDecoratableElement>): number {\n switch (element.node.type) {\n case \"ClassProperty\":\n case \"ClassPrivateProperty\":\n return FIELD;\n case \"ClassAccessorProperty\":\n return ACCESSOR;\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n if (element.node.kind === \"get\") {\n return GETTER;\n } else if (element.node.kind === \"set\") {\n return SETTER;\n } else {\n return METHOD;\n }\n }\n}\n\n// Information about the decorators applied to an element\ninterface DecoratorInfo {\n // The expressions of the decorators themselves\n decorators: t.Expression[];\n\n // The kind of the decorated value, matches the kind value passed to applyDecs\n kind: number;\n\n // whether or not the field is static\n isStatic: boolean;\n\n // The name of the decorator\n name: t.StringLiteral | t.Expression;\n\n privateMethods: t.FunctionExpression | t.FunctionExpression[] | undefined;\n\n // The names of local variables that will be used/returned from the decoration\n locals: t.Identifier | t.Identifier[] | undefined;\n}\n\n// Information about a computed property key. These must be evaluated\n// interspersed with decorator expressions, which is why they get added to the\n// array of DecoratorInfos later on.\ninterface ComputedPropInfo {\n localComputedNameId: t.Identifier;\n keyNode: t.Expression;\n}\n\nfunction isDecoratorInfo(\n info: DecoratorInfo | ComputedPropInfo,\n): info is DecoratorInfo {\n return \"decorators\" in info;\n}\n\nfunction filteredOrderedDecoratorInfo(\n info: (DecoratorInfo | ComputedPropInfo)[],\n): DecoratorInfo[] {\n const filtered = info.filter(isDecoratorInfo);\n\n return [\n ...filtered.filter(\n el => el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER,\n ),\n ...filtered.filter(\n el => !el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER,\n ),\n ...filtered.filter(el => el.isStatic && el.kind === FIELD),\n ...filtered.filter(el => !el.isStatic && el.kind === FIELD),\n ];\n}\n\nfunction generateDecorationExprs(\n info: (DecoratorInfo | ComputedPropInfo)[],\n): t.ArrayExpression {\n return t.arrayExpression(\n filteredOrderedDecoratorInfo(info).map(el => {\n const decs =\n el.decorators.length > 1\n ? t.arrayExpression(el.decorators)\n : el.decorators[0];\n\n const kind = el.isStatic ? el.kind + STATIC : el.kind;\n\n const decInfo = [decs, t.numericLiteral(kind), el.name];\n\n const { privateMethods } = el;\n\n if (Array.isArray(privateMethods)) {\n decInfo.push(...privateMethods);\n } else if (privateMethods) {\n decInfo.push(privateMethods);\n }\n\n return t.arrayExpression(decInfo);\n }),\n );\n}\n\nfunction extractElementLocalAssignments(\n decorationInfo: (DecoratorInfo | ComputedPropInfo)[],\n) {\n const localIds: t.Identifier[] = [];\n\n for (const el of filteredOrderedDecoratorInfo(decorationInfo)) {\n const { locals } = el;\n\n if (Array.isArray(locals)) {\n localIds.push(...locals);\n } else if (locals !== undefined) {\n localIds.push(locals);\n }\n }\n\n return localIds;\n}\n\nfunction addCallAccessorsFor(\n element: NodePath,\n key: t.PrivateName,\n getId: t.Identifier,\n setId: t.Identifier,\n) {\n element.insertAfter(\n t.classPrivateMethod(\n \"get\",\n t.cloneNode(key),\n [],\n t.blockStatement([\n t.returnStatement(\n t.callExpression(t.cloneNode(getId), [t.thisExpression()]),\n ),\n ]),\n ),\n );\n\n element.insertAfter(\n t.classPrivateMethod(\n \"set\",\n t.cloneNode(key),\n [t.identifier(\"v\")],\n t.blockStatement([\n t.expressionStatement(\n t.callExpression(t.cloneNode(setId), [\n t.thisExpression(),\n t.identifier(\"v\"),\n ]),\n ),\n ]),\n ),\n );\n}\n\nfunction isNotTsParameter(\n node: t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty,\n): node is t.Identifier | t.Pattern | t.RestElement {\n return node.type !== \"TSParameterProperty\";\n}\n\nfunction movePrivateAccessor(\n element: NodePath<t.ClassPrivateMethod>,\n key: t.PrivateName,\n methodLocalVar: t.Identifier,\n isStatic: boolean,\n) {\n let params: (t.Identifier | t.RestElement)[];\n let block: t.Statement[];\n\n if (element.node.kind === \"set\") {\n params = [t.identifier(\"v\")];\n block = [\n t.expressionStatement(\n t.callExpression(methodLocalVar, [\n t.thisExpression(),\n t.identifier(\"v\"),\n ]),\n ),\n ];\n } else {\n params = [];\n block = [\n t.returnStatement(t.callExpression(methodLocalVar, [t.thisExpression()])),\n ];\n }\n\n element.replaceWith(\n t.classPrivateMethod(\n element.node.kind,\n t.cloneNode(key),\n params,\n t.blockStatement(block),\n isStatic,\n ),\n );\n}\n\nfunction isClassDecoratableElementPath(\n path: NodePath<ClassElement>,\n): path is NodePath<ClassDecoratableElement> {\n const { type } = path;\n\n return (\n type !== \"TSDeclareMethod\" &&\n type !== \"TSIndexSignature\" &&\n type !== \"StaticBlock\"\n );\n}\n\nfunction staticBlockToIIFE(block: t.StaticBlock) {\n return t.callExpression(\n t.arrowFunctionExpression([], t.blockStatement(block.body)),\n [],\n );\n}\n\nfunction maybeSequenceExpression(exprs: t.Expression[]) {\n if (exprs.length === 0) return t.unaryExpression(\"void\", t.numericLiteral(0));\n if (exprs.length === 1) return exprs[0];\n return t.sequenceExpression(exprs);\n}\n\nfunction transformClass(\n path: NodePath<t.ClassExpression | t.ClassDeclaration>,\n state: PluginPass,\n constantSuper: boolean,\n version: \"2022-03\" | \"2021-12\",\n): NodePath {\n const body = path.get(\"body.body\");\n\n const classDecorators = path.node.decorators;\n let hasElementDecorators = false;\n\n const generateClassPrivateUid = createLazyPrivateUidGeneratorForClass(path);\n\n // Iterate over the class to see if we need to decorate it, and also to\n // transform simple auto accessors which are not decorated\n for (const element of body) {\n if (!isClassDecoratableElementPath(element)) {\n continue;\n }\n\n if (element.node.decorators && element.node.decorators.length > 0) {\n hasElementDecorators = true;\n } else if (element.node.type === \"ClassAccessorProperty\") {\n const { key, value, static: isStatic, computed } = element.node;\n\n const newId = generateClassPrivateUid();\n\n const valueNode = value ? t.cloneNode(value) : undefined;\n\n const newField = generateClassProperty(newId, valueNode, isStatic);\n\n const [newPath] = element.replaceWith(newField);\n addProxyAccessorsFor(newPath, key, newId, computed);\n }\n }\n\n // If nothing is decorated, return\n if (!classDecorators && !hasElementDecorators) return;\n\n const elementDecoratorInfo: (DecoratorInfo | ComputedPropInfo)[] = [];\n\n // The initializer of the first non-static field will be injected with the protoInit call\n let firstFieldPath:\n | NodePath<t.ClassProperty | t.ClassPrivateProperty>\n | undefined;\n let constructorPath: NodePath<t.ClassMethod> | undefined;\n let requiresProtoInit = false;\n let requiresStaticInit = false;\n const decoratedPrivateMethods = new Set<string>();\n\n let protoInitLocal: t.Identifier,\n staticInitLocal: t.Identifier,\n classInitLocal: t.Identifier,\n classLocal: t.Identifier;\n const assignments: t.AssignmentExpression[] = [];\n const scopeParent: Scope = path.scope.parent;\n\n const memoiseExpression = (expression: t.Expression, hint: string) => {\n const localEvaluatedId = scopeParent.generateDeclaredUidIdentifier(hint);\n assignments.push(t.assignmentExpression(\"=\", localEvaluatedId, expression));\n return t.cloneNode(localEvaluatedId);\n };\n\n if (classDecorators) {\n classInitLocal = scopeParent.generateDeclaredUidIdentifier(\"initClass\");\n\n const [localId, classPath] = replaceClassWithVar(path);\n path = classPath;\n classLocal = localId;\n\n path.node.decorators = null;\n\n for (const classDecorator of classDecorators) {\n if (!scopeParent.isStatic(classDecorator.expression)) {\n classDecorator.expression = memoiseExpression(\n classDecorator.expression,\n \"dec\",\n );\n }\n }\n } else {\n if (!path.node.id) {\n path.node.id = path.scope.generateUidIdentifier(\"Class\");\n }\n classLocal = t.cloneNode(path.node.id);\n }\n\n if (hasElementDecorators) {\n for (const element of body) {\n if (!isClassDecoratableElementPath(element)) {\n continue;\n }\n\n const { node } = element;\n const decorators = element.get(\"decorators\");\n\n const hasDecorators = Array.isArray(decorators) && decorators.length > 0;\n\n if (hasDecorators) {\n for (const decoratorPath of decorators) {\n if (!scopeParent.isStatic(decoratorPath.node.expression)) {\n decoratorPath.node.expression = memoiseExpression(\n decoratorPath.node.expression,\n \"dec\",\n );\n }\n }\n }\n\n const isComputed =\n \"computed\" in element.node && element.node.computed === true;\n if (isComputed) {\n if (!scopeParent.isStatic(node.key)) {\n node.key = memoiseExpression(node.key as t.Expression, \"computedKey\");\n }\n }\n\n const kind = getElementKind(element);\n const { key } = node;\n\n const isPrivate = key.type === \"PrivateName\";\n\n const isStatic = !!element.node.static;\n\n let name = \"computedKey\";\n\n if (isPrivate) {\n name = (key as t.PrivateName).id.name;\n } else if (!isComputed && key.type === \"Identifier\") {\n name = key.name;\n }\n\n if (element.isClassMethod({ kind: \"constructor\" })) {\n constructorPath = element;\n }\n\n if (hasDecorators) {\n let locals: t.Identifier | t.Identifier[];\n let privateMethods: t.FunctionExpression | t.FunctionExpression[];\n\n if (kind === ACCESSOR) {\n const { value } = element.node as t.ClassAccessorProperty;\n\n const params: t.Expression[] = [t.thisExpression()];\n\n if (value) {\n params.push(t.cloneNode(value));\n }\n\n const newId = generateClassPrivateUid();\n const newFieldInitId =\n element.scope.parent.generateDeclaredUidIdentifier(`init_${name}`);\n const newValue = t.callExpression(\n t.cloneNode(newFieldInitId),\n params,\n );\n\n const newField = generateClassProperty(newId, newValue, isStatic);\n const [newPath] = element.replaceWith(newField);\n\n if (isPrivate) {\n privateMethods = extractProxyAccessorsFor(newId);\n\n const getId = newPath.scope.parent.generateDeclaredUidIdentifier(\n `get_${name}`,\n );\n const setId = newPath.scope.parent.generateDeclaredUidIdentifier(\n `set_${name}`,\n );\n\n addCallAccessorsFor(newPath, key as t.PrivateName, getId, setId);\n\n locals = [newFieldInitId, getId, setId];\n } else {\n addProxyAccessorsFor(newPath, key, newId, isComputed);\n locals = newFieldInitId;\n }\n } else if (kind === FIELD) {\n const initId = element.scope.parent.generateDeclaredUidIdentifier(\n `init_${name}`,\n );\n const valuePath = (\n element as NodePath<t.ClassProperty | t.ClassPrivateProperty>\n ).get(\"value\");\n\n valuePath.replaceWith(\n t.callExpression(\n t.cloneNode(initId),\n [t.thisExpression(), valuePath.node].filter(v => v),\n ),\n );\n\n locals = initId;\n\n if (isPrivate) {\n privateMethods = extractProxyAccessorsFor(key as t.PrivateName);\n }\n } else if (isPrivate) {\n locals = element.scope.parent.generateDeclaredUidIdentifier(\n `call_${name}`,\n ) as t.Identifier;\n\n const replaceSupers = new ReplaceSupers({\n constantSuper,\n methodPath: element as NodePath<t.ClassPrivateMethod>,\n objectRef: classLocal,\n superRef: path.node.superClass,\n file: state.file,\n refToPreserve: classLocal,\n });\n\n replaceSupers.replace();\n\n const {\n params,\n body,\n async: isAsync,\n } = element.node as t.ClassPrivateMethod;\n\n privateMethods = t.functionExpression(\n undefined,\n params.filter(isNotTsParameter),\n body,\n isAsync,\n );\n\n if (kind === GETTER || kind === SETTER) {\n movePrivateAccessor(\n element as NodePath<t.ClassPrivateMethod>,\n t.cloneNode(key as t.PrivateName),\n t.cloneNode(locals),\n isStatic,\n );\n } else {\n const node = element.node as t.ClassPrivateMethod;\n\n // Unshift\n path.node.body.body.unshift(\n t.classPrivateProperty(\n key as t.PrivateName,\n t.cloneNode(locals),\n [],\n node.static,\n ),\n );\n\n decoratedPrivateMethods.add((key as t.PrivateName).id.name);\n\n element.remove();\n }\n }\n\n let nameExpr: t.Expression;\n\n if (isComputed) {\n nameExpr = t.cloneNode(key as t.Expression);\n } else if (key.type === \"PrivateName\") {\n nameExpr = t.stringLiteral(key.id.name);\n } else if (key.type === \"Identifier\") {\n nameExpr = t.stringLiteral(key.name);\n } else {\n nameExpr = t.cloneNode(key as t.Expression);\n }\n\n elementDecoratorInfo.push({\n kind,\n decorators: decorators.map(d => d.node.expression),\n name: nameExpr,\n isStatic,\n privateMethods,\n locals,\n });\n\n if (kind !== FIELD) {\n if (isStatic) {\n requiresStaticInit = true;\n } else {\n requiresProtoInit = true;\n }\n }\n\n if (element.node) {\n element.node.decorators = null;\n }\n\n if (\n !firstFieldPath &&\n !isStatic &&\n (kind === FIELD || kind === ACCESSOR)\n ) {\n firstFieldPath = element as NodePath<\n t.ClassProperty | t.ClassPrivateProperty\n >;\n }\n }\n }\n }\n\n const elementDecorations = generateDecorationExprs(elementDecoratorInfo);\n const classDecorations = t.arrayExpression(\n (classDecorators || []).map(d => d.expression),\n );\n\n const locals: t.Identifier[] =\n extractElementLocalAssignments(elementDecoratorInfo);\n\n if (requiresProtoInit) {\n protoInitLocal = scopeParent.generateDeclaredUidIdentifier(\"initProto\");\n locals.push(protoInitLocal);\n\n const protoInitCall = t.callExpression(t.cloneNode(protoInitLocal), [\n t.thisExpression(),\n ]);\n\n if (firstFieldPath) {\n const value = firstFieldPath.get(\"value\");\n const body: t.Expression[] = [protoInitCall];\n\n if (value.node) {\n body.push(value.node);\n }\n\n value.replaceWith(t.sequenceExpression(body));\n } else if (constructorPath) {\n if (path.node.superClass) {\n path.traverse({\n CallExpression: {\n exit(path) {\n if (!path.get(\"callee\").isSuper()) return;\n\n path.replaceWith(\n t.callExpression(t.cloneNode(protoInitLocal), [path.node]),\n );\n\n path.skip();\n },\n },\n });\n } else {\n constructorPath.node.body.body.unshift(\n t.expressionStatement(protoInitCall),\n );\n }\n } else {\n const body: t.Statement[] = [t.expressionStatement(protoInitCall)];\n\n if (path.node.superClass) {\n body.unshift(\n t.expressionStatement(\n t.callExpression(t.super(), [\n t.spreadElement(t.identifier(\"args\")),\n ]),\n ),\n );\n }\n\n path.node.body.body.unshift(\n t.classMethod(\n \"constructor\",\n t.identifier(\"constructor\"),\n [t.restElement(t.identifier(\"args\"))],\n t.blockStatement(body),\n ),\n );\n }\n }\n\n if (requiresStaticInit) {\n staticInitLocal = scopeParent.generateDeclaredUidIdentifier(\"initStatic\");\n locals.push(staticInitLocal);\n }\n\n if (decoratedPrivateMethods.size > 0) {\n path.traverse({\n PrivateName(path) {\n if (!decoratedPrivateMethods.has(path.node.id.name)) return;\n\n const parentPath = path.parentPath;\n const parentParentPath = parentPath.parentPath;\n\n if (\n // this.bar().#x = 123;\n (parentParentPath.node.type === \"AssignmentExpression\" &&\n parentParentPath.node.left === parentPath.node) ||\n // this.#x++;\n parentParentPath.node.type === \"UpdateExpression\" ||\n // ([...this.#x] = foo);\n parentParentPath.node.type === \"RestElement\" ||\n // ([this.#x] = foo);\n parentParentPath.node.type === \"ArrayPattern\" ||\n // ({ a: this.#x } = bar);\n (parentParentPath.node.type === \"ObjectProperty\" &&\n parentParentPath.node.value === parentPath.node &&\n parentParentPath.parentPath.type === \"ObjectPattern\") ||\n // for (this.#x of []);\n (parentParentPath.node.type === \"ForOfStatement\" &&\n parentParentPath.node.left === parentPath.node)\n ) {\n throw path.buildCodeFrameError(\n `Decorated private methods are not updatable, but \"#${path.node.id.name}\" is updated via this expression.`,\n );\n }\n },\n });\n }\n\n let classInitInjected = false;\n const classInitCall =\n classInitLocal && t.callExpression(t.cloneNode(classInitLocal), []);\n\n const originalClass = path.node;\n\n if (classDecorators) {\n locals.push(classLocal, classInitLocal);\n const statics: (\n | t.ClassProperty\n | t.ClassPrivateProperty\n | t.ClassPrivateMethod\n )[] = [];\n let staticBlocks: t.StaticBlock[] = [];\n path.get(\"body.body\").forEach(element => {\n // Static blocks cannot be compiled to \"instance blocks\", but we can inline\n // them as IIFEs in the next property.\n if (element.isStaticBlock()) {\n staticBlocks.push(element.node);\n element.remove();\n return;\n }\n\n const isProperty =\n element.isClassProperty() || element.isClassPrivateProperty();\n\n if (\n (isProperty || element.isClassPrivateMethod()) &&\n element.node.static\n ) {\n if (isProperty && staticBlocks.length > 0) {\n const allValues: t.Expression[] = staticBlocks.map(staticBlockToIIFE);\n if (element.node.value) allValues.push(element.node.value);\n element.node.value = maybeSequenceExpression(allValues);\n staticBlocks = [];\n }\n\n element.node.static = false;\n statics.push(element.node);\n element.remove();\n }\n });\n\n if (statics.length > 0 || staticBlocks.length > 0) {\n const staticsClass = template.expression.ast`\n class extends ${state.addHelper(\"identity\")} {}\n ` as t.ClassExpression;\n staticsClass.body.body = [\n t.staticBlock([t.toStatement(path.node, false)]),\n ...statics,\n ];\n\n const constructorBody: t.Expression[] = [];\n\n const newExpr = t.newExpression(staticsClass, []);\n\n if (staticBlocks.length > 0) {\n constructorBody.push(...staticBlocks.map(staticBlockToIIFE));\n }\n if (classInitCall) {\n classInitInjected = true;\n constructorBody.push(classInitCall);\n }\n if (constructorBody.length > 0) {\n constructorBody.unshift(\n t.callExpression(t.super(), [t.cloneNode(classLocal)]),\n );\n\n staticsClass.body.body.push(\n t.classMethod(\n \"constructor\",\n t.identifier(\"constructor\"),\n [],\n t.blockStatement([\n t.expressionStatement(t.sequenceExpression(constructorBody)),\n ]),\n ),\n );\n } else {\n newExpr.arguments.push(t.cloneNode(classLocal));\n }\n\n path.replaceWith(newExpr);\n }\n }\n if (!classInitInjected && classInitCall) {\n path.node.body.body.push(\n t.staticBlock([t.expressionStatement(classInitCall)]),\n );\n }\n\n originalClass.body.body.unshift(\n t.staticBlock(\n [\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.arrayPattern(locals),\n t.callExpression(\n state.addHelper(\n version === \"2021-12\" ? \"applyDecs\" : \"applyDecs2203\",\n ),\n [t.thisExpression(), elementDecorations, classDecorations],\n ),\n ),\n ),\n requiresStaticInit &&\n t.expressionStatement(\n t.callExpression(t.cloneNode(staticInitLocal), [\n t.thisExpression(),\n ]),\n ),\n ].filter(Boolean),\n ),\n );\n\n // When path is a ClassExpression, path.insertBefore will convert `path`\n // into a SequenceExpression\n path.insertBefore(assignments.map(expr => t.expressionStatement(expr)));\n\n // Recrawl the scope to make sure new identifiers are properly synced\n path.scope.crawl();\n\n return path;\n}\n\nexport default function (\n { assertVersion, assumption }: PluginAPI,\n { loose }: Options,\n version: \"2022-03\" | \"2021-12\",\n): PluginObject {\n assertVersion(version === \"2021-12\" ? \"^7.16.0\" : \"^7.19.0\");\n\n const VISITED = new WeakSet<NodePath>();\n const constantSuper = assumption(\"constantSuper\") ?? loose;\n\n return {\n name: \"proposal-decorators\",\n inherits: syntaxDecorators,\n\n visitor: {\n \"ExportNamedDeclaration|ExportDefaultDeclaration\"(\n path: NodePath<t.ExportNamedDeclaration | t.ExportDefaultDeclaration>,\n ) {\n const { declaration } = path.node;\n if (\n declaration?.type === \"ClassDeclaration\" &&\n // When compiling class decorators we need to replace the class\n // binding, so we must split it in two separate declarations.\n declaration.decorators?.length > 0\n ) {\n splitExportDeclaration(path);\n }\n },\n\n Class(path, state) {\n if (VISITED.has(path)) return;\n\n const newPath = transformClass(path, state, constantSuper, version);\n if (newPath) VISITED.add(newPath);\n },\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["incrementId","id","idx","length","unshift","current","createPrivateUidGeneratorForClass","classPath","currentPrivateId","privateNames","Set","traverse","PrivateName","path","add","node","name","reifiedId","String","fromCharCode","has","t","privateName","identifier","createLazyPrivateUidGeneratorForClass","generator","replaceClassWithVar","type","varId","scope","generateUidIdentifierBasedOnNode","classId","rename","insertBefore","variableDeclaration","variableDeclarator","get","replaceWith","cloneNode","className","parent","generateDeclaredUidIdentifier","parentPath","newClassExpr","classExpression","superClass","body","newPath","sequenceExpression","generateClassProperty","key","value","isStatic","classPrivateProperty","undefined","classProperty","addProxyAccessorsFor","element","originalKey","targetKey","isComputed","static","getterBody","blockStatement","returnStatement","memberExpression","thisExpression","setterBody","expressionStatement","assignmentExpression","getter","setter","classPrivateMethod","classMethod","insertAfter","extractProxyAccessorsFor","functionExpression","FIELD","ACCESSOR","METHOD","GETTER","SETTER","STATIC","getElementKind","kind","isDecoratorInfo","info","filteredOrderedDecoratorInfo","filtered","filter","el","generateDecorationExprs","arrayExpression","map","decs","decorators","decInfo","numericLiteral","privateMethods","Array","isArray","push","extractElementLocalAssignments","decorationInfo","localIds","locals","addCallAccessorsFor","getId","setId","callExpression","isNotTsParameter","movePrivateAccessor","methodLocalVar","params","block","isClassDecoratableElementPath","staticBlockToIIFE","arrowFunctionExpression","maybeSequenceExpression","exprs","unaryExpression","transformClass","state","constantSuper","version","classDecorators","hasElementDecorators","generateClassPrivateUid","computed","newId","valueNode","newField","elementDecoratorInfo","firstFieldPath","constructorPath","requiresProtoInit","requiresStaticInit","decoratedPrivateMethods","protoInitLocal","staticInitLocal","classInitLocal","classLocal","assignments","scopeParent","memoiseExpression","expression","hint","localEvaluatedId","localId","classDecorator","generateUidIdentifier","hasDecorators","decoratorPath","isPrivate","isClassMethod","newFieldInitId","newValue","initId","valuePath","v","replaceSupers","ReplaceSupers","methodPath","objectRef","superRef","file","refToPreserve","replace","async","isAsync","remove","nameExpr","stringLiteral","d","elementDecorations","classDecorations","protoInitCall","CallExpression","exit","isSuper","skip","super","spreadElement","restElement","size","parentParentPath","left","buildCodeFrameError","classInitInjected","classInitCall","originalClass","statics","staticBlocks","forEach","isStaticBlock","isProperty","isClassProperty","isClassPrivateProperty","isClassPrivateMethod","allValues","staticsClass","template","ast","addHelper","staticBlock","toStatement","constructorBody","newExpr","newExpression","arguments","arrayPattern","Boolean","expr","crawl","assertVersion","assumption","loose","VISITED","WeakSet","inherits","syntaxDecorators","visitor","declaration","splitExportDeclaration","Class"],"sources":["../src/transformer-2022-03.ts"],"sourcesContent":["import type { NodePath, Scope } from \"@babel/traverse\";\nimport { types as t, template } from \"@babel/core\";\nimport syntaxDecorators from \"@babel/plugin-syntax-decorators\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport splitExportDeclaration from \"@babel/helper-split-export-declaration\";\nimport * as charCodes from \"charcodes\";\nimport type { PluginAPI, PluginObject, PluginPass } from \"@babel/core\";\nimport type { Options } from \"./index\";\n\ntype ClassDecoratableElement =\n | t.ClassMethod\n | t.ClassPrivateMethod\n | t.ClassProperty\n | t.ClassPrivateProperty\n | t.ClassAccessorProperty;\n\ntype ClassElement =\n | ClassDecoratableElement\n | t.TSDeclareMethod\n | t.TSIndexSignature\n | t.StaticBlock;\n\nfunction incrementId(id: number[], idx = id.length - 1): void {\n // If index is -1, id needs an additional character, unshift A\n if (idx === -1) {\n id.unshift(charCodes.uppercaseA);\n return;\n }\n\n const current = id[idx];\n\n if (current === charCodes.uppercaseZ) {\n // if current is Z, skip to a\n id[idx] = charCodes.lowercaseA;\n } else if (current === charCodes.lowercaseZ) {\n // if current is z, reset to A and carry the 1\n id[idx] = charCodes.uppercaseA;\n incrementId(id, idx - 1);\n } else {\n // else, increment by one\n id[idx] = current + 1;\n }\n}\n\n/**\n * Generates a new private name that is unique to the given class. This can be\n * used to create extra class fields and methods for the implementation, while\n * keeping the length of those names as small as possible. This is important for\n * minification purposes (though private names can generally be minified,\n * transpilations and polyfills cannot yet).\n */\nfunction createPrivateUidGeneratorForClass(\n classPath: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): () => t.PrivateName {\n const currentPrivateId: number[] = [];\n const privateNames = new Set<string>();\n\n classPath.traverse({\n PrivateName(path) {\n privateNames.add(path.node.id.name);\n },\n });\n\n return (): t.PrivateName => {\n let reifiedId;\n do {\n incrementId(currentPrivateId);\n reifiedId = String.fromCharCode(...currentPrivateId);\n } while (privateNames.has(reifiedId));\n\n return t.privateName(t.identifier(reifiedId));\n };\n}\n\n/**\n * Wraps the above generator function so that it's run lazily the first time\n * it's actually required. Several types of decoration do not require this, so it\n * saves iterating the class elements an additional time and allocating the space\n * for the Sets of element names.\n */\nfunction createLazyPrivateUidGeneratorForClass(\n classPath: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): () => t.PrivateName {\n let generator: () => t.PrivateName;\n\n return (): t.PrivateName => {\n if (!generator) {\n generator = createPrivateUidGeneratorForClass(classPath);\n }\n\n return generator();\n };\n}\n\n/**\n * Takes a class definition and replaces it with an equivalent class declaration\n * which is then assigned to a local variable. This allows us to reassign the\n * local variable with the decorated version of the class. The class definition\n * retains its original name so that `toString` is not affected, other\n * references to the class are renamed instead.\n */\nfunction replaceClassWithVar(\n path: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): [t.Identifier, NodePath<t.ClassDeclaration | t.ClassExpression>] {\n if (path.type === \"ClassDeclaration\") {\n const varId = path.scope.generateUidIdentifierBasedOnNode(path.node.id);\n const classId = t.identifier(path.node.id.name);\n\n path.scope.rename(classId.name, varId.name);\n\n path.insertBefore(\n t.variableDeclaration(\"let\", [t.variableDeclarator(varId)]),\n );\n path.get(\"id\").replaceWith(classId);\n\n return [t.cloneNode(varId), path];\n } else {\n let className: string;\n let varId: t.Identifier;\n\n if (path.node.id) {\n className = path.node.id.name;\n varId = path.scope.parent.generateDeclaredUidIdentifier(className);\n path.scope.rename(className, varId.name);\n } else if (\n path.parentPath.node.type === \"VariableDeclarator\" &&\n path.parentPath.node.id.type === \"Identifier\"\n ) {\n className = path.parentPath.node.id.name;\n varId = path.scope.parent.generateDeclaredUidIdentifier(className);\n } else {\n varId =\n path.scope.parent.generateDeclaredUidIdentifier(\"decorated_class\");\n }\n\n const newClassExpr = t.classExpression(\n className && t.identifier(className),\n path.node.superClass,\n path.node.body,\n );\n\n const [newPath] = path.replaceWith(\n t.sequenceExpression([newClassExpr, varId]),\n );\n\n return [\n t.cloneNode(varId),\n newPath.get(\"expressions.0\") as NodePath<t.ClassExpression>,\n ];\n }\n}\n\nfunction generateClassProperty(\n key: t.PrivateName | t.Identifier,\n value: t.Expression | undefined,\n isStatic: boolean,\n): t.ClassPrivateProperty | t.ClassProperty {\n if (key.type === \"PrivateName\") {\n return t.classPrivateProperty(key, value, undefined, isStatic);\n } else {\n return t.classProperty(key, value, undefined, undefined, isStatic);\n }\n}\n\nfunction addProxyAccessorsFor(\n element: NodePath<ClassDecoratableElement>,\n originalKey: t.PrivateName | t.Expression,\n targetKey: t.PrivateName,\n isComputed = false,\n): void {\n const { static: isStatic } = element.node;\n\n const getterBody = t.blockStatement([\n t.returnStatement(\n t.memberExpression(t.thisExpression(), t.cloneNode(targetKey)),\n ),\n ]);\n\n const setterBody = t.blockStatement([\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.memberExpression(t.thisExpression(), t.cloneNode(targetKey)),\n t.identifier(\"v\"),\n ),\n ),\n ]);\n\n let getter: t.ClassMethod | t.ClassPrivateMethod,\n setter: t.ClassMethod | t.ClassPrivateMethod;\n\n if (originalKey.type === \"PrivateName\") {\n getter = t.classPrivateMethod(\n \"get\",\n t.cloneNode(originalKey),\n [],\n getterBody,\n isStatic,\n );\n setter = t.classPrivateMethod(\n \"set\",\n t.cloneNode(originalKey),\n [t.identifier(\"v\")],\n setterBody,\n isStatic,\n );\n } else {\n getter = t.classMethod(\n \"get\",\n t.cloneNode(originalKey),\n [],\n getterBody,\n isComputed,\n isStatic,\n );\n setter = t.classMethod(\n \"set\",\n t.cloneNode(originalKey),\n [t.identifier(\"v\")],\n setterBody,\n isComputed,\n isStatic,\n );\n }\n\n element.insertAfter(setter);\n element.insertAfter(getter);\n}\n\nfunction extractProxyAccessorsFor(\n targetKey: t.PrivateName,\n): t.FunctionExpression[] {\n return [\n t.functionExpression(\n undefined,\n [],\n t.blockStatement([\n t.returnStatement(\n t.memberExpression(t.thisExpression(), t.cloneNode(targetKey)),\n ),\n ]),\n ),\n t.functionExpression(\n undefined,\n [t.identifier(\"value\")],\n t.blockStatement([\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.memberExpression(t.thisExpression(), t.cloneNode(targetKey)),\n t.identifier(\"value\"),\n ),\n ),\n ]),\n ),\n ];\n}\n\nconst FIELD = 0;\nconst ACCESSOR = 1;\nconst METHOD = 2;\nconst GETTER = 3;\nconst SETTER = 4;\n\nconst STATIC = 5;\n\nfunction getElementKind(element: NodePath<ClassDecoratableElement>): number {\n switch (element.node.type) {\n case \"ClassProperty\":\n case \"ClassPrivateProperty\":\n return FIELD;\n case \"ClassAccessorProperty\":\n return ACCESSOR;\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n if (element.node.kind === \"get\") {\n return GETTER;\n } else if (element.node.kind === \"set\") {\n return SETTER;\n } else {\n return METHOD;\n }\n }\n}\n\n// Information about the decorators applied to an element\ninterface DecoratorInfo {\n // The expressions of the decorators themselves\n decorators: t.Expression[];\n\n // The kind of the decorated value, matches the kind value passed to applyDecs\n kind: number;\n\n // whether or not the field is static\n isStatic: boolean;\n\n // The name of the decorator\n name: t.StringLiteral | t.Expression;\n\n privateMethods: t.FunctionExpression | t.FunctionExpression[] | undefined;\n\n // The names of local variables that will be used/returned from the decoration\n locals: t.Identifier | t.Identifier[] | undefined;\n}\n\n// Information about a computed property key. These must be evaluated\n// interspersed with decorator expressions, which is why they get added to the\n// array of DecoratorInfos later on.\ninterface ComputedPropInfo {\n localComputedNameId: t.Identifier;\n keyNode: t.Expression;\n}\n\nfunction isDecoratorInfo(\n info: DecoratorInfo | ComputedPropInfo,\n): info is DecoratorInfo {\n return \"decorators\" in info;\n}\n\nfunction filteredOrderedDecoratorInfo(\n info: (DecoratorInfo | ComputedPropInfo)[],\n): DecoratorInfo[] {\n const filtered = info.filter(isDecoratorInfo);\n\n return [\n ...filtered.filter(\n el => el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER,\n ),\n ...filtered.filter(\n el => !el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER,\n ),\n ...filtered.filter(el => el.isStatic && el.kind === FIELD),\n ...filtered.filter(el => !el.isStatic && el.kind === FIELD),\n ];\n}\n\nfunction generateDecorationExprs(\n info: (DecoratorInfo | ComputedPropInfo)[],\n): t.ArrayExpression {\n return t.arrayExpression(\n filteredOrderedDecoratorInfo(info).map(el => {\n const decs =\n el.decorators.length > 1\n ? t.arrayExpression(el.decorators)\n : el.decorators[0];\n\n const kind = el.isStatic ? el.kind + STATIC : el.kind;\n\n const decInfo = [decs, t.numericLiteral(kind), el.name];\n\n const { privateMethods } = el;\n\n if (Array.isArray(privateMethods)) {\n decInfo.push(...privateMethods);\n } else if (privateMethods) {\n decInfo.push(privateMethods);\n }\n\n return t.arrayExpression(decInfo);\n }),\n );\n}\n\nfunction extractElementLocalAssignments(\n decorationInfo: (DecoratorInfo | ComputedPropInfo)[],\n) {\n const localIds: t.Identifier[] = [];\n\n for (const el of filteredOrderedDecoratorInfo(decorationInfo)) {\n const { locals } = el;\n\n if (Array.isArray(locals)) {\n localIds.push(...locals);\n } else if (locals !== undefined) {\n localIds.push(locals);\n }\n }\n\n return localIds;\n}\n\nfunction addCallAccessorsFor(\n element: NodePath,\n key: t.PrivateName,\n getId: t.Identifier,\n setId: t.Identifier,\n) {\n element.insertAfter(\n t.classPrivateMethod(\n \"get\",\n t.cloneNode(key),\n [],\n t.blockStatement([\n t.returnStatement(\n t.callExpression(t.cloneNode(getId), [t.thisExpression()]),\n ),\n ]),\n ),\n );\n\n element.insertAfter(\n t.classPrivateMethod(\n \"set\",\n t.cloneNode(key),\n [t.identifier(\"v\")],\n t.blockStatement([\n t.expressionStatement(\n t.callExpression(t.cloneNode(setId), [\n t.thisExpression(),\n t.identifier(\"v\"),\n ]),\n ),\n ]),\n ),\n );\n}\n\nfunction isNotTsParameter(\n node: t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty,\n): node is t.Identifier | t.Pattern | t.RestElement {\n return node.type !== \"TSParameterProperty\";\n}\n\nfunction movePrivateAccessor(\n element: NodePath<t.ClassPrivateMethod>,\n key: t.PrivateName,\n methodLocalVar: t.Identifier,\n isStatic: boolean,\n) {\n let params: (t.Identifier | t.RestElement)[];\n let block: t.Statement[];\n\n if (element.node.kind === \"set\") {\n params = [t.identifier(\"v\")];\n block = [\n t.expressionStatement(\n t.callExpression(methodLocalVar, [\n t.thisExpression(),\n t.identifier(\"v\"),\n ]),\n ),\n ];\n } else {\n params = [];\n block = [\n t.returnStatement(t.callExpression(methodLocalVar, [t.thisExpression()])),\n ];\n }\n\n element.replaceWith(\n t.classPrivateMethod(\n element.node.kind,\n t.cloneNode(key),\n params,\n t.blockStatement(block),\n isStatic,\n ),\n );\n}\n\nfunction isClassDecoratableElementPath(\n path: NodePath<ClassElement>,\n): path is NodePath<ClassDecoratableElement> {\n const { type } = path;\n\n return (\n type !== \"TSDeclareMethod\" &&\n type !== \"TSIndexSignature\" &&\n type !== \"StaticBlock\"\n );\n}\n\nfunction staticBlockToIIFE(block: t.StaticBlock) {\n return t.callExpression(\n t.arrowFunctionExpression([], t.blockStatement(block.body)),\n [],\n );\n}\n\nfunction maybeSequenceExpression(exprs: t.Expression[]) {\n if (exprs.length === 0) return t.unaryExpression(\"void\", t.numericLiteral(0));\n if (exprs.length === 1) return exprs[0];\n return t.sequenceExpression(exprs);\n}\n\nfunction transformClass(\n path: NodePath<t.ClassExpression | t.ClassDeclaration>,\n state: PluginPass,\n constantSuper: boolean,\n version: \"2022-03\" | \"2021-12\",\n): NodePath {\n const body = path.get(\"body.body\");\n\n const classDecorators = path.node.decorators;\n let hasElementDecorators = false;\n\n const generateClassPrivateUid = createLazyPrivateUidGeneratorForClass(path);\n\n // Iterate over the class to see if we need to decorate it, and also to\n // transform simple auto accessors which are not decorated\n for (const element of body) {\n if (!isClassDecoratableElementPath(element)) {\n continue;\n }\n\n if (element.node.decorators && element.node.decorators.length > 0) {\n hasElementDecorators = true;\n } else if (element.node.type === \"ClassAccessorProperty\") {\n const { key, value, static: isStatic, computed } = element.node;\n\n const newId = generateClassPrivateUid();\n\n const valueNode = value ? t.cloneNode(value) : undefined;\n\n const newField = generateClassProperty(newId, valueNode, isStatic);\n\n const [newPath] = element.replaceWith(newField);\n addProxyAccessorsFor(newPath, key, newId, computed);\n }\n }\n\n // If nothing is decorated, return\n if (!classDecorators && !hasElementDecorators) return;\n\n const elementDecoratorInfo: (DecoratorInfo | ComputedPropInfo)[] = [];\n\n // The initializer of the first non-static field will be injected with the protoInit call\n let firstFieldPath:\n | NodePath<t.ClassProperty | t.ClassPrivateProperty>\n | undefined;\n let constructorPath: NodePath<t.ClassMethod> | undefined;\n let requiresProtoInit = false;\n let requiresStaticInit = false;\n const decoratedPrivateMethods = new Set<string>();\n\n let protoInitLocal: t.Identifier,\n staticInitLocal: t.Identifier,\n classInitLocal: t.Identifier,\n classLocal: t.Identifier;\n const assignments: t.AssignmentExpression[] = [];\n const scopeParent: Scope = path.scope.parent;\n\n const memoiseExpression = (expression: t.Expression, hint: string) => {\n const localEvaluatedId = scopeParent.generateDeclaredUidIdentifier(hint);\n assignments.push(t.assignmentExpression(\"=\", localEvaluatedId, expression));\n return t.cloneNode(localEvaluatedId);\n };\n\n if (classDecorators) {\n classInitLocal = scopeParent.generateDeclaredUidIdentifier(\"initClass\");\n\n const [localId, classPath] = replaceClassWithVar(path);\n path = classPath;\n classLocal = localId;\n\n path.node.decorators = null;\n\n for (const classDecorator of classDecorators) {\n if (!scopeParent.isStatic(classDecorator.expression)) {\n classDecorator.expression = memoiseExpression(\n classDecorator.expression,\n \"dec\",\n );\n }\n }\n } else {\n if (!path.node.id) {\n path.node.id = path.scope.generateUidIdentifier(\"Class\");\n }\n classLocal = t.cloneNode(path.node.id);\n }\n\n if (hasElementDecorators) {\n for (const element of body) {\n if (!isClassDecoratableElementPath(element)) {\n continue;\n }\n\n const { node } = element;\n const decorators = element.get(\"decorators\");\n\n const hasDecorators = Array.isArray(decorators) && decorators.length > 0;\n\n if (hasDecorators) {\n for (const decoratorPath of decorators) {\n if (!scopeParent.isStatic(decoratorPath.node.expression)) {\n decoratorPath.node.expression = memoiseExpression(\n decoratorPath.node.expression,\n \"dec\",\n );\n }\n }\n }\n\n const isComputed =\n \"computed\" in element.node && element.node.computed === true;\n if (isComputed) {\n if (!scopeParent.isStatic(node.key)) {\n node.key = memoiseExpression(node.key as t.Expression, \"computedKey\");\n }\n }\n\n const kind = getElementKind(element);\n const { key } = node;\n\n const isPrivate = key.type === \"PrivateName\";\n\n const isStatic = !!element.node.static;\n\n let name = \"computedKey\";\n\n if (isPrivate) {\n name = (key as t.PrivateName).id.name;\n } else if (!isComputed && key.type === \"Identifier\") {\n name = key.name;\n }\n\n if (element.isClassMethod({ kind: \"constructor\" })) {\n constructorPath = element;\n }\n\n if (hasDecorators) {\n let locals: t.Identifier | t.Identifier[];\n let privateMethods: t.FunctionExpression | t.FunctionExpression[];\n\n if (kind === ACCESSOR) {\n const { value } = element.node as t.ClassAccessorProperty;\n\n const params: t.Expression[] = [t.thisExpression()];\n\n if (value) {\n params.push(t.cloneNode(value));\n }\n\n const newId = generateClassPrivateUid();\n const newFieldInitId =\n element.scope.parent.generateDeclaredUidIdentifier(`init_${name}`);\n const newValue = t.callExpression(\n t.cloneNode(newFieldInitId),\n params,\n );\n\n const newField = generateClassProperty(newId, newValue, isStatic);\n const [newPath] = element.replaceWith(newField);\n\n if (isPrivate) {\n privateMethods = extractProxyAccessorsFor(newId);\n\n const getId = newPath.scope.parent.generateDeclaredUidIdentifier(\n `get_${name}`,\n );\n const setId = newPath.scope.parent.generateDeclaredUidIdentifier(\n `set_${name}`,\n );\n\n addCallAccessorsFor(newPath, key as t.PrivateName, getId, setId);\n\n locals = [newFieldInitId, getId, setId];\n } else {\n addProxyAccessorsFor(newPath, key, newId, isComputed);\n locals = newFieldInitId;\n }\n } else if (kind === FIELD) {\n const initId = element.scope.parent.generateDeclaredUidIdentifier(\n `init_${name}`,\n );\n const valuePath = (\n element as NodePath<t.ClassProperty | t.ClassPrivateProperty>\n ).get(\"value\");\n\n valuePath.replaceWith(\n t.callExpression(\n t.cloneNode(initId),\n [t.thisExpression(), valuePath.node].filter(v => v),\n ),\n );\n\n locals = initId;\n\n if (isPrivate) {\n privateMethods = extractProxyAccessorsFor(key as t.PrivateName);\n }\n } else if (isPrivate) {\n locals = element.scope.parent.generateDeclaredUidIdentifier(\n `call_${name}`,\n ) as t.Identifier;\n\n const replaceSupers = new ReplaceSupers({\n constantSuper,\n methodPath: element as NodePath<t.ClassPrivateMethod>,\n objectRef: classLocal,\n superRef: path.node.superClass,\n file: state.file,\n refToPreserve: classLocal,\n });\n\n replaceSupers.replace();\n\n const {\n params,\n body,\n async: isAsync,\n } = element.node as t.ClassPrivateMethod;\n\n privateMethods = t.functionExpression(\n undefined,\n params.filter(isNotTsParameter),\n body,\n isAsync,\n );\n\n if (kind === GETTER || kind === SETTER) {\n movePrivateAccessor(\n element as NodePath<t.ClassPrivateMethod>,\n t.cloneNode(key as t.PrivateName),\n t.cloneNode(locals),\n isStatic,\n );\n } else {\n const node = element.node as t.ClassPrivateMethod;\n\n // Unshift\n path.node.body.body.unshift(\n t.classPrivateProperty(\n key as t.PrivateName,\n t.cloneNode(locals),\n [],\n node.static,\n ),\n );\n\n decoratedPrivateMethods.add((key as t.PrivateName).id.name);\n\n element.remove();\n }\n }\n\n let nameExpr: t.Expression;\n\n if (isComputed) {\n nameExpr = t.cloneNode(key as t.Expression);\n } else if (key.type === \"PrivateName\") {\n nameExpr = t.stringLiteral(key.id.name);\n } else if (key.type === \"Identifier\") {\n nameExpr = t.stringLiteral(key.name);\n } else {\n nameExpr = t.cloneNode(key as t.Expression);\n }\n\n elementDecoratorInfo.push({\n kind,\n decorators: decorators.map(d => d.node.expression),\n name: nameExpr,\n isStatic,\n privateMethods,\n locals,\n });\n\n if (kind !== FIELD) {\n if (isStatic) {\n requiresStaticInit = true;\n } else {\n requiresProtoInit = true;\n }\n }\n\n if (element.node) {\n element.node.decorators = null;\n }\n\n if (\n !firstFieldPath &&\n !isStatic &&\n (kind === FIELD || kind === ACCESSOR)\n ) {\n firstFieldPath = element as NodePath<\n t.ClassProperty | t.ClassPrivateProperty\n >;\n }\n }\n }\n }\n\n const elementDecorations = generateDecorationExprs(elementDecoratorInfo);\n const classDecorations = t.arrayExpression(\n (classDecorators || []).map(d => d.expression),\n );\n\n const locals: t.Identifier[] =\n extractElementLocalAssignments(elementDecoratorInfo);\n\n if (requiresProtoInit) {\n protoInitLocal = scopeParent.generateDeclaredUidIdentifier(\"initProto\");\n locals.push(protoInitLocal);\n\n const protoInitCall = t.callExpression(t.cloneNode(protoInitLocal), [\n t.thisExpression(),\n ]);\n\n if (firstFieldPath) {\n const value = firstFieldPath.get(\"value\");\n const body: t.Expression[] = [protoInitCall];\n\n if (value.node) {\n body.push(value.node);\n }\n\n value.replaceWith(t.sequenceExpression(body));\n } else if (constructorPath) {\n if (path.node.superClass) {\n path.traverse({\n CallExpression: {\n exit(path) {\n if (!path.get(\"callee\").isSuper()) return;\n\n path.replaceWith(\n t.callExpression(t.cloneNode(protoInitLocal), [path.node]),\n );\n\n path.skip();\n },\n },\n });\n } else {\n constructorPath.node.body.body.unshift(\n t.expressionStatement(protoInitCall),\n );\n }\n } else {\n const body: t.Statement[] = [t.expressionStatement(protoInitCall)];\n\n if (path.node.superClass) {\n body.unshift(\n t.expressionStatement(\n t.callExpression(t.super(), [\n t.spreadElement(t.identifier(\"args\")),\n ]),\n ),\n );\n }\n\n path.node.body.body.unshift(\n t.classMethod(\n \"constructor\",\n t.identifier(\"constructor\"),\n [t.restElement(t.identifier(\"args\"))],\n t.blockStatement(body),\n ),\n );\n }\n }\n\n if (requiresStaticInit) {\n staticInitLocal = scopeParent.generateDeclaredUidIdentifier(\"initStatic\");\n locals.push(staticInitLocal);\n }\n\n if (decoratedPrivateMethods.size > 0) {\n path.traverse({\n PrivateName(path) {\n if (!decoratedPrivateMethods.has(path.node.id.name)) return;\n\n const parentPath = path.parentPath;\n const parentParentPath = parentPath.parentPath;\n\n if (\n // this.bar().#x = 123;\n (parentParentPath.node.type === \"AssignmentExpression\" &&\n parentParentPath.node.left === parentPath.node) ||\n // this.#x++;\n parentParentPath.node.type === \"UpdateExpression\" ||\n // ([...this.#x] = foo);\n parentParentPath.node.type === \"RestElement\" ||\n // ([this.#x] = foo);\n parentParentPath.node.type === \"ArrayPattern\" ||\n // ({ a: this.#x } = bar);\n (parentParentPath.node.type === \"ObjectProperty\" &&\n parentParentPath.node.value === parentPath.node &&\n parentParentPath.parentPath.type === \"ObjectPattern\") ||\n // for (this.#x of []);\n (parentParentPath.node.type === \"ForOfStatement\" &&\n parentParentPath.node.left === parentPath.node)\n ) {\n throw path.buildCodeFrameError(\n `Decorated private methods are not updatable, but \"#${path.node.id.name}\" is updated via this expression.`,\n );\n }\n },\n });\n }\n\n let classInitInjected = false;\n const classInitCall =\n classInitLocal && t.callExpression(t.cloneNode(classInitLocal), []);\n\n const originalClass = path.node;\n\n if (classDecorators) {\n locals.push(classLocal, classInitLocal);\n const statics: (\n | t.ClassProperty\n | t.ClassPrivateProperty\n | t.ClassPrivateMethod\n )[] = [];\n let staticBlocks: t.StaticBlock[] = [];\n path.get(\"body.body\").forEach(element => {\n // Static blocks cannot be compiled to \"instance blocks\", but we can inline\n // them as IIFEs in the next property.\n if (element.isStaticBlock()) {\n staticBlocks.push(element.node);\n element.remove();\n return;\n }\n\n const isProperty =\n element.isClassProperty() || element.isClassPrivateProperty();\n\n if (\n (isProperty || element.isClassPrivateMethod()) &&\n element.node.static\n ) {\n if (isProperty && staticBlocks.length > 0) {\n const allValues: t.Expression[] = staticBlocks.map(staticBlockToIIFE);\n if (element.node.value) allValues.push(element.node.value);\n element.node.value = maybeSequenceExpression(allValues);\n staticBlocks = [];\n }\n\n element.node.static = false;\n statics.push(element.node);\n element.remove();\n }\n });\n\n if (statics.length > 0 || staticBlocks.length > 0) {\n const staticsClass = template.expression.ast`\n class extends ${state.addHelper(\"identity\")} {}\n ` as t.ClassExpression;\n staticsClass.body.body = [\n t.staticBlock([\n t.toStatement(originalClass, true) ||\n // If toStatement returns false, originalClass must be an anonymous ClassExpression,\n // because `export default @dec ...` has been handled in the export visitor before.\n t.expressionStatement(originalClass as t.ClassExpression),\n ]),\n ...statics,\n ];\n\n const constructorBody: t.Expression[] = [];\n\n const newExpr = t.newExpression(staticsClass, []);\n\n if (staticBlocks.length > 0) {\n constructorBody.push(...staticBlocks.map(staticBlockToIIFE));\n }\n if (classInitCall) {\n classInitInjected = true;\n constructorBody.push(classInitCall);\n }\n if (constructorBody.length > 0) {\n constructorBody.unshift(\n t.callExpression(t.super(), [t.cloneNode(classLocal)]),\n );\n\n staticsClass.body.body.push(\n t.classMethod(\n \"constructor\",\n t.identifier(\"constructor\"),\n [],\n t.blockStatement([\n t.expressionStatement(t.sequenceExpression(constructorBody)),\n ]),\n ),\n );\n } else {\n newExpr.arguments.push(t.cloneNode(classLocal));\n }\n\n path.replaceWith(newExpr);\n }\n }\n if (!classInitInjected && classInitCall) {\n path.node.body.body.push(\n t.staticBlock([t.expressionStatement(classInitCall)]),\n );\n }\n\n originalClass.body.body.unshift(\n t.staticBlock(\n [\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.arrayPattern(locals),\n t.callExpression(\n state.addHelper(\n version === \"2021-12\" ? \"applyDecs\" : \"applyDecs2203\",\n ),\n [t.thisExpression(), elementDecorations, classDecorations],\n ),\n ),\n ),\n requiresStaticInit &&\n t.expressionStatement(\n t.callExpression(t.cloneNode(staticInitLocal), [\n t.thisExpression(),\n ]),\n ),\n ].filter(Boolean),\n ),\n );\n\n // When path is a ClassExpression, path.insertBefore will convert `path`\n // into a SequenceExpression\n path.insertBefore(assignments.map(expr => t.expressionStatement(expr)));\n\n // Recrawl the scope to make sure new identifiers are properly synced\n path.scope.crawl();\n\n return path;\n}\n\nexport default function (\n { assertVersion, assumption }: PluginAPI,\n { loose }: Options,\n version: \"2022-03\" | \"2021-12\",\n): PluginObject {\n assertVersion(version === \"2021-12\" ? \"^7.16.0\" : \"^7.19.0\");\n\n const VISITED = new WeakSet<NodePath>();\n const constantSuper = assumption(\"constantSuper\") ?? loose;\n\n return {\n name: \"proposal-decorators\",\n inherits: syntaxDecorators,\n\n visitor: {\n \"ExportNamedDeclaration|ExportDefaultDeclaration\"(\n path: NodePath<t.ExportNamedDeclaration | t.ExportDefaultDeclaration>,\n ) {\n const { declaration } = path.node;\n if (\n declaration?.type === \"ClassDeclaration\" &&\n // When compiling class decorators we need to replace the class\n // binding, so we must split it in two separate declarations.\n declaration.decorators?.length > 0\n ) {\n splitExportDeclaration(path);\n }\n },\n\n Class(path, state) {\n if (VISITED.has(path)) return;\n\n const newPath = transformClass(path, state, constantSuper, version);\n if (newPath) VISITED.add(newPath);\n },\n },\n };\n}\n"],"mappings":"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"}
@@ -4,13 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _core = require("@babel/core");
9
8
 
10
9
  const buildClassDecorator = _core.template.statement(`
11
10
  DECORATOR(CLASS_REF = INNER) || CLASS_REF;
12
11
  `);
13
-
14
12
  const buildClassPrototype = (0, _core.template)(`
15
13
  CLASS_REF.prototype;
16
14
  `);
@@ -53,20 +51,18 @@ function applyClassDecorators(classPath) {
53
51
  }).expression;
54
52
  }, classPath.node);
55
53
  }
56
-
57
54
  function hasClassDecorators(classNode) {
58
55
  return !!(classNode.decorators && classNode.decorators.length);
59
56
  }
60
57
 
61
58
  function applyMethodDecorators(path, state) {
62
59
  if (!hasMethodDecorators(path.node.body.body)) return;
63
- return applyTargetDecorators(path, state, path.node.body.body);
60
+ return applyTargetDecorators(path, state,
61
+ path.node.body.body);
64
62
  }
65
-
66
63
  function hasMethodDecorators(body) {
67
64
  return body.some(node => {
68
65
  var _node$decorators;
69
-
70
66
  return (_node$decorators = node.decorators) == null ? void 0 : _node$decorators.length;
71
67
  });
72
68
  }
@@ -80,23 +76,20 @@ function applyTargetDecorators(path, state, decoratedProps) {
80
76
  const name = path.scope.generateDeclaredUidIdentifier(path.isClass() ? "class" : "obj");
81
77
  const exprs = decoratedProps.reduce(function (acc, node) {
82
78
  let decorators = [];
83
-
84
79
  if (node.decorators != null) {
85
80
  decorators = node.decorators;
86
81
  node.decorators = null;
87
82
  }
88
-
89
83
  if (decorators.length === 0) return acc;
90
-
91
- if (node.computed) {
84
+ if (
85
+ node.computed) {
92
86
  throw path.buildCodeFrameError("Computed method/property decorators are not yet supported.");
93
87
  }
94
-
95
- const property = _core.types.isLiteral(node.key) ? node.key : _core.types.stringLiteral(node.key.name);
88
+ const property = _core.types.isLiteral(node.key) ? node.key : _core.types.stringLiteral(
89
+ node.key.name);
96
90
  const target = path.isClass() && !node.static ? buildClassPrototype({
97
91
  CLASS_REF: name
98
92
  }).expression : name;
99
-
100
93
  if (_core.types.isClassProperty(node, {
101
94
  static: false
102
95
  })) {
@@ -117,12 +110,10 @@ function applyTargetDecorators(path, state, decoratedProps) {
117
110
  PROPERTY: _core.types.cloneNode(property)
118
111
  }).expression, _core.types.cloneNode(target)]));
119
112
  }
120
-
121
113
  return acc;
122
114
  }, []);
123
115
  return _core.types.sequenceExpression([_core.types.assignmentExpression("=", _core.types.cloneNode(name), path.node), _core.types.sequenceExpression(exprs), _core.types.cloneNode(name)]);
124
116
  }
125
-
126
117
  function decoratedClassToExpression({
127
118
  node,
128
119
  scope
@@ -130,54 +121,51 @@ function decoratedClassToExpression({
130
121
  if (!hasClassDecorators(node) && !hasMethodDecorators(node.body.body)) {
131
122
  return;
132
123
  }
133
-
134
124
  const ref = node.id ? _core.types.cloneNode(node.id) : scope.generateUidIdentifier("class");
135
125
  return _core.types.variableDeclaration("let", [_core.types.variableDeclarator(ref, _core.types.toExpression(node))]);
136
126
  }
137
-
138
127
  const visitor = {
139
128
  ExportDefaultDeclaration(path) {
140
129
  const decl = path.get("declaration");
141
130
  if (!decl.isClassDeclaration()) return;
142
131
  const replacement = decoratedClassToExpression(decl);
143
-
144
132
  if (replacement) {
145
- const [varDeclPath] = path.replaceWithMultiple([replacement, _core.types.exportNamedDeclaration(null, [_core.types.exportSpecifier(_core.types.cloneNode(replacement.declarations[0].id), _core.types.identifier("default"))])]);
146
-
133
+ const [varDeclPath] = path.replaceWithMultiple([replacement, _core.types.exportNamedDeclaration(null, [_core.types.exportSpecifier(
134
+ _core.types.cloneNode(replacement.declarations[0].id), _core.types.identifier("default"))])]);
147
135
  if (!decl.node.id) {
148
136
  path.scope.registerDeclaration(varDeclPath);
149
137
  }
150
138
  }
151
139
  },
152
-
153
140
  ClassDeclaration(path) {
154
141
  const replacement = decoratedClassToExpression(path);
155
-
156
142
  if (replacement) {
157
143
  const [newPath] = path.replaceWith(replacement);
158
144
  const decl = newPath.get("declarations.0");
159
145
  const id = decl.node.id;
146
+
160
147
  const binding = path.scope.getOwnBinding(id.name);
161
148
  binding.identifier = id;
162
149
  binding.path = decl;
163
150
  }
164
151
  },
165
-
166
152
  ClassExpression(path, state) {
167
153
  const decoratedClass = applyEnsureOrdering(path) || applyClassDecorators(path) || applyMethodDecorators(path, state);
168
154
  if (decoratedClass) path.replaceWith(decoratedClass);
169
155
  },
170
-
171
156
  ObjectExpression(path, state) {
172
157
  const decoratedObject = applyEnsureOrdering(path) || applyObjectDecorators(path, state);
173
158
  if (decoratedObject) path.replaceWith(decoratedObject);
174
159
  },
175
-
176
160
  AssignmentExpression(path, state) {
177
161
  if (!WARNING_CALLS.has(path.node.right)) return;
178
- path.replaceWith(_core.types.callExpression(state.addHelper("initializerDefineProperty"), [_core.types.cloneNode(path.get("left.object").node), _core.types.stringLiteral(path.get("left.property").node.name || path.get("left.property").node.value), _core.types.cloneNode(path.get("right.arguments")[0].node), _core.types.cloneNode(path.get("right.arguments")[1].node)]));
162
+ path.replaceWith(_core.types.callExpression(state.addHelper("initializerDefineProperty"), [
163
+ _core.types.cloneNode(path.get("left.object").node), _core.types.stringLiteral(
164
+ path.get("left.property").node.name ||
165
+ path.get("left.property").node.value),
166
+ _core.types.cloneNode(path.get("right.arguments")[0].node),
167
+ _core.types.cloneNode(path.get("right.arguments")[1].node)]));
179
168
  },
180
-
181
169
  CallExpression(path, state) {
182
170
  if (path.node.arguments.length !== 3) return;
183
171
  if (!WARNING_CALLS.has(path.node.arguments[2])) return;
@@ -185,10 +173,10 @@ const visitor = {
185
173
  if (path.node.callee.name !== state.addHelper("defineProperty").name) {
186
174
  return;
187
175
  }
188
-
189
- path.replaceWith(_core.types.callExpression(state.addHelper("initializerDefineProperty"), [_core.types.cloneNode(path.get("arguments")[0].node), _core.types.cloneNode(path.get("arguments")[1].node), _core.types.cloneNode(path.get("arguments.2.arguments")[0].node), _core.types.cloneNode(path.get("arguments.2.arguments")[1].node)]));
176
+ path.replaceWith(_core.types.callExpression(state.addHelper("initializerDefineProperty"), [_core.types.cloneNode(path.get("arguments")[0].node), _core.types.cloneNode(path.get("arguments")[1].node),
177
+ _core.types.cloneNode(path.get("arguments.2.arguments")[0].node),
178
+ _core.types.cloneNode(path.get("arguments.2.arguments")[1].node)]));
190
179
  }
191
-
192
180
  };
193
181
  var _default = visitor;
194
182
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["buildClassDecorator","template","statement","buildClassPrototype","buildGetDescriptor","buildGetObjectInitializer","WARNING_CALLS","WeakSet","applyEnsureOrdering","path","decorators","isClass","get","reduce","acc","prop","concat","node","identDecorators","filter","decorator","t","isIdentifier","expression","length","sequenceExpression","map","id","scope","generateDeclaredUidIdentifier","assignmentExpression","applyClassDecorators","classPath","hasClassDecorators","name","dec","reverse","CLASS_REF","cloneNode","DECORATOR","INNER","classNode","applyMethodDecorators","state","hasMethodDecorators","body","applyTargetDecorators","some","applyObjectDecorators","properties","type","decoratedProps","exprs","computed","buildCodeFrameError","property","isLiteral","key","stringLiteral","target","static","isClassProperty","descriptor","initializer","value","functionExpression","blockStatement","returnStatement","nullLiteral","callExpression","addHelper","thisExpression","add","push","arrayExpression","objectExpression","objectProperty","identifier","booleanLiteral","isObjectProperty","TEMP","TARGET","PROPERTY","decoratedClassToExpression","ref","generateUidIdentifier","variableDeclaration","variableDeclarator","toExpression","visitor","ExportDefaultDeclaration","decl","isClassDeclaration","replacement","varDeclPath","replaceWithMultiple","exportNamedDeclaration","exportSpecifier","declarations","registerDeclaration","ClassDeclaration","newPath","replaceWith","binding","getOwnBinding","ClassExpression","decoratedClass","ObjectExpression","decoratedObject","AssignmentExpression","has","right","CallExpression","arguments","callee"],"sources":["../src/transformer-legacy.ts"],"sourcesContent":["// Fork of https://github.com/loganfsmyth/babel-plugin-proposal-decorators-legacy\n\nimport { template, types as t, type PluginPass } from \"@babel/core\";\nimport type { NodePath, Visitor } from \"@babel/traverse\";\n\nconst buildClassDecorator = template.statement(`\n DECORATOR(CLASS_REF = INNER) || CLASS_REF;\n`) as (replacements: {\n DECORATOR: t.Expression;\n CLASS_REF: t.Identifier;\n INNER: t.Expression;\n}) => t.ExpressionStatement;\n\nconst buildClassPrototype = template(`\n CLASS_REF.prototype;\n`) as (replacements: { CLASS_REF: t.Identifier }) => t.ExpressionStatement;\n\nconst buildGetDescriptor = template(`\n Object.getOwnPropertyDescriptor(TARGET, PROPERTY);\n`) as (replacements: {\n TARGET: t.Expression;\n PROPERTY: t.Literal;\n}) => t.ExpressionStatement;\n\nconst buildGetObjectInitializer = template(`\n (TEMP = Object.getOwnPropertyDescriptor(TARGET, PROPERTY), (TEMP = TEMP ? TEMP.value : undefined), {\n enumerable: true,\n configurable: true,\n writable: true,\n initializer: function(){\n return TEMP;\n }\n })\n`) as (replacements: {\n TEMP: t.Identifier;\n TARGET: t.Expression;\n PROPERTY: t.Literal;\n}) => t.ExpressionStatement;\n\nconst WARNING_CALLS = new WeakSet();\n\n// legacy decorator does not support ClassAccessorProperty\ntype ClassDecoratableElement =\n | t.ClassMethod\n | t.ClassPrivateMethod\n | t.ClassProperty\n | t.ClassPrivateProperty;\n\n/**\n * If the decorator expressions are non-identifiers, hoist them to before the class so we can be sure\n * that they are evaluated in order.\n */\nfunction applyEnsureOrdering(\n path: NodePath<t.ClassExpression | t.ObjectExpression>,\n) {\n // TODO: This should probably also hoist computed properties.\n const decorators: t.Decorator[] = (\n path.isClass()\n ? [\n path,\n ...(path.get(\"body.body\") as NodePath<ClassDecoratableElement>[]),\n ]\n : path.get(\"properties\")\n ).reduce(\n (\n acc: t.Decorator[],\n prop: NodePath<\n t.ObjectMember | t.ClassExpression | ClassDecoratableElement\n >,\n ) => acc.concat(prop.node.decorators || []),\n [],\n );\n\n const identDecorators = decorators.filter(\n decorator => !t.isIdentifier(decorator.expression),\n );\n if (identDecorators.length === 0) return;\n\n return t.sequenceExpression(\n identDecorators\n .map((decorator): t.Expression => {\n const expression = decorator.expression;\n const id = (decorator.expression =\n path.scope.generateDeclaredUidIdentifier(\"dec\"));\n return t.assignmentExpression(\"=\", id, expression);\n })\n .concat([path.node]),\n );\n}\n\n/**\n * Given a class expression with class-level decorators, create a new expression\n * with the proper decorated behavior.\n */\nfunction applyClassDecorators(classPath: NodePath<t.ClassExpression>) {\n if (!hasClassDecorators(classPath.node)) return;\n\n const decorators = classPath.node.decorators || [];\n classPath.node.decorators = null;\n\n const name = classPath.scope.generateDeclaredUidIdentifier(\"class\");\n\n return decorators\n .map(dec => dec.expression)\n .reverse()\n .reduce(function (acc, decorator) {\n return buildClassDecorator({\n CLASS_REF: t.cloneNode(name),\n DECORATOR: t.cloneNode(decorator),\n INNER: acc,\n }).expression;\n }, classPath.node);\n}\n\nfunction hasClassDecorators(classNode: t.Class) {\n return !!(classNode.decorators && classNode.decorators.length);\n}\n\n/**\n * Given a class expression with method-level decorators, create a new expression\n * with the proper decorated behavior.\n */\nfunction applyMethodDecorators(\n path: NodePath<t.ClassExpression>,\n state: PluginPass,\n) {\n if (!hasMethodDecorators(path.node.body.body)) return;\n\n return applyTargetDecorators(\n path,\n state,\n // @ts-expect-error ClassAccessorProperty is not supported in legacy decorator\n path.node.body.body,\n );\n}\n\nfunction hasMethodDecorators(\n body: t.ClassBody[\"body\"] | t.ObjectExpression[\"properties\"],\n) {\n return body.some(\n node =>\n // @ts-expect-error decorators not in SpreadElement/StaticBlock\n node.decorators?.length,\n );\n}\n\n/**\n * Given an object expression with property decorators, create a new expression\n * with the proper decorated behavior.\n */\nfunction applyObjectDecorators(\n path: NodePath<t.ObjectExpression>,\n state: PluginPass,\n) {\n if (!hasMethodDecorators(path.node.properties)) return;\n\n return applyTargetDecorators(\n path,\n state,\n path.node.properties.filter(\n (prop): prop is t.ObjectMember => prop.type !== \"SpreadElement\",\n ),\n );\n}\n\n/**\n * A helper to pull out property decorators into a sequence expression.\n */\nfunction applyTargetDecorators(\n path: NodePath<t.ClassExpression | t.ObjectExpression>,\n state: PluginPass,\n decoratedProps: (t.ObjectMember | ClassDecoratableElement)[],\n) {\n const name = path.scope.generateDeclaredUidIdentifier(\n path.isClass() ? \"class\" : \"obj\",\n );\n\n const exprs = decoratedProps.reduce(function (acc, node) {\n let decorators: t.Decorator[] = [];\n if (node.decorators != null) {\n decorators = node.decorators;\n node.decorators = null;\n }\n\n if (decorators.length === 0) return acc;\n\n if (\n // @ts-expect-error computed is not in ClassPrivateProperty\n node.computed\n ) {\n throw path.buildCodeFrameError(\n \"Computed method/property decorators are not yet supported.\",\n );\n }\n\n const property: t.Literal = t.isLiteral(node.key)\n ? node.key\n : t.stringLiteral(\n // @ts-expect-error: should we handle ClassPrivateProperty?\n node.key.name,\n );\n\n const target =\n path.isClass() && !(node as ClassDecoratableElement).static\n ? buildClassPrototype({\n CLASS_REF: name,\n }).expression\n : name;\n\n if (t.isClassProperty(node, { static: false })) {\n const descriptor = path.scope.generateDeclaredUidIdentifier(\"descriptor\");\n\n const initializer = node.value\n ? t.functionExpression(\n null,\n [],\n t.blockStatement([t.returnStatement(node.value)]),\n )\n : t.nullLiteral();\n\n node.value = t.callExpression(\n state.addHelper(\"initializerWarningHelper\"),\n [descriptor, t.thisExpression()],\n );\n\n WARNING_CALLS.add(node.value);\n\n acc.push(\n t.assignmentExpression(\n \"=\",\n t.cloneNode(descriptor),\n t.callExpression(state.addHelper(\"applyDecoratedDescriptor\"), [\n t.cloneNode(target),\n t.cloneNode(property),\n t.arrayExpression(\n decorators.map(dec => t.cloneNode(dec.expression)),\n ),\n t.objectExpression([\n t.objectProperty(\n t.identifier(\"configurable\"),\n t.booleanLiteral(true),\n ),\n t.objectProperty(\n t.identifier(\"enumerable\"),\n t.booleanLiteral(true),\n ),\n t.objectProperty(\n t.identifier(\"writable\"),\n t.booleanLiteral(true),\n ),\n t.objectProperty(t.identifier(\"initializer\"), initializer),\n ]),\n ]),\n ),\n );\n } else {\n acc.push(\n t.callExpression(state.addHelper(\"applyDecoratedDescriptor\"), [\n t.cloneNode(target),\n t.cloneNode(property),\n t.arrayExpression(decorators.map(dec => t.cloneNode(dec.expression))),\n t.isObjectProperty(node) || t.isClassProperty(node, { static: true })\n ? buildGetObjectInitializer({\n TEMP: path.scope.generateDeclaredUidIdentifier(\"init\"),\n TARGET: t.cloneNode(target),\n PROPERTY: t.cloneNode(property),\n }).expression\n : buildGetDescriptor({\n TARGET: t.cloneNode(target),\n PROPERTY: t.cloneNode(property),\n }).expression,\n t.cloneNode(target),\n ]),\n );\n }\n\n return acc;\n }, []);\n\n return t.sequenceExpression([\n t.assignmentExpression(\"=\", t.cloneNode(name), path.node),\n t.sequenceExpression(exprs),\n t.cloneNode(name),\n ]);\n}\n\nfunction decoratedClassToExpression({ node, scope }: NodePath<t.Class>) {\n if (!hasClassDecorators(node) && !hasMethodDecorators(node.body.body)) {\n return;\n }\n\n const ref = node.id\n ? t.cloneNode(node.id)\n : scope.generateUidIdentifier(\"class\");\n\n return t.variableDeclaration(\"let\", [\n t.variableDeclarator(ref, t.toExpression(node)),\n ]);\n}\n\nconst visitor: Visitor<PluginPass> = {\n ExportDefaultDeclaration(path) {\n const decl = path.get(\"declaration\");\n if (!decl.isClassDeclaration()) return;\n\n const replacement = decoratedClassToExpression(decl);\n if (replacement) {\n const [varDeclPath] = path.replaceWithMultiple([\n replacement,\n t.exportNamedDeclaration(null, [\n t.exportSpecifier(\n // @ts-expect-error todo(flow->ts) might be add more specific return type for decoratedClassToExpression\n t.cloneNode(replacement.declarations[0].id),\n t.identifier(\"default\"),\n ),\n ]),\n ]);\n\n if (!decl.node.id) {\n path.scope.registerDeclaration(varDeclPath);\n }\n }\n },\n ClassDeclaration(path) {\n const replacement = decoratedClassToExpression(path);\n if (replacement) {\n const [newPath] = path.replaceWith(replacement);\n\n const decl = newPath.get(\"declarations.0\");\n const id = decl.node.id as t.Identifier;\n\n // TODO: Maybe add this logic to @babel/traverse\n const binding = path.scope.getOwnBinding(id.name);\n binding.identifier = id;\n binding.path = decl;\n }\n },\n ClassExpression(path, state) {\n // Create a replacement for the class node if there is one. We do one pass to replace classes with\n // class decorators, and a second pass to process method decorators.\n const decoratedClass =\n applyEnsureOrdering(path) ||\n applyClassDecorators(path) ||\n applyMethodDecorators(path, state);\n\n if (decoratedClass) path.replaceWith(decoratedClass);\n },\n ObjectExpression(path, state) {\n const decoratedObject =\n applyEnsureOrdering(path) || applyObjectDecorators(path, state);\n\n if (decoratedObject) path.replaceWith(decoratedObject);\n },\n\n AssignmentExpression(path, state) {\n if (!WARNING_CALLS.has(path.node.right)) return;\n\n path.replaceWith(\n t.callExpression(state.addHelper(\"initializerDefineProperty\"), [\n // @ts-expect-error todo(flow->ts) typesafe NodePath.get\n t.cloneNode(path.get(\"left.object\").node),\n t.stringLiteral(\n // @ts-expect-error todo(flow->ts) typesafe NodePath.get\n path.get(\"left.property\").node.name ||\n // @ts-expect-error todo(flow->ts) typesafe NodePath.get\n path.get(\"left.property\").node.value,\n ),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"right.arguments\")[0].node),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"right.arguments\")[1].node),\n ]),\n );\n },\n\n CallExpression(path, state) {\n if (path.node.arguments.length !== 3) return;\n if (!WARNING_CALLS.has(path.node.arguments[2])) return;\n\n // If the class properties plugin isn't enabled, this line will add an unused helper\n // to the code. It's not ideal, but it's ok since the configuration is not valid anyway.\n // @ts-expect-error todo(flow->ts) check that `callee` is Identifier\n if (path.node.callee.name !== state.addHelper(\"defineProperty\").name) {\n return;\n }\n\n path.replaceWith(\n t.callExpression(state.addHelper(\"initializerDefineProperty\"), [\n t.cloneNode(path.get(\"arguments\")[0].node),\n t.cloneNode(path.get(\"arguments\")[1].node),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"arguments.2.arguments\")[0].node),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"arguments.2.arguments\")[1].node),\n ]),\n );\n },\n};\n\nexport default visitor;\n"],"mappings":"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"}
1
+ {"version":3,"names":["buildClassDecorator","template","statement","buildClassPrototype","buildGetDescriptor","buildGetObjectInitializer","WARNING_CALLS","WeakSet","applyEnsureOrdering","path","decorators","isClass","get","reduce","acc","prop","concat","node","identDecorators","filter","decorator","t","isIdentifier","expression","length","sequenceExpression","map","id","scope","generateDeclaredUidIdentifier","assignmentExpression","applyClassDecorators","classPath","hasClassDecorators","name","dec","reverse","CLASS_REF","cloneNode","DECORATOR","INNER","classNode","applyMethodDecorators","state","hasMethodDecorators","body","applyTargetDecorators","some","applyObjectDecorators","properties","type","decoratedProps","exprs","computed","buildCodeFrameError","property","isLiteral","key","stringLiteral","target","static","isClassProperty","descriptor","initializer","value","functionExpression","blockStatement","returnStatement","nullLiteral","callExpression","addHelper","thisExpression","add","push","arrayExpression","objectExpression","objectProperty","identifier","booleanLiteral","isObjectProperty","TEMP","TARGET","PROPERTY","decoratedClassToExpression","ref","generateUidIdentifier","variableDeclaration","variableDeclarator","toExpression","visitor","ExportDefaultDeclaration","decl","isClassDeclaration","replacement","varDeclPath","replaceWithMultiple","exportNamedDeclaration","exportSpecifier","declarations","registerDeclaration","ClassDeclaration","newPath","replaceWith","binding","getOwnBinding","ClassExpression","decoratedClass","ObjectExpression","decoratedObject","AssignmentExpression","has","right","CallExpression","arguments","callee"],"sources":["../src/transformer-legacy.ts"],"sourcesContent":["// Fork of https://github.com/loganfsmyth/babel-plugin-proposal-decorators-legacy\n\nimport { template, types as t, type PluginPass } from \"@babel/core\";\nimport type { NodePath, Visitor } from \"@babel/traverse\";\n\nconst buildClassDecorator = template.statement(`\n DECORATOR(CLASS_REF = INNER) || CLASS_REF;\n`) as (replacements: {\n DECORATOR: t.Expression;\n CLASS_REF: t.Identifier;\n INNER: t.Expression;\n}) => t.ExpressionStatement;\n\nconst buildClassPrototype = template(`\n CLASS_REF.prototype;\n`) as (replacements: { CLASS_REF: t.Identifier }) => t.ExpressionStatement;\n\nconst buildGetDescriptor = template(`\n Object.getOwnPropertyDescriptor(TARGET, PROPERTY);\n`) as (replacements: {\n TARGET: t.Expression;\n PROPERTY: t.Literal;\n}) => t.ExpressionStatement;\n\nconst buildGetObjectInitializer = template(`\n (TEMP = Object.getOwnPropertyDescriptor(TARGET, PROPERTY), (TEMP = TEMP ? TEMP.value : undefined), {\n enumerable: true,\n configurable: true,\n writable: true,\n initializer: function(){\n return TEMP;\n }\n })\n`) as (replacements: {\n TEMP: t.Identifier;\n TARGET: t.Expression;\n PROPERTY: t.Literal;\n}) => t.ExpressionStatement;\n\nconst WARNING_CALLS = new WeakSet();\n\n// legacy decorator does not support ClassAccessorProperty\ntype ClassDecoratableElement =\n | t.ClassMethod\n | t.ClassPrivateMethod\n | t.ClassProperty\n | t.ClassPrivateProperty;\n\n/**\n * If the decorator expressions are non-identifiers, hoist them to before the class so we can be sure\n * that they are evaluated in order.\n */\nfunction applyEnsureOrdering(\n path: NodePath<t.ClassExpression | t.ObjectExpression>,\n) {\n // TODO: This should probably also hoist computed properties.\n const decorators: t.Decorator[] = (\n path.isClass()\n ? [\n path,\n ...(path.get(\"body.body\") as NodePath<ClassDecoratableElement>[]),\n ]\n : path.get(\"properties\")\n ).reduce(\n (\n acc: t.Decorator[],\n prop: NodePath<\n t.ObjectMember | t.ClassExpression | ClassDecoratableElement\n >,\n ) => acc.concat(prop.node.decorators || []),\n [],\n );\n\n const identDecorators = decorators.filter(\n decorator => !t.isIdentifier(decorator.expression),\n );\n if (identDecorators.length === 0) return;\n\n return t.sequenceExpression(\n identDecorators\n .map((decorator): t.Expression => {\n const expression = decorator.expression;\n const id = (decorator.expression =\n path.scope.generateDeclaredUidIdentifier(\"dec\"));\n return t.assignmentExpression(\"=\", id, expression);\n })\n .concat([path.node]),\n );\n}\n\n/**\n * Given a class expression with class-level decorators, create a new expression\n * with the proper decorated behavior.\n */\nfunction applyClassDecorators(classPath: NodePath<t.ClassExpression>) {\n if (!hasClassDecorators(classPath.node)) return;\n\n const decorators = classPath.node.decorators || [];\n classPath.node.decorators = null;\n\n const name = classPath.scope.generateDeclaredUidIdentifier(\"class\");\n\n return decorators\n .map(dec => dec.expression)\n .reverse()\n .reduce(function (acc, decorator) {\n return buildClassDecorator({\n CLASS_REF: t.cloneNode(name),\n DECORATOR: t.cloneNode(decorator),\n INNER: acc,\n }).expression;\n }, classPath.node);\n}\n\nfunction hasClassDecorators(classNode: t.Class) {\n return !!(classNode.decorators && classNode.decorators.length);\n}\n\n/**\n * Given a class expression with method-level decorators, create a new expression\n * with the proper decorated behavior.\n */\nfunction applyMethodDecorators(\n path: NodePath<t.ClassExpression>,\n state: PluginPass,\n) {\n if (!hasMethodDecorators(path.node.body.body)) return;\n\n return applyTargetDecorators(\n path,\n state,\n // @ts-expect-error ClassAccessorProperty is not supported in legacy decorator\n path.node.body.body,\n );\n}\n\nfunction hasMethodDecorators(\n body: t.ClassBody[\"body\"] | t.ObjectExpression[\"properties\"],\n) {\n return body.some(\n node =>\n // @ts-expect-error decorators not in SpreadElement/StaticBlock\n node.decorators?.length,\n );\n}\n\n/**\n * Given an object expression with property decorators, create a new expression\n * with the proper decorated behavior.\n */\nfunction applyObjectDecorators(\n path: NodePath<t.ObjectExpression>,\n state: PluginPass,\n) {\n if (!hasMethodDecorators(path.node.properties)) return;\n\n return applyTargetDecorators(\n path,\n state,\n path.node.properties.filter(\n (prop): prop is t.ObjectMember => prop.type !== \"SpreadElement\",\n ),\n );\n}\n\n/**\n * A helper to pull out property decorators into a sequence expression.\n */\nfunction applyTargetDecorators(\n path: NodePath<t.ClassExpression | t.ObjectExpression>,\n state: PluginPass,\n decoratedProps: (t.ObjectMember | ClassDecoratableElement)[],\n) {\n const name = path.scope.generateDeclaredUidIdentifier(\n path.isClass() ? \"class\" : \"obj\",\n );\n\n const exprs = decoratedProps.reduce(function (acc, node) {\n let decorators: t.Decorator[] = [];\n if (node.decorators != null) {\n decorators = node.decorators;\n node.decorators = null;\n }\n\n if (decorators.length === 0) return acc;\n\n if (\n // @ts-expect-error computed is not in ClassPrivateProperty\n node.computed\n ) {\n throw path.buildCodeFrameError(\n \"Computed method/property decorators are not yet supported.\",\n );\n }\n\n const property: t.Literal = t.isLiteral(node.key)\n ? node.key\n : t.stringLiteral(\n // @ts-expect-error: should we handle ClassPrivateProperty?\n node.key.name,\n );\n\n const target =\n path.isClass() && !(node as ClassDecoratableElement).static\n ? buildClassPrototype({\n CLASS_REF: name,\n }).expression\n : name;\n\n if (t.isClassProperty(node, { static: false })) {\n const descriptor = path.scope.generateDeclaredUidIdentifier(\"descriptor\");\n\n const initializer = node.value\n ? t.functionExpression(\n null,\n [],\n t.blockStatement([t.returnStatement(node.value)]),\n )\n : t.nullLiteral();\n\n node.value = t.callExpression(\n state.addHelper(\"initializerWarningHelper\"),\n [descriptor, t.thisExpression()],\n );\n\n WARNING_CALLS.add(node.value);\n\n acc.push(\n t.assignmentExpression(\n \"=\",\n t.cloneNode(descriptor),\n t.callExpression(state.addHelper(\"applyDecoratedDescriptor\"), [\n t.cloneNode(target),\n t.cloneNode(property),\n t.arrayExpression(\n decorators.map(dec => t.cloneNode(dec.expression)),\n ),\n t.objectExpression([\n t.objectProperty(\n t.identifier(\"configurable\"),\n t.booleanLiteral(true),\n ),\n t.objectProperty(\n t.identifier(\"enumerable\"),\n t.booleanLiteral(true),\n ),\n t.objectProperty(\n t.identifier(\"writable\"),\n t.booleanLiteral(true),\n ),\n t.objectProperty(t.identifier(\"initializer\"), initializer),\n ]),\n ]),\n ),\n );\n } else {\n acc.push(\n t.callExpression(state.addHelper(\"applyDecoratedDescriptor\"), [\n t.cloneNode(target),\n t.cloneNode(property),\n t.arrayExpression(decorators.map(dec => t.cloneNode(dec.expression))),\n t.isObjectProperty(node) || t.isClassProperty(node, { static: true })\n ? buildGetObjectInitializer({\n TEMP: path.scope.generateDeclaredUidIdentifier(\"init\"),\n TARGET: t.cloneNode(target),\n PROPERTY: t.cloneNode(property),\n }).expression\n : buildGetDescriptor({\n TARGET: t.cloneNode(target),\n PROPERTY: t.cloneNode(property),\n }).expression,\n t.cloneNode(target),\n ]),\n );\n }\n\n return acc;\n }, []);\n\n return t.sequenceExpression([\n t.assignmentExpression(\"=\", t.cloneNode(name), path.node),\n t.sequenceExpression(exprs),\n t.cloneNode(name),\n ]);\n}\n\nfunction decoratedClassToExpression({ node, scope }: NodePath<t.Class>) {\n if (!hasClassDecorators(node) && !hasMethodDecorators(node.body.body)) {\n return;\n }\n\n const ref = node.id\n ? t.cloneNode(node.id)\n : scope.generateUidIdentifier(\"class\");\n\n return t.variableDeclaration(\"let\", [\n t.variableDeclarator(ref, t.toExpression(node)),\n ]);\n}\n\nconst visitor: Visitor<PluginPass> = {\n ExportDefaultDeclaration(path) {\n const decl = path.get(\"declaration\");\n if (!decl.isClassDeclaration()) return;\n\n const replacement = decoratedClassToExpression(decl);\n if (replacement) {\n const [varDeclPath] = path.replaceWithMultiple([\n replacement,\n t.exportNamedDeclaration(null, [\n t.exportSpecifier(\n // @ts-expect-error todo(flow->ts) might be add more specific return type for decoratedClassToExpression\n t.cloneNode(replacement.declarations[0].id),\n t.identifier(\"default\"),\n ),\n ]),\n ]);\n\n if (!decl.node.id) {\n path.scope.registerDeclaration(varDeclPath);\n }\n }\n },\n ClassDeclaration(path) {\n const replacement = decoratedClassToExpression(path);\n if (replacement) {\n const [newPath] = path.replaceWith(replacement);\n\n const decl = newPath.get(\"declarations.0\");\n const id = decl.node.id as t.Identifier;\n\n // TODO: Maybe add this logic to @babel/traverse\n const binding = path.scope.getOwnBinding(id.name);\n binding.identifier = id;\n binding.path = decl;\n }\n },\n ClassExpression(path, state) {\n // Create a replacement for the class node if there is one. We do one pass to replace classes with\n // class decorators, and a second pass to process method decorators.\n const decoratedClass =\n applyEnsureOrdering(path) ||\n applyClassDecorators(path) ||\n applyMethodDecorators(path, state);\n\n if (decoratedClass) path.replaceWith(decoratedClass);\n },\n ObjectExpression(path, state) {\n const decoratedObject =\n applyEnsureOrdering(path) || applyObjectDecorators(path, state);\n\n if (decoratedObject) path.replaceWith(decoratedObject);\n },\n\n AssignmentExpression(path, state) {\n if (!WARNING_CALLS.has(path.node.right)) return;\n\n path.replaceWith(\n t.callExpression(state.addHelper(\"initializerDefineProperty\"), [\n // @ts-expect-error todo(flow->ts) typesafe NodePath.get\n t.cloneNode(path.get(\"left.object\").node),\n t.stringLiteral(\n // @ts-expect-error todo(flow->ts) typesafe NodePath.get\n path.get(\"left.property\").node.name ||\n // @ts-expect-error todo(flow->ts) typesafe NodePath.get\n path.get(\"left.property\").node.value,\n ),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"right.arguments\")[0].node),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"right.arguments\")[1].node),\n ]),\n );\n },\n\n CallExpression(path, state) {\n if (path.node.arguments.length !== 3) return;\n if (!WARNING_CALLS.has(path.node.arguments[2])) return;\n\n // If the class properties plugin isn't enabled, this line will add an unused helper\n // to the code. It's not ideal, but it's ok since the configuration is not valid anyway.\n // @ts-expect-error todo(flow->ts) check that `callee` is Identifier\n if (path.node.callee.name !== state.addHelper(\"defineProperty\").name) {\n return;\n }\n\n path.replaceWith(\n t.callExpression(state.addHelper(\"initializerDefineProperty\"), [\n t.cloneNode(path.get(\"arguments\")[0].node),\n t.cloneNode(path.get(\"arguments\")[1].node),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"arguments.2.arguments\")[0].node),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"arguments.2.arguments\")[1].node),\n ]),\n );\n },\n};\n\nexport default visitor;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@babel/plugin-proposal-decorators",
3
- "version": "7.20.0",
3
+ "version": "7.20.5",
4
4
  "author": "The Babel Team (https://babel.dev/team)",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -20,8 +20,8 @@
20
20
  "decorators"
21
21
  ],
22
22
  "dependencies": {
23
- "@babel/helper-create-class-features-plugin": "^7.19.0",
24
- "@babel/helper-plugin-utils": "^7.19.0",
23
+ "@babel/helper-create-class-features-plugin": "^7.20.5",
24
+ "@babel/helper-plugin-utils": "^7.20.2",
25
25
  "@babel/helper-replace-supers": "^7.19.1",
26
26
  "@babel/helper-split-export-declaration": "^7.18.6",
27
27
  "@babel/plugin-syntax-decorators": "^7.19.0"
@@ -30,9 +30,9 @@
30
30
  "@babel/core": "^7.0.0-0"
31
31
  },
32
32
  "devDependencies": {
33
- "@babel/core": "^7.19.6",
33
+ "@babel/core": "^7.20.5",
34
34
  "@babel/helper-plugin-test-runner": "^7.18.6",
35
- "@babel/traverse": "^7.20.0",
35
+ "@babel/traverse": "^7.20.5",
36
36
  "@types/charcodes": "^0.2.0",
37
37
  "array.prototype.concat": "^1.0.2",
38
38
  "babel-plugin-polyfill-es-shims": "^0.7.1",