@depup/babel__plugin-transform-typescript 8.0.1-depup.27 → 8.0.5-depup.0

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/README.md CHANGED
@@ -13,16 +13,10 @@ npm install @depup/babel__plugin-transform-typescript
13
13
 
14
14
  | Field | Value |
15
15
  |-------|-------|
16
- | Original | [@babel/plugin-transform-typescript](https://www.npmjs.com/package/@babel/plugin-transform-typescript) @ 8.0.1 |
17
- | Processed | 2026-07-21 |
16
+ | Original | [@babel/plugin-transform-typescript](https://www.npmjs.com/package/@babel/plugin-transform-typescript) @ 8.0.5 |
17
+ | Processed | 2026-09-11 |
18
18
  | Smoke test | passed |
19
- | Deps updated | 1 |
20
-
21
- ## Dependency Changes
22
-
23
- | Dependency | From | To |
24
- |------------|------|-----|
25
- | @babel/plugin-syntax-typescript | ^8.0.1 | ^8.0.3 |
19
+ | Deps updated | 0 |
26
20
 
27
21
  ---
28
22
 
package/changes.json CHANGED
@@ -1,10 +1,5 @@
1
1
  {
2
- "bumped": {
3
- "@babel/plugin-syntax-typescript": {
4
- "from": "^8.0.1",
5
- "to": "^8.0.3"
6
- }
7
- },
8
- "timestamp": "2026-07-21T16:14:40.358Z",
9
- "totalUpdated": 1
2
+ "bumped": {},
3
+ "timestamp": "2026-09-11T00:32:24.565Z",
4
+ "totalUpdated": 0
10
5
  }
package/lib/index.js CHANGED
@@ -34,7 +34,8 @@ function transpileEnum(path, t) {
34
34
  case "Program":
35
35
  {
36
36
  const isGlobal = t.isProgram(path.parent);
37
- const isSeen = seen(parentPath);
37
+ const existingBinding = path.scope.getOwnBinding(name);
38
+ const isSeen = existingBinding != null && existingBinding.identifier !== node.id;
38
39
  let init = t.objectExpression([]);
39
40
  if (isSeen || isGlobal) {
40
41
  init = t.logicalExpression("||", t.cloneNode(fill.ID), init);
@@ -56,17 +57,6 @@ function transpileEnum(path, t) {
56
57
  default:
57
58
  throw new Error(`Unexpected enum parent '${path.parent.type}`);
58
59
  }
59
- function seen(parentPath) {
60
- if (parentPath.isExportDeclaration()) {
61
- return seen(parentPath.parentPath);
62
- }
63
- if (parentPath.getData(name)) {
64
- return true;
65
- } else {
66
- parentPath.setData(name, true);
67
- return false;
68
- }
69
- }
70
60
  }
71
61
  const buildStringAssignment = template.statement(`
72
62
  ENUM["NAME"] = VALUE;
@@ -520,7 +510,7 @@ function handleNested(path, node, parentExport) {
520
510
  {
521
511
  isEmpty = false;
522
512
  const nodes = handleVariableDeclaration(subNode.declaration, name, path.hub);
523
- namespaceTopLevel.splice(i, nodes.length, ...nodes);
513
+ namespaceTopLevel.splice(i, 1, ...nodes);
524
514
  i += nodes.length - 1;
525
515
  break;
526
516
  }
@@ -968,7 +958,7 @@ const index = declare((api, opts) => {
968
958
  TSTypeAssertion(path) {
969
959
  path.replaceWith(path.node.expression);
970
960
  },
971
- ["TSAsExpression|TSSatisfiesExpression"](path) {
961
+ "TSAsExpression|TSSatisfiesExpression"(path) {
972
962
  let {
973
963
  node
974
964
  } = path;
@@ -977,7 +967,7 @@ const index = declare((api, opts) => {
977
967
  } while (t.isTSAsExpression(node) || t.isTSSatisfiesExpression(node));
978
968
  path.replaceWith(node);
979
969
  },
980
- ["TSNonNullExpression|TSInstantiationExpression"](path) {
970
+ "TSNonNullExpression|TSInstantiationExpression"(path) {
981
971
  path.replaceWith(path.node.expression);
982
972
  },
983
973
  CallExpression(path) {
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/enum.ts","../src/const-enum.ts","../src/global-types.ts","../src/namespace.ts","../src/index.ts"],"sourcesContent":["import { template, types as t, type NodePath } from \"@babel/core\";\nimport assert from \"node:assert\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport { skipTransparentExprWrapperNodes } from \"@babel/helper-skip-transparent-expression-wrappers\";\n\ntype t = typeof t;\n\nconst ENUMS = new WeakMap<t.Identifier, PreviousEnumMembers>();\n\nconst buildEnumWrapper = template.expression(\n `\n (function (ID) {\n ASSIGNMENTS;\n return ID;\n })(INIT)\n `,\n);\n\nexport default function transpileEnum(\n path: NodePath<t.TSEnumDeclaration>,\n t: t,\n) {\n const { node, parentPath } = path;\n\n if (node.declare) {\n path.remove();\n return;\n }\n\n const name = node.id.name;\n const { fill, data, isPure } = enumFill(path, t, node.id);\n\n switch (parentPath.type) {\n case \"BlockStatement\":\n case \"ExportNamedDeclaration\":\n case \"Program\": {\n // todo: Consider exclude program with import/export\n // && !path.parent.body.some(n => t.isImportDeclaration(n) || t.isExportDeclaration(n));\n const isGlobal = t.isProgram(path.parent);\n const isSeen = seen(parentPath);\n\n let init: t.Expression = t.objectExpression([]);\n if (isSeen || isGlobal) {\n init = t.logicalExpression(\"||\", t.cloneNode(fill.ID), init);\n }\n const enumIIFE = buildEnumWrapper({ ...fill, INIT: init });\n if (isPure) annotateAsPure(enumIIFE);\n\n if (isSeen) {\n const toReplace = parentPath.isExportDeclaration() ? parentPath : path;\n toReplace.replaceWith(\n t.expressionStatement(\n t.assignmentExpression(\"=\", t.cloneNode(node.id), enumIIFE),\n ),\n );\n } else {\n path.scope.registerDeclaration(\n path.replaceWith(\n t.variableDeclaration(isGlobal ? \"var\" : \"let\", [\n t.variableDeclarator(node.id, enumIIFE),\n ]),\n )[0],\n );\n }\n ENUMS.set(path.scope.getBindingIdentifier(name)!, data);\n break;\n }\n\n default:\n throw new Error(`Unexpected enum parent '${path.parent.type}`);\n }\n\n function seen(parentPath: NodePath<t.Node>): boolean {\n if (parentPath.isExportDeclaration()) {\n return seen(parentPath.parentPath);\n }\n\n if (parentPath.getData(name)) {\n return true;\n } else {\n parentPath.setData(name, true);\n return false;\n }\n }\n}\n\nconst buildStringAssignment = template.statement(`\n ENUM[\"NAME\"] = VALUE;\n`);\n\nconst buildNumericAssignment = template.statement(`\n ENUM[ENUM[\"NAME\"] = VALUE] = \"NAME\";\n`);\n\nconst buildEnumMember = (isString: boolean, options: Record<string, unknown>) =>\n (isString ? buildStringAssignment : buildNumericAssignment)(options);\n\n/**\n * Generates the statement that fills in the variable declared by the enum.\n * `(function (E) { ... assignments ... })(E || (E = {}));`\n */\nfunction enumFill(path: NodePath<t.TSEnumDeclaration>, t: t, id: t.Identifier) {\n const { enumValues, data, isPure } = translateEnumValues(path, t);\n const enumMembers: NodePath<t.TSEnumMember>[] = path\n .get(\"body\")\n .get(\"members\");\n const assignments = [];\n for (let i = 0; i < enumMembers.length; i++) {\n const [memberName, memberValue] = enumValues[i];\n assignments.push(\n t.inheritsComments(\n buildEnumMember(isSyntacticallyString(memberValue), {\n ENUM: t.cloneNode(id),\n NAME: memberName,\n VALUE: memberValue,\n }),\n enumMembers[i].node,\n ),\n );\n }\n\n return {\n fill: {\n ID: t.cloneNode(id),\n ASSIGNMENTS: assignments,\n },\n data,\n isPure,\n };\n}\n\nexport function isSyntacticallyString(expr: t.Expression): boolean {\n expr = skipTransparentExprWrapperNodes(expr);\n switch (expr.type) {\n case \"BinaryExpression\": {\n const left = expr.left;\n const right = expr.right;\n return (\n expr.operator === \"+\" &&\n (isSyntacticallyString(left as t.Expression) ||\n isSyntacticallyString(right))\n );\n }\n case \"TemplateLiteral\":\n case \"StringLiteral\":\n return true;\n }\n return false;\n}\n\n/**\n * Maps the name of an enum member to its value.\n * We keep track of the previous enum members so you can write code like:\n * enum E {\n * X = 1 << 0,\n * Y = 1 << 1,\n * Z = X | Y,\n * }\n */\ntype PreviousEnumMembers = Map<string, number | string | undefined>;\n\ntype EnumSelfReferenceVisitorState = {\n seen: PreviousEnumMembers;\n path: NodePath<t.TSEnumDeclaration>;\n t: t;\n};\n\nfunction ReferencedIdentifier(\n expr: NodePath<t.Identifier | t.JSXIdentifier>,\n state: EnumSelfReferenceVisitorState,\n) {\n const { seen, path, t } = state;\n const name = expr.node.name;\n\n if (seen.has(name)) {\n /* The name is declared inside enum:\n enum Foo {\n A,\n B = (() => {\n const A = 1;\n return A;\n })())\n } */\n\n if (expr.scope.hasBinding(name, { upToScope: path.scope })) {\n return;\n }\n\n expr.replaceWith(\n t.memberExpression(\n t.cloneNode(path.node.id),\n t.cloneNode(expr.node as t.Identifier),\n ),\n );\n expr.skip();\n }\n}\n\nconst enumSelfReferenceVisitor = {\n ReferencedIdentifier,\n};\n\nexport function translateEnumValues(path: NodePath<t.TSEnumDeclaration>, t: t) {\n const bindingIdentifier = path.scope.getBindingIdentifier(path.node.id.name)!;\n const seen: PreviousEnumMembers = ENUMS.get(bindingIdentifier) ?? new Map();\n\n // Start at -1 so the first enum member is its increment, 0.\n let constValue: number | string | undefined = -1;\n let lastName: string;\n let isPure = true;\n\n const enumMembers: NodePath<t.TSEnumMember>[] = path\n .get(\"body\")\n .get(\"members\");\n const enumValues: [name: string, value: t.Expression][] = enumMembers.map(\n memberPath => {\n const member = memberPath.node;\n const name = t.isIdentifier(member.id) ? member.id.name : member.id.value;\n const initializerPath = memberPath.get(\n \"initializer\",\n ) as NodePath<t.Expression>;\n const initializer = member.initializer;\n let value: t.Expression;\n if (initializer) {\n constValue = computeConstantValue(initializerPath, seen);\n if (constValue !== undefined) {\n seen.set(name, constValue);\n assert(\n typeof constValue === \"number\" || typeof constValue === \"string\",\n );\n // We do not use `t.valueToNode` because `Infinity`/`NaN` might refer\n // to a local variable. Even 1/0\n // Revisit once https://github.com/microsoft/TypeScript/issues/55091\n // is fixed. Note: we will have to distinguish between actual\n // infinities and reference to non-infinite variables names Infinity.\n if (constValue === Infinity || Number.isNaN(constValue)) {\n value = t.identifier(String(constValue));\n } else if (constValue === -Infinity) {\n value = t.unaryExpression(\"-\", t.identifier(\"Infinity\"));\n } else {\n value = t.valueToNode(constValue);\n }\n } else {\n isPure &&= initializerPath.isPure();\n\n if (initializerPath.isReferencedIdentifier()) {\n ReferencedIdentifier(initializerPath, {\n t,\n seen,\n path,\n });\n } else {\n initializerPath.traverse(enumSelfReferenceVisitor, {\n t,\n seen,\n path,\n });\n }\n\n value = initializerPath.node;\n seen.set(name, undefined);\n }\n } else if (typeof constValue === \"number\") {\n constValue += 1;\n value = t.numericLiteral(constValue);\n seen.set(name, constValue);\n } else if (typeof constValue === \"string\") {\n throw path.buildCodeFrameError(\"Enum member must have initializer.\");\n } else {\n // create dynamic initializer: 1 + ENUM[\"PREVIOUS\"]\n const lastRef = t.memberExpression(\n t.cloneNode(path.node.id),\n t.stringLiteral(lastName),\n true,\n );\n value = t.binaryExpression(\"+\", t.numericLiteral(1), lastRef);\n seen.set(name, undefined);\n }\n\n lastName = name;\n return [name, value];\n },\n );\n\n return {\n isPure,\n data: seen,\n enumValues,\n };\n}\n\n// Based on the TypeScript repository's `computeConstantValue` in `checker.ts`.\nfunction computeConstantValue(\n path: NodePath,\n prevMembers?: PreviousEnumMembers,\n seen = new Set<t.Identifier>(),\n): number | string | undefined {\n return evaluate(path);\n\n function evaluate(path: NodePath): number | string | undefined {\n const expr = path.node;\n switch (expr.type) {\n case \"MemberExpression\":\n return evaluateRef(path, prevMembers, seen);\n case \"StringLiteral\":\n return expr.value;\n case \"UnaryExpression\":\n return evalUnaryExpression(path as NodePath<t.UnaryExpression>);\n case \"BinaryExpression\":\n return evalBinaryExpression(path as NodePath<t.BinaryExpression>);\n case \"NumericLiteral\":\n return expr.value;\n case \"ParenthesizedExpression\":\n return evaluate(\n (path as NodePath<t.ParenthesizedExpression>).get(\"expression\"),\n );\n case \"Identifier\":\n return evaluateRef(path, prevMembers, seen);\n case \"TemplateLiteral\": {\n if (expr.quasis.length === 1) {\n return expr.quasis[0].value.cooked ?? undefined;\n }\n\n const paths = (path as NodePath<t.TemplateLiteral>).get(\"expressions\");\n const quasis = expr.quasis;\n let str = \"\";\n\n for (let i = 0; i < quasis.length; i++) {\n str += quasis[i].value.cooked;\n\n if (i + 1 < quasis.length) {\n const value = evaluateRef(paths[i], prevMembers, seen);\n if (value === undefined) return undefined;\n str += value;\n }\n }\n return str;\n }\n default:\n return undefined;\n }\n }\n\n function evaluateRef(\n path: NodePath,\n prevMembers: PreviousEnumMembers | undefined,\n seen: Set<t.Identifier>,\n ): number | string | undefined {\n if (path.isMemberExpression()) {\n const expr = path.node;\n\n const obj = expr.object;\n const prop = expr.property;\n if (\n !t.isIdentifier(obj) ||\n (expr.computed ? !t.isStringLiteral(prop) : !t.isIdentifier(prop))\n ) {\n return;\n }\n const bindingIdentifier = path.scope.getBindingIdentifier(obj.name);\n const data = ENUMS.get(bindingIdentifier!);\n if (!data) return;\n // @ts-expect-error checked above\n return data.get(prop.computed ? prop.value : prop.name);\n } else if (path.isIdentifier()) {\n const name = path.node.name;\n\n if ([\"Infinity\", \"NaN\"].includes(name)) {\n return Number(name);\n }\n\n let value = prevMembers?.get(name);\n if (value !== undefined) {\n return value;\n }\n if (prevMembers?.has(name)) {\n // prevMembers contains name => undefined. This means the value couldn't be pre-computed.\n return undefined;\n }\n\n if (seen.has(path.node)) return;\n seen.add(path.node);\n\n value = computeConstantValue(path.resolve(), prevMembers, seen);\n return value;\n }\n }\n\n function evalUnaryExpression(\n path: NodePath<t.UnaryExpression>,\n ): number | string | undefined {\n const value = evaluate(path.get(\"argument\"));\n if (value === undefined) {\n return undefined;\n }\n\n switch (path.node.operator) {\n case \"+\":\n return value;\n case \"-\":\n // eslint-disable-next-line @typescript-eslint/no-unsafe-unary-minus\n return -value;\n case \"~\":\n return ~value;\n default:\n return undefined;\n }\n }\n\n function evalBinaryExpression(\n path: NodePath<t.BinaryExpression>,\n ): number | string | undefined {\n const left = evaluate(path.get(\"left\")) as any;\n if (left === undefined) {\n return undefined;\n }\n const right = evaluate(path.get(\"right\")) as any;\n if (right === undefined) {\n return undefined;\n }\n\n switch (path.node.operator) {\n case \"|\":\n return left | right;\n case \"&\":\n return left & right;\n case \">>\":\n return left >> right;\n case \">>>\":\n return left >>> right;\n case \"<<\":\n return left << right;\n case \"^\":\n return left ^ right;\n case \"*\":\n return left * right;\n case \"/\":\n return left / right;\n case \"+\":\n return left + right;\n case \"-\":\n return left - right;\n case \"%\":\n return left % right;\n case \"**\":\n return left ** right;\n default:\n return undefined;\n }\n }\n}\n","import type { NodePath, types as t } from \"@babel/core\";\n\nimport { translateEnumValues } from \"./enum.ts\";\n\nexport const EXPORTED_CONST_ENUMS_IN_NAMESPACE =\n new WeakSet<t.TSEnumDeclaration>();\n\nexport type NodePathConstEnum = NodePath<t.TSEnumDeclaration & { const: true }>;\nexport default function transpileConstEnum(\n path: NodePathConstEnum,\n t: typeof import(\"@babel/types\"),\n) {\n const { name } = path.node.id;\n\n const parentIsExport = path.parentPath.isExportNamedDeclaration();\n let isExported = parentIsExport;\n if (!isExported && t.isProgram(path.parent)) {\n isExported = path.parent.body.some(\n stmt =>\n t.isExportNamedDeclaration(stmt) &&\n stmt.exportKind !== \"type\" &&\n !stmt.source &&\n stmt.specifiers.some(\n spec =>\n t.isExportSpecifier(spec) &&\n spec.exportKind !== \"type\" &&\n spec.local.name === name,\n ),\n );\n }\n\n const { enumValues: entries } = translateEnumValues(path, t);\n\n if (isExported || EXPORTED_CONST_ENUMS_IN_NAMESPACE.has(path.node)) {\n const obj = t.objectExpression(\n entries.map(([name, value]) =>\n t.objectProperty(\n t.isValidIdentifier(name)\n ? t.identifier(name)\n : t.stringLiteral(name),\n value,\n ),\n ),\n );\n\n if (path.scope.hasOwnBinding(name)) {\n (parentIsExport ? path.parentPath : path).replaceWith(\n t.expressionStatement(\n t.callExpression(\n t.memberExpression(t.identifier(\"Object\"), t.identifier(\"assign\")),\n [path.node.id, obj],\n ),\n ),\n );\n } else {\n path.replaceWith(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(path.node.id, obj),\n ]),\n );\n path.scope.registerDeclaration(path);\n }\n\n return;\n }\n\n const entriesMap = new Map(entries);\n\n // TODO: After fixing https://github.com/babel/babel/pull/11065, we can\n // use path.scope.getBinding(name).referencePaths rather than doing\n // a full traversal.\n path.scope.path.traverse({\n Scope(path) {\n if (path.scope.hasOwnBinding(name)) path.skip();\n },\n MemberExpression(path) {\n if (!t.isIdentifier(path.node.object, { name })) return;\n\n let key: string;\n if (path.node.computed) {\n if (t.isStringLiteral(path.node.property)) {\n key = path.node.property.value;\n } else {\n return;\n }\n } else if (t.isIdentifier(path.node.property)) {\n key = path.node.property.name;\n } else {\n return;\n }\n if (!entriesMap.has(key)) return;\n\n path.replaceWith(t.cloneNode(entriesMap.get(key)!));\n },\n });\n\n path.remove();\n}\n","import type { NodePath, Scope } from \"@babel/core\";\n\nexport const GLOBAL_TYPES = new WeakMap<Scope, Set<string>>();\n\nexport function isGlobalType({ scope }: NodePath, name: string) {\n if (scope.hasBinding(name)) return false;\n if (GLOBAL_TYPES.get(scope)!.has(name)) return true;\n\n console.warn(\n `The exported identifier \"${name}\" is not declared in Babel's scope tracker\\n` +\n `as a JavaScript value binding, and \"@babel/plugin-transform-typescript\"\\n` +\n `never encountered it as a TypeScript type declaration.\\n` +\n `It will be treated as a JavaScript value.\\n\\n` +\n `This problem is likely caused by another plugin injecting\\n` +\n `\"${name}\" without registering it in the scope tracker. If you are the author\\n` +\n ` of that plugin, please use \"scope.registerDeclaration(declarationPath)\".`,\n );\n\n return false;\n}\n\nexport function registerGlobalType(programScope: Scope, name: string) {\n GLOBAL_TYPES.get(programScope)!.add(name);\n}\n","import { template, types as t, type NodePath } from \"@babel/core\";\n\nimport { registerGlobalType } from \"./global-types.ts\";\nimport { EXPORTED_CONST_ENUMS_IN_NAMESPACE } from \"./const-enum.ts\";\n\nexport function getFirstIdentifier(node: t.TSEntityName): t.Identifier {\n if (t.isIdentifier(node)) {\n return node;\n }\n // In Babel 8 TSEntityName also includes ThisExpression, however, a namespace\n // id must not be a ThisExpression or a TSQualifiedName { left: ThisExpression }.\n return getFirstIdentifier((node as t.TSQualifiedName).left);\n}\n\nexport default function transpileNamespace(\n path: NodePath<t.TSModuleDeclaration>,\n allowNamespaces: boolean,\n) {\n if (path.node.declare || path.node.id.type === \"StringLiteral\") {\n path.remove();\n return;\n }\n\n if (!allowNamespaces) {\n throw path\n .get(\"id\")\n .buildCodeFrameError(\n \"Namespace not marked type-only declare.\" +\n \" Non-declarative namespaces are only supported experimentally in Babel.\" +\n \" To enable and review caveats see:\" +\n \" https://babeljs.io/docs/en/babel-plugin-transform-typescript\",\n );\n }\n\n const name = getFirstIdentifier(path.node.id).name;\n const value = handleNested(path, path.node);\n if (value === null) {\n // This means that `path` is a type-only namespace.\n // We call `registerGlobalType` here to allow it to be stripped.\n const program = path.findParent(p => p.isProgram())!;\n registerGlobalType(program.scope, name);\n\n path.remove();\n } else if (path.scope.hasOwnBinding(name)) {\n path.replaceWith(value);\n } else {\n path.scope.registerDeclaration(\n path.replaceWithMultiple([getDeclaration(name), value])[0],\n );\n }\n}\n\nfunction getDeclaration(name: string) {\n return t.variableDeclaration(\"let\", [\n t.variableDeclarator(t.identifier(name)),\n ]);\n}\n\nfunction getMemberExpression(name: string, itemName: string) {\n return t.memberExpression(t.identifier(name), t.identifier(itemName));\n}\n\n/**\n * Convert export const foo = 1 to Namespace.foo = 1;\n *\n * @param {t.VariableDeclaration} node given variable declaration, e.g. `const foo = 1`\n * @param {string} name the generated unique namespace member name\n * @param {*} hub An instance implements HubInterface defined in `@babel/traverse` that can throw a code frame error\n */\nfunction handleVariableDeclaration(\n node: t.VariableDeclaration,\n name: string,\n hub: any,\n): t.Statement[] {\n if (node.kind !== \"const\") {\n throw hub.file.buildCodeFrameError(\n node,\n \"Namespaces exporting non-const are not supported by Babel.\" +\n \" Change to const or see:\" +\n \" https://babeljs.io/docs/en/babel-plugin-transform-typescript\",\n );\n }\n const { declarations } = node;\n if (\n declarations.every(\n (declarator): declarator is t.VariableDeclarator & { id: t.Identifier } =>\n t.isIdentifier(declarator.id),\n )\n ) {\n // `export const a = 1` transforms to `const a = N.a = 1`, the output\n // is smaller than `const a = 1; N.a = a`;\n for (const declarator of declarations) {\n declarator.init = t.assignmentExpression(\n \"=\",\n getMemberExpression(name, declarator.id.name),\n declarator.init!,\n );\n }\n return [node];\n }\n // Now we have pattern in declarators\n // `export const [a] = 1` transforms to `const [a] = 1; N.a = a`\n const bindingIdentifiers = t.getBindingIdentifiers(node);\n const assignments = [];\n // getBindingIdentifiers returns an object without prototype.\n // eslint-disable-next-line guard-for-in\n for (const idName in bindingIdentifiers) {\n assignments.push(\n t.assignmentExpression(\n \"=\",\n getMemberExpression(name, idName),\n t.cloneNode(bindingIdentifiers[idName]),\n ),\n );\n }\n return [node, t.expressionStatement(t.sequenceExpression(assignments))];\n}\n\nfunction buildNestedAmbientModuleError(path: NodePath, node: t.Node) {\n return path.hub.buildError(\n node,\n \"Ambient modules cannot be nested in other modules or namespaces.\",\n Error,\n );\n}\n\nfunction handleNested(\n path: NodePath,\n node: t.TSModuleDeclaration,\n parentExport?: t.Expression,\n): t.Statement | null {\n const names = new Set();\n const realName = t.isIdentifier(node.id)\n ? node.id\n : getFirstIdentifier(node.id as unknown as t.TSQualifiedName);\n\n const name = path.scope.generateUid(realName.name);\n\n const body = node.body;\n let id = node.id;\n let namespaceTopLevel: t.Statement[];\n\n if (t.isTSQualifiedName(id)) {\n namespaceTopLevel = body.body;\n while (t.isTSQualifiedName(id)) {\n namespaceTopLevel = [\n t.exportNamedDeclaration(\n t.tsModuleDeclaration(\n t.cloneNode(id.right),\n t.tsModuleBlock(namespaceTopLevel),\n ),\n ),\n ];\n\n id = id.left;\n }\n } else {\n namespaceTopLevel = body.body;\n }\n\n let isEmpty = true;\n\n for (let i = 0; i < namespaceTopLevel.length; i++) {\n const subNode = namespaceTopLevel[i];\n\n // The first switch is mainly to detect name usage. Only export\n // declarations require further transformation.\n switch (subNode.type) {\n case \"TSModuleDeclaration\": {\n if (!t.isIdentifier(subNode.id)) {\n throw buildNestedAmbientModuleError(path, subNode);\n }\n\n const transformed = handleNested(path, subNode);\n if (transformed !== null) {\n isEmpty = false;\n const moduleName = subNode.id.name;\n if (names.has(moduleName)) {\n namespaceTopLevel[i] = transformed;\n } else {\n names.add(moduleName);\n namespaceTopLevel.splice(\n i++,\n 1,\n getDeclaration(moduleName),\n transformed,\n );\n }\n }\n continue;\n }\n case \"TSEnumDeclaration\":\n case \"FunctionDeclaration\":\n case \"ClassDeclaration\":\n isEmpty = false;\n names.add(subNode.id!.name);\n continue;\n case \"VariableDeclaration\": {\n isEmpty = false;\n // getBindingIdentifiers returns an object without prototype.\n // eslint-disable-next-line guard-for-in\n for (const name in t.getBindingIdentifiers(subNode)) {\n names.add(name);\n }\n continue;\n }\n default:\n isEmpty &&= t.isTypeScript(subNode);\n // Neither named declaration nor export, continue to next item.\n continue;\n case \"ExportNamedDeclaration\":\n // Export declarations get parsed using the next switch.\n }\n\n if (\"declare\" in subNode.declaration! && subNode.declaration.declare) {\n continue;\n }\n\n // Transform the export declarations that occur inside of a namespace.\n switch (subNode.declaration!.type) {\n case \"TSEnumDeclaration\":\n EXPORTED_CONST_ENUMS_IN_NAMESPACE.add(subNode.declaration);\n // fallthrough\n case \"FunctionDeclaration\":\n case \"ClassDeclaration\": {\n isEmpty = false;\n const itemName = subNode.declaration.id!.name;\n names.add(itemName);\n namespaceTopLevel.splice(\n i++,\n 1,\n subNode.declaration,\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n getMemberExpression(name, itemName),\n t.identifier(itemName),\n ),\n ),\n );\n break;\n }\n case \"VariableDeclaration\": {\n isEmpty = false;\n const nodes = handleVariableDeclaration(\n subNode.declaration,\n name,\n path.hub,\n );\n namespaceTopLevel.splice(i, nodes.length, ...nodes);\n i += nodes.length - 1;\n break;\n }\n case \"TSModuleDeclaration\": {\n if (!t.isIdentifier(subNode.declaration.id)) {\n throw buildNestedAmbientModuleError(path, subNode.declaration);\n }\n\n const transformed = handleNested(\n path,\n subNode.declaration,\n t.identifier(name),\n );\n if (transformed !== null) {\n isEmpty = false;\n const moduleName = subNode.declaration.id.name;\n if (names.has(moduleName)) {\n namespaceTopLevel[i] = transformed;\n } else {\n names.add(moduleName);\n namespaceTopLevel.splice(\n i++,\n 1,\n getDeclaration(moduleName),\n transformed,\n );\n }\n } else {\n namespaceTopLevel.splice(i, 1);\n i--;\n }\n }\n }\n }\n\n if (isEmpty) return null;\n\n // {}\n let fallthroughValue: t.Expression = t.objectExpression([]);\n\n if (parentExport) {\n const memberExpr = t.memberExpression(parentExport, realName);\n fallthroughValue = template.expression.ast`\n ${t.cloneNode(memberExpr)} ||\n (${t.cloneNode(memberExpr)} = ${fallthroughValue})\n `;\n }\n\n return template.statement.ast`\n (function (${t.identifier(name)}) {\n ${namespaceTopLevel}\n })(${realName} || (${t.cloneNode(realName)} = ${fallthroughValue}));\n `;\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport syntaxTypeScript from \"@babel/plugin-syntax-typescript\";\nimport type {\n PluginPass,\n types as t,\n Scope,\n NodePath,\n Visitor,\n} from \"@babel/core\";\nimport { injectInitialization } from \"@babel/helper-create-class-features-plugin\";\nimport type { Options as SyntaxOptions } from \"@babel/plugin-syntax-typescript\";\n\nimport transpileConstEnum from \"./const-enum.ts\";\nimport type { NodePathConstEnum } from \"./const-enum.ts\";\nimport transpileEnum from \"./enum.ts\";\nimport {\n GLOBAL_TYPES,\n isGlobalType,\n registerGlobalType,\n} from \"./global-types.ts\";\nimport transpileNamespace, { getFirstIdentifier } from \"./namespace.ts\";\n\nfunction isInType(path: NodePath) {\n switch (path.parent.type) {\n case \"TSTypeReference\":\n case \"TSClassImplements\":\n case \"TSInterfaceHeritage\":\n case \"TSTypeQuery\":\n return true;\n case \"TSQualifiedName\":\n return (\n // `import foo = ns.bar` is transformed to `var foo = ns.bar` and should not be removed\n path.parentPath.findParent(path => path.type !== \"TSQualifiedName\")!\n .type !== \"TSImportEqualsDeclaration\"\n );\n case \"ExportSpecifier\":\n return (\n // export { type foo };\n path.parent.exportKind === \"type\" ||\n // export type { foo };\n // @ts-expect-error: DeclareExportDeclaration does not have `exportKind`\n (path.parentPath as NodePath<t.ExportSpecifier>).parent.exportKind ===\n \"type\"\n );\n default:\n return false;\n }\n}\n\n// Track programs which contain imports/exports of values, so that we can include\n// empty exports for programs that do not, but were parsed as modules. This allows\n// tools to infer unambiguously that results are ESM.\nconst NEEDS_EXPLICIT_ESM = new WeakMap();\nconst PARSED_PARAMS = new WeakSet();\n\n// A hack to avoid removing the impl Binding when we remove the declare NodePath\nfunction safeRemove(path: NodePath) {\n const ids = path.getBindingIdentifiers();\n for (const name of Object.keys(ids)) {\n const binding = path.scope.getBinding(name);\n if (binding?.identifier === ids[name]) {\n binding.scope.removeBinding(name);\n }\n }\n path.opts.noScope = true;\n path.remove();\n path.opts.noScope = false;\n}\n\nfunction assertCjsTransformEnabled(\n path: NodePath,\n pass: PluginPass,\n wrong: string,\n suggestion: string,\n extra: string = \"\",\n): void {\n if (pass.file.get(\"@babel/plugin-transform-modules-*\") !== \"commonjs\") {\n throw path.buildCodeFrameError(\n `\\`${wrong}\\` is only supported when compiling modules to CommonJS.\\n` +\n `Please consider using \\`${suggestion}\\`${extra}, or add ` +\n `@babel/plugin-transform-modules-commonjs to your Babel config.`,\n );\n }\n}\n\nexport interface Options extends SyntaxOptions {\n /** @default true */\n allowNamespaces?: boolean;\n /** @default \"React.createElement\" */\n jsxPragma?: string;\n /** @default \"React.Fragment\" */\n jsxPragmaFrag?: string;\n onlyRemoveTypeImports?: boolean;\n optimizeConstEnums?: boolean;\n}\n\ntype ExtraNodeProps = {\n declare?: unknown;\n accessibility?: unknown;\n abstract?: unknown;\n optional?: unknown;\n override?: unknown;\n};\n\nexport default declare((api, opts: Options) => {\n // `@babel/core` and `@babel/types` are bundled in some downstream libraries.\n // Ref: https://github.com/babel/babel/issues/15089\n const { types: t, template, traverse } = api;\n\n api.assertVersion(REQUIRED_VERSION(\"^7.0.0-0 || ^8.0.0\"));\n\n const JSX_PRAGMA_REGEX = /\\*?\\s*@jsx((?:Frag)?)\\s+(\\S+)/;\n\n const {\n allowNamespaces = true,\n jsxPragma = \"React.createElement\",\n jsxPragmaFrag = \"React.Fragment\",\n onlyRemoveTypeImports = false,\n optimizeConstEnums = false,\n } = opts;\n\n const classMemberVisitors = {\n field(\n path: NodePath<\n (t.ClassPrivateProperty | t.ClassProperty | t.ClassAccessorProperty) &\n ExtraNodeProps\n >,\n ) {\n const { node } = path;\n\n if (node.declare) {\n if (node.value) {\n throw path.buildCodeFrameError(\n `Fields with the 'declare' modifier cannot be initialized here, but only in the constructor`,\n );\n }\n if (!node.decorators) {\n path.remove();\n }\n } else if (node.definite) {\n if (node.value) {\n throw path.buildCodeFrameError(\n `Definitely assigned fields cannot be initialized here, but only in the constructor`,\n );\n }\n } else if (node.abstract) {\n path.remove();\n }\n\n if (node.accessibility) node.accessibility = null;\n if (node.abstract) node.abstract = null;\n if (node.readonly) node.readonly = null;\n if (node.optional) node.optional = null;\n if (node.typeAnnotation) node.typeAnnotation = null;\n if (node.definite) node.definite = null;\n if (node.declare) node.declare = null;\n if (node.override) node.override = null;\n },\n method({ node }: NodePath<t.ClassMethod | t.ClassPrivateMethod>) {\n if (node.accessibility) node.accessibility = null;\n if (node.abstract) node.abstract = null;\n if (node.optional) node.optional = null;\n if (node.override) node.override = null;\n\n // Rest handled by Function visitor\n },\n constructor(path: NodePath<t.ClassMethod>, classPath: NodePath<t.Class>) {\n if (path.node.accessibility) path.node.accessibility = null;\n // Collects parameter properties so that we can add an assignment\n // for each of them in the constructor body\n //\n // We use a WeakSet to ensure an assignment for a parameter\n // property is only added once. This is necessary for cases like\n // using `transform-classes`, which causes this visitor to run\n // twice.\n const assigns: t.ExpressionStatement[] = [];\n const { scope } = path;\n for (const paramPath of path.get(\"params\")) {\n if (paramPath.isTSParameterProperty()) {\n const param = paramPath.node;\n const parameter = param.parameter;\n if (PARSED_PARAMS.has(parameter)) continue;\n PARSED_PARAMS.add(parameter);\n let id;\n if (t.isIdentifier(parameter)) {\n id = parameter;\n } else if (\n t.isAssignmentPattern(parameter) &&\n t.isIdentifier(parameter.left)\n ) {\n id = parameter.left;\n } else {\n throw paramPath.buildCodeFrameError(\n \"Parameter properties can not be destructuring patterns.\",\n );\n }\n assigns.push(\n template.statement.ast`\n this.${t.cloneNode(id)} = ${t.cloneNode(id)}\n ` as t.ExpressionStatement,\n );\n\n paramPath.replaceWith(param.parameter);\n scope.registerBinding(\"param\", paramPath);\n }\n }\n injectInitialization(classPath, path, assigns);\n },\n };\n\n return {\n name: \"transform-typescript\",\n inherits: syntaxTypeScript,\n\n visitor: traverse.explode({\n //\"Pattern\" alias doesn't include Identifier or RestElement.\n Pattern: visitPattern,\n Identifier: visitPattern,\n RestElement: visitPattern,\n\n Program: {\n enter(path, state) {\n const { file } = state;\n let fileJsxPragma = null;\n let fileJsxPragmaFrag = null;\n const programScope = path.scope;\n\n if (!GLOBAL_TYPES.has(programScope)) {\n GLOBAL_TYPES.set(programScope, new Set());\n }\n\n if (file.ast.comments) {\n for (const comment of file.ast.comments) {\n const jsxMatches = JSX_PRAGMA_REGEX.exec(comment.value);\n if (jsxMatches) {\n if (jsxMatches[1]) {\n // isFragment\n fileJsxPragmaFrag = jsxMatches[2];\n } else {\n fileJsxPragma = jsxMatches[2];\n }\n }\n }\n }\n\n let pragmaImportName = fileJsxPragma || jsxPragma;\n if (pragmaImportName) {\n [pragmaImportName] = pragmaImportName.split(\".\");\n }\n\n let pragmaFragImportName = fileJsxPragmaFrag || jsxPragmaFrag;\n if (pragmaFragImportName) {\n [pragmaFragImportName] = pragmaFragImportName.split(\".\");\n }\n\n // remove type imports\n for (let stmt of path.get(\"body\") as Iterable<\n NodePath<t.Statement | t.Expression>\n >) {\n if (stmt.isImportDeclaration()) {\n if (!NEEDS_EXPLICIT_ESM.has(state.file.ast.program)) {\n NEEDS_EXPLICIT_ESM.set(state.file.ast.program, true);\n }\n\n if (stmt.node.importKind === \"type\") {\n for (const specifier of stmt.node.specifiers) {\n registerGlobalType(programScope, specifier.local.name);\n }\n stmt.remove();\n continue;\n }\n\n const importsToRemove = new Set<NodePath<t.Node>>();\n const specifiersLength = stmt.node.specifiers.length;\n const isAllSpecifiersElided = () =>\n specifiersLength > 0 &&\n specifiersLength === importsToRemove.size;\n\n for (const specifier of stmt.node.specifiers) {\n if (\n specifier.type === \"ImportSpecifier\" &&\n specifier.importKind === \"type\"\n ) {\n registerGlobalType(programScope, specifier.local.name);\n const binding = stmt.scope.getBinding(specifier.local.name);\n if (binding) {\n importsToRemove.add(binding.path);\n }\n }\n }\n\n // If onlyRemoveTypeImports is `true`, only remove type-only imports\n // and exports introduced in TypeScript 3.8.\n if (onlyRemoveTypeImports) {\n NEEDS_EXPLICIT_ESM.set(path.node, false);\n } else {\n // Note: this will allow both `import { } from \"m\"` and `import \"m\";`.\n // In TypeScript, the former would be elided.\n if (stmt.node.specifiers.length === 0) {\n NEEDS_EXPLICIT_ESM.set(path.node, false);\n continue;\n }\n\n for (const specifier of stmt.node.specifiers) {\n const binding = stmt.scope.getBinding(specifier.local.name);\n\n // The binding may not exist if the import node was explicitly\n // injected by another plugin. Currently core does not do a good job\n // of keeping scope bindings synchronized with the AST. For now we\n // just bail if there is no binding, since chances are good that if\n // the import statement was injected then it wasn't a typescript type\n // import anyway.\n if (binding && !importsToRemove.has(binding.path)) {\n if (\n isImportTypeOnly({\n binding,\n programPath: path,\n pragmaImportName,\n pragmaFragImportName,\n })\n ) {\n importsToRemove.add(binding.path);\n } else {\n NEEDS_EXPLICIT_ESM.set(path.node, false);\n }\n }\n }\n }\n\n if (isAllSpecifiersElided() && !onlyRemoveTypeImports) {\n stmt.remove();\n } else {\n for (const importPath of importsToRemove) {\n importPath.remove();\n }\n }\n\n continue;\n }\n\n if (!onlyRemoveTypeImports && stmt.isTSImportEqualsDeclaration()) {\n const { id } = stmt.node;\n const binding = stmt.scope.getBinding(id.name);\n if (\n binding &&\n isImportTypeOnly({\n binding,\n programPath: path,\n pragmaImportName,\n pragmaFragImportName,\n })\n ) {\n stmt.remove();\n continue;\n }\n }\n\n if (stmt.isExportDeclaration()) {\n stmt = stmt.get(\"declaration\") as NodePath<t.Declaration>;\n }\n\n if (stmt.isVariableDeclaration({ declare: true })) {\n for (const name of Object.keys(stmt.getBindingIdentifiers())) {\n registerGlobalType(programScope, name);\n }\n } else if (\n stmt.isTSTypeAliasDeclaration() ||\n (stmt.isTSDeclareFunction() && stmt.get(\"id\").isIdentifier()) ||\n stmt.isTSInterfaceDeclaration() ||\n stmt.isClassDeclaration({ declare: true }) ||\n stmt.isTSEnumDeclaration({ declare: true }) ||\n (stmt.isTSModuleDeclaration({ declare: true }) &&\n stmt.get(\"id\").isIdentifier())\n ) {\n registerGlobalType(\n programScope,\n (stmt.node.id as t.Identifier).name,\n );\n }\n }\n },\n exit(path) {\n if (\n path.node.sourceType === \"module\" &&\n NEEDS_EXPLICIT_ESM.get(path.node)\n ) {\n // If there are no remaining value exports, this file can no longer\n // be inferred to be ESM. Leave behind an empty export declaration\n // so it can be.\n path.pushContainer(\"body\", t.exportNamedDeclaration());\n }\n },\n },\n\n ExportNamedDeclaration(path, state) {\n if (!NEEDS_EXPLICIT_ESM.has(state.file.ast.program)) {\n NEEDS_EXPLICIT_ESM.set(state.file.ast.program, true);\n }\n\n if (path.node.exportKind === \"type\") {\n path.remove();\n return;\n }\n\n if (t.isTSImportEqualsDeclaration(path.node.declaration)) {\n return;\n }\n\n // remove export declaration that is filled with type-only specifiers\n // export { type A1, type A2 } from \"a\";\n if (\n path.node.source &&\n path.node.specifiers.length > 0 &&\n path.node.specifiers.every(\n specifier =>\n specifier.type === \"ExportSpecifier\" &&\n specifier.exportKind === \"type\",\n )\n ) {\n path.remove();\n return;\n }\n\n // remove export declaration if it's exporting only types\n // This logic is needed when exportKind is \"value\", because\n // currently the \"type\" keyword is optional.\n // TODO:\n // Also, currently @babel/parser sets exportKind to \"value\" for\n // export interface A {}\n // etc.\n if (\n !path.node.source &&\n path.node.specifiers.length > 0 &&\n path.node.specifiers.every(\n specifier =>\n t.isExportSpecifier(specifier) &&\n isGlobalType(path, specifier.local.name),\n )\n ) {\n path.remove();\n return;\n }\n\n // Convert `export namespace X {}` into `export let X; namespace X {}`,\n // so that when visiting TSModuleDeclaration we do not have to possibly\n // replace its parent path.\n if (t.isTSModuleDeclaration(path.node.declaration)) {\n const namespace = path.node.declaration;\n if (!t.isStringLiteral(namespace.id)) {\n const id = getFirstIdentifier(namespace.id);\n if (path.scope.hasOwnBinding(id.name)) {\n path.replaceWith(namespace);\n } else {\n const [newExport] = path.replaceWithMultiple([\n t.exportNamedDeclaration(\n t.variableDeclaration(\"let\", [\n t.variableDeclarator(t.cloneNode(id)),\n ]),\n ),\n namespace,\n ]);\n path.scope.registerDeclaration(newExport);\n }\n }\n }\n\n NEEDS_EXPLICIT_ESM.set(state.file.ast.program, false);\n },\n\n ExportAllDeclaration(path) {\n if (path.node.exportKind === \"type\") path.remove();\n },\n\n ExportSpecifier(path) {\n // remove type exports\n type Parent = t.ExportDeclaration & { source?: t.StringLiteral };\n const parent = path.parent as Parent;\n if (\n (!parent.source && isGlobalType(path, path.node.local.name)) ||\n path.node.exportKind === \"type\"\n ) {\n path.remove();\n }\n },\n\n ExportDefaultDeclaration(path, state) {\n if (!NEEDS_EXPLICIT_ESM.has(state.file.ast.program)) {\n NEEDS_EXPLICIT_ESM.set(state.file.ast.program, true);\n }\n\n // remove whole declaration if it's exporting a TS type\n if (\n t.isIdentifier(path.node.declaration) &&\n isGlobalType(path, path.node.declaration.name)\n ) {\n path.remove();\n\n return;\n }\n\n NEEDS_EXPLICIT_ESM.set(state.file.ast.program, false);\n },\n\n TSDeclareFunction(path) {\n safeRemove(path);\n },\n\n TSDeclareMethod(path) {\n safeRemove(path);\n },\n\n VariableDeclaration(path) {\n if (path.node.declare) {\n safeRemove(path);\n }\n },\n\n VariableDeclarator({ node }) {\n if (node.definite) node.definite = null;\n },\n\n TSIndexSignature(path) {\n path.remove();\n },\n\n ClassDeclaration(path) {\n const { node } = path;\n if (node.declare) {\n safeRemove(path);\n }\n },\n\n Class(path) {\n const { node }: { node: typeof path.node & ExtraNodeProps } = path;\n\n if (node.typeParameters) node.typeParameters = null;\n\n if (node.superTypeArguments) node.superTypeArguments = null;\n\n if (node.implements) node.implements = null;\n if (node.abstract) node.abstract = null;\n\n // Similar to the logic in `transform-flow-strip-types`, we need to\n // handle `TSParameterProperty` and `ClassProperty` here because the\n // class transform would transform the class, causing more specific\n // visitors to not run.\n path.get(\"body.body\").forEach(child => {\n if (child.isClassMethod() || child.isClassPrivateMethod()) {\n if (child.node.kind === \"constructor\") {\n classMemberVisitors.constructor(\n // @ts-expect-error A constructor must not be a private method\n child,\n path,\n );\n } else {\n classMemberVisitors.method(child);\n }\n } else if (\n child.isClassProperty() ||\n child.isClassPrivateProperty() ||\n child.isClassAccessorProperty()\n ) {\n classMemberVisitors.field(child);\n }\n });\n },\n Function(path) {\n const { node } = path;\n if (node.typeParameters) node.typeParameters = null;\n if (node.returnType) node.returnType = null;\n\n const params = node.params;\n if (params.length > 0 && t.isIdentifier(params[0], { name: \"this\" })) {\n params.shift();\n }\n },\n\n TSModuleDeclaration(path) {\n transpileNamespace(path, allowNamespaces);\n },\n\n TSInterfaceDeclaration(path) {\n path.remove();\n },\n\n TSTypeAliasDeclaration(path) {\n path.remove();\n },\n\n TSEnumDeclaration(path) {\n if (optimizeConstEnums && path.node.const) {\n transpileConstEnum(path as NodePathConstEnum, t);\n } else {\n transpileEnum(path, t);\n }\n },\n\n TSImportEqualsDeclaration(\n path: NodePath<t.TSImportEqualsDeclaration>,\n pass,\n ) {\n const { id, moduleReference } = path.node;\n\n let init: t.Expression;\n let varKind: \"var\" | \"const\";\n if (t.isTSExternalModuleReference(moduleReference)) {\n // import alias = require('foo');\n assertCjsTransformEnabled(\n path,\n pass,\n `import ${id.name} = require(...);`,\n `import ${id.name} from '...';`,\n \" alongside Typescript's --allowSyntheticDefaultImports option\",\n );\n init = t.callExpression(t.identifier(\"require\"), [\n moduleReference.expression,\n ]);\n varKind = \"const\";\n } else {\n // import alias = Namespace;\n init = entityNameToExpr(moduleReference);\n varKind = \"var\";\n }\n const newNode = t.variableDeclaration(varKind, [\n t.variableDeclarator(id, init),\n ]);\n\n path.replaceWith(newNode);\n\n path.scope.registerDeclaration(path);\n },\n TSExportAssignment(path, pass) {\n assertCjsTransformEnabled(\n path,\n pass,\n `export = <value>;`,\n `export default <value>;`,\n );\n path.replaceWith(\n template.statement.ast`module.exports = ${path.node.expression}`,\n );\n },\n\n TSTypeAssertion(path) {\n path.replaceWith(path.node.expression);\n },\n\n [\"TSAsExpression|TSSatisfiesExpression\"](\n path: NodePath<t.TSAsExpression | t.TSSatisfiesExpression>,\n ) {\n let { node }: { node: t.Expression } = path;\n do {\n node = node.expression;\n } while (t.isTSAsExpression(node) || t.isTSSatisfiesExpression(node));\n path.replaceWith(node);\n },\n\n [\"TSNonNullExpression|TSInstantiationExpression\"](\n path: NodePath<t.TSNonNullExpression | t.TSInstantiationExpression>,\n ) {\n path.replaceWith(path.node.expression);\n },\n\n CallExpression(path) {\n path.node.typeArguments = null;\n },\n\n OptionalCallExpression(path) {\n path.node.typeArguments = null;\n },\n\n NewExpression(path) {\n path.node.typeArguments = null;\n },\n\n JSXOpeningElement(path) {\n path.node.typeArguments = null;\n },\n\n TaggedTemplateExpression(path) {\n path.node.typeArguments = null;\n },\n }) satisfies Visitor<PluginPass>,\n };\n\n function entityNameToExpr(node: t.TSEntityName): t.Expression {\n if (t.isTSQualifiedName(node)) {\n return t.memberExpression(entityNameToExpr(node.left), node.right);\n }\n\n return node;\n }\n\n function visitPattern({\n node,\n }: NodePath<t.Identifier | t.Pattern | t.RestElement>) {\n // @ts-expect-error typeAnnotation does not exist in VoidPattern\n if (node.typeAnnotation) node.typeAnnotation = null;\n if (t.isIdentifier(node) && node.optional) node.optional = null;\n // 'access' and 'readonly' are only for parameter properties, so constructor visitor will handle them.\n }\n\n function isImportTypeOnly({\n binding,\n programPath,\n pragmaImportName,\n pragmaFragImportName,\n }: {\n binding: Scope.Binding;\n programPath: NodePath<t.Program>;\n pragmaImportName: string;\n pragmaFragImportName: string;\n }) {\n for (const path of binding.referencePaths) {\n if (!isInType(path)) {\n return false;\n }\n }\n\n if (\n binding.identifier.name !== pragmaImportName &&\n binding.identifier.name !== pragmaFragImportName\n ) {\n return true;\n }\n\n // \"React\" or the JSX pragma is referenced as a value if there are any JSX elements/fragments in the code.\n const sourceFileHasJsx = t.traverseFast(programPath.node, node => {\n if (t.isJSXElement(node) || t.isJSXFragment(node)) {\n return t.traverseFast.stop;\n }\n });\n\n return !sourceFileHasJsx;\n }\n});\n"],"names":["t","TSAsExpression|TSSatisfiesExpression","TSNonNullExpression|TSInstantiationExpression"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/enum.ts","../src/const-enum.ts","../src/global-types.ts","../src/namespace.ts","../src/index.ts"],"sourcesContent":["import { template, types as t, type NodePath } from \"@babel/core\";\nimport assert from \"node:assert\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport { skipTransparentExprWrapperNodes } from \"@babel/helper-skip-transparent-expression-wrappers\";\n\ntype t = typeof t;\n\nconst ENUMS = new WeakMap<t.Identifier, PreviousEnumMembers>();\n\nconst buildEnumWrapper = template.expression(\n `\n (function (ID) {\n ASSIGNMENTS;\n return ID;\n })(INIT)\n `,\n);\n\nexport default function transpileEnum(\n path: NodePath<t.TSEnumDeclaration>,\n t: t,\n) {\n const { node, parentPath } = path;\n\n if (node.declare) {\n path.remove();\n return;\n }\n\n const name = node.id.name;\n const { fill, data, isPure } = enumFill(path, t, node.id);\n\n switch (parentPath.type) {\n case \"BlockStatement\":\n case \"ExportNamedDeclaration\":\n case \"Program\": {\n // todo: Consider exclude program with import/export\n // && !path.parent.body.some(n => t.isImportDeclaration(n) || t.isExportDeclaration(n));\n const isGlobal = t.isProgram(path.parent);\n // If the enum merges with an enum or namespace that comes before it,\n // the variable for this binding has already been declared by that\n // declaration's transform: assign to it instead of re-declaring it.\n const existingBinding = path.scope.getOwnBinding(name);\n const isSeen =\n existingBinding != null && existingBinding.identifier !== node.id;\n\n let init: t.Expression = t.objectExpression([]);\n if (isSeen || isGlobal) {\n init = t.logicalExpression(\"||\", t.cloneNode(fill.ID), init);\n }\n const enumIIFE = buildEnumWrapper({ ...fill, INIT: init });\n if (isPure) annotateAsPure(enumIIFE);\n\n if (isSeen) {\n const toReplace = parentPath.isExportDeclaration() ? parentPath : path;\n toReplace.replaceWith(\n t.expressionStatement(\n t.assignmentExpression(\"=\", t.cloneNode(node.id), enumIIFE),\n ),\n );\n } else {\n path.scope.registerDeclaration(\n path.replaceWith(\n t.variableDeclaration(isGlobal ? \"var\" : \"let\", [\n t.variableDeclarator(node.id, enumIIFE),\n ]),\n )[0],\n );\n }\n ENUMS.set(path.scope.getBindingIdentifier(name)!, data);\n break;\n }\n\n default:\n throw new Error(`Unexpected enum parent '${path.parent.type}`);\n }\n}\n\nconst buildStringAssignment = template.statement(`\n ENUM[\"NAME\"] = VALUE;\n`);\n\nconst buildNumericAssignment = template.statement(`\n ENUM[ENUM[\"NAME\"] = VALUE] = \"NAME\";\n`);\n\nconst buildEnumMember = (isString: boolean, options: Record<string, unknown>) =>\n (isString ? buildStringAssignment : buildNumericAssignment)(options);\n\n/**\n * Generates the statement that fills in the variable declared by the enum.\n * `(function (E) { ... assignments ... })(E || (E = {}));`\n */\nfunction enumFill(path: NodePath<t.TSEnumDeclaration>, t: t, id: t.Identifier) {\n const { enumValues, data, isPure } = translateEnumValues(path, t);\n const enumMembers: NodePath<t.TSEnumMember>[] = path\n .get(\"body\")\n .get(\"members\");\n const assignments = [];\n for (let i = 0; i < enumMembers.length; i++) {\n const [memberName, memberValue] = enumValues[i];\n assignments.push(\n t.inheritsComments(\n buildEnumMember(isSyntacticallyString(memberValue), {\n ENUM: t.cloneNode(id),\n NAME: memberName,\n VALUE: memberValue,\n }),\n enumMembers[i].node,\n ),\n );\n }\n\n return {\n fill: {\n ID: t.cloneNode(id),\n ASSIGNMENTS: assignments,\n },\n data,\n isPure,\n };\n}\n\nexport function isSyntacticallyString(expr: t.Expression): boolean {\n expr = skipTransparentExprWrapperNodes(expr);\n switch (expr.type) {\n case \"BinaryExpression\": {\n const left = expr.left;\n const right = expr.right;\n return (\n expr.operator === \"+\" &&\n (isSyntacticallyString(left as t.Expression) ||\n isSyntacticallyString(right))\n );\n }\n case \"TemplateLiteral\":\n case \"StringLiteral\":\n return true;\n }\n return false;\n}\n\n/**\n * Maps the name of an enum member to its value.\n * We keep track of the previous enum members so you can write code like:\n * enum E {\n * X = 1 << 0,\n * Y = 1 << 1,\n * Z = X | Y,\n * }\n */\ntype PreviousEnumMembers = Map<string, number | string | undefined>;\n\ntype EnumSelfReferenceVisitorState = {\n seen: PreviousEnumMembers;\n path: NodePath<t.TSEnumDeclaration>;\n t: t;\n};\n\nfunction ReferencedIdentifier(\n expr: NodePath<t.Identifier | t.JSXIdentifier>,\n state: EnumSelfReferenceVisitorState,\n) {\n const { seen, path, t } = state;\n const name = expr.node.name;\n\n if (seen.has(name)) {\n /* The name is declared inside enum:\n enum Foo {\n A,\n B = (() => {\n const A = 1;\n return A;\n })())\n } */\n\n if (expr.scope.hasBinding(name, { upToScope: path.scope })) {\n return;\n }\n\n expr.replaceWith(\n t.memberExpression(\n t.cloneNode(path.node.id),\n t.cloneNode(expr.node as t.Identifier),\n ),\n );\n expr.skip();\n }\n}\n\nconst enumSelfReferenceVisitor = {\n ReferencedIdentifier,\n};\n\nexport function translateEnumValues(path: NodePath<t.TSEnumDeclaration>, t: t) {\n const bindingIdentifier = path.scope.getBindingIdentifier(path.node.id.name)!;\n const seen: PreviousEnumMembers = ENUMS.get(bindingIdentifier) ?? new Map();\n\n // Start at -1 so the first enum member is its increment, 0.\n let constValue: number | string | undefined = -1;\n let lastName: string;\n let isPure = true;\n\n const enumMembers: NodePath<t.TSEnumMember>[] = path\n .get(\"body\")\n .get(\"members\");\n const enumValues: [name: string, value: t.Expression][] = enumMembers.map(\n memberPath => {\n const member = memberPath.node;\n const name = t.isIdentifier(member.id) ? member.id.name : member.id.value;\n const initializerPath = memberPath.get(\n \"initializer\",\n ) as NodePath<t.Expression>;\n const initializer = member.initializer;\n let value: t.Expression;\n if (initializer) {\n constValue = computeConstantValue(initializerPath, seen);\n if (constValue !== undefined) {\n seen.set(name, constValue);\n assert(\n typeof constValue === \"number\" || typeof constValue === \"string\",\n );\n // We do not use `t.valueToNode` because `Infinity`/`NaN` might refer\n // to a local variable. Even 1/0\n // Revisit once https://github.com/microsoft/TypeScript/issues/55091\n // is fixed. Note: we will have to distinguish between actual\n // infinities and reference to non-infinite variables names Infinity.\n if (constValue === Infinity || Number.isNaN(constValue)) {\n value = t.identifier(String(constValue));\n } else if (constValue === -Infinity) {\n value = t.unaryExpression(\"-\", t.identifier(\"Infinity\"));\n } else {\n value = t.valueToNode(constValue);\n }\n } else {\n isPure &&= initializerPath.isPure();\n\n if (initializerPath.isReferencedIdentifier()) {\n ReferencedIdentifier(initializerPath, {\n t,\n seen,\n path,\n });\n } else {\n initializerPath.traverse(enumSelfReferenceVisitor, {\n t,\n seen,\n path,\n });\n }\n\n value = initializerPath.node;\n seen.set(name, undefined);\n }\n } else if (typeof constValue === \"number\") {\n constValue += 1;\n value = t.numericLiteral(constValue);\n seen.set(name, constValue);\n } else if (typeof constValue === \"string\") {\n throw path.buildCodeFrameError(\"Enum member must have initializer.\");\n } else {\n // create dynamic initializer: 1 + ENUM[\"PREVIOUS\"]\n const lastRef = t.memberExpression(\n t.cloneNode(path.node.id),\n t.stringLiteral(lastName),\n true,\n );\n value = t.binaryExpression(\"+\", t.numericLiteral(1), lastRef);\n seen.set(name, undefined);\n }\n\n lastName = name;\n return [name, value];\n },\n );\n\n return {\n isPure,\n data: seen,\n enumValues,\n };\n}\n\n// Based on the TypeScript repository's `computeConstantValue` in `checker.ts`.\nfunction computeConstantValue(\n path: NodePath,\n prevMembers?: PreviousEnumMembers,\n seen = new Set<t.Identifier>(),\n): number | string | undefined {\n return evaluate(path);\n\n function evaluate(path: NodePath): number | string | undefined {\n const expr = path.node;\n switch (expr.type) {\n case \"MemberExpression\":\n return evaluateRef(path, prevMembers, seen);\n case \"StringLiteral\":\n return expr.value;\n case \"UnaryExpression\":\n return evalUnaryExpression(path as NodePath<t.UnaryExpression>);\n case \"BinaryExpression\":\n return evalBinaryExpression(path as NodePath<t.BinaryExpression>);\n case \"NumericLiteral\":\n return expr.value;\n case \"ParenthesizedExpression\":\n return evaluate(\n (path as NodePath<t.ParenthesizedExpression>).get(\"expression\"),\n );\n case \"Identifier\":\n return evaluateRef(path, prevMembers, seen);\n case \"TemplateLiteral\": {\n if (expr.quasis.length === 1) {\n return expr.quasis[0].value.cooked ?? undefined;\n }\n\n const paths = (path as NodePath<t.TemplateLiteral>).get(\"expressions\");\n const quasis = expr.quasis;\n let str = \"\";\n\n for (let i = 0; i < quasis.length; i++) {\n str += quasis[i].value.cooked;\n\n if (i + 1 < quasis.length) {\n const value = evaluateRef(paths[i], prevMembers, seen);\n if (value === undefined) return undefined;\n str += value;\n }\n }\n return str;\n }\n default:\n return undefined;\n }\n }\n\n function evaluateRef(\n path: NodePath,\n prevMembers: PreviousEnumMembers | undefined,\n seen: Set<t.Identifier>,\n ): number | string | undefined {\n if (path.isMemberExpression()) {\n const expr = path.node;\n\n const obj = expr.object;\n const prop = expr.property;\n if (\n !t.isIdentifier(obj) ||\n (expr.computed ? !t.isStringLiteral(prop) : !t.isIdentifier(prop))\n ) {\n return;\n }\n const bindingIdentifier = path.scope.getBindingIdentifier(obj.name);\n const data = ENUMS.get(bindingIdentifier!);\n if (!data) return;\n // @ts-expect-error checked above\n return data.get(prop.computed ? prop.value : prop.name);\n } else if (path.isIdentifier()) {\n const name = path.node.name;\n\n if ([\"Infinity\", \"NaN\"].includes(name)) {\n return Number(name);\n }\n\n let value = prevMembers?.get(name);\n if (value !== undefined) {\n return value;\n }\n if (prevMembers?.has(name)) {\n // prevMembers contains name => undefined. This means the value couldn't be pre-computed.\n return undefined;\n }\n\n if (seen.has(path.node)) return;\n seen.add(path.node);\n\n value = computeConstantValue(path.resolve(), prevMembers, seen);\n return value;\n }\n }\n\n function evalUnaryExpression(\n path: NodePath<t.UnaryExpression>,\n ): number | string | undefined {\n const value = evaluate(path.get(\"argument\"));\n if (value === undefined) {\n return undefined;\n }\n\n switch (path.node.operator) {\n case \"+\":\n return value;\n case \"-\":\n // eslint-disable-next-line @typescript-eslint/no-unsafe-unary-minus\n return -value;\n case \"~\":\n return ~value;\n default:\n return undefined;\n }\n }\n\n function evalBinaryExpression(\n path: NodePath<t.BinaryExpression>,\n ): number | string | undefined {\n const left = evaluate(path.get(\"left\")) as any;\n if (left === undefined) {\n return undefined;\n }\n const right = evaluate(path.get(\"right\")) as any;\n if (right === undefined) {\n return undefined;\n }\n\n switch (path.node.operator) {\n case \"|\":\n return left | right;\n case \"&\":\n return left & right;\n case \">>\":\n return left >> right;\n case \">>>\":\n return left >>> right;\n case \"<<\":\n return left << right;\n case \"^\":\n return left ^ right;\n case \"*\":\n return left * right;\n case \"/\":\n return left / right;\n case \"+\":\n return left + right;\n case \"-\":\n return left - right;\n case \"%\":\n return left % right;\n case \"**\":\n return left ** right;\n default:\n return undefined;\n }\n }\n}\n","import type { NodePath, types as t } from \"@babel/core\";\n\nimport { translateEnumValues } from \"./enum.ts\";\n\nexport const EXPORTED_CONST_ENUMS_IN_NAMESPACE =\n new WeakSet<t.TSEnumDeclaration>();\n\nexport type NodePathConstEnum = NodePath<t.TSEnumDeclaration & { const: true }>;\nexport default function transpileConstEnum(\n path: NodePathConstEnum,\n t: typeof import(\"@babel/types\"),\n) {\n const { name } = path.node.id;\n\n const parentIsExport = path.parentPath.isExportNamedDeclaration();\n let isExported = parentIsExport;\n if (!isExported && t.isProgram(path.parent)) {\n isExported = path.parent.body.some(\n stmt =>\n t.isExportNamedDeclaration(stmt) &&\n stmt.exportKind !== \"type\" &&\n !stmt.source &&\n stmt.specifiers.some(\n spec =>\n t.isExportSpecifier(spec) &&\n spec.exportKind !== \"type\" &&\n (spec.local as t.Identifier).name === name,\n ),\n );\n }\n\n const { enumValues: entries } = translateEnumValues(path, t);\n\n if (isExported || EXPORTED_CONST_ENUMS_IN_NAMESPACE.has(path.node)) {\n const obj = t.objectExpression(\n entries.map(([name, value]) =>\n t.objectProperty(\n t.isValidIdentifier(name)\n ? t.identifier(name)\n : t.stringLiteral(name),\n value,\n ),\n ),\n );\n\n if (path.scope.hasOwnBinding(name)) {\n (parentIsExport ? path.parentPath : path).replaceWith(\n t.expressionStatement(\n t.callExpression(\n t.memberExpression(t.identifier(\"Object\"), t.identifier(\"assign\")),\n [path.node.id, obj],\n ),\n ),\n );\n } else {\n path.replaceWith(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(path.node.id, obj),\n ]),\n );\n path.scope.registerDeclaration(path);\n }\n\n return;\n }\n\n const entriesMap = new Map(entries);\n\n // TODO: After fixing https://github.com/babel/babel/pull/11065, we can\n // use path.scope.getBinding(name).referencePaths rather than doing\n // a full traversal.\n path.scope.path.traverse({\n Scope(path) {\n if (path.scope.hasOwnBinding(name)) path.skip();\n },\n MemberExpression(path) {\n if (!t.isIdentifier(path.node.object, { name })) return;\n\n let key: string;\n if (path.node.computed) {\n if (t.isStringLiteral(path.node.property)) {\n key = path.node.property.value;\n } else {\n return;\n }\n } else if (t.isIdentifier(path.node.property)) {\n key = path.node.property.name;\n } else {\n return;\n }\n if (!entriesMap.has(key)) return;\n\n path.replaceWith(t.cloneNode(entriesMap.get(key)!));\n },\n });\n\n path.remove();\n}\n","import type { NodePath, Scope } from \"@babel/core\";\n\nexport const GLOBAL_TYPES = new WeakMap<Scope, Set<string>>();\n\nexport function isGlobalType({ scope }: NodePath, name: string) {\n if (scope.hasBinding(name)) return false;\n if (GLOBAL_TYPES.get(scope)!.has(name)) return true;\n\n console.warn(\n `The exported identifier \"${name}\" is not declared in Babel's scope tracker\\n` +\n `as a JavaScript value binding, and \"@babel/plugin-transform-typescript\"\\n` +\n `never encountered it as a TypeScript type declaration.\\n` +\n `It will be treated as a JavaScript value.\\n\\n` +\n `This problem is likely caused by another plugin injecting\\n` +\n `\"${name}\" without registering it in the scope tracker. If you are the author\\n` +\n ` of that plugin, please use \"scope.registerDeclaration(declarationPath)\".`,\n );\n\n return false;\n}\n\nexport function registerGlobalType(programScope: Scope, name: string) {\n GLOBAL_TYPES.get(programScope)!.add(name);\n}\n","import { template, types as t, type NodePath } from \"@babel/core\";\n\nimport { registerGlobalType } from \"./global-types.ts\";\nimport { EXPORTED_CONST_ENUMS_IN_NAMESPACE } from \"./const-enum.ts\";\n\nexport function getFirstIdentifier(node: t.TSEntityName): t.Identifier {\n if (t.isIdentifier(node)) {\n return node;\n }\n // In Babel 8 TSEntityName also includes ThisExpression, however, a namespace\n // id must not be a ThisExpression or a TSQualifiedName { left: ThisExpression }.\n return getFirstIdentifier((node as t.TSQualifiedName).left);\n}\n\nexport default function transpileNamespace(\n path: NodePath<t.TSModuleDeclaration>,\n allowNamespaces: boolean,\n) {\n if (path.node.declare || path.node.id.type === \"StringLiteral\") {\n path.remove();\n return;\n }\n\n if (!allowNamespaces) {\n throw path\n .get(\"id\")\n .buildCodeFrameError(\n \"Namespace not marked type-only declare.\" +\n \" Non-declarative namespaces are only supported experimentally in Babel.\" +\n \" To enable and review caveats see:\" +\n \" https://babeljs.io/docs/en/babel-plugin-transform-typescript\",\n );\n }\n\n const name = getFirstIdentifier(path.node.id).name;\n const value = handleNested(path, path.node);\n if (value === null) {\n // This means that `path` is a type-only namespace.\n // We call `registerGlobalType` here to allow it to be stripped.\n const program = path.findParent(p => p.isProgram())!;\n registerGlobalType(program.scope, name);\n\n path.remove();\n } else if (path.scope.hasOwnBinding(name)) {\n path.replaceWith(value);\n } else {\n path.scope.registerDeclaration(\n path.replaceWithMultiple([getDeclaration(name), value])[0],\n );\n }\n}\n\nfunction getDeclaration(name: string) {\n return t.variableDeclaration(\"let\", [\n t.variableDeclarator(t.identifier(name)),\n ]);\n}\n\nfunction getMemberExpression(name: string, itemName: string) {\n return t.memberExpression(t.identifier(name), t.identifier(itemName));\n}\n\n/**\n * Convert export const foo = 1 to Namespace.foo = 1;\n *\n * @param {t.VariableDeclaration} node given variable declaration, e.g. `const foo = 1`\n * @param {string} name the generated unique namespace member name\n * @param {*} hub An instance implements HubInterface defined in `@babel/traverse` that can throw a code frame error\n */\nfunction handleVariableDeclaration(\n node: t.VariableDeclaration,\n name: string,\n hub: any,\n): t.Statement[] {\n if (node.kind !== \"const\") {\n throw hub.file.buildCodeFrameError(\n node,\n \"Namespaces exporting non-const are not supported by Babel.\" +\n \" Change to const or see:\" +\n \" https://babeljs.io/docs/en/babel-plugin-transform-typescript\",\n );\n }\n const { declarations } = node;\n if (\n declarations.every(\n (declarator): declarator is t.VariableDeclarator & { id: t.Identifier } =>\n t.isIdentifier(declarator.id),\n )\n ) {\n // `export const a = 1` transforms to `const a = N.a = 1`, the output\n // is smaller than `const a = 1; N.a = a`;\n for (const declarator of declarations) {\n declarator.init = t.assignmentExpression(\n \"=\",\n getMemberExpression(name, declarator.id.name),\n declarator.init!,\n );\n }\n return [node];\n }\n // Now we have pattern in declarators\n // `export const [a] = 1` transforms to `const [a] = 1; N.a = a`\n const bindingIdentifiers = t.getBindingIdentifiers(node);\n const assignments = [];\n // getBindingIdentifiers returns an object without prototype.\n // eslint-disable-next-line guard-for-in\n for (const idName in bindingIdentifiers) {\n assignments.push(\n t.assignmentExpression(\n \"=\",\n getMemberExpression(name, idName),\n t.cloneNode(bindingIdentifiers[idName]),\n ),\n );\n }\n return [node, t.expressionStatement(t.sequenceExpression(assignments))];\n}\n\nfunction buildNestedAmbientModuleError(path: NodePath, node: t.Node) {\n return path.hub.buildError(\n node,\n \"Ambient modules cannot be nested in other modules or namespaces.\",\n Error,\n );\n}\n\nfunction handleNested(\n path: NodePath,\n node: t.TSModuleDeclaration,\n parentExport?: t.Expression,\n): t.Statement | null {\n const names = new Set();\n const realName = t.isIdentifier(node.id)\n ? node.id\n : getFirstIdentifier(node.id as unknown as t.TSQualifiedName);\n\n const name = path.scope.generateUid(realName.name);\n\n const body = node.body;\n let id = node.id;\n let namespaceTopLevel: t.Statement[];\n\n if (t.isTSQualifiedName(id)) {\n namespaceTopLevel = body.body;\n while (t.isTSQualifiedName(id)) {\n namespaceTopLevel = [\n t.exportNamedDeclaration(\n t.tsModuleDeclaration(\n t.cloneNode(id.right),\n t.tsModuleBlock(namespaceTopLevel),\n ),\n ),\n ];\n\n id = id.left;\n }\n } else {\n namespaceTopLevel = body.body;\n }\n\n let isEmpty = true;\n\n for (let i = 0; i < namespaceTopLevel.length; i++) {\n const subNode = namespaceTopLevel[i];\n\n // The first switch is mainly to detect name usage. Only export\n // declarations require further transformation.\n switch (subNode.type) {\n case \"TSModuleDeclaration\": {\n if (!t.isIdentifier(subNode.id)) {\n throw buildNestedAmbientModuleError(path, subNode);\n }\n\n const transformed = handleNested(path, subNode);\n if (transformed !== null) {\n isEmpty = false;\n const moduleName = subNode.id.name;\n if (names.has(moduleName)) {\n namespaceTopLevel[i] = transformed;\n } else {\n names.add(moduleName);\n namespaceTopLevel.splice(\n i++,\n 1,\n getDeclaration(moduleName),\n transformed,\n );\n }\n }\n continue;\n }\n case \"TSEnumDeclaration\":\n case \"FunctionDeclaration\":\n case \"ClassDeclaration\":\n isEmpty = false;\n names.add(subNode.id!.name);\n continue;\n case \"VariableDeclaration\": {\n isEmpty = false;\n // getBindingIdentifiers returns an object without prototype.\n // eslint-disable-next-line guard-for-in\n for (const name in t.getBindingIdentifiers(subNode)) {\n names.add(name);\n }\n continue;\n }\n default:\n isEmpty &&= t.isTypeScript(subNode);\n // Neither named declaration nor export, continue to next item.\n continue;\n case \"ExportNamedDeclaration\":\n // Export declarations get parsed using the next switch.\n }\n\n if (\"declare\" in subNode.declaration! && subNode.declaration.declare) {\n continue;\n }\n\n // Transform the export declarations that occur inside of a namespace.\n switch (subNode.declaration!.type) {\n case \"TSEnumDeclaration\":\n EXPORTED_CONST_ENUMS_IN_NAMESPACE.add(subNode.declaration);\n // fallthrough\n case \"FunctionDeclaration\":\n case \"ClassDeclaration\": {\n isEmpty = false;\n const itemName = subNode.declaration.id!.name;\n names.add(itemName);\n namespaceTopLevel.splice(\n i++,\n 1,\n subNode.declaration,\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n getMemberExpression(name, itemName),\n t.identifier(itemName),\n ),\n ),\n );\n break;\n }\n case \"VariableDeclaration\": {\n isEmpty = false;\n const nodes = handleVariableDeclaration(\n subNode.declaration,\n name,\n path.hub,\n );\n namespaceTopLevel.splice(i, 1, ...nodes);\n i += nodes.length - 1;\n break;\n }\n case \"TSModuleDeclaration\": {\n if (!t.isIdentifier(subNode.declaration.id)) {\n throw buildNestedAmbientModuleError(path, subNode.declaration);\n }\n\n const transformed = handleNested(\n path,\n subNode.declaration,\n t.identifier(name),\n );\n if (transformed !== null) {\n isEmpty = false;\n const moduleName = subNode.declaration.id.name;\n if (names.has(moduleName)) {\n namespaceTopLevel[i] = transformed;\n } else {\n names.add(moduleName);\n namespaceTopLevel.splice(\n i++,\n 1,\n getDeclaration(moduleName),\n transformed,\n );\n }\n } else {\n namespaceTopLevel.splice(i, 1);\n i--;\n }\n }\n }\n }\n\n if (isEmpty) return null;\n\n // {}\n let fallthroughValue: t.Expression = t.objectExpression([]);\n\n if (parentExport) {\n const memberExpr = t.memberExpression(parentExport, realName);\n fallthroughValue = template.expression.ast`\n ${t.cloneNode(memberExpr)} ||\n (${t.cloneNode(memberExpr)} = ${fallthroughValue})\n `;\n }\n\n return template.statement.ast`\n (function (${t.identifier(name)}) {\n ${namespaceTopLevel}\n })(${realName} || (${t.cloneNode(realName)} = ${fallthroughValue}));\n `;\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport syntaxTypeScript from \"@babel/plugin-syntax-typescript\";\nimport type {\n PluginPass,\n types as t,\n Scope,\n NodePath,\n Visitor,\n} from \"@babel/core\";\nimport { injectInitialization } from \"@babel/helper-create-class-features-plugin\";\nimport type { Options as SyntaxOptions } from \"@babel/plugin-syntax-typescript\";\n\nimport transpileConstEnum from \"./const-enum.ts\";\nimport type { NodePathConstEnum } from \"./const-enum.ts\";\nimport transpileEnum from \"./enum.ts\";\nimport {\n GLOBAL_TYPES,\n isGlobalType,\n registerGlobalType,\n} from \"./global-types.ts\";\nimport transpileNamespace, { getFirstIdentifier } from \"./namespace.ts\";\n\nfunction isInType(path: NodePath) {\n switch (path.parent.type) {\n case \"TSTypeReference\":\n case \"TSClassImplements\":\n case \"TSInterfaceHeritage\":\n case \"TSTypeQuery\":\n return true;\n case \"TSQualifiedName\":\n return (\n // `import foo = ns.bar` is transformed to `var foo = ns.bar` and should not be removed\n path.parentPath.findParent(path => path.type !== \"TSQualifiedName\")!\n .type !== \"TSImportEqualsDeclaration\"\n );\n case \"ExportSpecifier\":\n return (\n // export { type foo };\n path.parent.exportKind === \"type\" ||\n // export type { foo };\n // @ts-expect-error: DeclareExportDeclaration does not have `exportKind`\n (path.parentPath as NodePath<t.ExportSpecifier>).parent.exportKind ===\n \"type\"\n );\n default:\n return false;\n }\n}\n\n// Track programs which contain imports/exports of values, so that we can include\n// empty exports for programs that do not, but were parsed as modules. This allows\n// tools to infer unambiguously that results are ESM.\nconst NEEDS_EXPLICIT_ESM = new WeakMap();\nconst PARSED_PARAMS = new WeakSet();\n\n// A hack to avoid removing the impl Binding when we remove the declare NodePath\nfunction safeRemove(path: NodePath) {\n const ids = path.getBindingIdentifiers();\n for (const name of Object.keys(ids)) {\n const binding = path.scope.getBinding(name);\n if (binding?.identifier === ids[name]) {\n binding.scope.removeBinding(name);\n }\n }\n path.opts.noScope = true;\n path.remove();\n path.opts.noScope = false;\n}\n\nfunction assertCjsTransformEnabled(\n path: NodePath,\n pass: PluginPass,\n wrong: string,\n suggestion: string,\n extra: string = \"\",\n): void {\n if (pass.file.get(\"@babel/plugin-transform-modules-*\") !== \"commonjs\") {\n throw path.buildCodeFrameError(\n `\\`${wrong}\\` is only supported when compiling modules to CommonJS.\\n` +\n `Please consider using \\`${suggestion}\\`${extra}, or add ` +\n `@babel/plugin-transform-modules-commonjs to your Babel config.`,\n );\n }\n}\n\nexport interface Options extends SyntaxOptions {\n /** @default true */\n allowNamespaces?: boolean;\n /** @default \"React.createElement\" */\n jsxPragma?: string;\n /** @default \"React.Fragment\" */\n jsxPragmaFrag?: string;\n onlyRemoveTypeImports?: boolean;\n optimizeConstEnums?: boolean;\n}\n\ntype ExtraNodeProps = {\n declare?: unknown;\n accessibility?: unknown;\n abstract?: unknown;\n optional?: unknown;\n override?: unknown;\n};\n\nexport default declare((api, opts: Options) => {\n // `@babel/core` and `@babel/types` are bundled in some downstream libraries.\n // Ref: https://github.com/babel/babel/issues/15089\n const { types: t, template, traverse } = api;\n\n api.assertVersion(REQUIRED_VERSION(\"^7.0.0-0 || ^8.0.0\"));\n\n const JSX_PRAGMA_REGEX = /\\*?\\s*@jsx((?:Frag)?)\\s+(\\S+)/;\n\n const {\n allowNamespaces = true,\n jsxPragma = \"React.createElement\",\n jsxPragmaFrag = \"React.Fragment\",\n onlyRemoveTypeImports = false,\n optimizeConstEnums = false,\n } = opts;\n\n const classMemberVisitors = {\n field(\n path: NodePath<\n (t.ClassPrivateProperty | t.ClassProperty | t.ClassAccessorProperty) &\n ExtraNodeProps\n >,\n ) {\n const { node } = path;\n\n if (node.declare) {\n if (node.value) {\n throw path.buildCodeFrameError(\n `Fields with the 'declare' modifier cannot be initialized here, but only in the constructor`,\n );\n }\n if (!node.decorators) {\n path.remove();\n }\n } else if (node.definite) {\n if (node.value) {\n throw path.buildCodeFrameError(\n `Definitely assigned fields cannot be initialized here, but only in the constructor`,\n );\n }\n } else if (node.abstract) {\n path.remove();\n }\n\n if (node.accessibility) node.accessibility = null;\n if (node.abstract) node.abstract = null;\n if (node.readonly) node.readonly = null;\n if (node.optional) node.optional = null;\n if (node.typeAnnotation) node.typeAnnotation = null;\n if (node.definite) node.definite = null;\n if (node.declare) node.declare = null;\n if (node.override) node.override = null;\n },\n method({ node }: NodePath<t.ClassMethod | t.ClassPrivateMethod>) {\n if (node.accessibility) node.accessibility = null;\n if (node.abstract) node.abstract = null;\n if (node.optional) node.optional = null;\n if (node.override) node.override = null;\n\n // Rest handled by Function visitor\n },\n constructor(path: NodePath<t.ClassMethod>, classPath: NodePath<t.Class>) {\n if (path.node.accessibility) path.node.accessibility = null;\n // Collects parameter properties so that we can add an assignment\n // for each of them in the constructor body\n //\n // We use a WeakSet to ensure an assignment for a parameter\n // property is only added once. This is necessary for cases like\n // using `transform-classes`, which causes this visitor to run\n // twice.\n const assigns: t.ExpressionStatement[] = [];\n const { scope } = path;\n for (const paramPath of path.get(\"params\")) {\n if (paramPath.isTSParameterProperty()) {\n const param = paramPath.node;\n const parameter = param.parameter;\n if (PARSED_PARAMS.has(parameter)) continue;\n PARSED_PARAMS.add(parameter);\n let id;\n if (t.isIdentifier(parameter)) {\n id = parameter;\n } else if (\n t.isAssignmentPattern(parameter) &&\n t.isIdentifier(parameter.left)\n ) {\n id = parameter.left;\n } else {\n throw paramPath.buildCodeFrameError(\n \"Parameter properties can not be destructuring patterns.\",\n );\n }\n assigns.push(\n template.statement.ast`\n this.${t.cloneNode(id)} = ${t.cloneNode(id)}\n ` as t.ExpressionStatement,\n );\n\n paramPath.replaceWith(param.parameter);\n scope.registerBinding(\"param\", paramPath);\n }\n }\n injectInitialization(classPath, path, assigns);\n },\n };\n\n return {\n name: \"transform-typescript\",\n inherits: syntaxTypeScript,\n\n visitor: traverse.explode({\n //\"Pattern\" alias doesn't include Identifier or RestElement.\n Pattern: visitPattern,\n Identifier: visitPattern,\n RestElement: visitPattern,\n\n Program: {\n enter(path, state) {\n const { file } = state;\n let fileJsxPragma = null;\n let fileJsxPragmaFrag = null;\n const programScope = path.scope;\n\n if (!GLOBAL_TYPES.has(programScope)) {\n GLOBAL_TYPES.set(programScope, new Set());\n }\n\n if (file.ast.comments) {\n for (const comment of file.ast.comments) {\n const jsxMatches = JSX_PRAGMA_REGEX.exec(comment.value);\n if (jsxMatches) {\n if (jsxMatches[1]) {\n // isFragment\n fileJsxPragmaFrag = jsxMatches[2];\n } else {\n fileJsxPragma = jsxMatches[2];\n }\n }\n }\n }\n\n let pragmaImportName = fileJsxPragma || jsxPragma;\n if (pragmaImportName) {\n [pragmaImportName] = pragmaImportName.split(\".\");\n }\n\n let pragmaFragImportName = fileJsxPragmaFrag || jsxPragmaFrag;\n if (pragmaFragImportName) {\n [pragmaFragImportName] = pragmaFragImportName.split(\".\");\n }\n\n // remove type imports\n for (let stmt of path.get(\"body\") as Iterable<\n NodePath<t.Statement | t.Expression>\n >) {\n if (stmt.isImportDeclaration()) {\n if (!NEEDS_EXPLICIT_ESM.has(state.file.ast.program)) {\n NEEDS_EXPLICIT_ESM.set(state.file.ast.program, true);\n }\n\n if (stmt.node.importKind === \"type\") {\n for (const specifier of stmt.node.specifiers) {\n registerGlobalType(programScope, specifier.local.name);\n }\n stmt.remove();\n continue;\n }\n\n const importsToRemove = new Set<NodePath<t.Node>>();\n const specifiersLength = stmt.node.specifiers.length;\n const isAllSpecifiersElided = () =>\n specifiersLength > 0 &&\n specifiersLength === importsToRemove.size;\n\n for (const specifier of stmt.node.specifiers) {\n if (\n specifier.type === \"ImportSpecifier\" &&\n specifier.importKind === \"type\"\n ) {\n registerGlobalType(programScope, specifier.local.name);\n const binding = stmt.scope.getBinding(specifier.local.name);\n if (binding) {\n importsToRemove.add(binding.path);\n }\n }\n }\n\n // If onlyRemoveTypeImports is `true`, only remove type-only imports\n // and exports introduced in TypeScript 3.8.\n if (onlyRemoveTypeImports) {\n NEEDS_EXPLICIT_ESM.set(path.node, false);\n } else {\n // Note: this will allow both `import { } from \"m\"` and `import \"m\";`.\n // In TypeScript, the former would be elided.\n if (stmt.node.specifiers.length === 0) {\n NEEDS_EXPLICIT_ESM.set(path.node, false);\n continue;\n }\n\n for (const specifier of stmt.node.specifiers) {\n const binding = stmt.scope.getBinding(specifier.local.name);\n\n // The binding may not exist if the import node was explicitly\n // injected by another plugin. Currently core does not do a good job\n // of keeping scope bindings synchronized with the AST. For now we\n // just bail if there is no binding, since chances are good that if\n // the import statement was injected then it wasn't a typescript type\n // import anyway.\n if (binding && !importsToRemove.has(binding.path)) {\n if (\n isImportTypeOnly({\n binding,\n programPath: path,\n pragmaImportName,\n pragmaFragImportName,\n })\n ) {\n importsToRemove.add(binding.path);\n } else {\n NEEDS_EXPLICIT_ESM.set(path.node, false);\n }\n }\n }\n }\n\n if (isAllSpecifiersElided() && !onlyRemoveTypeImports) {\n stmt.remove();\n } else {\n for (const importPath of importsToRemove) {\n importPath.remove();\n }\n }\n\n continue;\n }\n\n if (!onlyRemoveTypeImports && stmt.isTSImportEqualsDeclaration()) {\n const { id } = stmt.node;\n const binding = stmt.scope.getBinding(id.name);\n if (\n binding &&\n isImportTypeOnly({\n binding,\n programPath: path,\n pragmaImportName,\n pragmaFragImportName,\n })\n ) {\n stmt.remove();\n continue;\n }\n }\n\n if (stmt.isExportDeclaration()) {\n stmt = stmt.get(\"declaration\") as NodePath<t.Declaration>;\n }\n\n if (stmt.isVariableDeclaration({ declare: true })) {\n for (const name of Object.keys(stmt.getBindingIdentifiers())) {\n registerGlobalType(programScope, name);\n }\n } else if (\n stmt.isTSTypeAliasDeclaration() ||\n (stmt.isTSDeclareFunction() && stmt.get(\"id\").isIdentifier()) ||\n stmt.isTSInterfaceDeclaration() ||\n stmt.isClassDeclaration({ declare: true }) ||\n stmt.isTSEnumDeclaration({ declare: true }) ||\n (stmt.isTSModuleDeclaration({ declare: true }) &&\n stmt.get(\"id\").isIdentifier())\n ) {\n registerGlobalType(\n programScope,\n (stmt.node.id as t.Identifier).name,\n );\n }\n }\n },\n exit(path) {\n if (\n path.node.sourceType === \"module\" &&\n NEEDS_EXPLICIT_ESM.get(path.node)\n ) {\n // If there are no remaining value exports, this file can no longer\n // be inferred to be ESM. Leave behind an empty export declaration\n // so it can be.\n path.pushContainer(\"body\", t.exportNamedDeclaration());\n }\n },\n },\n\n ExportNamedDeclaration(path, state) {\n if (!NEEDS_EXPLICIT_ESM.has(state.file.ast.program)) {\n NEEDS_EXPLICIT_ESM.set(state.file.ast.program, true);\n }\n\n if (path.node.exportKind === \"type\") {\n path.remove();\n return;\n }\n\n if (t.isTSImportEqualsDeclaration(path.node.declaration)) {\n return;\n }\n\n // remove export declaration that is filled with type-only specifiers\n // export { type A1, type A2 } from \"a\";\n if (\n path.node.source &&\n path.node.specifiers.length > 0 &&\n path.node.specifiers.every(\n specifier =>\n specifier.type === \"ExportSpecifier\" &&\n specifier.exportKind === \"type\",\n )\n ) {\n path.remove();\n return;\n }\n\n // remove export declaration if it's exporting only types\n // This logic is needed when exportKind is \"value\", because\n // currently the \"type\" keyword is optional.\n // TODO:\n // Also, currently @babel/parser sets exportKind to \"value\" for\n // export interface A {}\n // etc.\n if (\n !path.node.source &&\n path.node.specifiers.length > 0 &&\n path.node.specifiers.every(\n specifier =>\n t.isExportSpecifier(specifier) &&\n isGlobalType(path, (specifier.local as t.Identifier).name),\n )\n ) {\n path.remove();\n return;\n }\n\n // Convert `export namespace X {}` into `export let X; namespace X {}`,\n // so that when visiting TSModuleDeclaration we do not have to possibly\n // replace its parent path.\n if (t.isTSModuleDeclaration(path.node.declaration)) {\n const namespace = path.node.declaration;\n if (!t.isStringLiteral(namespace.id)) {\n const id = getFirstIdentifier(namespace.id);\n if (path.scope.hasOwnBinding(id.name)) {\n path.replaceWith(namespace);\n } else {\n const [newExport] = path.replaceWithMultiple([\n t.exportNamedDeclaration(\n t.variableDeclaration(\"let\", [\n t.variableDeclarator(t.cloneNode(id)),\n ]),\n ),\n namespace,\n ]);\n path.scope.registerDeclaration(newExport);\n }\n }\n }\n\n NEEDS_EXPLICIT_ESM.set(state.file.ast.program, false);\n },\n\n ExportAllDeclaration(path) {\n if (path.node.exportKind === \"type\") path.remove();\n },\n\n ExportSpecifier(path) {\n // remove type exports\n type Parent = t.ExportDeclaration & { source?: t.StringLiteral };\n const parent = path.parent as Parent;\n if (\n (!parent.source &&\n isGlobalType(path, (path.node.local as t.Identifier).name)) ||\n path.node.exportKind === \"type\"\n ) {\n path.remove();\n }\n },\n\n ExportDefaultDeclaration(path, state) {\n if (!NEEDS_EXPLICIT_ESM.has(state.file.ast.program)) {\n NEEDS_EXPLICIT_ESM.set(state.file.ast.program, true);\n }\n\n // remove whole declaration if it's exporting a TS type\n if (\n t.isIdentifier(path.node.declaration) &&\n isGlobalType(path, path.node.declaration.name)\n ) {\n path.remove();\n\n return;\n }\n\n NEEDS_EXPLICIT_ESM.set(state.file.ast.program, false);\n },\n\n TSDeclareFunction(path) {\n safeRemove(path);\n },\n\n TSDeclareMethod(path) {\n safeRemove(path);\n },\n\n VariableDeclaration(path) {\n if (path.node.declare) {\n safeRemove(path);\n }\n },\n\n VariableDeclarator({ node }) {\n if (node.definite) node.definite = null;\n },\n\n TSIndexSignature(path) {\n path.remove();\n },\n\n ClassDeclaration(path) {\n const { node } = path;\n if (node.declare) {\n safeRemove(path);\n }\n },\n\n Class(path) {\n const { node }: { node: typeof path.node & ExtraNodeProps } = path;\n\n if (node.typeParameters) node.typeParameters = null;\n\n if (node.superTypeArguments) node.superTypeArguments = null;\n\n if (node.implements) node.implements = null;\n if (node.abstract) node.abstract = null;\n\n // Similar to the logic in `transform-flow-strip-types`, we need to\n // handle `TSParameterProperty` and `ClassProperty` here because the\n // class transform would transform the class, causing more specific\n // visitors to not run.\n path.get(\"body.body\").forEach(child => {\n if (child.isClassMethod() || child.isClassPrivateMethod()) {\n if (child.node.kind === \"constructor\") {\n classMemberVisitors.constructor(\n // @ts-expect-error A constructor must not be a private method\n child,\n path,\n );\n } else {\n classMemberVisitors.method(child);\n }\n } else if (\n child.isClassProperty() ||\n child.isClassPrivateProperty() ||\n child.isClassAccessorProperty()\n ) {\n classMemberVisitors.field(child);\n }\n });\n },\n Function(path) {\n const { node } = path;\n if (node.typeParameters) node.typeParameters = null;\n if (node.returnType) node.returnType = null;\n\n const params = node.params;\n if (params.length > 0 && t.isIdentifier(params[0], { name: \"this\" })) {\n params.shift();\n }\n },\n\n TSModuleDeclaration(path) {\n transpileNamespace(path, allowNamespaces);\n },\n\n TSInterfaceDeclaration(path) {\n path.remove();\n },\n\n TSTypeAliasDeclaration(path) {\n path.remove();\n },\n\n TSEnumDeclaration(path) {\n if (optimizeConstEnums && path.node.const) {\n transpileConstEnum(path as NodePathConstEnum, t);\n } else {\n transpileEnum(path, t);\n }\n },\n\n TSImportEqualsDeclaration(\n path: NodePath<t.TSImportEqualsDeclaration>,\n pass,\n ) {\n const { id, moduleReference } = path.node;\n\n let init: t.Expression;\n let varKind: \"var\" | \"const\";\n if (t.isTSExternalModuleReference(moduleReference)) {\n // import alias = require('foo');\n assertCjsTransformEnabled(\n path,\n pass,\n `import ${id.name} = require(...);`,\n `import ${id.name} from '...';`,\n \" alongside Typescript's --allowSyntheticDefaultImports option\",\n );\n init = t.callExpression(t.identifier(\"require\"), [\n moduleReference.expression,\n ]);\n varKind = \"const\";\n } else {\n // import alias = Namespace;\n init = entityNameToExpr(moduleReference);\n varKind = \"var\";\n }\n const newNode = t.variableDeclaration(varKind, [\n t.variableDeclarator(id, init),\n ]);\n\n path.replaceWith(newNode);\n\n path.scope.registerDeclaration(path);\n },\n TSExportAssignment(path, pass) {\n assertCjsTransformEnabled(\n path,\n pass,\n `export = <value>;`,\n `export default <value>;`,\n );\n path.replaceWith(\n template.statement.ast`module.exports = ${path.node.expression}`,\n );\n },\n\n TSTypeAssertion(path) {\n path.replaceWith(path.node.expression);\n },\n\n \"TSAsExpression|TSSatisfiesExpression\"(\n path: NodePath<t.TSAsExpression | t.TSSatisfiesExpression>,\n ) {\n let { node }: { node: t.Expression } = path;\n do {\n node = node.expression;\n } while (t.isTSAsExpression(node) || t.isTSSatisfiesExpression(node));\n path.replaceWith(node);\n },\n\n \"TSNonNullExpression|TSInstantiationExpression\"(\n path: NodePath<t.TSNonNullExpression | t.TSInstantiationExpression>,\n ) {\n path.replaceWith(path.node.expression);\n },\n\n CallExpression(path) {\n path.node.typeArguments = null;\n },\n\n OptionalCallExpression(path) {\n path.node.typeArguments = null;\n },\n\n NewExpression(path) {\n path.node.typeArguments = null;\n },\n\n JSXOpeningElement(path) {\n path.node.typeArguments = null;\n },\n\n TaggedTemplateExpression(path) {\n path.node.typeArguments = null;\n },\n }) satisfies Visitor<PluginPass>,\n };\n\n function entityNameToExpr(node: t.TSEntityName): t.Expression {\n if (t.isTSQualifiedName(node)) {\n return t.memberExpression(entityNameToExpr(node.left), node.right);\n }\n\n return node;\n }\n\n function visitPattern({\n node,\n }: NodePath<t.Identifier | t.Pattern | t.RestElement>) {\n // @ts-expect-error typeAnnotation does not exist in VoidPattern\n if (node.typeAnnotation) node.typeAnnotation = null;\n if (t.isIdentifier(node) && node.optional) node.optional = null;\n // 'access' and 'readonly' are only for parameter properties, so constructor visitor will handle them.\n }\n\n function isImportTypeOnly({\n binding,\n programPath,\n pragmaImportName,\n pragmaFragImportName,\n }: {\n binding: Scope.Binding;\n programPath: NodePath<t.Program>;\n pragmaImportName: string;\n pragmaFragImportName: string;\n }) {\n for (const path of binding.referencePaths) {\n if (!isInType(path)) {\n return false;\n }\n }\n\n if (\n binding.identifier.name !== pragmaImportName &&\n binding.identifier.name !== pragmaFragImportName\n ) {\n return true;\n }\n\n // \"React\" or the JSX pragma is referenced as a value if there are any JSX elements/fragments in the code.\n const sourceFileHasJsx = t.traverseFast(programPath.node, node => {\n if (t.isJSXElement(node) || t.isJSXFragment(node)) {\n return t.traverseFast.stop;\n }\n });\n\n return !sourceFileHasJsx;\n }\n});\n"],"names":["t","TSAsExpression|TSSatisfiesExpression","TSNonNullExpression|TSInstantiationExpression"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@depup/babel__plugin-transform-typescript",
3
- "version": "8.0.1-depup.27",
3
+ "version": "8.0.5-depup.0",
4
4
  "description": "Transform TypeScript into ES.next (with updated dependencies)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,7 +21,7 @@
21
21
  ],
22
22
  "dependencies": {
23
23
  "@babel/helper-annotate-as-pure": "^8.0.0",
24
- "@babel/helper-create-class-features-plugin": "^8.0.1",
24
+ "@babel/helper-create-class-features-plugin": "^8.0.5",
25
25
  "@babel/helper-plugin-utils": "^8.0.1",
26
26
  "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0",
27
27
  "@babel/plugin-syntax-typescript": "^8.0.3"
@@ -30,10 +30,10 @@
30
30
  "@babel/core": "^8.0.0"
31
31
  },
32
32
  "devDependencies": {
33
- "@babel/core": "^8.0.1",
33
+ "@babel/core": "^8.0.5",
34
34
  "@babel/helper-plugin-test-runner": "^8.0.0",
35
- "@babel/traverse": "^8.0.0",
36
- "@babel/types": "^8.0.0"
35
+ "@babel/traverse": "^8.0.5",
36
+ "@babel/types": "^8.0.5"
37
37
  },
38
38
  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-typescript",
39
39
  "engines": {
@@ -49,16 +49,11 @@
49
49
  },
50
50
  "type": "module",
51
51
  "depup": {
52
- "changes": {
53
- "@babel/plugin-syntax-typescript": {
54
- "from": "^8.0.1",
55
- "to": "^8.0.3"
56
- }
57
- },
58
- "depsUpdated": 1,
52
+ "changes": {},
53
+ "depsUpdated": 0,
59
54
  "originalPackage": "@babel/plugin-transform-typescript",
60
- "originalVersion": "8.0.1",
61
- "processedAt": "2026-07-21T16:14:44.138Z",
55
+ "originalVersion": "8.0.5",
56
+ "processedAt": "2026-09-11T00:32:30.324Z",
62
57
  "smokeTest": "passed"
63
58
  }
64
59
  }