@babel/plugin-proposal-decorators 8.0.0-alpha.4 → 8.0.0-alpha.6
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 +12 -636
- package/lib/index.js.map +1 -1
- package/package.json +9 -13
package/lib/index.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { declare } from '@babel/helper-plugin-utils';
|
|
2
2
|
import syntaxDecorators from '@babel/plugin-syntax-decorators';
|
|
3
|
-
import '@babel/helper-create-class-features-plugin';
|
|
3
|
+
import { createClassFeaturePlugin, FEATURES } from '@babel/helper-create-class-features-plugin';
|
|
4
4
|
import { template, types } from '@babel/core';
|
|
5
|
-
import ReplaceSupers from '@babel/helper-replace-supers';
|
|
6
|
-
import splitExportDeclaration from '@babel/helper-split-export-declaration';
|
|
7
5
|
|
|
8
6
|
const buildClassDecorator = template.statement(`
|
|
9
7
|
DECORATOR(CLASS_REF = INNER) || CLASS_REF;
|
|
@@ -157,637 +155,8 @@ const visitor = {
|
|
|
157
155
|
}
|
|
158
156
|
};
|
|
159
157
|
|
|
160
|
-
function incrementId(id, idx = id.length - 1) {
|
|
161
|
-
if (idx === -1) {
|
|
162
|
-
id.unshift(65);
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
const current = id[idx];
|
|
166
|
-
if (current === 90) {
|
|
167
|
-
id[idx] = 97;
|
|
168
|
-
} else if (current === 122) {
|
|
169
|
-
id[idx] = 65;
|
|
170
|
-
incrementId(id, idx - 1);
|
|
171
|
-
} else {
|
|
172
|
-
id[idx] = current + 1;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
function createPrivateUidGeneratorForClass(classPath) {
|
|
176
|
-
const currentPrivateId = [];
|
|
177
|
-
const privateNames = new Set();
|
|
178
|
-
classPath.traverse({
|
|
179
|
-
PrivateName(path) {
|
|
180
|
-
privateNames.add(path.node.id.name);
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
return () => {
|
|
184
|
-
let reifiedId;
|
|
185
|
-
do {
|
|
186
|
-
incrementId(currentPrivateId);
|
|
187
|
-
reifiedId = String.fromCharCode(...currentPrivateId);
|
|
188
|
-
} while (privateNames.has(reifiedId));
|
|
189
|
-
return types.privateName(types.identifier(reifiedId));
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
function createLazyPrivateUidGeneratorForClass(classPath) {
|
|
193
|
-
let generator;
|
|
194
|
-
return () => {
|
|
195
|
-
if (!generator) {
|
|
196
|
-
generator = createPrivateUidGeneratorForClass(classPath);
|
|
197
|
-
}
|
|
198
|
-
return generator();
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
function replaceClassWithVar(path) {
|
|
202
|
-
if (path.type === "ClassDeclaration") {
|
|
203
|
-
const varId = path.scope.generateUidIdentifierBasedOnNode(path.node.id);
|
|
204
|
-
const classId = types.identifier(path.node.id.name);
|
|
205
|
-
path.scope.rename(classId.name, varId.name);
|
|
206
|
-
path.insertBefore(types.variableDeclaration("let", [types.variableDeclarator(varId)]));
|
|
207
|
-
path.get("id").replaceWith(classId);
|
|
208
|
-
return [types.cloneNode(varId), path];
|
|
209
|
-
} else {
|
|
210
|
-
let className;
|
|
211
|
-
let varId;
|
|
212
|
-
if (path.node.id) {
|
|
213
|
-
className = path.node.id.name;
|
|
214
|
-
varId = path.scope.parent.generateDeclaredUidIdentifier(className);
|
|
215
|
-
path.scope.rename(className, varId.name);
|
|
216
|
-
} else if (path.parentPath.node.type === "VariableDeclarator" && path.parentPath.node.id.type === "Identifier") {
|
|
217
|
-
className = path.parentPath.node.id.name;
|
|
218
|
-
varId = path.scope.parent.generateDeclaredUidIdentifier(className);
|
|
219
|
-
} else {
|
|
220
|
-
varId = path.scope.parent.generateDeclaredUidIdentifier("decorated_class");
|
|
221
|
-
}
|
|
222
|
-
const newClassExpr = types.classExpression(className && types.identifier(className), path.node.superClass, path.node.body);
|
|
223
|
-
const [newPath] = path.replaceWith(types.sequenceExpression([newClassExpr, varId]));
|
|
224
|
-
return [types.cloneNode(varId), newPath.get("expressions.0")];
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
function generateClassProperty(key, value, isStatic) {
|
|
228
|
-
if (key.type === "PrivateName") {
|
|
229
|
-
return types.classPrivateProperty(key, value, undefined, isStatic);
|
|
230
|
-
} else {
|
|
231
|
-
return types.classProperty(key, value, undefined, undefined, isStatic);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
function addProxyAccessorsFor(className, element, originalKey, targetKey, version, isComputed = false) {
|
|
235
|
-
const {
|
|
236
|
-
static: isStatic
|
|
237
|
-
} = element.node;
|
|
238
|
-
const thisArg = version === "2023-05" && isStatic ? className : types.thisExpression();
|
|
239
|
-
const getterBody = types.blockStatement([types.returnStatement(types.memberExpression(types.cloneNode(thisArg), types.cloneNode(targetKey)))]);
|
|
240
|
-
const setterBody = types.blockStatement([types.expressionStatement(types.assignmentExpression("=", types.memberExpression(types.cloneNode(thisArg), types.cloneNode(targetKey)), types.identifier("v")))]);
|
|
241
|
-
let getter, setter;
|
|
242
|
-
if (originalKey.type === "PrivateName") {
|
|
243
|
-
getter = types.classPrivateMethod("get", types.cloneNode(originalKey), [], getterBody, isStatic);
|
|
244
|
-
setter = types.classPrivateMethod("set", types.cloneNode(originalKey), [types.identifier("v")], setterBody, isStatic);
|
|
245
|
-
} else {
|
|
246
|
-
getter = types.classMethod("get", types.cloneNode(originalKey), [], getterBody, isComputed, isStatic);
|
|
247
|
-
setter = types.classMethod("set", types.cloneNode(originalKey), [types.identifier("v")], setterBody, isComputed, isStatic);
|
|
248
|
-
}
|
|
249
|
-
element.insertAfter(setter);
|
|
250
|
-
element.insertAfter(getter);
|
|
251
|
-
}
|
|
252
|
-
function extractProxyAccessorsFor(targetKey, version) {
|
|
253
|
-
if (version !== "2023-05" && version !== "2023-01") {
|
|
254
|
-
return [template.expression.ast`
|
|
255
|
-
function () {
|
|
256
|
-
return this.${types.cloneNode(targetKey)};
|
|
257
|
-
}
|
|
258
|
-
`, template.expression.ast`
|
|
259
|
-
function (value) {
|
|
260
|
-
this.${types.cloneNode(targetKey)} = value;
|
|
261
|
-
}
|
|
262
|
-
`];
|
|
263
|
-
}
|
|
264
|
-
return [template.expression.ast`
|
|
265
|
-
o => o.${types.cloneNode(targetKey)}
|
|
266
|
-
`, template.expression.ast`
|
|
267
|
-
(o, v) => o.${types.cloneNode(targetKey)} = v
|
|
268
|
-
`];
|
|
269
|
-
}
|
|
270
|
-
const FIELD = 0;
|
|
271
|
-
const ACCESSOR = 1;
|
|
272
|
-
const METHOD = 2;
|
|
273
|
-
const GETTER = 3;
|
|
274
|
-
const SETTER = 4;
|
|
275
|
-
const STATIC_OLD_VERSION = 5;
|
|
276
|
-
const STATIC = 8;
|
|
277
|
-
const DECORATORS_HAVE_THIS = 16;
|
|
278
|
-
function getElementKind(element) {
|
|
279
|
-
switch (element.node.type) {
|
|
280
|
-
case "ClassProperty":
|
|
281
|
-
case "ClassPrivateProperty":
|
|
282
|
-
return FIELD;
|
|
283
|
-
case "ClassAccessorProperty":
|
|
284
|
-
return ACCESSOR;
|
|
285
|
-
case "ClassMethod":
|
|
286
|
-
case "ClassPrivateMethod":
|
|
287
|
-
if (element.node.kind === "get") {
|
|
288
|
-
return GETTER;
|
|
289
|
-
} else if (element.node.kind === "set") {
|
|
290
|
-
return SETTER;
|
|
291
|
-
} else {
|
|
292
|
-
return METHOD;
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
function isDecoratorInfo(info) {
|
|
297
|
-
return "decorators" in info;
|
|
298
|
-
}
|
|
299
|
-
function filteredOrderedDecoratorInfo(info) {
|
|
300
|
-
const filtered = info.filter(isDecoratorInfo);
|
|
301
|
-
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)];
|
|
302
|
-
}
|
|
303
|
-
function generateDecorationList(decorators, decoratorsThis, version) {
|
|
304
|
-
const decsCount = decorators.length;
|
|
305
|
-
const hasOneThis = decoratorsThis.some(Boolean);
|
|
306
|
-
const decs = [];
|
|
307
|
-
for (let i = 0; i < decsCount; i++) {
|
|
308
|
-
if (version === "2023-05" && hasOneThis) {
|
|
309
|
-
decs.push(decoratorsThis[i] || types.unaryExpression("void", types.numericLiteral(0)));
|
|
310
|
-
}
|
|
311
|
-
decs.push(decorators[i]);
|
|
312
|
-
}
|
|
313
|
-
return {
|
|
314
|
-
hasThis: hasOneThis,
|
|
315
|
-
decs
|
|
316
|
-
};
|
|
317
|
-
}
|
|
318
|
-
function generateDecorationExprs(info, version) {
|
|
319
|
-
return types.arrayExpression(filteredOrderedDecoratorInfo(info).map(el => {
|
|
320
|
-
const {
|
|
321
|
-
decs,
|
|
322
|
-
hasThis
|
|
323
|
-
} = generateDecorationList(el.decorators, el.decoratorsThis, version);
|
|
324
|
-
let flag = el.kind;
|
|
325
|
-
if (el.isStatic) {
|
|
326
|
-
flag += version === "2023-05" ? STATIC : STATIC_OLD_VERSION;
|
|
327
|
-
}
|
|
328
|
-
if (hasThis) flag += DECORATORS_HAVE_THIS;
|
|
329
|
-
return types.arrayExpression([decs.length === 1 ? decs[0] : types.arrayExpression(decs), types.numericLiteral(flag), el.name, ...(el.privateMethods || [])]);
|
|
330
|
-
}));
|
|
331
|
-
}
|
|
332
|
-
function extractElementLocalAssignments(decorationInfo) {
|
|
333
|
-
const localIds = [];
|
|
334
|
-
for (const el of filteredOrderedDecoratorInfo(decorationInfo)) {
|
|
335
|
-
const {
|
|
336
|
-
locals
|
|
337
|
-
} = el;
|
|
338
|
-
if (Array.isArray(locals)) {
|
|
339
|
-
localIds.push(...locals);
|
|
340
|
-
} else if (locals !== undefined) {
|
|
341
|
-
localIds.push(locals);
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
return localIds;
|
|
345
|
-
}
|
|
346
|
-
function addCallAccessorsFor(element, key, getId, setId) {
|
|
347
|
-
element.insertAfter(types.classPrivateMethod("get", types.cloneNode(key), [], types.blockStatement([types.returnStatement(types.callExpression(types.cloneNode(getId), [types.thisExpression()]))])));
|
|
348
|
-
element.insertAfter(types.classPrivateMethod("set", types.cloneNode(key), [types.identifier("v")], types.blockStatement([types.expressionStatement(types.callExpression(types.cloneNode(setId), [types.thisExpression(), types.identifier("v")]))])));
|
|
349
|
-
}
|
|
350
|
-
function isNotTsParameter(node) {
|
|
351
|
-
return node.type !== "TSParameterProperty";
|
|
352
|
-
}
|
|
353
|
-
function movePrivateAccessor(element, key, methodLocalVar, isStatic) {
|
|
354
|
-
let params;
|
|
355
|
-
let block;
|
|
356
|
-
if (element.node.kind === "set") {
|
|
357
|
-
params = [types.identifier("v")];
|
|
358
|
-
block = [types.expressionStatement(types.callExpression(methodLocalVar, [types.thisExpression(), types.identifier("v")]))];
|
|
359
|
-
} else {
|
|
360
|
-
params = [];
|
|
361
|
-
block = [types.returnStatement(types.callExpression(methodLocalVar, [types.thisExpression()]))];
|
|
362
|
-
}
|
|
363
|
-
element.replaceWith(types.classPrivateMethod(element.node.kind, types.cloneNode(key), params, types.blockStatement(block), isStatic));
|
|
364
|
-
}
|
|
365
|
-
function isClassDecoratableElementPath(path) {
|
|
366
|
-
const {
|
|
367
|
-
type
|
|
368
|
-
} = path;
|
|
369
|
-
return type !== "TSDeclareMethod" && type !== "TSIndexSignature" && type !== "StaticBlock";
|
|
370
|
-
}
|
|
371
|
-
function staticBlockToIIFE(block) {
|
|
372
|
-
return types.callExpression(types.arrowFunctionExpression([], types.blockStatement(block.body)), []);
|
|
373
|
-
}
|
|
374
|
-
function maybeSequenceExpression(exprs) {
|
|
375
|
-
if (exprs.length === 0) return types.unaryExpression("void", types.numericLiteral(0));
|
|
376
|
-
if (exprs.length === 1) return exprs[0];
|
|
377
|
-
return types.sequenceExpression(exprs);
|
|
378
|
-
}
|
|
379
|
-
function transformClass(path, state, constantSuper, version) {
|
|
380
|
-
const body = path.get("body.body");
|
|
381
|
-
const classDecorators = path.node.decorators;
|
|
382
|
-
let hasElementDecorators = false;
|
|
383
|
-
const generateClassPrivateUid = createLazyPrivateUidGeneratorForClass(path);
|
|
384
|
-
for (const element of body) {
|
|
385
|
-
if (!isClassDecoratableElementPath(element)) {
|
|
386
|
-
continue;
|
|
387
|
-
}
|
|
388
|
-
if (element.node.decorators && element.node.decorators.length > 0) {
|
|
389
|
-
hasElementDecorators = true;
|
|
390
|
-
} else if (element.node.type === "ClassAccessorProperty") {
|
|
391
|
-
const {
|
|
392
|
-
key,
|
|
393
|
-
value,
|
|
394
|
-
static: isStatic,
|
|
395
|
-
computed
|
|
396
|
-
} = element.node;
|
|
397
|
-
const newId = generateClassPrivateUid();
|
|
398
|
-
const valueNode = value ? types.cloneNode(value) : undefined;
|
|
399
|
-
const newField = generateClassProperty(newId, valueNode, isStatic);
|
|
400
|
-
const [newPath] = element.replaceWith(newField);
|
|
401
|
-
addProxyAccessorsFor(path.node.id, newPath, key, newId, version, computed);
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
if (!classDecorators && !hasElementDecorators) return;
|
|
405
|
-
const elementDecoratorInfo = [];
|
|
406
|
-
let firstFieldPath;
|
|
407
|
-
let constructorPath;
|
|
408
|
-
let requiresProtoInit = false;
|
|
409
|
-
let requiresStaticInit = false;
|
|
410
|
-
const decoratedPrivateMethods = new Set();
|
|
411
|
-
let protoInitLocal, staticInitLocal, classInitLocal, classIdLocal;
|
|
412
|
-
const assignments = [];
|
|
413
|
-
const scopeParent = path.scope.parent;
|
|
414
|
-
const memoiseExpression = (expression, hint) => {
|
|
415
|
-
const localEvaluatedId = scopeParent.generateDeclaredUidIdentifier(hint);
|
|
416
|
-
assignments.push(types.assignmentExpression("=", localEvaluatedId, expression));
|
|
417
|
-
return types.cloneNode(localEvaluatedId);
|
|
418
|
-
};
|
|
419
|
-
const decoratorsThis = new Map();
|
|
420
|
-
const maybeExtractDecorator = decorator => {
|
|
421
|
-
const {
|
|
422
|
-
expression
|
|
423
|
-
} = decorator;
|
|
424
|
-
if (version === "2023-05" && types.isMemberExpression(expression)) {
|
|
425
|
-
let object;
|
|
426
|
-
if (types.isSuper(expression.object) || types.isThisExpression(expression.object)) {
|
|
427
|
-
object = memoiseExpression(types.thisExpression(), "obj");
|
|
428
|
-
} else if (!scopeParent.isStatic(expression.object)) {
|
|
429
|
-
object = memoiseExpression(expression.object, "obj");
|
|
430
|
-
expression.object = object;
|
|
431
|
-
} else {
|
|
432
|
-
object = expression.object;
|
|
433
|
-
}
|
|
434
|
-
decoratorsThis.set(decorator, types.cloneNode(object));
|
|
435
|
-
}
|
|
436
|
-
if (!scopeParent.isStatic(expression)) {
|
|
437
|
-
decorator.expression = memoiseExpression(expression, "dec");
|
|
438
|
-
}
|
|
439
|
-
};
|
|
440
|
-
if (classDecorators) {
|
|
441
|
-
classInitLocal = scopeParent.generateDeclaredUidIdentifier("initClass");
|
|
442
|
-
const [classId, classPath] = replaceClassWithVar(path);
|
|
443
|
-
path = classPath;
|
|
444
|
-
classIdLocal = classId;
|
|
445
|
-
path.node.decorators = null;
|
|
446
|
-
for (const classDecorator of classDecorators) {
|
|
447
|
-
maybeExtractDecorator(classDecorator);
|
|
448
|
-
}
|
|
449
|
-
} else {
|
|
450
|
-
if (!path.node.id) {
|
|
451
|
-
path.node.id = path.scope.generateUidIdentifier("Class");
|
|
452
|
-
}
|
|
453
|
-
classIdLocal = types.cloneNode(path.node.id);
|
|
454
|
-
}
|
|
455
|
-
let lastInstancePrivateName;
|
|
456
|
-
let needsInstancePrivateBrandCheck = false;
|
|
457
|
-
if (hasElementDecorators) {
|
|
458
|
-
for (const element of body) {
|
|
459
|
-
if (!isClassDecoratableElementPath(element)) {
|
|
460
|
-
continue;
|
|
461
|
-
}
|
|
462
|
-
const {
|
|
463
|
-
node
|
|
464
|
-
} = element;
|
|
465
|
-
const decorators = element.get("decorators");
|
|
466
|
-
const hasDecorators = Array.isArray(decorators) && decorators.length > 0;
|
|
467
|
-
if (hasDecorators) {
|
|
468
|
-
for (const decoratorPath of decorators) {
|
|
469
|
-
maybeExtractDecorator(decoratorPath.node);
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
const isComputed = "computed" in element.node && element.node.computed === true;
|
|
473
|
-
if (isComputed) {
|
|
474
|
-
if (!scopeParent.isStatic(node.key)) {
|
|
475
|
-
node.key = memoiseExpression(node.key, "computedKey");
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
const kind = getElementKind(element);
|
|
479
|
-
const {
|
|
480
|
-
key
|
|
481
|
-
} = node;
|
|
482
|
-
const isPrivate = key.type === "PrivateName";
|
|
483
|
-
const isStatic = !!element.node.static;
|
|
484
|
-
let name = "computedKey";
|
|
485
|
-
if (isPrivate) {
|
|
486
|
-
name = key.id.name;
|
|
487
|
-
} else if (!isComputed && key.type === "Identifier") {
|
|
488
|
-
name = key.name;
|
|
489
|
-
}
|
|
490
|
-
if (isPrivate && !isStatic) {
|
|
491
|
-
if (hasDecorators) {
|
|
492
|
-
needsInstancePrivateBrandCheck = true;
|
|
493
|
-
}
|
|
494
|
-
if (types.isClassPrivateProperty(node) || !lastInstancePrivateName) {
|
|
495
|
-
lastInstancePrivateName = key;
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
if (element.isClassMethod({
|
|
499
|
-
kind: "constructor"
|
|
500
|
-
})) {
|
|
501
|
-
constructorPath = element;
|
|
502
|
-
}
|
|
503
|
-
if (hasDecorators) {
|
|
504
|
-
let locals;
|
|
505
|
-
let privateMethods;
|
|
506
|
-
if (kind === ACCESSOR) {
|
|
507
|
-
const {
|
|
508
|
-
value
|
|
509
|
-
} = element.node;
|
|
510
|
-
const params = [types.thisExpression()];
|
|
511
|
-
if (value) {
|
|
512
|
-
params.push(types.cloneNode(value));
|
|
513
|
-
}
|
|
514
|
-
const newId = generateClassPrivateUid();
|
|
515
|
-
const newFieldInitId = element.scope.parent.generateDeclaredUidIdentifier(`init_${name}`);
|
|
516
|
-
const newValue = types.callExpression(types.cloneNode(newFieldInitId), params);
|
|
517
|
-
const newField = generateClassProperty(newId, newValue, isStatic);
|
|
518
|
-
const [newPath] = element.replaceWith(newField);
|
|
519
|
-
if (isPrivate) {
|
|
520
|
-
privateMethods = extractProxyAccessorsFor(newId, version);
|
|
521
|
-
const getId = newPath.scope.parent.generateDeclaredUidIdentifier(`get_${name}`);
|
|
522
|
-
const setId = newPath.scope.parent.generateDeclaredUidIdentifier(`set_${name}`);
|
|
523
|
-
addCallAccessorsFor(newPath, key, getId, setId);
|
|
524
|
-
locals = [newFieldInitId, getId, setId];
|
|
525
|
-
} else {
|
|
526
|
-
addProxyAccessorsFor(path.node.id, newPath, key, newId, version, isComputed);
|
|
527
|
-
locals = newFieldInitId;
|
|
528
|
-
}
|
|
529
|
-
} else if (kind === FIELD) {
|
|
530
|
-
const initId = element.scope.parent.generateDeclaredUidIdentifier(`init_${name}`);
|
|
531
|
-
const valuePath = element.get("value");
|
|
532
|
-
valuePath.replaceWith(types.callExpression(types.cloneNode(initId), [types.thisExpression(), valuePath.node].filter(v => v)));
|
|
533
|
-
locals = initId;
|
|
534
|
-
if (isPrivate) {
|
|
535
|
-
privateMethods = extractProxyAccessorsFor(key, version);
|
|
536
|
-
}
|
|
537
|
-
} else if (isPrivate) {
|
|
538
|
-
locals = element.scope.parent.generateDeclaredUidIdentifier(`call_${name}`);
|
|
539
|
-
const replaceSupers = new ReplaceSupers({
|
|
540
|
-
constantSuper,
|
|
541
|
-
methodPath: element,
|
|
542
|
-
objectRef: classIdLocal,
|
|
543
|
-
superRef: path.node.superClass,
|
|
544
|
-
file: state.file,
|
|
545
|
-
refToPreserve: classIdLocal
|
|
546
|
-
});
|
|
547
|
-
replaceSupers.replace();
|
|
548
|
-
const {
|
|
549
|
-
params,
|
|
550
|
-
body,
|
|
551
|
-
async: isAsync
|
|
552
|
-
} = element.node;
|
|
553
|
-
privateMethods = [types.functionExpression(undefined, params.filter(isNotTsParameter), body, isAsync)];
|
|
554
|
-
if (kind === GETTER || kind === SETTER) {
|
|
555
|
-
movePrivateAccessor(element, types.cloneNode(key), types.cloneNode(locals), isStatic);
|
|
556
|
-
} else {
|
|
557
|
-
const node = element.node;
|
|
558
|
-
path.node.body.body.unshift(types.classPrivateProperty(key, types.cloneNode(locals), [], node.static));
|
|
559
|
-
decoratedPrivateMethods.add(key.id.name);
|
|
560
|
-
element.remove();
|
|
561
|
-
}
|
|
562
|
-
}
|
|
563
|
-
let nameExpr;
|
|
564
|
-
if (isComputed) {
|
|
565
|
-
nameExpr = types.cloneNode(key);
|
|
566
|
-
} else if (key.type === "PrivateName") {
|
|
567
|
-
nameExpr = types.stringLiteral(key.id.name);
|
|
568
|
-
} else if (key.type === "Identifier") {
|
|
569
|
-
nameExpr = types.stringLiteral(key.name);
|
|
570
|
-
} else {
|
|
571
|
-
nameExpr = types.cloneNode(key);
|
|
572
|
-
}
|
|
573
|
-
elementDecoratorInfo.push({
|
|
574
|
-
kind,
|
|
575
|
-
decorators: decorators.map(d => d.node.expression),
|
|
576
|
-
decoratorsThis: decorators.map(d => decoratorsThis.get(d.node)),
|
|
577
|
-
name: nameExpr,
|
|
578
|
-
isStatic,
|
|
579
|
-
privateMethods,
|
|
580
|
-
locals
|
|
581
|
-
});
|
|
582
|
-
if (kind !== FIELD) {
|
|
583
|
-
if (isStatic) {
|
|
584
|
-
requiresStaticInit = true;
|
|
585
|
-
} else {
|
|
586
|
-
requiresProtoInit = true;
|
|
587
|
-
}
|
|
588
|
-
}
|
|
589
|
-
if (element.node) {
|
|
590
|
-
element.node.decorators = null;
|
|
591
|
-
}
|
|
592
|
-
if (!firstFieldPath && !isStatic && (kind === FIELD || kind === ACCESSOR)) {
|
|
593
|
-
firstFieldPath = element;
|
|
594
|
-
}
|
|
595
|
-
}
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
const elementDecorations = generateDecorationExprs(elementDecoratorInfo, version);
|
|
599
|
-
let classDecorationsFlag = 0;
|
|
600
|
-
let classDecorations = [];
|
|
601
|
-
if (classDecorators) {
|
|
602
|
-
const {
|
|
603
|
-
hasThis,
|
|
604
|
-
decs
|
|
605
|
-
} = generateDecorationList(classDecorators.map(el => el.expression), classDecorators.map(dec => decoratorsThis.get(dec)), version);
|
|
606
|
-
classDecorationsFlag = hasThis ? 1 : 0;
|
|
607
|
-
classDecorations = decs;
|
|
608
|
-
}
|
|
609
|
-
const elementLocals = extractElementLocalAssignments(elementDecoratorInfo);
|
|
610
|
-
if (requiresProtoInit) {
|
|
611
|
-
protoInitLocal = scopeParent.generateDeclaredUidIdentifier("initProto");
|
|
612
|
-
elementLocals.push(protoInitLocal);
|
|
613
|
-
const protoInitCall = types.callExpression(types.cloneNode(protoInitLocal), [types.thisExpression()]);
|
|
614
|
-
if (firstFieldPath) {
|
|
615
|
-
const value = firstFieldPath.get("value");
|
|
616
|
-
const body = [protoInitCall];
|
|
617
|
-
if (value.node) {
|
|
618
|
-
body.push(value.node);
|
|
619
|
-
}
|
|
620
|
-
value.replaceWith(types.sequenceExpression(body));
|
|
621
|
-
} else if (constructorPath) {
|
|
622
|
-
if (path.node.superClass) {
|
|
623
|
-
path.traverse({
|
|
624
|
-
CallExpression: {
|
|
625
|
-
exit(path) {
|
|
626
|
-
if (!path.get("callee").isSuper()) return;
|
|
627
|
-
path.replaceWith(types.callExpression(types.cloneNode(protoInitLocal), [path.node]));
|
|
628
|
-
path.skip();
|
|
629
|
-
}
|
|
630
|
-
}
|
|
631
|
-
});
|
|
632
|
-
} else {
|
|
633
|
-
constructorPath.node.body.body.unshift(types.expressionStatement(protoInitCall));
|
|
634
|
-
}
|
|
635
|
-
} else {
|
|
636
|
-
const body = [types.expressionStatement(protoInitCall)];
|
|
637
|
-
if (path.node.superClass) {
|
|
638
|
-
body.unshift(types.expressionStatement(types.callExpression(types.super(), [types.spreadElement(types.identifier("args"))])));
|
|
639
|
-
}
|
|
640
|
-
path.node.body.body.unshift(types.classMethod("constructor", types.identifier("constructor"), [types.restElement(types.identifier("args"))], types.blockStatement(body)));
|
|
641
|
-
}
|
|
642
|
-
}
|
|
643
|
-
if (requiresStaticInit) {
|
|
644
|
-
staticInitLocal = scopeParent.generateDeclaredUidIdentifier("initStatic");
|
|
645
|
-
elementLocals.push(staticInitLocal);
|
|
646
|
-
}
|
|
647
|
-
if (decoratedPrivateMethods.size > 0) {
|
|
648
|
-
path.traverse({
|
|
649
|
-
PrivateName(path) {
|
|
650
|
-
if (!decoratedPrivateMethods.has(path.node.id.name)) return;
|
|
651
|
-
const parentPath = path.parentPath;
|
|
652
|
-
const parentParentPath = parentPath.parentPath;
|
|
653
|
-
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) {
|
|
654
|
-
throw path.buildCodeFrameError(`Decorated private methods are not updatable, but "#${path.node.id.name}" is updated via this expression.`);
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
|
-
});
|
|
658
|
-
}
|
|
659
|
-
const classLocals = [];
|
|
660
|
-
let classInitInjected = false;
|
|
661
|
-
const classInitCall = classInitLocal && types.callExpression(types.cloneNode(classInitLocal), []);
|
|
662
|
-
const originalClass = path.node;
|
|
663
|
-
if (classDecorators) {
|
|
664
|
-
classLocals.push(classIdLocal, classInitLocal);
|
|
665
|
-
const statics = [];
|
|
666
|
-
let staticBlocks = [];
|
|
667
|
-
path.get("body.body").forEach(element => {
|
|
668
|
-
if (element.isStaticBlock()) {
|
|
669
|
-
staticBlocks.push(element.node);
|
|
670
|
-
element.remove();
|
|
671
|
-
return;
|
|
672
|
-
}
|
|
673
|
-
const isProperty = element.isClassProperty() || element.isClassPrivateProperty();
|
|
674
|
-
if ((isProperty || element.isClassPrivateMethod()) && element.node.static) {
|
|
675
|
-
if (isProperty && staticBlocks.length > 0) {
|
|
676
|
-
const allValues = staticBlocks.map(staticBlockToIIFE);
|
|
677
|
-
if (element.node.value) allValues.push(element.node.value);
|
|
678
|
-
element.node.value = maybeSequenceExpression(allValues);
|
|
679
|
-
staticBlocks = [];
|
|
680
|
-
}
|
|
681
|
-
element.node.static = false;
|
|
682
|
-
statics.push(element.node);
|
|
683
|
-
element.remove();
|
|
684
|
-
}
|
|
685
|
-
});
|
|
686
|
-
if (statics.length > 0 || staticBlocks.length > 0) {
|
|
687
|
-
const staticsClass = template.expression.ast`
|
|
688
|
-
class extends ${state.addHelper("identity")} {}
|
|
689
|
-
`;
|
|
690
|
-
staticsClass.body.body = [types.staticBlock([types.toStatement(originalClass, true) || types.expressionStatement(originalClass)]), ...statics];
|
|
691
|
-
const constructorBody = [];
|
|
692
|
-
const newExpr = types.newExpression(staticsClass, []);
|
|
693
|
-
if (staticBlocks.length > 0) {
|
|
694
|
-
constructorBody.push(...staticBlocks.map(staticBlockToIIFE));
|
|
695
|
-
}
|
|
696
|
-
if (classInitCall) {
|
|
697
|
-
classInitInjected = true;
|
|
698
|
-
constructorBody.push(classInitCall);
|
|
699
|
-
}
|
|
700
|
-
if (constructorBody.length > 0) {
|
|
701
|
-
constructorBody.unshift(types.callExpression(types.super(), [types.cloneNode(classIdLocal)]));
|
|
702
|
-
staticsClass.body.body.push(types.classMethod("constructor", types.identifier("constructor"), [], types.blockStatement([types.expressionStatement(types.sequenceExpression(constructorBody))])));
|
|
703
|
-
} else {
|
|
704
|
-
newExpr.arguments.push(types.cloneNode(classIdLocal));
|
|
705
|
-
}
|
|
706
|
-
path.replaceWith(newExpr);
|
|
707
|
-
}
|
|
708
|
-
}
|
|
709
|
-
if (!classInitInjected && classInitCall) {
|
|
710
|
-
path.node.body.body.push(types.staticBlock([types.expressionStatement(classInitCall)]));
|
|
711
|
-
}
|
|
712
|
-
let {
|
|
713
|
-
superClass
|
|
714
|
-
} = originalClass;
|
|
715
|
-
if (superClass) {
|
|
716
|
-
const id = path.scope.maybeGenerateMemoised(superClass);
|
|
717
|
-
if (id) {
|
|
718
|
-
originalClass.superClass = types.assignmentExpression("=", id, superClass);
|
|
719
|
-
superClass = id;
|
|
720
|
-
}
|
|
721
|
-
}
|
|
722
|
-
originalClass.body.body.unshift(types.staticBlock([types.expressionStatement(createLocalsAssignment(elementLocals, classLocals, elementDecorations, types.arrayExpression(classDecorations), types.numericLiteral(classDecorationsFlag), needsInstancePrivateBrandCheck ? lastInstancePrivateName : null, types.cloneNode(superClass), state)), requiresStaticInit && types.expressionStatement(types.callExpression(types.cloneNode(staticInitLocal), [types.thisExpression()]))].filter(Boolean)));
|
|
723
|
-
path.insertBefore(assignments.map(expr => types.expressionStatement(expr)));
|
|
724
|
-
path.scope.crawl();
|
|
725
|
-
return path;
|
|
726
|
-
}
|
|
727
|
-
function createLocalsAssignment(elementLocals, classLocals, elementDecorations, classDecorations, classDecorationsFlag, maybePrivateBranName, superClass, state, version) {
|
|
728
|
-
let lhs, rhs;
|
|
729
|
-
const args = [types.thisExpression(), elementDecorations, classDecorations];
|
|
730
|
-
{
|
|
731
|
-
if (maybePrivateBranName || superClass || classDecorationsFlag.value !== 0) {
|
|
732
|
-
args.push(classDecorationsFlag);
|
|
733
|
-
}
|
|
734
|
-
if (maybePrivateBranName) {
|
|
735
|
-
args.push(template.expression.ast`
|
|
736
|
-
_ => ${types.cloneNode(maybePrivateBranName)} in _
|
|
737
|
-
`);
|
|
738
|
-
} else if (superClass) {
|
|
739
|
-
args.push(types.unaryExpression("void", types.numericLiteral(0)));
|
|
740
|
-
}
|
|
741
|
-
if (superClass) args.push(superClass);
|
|
742
|
-
rhs = types.callExpression(state.addHelper("applyDecs2305"), args);
|
|
743
|
-
}
|
|
744
|
-
if (elementLocals.length > 0) {
|
|
745
|
-
if (classLocals.length > 0) {
|
|
746
|
-
lhs = types.objectPattern([types.objectProperty(types.identifier("e"), types.arrayPattern(elementLocals)), types.objectProperty(types.identifier("c"), types.arrayPattern(classLocals))]);
|
|
747
|
-
} else {
|
|
748
|
-
lhs = types.arrayPattern(elementLocals);
|
|
749
|
-
rhs = types.memberExpression(rhs, types.identifier("e"), false, false);
|
|
750
|
-
}
|
|
751
|
-
} else {
|
|
752
|
-
lhs = types.arrayPattern(classLocals);
|
|
753
|
-
rhs = types.memberExpression(rhs, types.identifier("c"), false, false);
|
|
754
|
-
}
|
|
755
|
-
return types.assignmentExpression("=", lhs, rhs);
|
|
756
|
-
}
|
|
757
|
-
function transformer2023_05 ({
|
|
758
|
-
assertVersion,
|
|
759
|
-
assumption
|
|
760
|
-
}, {
|
|
761
|
-
loose
|
|
762
|
-
}, version) {
|
|
763
|
-
{
|
|
764
|
-
assertVersion("^7.21.0");
|
|
765
|
-
}
|
|
766
|
-
const VISITED = new WeakSet();
|
|
767
|
-
const constantSuper = assumption("constantSuper") ?? loose;
|
|
768
|
-
return {
|
|
769
|
-
name: "proposal-decorators",
|
|
770
|
-
inherits: syntaxDecorators,
|
|
771
|
-
visitor: {
|
|
772
|
-
"ExportNamedDeclaration|ExportDefaultDeclaration"(path) {
|
|
773
|
-
const {
|
|
774
|
-
declaration
|
|
775
|
-
} = path.node;
|
|
776
|
-
if (declaration?.type === "ClassDeclaration" && declaration.decorators?.length > 0) {
|
|
777
|
-
splitExportDeclaration(path);
|
|
778
|
-
}
|
|
779
|
-
},
|
|
780
|
-
Class(path, state) {
|
|
781
|
-
if (VISITED.has(path)) return;
|
|
782
|
-
const newPath = transformClass(path, state, constantSuper, version);
|
|
783
|
-
if (newPath) VISITED.add(newPath);
|
|
784
|
-
}
|
|
785
|
-
}
|
|
786
|
-
};
|
|
787
|
-
}
|
|
788
|
-
|
|
789
158
|
var index = declare((api, options) => {
|
|
790
|
-
api.assertVersion(
|
|
159
|
+
api.assertVersion("8.0.0-alpha.6");
|
|
791
160
|
const {
|
|
792
161
|
version
|
|
793
162
|
} = options;
|
|
@@ -797,10 +166,17 @@ var index = declare((api, options) => {
|
|
|
797
166
|
inherits: syntaxDecorators,
|
|
798
167
|
visitor: visitor
|
|
799
168
|
};
|
|
800
|
-
} else if (version === "2021-12" || version === "2022-03" || version === "2023-01" || version === "2023-05") {
|
|
801
|
-
|
|
169
|
+
} else if (!version || version === "2018-09" || version === "2021-12" || version === "2022-03" || version === "2023-01" || version === "2023-05") {
|
|
170
|
+
api.assertVersion("8.0.0-alpha.6");
|
|
171
|
+
return createClassFeaturePlugin({
|
|
172
|
+
name: "proposal-decorators",
|
|
173
|
+
api,
|
|
174
|
+
feature: FEATURES.decorators,
|
|
175
|
+
inherits: syntaxDecorators,
|
|
176
|
+
decoratorVersion: version
|
|
177
|
+
});
|
|
802
178
|
} else {
|
|
803
|
-
throw new Error("The '.version' option must be one of 'legacy', '
|
|
179
|
+
throw new Error("The '.version' option must be one of 'legacy', '2023-05', '2023-01', '2022-03', or '2021-12'.");
|
|
804
180
|
}
|
|
805
181
|
});
|
|
806
182
|
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/transformer-legacy.ts","../src/transformer-2023-05.ts","../src/index.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?.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","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.ts\";\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\ntype DecoratorVersionKind = \"2023-05\" | \"2023-01\" | \"2022-03\" | \"2021-12\";\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 className: t.Identifier,\n element: NodePath<ClassDecoratableElement>,\n originalKey: t.PrivateName | t.Expression,\n targetKey: t.PrivateName,\n version: DecoratorVersionKind,\n isComputed = false,\n): void {\n const { static: isStatic } = element.node;\n\n const thisArg =\n version === \"2023-05\" && isStatic ? className : t.thisExpression();\n\n const getterBody = t.blockStatement([\n t.returnStatement(\n t.memberExpression(t.cloneNode(thisArg), t.cloneNode(targetKey)),\n ),\n ]);\n\n const setterBody = t.blockStatement([\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.memberExpression(t.cloneNode(thisArg), 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 version: DecoratorVersionKind,\n): (t.FunctionExpression | t.ArrowFunctionExpression)[] {\n if (version !== \"2023-05\" && version !== \"2023-01\") {\n return [\n template.expression.ast`\n function () {\n return this.${t.cloneNode(targetKey)};\n }\n ` as t.FunctionExpression,\n template.expression.ast`\n function (value) {\n this.${t.cloneNode(targetKey)} = value;\n }\n ` as t.FunctionExpression,\n ];\n }\n return [\n template.expression.ast`\n o => o.${t.cloneNode(targetKey)}\n ` as t.ArrowFunctionExpression,\n template.expression.ast`\n (o, v) => o.${t.cloneNode(targetKey)} = v\n ` as t.ArrowFunctionExpression,\n ];\n}\n\n// 3 bits reserved to this (0-7)\nconst FIELD = 0;\nconst ACCESSOR = 1;\nconst METHOD = 2;\nconst GETTER = 3;\nconst SETTER = 4;\n\nconst STATIC_OLD_VERSION = 5; // Before 2023-05\nconst STATIC = 8; // 1 << 3\nconst DECORATORS_HAVE_THIS = 16; // 1 << 3\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 decoratorsThis: 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:\n | (t.FunctionExpression | t.ArrowFunctionExpression)[]\n | 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 generateDecorationList(\n decorators: t.Expression[],\n decoratorsThis: (t.Expression | null)[],\n version: DecoratorVersionKind,\n) {\n const decsCount = decorators.length;\n const hasOneThis = decoratorsThis.some(Boolean);\n const decs: t.Expression[] = [];\n for (let i = 0; i < decsCount; i++) {\n if (version === \"2023-05\" && hasOneThis) {\n decs.push(\n decoratorsThis[i] || t.unaryExpression(\"void\", t.numericLiteral(0)),\n );\n }\n decs.push(decorators[i]);\n }\n\n return { hasThis: hasOneThis, decs };\n}\n\nfunction generateDecorationExprs(\n info: (DecoratorInfo | ComputedPropInfo)[],\n version: DecoratorVersionKind,\n): t.ArrayExpression {\n return t.arrayExpression(\n filteredOrderedDecoratorInfo(info).map(el => {\n const { decs, hasThis } = generateDecorationList(\n el.decorators,\n el.decoratorsThis,\n version,\n );\n\n let flag = el.kind;\n if (el.isStatic) {\n flag += version === \"2023-05\" ? STATIC : STATIC_OLD_VERSION;\n }\n if (hasThis) flag += DECORATORS_HAVE_THIS;\n\n return t.arrayExpression([\n decs.length === 1 ? decs[0] : t.arrayExpression(decs),\n t.numericLiteral(flag),\n el.name,\n ...(el.privateMethods || []),\n ]);\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: DecoratorVersionKind,\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(\n path.node.id,\n newPath,\n key,\n newId,\n version,\n computed,\n );\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 classIdLocal: 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 const decoratorsThis = new Map<t.Decorator, t.Expression>();\n const maybeExtractDecorator = (decorator: t.Decorator) => {\n const { expression } = decorator;\n if (version === \"2023-05\" && t.isMemberExpression(expression)) {\n let object;\n if (\n t.isSuper(expression.object) ||\n t.isThisExpression(expression.object)\n ) {\n object = memoiseExpression(t.thisExpression(), \"obj\");\n } else if (!scopeParent.isStatic(expression.object)) {\n object = memoiseExpression(expression.object, \"obj\");\n expression.object = object;\n } else {\n object = expression.object;\n }\n decoratorsThis.set(decorator, t.cloneNode(object));\n }\n if (!scopeParent.isStatic(expression)) {\n decorator.expression = memoiseExpression(expression, \"dec\");\n }\n };\n\n if (classDecorators) {\n classInitLocal = scopeParent.generateDeclaredUidIdentifier(\"initClass\");\n\n const [classId, classPath] = replaceClassWithVar(path);\n path = classPath;\n classIdLocal = classId;\n\n path.node.decorators = null;\n\n for (const classDecorator of classDecorators) {\n maybeExtractDecorator(classDecorator);\n }\n } else {\n if (!path.node.id) {\n path.node.id = path.scope.generateUidIdentifier(\"Class\");\n }\n classIdLocal = t.cloneNode(path.node.id);\n }\n\n let lastInstancePrivateName: t.PrivateName;\n let needsInstancePrivateBrandCheck = false;\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 maybeExtractDecorator(decoratorPath.node);\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.id.name;\n } else if (!isComputed && key.type === \"Identifier\") {\n name = key.name;\n }\n\n if (isPrivate && !isStatic) {\n if (hasDecorators) {\n needsInstancePrivateBrandCheck = true;\n }\n if (t.isClassPrivateProperty(node) || !lastInstancePrivateName) {\n lastInstancePrivateName = key;\n }\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: Array<\n t.FunctionExpression | t.ArrowFunctionExpression\n >;\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, version);\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, getId, setId);\n\n locals = [newFieldInitId, getId, setId];\n } else {\n addProxyAccessorsFor(\n path.node.id,\n newPath,\n key,\n newId,\n version,\n isComputed,\n );\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, version);\n }\n } else if (isPrivate) {\n locals = element.scope.parent.generateDeclaredUidIdentifier(\n `call_${name}`,\n );\n\n const replaceSupers = new ReplaceSupers({\n constantSuper,\n methodPath: element as NodePath<t.ClassPrivateMethod>,\n objectRef: classIdLocal,\n superRef: path.node.superClass,\n file: state.file,\n refToPreserve: classIdLocal,\n });\n\n replaceSupers.replace();\n\n const {\n params,\n body,\n async: isAsync,\n } = element.node as t.ClassPrivateMethod;\n\n privateMethods = [\n t.functionExpression(\n undefined,\n params.filter(isNotTsParameter),\n body,\n isAsync,\n ),\n ];\n\n if (kind === GETTER || kind === SETTER) {\n movePrivateAccessor(\n element as NodePath<t.ClassPrivateMethod>,\n t.cloneNode(key),\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(key, t.cloneNode(locals), [], node.static),\n );\n\n decoratedPrivateMethods.add(key.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 decoratorsThis: decorators.map(d => decoratorsThis.get(d.node)),\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(\n elementDecoratorInfo,\n version,\n );\n let classDecorationsFlag = 0;\n let classDecorations: t.Expression[] = [];\n if (classDecorators) {\n const { hasThis, decs } = generateDecorationList(\n classDecorators.map(el => el.expression),\n classDecorators.map(dec => decoratorsThis.get(dec)),\n version,\n );\n classDecorationsFlag = hasThis ? 1 : 0;\n classDecorations = decs;\n }\n\n const elementLocals: t.Identifier[] =\n extractElementLocalAssignments(elementDecoratorInfo);\n\n if (requiresProtoInit) {\n protoInitLocal = scopeParent.generateDeclaredUidIdentifier(\"initProto\");\n elementLocals.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 elementLocals.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 const classLocals: t.Identifier[] = [];\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 classLocals.push(classIdLocal, 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(classIdLocal)]),\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(classIdLocal));\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 let { superClass } = originalClass;\n if (superClass && (process.env.BABEL_8_BREAKING || version === \"2023-05\")) {\n const id = path.scope.maybeGenerateMemoised(superClass);\n if (id) {\n originalClass.superClass = t.assignmentExpression(\"=\", id, superClass);\n superClass = id;\n }\n }\n\n originalClass.body.body.unshift(\n t.staticBlock(\n [\n t.expressionStatement(\n createLocalsAssignment(\n elementLocals,\n classLocals,\n elementDecorations,\n t.arrayExpression(classDecorations),\n t.numericLiteral(classDecorationsFlag),\n needsInstancePrivateBrandCheck ? lastInstancePrivateName : null,\n t.cloneNode(superClass),\n state,\n version,\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\nfunction createLocalsAssignment(\n elementLocals: t.Identifier[],\n classLocals: t.Identifier[],\n elementDecorations: t.ArrayExpression,\n classDecorations: t.ArrayExpression,\n classDecorationsFlag: t.NumericLiteral,\n maybePrivateBranName: t.PrivateName | null,\n superClass: null | t.Expression,\n state: PluginPass,\n version: DecoratorVersionKind,\n) {\n let lhs, rhs;\n const args: t.Expression[] = [\n t.thisExpression(),\n elementDecorations,\n classDecorations,\n ];\n\n if (!process.env.BABEL_8_BREAKING) {\n if (\n version === \"2021-12\" ||\n (version === \"2022-03\" && !state.availableHelper(\"applyDecs2203R\"))\n ) {\n const lhs = t.arrayPattern([...elementLocals, ...classLocals]);\n const rhs = t.callExpression(\n state.addHelper(version === \"2021-12\" ? \"applyDecs\" : \"applyDecs2203\"),\n args,\n );\n return t.assignmentExpression(\"=\", lhs, rhs);\n }\n }\n\n if (process.env.BABEL_8_BREAKING || version === \"2023-05\") {\n if (\n maybePrivateBranName ||\n superClass ||\n classDecorationsFlag.value !== 0\n ) {\n args.push(classDecorationsFlag);\n }\n if (maybePrivateBranName) {\n args.push(\n template.expression.ast`\n _ => ${t.cloneNode(maybePrivateBranName)} in _\n ` as t.ArrowFunctionExpression,\n );\n } else if (superClass) {\n args.push(t.unaryExpression(\"void\", t.numericLiteral(0)));\n }\n if (superClass) args.push(superClass);\n rhs = t.callExpression(state.addHelper(\"applyDecs2305\"), args);\n } else if (version === \"2023-01\") {\n if (maybePrivateBranName) {\n args.push(\n template.expression.ast`\n _ => ${t.cloneNode(maybePrivateBranName)} in _\n ` as t.ArrowFunctionExpression,\n );\n }\n rhs = t.callExpression(state.addHelper(\"applyDecs2301\"), args);\n } else {\n rhs = t.callExpression(state.addHelper(\"applyDecs2203R\"), args);\n }\n // optimize `{ c: [classLocals] } = applyapplyDecs2203R(...)` to\n // `[classLocals] = applyapplyDecs2203R(...).c`\n if (elementLocals.length > 0) {\n if (classLocals.length > 0) {\n lhs = t.objectPattern([\n t.objectProperty(t.identifier(\"e\"), t.arrayPattern(elementLocals)),\n t.objectProperty(t.identifier(\"c\"), t.arrayPattern(classLocals)),\n ]);\n } else {\n lhs = t.arrayPattern(elementLocals);\n rhs = t.memberExpression(rhs, t.identifier(\"e\"), false, false);\n }\n } else {\n // invariant: classLocals.length > 0\n lhs = t.arrayPattern(classLocals);\n rhs = t.memberExpression(rhs, t.identifier(\"c\"), false, false);\n }\n\n return t.assignmentExpression(\"=\", lhs, rhs);\n}\n\nexport default function (\n { assertVersion, assumption }: PluginAPI,\n { loose }: Options,\n // TODO(Babel 8): Only keep 2023-05\n version: \"2023-05\" | \"2023-01\" | \"2022-03\" | \"2021-12\",\n): PluginObject {\n if (process.env.BABEL_8_BREAKING) {\n assertVersion(\"^7.21.0\");\n } else {\n if (version === \"2023-05\" || version === \"2023-01\") {\n assertVersion(\"^7.21.0\");\n } else if (version === \"2021-12\") {\n assertVersion(\"^7.16.0\");\n } else {\n assertVersion(\"^7.19.0\");\n }\n }\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","/* 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.ts\";\nimport transformer2023_05 from \"./transformer-2023-05.ts\";\nimport type { Options as SyntaxOptions } from \"@babel/plugin-syntax-decorators\";\n\ninterface Options extends SyntaxOptions {\n /** @deprecated 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 (\n version === \"2021-12\" ||\n version === \"2022-03\" ||\n version === \"2023-01\" ||\n version === \"2023-05\"\n ) {\n return transformer2023_05(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', '2022-03', or '2023-01'.\",\n );\n }\n});\n"],"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","incrementId","idx","unshift","current","createPrivateUidGeneratorForClass","currentPrivateId","privateNames","Set","traverse","PrivateName","reifiedId","String","fromCharCode","privateName","createLazyPrivateUidGeneratorForClass","generator","replaceClassWithVar","varId","generateUidIdentifierBasedOnNode","classId","rename","insertBefore","className","parent","parentPath","newClassExpr","classExpression","superClass","generateClassProperty","isStatic","classPrivateProperty","undefined","classProperty","addProxyAccessorsFor","element","originalKey","targetKey","version","isComputed","thisArg","getterBody","memberExpression","setterBody","expressionStatement","getter","setter","classPrivateMethod","classMethod","insertAfter","extractProxyAccessorsFor","ast","FIELD","ACCESSOR","METHOD","GETTER","SETTER","STATIC_OLD_VERSION","STATIC","DECORATORS_HAVE_THIS","getElementKind","kind","isDecoratorInfo","info","filteredOrderedDecoratorInfo","filtered","el","generateDecorationList","decoratorsThis","decsCount","hasOneThis","Boolean","decs","i","unaryExpression","numericLiteral","hasThis","generateDecorationExprs","flag","privateMethods","extractElementLocalAssignments","decorationInfo","localIds","locals","Array","isArray","addCallAccessorsFor","getId","setId","isNotTsParameter","movePrivateAccessor","methodLocalVar","params","block","isClassDecoratableElementPath","staticBlockToIIFE","arrowFunctionExpression","maybeSequenceExpression","transformClass","constantSuper","classDecorators","hasElementDecorators","generateClassPrivateUid","newId","valueNode","newField","elementDecoratorInfo","firstFieldPath","constructorPath","requiresProtoInit","requiresStaticInit","decoratedPrivateMethods","protoInitLocal","staticInitLocal","classInitLocal","classIdLocal","assignments","scopeParent","memoiseExpression","hint","localEvaluatedId","Map","maybeExtractDecorator","isMemberExpression","object","isSuper","isThisExpression","set","classDecorator","lastInstancePrivateName","needsInstancePrivateBrandCheck","hasDecorators","decoratorPath","isPrivate","isClassPrivateProperty","isClassMethod","newFieldInitId","newValue","initId","valuePath","v","replaceSupers","ReplaceSupers","methodPath","objectRef","superRef","file","refToPreserve","replace","async","isAsync","remove","nameExpr","d","elementDecorations","classDecorationsFlag","classDecorations","elementLocals","protoInitCall","exit","skip","super","spreadElement","restElement","size","parentParentPath","left","classLocals","classInitInjected","classInitCall","originalClass","statics","staticBlocks","forEach","isStaticBlock","isProperty","isClassPrivateMethod","allValues","staticsClass","staticBlock","toStatement","constructorBody","newExpr","newExpression","maybeGenerateMemoised","createLocalsAssignment","expr","crawl","maybePrivateBranName","lhs","rhs","args","objectPattern","arrayPattern","assertVersion","assumption","loose","VISITED","inherits","syntaxDecorators","ExportNamedDeclaration|ExportDefaultDeclaration","declaration","splitExportDeclaration","Class","declare","api","options","legacyVisitor","transformer2023_05","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/transformer-legacy.ts","../src/index.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?.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","/* 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.ts\";\nimport type { Options as SyntaxOptions } from \"@babel/plugin-syntax-decorators\";\n\ninterface Options extends SyntaxOptions {\n /** @deprecated 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(\n process.env.BABEL_8_BREAKING && process.env.IS_PUBLISH\n ? PACKAGE_JSON.version\n : 7,\n );\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 (\n !version ||\n version === \"2018-09\" ||\n version === \"2021-12\" ||\n version === \"2022-03\" ||\n version === \"2023-01\" ||\n version === \"2023-05\"\n ) {\n api.assertVersion(\n process.env.BABEL_8_BREAKING && process.env.IS_PUBLISH\n ? PACKAGE_JSON.version\n : \"^7.0.2\",\n );\n return createClassFeaturePlugin({\n name: \"proposal-decorators\",\n\n api,\n feature: FEATURES.decorators,\n inherits: syntaxDecorators,\n // @ts-expect-error version must not be \"legacy\" here\n decoratorVersion: version,\n // loose: options.loose, Not supported\n });\n } else {\n throw new Error(\n \"The '.version' option must be one of 'legacy', '2023-05', '2023-01', '2022-03', or '2021-12'.\",\n );\n }\n});\n"],"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","declare","api","options","assertVersion","version","inherits","syntaxDecorators","legacyVisitor","createClassFeaturePlugin","feature","FEATURES","decoratorVersion","Error"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@babel/plugin-proposal-decorators",
|
|
3
|
-
"version": "8.0.0-alpha.
|
|
3
|
+
"version": "8.0.0-alpha.6",
|
|
4
4
|
"author": "The Babel Team (https://babel.dev/team)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -20,23 +20,19 @@
|
|
|
20
20
|
"decorators"
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@babel/helper-create-class-features-plugin": "^8.0.0-alpha.
|
|
24
|
-
"@babel/helper-plugin-utils": "^8.0.0-alpha.
|
|
25
|
-
"@babel/
|
|
26
|
-
"@babel/helper-split-export-declaration": "^8.0.0-alpha.4",
|
|
27
|
-
"@babel/plugin-syntax-decorators": "^8.0.0-alpha.4"
|
|
23
|
+
"@babel/helper-create-class-features-plugin": "^8.0.0-alpha.6",
|
|
24
|
+
"@babel/helper-plugin-utils": "^8.0.0-alpha.6",
|
|
25
|
+
"@babel/plugin-syntax-decorators": "^8.0.0-alpha.6"
|
|
28
26
|
},
|
|
29
27
|
"peerDependencies": {
|
|
30
|
-
"@babel/core": "^8.0.0-alpha.
|
|
28
|
+
"@babel/core": "^8.0.0-alpha.6"
|
|
31
29
|
},
|
|
32
30
|
"devDependencies": {
|
|
33
|
-
"@babel/core": "^8.0.0-alpha.
|
|
34
|
-
"@babel/helper-plugin-test-runner": "^8.0.0-alpha.
|
|
35
|
-
"@babel/traverse": "^8.0.0-alpha.
|
|
36
|
-
"@types/charcodes": "^0.2.0",
|
|
31
|
+
"@babel/core": "^8.0.0-alpha.6",
|
|
32
|
+
"@babel/helper-plugin-test-runner": "^8.0.0-alpha.6",
|
|
33
|
+
"@babel/traverse": "^8.0.0-alpha.6",
|
|
37
34
|
"array.prototype.concat": "^1.0.2",
|
|
38
|
-
"babel-plugin-polyfill-es-shims": "^0.10.
|
|
39
|
-
"charcodes": "^0.2.0",
|
|
35
|
+
"babel-plugin-polyfill-es-shims": "^0.10.2",
|
|
40
36
|
"object.getownpropertydescriptors": "^2.1.1"
|
|
41
37
|
},
|
|
42
38
|
"engines": {
|