{"version":3,"names":["_core","require","_helperReplaceSupers","_helperSplitExportDeclaration","_helperSkipTransparentExpressionWrappers","_fields","incrementId","id","idx","length","unshift","current","createPrivateUidGeneratorForClass","classPath","currentPrivateId","privateNames","Set","traverse","PrivateName","path","add","node","name","reifiedId","String","fromCharCode","has","t","privateName","identifier","createLazyPrivateUidGeneratorForClass","generator","replaceClassWithVar","className","type","varId","scope","generateUidIdentifierBasedOnNode","classId","rename","get","replaceWith","cloneNode","parent","generateDeclaredUidIdentifier","newClassExpr","classExpression","superClass","body","newPath","sequenceExpression","generateClassProperty","key","value","isStatic","classPrivateProperty","undefined","classProperty","addProxyAccessorsFor","element","originalKey","targetKey","version","isComputed","static","thisArg","thisExpression","getterBody","blockStatement","returnStatement","memberExpression","setterBody","expressionStatement","assignmentExpression","getter","setter","classPrivateMethod","classMethod","insertAfter","extractProxyAccessorsFor","template","expression","ast","prependExpressionsToFieldInitializer","expressions","fieldPath","initializer","push","unaryExpression","maybeSequenceExpression","prependExpressionsToConstructor","constructorPath","isProtoInitCallExpression","protoInitCall","isCallExpression","isIdentifier","callee","optimizeSuperCallAndExpressions","protoInitLocal","mergedSuperCall","callExpression","splice","isThisExpression","insertExpressionsAfterSuperCallAndOptimize","CallExpression","exit","isSuper","newNodes","map","expr","isCompletionRecord","skip","ClassMethod","kind","createConstructorFromExpressions","isDerivedClass","super","spreadElement","restElement","FIELD","ACCESSOR","METHOD","GETTER","SETTER","STATIC_OLD_VERSION","STATIC","DECORATORS_HAVE_THIS","getElementKind","isDecoratorInfo","info","filteredOrderedDecoratorInfo","filtered","filter","el","generateDecorationList","decorators","decoratorsThis","decsCount","hasOneThis","some","Boolean","decs","i","numericLiteral","hasThis","generateDecorationExprs","arrayExpression","flag","privateMethods","extractElementLocalAssignments","decorationInfo","localIds","locals","Array","isArray","addCallAccessorsFor","getId","setId","isNotTsParameter","movePrivateAccessor","methodLocalVar","params","block","isClassDecoratableElementPath","staticBlockToIIFE","arrowFunctionExpression","exprs","createSetFunctionNameCall","state","addHelper","createToPropertyKeyCall","propertyKey","checkPrivateMethodUpdateError","decoratedPrivateMethods","privateNameVisitor","privateNameVisitorFactory","privateNamesMap","parentPath","parentParentPath","left","buildCodeFrameError","Map","set","transformClass","constantSuper","propertyVisitor","classDecorators","hasElementDecorators","generateClassPrivateUid","assignments","scopeParent","memoiseExpression","hint","localEvaluatedId","staticInitLocal","isDecorated","ClassProperty","ClassPrivateProperty","ClassAccessorProperty","_staticInitLocal","_protoInitLocal","computed","newId","newField","keyPath","isConstantExpression","insertBefore","crawl","elementDecoratorInfo","classInitLocal","classIdLocal","maybeExtractDecorators","memoiseInPlace","needMemoise","decorator","isMemberExpression","object","needsDeclaraionForClassBinding","classDecorationsFlag","classDecorations","classDecorationsId","isClassDeclaration","dec","generateUidIdentifier","lastInstancePrivateName","needsInstancePrivateBrandCheck","fieldInitializerAssignments","hasDecorators","isPrivate","isClassPrivateProperty","isClassMethod","newFieldInitId","newValue","initId","valuePath","v","replaceSupers","ReplaceSupers","methodPath","objectRef","superRef","file","refToPreserve","replace","async","isAsync","functionExpression","remove","nameExpr","stringLiteral","d","elementDecorations","elementLocals","classLocals","classInitInjected","classInitCall","originalClass","statics","staticBlocks","forEach","isStaticBlock","isProperty","isClassProperty","isClassPrivateMethod","allValues","staticsClass","staticBlock","toStatement","constructorBody","newExpr","newExpression","arguments","maybeGenerateMemoised","createLocalsAssignment","variableDeclaration","variableDeclarator","size","maybePrivateBranName","setClassName","lhs","rhs","args","availableHelper","arrayPattern","objectPattern","objectProperty","isProtoKey","shouldTransformElement","shouldTransformClass","NamedEvaluationVisitoryFactory","isAnonymous","visitor","handleComputedProperty","propertyPath","keyValue","ref","VariableDeclarator","skipTransparentExprWrappers","AssignmentExpression","operator","AssignmentPattern","ObjectExpression","isDecoratedAnonymousClassExpression","isClassExpression","_default","assertVersion","assumption","loose","inherits","_assumption","VISITED","WeakSet","namedEvaluationVisitor","visitClass","_className","_node$id","Object","assign","ExportDefaultDeclaration","declaration","updatedVarDeclarationPath","splitExportDeclaration","ExportNamedDeclaration","Class"],"sources":["../src/decorators.ts"],"sourcesContent":["import type { NodePath, Scope, Visitor } from \"@babel/traverse\";\nimport { types as t, template } from \"@babel/core\";\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 { skipTransparentExprWrappers } from \"@babel/helper-skip-transparent-expression-wrappers\";\nimport {\n privateNameVisitorFactory,\n type PrivateNameVisitorState,\n} from \"./fields.ts\";\n\ninterface Options {\n /** @deprecated use `constantSuper` assumption instead. Only supported in 2021-12 version. */\n loose?: boolean;\n}\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,\n): () => t.PrivateName {\n const currentPrivateId: number[] = [];\n const privateNames = new Set();\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,\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 the desired class name if anonymous and\n * replaces it with an equivalent class declaration (path) which is then\n * assigned to a local variable (id). This allows us to reassign the local variable with the\n * decorated version of the class. The class definition retains its original\n * name so that `toString` is not affected, other references to the class\n * are renamed instead.\n */\nfunction replaceClassWithVar(\n path: NodePath,\n className: string | t.Identifier | t.StringLiteral | undefined,\n): {\n id: t.Identifier;\n path: NodePath;\n} {\n if (path.type === \"ClassDeclaration\") {\n const id = path.node.id;\n const className = id.name;\n const varId = path.scope.generateUidIdentifierBasedOnNode(id);\n const classId = t.identifier(className);\n\n path.scope.rename(className, varId.name);\n\n path.get(\"id\").replaceWith(classId);\n\n return { id: t.cloneNode(varId), path };\n } else {\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 {\n varId = path.scope.parent.generateDeclaredUidIdentifier(\n typeof className === \"string\" ? className : \"decorated_class\",\n );\n }\n\n const newClassExpr = t.classExpression(\n typeof className === \"string\" ? t.identifier(className) : null,\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 id: t.cloneNode(varId),\n path: newPath.get(\"expressions.0\") as NodePath,\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,\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/**\n * Prepend expressions to the field initializer. If the initializer is not defined,\n * this function will wrap the last expression within a `void` unary expression.\n *\n * @param {t.Expression[]} expressions\n * @param {(NodePath<\n * t.ClassProperty | t.ClassPrivateProperty | t.ClassAccessorProperty\n * >)} fieldPath\n */\nfunction prependExpressionsToFieldInitializer(\n expressions: t.Expression[],\n fieldPath: NodePath<\n t.ClassProperty | t.ClassPrivateProperty | t.ClassAccessorProperty\n >,\n) {\n const initializer = fieldPath.get(\"value\");\n if (initializer.node) {\n expressions.push(initializer.node);\n } else if (expressions.length > 0) {\n expressions[expressions.length - 1] = t.unaryExpression(\n \"void\",\n expressions[expressions.length - 1],\n );\n }\n initializer.replaceWith(maybeSequenceExpression(expressions));\n}\n\nfunction prependExpressionsToConstructor(\n expressions: t.Expression[],\n constructorPath: NodePath,\n) {\n constructorPath.node.body.body.unshift(\n t.expressionStatement(maybeSequenceExpression(expressions)),\n );\n}\n\nfunction isProtoInitCallExpression(\n expression: t.Expression,\n protoInitCall: t.Identifier,\n) {\n return (\n t.isCallExpression(expression) &&\n t.isIdentifier(expression.callee, { name: protoInitCall.name })\n );\n}\n\n/**\n * Optimize super call and its following expressions\n *\n * @param {t.Expression[]} expressions Mutated by this function. The first element must by a super call\n * @param {t.Identifier} protoInitLocal The generated protoInit id\n * @returns optimized expression\n */\nfunction optimizeSuperCallAndExpressions(\n expressions: t.Expression[],\n protoInitLocal: t.Identifier,\n) {\n // Merge `super(), protoInit(this)` into `protoInit(super())`\n if (\n expressions.length >= 2 &&\n isProtoInitCallExpression(expressions[1], protoInitLocal)\n ) {\n const mergedSuperCall = t.callExpression(t.cloneNode(protoInitLocal), [\n expressions[0],\n ]);\n expressions.splice(0, 2, mergedSuperCall);\n }\n // Merge `protoInit(super()), this` into `protoInit(super())`\n if (\n expressions.length >= 2 &&\n t.isThisExpression(expressions[expressions.length - 1]) &&\n isProtoInitCallExpression(\n expressions[expressions.length - 2],\n protoInitLocal,\n )\n ) {\n expressions.splice(expressions.length - 1, 1);\n }\n return maybeSequenceExpression(expressions);\n}\n\n/**\n * Insert expressions immediately after super() and optimize the output if possible.\n * This function will preserve the completion result using the trailing this expression.\n *\n * @param {t.Expression[]} expressions\n * @param {NodePath} constructorPath\n * @param {t.Identifier} protoInitLocal The generated protoInit id\n * @returns\n */\nfunction insertExpressionsAfterSuperCallAndOptimize(\n expressions: t.Expression[],\n constructorPath: NodePath,\n protoInitLocal: t.Identifier,\n) {\n constructorPath.traverse({\n CallExpression: {\n exit(path) {\n if (!path.get(\"callee\").isSuper()) return;\n const newNodes = [\n path.node,\n ...expressions.map(expr => t.cloneNode(expr)),\n ];\n // preserve completion result if super() is in an RHS or a return statement\n if (path.isCompletionRecord()) {\n newNodes.push(t.thisExpression());\n }\n path.replaceWith(\n optimizeSuperCallAndExpressions(newNodes, protoInitLocal),\n );\n\n path.skip();\n },\n },\n ClassMethod(path) {\n if (path.node.kind === \"constructor\") {\n path.skip();\n }\n },\n });\n}\n\n/**\n * Build a class constructor path from the given expressions. If the class is\n * derived, the constructor will call super() first to ensure that `this`\n * in the expressions work as expected.\n *\n * @param {t.Expression[]} expressions\n * @param {boolean} isDerivedClass\n * @returns The class constructor node\n */\nfunction createConstructorFromExpressions(\n expressions: t.Expression[],\n isDerivedClass: boolean,\n) {\n const body: t.Statement[] = [\n t.expressionStatement(maybeSequenceExpression(expressions)),\n ];\n if (isDerivedClass) {\n body.unshift(\n t.expressionStatement(\n t.callExpression(t.super(), [t.spreadElement(t.identifier(\"args\"))]),\n ),\n );\n }\n return t.classMethod(\n \"constructor\",\n t.identifier(\"constructor\"),\n isDerivedClass ? [t.restElement(t.identifier(\"args\"))] : [],\n t.blockStatement(body),\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): 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,\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,\n): path is NodePath {\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 createSetFunctionNameCall(\n state: PluginPass,\n className: t.Identifier | t.StringLiteral,\n) {\n return t.callExpression(state.addHelper(\"setFunctionName\"), [\n t.thisExpression(),\n className,\n ]);\n}\n\nfunction createToPropertyKeyCall(state: PluginPass, propertyKey: t.Expression) {\n return t.callExpression(state.addHelper(\"toPropertyKey\"), [propertyKey]);\n}\n\nfunction checkPrivateMethodUpdateError(\n path: NodePath,\n decoratedPrivateMethods: Set,\n) {\n const privateNameVisitor = privateNameVisitorFactory<\n PrivateNameVisitorState,\n null\n >({\n PrivateName(path, state) {\n if (!state.privateNamesMap.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 read-only, but \"#${path.node.id.name}\" is updated via this expression.`,\n );\n }\n },\n });\n const privateNamesMap = new Map();\n for (const name of decoratedPrivateMethods) {\n privateNamesMap.set(name, null);\n }\n path.traverse(privateNameVisitor, {\n privateNamesMap: privateNamesMap,\n });\n}\n\nfunction transformClass(\n path: NodePath,\n state: PluginPass,\n constantSuper: boolean,\n version: DecoratorVersionKind,\n className: string | t.Identifier | t.StringLiteral | undefined,\n propertyVisitor: Visitor,\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 const assignments: t.AssignmentExpression[] = [];\n const scopeParent: Scope = path.scope.parent;\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 let protoInitLocal: t.Identifier;\n let staticInitLocal: t.Identifier;\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, and handle inferred\n // class name when the initializer of the class field is a class expression\n for (const element of body) {\n if (!isClassDecoratableElementPath(element)) {\n continue;\n }\n\n if (isDecorated(element.node)) {\n switch (element.node.type) {\n case \"ClassProperty\":\n // @ts-expect-error todo: propertyVisitor.ClassProperty should be callable. Improve typings.\n propertyVisitor.ClassProperty(\n element as NodePath,\n state,\n );\n break;\n case \"ClassPrivateProperty\":\n // @ts-expect-error todo: propertyVisitor.ClassPrivateProperty should be callable. Improve typings.\n propertyVisitor.ClassPrivateProperty(\n element as NodePath,\n state,\n );\n break;\n case \"ClassAccessorProperty\":\n // @ts-expect-error todo: propertyVisitor.ClassAccessorProperty should be callable. Improve typings.\n propertyVisitor.ClassAccessorProperty(\n element as NodePath,\n state,\n );\n /* fallthrough */\n default:\n if (element.node.static) {\n staticInitLocal ??=\n scopeParent.generateDeclaredUidIdentifier(\"initStatic\");\n } else {\n protoInitLocal ??=\n scopeParent.generateDeclaredUidIdentifier(\"initProto\");\n }\n break;\n }\n hasElementDecorators = true;\n } else if (element.node.type === \"ClassAccessorProperty\") {\n // @ts-expect-error todo: propertyVisitor.ClassAccessorProperty should be callable. Improve typings.\n propertyVisitor.ClassAccessorProperty(\n element as NodePath,\n state,\n );\n const { key, value, static: isStatic, computed } = element.node;\n\n const newId = generateClassPrivateUid();\n const newField = generateClassProperty(newId, value, isStatic);\n const keyPath = element.get(\"key\");\n const [newPath] = element.replaceWith(newField);\n\n addProxyAccessorsFor(\n path.node.id,\n newPath,\n computed && !keyPath.isConstantExpression()\n ? memoiseExpression(\n createToPropertyKeyCall(state, key as t.Expression),\n \"computedKey\",\n )\n : key,\n newId,\n version,\n computed,\n );\n }\n }\n\n if (!classDecorators && !hasElementDecorators) {\n // If nothing is decorated but we have assignments, it must be the memoised\n // computed keys of class accessors\n if (assignments.length > 0) {\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 // If nothing is decorated and no assignments inserted, return\n return;\n }\n\n const elementDecoratorInfo: (DecoratorInfo | ComputedPropInfo)[] = [];\n\n let constructorPath: NodePath | undefined;\n const decoratedPrivateMethods = new Set();\n\n let classInitLocal: t.Identifier, classIdLocal: t.Identifier;\n\n const decoratorsThis = new Map();\n const maybeExtractDecorators = (\n decorators: t.Decorator[],\n memoiseInPlace: boolean,\n ) => {\n let needMemoise = false;\n for (const decorator of decorators) {\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 needMemoise = true;\n if (memoiseInPlace) {\n object = memoiseExpression(t.thisExpression(), \"obj\");\n } else {\n object = t.thisExpression();\n }\n } else {\n if (!scopeParent.isStatic(expression.object)) {\n needMemoise = true;\n if (memoiseInPlace) {\n expression.object = memoiseExpression(expression.object, \"obj\");\n }\n }\n object = t.cloneNode(expression.object);\n }\n decoratorsThis.set(decorator, object);\n }\n if (!scopeParent.isStatic(expression)) {\n needMemoise = true;\n if (memoiseInPlace) {\n decorator.expression = memoiseExpression(expression, \"dec\");\n }\n }\n }\n return needMemoise && !memoiseInPlace;\n };\n\n let needsDeclaraionForClassBinding = false;\n let classDecorationsFlag = 0;\n let classDecorations: t.Expression[] = [];\n let classDecorationsId: t.Identifier;\n if (classDecorators) {\n classInitLocal = scopeParent.generateDeclaredUidIdentifier(\"initClass\");\n needsDeclaraionForClassBinding = path.isClassDeclaration();\n ({ id: classIdLocal, path } = replaceClassWithVar(path, className));\n\n path.node.decorators = null;\n\n const needMemoise = maybeExtractDecorators(classDecorators, false);\n\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 if (needMemoise) {\n classDecorationsId = memoiseExpression(\n t.arrayExpression(classDecorations),\n \"classDecs\",\n );\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 let fieldInitializerAssignments = [];\n\n if (hasElementDecorators) {\n if (protoInitLocal) {\n const protoInitCall = t.callExpression(t.cloneNode(protoInitLocal), [\n t.thisExpression(),\n ]);\n fieldInitializerAssignments.push(protoInitCall);\n }\n for (const element of body) {\n if (!isClassDecoratableElementPath(element)) {\n continue;\n }\n\n const { node } = element;\n const decorators = element.node.decorators;\n\n const hasDecorators = !!decorators?.length;\n\n if (hasDecorators) {\n maybeExtractDecorators(decorators, true);\n }\n\n const isComputed = \"computed\" in element.node && element.node.computed;\n if (isComputed) {\n if (!element.get(\"key\").isConstantExpression()) {\n node.key = memoiseExpression(\n createToPropertyKeyCall(state, node.key as t.Expression),\n \"computedKey\",\n );\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\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,\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,\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.expression),\n decoratorsThis: decorators.map(d => decoratorsThis.get(d)),\n name: nameExpr,\n isStatic,\n privateMethods,\n locals,\n });\n\n if (element.node) {\n element.node.decorators = null;\n }\n }\n\n if (\n fieldInitializerAssignments.length > 0 &&\n !isStatic &&\n (kind === FIELD || kind === ACCESSOR)\n ) {\n prependExpressionsToFieldInitializer(\n fieldInitializerAssignments,\n element as NodePath<\n t.ClassProperty | t.ClassPrivateProperty | t.ClassAccessorProperty\n >,\n );\n fieldInitializerAssignments = [];\n }\n }\n }\n\n if (fieldInitializerAssignments.length > 0) {\n const isDerivedClass = !!path.node.superClass;\n if (constructorPath) {\n if (isDerivedClass) {\n insertExpressionsAfterSuperCallAndOptimize(\n fieldInitializerAssignments,\n constructorPath,\n protoInitLocal,\n );\n } else {\n prependExpressionsToConstructor(\n fieldInitializerAssignments,\n constructorPath,\n );\n }\n } else {\n path.node.body.body.unshift(\n createConstructorFromExpressions(\n fieldInitializerAssignments,\n isDerivedClass,\n ),\n );\n }\n fieldInitializerAssignments = [];\n }\n\n const elementDecorations = generateDecorationExprs(\n elementDecoratorInfo,\n version,\n );\n\n const elementLocals: t.Identifier[] =\n extractElementLocalAssignments(elementDecoratorInfo);\n\n if (protoInitLocal) {\n elementLocals.push(protoInitLocal);\n }\n\n if (staticInitLocal) {\n elementLocals.push(staticInitLocal);\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 originalClass.body.body.unshift(\n t.staticBlock(\n [\n t.expressionStatement(\n createLocalsAssignment(\n elementLocals,\n classLocals,\n elementDecorations,\n classDecorationsId\n ? t.cloneNode(classDecorationsId)\n : t.arrayExpression(classDecorations),\n t.numericLiteral(classDecorationsFlag),\n needsInstancePrivateBrandCheck ? lastInstancePrivateName : null,\n typeof className === \"object\" ? className : undefined,\n t.cloneNode(superClass),\n state,\n version,\n ),\n ),\n staticInitLocal &&\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 if (needsDeclaraionForClassBinding) {\n path.insertBefore(\n t.variableDeclaration(\"let\", [\n t.variableDeclarator(t.cloneNode(classIdLocal)),\n ]),\n );\n }\n\n if (decoratedPrivateMethods.size > 0) {\n checkPrivateMethodUpdateError(path, decoratedPrivateMethods);\n }\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 | t.Identifier,\n classDecorations: t.ArrayExpression | t.Identifier,\n classDecorationsFlag: t.NumericLiteral,\n maybePrivateBranName: t.PrivateName | null,\n setClassName: t.Identifier | t.StringLiteral | undefined,\n superClass: null | t.Expression,\n state: PluginPass,\n version: DecoratorVersionKind,\n) {\n let lhs, rhs;\n const args: t.Expression[] = [\n setClassName\n ? createSetFunctionNameCall(state, setClassName)\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\nfunction isProtoKey(\n node: t.Identifier | t.StringLiteral | t.BigIntLiteral | t.NumericLiteral,\n) {\n return node.type === \"Identifier\"\n ? node.name === \"__proto__\"\n : node.value === \"__proto__\";\n}\n\nfunction isDecorated(node: t.Class | ClassDecoratableElement) {\n return node.decorators && node.decorators.length > 0;\n}\n\nfunction shouldTransformElement(node: ClassElement) {\n switch (node.type) {\n case \"ClassAccessorProperty\":\n return true;\n case \"ClassMethod\":\n case \"ClassProperty\":\n case \"ClassPrivateMethod\":\n case \"ClassPrivateProperty\":\n return isDecorated(node);\n default:\n return false;\n }\n}\n\nfunction shouldTransformClass(node: t.Class) {\n return isDecorated(node) || node.body.body.some(shouldTransformElement);\n}\n\n// Todo: unify name references logic with helper-function-name\nfunction NamedEvaluationVisitoryFactory(\n isAnonymous: (path: NodePath) => boolean,\n visitor: (\n path: NodePath,\n state: PluginPass,\n name:\n | string\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral,\n ) => void,\n) {\n function handleComputedProperty(\n propertyPath: NodePath<\n t.ObjectProperty | t.ClassProperty | t.ClassAccessorProperty\n >,\n key: t.Expression,\n state: PluginPass,\n ): t.StringLiteral | t.Identifier {\n switch (key.type) {\n case \"StringLiteral\":\n return t.stringLiteral(key.value);\n case \"NumericLiteral\":\n case \"BigIntLiteral\": {\n const keyValue = key.value + \"\";\n propertyPath.get(\"key\").replaceWith(t.stringLiteral(keyValue));\n return t.stringLiteral(keyValue);\n }\n default: {\n const ref = propertyPath.scope.maybeGenerateMemoised(key);\n propertyPath\n .get(\"key\")\n .replaceWith(\n t.assignmentExpression(\n \"=\",\n ref,\n createToPropertyKeyCall(state, key),\n ),\n );\n return t.cloneNode(ref);\n }\n }\n }\n return {\n VariableDeclarator(path, state) {\n const id = path.node.id;\n if (id.type === \"Identifier\") {\n const initializer = skipTransparentExprWrappers(path.get(\"init\"));\n if (isAnonymous(initializer)) {\n const name = id.name;\n visitor(initializer, state, name);\n }\n }\n },\n AssignmentExpression(path, state) {\n const id = path.node.left;\n if (id.type === \"Identifier\") {\n const initializer = skipTransparentExprWrappers(path.get(\"right\"));\n if (isAnonymous(initializer)) {\n switch (path.node.operator) {\n case \"=\":\n case \"&&=\":\n case \"||=\":\n case \"??=\":\n visitor(initializer, state, id.name);\n }\n }\n }\n },\n AssignmentPattern(path, state) {\n const id = path.node.left;\n if (id.type === \"Identifier\") {\n const initializer = skipTransparentExprWrappers(path.get(\"right\"));\n if (isAnonymous(initializer)) {\n const name = id.name;\n visitor(initializer, state, name);\n }\n }\n },\n // We listen on ObjectExpression so that we don't have to visit\n // the object properties under object patterns\n ObjectExpression(path, state) {\n for (const propertyPath of path.get(\"properties\")) {\n const { node } = propertyPath;\n if (node.type !== \"ObjectProperty\") continue;\n const id = node.key;\n const initializer = skipTransparentExprWrappers(\n propertyPath.get(\"value\"),\n );\n if (isAnonymous(initializer)) {\n if (!node.computed) {\n // 13.2.5.5 RS: PropertyDefinitionEvaluation\n if (!isProtoKey(id as t.StringLiteral | t.Identifier)) {\n if (id.type === \"Identifier\") {\n visitor(initializer, state, id.name);\n } else {\n const className = t.stringLiteral(\n (id as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n .value + \"\",\n );\n visitor(initializer, state, className);\n }\n }\n } else {\n const ref = handleComputedProperty(\n propertyPath as NodePath,\n // The key of a computed object property must not be a private name\n id as t.Expression,\n state,\n );\n visitor(initializer, state, ref);\n }\n }\n }\n },\n ClassPrivateProperty(path, state) {\n const { node } = path;\n const initializer = skipTransparentExprWrappers(path.get(\"value\"));\n if (isAnonymous(initializer)) {\n const className = t.stringLiteral(\"#\" + node.key.id.name);\n visitor(initializer, state, className);\n }\n },\n ClassAccessorProperty(path, state) {\n const { node } = path;\n const id = node.key;\n const initializer = skipTransparentExprWrappers(path.get(\"value\"));\n if (isAnonymous(initializer)) {\n if (!node.computed) {\n if (id.type === \"Identifier\") {\n visitor(initializer, state, id.name);\n } else if (id.type === \"PrivateName\") {\n const className = t.stringLiteral(\"#\" + id.id.name);\n visitor(initializer, state, className);\n } else {\n const className = t.stringLiteral(\n (id as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n .value + \"\",\n );\n visitor(initializer, state, className);\n }\n } else {\n const ref = handleComputedProperty(\n path,\n // The key of a computed accessor property must not be a private name\n id as t.Expression,\n state,\n );\n visitor(initializer, state, ref);\n }\n }\n },\n ClassProperty(path, state) {\n const { node } = path;\n const id = node.key;\n const initializer = skipTransparentExprWrappers(path.get(\"value\"));\n if (isAnonymous(initializer)) {\n if (!node.computed) {\n if (id.type === \"Identifier\") {\n visitor(initializer, state, id.name);\n } else {\n const className = t.stringLiteral(\n (id as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n .value + \"\",\n );\n visitor(initializer, state, className);\n }\n } else {\n const ref = handleComputedProperty(path, id, state);\n visitor(initializer, state, ref);\n }\n }\n },\n } satisfies Visitor;\n}\n\nfunction isDecoratedAnonymousClassExpression(path: NodePath) {\n return (\n path.isClassExpression({ id: null }) && shouldTransformClass(path.node)\n );\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 inherits: PluginObject[\"inherits\"],\n): PluginObject {\n if (process.env.BABEL_8_BREAKING) {\n assertVersion(process.env.IS_PUBLISH ? PACKAGE_JSON.version : \"^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();\n const constantSuper = assumption(\"constantSuper\") ?? loose;\n\n const namedEvaluationVisitor: Visitor =\n NamedEvaluationVisitoryFactory(\n isDecoratedAnonymousClassExpression,\n visitClass,\n );\n\n function visitClass(\n path: NodePath,\n state: PluginPass,\n className: string | t.Identifier | t.StringLiteral | undefined,\n ) {\n if (VISITED.has(path)) return;\n const { node } = path;\n className ??= node.id?.name;\n const newPath = transformClass(\n path,\n state,\n constantSuper,\n version,\n className,\n namedEvaluationVisitor,\n );\n if (newPath) {\n VISITED.add(newPath);\n return;\n }\n VISITED.add(path);\n }\n\n return {\n name: \"proposal-decorators\",\n inherits: inherits,\n\n visitor: {\n ExportDefaultDeclaration(path, state) {\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 isDecorated(declaration)\n ) {\n const isAnonymous = !declaration.id;\n const updatedVarDeclarationPath = splitExportDeclaration(\n path,\n ) as unknown as NodePath;\n if (isAnonymous) {\n visitClass(\n updatedVarDeclarationPath,\n state,\n t.stringLiteral(\"default\"),\n );\n }\n }\n },\n ExportNamedDeclaration(path) {\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 isDecorated(declaration)\n ) {\n splitExportDeclaration(path);\n }\n },\n\n Class(path, state) {\n visitClass(path, state, undefined);\n },\n\n ...namedEvaluationVisitor,\n },\n };\n}\n"],"mappings":"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"}