@babel/plugin-proposal-decorators 8.0.0-alpha.1 → 8.0.0-alpha.3
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 +16 -3
- package/lib/index.js.map +1 -1
- package/package.json +10 -10
- package/lib/transformer-2023-05.js +0 -631
- package/lib/transformer-2023-05.js.map +0 -1
- package/lib/transformer-legacy.js +0 -155
- package/lib/transformer-legacy.js.map +0 -1
package/lib/index.js
CHANGED
|
@@ -709,23 +709,36 @@ function transformClass(path, state, constantSuper, version) {
|
|
|
709
709
|
if (!classInitInjected && classInitCall) {
|
|
710
710
|
path.node.body.body.push(types.staticBlock([types.expressionStatement(classInitCall)]));
|
|
711
711
|
}
|
|
712
|
-
|
|
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)));
|
|
713
723
|
path.insertBefore(assignments.map(expr => types.expressionStatement(expr)));
|
|
714
724
|
path.scope.crawl();
|
|
715
725
|
return path;
|
|
716
726
|
}
|
|
717
|
-
function createLocalsAssignment(elementLocals, classLocals, elementDecorations, classDecorations, classDecorationsFlag, maybePrivateBranName, state, version) {
|
|
727
|
+
function createLocalsAssignment(elementLocals, classLocals, elementDecorations, classDecorations, classDecorationsFlag, maybePrivateBranName, superClass, state, version) {
|
|
718
728
|
let lhs, rhs;
|
|
719
729
|
const args = [types.thisExpression(), elementDecorations, classDecorations];
|
|
720
730
|
{
|
|
721
|
-
if (maybePrivateBranName || classDecorationsFlag.value !== 0) {
|
|
731
|
+
if (maybePrivateBranName || superClass || classDecorationsFlag.value !== 0) {
|
|
722
732
|
args.push(classDecorationsFlag);
|
|
723
733
|
}
|
|
724
734
|
if (maybePrivateBranName) {
|
|
725
735
|
args.push(template.expression.ast`
|
|
726
736
|
_ => ${types.cloneNode(maybePrivateBranName)} in _
|
|
727
737
|
`);
|
|
738
|
+
} else if (superClass) {
|
|
739
|
+
args.push(types.unaryExpression("void", types.numericLiteral(0)));
|
|
728
740
|
}
|
|
741
|
+
if (superClass) args.push(superClass);
|
|
729
742
|
rhs = types.callExpression(state.addHelper("applyDecs2305"), args);
|
|
730
743
|
}
|
|
731
744
|
if (elementLocals.length > 0) {
|
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\";\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 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 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 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 (maybePrivateBranName || classDecorationsFlag.value !== 0) {\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 }\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\";\nimport transformer2023_05 from \"./transformer-2023-05\";\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","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/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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"}
|
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.3",
|
|
4
4
|
"author": "The Babel Team (https://babel.dev/team)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -20,19 +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/helper-replace-supers": "^8.0.0-alpha.
|
|
26
|
-
"@babel/helper-split-export-declaration": "^8.0.0-alpha.
|
|
27
|
-
"@babel/plugin-syntax-decorators": "^8.0.0-alpha.
|
|
23
|
+
"@babel/helper-create-class-features-plugin": "^8.0.0-alpha.3",
|
|
24
|
+
"@babel/helper-plugin-utils": "^8.0.0-alpha.3",
|
|
25
|
+
"@babel/helper-replace-supers": "^8.0.0-alpha.3",
|
|
26
|
+
"@babel/helper-split-export-declaration": "^8.0.0-alpha.3",
|
|
27
|
+
"@babel/plugin-syntax-decorators": "^8.0.0-alpha.3"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"@babel/core": "^8.0.0-alpha.
|
|
30
|
+
"@babel/core": "^8.0.0-alpha.3"
|
|
31
31
|
},
|
|
32
32
|
"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.
|
|
33
|
+
"@babel/core": "^8.0.0-alpha.3",
|
|
34
|
+
"@babel/helper-plugin-test-runner": "^8.0.0-alpha.3",
|
|
35
|
+
"@babel/traverse": "^8.0.0-alpha.3",
|
|
36
36
|
"@types/charcodes": "^0.2.0",
|
|
37
37
|
"array.prototype.concat": "^1.0.2",
|
|
38
38
|
"babel-plugin-polyfill-es-shims": "^0.9.2",
|