@wyw-in-js/transform 0.1.0 → 0.2.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.
Files changed (142) hide show
  1. package/esm/index.js +5 -1
  2. package/esm/index.js.map +1 -1
  3. package/esm/options/loadBabelOptions.js +1 -1
  4. package/esm/options/loadBabelOptions.js.map +1 -1
  5. package/esm/plugins/babel-transform.js +2 -2
  6. package/esm/plugins/babel-transform.js.map +1 -1
  7. package/esm/plugins/collector.js +4 -4
  8. package/esm/plugins/collector.js.map +1 -1
  9. package/esm/plugins/preeval.js +11 -11
  10. package/esm/plugins/preeval.js.map +1 -1
  11. package/esm/plugins/shaker.js +5 -5
  12. package/esm/plugins/shaker.js.map +1 -1
  13. package/esm/shaker.js +2 -2
  14. package/esm/shaker.js.map +1 -1
  15. package/esm/transform/Entrypoint.helpers.js +1 -2
  16. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  17. package/esm/transform/Entrypoint.js +4 -4
  18. package/esm/transform/Entrypoint.js.map +1 -1
  19. package/esm/transform/generators/collect.js +3 -2
  20. package/esm/transform/generators/collect.js.map +1 -1
  21. package/esm/transform/generators/evalFile.js +6 -6
  22. package/esm/transform/generators/evalFile.js.map +1 -1
  23. package/esm/transform/generators/extract.js +18 -14
  24. package/esm/transform/generators/extract.js.map +1 -1
  25. package/esm/transform/generators/transform.js +2 -2
  26. package/esm/transform/generators/transform.js.map +1 -1
  27. package/esm/transform/generators/workflow.js +3 -3
  28. package/esm/transform/generators/workflow.js.map +1 -1
  29. package/esm/transform/helpers/{loadLinariaOptions.js → loadWywOptions.js} +5 -5
  30. package/esm/transform/helpers/loadWywOptions.js.map +1 -0
  31. package/esm/transform.js +11 -10
  32. package/esm/transform.js.map +1 -1
  33. package/esm/types.js.map +1 -1
  34. package/esm/utils/ShakerMetadata.js +1 -1
  35. package/esm/utils/ShakerMetadata.js.map +1 -1
  36. package/esm/utils/{addIdentifierToLinariaPreval.js → addIdentifierToWywPreval.js} +10 -10
  37. package/esm/utils/addIdentifierToWywPreval.js.map +1 -0
  38. package/esm/utils/collectExportsAndImports.js +141 -53
  39. package/esm/utils/collectExportsAndImports.js.map +1 -1
  40. package/esm/utils/collectTemplateDependencies.js +2 -2
  41. package/esm/utils/collectTemplateDependencies.js.map +1 -1
  42. package/esm/utils/getTagProcessor.js +1 -1
  43. package/esm/utils/getTagProcessor.js.map +1 -1
  44. package/esm/utils/hasWywPreval.js +7 -0
  45. package/esm/utils/hasWywPreval.js.map +1 -0
  46. package/lib/index.js +36 -4
  47. package/lib/index.js.map +1 -1
  48. package/lib/options/loadBabelOptions.js +1 -1
  49. package/lib/options/loadBabelOptions.js.map +1 -1
  50. package/lib/plugins/babel-transform.js +2 -2
  51. package/lib/plugins/babel-transform.js.map +1 -1
  52. package/lib/plugins/collector.js +4 -4
  53. package/lib/plugins/collector.js.map +1 -1
  54. package/lib/plugins/preeval.js +11 -11
  55. package/lib/plugins/preeval.js.map +1 -1
  56. package/lib/plugins/shaker.js +5 -5
  57. package/lib/plugins/shaker.js.map +1 -1
  58. package/lib/shaker.js +2 -2
  59. package/lib/shaker.js.map +1 -1
  60. package/lib/transform/Entrypoint.helpers.js +1 -2
  61. package/lib/transform/Entrypoint.helpers.js.map +1 -1
  62. package/lib/transform/Entrypoint.js +4 -4
  63. package/lib/transform/Entrypoint.js.map +1 -1
  64. package/lib/transform/generators/collect.js +1 -1
  65. package/lib/transform/generators/collect.js.map +1 -1
  66. package/lib/transform/generators/evalFile.js +6 -6
  67. package/lib/transform/generators/evalFile.js.map +1 -1
  68. package/lib/transform/generators/extract.js +18 -14
  69. package/lib/transform/generators/extract.js.map +1 -1
  70. package/lib/transform/generators/transform.js +2 -2
  71. package/lib/transform/generators/transform.js.map +1 -1
  72. package/lib/transform/generators/workflow.js +3 -3
  73. package/lib/transform/generators/workflow.js.map +1 -1
  74. package/lib/transform/helpers/{loadLinariaOptions.js → loadWywOptions.js} +6 -6
  75. package/lib/transform/helpers/loadWywOptions.js.map +1 -0
  76. package/lib/transform/helpers/withDefaultServices.js +2 -2
  77. package/lib/transform/helpers/withDefaultServices.js.map +1 -1
  78. package/lib/transform.js +11 -10
  79. package/lib/transform.js.map +1 -1
  80. package/lib/types.js.map +1 -1
  81. package/lib/utils/ShakerMetadata.js +1 -1
  82. package/lib/utils/ShakerMetadata.js.map +1 -1
  83. package/lib/utils/{addIdentifierToLinariaPreval.js → addIdentifierToWywPreval.js} +12 -12
  84. package/lib/utils/addIdentifierToWywPreval.js.map +1 -0
  85. package/lib/utils/collectExportsAndImports.js +141 -53
  86. package/lib/utils/collectExportsAndImports.js.map +1 -1
  87. package/lib/utils/collectTemplateDependencies.js +2 -2
  88. package/lib/utils/collectTemplateDependencies.js.map +1 -1
  89. package/lib/utils/getTagProcessor.js +2 -2
  90. package/lib/utils/getTagProcessor.js.map +1 -1
  91. package/lib/utils/hasWywPreval.js +13 -0
  92. package/lib/utils/hasWywPreval.js.map +1 -0
  93. package/lib/vm/createVmContext.js +2 -2
  94. package/lib/vm/createVmContext.js.map +1 -1
  95. package/package.json +25 -21
  96. package/types/index.d.ts +6 -2
  97. package/types/index.js +11 -3
  98. package/types/options/loadBabelOptions.js +1 -1
  99. package/types/plugins/babel-transform.js +2 -2
  100. package/types/plugins/collector.js +4 -4
  101. package/types/plugins/preeval.js +11 -11
  102. package/types/plugins/shaker.js +5 -5
  103. package/types/shaker.js +2 -2
  104. package/types/transform/Entrypoint.d.ts +1 -1
  105. package/types/transform/Entrypoint.helpers.js +3 -3
  106. package/types/transform/Entrypoint.js +4 -4
  107. package/types/transform/generators/collect.js +1 -1
  108. package/types/transform/generators/evalFile.js +7 -7
  109. package/types/transform/generators/extract.js +21 -12
  110. package/types/transform/generators/transform.js +2 -4
  111. package/types/transform/generators/workflow.js +3 -3
  112. package/types/transform/helpers/{loadLinariaOptions.d.ts → loadWywOptions.d.ts} +1 -1
  113. package/types/transform/helpers/{loadLinariaOptions.js → loadWywOptions.js} +19 -19
  114. package/types/transform.d.ts +7 -6
  115. package/types/transform.js +11 -10
  116. package/types/types.d.ts +1 -1
  117. package/types/utils/ShakerMetadata.d.ts +1 -1
  118. package/types/utils/ShakerMetadata.js +1 -1
  119. package/types/utils/addIdentifierToWywPreval.d.ts +4 -0
  120. package/types/utils/{addIdentifierToLinariaPreval.js → addIdentifierToWywPreval.js} +12 -12
  121. package/types/utils/collectExportsAndImports.js +157 -58
  122. package/types/utils/collectTemplateDependencies.d.ts +1 -1
  123. package/types/utils/collectTemplateDependencies.js +2 -2
  124. package/types/utils/getTagProcessor.js +2 -2
  125. package/types/utils/hasWywPreval.d.ts +4 -0
  126. package/types/utils/{hasLinariaPreval.js → hasWywPreval.js} +3 -3
  127. package/esm/transform/helpers/loadLinariaOptions.js.map +0 -1
  128. package/esm/utils/addIdentifierToLinariaPreval.js.map +0 -1
  129. package/esm/utils/findPackageJSON.js +0 -22
  130. package/esm/utils/findPackageJSON.js.map +0 -1
  131. package/esm/utils/hasLinariaPreval.js +0 -7
  132. package/esm/utils/hasLinariaPreval.js.map +0 -1
  133. package/lib/transform/helpers/loadLinariaOptions.js.map +0 -1
  134. package/lib/utils/addIdentifierToLinariaPreval.js.map +0 -1
  135. package/lib/utils/findPackageJSON.js +0 -29
  136. package/lib/utils/findPackageJSON.js.map +0 -1
  137. package/lib/utils/hasLinariaPreval.js +0 -13
  138. package/lib/utils/hasLinariaPreval.js.map +0 -1
  139. package/types/utils/addIdentifierToLinariaPreval.d.ts +0 -4
  140. package/types/utils/findPackageJSON.d.ts +0 -1
  141. package/types/utils/findPackageJSON.js +0 -29
  142. package/types/utils/hasLinariaPreval.d.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"collectExportsAndImports.js","names":["_shared","require","_getScope","_isExports","_isNotNull","_isRequire","_isTypedNode","_traversalCache","sideEffectImport","item","imported","exports","explicitImport","getValue","node","type","name","value","isType","p","importKind","exportKind","collectors","ImportSpecifier","path","source","get","local","ImportDefaultSpecifier","ImportNamespaceSpecifier","unfoldNamespaceImport","collectFromImportDeclaration","state","specifiers","length","imports","push","forEach","specifier","isImportSpecifier","collector","getAncestorsWhile","cond","result","current","parentPath","whatIsDestructed","objectPattern","destructedProps","traverse","Identifier","identifier","isBindingIdentifier","parent","isObjectProperty","chain","filter","isTypedNode","map","key","isIdentifier","isNotNull","reverse","what","as","isRestElement","argument","debug","logger","extend","importFromVariableDeclarator","isSync","id","isObjectPattern","findIIFE","isCallExpression","isFunctionExpression","exportFromVariableDeclarator","init","binding","getScope","getBinding","iife","referencePaths","constantViolations","find","isExpression","reduce","acc","destructed","collectFromDynamicImport","callExpression","sourcePath","isStringLiteral","container","isAwaited","isAwaitExpression","isVariableDeclarator","prop","getCalleeName","callee","isMemberExpression","property","undefined","getImportExportTypeByInteropFunction","startsWith","isAlreadyProcessed","collectFromRequire","isRequire","processedRequires","has","add","reexports","exported","variableDeclarator","unfolded","isExpressionStatement","collectFromVariableDeclarator","found","identifierPath","skip","isChainOfVoidAssignment","right","isUnaryExpression","operator","isAssignmentExpression","getReturnValue","params","body","_body$get","returnStatement","isReturnStatement","getGetterValueFromDescriptor","descriptor","props","getter","isArrowFunctionExpression","valueProp","valueValue","addExport","getRelatedImport","object","objectBinding","scope","i","some","isAncestor","computed","import","relatedImport","collectFromExports","isExports","memberExpression","exportName","saveRef","exportRefs","set","assignmentExpression","left","isEsModule","matchesPattern","obj","isObjectExpression","collectFromRequireOrExports","importItem","referenced","referencePath","_binding$referencePat","ancestor","isTSType","isFlowType","listKey","importType","isExportSpecifier","isExportDefaultDeclaration","collectFromExportAllDeclaration","_path$get","collectFromExportSpecifier","isExportDefaultSpecifier","isExportNamespaceSpecifier","collectFromExportNamedDeclaration","_path$get2","declaration","isVariableDeclaration","declarator","isTSEnumDeclaration","isFunctionDeclaration","isClassDeclaration","collectFromExportDefaultDeclaration","default","collectFromAssignmentExpression","_right$get","collectFromExportStarCall","_requireCall$get","requireCall","collectFromMap","properties","isFunction","returnValue","collectFromEsbuildExportCall","sourceExports","collectFromEsbuildReExportCall","_requireCall$get2","collectFromSwcExportCall","collectFromCallExpression","maybeExportStart","collectExportsAndImports","cacheMode","localState","deadExports","Map","sourceType","WeakSet","cache","getTraversalCache","_cache$get","AssignmentExpression","CallExpression","ExportAllDeclaration","ExportDefaultDeclaration","ExportNamedDeclaration","ImportDeclaration","Import","VariableDeclarator"],"sources":["../../src/utils/collectExportsAndImports.ts"],"sourcesContent":["/* eslint @typescript-eslint/no-use-before-define: [\"error\", { \"functions\": false }] */\n/* eslint-disable no-restricted-syntax,no-continue */\n\nimport type { NodePath } from '@babel/traverse';\nimport type {\n AssignmentExpression,\n BlockStatement,\n CallExpression,\n ExportAllDeclaration,\n ExportDefaultDeclaration,\n ExportDefaultSpecifier,\n ExportNamedDeclaration,\n ExportNamespaceSpecifier,\n ExportSpecifier,\n Expression,\n Function as FunctionNode,\n Identifier,\n Import,\n ImportDeclaration,\n ImportDefaultSpecifier,\n ImportNamespaceSpecifier,\n ImportSpecifier,\n MemberExpression,\n ObjectExpression,\n ObjectPattern,\n Program,\n StringLiteral,\n VariableDeclarator,\n} from '@babel/types';\n\nimport { logger } from '@wyw-in-js/shared';\n\nimport { getScope } from './getScope';\nimport { isExports } from './isExports';\nimport { isNotNull } from './isNotNull';\nimport { isRequire } from './isRequire';\nimport { isTypedNode } from './isTypedNode';\nimport { getTraversalCache } from './traversalCache';\n\nexport interface ISideEffectImport {\n imported: 'side-effect';\n local: NodePath;\n source: string;\n}\n\nexport interface IImport {\n imported: string | 'default' | '*';\n local: NodePath<Identifier | MemberExpression>;\n source: string;\n type: 'cjs' | 'dynamic' | 'esm';\n}\n\nexport type Exports = Record<string | 'default' | '*', NodePath>; // '*' means re-export all\n\nexport interface IReexport {\n exported: string | 'default' | '*';\n imported: string | 'default' | '*';\n local: NodePath;\n source: string;\n}\n\nexport interface IState {\n deadExports: string[];\n exportRefs: Map<string, NodePath<MemberExpression>[]>;\n exports: Exports;\n imports: (IImport | ISideEffectImport)[];\n isEsModule: boolean;\n reexports: IReexport[];\n}\n\ninterface ILocalState extends IState {\n processedRequires: WeakSet<NodePath>;\n}\n\nexport const sideEffectImport = (\n item: IImport | ISideEffectImport\n): item is ISideEffectImport => item.imported === 'side-effect';\n\nexport const explicitImport = (\n item: IImport | ISideEffectImport\n): item is IImport => item.imported !== 'side-effect';\n\nfunction getValue({ node }: { node: Identifier | StringLiteral }): string {\n return node.type === 'Identifier' ? node.name : node.value;\n}\n\n// We ignore imports and exports of types\nconst isType = (p: {\n node: { importKind?: 'type' | unknown } | { exportKind?: 'type' | unknown };\n}): boolean =>\n ('importKind' in p.node && p.node.importKind === 'type') ||\n ('exportKind' in p.node && p.node.exportKind === 'type');\n\n// Force TypeScript to check, that we have implementation for every possible specifier\ntype SpecifierTypes = ImportDeclaration['specifiers'][number];\nconst collectors: {\n [K in SpecifierTypes['type']]: (\n path: NodePath<SpecifierTypes & { type: K }>,\n source: string\n ) => IImport[];\n} = {\n ImportSpecifier(path: NodePath<ImportSpecifier>, source): IImport[] {\n if (isType(path)) return [];\n const imported = getValue(path.get('imported'));\n const local = path.get('local');\n return [{ imported, local, source, type: 'esm' }];\n },\n\n ImportDefaultSpecifier(\n path: NodePath<ImportDefaultSpecifier>,\n source\n ): IImport[] {\n const local = path.get('local');\n return [{ imported: 'default', local, source, type: 'esm' }];\n },\n\n ImportNamespaceSpecifier(\n path: NodePath<ImportNamespaceSpecifier>,\n source\n ): IImport[] {\n const local = path.get('local');\n return unfoldNamespaceImport({ imported: '*', local, source, type: 'esm' });\n },\n};\n\nfunction collectFromImportDeclaration(\n path: NodePath<ImportDeclaration>,\n state: ILocalState\n): void {\n // If importKind is specified, and it's not a value, ignore that import\n if (isType(path)) return;\n\n const source = getValue(path.get('source'));\n const specifiers = path.get('specifiers');\n\n if (specifiers.length === 0) {\n state.imports.push({ imported: 'side-effect', local: path, source });\n }\n\n specifiers.forEach(<T extends SpecifierTypes>(specifier: NodePath<T>) => {\n if (specifier.isImportSpecifier() && isType(specifier)) return;\n\n const collector = collectors[\n specifier.node.type\n ] as (typeof collectors)[T['type']];\n\n state.imports.push(...collector(specifier, source));\n });\n}\n\ninterface IDestructed {\n as: NodePath<Identifier>;\n what: string | '*';\n}\n\nfunction getAncestorsWhile(path: NodePath, cond: (p: NodePath) => boolean) {\n const result: NodePath[] = [];\n let current: NodePath | null = path;\n while (current && cond(current)) {\n result.push(current);\n current = current.parentPath;\n }\n\n return result;\n}\n\nfunction whatIsDestructed(\n objectPattern: NodePath<ObjectPattern>\n): IDestructed[] {\n const destructedProps: IDestructed[] = [];\n objectPattern.traverse({\n Identifier(identifier) {\n if (identifier.isBindingIdentifier()) {\n const parent = identifier.parentPath;\n if (parent.isObjectProperty({ value: identifier.node })) {\n const chain = getAncestorsWhile(parent, (p) => p !== objectPattern)\n .filter(isTypedNode('ObjectProperty'))\n .map((p) => {\n const key = p.get('key');\n if (!key.isIdentifier()) {\n // TODO: try to process other type of keys or at least warn about this\n return null;\n }\n\n return key;\n })\n .filter(isNotNull);\n chain.reverse();\n\n if (chain.length > 0) {\n destructedProps.push({\n what: chain[0].node.name,\n as: identifier,\n });\n }\n\n return;\n }\n\n if (parent.isRestElement({ argument: identifier.node })) {\n destructedProps.push({\n what: '*',\n as: identifier,\n });\n }\n }\n },\n });\n\n return destructedProps;\n}\n\nconst debug = logger.extend('evaluator:collectExportsAndImports');\n\nfunction importFromVariableDeclarator(\n path: NodePath<VariableDeclarator>,\n isSync: boolean\n): IDestructed[] {\n const id = path.get('id');\n if (id.isIdentifier()) {\n // It's the simplest case when the full namespace is imported\n return [\n {\n as: id,\n what: '*',\n },\n ];\n }\n\n if (!isSync) {\n // Something went wrong\n // Is it something like `const { … } = import(…)`?\n debug('`import` should be awaited');\n return [];\n }\n\n if (id.isObjectPattern()) {\n return whatIsDestructed(id);\n }\n\n // What else it can be?\n debug('importFromVariableDeclarator: unknown type of id %o', id.node.type);\n\n return [];\n}\n\nconst findIIFE = (path: NodePath): NodePath<CallExpression> | null => {\n if (path.isCallExpression() && path.get('callee').isFunctionExpression()) {\n return path;\n }\n\n if (!path.parentPath) {\n return null;\n }\n\n return findIIFE(path.parentPath);\n};\n\nfunction exportFromVariableDeclarator(\n path: NodePath<VariableDeclarator>\n): Exports {\n const id = path.get('id');\n const init = path.get('init');\n\n // If there is no init and id is an identifier, we should find IIFE\n if (!init.node && id.isIdentifier()) {\n const binding = getScope(path).getBinding(id.node.name);\n if (!binding) {\n return {};\n }\n\n const iife = [\n ...binding.referencePaths,\n ...binding.constantViolations,\n binding.path,\n ]\n .map(findIIFE)\n .find(isNotNull);\n\n if (!iife) {\n return {};\n }\n\n return {\n [id.node.name]: iife,\n };\n }\n\n if (!init || !init.isExpression()) {\n return {};\n }\n\n if (id.isIdentifier()) {\n // It is `export const a = 1;`\n return {\n [id.node.name]: init,\n };\n }\n\n if (id.isObjectPattern()) {\n // It is `export const { a, ...rest } = obj;`\n return whatIsDestructed(id).reduce<Exports>(\n (acc, destructed) => ({\n ...acc,\n [destructed.as.node.name]: init,\n }),\n {}\n );\n }\n\n // What else it can be?\n debug('exportFromVariableDeclarator: unknown type of id %o', id.node.type);\n\n return {};\n}\n\nfunction collectFromDynamicImport(\n path: NodePath<Import>,\n state: ILocalState\n): void {\n const { parentPath: callExpression } = path;\n if (!callExpression.isCallExpression()) {\n // It's wrong `import`\n return;\n }\n\n const [sourcePath] = callExpression.get('arguments');\n if (!sourcePath || !sourcePath.isStringLiteral()) {\n // Import should have at least one argument, and it should be StringLiteral\n return;\n }\n\n const source = sourcePath.node.value;\n\n let { parentPath: container, key } = callExpression;\n let isAwaited = false;\n\n if (container.isAwaitExpression()) {\n // If it's not awaited import, it imports the full namespace\n isAwaited = true;\n key = container.key;\n container = container.parentPath!;\n }\n\n // Is it `const something = await import(\"something\")`?\n if (key === 'init' && container.isVariableDeclarator()) {\n importFromVariableDeclarator(container, isAwaited).map((prop) =>\n state.imports.push({\n imported: prop.what,\n local: prop.as,\n source,\n type: 'dynamic',\n })\n );\n }\n}\n\nfunction getCalleeName(path: NodePath<CallExpression>): string | undefined {\n const callee = path.get('callee');\n if (callee.isIdentifier()) {\n return callee.node.name;\n }\n\n if (callee.isMemberExpression()) {\n const property = callee.get('property');\n if (property.isIdentifier()) {\n return property.node.name;\n }\n }\n\n return undefined;\n}\n\nfunction getImportExportTypeByInteropFunction(\n path: NodePath<CallExpression>\n): 'import:*' | 're-export:*' | 'default' | undefined {\n const name = getCalleeName(path);\n\n if (name === undefined) {\n return undefined;\n }\n\n if (name.startsWith('__exportStar')) {\n return 're-export:*';\n }\n\n if (\n name.startsWith('_interopRequireDefault') ||\n name.startsWith('__importDefault')\n ) {\n return 'default';\n }\n\n if (\n name.startsWith('_interopRequireWildcard') ||\n name.startsWith('__importStar') ||\n name.startsWith('__toESM')\n ) {\n return 'import:*';\n }\n\n if (\n name.startsWith('__rest') ||\n name.startsWith('__objRest') ||\n name.startsWith('_objectDestructuringEmpty')\n ) {\n return 'import:*';\n }\n\n return undefined;\n}\n\nfunction isAlreadyProcessed(path: NodePath): boolean {\n if (\n path.isCallExpression() &&\n path.get('callee').isIdentifier({ name: '__toCommonJS' })\n ) {\n // because its esbuild and we already processed all exports\n return true;\n }\n\n return false;\n}\n\nfunction collectFromRequire(\n path: NodePath<Identifier>,\n state: ILocalState\n): void {\n if (!isRequire(path)) return;\n\n // This method can be reached many times from multiple visitors for the same path\n // So we need to check if we already processed it\n if (state.processedRequires.has(path)) return;\n state.processedRequires.add(path);\n\n const { parentPath: callExpression } = path;\n if (!callExpression.isCallExpression()) {\n // It's wrong `require`\n return;\n }\n\n const [sourcePath] = callExpression.get('arguments');\n if (!sourcePath || !sourcePath.isStringLiteral()) {\n // Import should have at least one argument, and it should be StringLiteral\n return;\n }\n\n const source = sourcePath.node.value;\n\n const { parentPath: container, key } = callExpression;\n\n if (container.isCallExpression() && key === 0) {\n // It may be transpiled import such as\n // `var _atomic = _interopRequireDefault(require(\"@linaria/atomic\"));`\n const imported = getImportExportTypeByInteropFunction(container);\n if (!imported) {\n // It's not a transpiled import.\n // TODO: Can we guess that it's a namespace import?\n debug('Unknown wrapper of require: %o', container.node.callee);\n return;\n }\n\n if (imported === 're-export:*') {\n state.reexports.push({\n exported: '*',\n imported: '*',\n local: path,\n source,\n });\n\n return;\n }\n\n let { parentPath: variableDeclarator } = container;\n if (variableDeclarator.isCallExpression()) {\n if (variableDeclarator.get('callee').isIdentifier({ name: '_extends' })) {\n variableDeclarator = variableDeclarator.parentPath!;\n }\n }\n\n if (!variableDeclarator.isVariableDeclarator()) {\n // TODO: Where else it can be?\n debug('Unexpected require inside %o', variableDeclarator.node.type);\n return;\n }\n\n const id = variableDeclarator.get('id');\n if (!id.isIdentifier()) {\n debug('Id should be Identifier %o', variableDeclarator.node.type);\n return;\n }\n\n if (imported === 'import:*') {\n const unfolded = unfoldNamespaceImport({\n imported: '*',\n local: id,\n source,\n type: 'cjs',\n });\n state.imports.push(...unfolded);\n } else {\n state.imports.push({\n imported,\n local: id,\n source,\n type: 'cjs',\n });\n }\n }\n\n if (container.isMemberExpression()) {\n // It is `require('@linaria/shaker').dep`\n const property = container.get('property');\n if (!property.isIdentifier() && !property.isStringLiteral()) {\n debug(\n 'Property should be Identifier or StringLiteral %s',\n property.node.type\n );\n\n return;\n }\n\n const { parentPath: variableDeclarator } = container;\n\n if (variableDeclarator.isVariableDeclarator()) {\n // It is `const … = require('@linaria/shaker').dep`;\n const id = variableDeclarator.get('id');\n if (id.isIdentifier()) {\n state.imports.push({\n imported: getValue(property),\n local: id,\n source,\n type: 'cjs',\n });\n } else {\n debug('Id should be Identifier %o', variableDeclarator.node.type);\n }\n } else {\n // Maybe require is passed as an argument to some function?\n // Just use the whole MemberExpression as a local\n state.imports.push({\n imported: getValue(property),\n local: container,\n source,\n type: 'cjs',\n });\n }\n\n return;\n }\n\n // Is it `const something = require(\"something\")`?\n if (key === 'init' && container.isVariableDeclarator()) {\n importFromVariableDeclarator(container, true).forEach((prop) => {\n if (prop.what === '*') {\n const unfolded = unfoldNamespaceImport({\n imported: '*',\n local: prop.as,\n source,\n type: 'cjs',\n });\n\n state.imports.push(...unfolded);\n } else {\n state.imports.push({\n imported: prop.what,\n local: prop.as,\n source,\n type: 'cjs',\n });\n }\n });\n }\n\n if (container.isExpressionStatement()) {\n // Looks like standalone require\n state.imports.push({\n imported: 'side-effect',\n local: container,\n source,\n });\n }\n}\n\nfunction collectFromVariableDeclarator(\n path: NodePath<VariableDeclarator>,\n state: ILocalState\n): void {\n let found = false;\n path.traverse({\n Identifier(identifierPath) {\n if (isRequire(identifierPath)) {\n collectFromRequire(identifierPath, state);\n found = true;\n }\n },\n });\n\n if (found) {\n path.skip();\n }\n}\n\nfunction isChainOfVoidAssignment(\n path: NodePath<AssignmentExpression>\n): boolean {\n const right = path.get('right');\n if (right.isUnaryExpression({ operator: 'void' })) {\n return true;\n }\n\n if (right.isAssignmentExpression()) {\n return isChainOfVoidAssignment(right);\n }\n\n return false;\n}\n\nfunction getReturnValue(\n path: NodePath<FunctionNode>\n): NodePath<Expression> | undefined {\n if (path.node.params.length !== 0) return undefined;\n\n const body = path.get('body') as\n | NodePath<BlockStatement>\n | NodePath<Expression>;\n if (body.isExpression()) {\n return body;\n }\n\n if (body.node.body.length === 1) {\n const returnStatement = body.get('body')?.[0];\n if (!returnStatement.isReturnStatement()) return undefined;\n const argument = returnStatement.get('argument');\n if (!argument.isExpression()) return undefined;\n return argument;\n }\n\n return undefined;\n}\n\nfunction getGetterValueFromDescriptor(\n descriptor: NodePath<ObjectExpression>\n): NodePath<Expression> | undefined {\n const props = descriptor\n .get('properties')\n .filter(isTypedNode('ObjectProperty'));\n\n const getter = props.find((p) => p.get('key').isIdentifier({ name: 'get' }));\n const value = getter?.get('value');\n\n if (value?.isFunctionExpression() || value?.isArrowFunctionExpression()) {\n return getReturnValue(value);\n }\n\n const valueProp = props.find((p) =>\n p.get('key').isIdentifier({ name: 'value' })\n );\n\n const valueValue = valueProp?.get('value');\n\n return valueValue?.isExpression() ? valueValue : undefined;\n}\n\nfunction addExport(path: NodePath, exported: string, state: ILocalState): void {\n function getRelatedImport() {\n if (path.isMemberExpression()) {\n const object = path.get('object');\n if (!object.isIdentifier()) {\n return undefined;\n }\n\n const objectBinding = object.scope.getBinding(object.node.name);\n if (!objectBinding) {\n return undefined;\n }\n\n if (objectBinding.path.isVariableDeclarator()) {\n collectFromVariableDeclarator(objectBinding.path, state);\n }\n\n const found = state.imports.find(\n (i) =>\n objectBinding.identifier === i.local.node ||\n objectBinding.referencePaths.some((p) => i.local.isAncestor(p))\n );\n\n if (!found) {\n return undefined;\n }\n\n const property = path.get('property');\n let what = '*';\n if (path.node.computed && property.isStringLiteral()) {\n what = property.node.value;\n } else if (!path.node.computed && property.isIdentifier()) {\n what = property.node.name;\n }\n\n return {\n import: { ...found, local: path },\n what,\n };\n }\n\n return undefined;\n }\n\n const relatedImport = getRelatedImport();\n if (relatedImport) {\n // eslint-disable-next-line no-param-reassign\n state.reexports.push({\n local: relatedImport.import.local,\n imported: relatedImport.import.imported,\n source: relatedImport.import.source,\n exported,\n });\n } else {\n // eslint-disable-next-line no-param-reassign\n state.exports[exported] = path;\n }\n}\n\nfunction collectFromExports(\n path: NodePath<Identifier>,\n state: ILocalState\n): void {\n if (!isExports(path)) return;\n\n if (path.parentPath.isMemberExpression({ object: path.node })) {\n // It is `exports.prop = …`\n const memberExpression = path.parentPath;\n const property = memberExpression.get('property');\n if (!property.isIdentifier() || memberExpression.node.computed) {\n return;\n }\n\n const exportName = property.node.name;\n\n const saveRef = () => {\n // Save all export.____ usages for later\n if (!state.exportRefs.has(exportName)) {\n state.exportRefs.set(exportName, []);\n }\n\n state.exportRefs.get(exportName)!.push(memberExpression);\n };\n\n const assignmentExpression = memberExpression.parentPath;\n\n if (\n !assignmentExpression.isAssignmentExpression({\n left: memberExpression.node,\n })\n ) {\n // If it's not `exports.prop = …`. Just save it.\n saveRef();\n return;\n }\n\n const right = assignmentExpression.get('right');\n\n if (isChainOfVoidAssignment(assignmentExpression)) {\n // It is `exports.foo = void 0`\n return;\n }\n\n const { name } = property.node;\n if (name === '__esModule') {\n // eslint-disable-next-line no-param-reassign\n state.isEsModule = true;\n return;\n }\n\n saveRef();\n // eslint-disable-next-line no-param-reassign\n state.exports[property.node.name] = right;\n\n return;\n }\n\n if (\n path.parentPath.isCallExpression() &&\n path.parentPath.get('callee').matchesPattern('Object.defineProperty')\n ) {\n const [obj, prop, descriptor] = path.parentPath.get('arguments');\n if (\n obj?.isIdentifier(path.node) &&\n prop?.isStringLiteral() &&\n descriptor?.isObjectExpression()\n ) {\n if (prop.node.value === '__esModule') {\n // eslint-disable-next-line no-param-reassign\n state.isEsModule = true;\n } else {\n /**\n * Object.defineProperty(exports, \"token\", {\n * enumerable: true,\n * get: function get() {\n * return _unknownPackage.token;\n * }\n * });\n */\n const exported = prop.node.value;\n const local = getGetterValueFromDescriptor(descriptor);\n if (local) {\n addExport(local, exported, state);\n }\n }\n } else if (\n obj?.isIdentifier(path.node) &&\n prop?.isIdentifier() &&\n descriptor?.isObjectExpression()\n ) {\n /**\n * Object.defineProperty(exports, key, {\n * enumerable: true,\n * get: function get() {\n * return _unknownPackage[key];\n * }\n * });\n */\n const local = getGetterValueFromDescriptor(descriptor);\n if (local) {\n addExport(local, '*', state);\n }\n }\n }\n}\n\nfunction collectFromRequireOrExports(\n path: NodePath<Identifier>,\n state: ILocalState\n): void {\n if (isRequire(path)) {\n collectFromRequire(path, state);\n } else if (isExports(path)) {\n collectFromExports(path, state);\n }\n}\n\nfunction unfoldNamespaceImport(\n importItem: IImport & { imported: '*' }\n): IImport[] {\n const result: IImport[] = [];\n const { local } = importItem;\n if (!local.isIdentifier()) {\n // TODO: handle it\n return [importItem];\n }\n\n const binding = getScope(local).getBinding(local.node.name);\n if (!binding?.referenced) {\n // Imported namespace is not referenced and probably not used,\n // but it can have side effects, so we should keep it as is\n return [importItem];\n }\n\n for (const referencePath of binding?.referencePaths ?? []) {\n if (\n referencePath.find(\n (ancestor) => ancestor.isTSType() || ancestor.isFlowType()\n )\n ) {\n continue;\n }\n\n const { parentPath } = referencePath;\n if (parentPath?.isMemberExpression() && referencePath.key === 'object') {\n const property = parentPath.get('property');\n const object = parentPath.get('object');\n let imported: string | null;\n if (parentPath.node.computed && property.isStringLiteral()) {\n imported = property.node.value;\n } else if (!parentPath.node.computed && property.isIdentifier()) {\n imported = property.node.name;\n } else {\n imported = null;\n }\n\n if (object.isIdentifier() && imported) {\n result.push({\n ...importItem,\n imported,\n local: parentPath,\n });\n } else {\n result.push(importItem);\n break;\n }\n\n continue;\n }\n\n if (parentPath?.isVariableDeclarator() && referencePath.key === 'init') {\n importFromVariableDeclarator(parentPath, true).map((prop) =>\n result.push({ ...importItem, imported: prop.what, local: prop.as })\n );\n\n continue;\n }\n\n if (\n parentPath?.isCallExpression() &&\n referencePath.listKey === 'arguments'\n ) {\n // The defined variable is used as a function argument. Let's try to figure out what is imported.\n const importType = getImportExportTypeByInteropFunction(parentPath);\n\n if (!importType) {\n // Imported value is used as an unknown function argument,\n // so we can't predict usage and import it as is.\n result.push(importItem);\n break;\n }\n\n if (importType === 'default') {\n result.push({\n ...importItem,\n imported: 'default',\n local: parentPath.get('id') as NodePath<Identifier>,\n });\n\n continue;\n }\n\n if (importType === 'import:*') {\n result.push(importItem);\n break;\n }\n\n debug('unfoldNamespaceImports: unknown import type %o', importType);\n\n result.push(importItem);\n continue;\n }\n\n if (\n parentPath?.isExportSpecifier() ||\n parentPath?.isExportDefaultDeclaration()\n ) {\n // The whole namespace is re-exported\n result.push(importItem);\n break;\n }\n\n // Otherwise, we can't predict usage and import it as is\n // TODO: handle more cases\n debug(\n 'unfoldNamespaceImports: unknown reference %o',\n referencePath.node.type\n );\n result.push(importItem);\n break;\n }\n\n return result;\n}\n\nfunction collectFromExportAllDeclaration(\n path: NodePath<ExportAllDeclaration>,\n state: ILocalState\n): void {\n if (isType(path)) return;\n const source = path.get('source')?.node?.value;\n if (!source) return;\n\n // It is `export * from './css';`\n state.reexports.push({\n exported: '*',\n imported: '*',\n local: path,\n source,\n });\n}\n\nfunction collectFromExportSpecifier(\n path: NodePath<\n ExportSpecifier | ExportDefaultSpecifier | ExportNamespaceSpecifier\n >,\n source: string | undefined,\n state: ILocalState\n): void {\n if (path.isExportSpecifier()) {\n const exported = getValue(path.get('exported'));\n if (source) {\n // It is `export { foo } from './css';`\n const imported = path.get('local').node.name;\n state.reexports.push({\n exported,\n imported,\n local: path,\n source,\n });\n } else {\n const local = path.get('local');\n // eslint-disable-next-line no-param-reassign\n state.exports[exported] = local;\n }\n\n return;\n }\n\n if (path.isExportDefaultSpecifier() && source) {\n // It is `export default from './css';`\n state.reexports.push({\n exported: 'default',\n imported: 'default',\n local: path,\n source,\n });\n }\n\n if (path.isExportNamespaceSpecifier() && source) {\n const exported = path.get('exported').node.name;\n // It is `export * as foo from './css';`\n state.reexports.push({\n exported,\n imported: '*',\n local: path,\n source,\n });\n }\n\n // TODO: handle other cases\n debug(\n 'collectFromExportSpecifier: unprocessed ExportSpecifier %o',\n path.node.type\n );\n}\n\nfunction collectFromExportNamedDeclaration(\n path: NodePath<ExportNamedDeclaration>,\n state: ILocalState\n): void {\n if (isType(path)) return;\n\n const source = path.get('source')?.node?.value;\n const specifiers = path.get('specifiers');\n if (specifiers) {\n specifiers.forEach((specifier) =>\n collectFromExportSpecifier(specifier, source, state)\n );\n }\n\n const declaration = path.get('declaration');\n if (declaration.isVariableDeclaration()) {\n declaration.get('declarations').forEach((declarator) => {\n // eslint-disable-next-line no-param-reassign\n state.exports = {\n ...state.exports,\n ...exportFromVariableDeclarator(declarator),\n };\n });\n }\n\n if (declaration.isTSEnumDeclaration()) {\n // eslint-disable-next-line no-param-reassign\n state.exports[declaration.get('id').node.name] = declaration;\n }\n\n if (declaration.isFunctionDeclaration()) {\n const id = declaration.get('id');\n if (id.isIdentifier()) {\n // eslint-disable-next-line no-param-reassign\n state.exports[id.node.name] = id;\n }\n }\n\n if (declaration.isClassDeclaration()) {\n const id = declaration.get('id');\n if (id.isIdentifier()) {\n // eslint-disable-next-line no-param-reassign\n state.exports[id.node.name] = id;\n }\n }\n}\n\nfunction collectFromExportDefaultDeclaration(\n path: NodePath<ExportDefaultDeclaration>,\n state: ILocalState\n): void {\n if (isType(path)) return;\n\n // eslint-disable-next-line no-param-reassign\n state.exports.default = path.get('declaration');\n}\n\nfunction collectFromAssignmentExpression(\n path: NodePath<AssignmentExpression>,\n state: ILocalState\n): void {\n if (isChainOfVoidAssignment(path)) {\n return;\n }\n\n const left = path.get('left');\n const right = path.get('right');\n\n let exported: IReexport['exported'] | undefined;\n\n if (left.isMemberExpression() && isExports(left.get('object'))) {\n const property = left.get('property');\n if (property.isIdentifier()) {\n exported = property.node.name;\n }\n } else if (isExports(left)) {\n // module.exports = ...\n if (!isAlreadyProcessed(right)) {\n exported = 'default';\n }\n }\n\n if (!exported) return;\n\n if (!right.isCallExpression() || !isRequire(right.get('callee'))) {\n // eslint-disable-next-line no-param-reassign\n state.exports[exported] = right;\n return;\n }\n\n const sourcePath = right.get('arguments')?.[0];\n const source = sourcePath.isStringLiteral()\n ? sourcePath.node.value\n : undefined;\n if (!source) return;\n\n // It is `exports.foo = require('./css');`\n\n if (state.exports[exported]) {\n // eslint-disable-next-line no-param-reassign\n delete state.exports[exported];\n }\n\n state.reexports.push({\n exported,\n imported: '*',\n local: path,\n source,\n });\n\n path.skip();\n}\n\nfunction collectFromExportStarCall(\n path: NodePath<CallExpression>,\n state: ILocalState\n) {\n const [requireCall, exports] = path.get('arguments');\n if (!isExports(exports)) return;\n if (!requireCall.isCallExpression()) return;\n const callee = requireCall.get('callee');\n const sourcePath = requireCall.get('arguments')?.[0];\n if (!isRequire(callee) || !sourcePath.isStringLiteral()) return;\n\n const source = sourcePath.node.value;\n if (!source) return;\n\n state.reexports.push({\n exported: '*',\n imported: '*',\n local: path,\n source,\n });\n\n path.skip();\n}\n\nfunction collectFromMap(map: NodePath<ObjectExpression>, state: ILocalState) {\n const properties = map.get('properties');\n properties.forEach((property) => {\n if (!property.isObjectProperty()) return;\n const key = property.get('key');\n const value = property.get('value');\n if (!key.isIdentifier()) return;\n const exported = key.node.name;\n\n if (!value.isFunction()) return;\n if (value.node.params.length !== 0) return;\n\n const returnValue = getReturnValue(value);\n if (!returnValue) return;\n\n addExport(returnValue, exported, state);\n });\n}\n\nfunction collectFromEsbuildExportCall(\n path: NodePath<CallExpression>,\n state: ILocalState\n) {\n const [sourceExports, map] = path.get('arguments');\n if (!sourceExports.isIdentifier({ name: 'source_exports' })) return;\n if (!map.isObjectExpression()) return;\n\n collectFromMap(map, state);\n\n path.skip();\n}\n\nfunction collectFromEsbuildReExportCall(\n path: NodePath<CallExpression>,\n state: ILocalState\n) {\n const [sourceExports, requireCall, exports] = path.get('arguments');\n if (!sourceExports.isIdentifier({ name: 'source_exports' })) return;\n if (!requireCall.isCallExpression()) return;\n if (!isExports(exports)) return;\n\n const callee = requireCall.get('callee');\n if (!isRequire(callee)) return;\n const sourcePath = requireCall.get('arguments')?.[0];\n if (!sourcePath.isStringLiteral()) return;\n\n state.reexports.push({\n exported: '*',\n imported: '*',\n local: path,\n source: sourcePath.node.value,\n });\n\n path.skip();\n}\n\nfunction collectFromSwcExportCall(\n path: NodePath<CallExpression>,\n state: ILocalState\n) {\n const [exports, map] = path.get('arguments');\n if (!isExports(exports)) return;\n if (!map.isObjectExpression()) return;\n\n collectFromMap(map, state);\n\n path.skip();\n}\n\nfunction collectFromCallExpression(\n path: NodePath<CallExpression>,\n state: ILocalState\n) {\n const maybeExportStart = path.get('callee');\n if (!maybeExportStart.isIdentifier()) {\n return;\n }\n\n const { name } = maybeExportStart.node;\n\n // TypeScript\n if (name.startsWith('__exportStar')) {\n collectFromExportStarCall(path, state);\n return;\n }\n\n // swc\n if (name === '_exportStar') {\n collectFromExportStarCall(path, state);\n }\n\n if (name === '_export') {\n collectFromSwcExportCall(path, state);\n }\n\n // esbuild\n if (name === '__export') {\n collectFromEsbuildExportCall(path, state);\n }\n\n if (name === '__reExport') {\n collectFromEsbuildReExportCall(path, state);\n }\n}\n\nexport function collectExportsAndImports(\n path: NodePath<Program>,\n cacheMode: 'disabled' | 'force' | 'enabled' = 'enabled'\n): IState {\n const localState: ILocalState = {\n deadExports: [],\n exportRefs: new Map(),\n exports: {},\n imports: [],\n reexports: [],\n isEsModule: path.node.sourceType === 'module',\n processedRequires: new WeakSet(),\n };\n\n const cache =\n cacheMode !== 'disabled'\n ? getTraversalCache<IState>(path, 'collectExportsAndImports')\n : undefined;\n\n if (cacheMode === 'enabled' && cache?.has(path)) {\n return cache.get(path) ?? localState;\n }\n\n path.traverse(\n {\n AssignmentExpression: collectFromAssignmentExpression,\n CallExpression: collectFromCallExpression,\n ExportAllDeclaration: collectFromExportAllDeclaration,\n ExportDefaultDeclaration: collectFromExportDefaultDeclaration,\n ExportNamedDeclaration: collectFromExportNamedDeclaration,\n ImportDeclaration: collectFromImportDeclaration,\n Import: collectFromDynamicImport,\n Identifier: collectFromRequireOrExports,\n VariableDeclarator: collectFromVariableDeclarator,\n },\n localState\n );\n\n const { processedRequires, ...state } = localState;\n\n cache?.set(path, state);\n\n return state;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"collectExportsAndImports.js","names":["_shared","require","_getScope","_isExports","_isNotNull","_isRequire","_isTypedNode","_traversalCache","sideEffectImport","item","imported","exports","explicitImport","getValue","node","type","name","value","isType","p","importKind","exportKind","collectors","ImportSpecifier","path","source","get","local","ImportDefaultSpecifier","ImportNamespaceSpecifier","unfoldNamespaceImport","collectFromImportDeclaration","state","specifiers","length","imports","push","forEach","specifier","isImportSpecifier","collector","getAncestorsWhile","cond","result","current","parentPath","whatIsDestructed","objectPattern","destructedProps","traverse","Identifier","identifier","isBindingIdentifier","parent","isObjectProperty","chain","filter","isTypedNode","map","key","isIdentifier","isNotNull","reverse","what","as","isRestElement","argument","debug","logger","extend","importFromVariableDeclarator","isSync","id","isObjectPattern","findIIFE","isCallExpression","isFunctionExpression","exportFromVariableDeclarator","init","binding","getScope","getBinding","iife","referencePaths","constantViolations","find","isExpression","reduce","acc","destructed","collectFromDynamicImport","callExpression","sourcePath","isStringLiteral","container","isAwaited","isAwaitExpression","isVariableDeclarator","prop","getCalleeName","callee","isMemberExpression","property","undefined","matchCall","rules","some","n","args","fnArgs","every","arg","i","getImportExportTypeByInteropFunction","argPath","isExports","isEmptyObject","isArrayExpression","isAlreadyProcessed","isRequireCall","isRequire","isObjectExpression","properties","pathOrName","collectFromRequire","processedRequires","has","add","reexports","exported","variableDeclarator","unfolded","isExpressionStatement","collectFromVariableDeclarator","found","identifierPath","skip","isChainOfVoidAssignment","right","isUnaryExpression","operator","isAssignmentExpression","getReturnValue","params","body","_body$get","returnStatement","isReturnStatement","getGetterValueFromDescriptor","descriptor","props","getter","isArrowFunctionExpression","valueProp","valueValue","addExport","getRelatedImport","object","objectBinding","scope","isAncestor","computed","import","relatedImport","collectFromExports","memberExpression","exportName","saveRef","exportRefs","set","assignmentExpression","left","isEsModule","matchesPattern","obj","collectFromRequireOrExports","importItem","referenced","referencePath","_binding$referencePat","ancestor","isTSType","isFlowType","listKey","importType","isExportSpecifier","isExportDefaultDeclaration","collectFromExportAllDeclaration","_path$get","collectFromExportSpecifier","isExportDefaultSpecifier","isExportNamespaceSpecifier","collectFromExportNamedDeclaration","_path$get2","declaration","isVariableDeclaration","declarator","isTSEnumDeclaration","isFunctionDeclaration","isClassDeclaration","collectFromExportDefaultDeclaration","default","collectFromAssignmentExpression","_right$get","imp","collectAllFromCall","_requireCall$get","requireCall","collectFromMap","isFunction","returnValue","collectMapFromCall","mapPosition","collectFromEsbuildReExportCall","_requireCall$get2","sourceExports","someCall","firstArg","collectFromCallExpression","maybeExportStart","secondArg","collectExportsAndImports","cacheMode","localState","deadExports","Map","sourceType","WeakSet","cache","getTraversalCache","_cache$get","AssignmentExpression","CallExpression","ExportAllDeclaration","ExportDefaultDeclaration","ExportNamedDeclaration","ImportDeclaration","Import","VariableDeclarator"],"sources":["../../src/utils/collectExportsAndImports.ts"],"sourcesContent":["/* eslint @typescript-eslint/no-use-before-define: [\"error\", { \"functions\": false }] */\n/* eslint-disable no-restricted-syntax,no-continue */\n\nimport type { NodePath } from '@babel/traverse';\nimport type {\n ArrayExpression,\n AssignmentExpression,\n BlockStatement,\n CallExpression,\n ExportAllDeclaration,\n ExportDefaultDeclaration,\n ExportDefaultSpecifier,\n ExportNamedDeclaration,\n ExportNamespaceSpecifier,\n ExportSpecifier,\n Expression,\n Function as FunctionNode,\n Identifier,\n Import,\n ImportDeclaration,\n ImportDefaultSpecifier,\n ImportNamespaceSpecifier,\n ImportSpecifier,\n MemberExpression,\n ObjectExpression,\n ObjectPattern,\n Program,\n StringLiteral,\n VariableDeclarator,\n} from '@babel/types';\n\nimport { logger } from '@wyw-in-js/shared';\n\nimport { getScope } from './getScope';\nimport { isExports } from './isExports';\nimport { isNotNull } from './isNotNull';\nimport { isRequire } from './isRequire';\nimport { isTypedNode } from './isTypedNode';\nimport { getTraversalCache } from './traversalCache';\n\nexport interface ISideEffectImport {\n imported: 'side-effect';\n local: NodePath;\n source: string;\n}\n\nexport interface IImport {\n imported: string | 'default' | '*';\n local: NodePath<Identifier | MemberExpression>;\n source: string;\n type: 'cjs' | 'dynamic' | 'esm';\n}\n\nexport type Exports = Record<string | 'default' | '*', NodePath>; // '*' means re-export all\n\nexport interface IReexport {\n exported: string | 'default' | '*';\n imported: string | 'default' | '*';\n local: NodePath;\n source: string;\n}\n\nexport interface IState {\n deadExports: string[];\n exportRefs: Map<string, NodePath<MemberExpression>[]>;\n exports: Exports;\n imports: (IImport | ISideEffectImport)[];\n isEsModule: boolean;\n reexports: IReexport[];\n}\n\ninterface ILocalState extends IState {\n processedRequires: WeakSet<NodePath>;\n}\n\nexport const sideEffectImport = (\n item: IImport | ISideEffectImport\n): item is ISideEffectImport => item.imported === 'side-effect';\n\nexport const explicitImport = (\n item: IImport | ISideEffectImport\n): item is IImport => item.imported !== 'side-effect';\n\nfunction getValue({ node }: { node: Identifier | StringLiteral }): string {\n return node.type === 'Identifier' ? node.name : node.value;\n}\n\n// We ignore imports and exports of types\nconst isType = (p: {\n node: { importKind?: 'type' | unknown } | { exportKind?: 'type' | unknown };\n}): boolean =>\n ('importKind' in p.node && p.node.importKind === 'type') ||\n ('exportKind' in p.node && p.node.exportKind === 'type');\n\n// Force TypeScript to check, that we have implementation for every possible specifier\ntype SpecifierTypes = ImportDeclaration['specifiers'][number];\nconst collectors: {\n [K in SpecifierTypes['type']]: (\n path: NodePath<SpecifierTypes & { type: K }>,\n source: string\n ) => IImport[];\n} = {\n ImportSpecifier(path: NodePath<ImportSpecifier>, source): IImport[] {\n if (isType(path)) return [];\n const imported = getValue(path.get('imported'));\n const local = path.get('local');\n return [{ imported, local, source, type: 'esm' }];\n },\n\n ImportDefaultSpecifier(\n path: NodePath<ImportDefaultSpecifier>,\n source\n ): IImport[] {\n const local = path.get('local');\n return [{ imported: 'default', local, source, type: 'esm' }];\n },\n\n ImportNamespaceSpecifier(\n path: NodePath<ImportNamespaceSpecifier>,\n source\n ): IImport[] {\n const local = path.get('local');\n return unfoldNamespaceImport({ imported: '*', local, source, type: 'esm' });\n },\n};\n\nfunction collectFromImportDeclaration(\n path: NodePath<ImportDeclaration>,\n state: ILocalState\n): void {\n // If importKind is specified, and it's not a value, ignore that import\n if (isType(path)) return;\n\n const source = getValue(path.get('source'));\n const specifiers = path.get('specifiers');\n\n if (specifiers.length === 0) {\n state.imports.push({ imported: 'side-effect', local: path, source });\n }\n\n specifiers.forEach(<T extends SpecifierTypes>(specifier: NodePath<T>) => {\n if (specifier.isImportSpecifier() && isType(specifier)) return;\n\n const collector = collectors[\n specifier.node.type\n ] as (typeof collectors)[T['type']];\n\n state.imports.push(...collector(specifier, source));\n });\n}\n\ninterface IDestructed {\n as: NodePath<Identifier>;\n what: string | '*';\n}\n\nfunction getAncestorsWhile(path: NodePath, cond: (p: NodePath) => boolean) {\n const result: NodePath[] = [];\n let current: NodePath | null = path;\n while (current && cond(current)) {\n result.push(current);\n current = current.parentPath;\n }\n\n return result;\n}\n\nfunction whatIsDestructed(\n objectPattern: NodePath<ObjectPattern>\n): IDestructed[] {\n const destructedProps: IDestructed[] = [];\n objectPattern.traverse({\n Identifier(identifier) {\n if (identifier.isBindingIdentifier()) {\n const parent = identifier.parentPath;\n if (parent.isObjectProperty({ value: identifier.node })) {\n const chain = getAncestorsWhile(parent, (p) => p !== objectPattern)\n .filter(isTypedNode('ObjectProperty'))\n .map((p) => {\n const key = p.get('key');\n if (!key.isIdentifier()) {\n // TODO: try to process other type of keys or at least warn about this\n return null;\n }\n\n return key;\n })\n .filter(isNotNull);\n chain.reverse();\n\n if (chain.length > 0) {\n destructedProps.push({\n what: chain[0].node.name,\n as: identifier,\n });\n }\n\n return;\n }\n\n if (parent.isRestElement({ argument: identifier.node })) {\n destructedProps.push({\n what: '*',\n as: identifier,\n });\n }\n }\n },\n });\n\n return destructedProps;\n}\n\nconst debug = logger.extend('evaluator:collectExportsAndImports');\n\nfunction importFromVariableDeclarator(\n path: NodePath<VariableDeclarator>,\n isSync: boolean\n): IDestructed[] {\n const id = path.get('id');\n if (id.isIdentifier()) {\n // It's the simplest case when the full namespace is imported\n return [\n {\n as: id,\n what: '*',\n },\n ];\n }\n\n if (!isSync) {\n // Something went wrong\n // Is it something like `const { … } = import(…)`?\n debug('`import` should be awaited');\n return [];\n }\n\n if (id.isObjectPattern()) {\n return whatIsDestructed(id);\n }\n\n // What else it can be?\n debug('importFromVariableDeclarator: unknown type of id %o', id.node.type);\n\n return [];\n}\n\nconst findIIFE = (path: NodePath): NodePath<CallExpression> | null => {\n if (path.isCallExpression() && path.get('callee').isFunctionExpression()) {\n return path;\n }\n\n if (!path.parentPath) {\n return null;\n }\n\n return findIIFE(path.parentPath);\n};\n\nfunction exportFromVariableDeclarator(\n path: NodePath<VariableDeclarator>\n): Exports {\n const id = path.get('id');\n const init = path.get('init');\n\n // If there is no init and id is an identifier, we should find IIFE\n if (!init.node && id.isIdentifier()) {\n const binding = getScope(path).getBinding(id.node.name);\n if (!binding) {\n return {};\n }\n\n const iife = [\n ...binding.referencePaths,\n ...binding.constantViolations,\n binding.path,\n ]\n .map(findIIFE)\n .find(isNotNull);\n\n if (!iife) {\n return {};\n }\n\n return {\n [id.node.name]: iife,\n };\n }\n\n if (!init || !init.isExpression()) {\n return {};\n }\n\n if (id.isIdentifier()) {\n // It is `export const a = 1;`\n return {\n [id.node.name]: init,\n };\n }\n\n if (id.isObjectPattern()) {\n // It is `export const { a, ...rest } = obj;`\n return whatIsDestructed(id).reduce<Exports>(\n (acc, destructed) => ({\n ...acc,\n [destructed.as.node.name]: init,\n }),\n {}\n );\n }\n\n // What else it can be?\n debug('exportFromVariableDeclarator: unknown type of id %o', id.node.type);\n\n return {};\n}\n\nfunction collectFromDynamicImport(\n path: NodePath<Import>,\n state: ILocalState\n): void {\n const { parentPath: callExpression } = path;\n if (!callExpression.isCallExpression()) {\n // It's wrong `import`\n return;\n }\n\n const [sourcePath] = callExpression.get('arguments');\n if (!sourcePath || !sourcePath.isStringLiteral()) {\n // Import should have at least one argument, and it should be StringLiteral\n return;\n }\n\n const source = sourcePath.node.value;\n\n let { parentPath: container, key } = callExpression;\n let isAwaited = false;\n\n if (container.isAwaitExpression()) {\n // If it's not awaited import, it imports the full namespace\n isAwaited = true;\n key = container.key;\n container = container.parentPath!;\n }\n\n // Is it `const something = await import(\"something\")`?\n if (key === 'init' && container.isVariableDeclarator()) {\n importFromVariableDeclarator(container, isAwaited).map((prop) =>\n state.imports.push({\n imported: prop.what,\n local: prop.as,\n source,\n type: 'dynamic',\n })\n );\n }\n}\n\nfunction getCalleeName(path: NodePath<CallExpression>): string | undefined {\n const callee = path.get('callee');\n if (callee.isIdentifier()) {\n return callee.node.name;\n }\n\n if (callee.isMemberExpression()) {\n const property = callee.get('property');\n if (property.isIdentifier()) {\n return property.node.name;\n }\n }\n\n return undefined;\n}\n\ntype MatchRule = [\n name: string,\n ...args: (NodePath | '*' | ((p: NodePath) => boolean))[],\n];\n\nconst matchCall = (p: NodePath<CallExpression>, rules: MatchRule[]) => {\n const name = getCalleeName(p);\n\n if (name === undefined) {\n return false;\n }\n\n return rules.some(([n, ...args]) => {\n if (name !== n) return false;\n const fnArgs = p.get('arguments');\n if (fnArgs.length !== args.length) return false;\n return args.every((arg, i) => {\n if (arg === '*') return true;\n if (typeof arg === 'function') return arg(fnArgs[i]);\n return arg === fnArgs[i];\n });\n });\n};\n\nfunction getImportExportTypeByInteropFunction(\n path: NodePath<CallExpression>,\n argPath: NodePath\n): 'import:*' | 're-export:*' | 'default' | undefined {\n if (matchCall(path, [['__exportStar', argPath, (p) => isExports(p)]])) {\n return 're-export:*';\n }\n\n if (\n matchCall(path, [\n ['_interopRequireDefault', argPath], // babel and swc <1.3.50\n ['_interop_require_default', argPath], // swc >=1.3.50\n ['__importDefault', argPath], // ?\n ])\n ) {\n return 'default';\n }\n\n if (\n matchCall(path, [\n ['_interopRequireWildcard', argPath], // babel and swc <1.3.50\n ['_interop_require_wildcard', argPath], // swc >=1.3.50\n ['__importStar', argPath], // ?\n ['__toESM', argPath], // esbuild >=0.14.7\n ['__toModule', argPath], // esbuild <0.14.7\n ])\n ) {\n return 'import:*';\n }\n\n if (\n matchCall(path, [\n ['_extends', isEmptyObject, argPath], // babel and swc\n ['__rest', argPath, isArrayExpression], // tsc and esbuild <=0.11.3\n ['__objRest', argPath, isArrayExpression], // esbuild >0.11.3\n ['_objectWithoutProperties', argPath, isArrayExpression], // babel and swc <1.3.50\n ['_object_without_properties', argPath, isArrayExpression], // swc >=1.3.50\n ['_objectDestructuringEmpty', argPath], // swc <1.3.50\n ['_object_destructuring_empty', argPath], // swc >=1.3.50\n ])\n ) {\n return 'import:*';\n }\n\n return undefined;\n}\n\nfunction isAlreadyProcessed(path: NodePath): boolean {\n if (\n path.isCallExpression() &&\n path.get('callee').isIdentifier({ name: '__toCommonJS' })\n ) {\n // because its esbuild and we already processed all exports\n return true;\n }\n\n return false;\n}\n\nfunction isRequireCall(path: NodePath): path is NodePath<CallExpression> {\n return path.isCallExpression() && isRequire(path.get('callee'));\n}\n\nfunction isEmptyObject(path: NodePath): path is NodePath<ObjectExpression> {\n return path.isObjectExpression() && path.node.properties.length === 0;\n}\n\nfunction isArrayExpression(path: NodePath): path is NodePath<ArrayExpression> {\n return path.isArrayExpression();\n}\n\nfunction isCallExpression(path: NodePath): path is NodePath<CallExpression>;\nfunction isCallExpression(\n calleeName: string\n): (path: NodePath) => path is NodePath<CallExpression>;\nfunction isCallExpression(pathOrName: NodePath | string) {\n if (typeof pathOrName === 'string') {\n return (p: NodePath) =>\n p.isCallExpression() &&\n p.get('callee').isIdentifier({ name: pathOrName });\n }\n\n return pathOrName.isCallExpression();\n}\n\nfunction isObjectExpression(\n path: NodePath\n): path is NodePath<ObjectExpression> {\n return path.isObjectExpression();\n}\n\nfunction isIdentifier(name: string) {\n return (path: NodePath): path is NodePath<Identifier> =>\n path.isIdentifier({ name });\n}\n\nfunction collectFromRequire(\n path: NodePath<Identifier>,\n state: ILocalState\n): void {\n if (!isRequire(path)) return;\n\n // This method can be reached many times from multiple visitors for the same path\n // So we need to check if we already processed it\n if (state.processedRequires.has(path)) return;\n state.processedRequires.add(path);\n\n const { parentPath: callExpression } = path;\n if (!callExpression.isCallExpression()) {\n // It's wrong `require`\n return;\n }\n\n const [sourcePath] = callExpression.get('arguments');\n if (!sourcePath || !sourcePath.isStringLiteral()) {\n // Import should have at least one argument, and it should be StringLiteral\n return;\n }\n\n const source = sourcePath.node.value;\n\n const { parentPath: container, key } = callExpression;\n\n if (container.isCallExpression()) {\n // It may be transpiled import such as\n // `var _atomic = _interopRequireDefault(require(\"@linaria/atomic\"));`\n const imported = getImportExportTypeByInteropFunction(\n container,\n callExpression\n );\n if (!imported) {\n // It's not a transpiled import.\n // TODO: Can we guess that it's a namespace import?\n debug('Unknown wrapper of require: %o', container.node.callee);\n return;\n }\n\n if (imported === 're-export:*') {\n state.reexports.push({\n exported: '*',\n imported: '*',\n local: path,\n source,\n });\n\n return;\n }\n\n let { parentPath: variableDeclarator } = container;\n if (variableDeclarator.isCallExpression()) {\n if (variableDeclarator.get('callee').isIdentifier({ name: '_extends' })) {\n variableDeclarator = variableDeclarator.parentPath!;\n }\n }\n\n if (!variableDeclarator.isVariableDeclarator()) {\n // TODO: Where else it can be?\n debug('Unexpected require inside %o', variableDeclarator.node.type);\n return;\n }\n\n const id = variableDeclarator.get('id');\n if (!id.isIdentifier()) {\n debug('Id should be Identifier %o', variableDeclarator.node.type);\n return;\n }\n\n if (imported === 'import:*') {\n const unfolded = unfoldNamespaceImport({\n imported: '*',\n local: id,\n source,\n type: 'cjs',\n });\n state.imports.push(...unfolded);\n } else {\n state.imports.push({\n imported,\n local: id,\n source,\n type: 'cjs',\n });\n }\n }\n\n if (container.isMemberExpression()) {\n // It is `require('@linaria/shaker').dep`\n const property = container.get('property');\n if (!property.isIdentifier() && !property.isStringLiteral()) {\n debug(\n 'Property should be Identifier or StringLiteral %s',\n property.node.type\n );\n\n return;\n }\n\n const { parentPath: variableDeclarator } = container;\n\n if (variableDeclarator.isVariableDeclarator()) {\n // It is `const … = require('@linaria/shaker').dep`;\n const id = variableDeclarator.get('id');\n if (id.isIdentifier()) {\n state.imports.push({\n imported: getValue(property),\n local: id,\n source,\n type: 'cjs',\n });\n } else {\n debug('Id should be Identifier %o', variableDeclarator.node.type);\n }\n } else {\n // Maybe require is passed as an argument to some function?\n // Just use the whole MemberExpression as a local\n state.imports.push({\n imported: getValue(property),\n local: container,\n source,\n type: 'cjs',\n });\n }\n\n return;\n }\n\n // Is it `const something = require(\"something\")`?\n if (key === 'init' && container.isVariableDeclarator()) {\n importFromVariableDeclarator(container, true).forEach((prop) => {\n if (prop.what === '*') {\n const unfolded = unfoldNamespaceImport({\n imported: '*',\n local: prop.as,\n source,\n type: 'cjs',\n });\n\n state.imports.push(...unfolded);\n } else {\n state.imports.push({\n imported: prop.what,\n local: prop.as,\n source,\n type: 'cjs',\n });\n }\n });\n }\n\n if (container.isExpressionStatement()) {\n // Looks like standalone require\n state.imports.push({\n imported: 'side-effect',\n local: container,\n source,\n });\n }\n}\n\nfunction collectFromVariableDeclarator(\n path: NodePath<VariableDeclarator>,\n state: ILocalState\n): void {\n let found = false;\n path.traverse({\n Identifier(identifierPath) {\n if (isRequire(identifierPath)) {\n collectFromRequire(identifierPath, state);\n found = true;\n }\n },\n });\n\n if (found) {\n path.skip();\n }\n}\n\nfunction isChainOfVoidAssignment(\n path: NodePath<AssignmentExpression>\n): boolean {\n const right = path.get('right');\n if (right.isUnaryExpression({ operator: 'void' })) {\n return true;\n }\n\n if (right.isAssignmentExpression()) {\n return isChainOfVoidAssignment(right);\n }\n\n return false;\n}\n\nfunction getReturnValue(\n path: NodePath<FunctionNode>\n): NodePath<Expression> | undefined {\n if (path.node.params.length !== 0) return undefined;\n\n const body = path.get('body') as\n | NodePath<BlockStatement>\n | NodePath<Expression>;\n if (body.isExpression()) {\n return body;\n }\n\n if (body.node.body.length === 1) {\n const returnStatement = body.get('body')?.[0];\n if (!returnStatement.isReturnStatement()) return undefined;\n const argument = returnStatement.get('argument');\n if (!argument.isExpression()) return undefined;\n return argument;\n }\n\n return undefined;\n}\n\nfunction getGetterValueFromDescriptor(\n descriptor: NodePath<ObjectExpression>\n): NodePath<Expression> | undefined {\n const props = descriptor\n .get('properties')\n .filter(isTypedNode('ObjectProperty'));\n\n const getter = props.find((p) => p.get('key').isIdentifier({ name: 'get' }));\n const value = getter?.get('value');\n\n if (value?.isFunctionExpression() || value?.isArrowFunctionExpression()) {\n return getReturnValue(value);\n }\n\n const valueProp = props.find((p) =>\n p.get('key').isIdentifier({ name: 'value' })\n );\n\n const valueValue = valueProp?.get('value');\n\n return valueValue?.isExpression() ? valueValue : undefined;\n}\n\nfunction addExport(path: NodePath, exported: string, state: ILocalState): void {\n function getRelatedImport() {\n if (path.isMemberExpression()) {\n const object = path.get('object');\n if (!object.isIdentifier()) {\n return undefined;\n }\n\n const objectBinding = object.scope.getBinding(object.node.name);\n if (!objectBinding) {\n return undefined;\n }\n\n if (objectBinding.path.isVariableDeclarator()) {\n collectFromVariableDeclarator(objectBinding.path, state);\n }\n\n const found = state.imports.find(\n (i) =>\n objectBinding.identifier === i.local.node ||\n objectBinding.referencePaths.some((p) => i.local.isAncestor(p))\n );\n\n if (!found) {\n return undefined;\n }\n\n const property = path.get('property');\n let what = '*';\n if (path.node.computed && property.isStringLiteral()) {\n what = property.node.value;\n } else if (!path.node.computed && property.isIdentifier()) {\n what = property.node.name;\n }\n\n return {\n import: { ...found, local: path },\n what,\n };\n }\n\n return undefined;\n }\n\n const relatedImport = getRelatedImport();\n if (relatedImport) {\n // eslint-disable-next-line no-param-reassign\n state.reexports.push({\n local: relatedImport.import.local,\n imported: relatedImport.import.imported,\n source: relatedImport.import.source,\n exported,\n });\n } else {\n // eslint-disable-next-line no-param-reassign\n state.exports[exported] = path;\n }\n}\n\nfunction collectFromExports(\n path: NodePath<Identifier>,\n state: ILocalState\n): void {\n if (!isExports(path)) return;\n\n if (path.parentPath.isMemberExpression({ object: path.node })) {\n // It is `exports.prop = …`\n const memberExpression = path.parentPath;\n const property = memberExpression.get('property');\n if (!property.isIdentifier() || memberExpression.node.computed) {\n return;\n }\n\n const exportName = property.node.name;\n\n const saveRef = () => {\n // Save all export.____ usages for later\n if (!state.exportRefs.has(exportName)) {\n state.exportRefs.set(exportName, []);\n }\n\n state.exportRefs.get(exportName)!.push(memberExpression);\n };\n\n const assignmentExpression = memberExpression.parentPath;\n\n if (\n !assignmentExpression.isAssignmentExpression({\n left: memberExpression.node,\n })\n ) {\n // If it's not `exports.prop = …`. Just save it.\n saveRef();\n return;\n }\n\n const right = assignmentExpression.get('right');\n\n if (isChainOfVoidAssignment(assignmentExpression)) {\n // It is `exports.foo = void 0`\n return;\n }\n\n if (exportName === '__esModule') {\n // eslint-disable-next-line no-param-reassign\n state.isEsModule = true;\n return;\n }\n\n saveRef();\n // eslint-disable-next-line no-param-reassign\n state.exports[property.node.name] = right;\n\n return;\n }\n\n if (\n path.parentPath.isCallExpression() &&\n path.parentPath.get('callee').matchesPattern('Object.defineProperty')\n ) {\n const [obj, prop, descriptor] = path.parentPath.get('arguments');\n if (\n obj?.isIdentifier(path.node) &&\n prop?.isStringLiteral() &&\n descriptor?.isObjectExpression()\n ) {\n if (prop.node.value === '__esModule') {\n // eslint-disable-next-line no-param-reassign\n state.isEsModule = true;\n } else {\n /**\n * Object.defineProperty(exports, \"token\", {\n * enumerable: true,\n * get: function get() {\n * return _unknownPackage.token;\n * }\n * });\n */\n const exported = prop.node.value;\n const local = getGetterValueFromDescriptor(descriptor);\n if (local) {\n addExport(local, exported, state);\n }\n }\n } else if (\n obj?.isIdentifier(path.node) &&\n prop?.isIdentifier() &&\n descriptor?.isObjectExpression()\n ) {\n /**\n * Object.defineProperty(exports, key, {\n * enumerable: true,\n * get: function get() {\n * return _unknownPackage[key];\n * }\n * });\n */\n const local = getGetterValueFromDescriptor(descriptor);\n if (local) {\n addExport(local, '*', state);\n }\n }\n }\n}\n\nfunction collectFromRequireOrExports(\n path: NodePath<Identifier>,\n state: ILocalState\n): void {\n if (isRequire(path)) {\n collectFromRequire(path, state);\n } else if (isExports(path)) {\n collectFromExports(path, state);\n }\n}\n\nfunction unfoldNamespaceImport(\n importItem: IImport & { imported: '*' }\n): IImport[] {\n const result: IImport[] = [];\n const { local } = importItem;\n if (!local.isIdentifier()) {\n // TODO: handle it\n return [importItem];\n }\n\n const binding = getScope(local).getBinding(local.node.name);\n if (!binding?.referenced) {\n // Imported namespace is not referenced and probably not used,\n // but it can have side effects, so we should keep it as is\n return [\n {\n ...importItem,\n imported: 'side-effect',\n },\n ];\n }\n\n for (const referencePath of binding?.referencePaths ?? []) {\n if (\n referencePath.find(\n (ancestor) => ancestor.isTSType() || ancestor.isFlowType()\n )\n ) {\n continue;\n }\n\n const { parentPath } = referencePath;\n if (parentPath?.isMemberExpression() && referencePath.key === 'object') {\n const property = parentPath.get('property');\n const object = parentPath.get('object');\n let imported: string | null;\n if (parentPath.node.computed && property.isStringLiteral()) {\n imported = property.node.value;\n } else if (!parentPath.node.computed && property.isIdentifier()) {\n imported = property.node.name;\n } else {\n imported = null;\n }\n\n if (object.isIdentifier() && imported) {\n result.push({\n ...importItem,\n imported,\n local: parentPath,\n });\n } else {\n result.push(importItem);\n break;\n }\n\n continue;\n }\n\n if (parentPath?.isVariableDeclarator() && referencePath.key === 'init') {\n importFromVariableDeclarator(parentPath, true).map((prop) =>\n result.push({ ...importItem, imported: prop.what, local: prop.as })\n );\n\n continue;\n }\n\n if (\n parentPath?.isCallExpression() &&\n referencePath.listKey === 'arguments'\n ) {\n // The defined variable is used as a function argument. Let's try to figure out what is imported.\n const importType = getImportExportTypeByInteropFunction(\n parentPath,\n referencePath\n );\n\n if (!importType) {\n // Imported value is used as an unknown function argument,\n // so we can't predict usage and import it as is.\n result.push(importItem);\n break;\n }\n\n if (importType === 'default') {\n result.push({\n ...importItem,\n imported: 'default',\n local: parentPath.get('id') as NodePath<Identifier>,\n });\n\n continue;\n }\n\n if (importType === 'import:*') {\n result.push(importItem);\n break;\n }\n\n debug('unfoldNamespaceImports: unknown import type %o', importType);\n\n result.push(importItem);\n continue;\n }\n\n if (\n parentPath?.isExportSpecifier() ||\n parentPath?.isExportDefaultDeclaration()\n ) {\n // The whole namespace is re-exported\n result.push(importItem);\n break;\n }\n\n // Otherwise, we can't predict usage and import it as is\n // TODO: handle more cases\n debug(\n 'unfoldNamespaceImports: unknown reference %o',\n referencePath.node.type\n );\n result.push(importItem);\n break;\n }\n\n return result;\n}\n\nfunction collectFromExportAllDeclaration(\n path: NodePath<ExportAllDeclaration>,\n state: ILocalState\n): void {\n if (isType(path)) return;\n const source = path.get('source')?.node?.value;\n if (!source) return;\n\n // It is `export * from './css';`\n state.reexports.push({\n exported: '*',\n imported: '*',\n local: path,\n source,\n });\n}\n\nfunction collectFromExportSpecifier(\n path: NodePath<\n ExportSpecifier | ExportDefaultSpecifier | ExportNamespaceSpecifier\n >,\n source: string | undefined,\n state: ILocalState\n): void {\n if (path.isExportSpecifier()) {\n const exported = getValue(path.get('exported'));\n if (source) {\n // It is `export { foo } from './css';`\n const imported = path.get('local').node.name;\n state.reexports.push({\n exported,\n imported,\n local: path,\n source,\n });\n } else {\n const local = path.get('local');\n // eslint-disable-next-line no-param-reassign\n state.exports[exported] = local;\n }\n\n return;\n }\n\n if (path.isExportDefaultSpecifier() && source) {\n // It is `export default from './css';`\n state.reexports.push({\n exported: 'default',\n imported: 'default',\n local: path,\n source,\n });\n }\n\n if (path.isExportNamespaceSpecifier() && source) {\n const exported = path.get('exported').node.name;\n // It is `export * as foo from './css';`\n state.reexports.push({\n exported,\n imported: '*',\n local: path,\n source,\n });\n }\n\n // TODO: handle other cases\n debug(\n 'collectFromExportSpecifier: unprocessed ExportSpecifier %o',\n path.node.type\n );\n}\n\nfunction collectFromExportNamedDeclaration(\n path: NodePath<ExportNamedDeclaration>,\n state: ILocalState\n): void {\n if (isType(path)) return;\n\n const source = path.get('source')?.node?.value;\n const specifiers = path.get('specifiers');\n if (specifiers) {\n specifiers.forEach((specifier) =>\n collectFromExportSpecifier(specifier, source, state)\n );\n }\n\n const declaration = path.get('declaration');\n if (declaration.isVariableDeclaration()) {\n declaration.get('declarations').forEach((declarator) => {\n // eslint-disable-next-line no-param-reassign\n state.exports = {\n ...state.exports,\n ...exportFromVariableDeclarator(declarator),\n };\n });\n }\n\n if (declaration.isTSEnumDeclaration()) {\n // eslint-disable-next-line no-param-reassign\n state.exports[declaration.get('id').node.name] = declaration;\n }\n\n if (declaration.isFunctionDeclaration()) {\n const id = declaration.get('id');\n if (id.isIdentifier()) {\n // eslint-disable-next-line no-param-reassign\n state.exports[id.node.name] = id;\n }\n }\n\n if (declaration.isClassDeclaration()) {\n const id = declaration.get('id');\n if (id.isIdentifier()) {\n // eslint-disable-next-line no-param-reassign\n state.exports[id.node.name] = id;\n }\n }\n}\n\nfunction collectFromExportDefaultDeclaration(\n path: NodePath<ExportDefaultDeclaration>,\n state: ILocalState\n): void {\n if (isType(path)) return;\n\n // eslint-disable-next-line no-param-reassign\n state.exports.default = path.get('declaration');\n}\n\nfunction collectFromAssignmentExpression(\n path: NodePath<AssignmentExpression>,\n state: ILocalState\n): void {\n if (isChainOfVoidAssignment(path)) {\n return;\n }\n\n const left = path.get('left');\n const right = path.get('right');\n\n let exported: IReexport['exported'] | undefined;\n\n if (left.isMemberExpression() && isExports(left.get('object'))) {\n const property = left.get('property');\n if (!left.node.computed && property.isIdentifier()) {\n exported = property.node.name;\n } else if (left.node.computed && property.isStringLiteral()) {\n exported = property.node.value;\n }\n } else if (isExports(left)) {\n // module.exports = ...\n if (!isAlreadyProcessed(right)) {\n exported = 'default';\n }\n }\n\n if (!exported) return;\n\n if (exported === '__esModule') {\n // eslint-disable-next-line no-param-reassign\n state.isEsModule = true;\n return;\n }\n\n if (!isRequireCall(right)) {\n const relatedImport = state.imports.find((imp) => imp.local === right);\n if (relatedImport) {\n state.reexports.push({\n exported,\n ...relatedImport,\n });\n } else {\n // eslint-disable-next-line no-param-reassign\n state.exports[exported] = right;\n }\n\n path.skip();\n return;\n }\n\n const sourcePath = right.get('arguments')?.[0];\n const source = sourcePath.isStringLiteral()\n ? sourcePath.node.value\n : undefined;\n if (!source) return;\n\n // It is `exports.foo = require('./css');`\n\n if (state.exports[exported]) {\n // eslint-disable-next-line no-param-reassign\n delete state.exports[exported];\n }\n\n state.reexports.push({\n exported,\n imported: '*',\n local: path,\n source,\n });\n\n path.skip();\n}\n\nfunction collectAllFromCall(\n path: NodePath<CallExpression>,\n require: number | NodePath,\n state: ILocalState\n) {\n const requireCall =\n typeof require === 'number' ? path.get('arguments')[require] : require;\n if (!requireCall.isCallExpression()) return;\n const callee = requireCall.get('callee');\n const sourcePath = requireCall.get('arguments')?.[0];\n if (!isRequire(callee) || !sourcePath.isStringLiteral()) return;\n\n const source = sourcePath.node.value;\n if (!source) return;\n\n state.reexports.push({\n exported: '*',\n imported: '*',\n local: path,\n source,\n });\n\n path.skip();\n}\n\nfunction collectFromMap(map: NodePath<ObjectExpression>, state: ILocalState) {\n const properties = map.get('properties');\n properties.forEach((property) => {\n if (!property.isObjectProperty()) return;\n const key = property.get('key');\n const value = property.get('value');\n if (!key.isIdentifier()) return;\n const exported = key.node.name;\n\n if (!value.isFunction()) return;\n if (value.node.params.length !== 0) return;\n\n const returnValue = getReturnValue(value);\n if (!returnValue) return;\n\n addExport(returnValue, exported, state);\n });\n}\n\nfunction collectMapFromCall(\n path: NodePath<CallExpression>,\n mapPosition: number,\n state: ILocalState\n) {\n const map = path.get('arguments')[mapPosition];\n if (!map.isObjectExpression()) return;\n\n collectFromMap(map, state);\n\n path.skip();\n}\n\nfunction collectFromEsbuildReExportCall(\n path: NodePath<CallExpression>,\n state: ILocalState\n) {\n const [sourceExports, someCall, exports] = path.get('arguments');\n if (\n !sourceExports.isIdentifier({ name: 'source_exports' }) &&\n !isExports(sourceExports)\n )\n return;\n if (!someCall.isCallExpression()) return;\n\n let requireCall = someCall;\n while (!isRequire(requireCall.get('callee'))) {\n const args = requireCall.get('arguments');\n if (args.length !== 1) {\n return;\n }\n\n const firstArg = args[0];\n if (!firstArg.isCallExpression()) {\n return;\n }\n\n requireCall = firstArg;\n }\n\n if (exports !== undefined && !isExports(exports)) return;\n\n const sourcePath = requireCall.get('arguments')?.[0];\n if (!sourcePath.isStringLiteral()) return;\n\n state.reexports.push({\n exported: '*',\n imported: '*',\n local: path,\n source: sourcePath.node.value,\n });\n\n path.skip();\n}\n\nfunction collectFromCallExpression(\n path: NodePath<CallExpression>,\n state: ILocalState\n) {\n const maybeExportStart = path.get('callee');\n if (!maybeExportStart.isIdentifier()) {\n return;\n }\n\n if (\n matchCall(path, [\n ['__exportStar', isExports, isCallExpression('__toModule')],\n ])\n ) {\n // __exportStar(exports, __toModule(require('…')));\n\n const secondArg = path.get('arguments')[1] as NodePath<CallExpression>;\n collectAllFromCall(path, secondArg.get('arguments')[0], state);\n return;\n }\n\n // TypeScript & swc\n if (\n matchCall(path, [\n ['__exportStart', isRequireCall, isExports],\n ['_exportStar', isRequireCall, isExports],\n ['_export_star', isRequireCall, isExports],\n ['__export', isRequireCall], // TypeScript <=3.8.3\n ])\n ) {\n collectAllFromCall(path, 0, state);\n return;\n }\n\n if (matchCall(path, [['_export', isExports, isObjectExpression]])) {\n collectMapFromCall(path, 1, state);\n return;\n }\n\n if (\n matchCall(path, [\n ['_extends', isEmptyObject, isRequireCall], // swc <=1.3.16\n ])\n ) {\n collectAllFromCall(path, 1, state);\n return;\n }\n\n // esbuild\n if (\n matchCall(path, [\n ['__export', isExports, isObjectExpression],\n ['__export', isIdentifier('source_exports'), isObjectExpression],\n ])\n ) {\n collectMapFromCall(path, 1, state);\n return;\n }\n\n if (\n matchCall(path, [\n // Different variants of re-exports in esbuild\n [\n '__reExport',\n isIdentifier('source_exports'),\n isCallExpression,\n isExports,\n ],\n ['__reExport', isIdentifier('source_exports'), isCallExpression],\n ['__reExport', isExports, isCallExpression],\n ])\n ) {\n collectFromEsbuildReExportCall(path, state);\n }\n}\n\nexport function collectExportsAndImports(\n path: NodePath<Program>,\n cacheMode: 'disabled' | 'force' | 'enabled' = 'enabled'\n): IState {\n const localState: ILocalState = {\n deadExports: [],\n exportRefs: new Map(),\n exports: {},\n imports: [],\n reexports: [],\n isEsModule: path.node.sourceType === 'module',\n processedRequires: new WeakSet(),\n };\n\n const cache =\n cacheMode !== 'disabled'\n ? getTraversalCache<IState>(path, 'collectExportsAndImports')\n : undefined;\n\n if (cacheMode === 'enabled' && cache?.has(path)) {\n return cache.get(path) ?? localState;\n }\n\n path.traverse(\n {\n AssignmentExpression: collectFromAssignmentExpression,\n CallExpression: collectFromCallExpression,\n ExportAllDeclaration: collectFromExportAllDeclaration,\n ExportDefaultDeclaration: collectFromExportDefaultDeclaration,\n ExportNamedDeclaration: collectFromExportNamedDeclaration,\n ImportDeclaration: collectFromImportDeclaration,\n Import: collectFromDynamicImport,\n Identifier: collectFromRequireOrExports,\n VariableDeclarator: collectFromVariableDeclarator,\n },\n localState\n );\n\n const { processedRequires, ...state } = localState;\n\n cache?.set(path, state);\n\n return state;\n}\n"],"mappings":"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"}
@@ -16,7 +16,7 @@ var _valueToLiteral = require("./valueToLiteral");
16
16
  /* eslint @typescript-eslint/no-use-before-define: ["error", { "functions": false }] */
17
17
 
18
18
  /**
19
- * This file is a visitor that checks TaggedTemplateExpressions and look for Linaria css or styled templates.
19
+ * This file is a visitor that checks TaggedTemplateExpressions and look for WYW template literals.
20
20
  * For each template it makes a list of dependencies, try to evaluate expressions, and if it is not possible, mark them as lazy dependencies.
21
21
  */
22
22
 
@@ -109,7 +109,7 @@ function hoistIdentifier(idPath) {
109
109
 
110
110
  /**
111
111
  * Only an expression that can be evaluated in the root scope can be
112
- * used in a Linaria template. This function tries to hoist the expression.
112
+ * used in a WYW template. This function tries to hoist the expression.
113
113
  * @param ex The expression to hoist.
114
114
  * @param evaluate If true, we try to statically evaluate the expression.
115
115
  * @param imports All the imports of the file.
@@ -1 +1 @@
1
- {"version":3,"file":"collectTemplateDependencies.js","names":["_template","require","_types","_shared","_createId","_findIdentifiers","_getSource","_scopeHelpers","_valueToLiteral","staticEval","ex","evaluate","undefined","result","confident","hasEvalMeta","value","expressionDeclarationTpl","statement","preserveComments","unsupported","reason","buildCodeFrameError","isIdentifier","getUidInRootScope","path","name","node","rootScope","scope","getProgramParent","hasBinding","generateUid","hoistVariableDeclarator","parent","referencedIdentifiers","findIdentifiers","forEach","identifier","hoistIdentifier","bindingIdentifiers","newName","rename","statementInRoot","findParent","p","_p$parentPath","parentPath","isProgram","declaration","type","kind","declarations","cloneNode","inserted","insertBefore","referenceAll","registerDeclaration","idPath","isReferenced","binding","getBinding","includes","bindingPath","isVariableDeclarator","extractExpression","imports","isLiteral","ValueType","CONST","loc","_p$parentPath2","isFunction","isFunctionExpression","isArrowFunctionExpression","expUid","evaluated","id","evaluatedId","mutate","replaceWith","valueToLiteral","FUNCTION","LAZY","expId","createId","expression","importedFrom","findImportSourceOfIdentifier","_idPath$scope$getBind","_imports$find","exBindingIdentifier","exImport","find","i","local","push","source","traverse","Identifier","callee","arguments","debug","logger","extend","collectTemplateDependencies","quasi","get","quasis","expressions","length","expressionValues","map","bind","getSource","isExpression","extracted"],"sources":["../../src/utils/collectTemplateDependencies.ts"],"sourcesContent":["/* eslint @typescript-eslint/no-use-before-define: [\"error\", { \"functions\": false }] */\n\n/**\n * This file is a visitor that checks TaggedTemplateExpressions and look for Linaria css or styled templates.\n * For each template it makes a list of dependencies, try to evaluate expressions, and if it is not possible, mark them as lazy dependencies.\n */\n\nimport { statement } from '@babel/template';\nimport type { NodePath } from '@babel/traverse';\nimport type {\n Expression,\n Identifier,\n JSXIdentifier,\n Statement,\n TaggedTemplateExpression,\n TemplateElement,\n TSType,\n VariableDeclaration,\n VariableDeclarator,\n} from '@babel/types';\nimport { cloneNode } from '@babel/types';\n\nimport type {\n ConstValue,\n ExpressionValue,\n FunctionValue,\n LazyValue,\n} from '@wyw-in-js/shared';\nimport { hasEvalMeta, ValueType, logger } from '@wyw-in-js/shared';\n\nimport type { IImport } from './collectExportsAndImports';\nimport { createId } from './createId';\nimport { findIdentifiers } from './findIdentifiers';\nimport { getSource } from './getSource';\nimport { mutate, referenceAll } from './scopeHelpers';\nimport { valueToLiteral } from './valueToLiteral';\n\nfunction staticEval(\n ex: NodePath<Expression>,\n evaluate = false\n): [unknown] | undefined {\n if (!evaluate) return undefined;\n\n const result = ex.evaluate();\n if (result.confident && !hasEvalMeta(result.value)) {\n return [result.value];\n }\n\n return undefined;\n}\n\nconst expressionDeclarationTpl = statement(\n 'const %%expId%% = /*#__PURE__*/ () => %%expression%%',\n {\n preserveComments: true,\n }\n);\n\nconst unsupported = (ex: NodePath, reason?: string): Error =>\n ex.buildCodeFrameError(\n `This ${\n ex.isIdentifier() ? 'identifier' : 'expression'\n } cannot be used in the template${reason ? `, because it ${reason}` : ''}.`\n );\n\nfunction getUidInRootScope(path: NodePath<Identifier | JSXIdentifier>): string {\n const { name } = path.node;\n const rootScope = path.scope.getProgramParent();\n if (rootScope.hasBinding(name)) {\n return rootScope.generateUid(name);\n }\n\n return name;\n}\n\nfunction hoistVariableDeclarator(ex: NodePath<VariableDeclarator>) {\n if (!ex.scope.parent) {\n // It is already in the root scope\n return;\n }\n\n const referencedIdentifiers = findIdentifiers([ex], 'reference');\n referencedIdentifiers.forEach((identifier) => {\n if (identifier.isIdentifier()) {\n hoistIdentifier(identifier);\n }\n });\n\n const bindingIdentifiers = findIdentifiers([ex], 'declaration');\n\n bindingIdentifiers.forEach((path) => {\n const newName = getUidInRootScope(path);\n if (newName !== path.node.name) {\n path.scope.rename(path.node.name, newName);\n }\n });\n\n const rootScope = ex.scope.getProgramParent();\n\n const statementInRoot = ex.findParent(\n (p) => p.parentPath?.isProgram() === true\n ) as NodePath<Statement>;\n\n const declaration: VariableDeclaration = {\n type: 'VariableDeclaration',\n kind: 'let',\n declarations: [cloneNode(ex.node)],\n };\n\n const [inserted] = statementInRoot.insertBefore(declaration);\n referenceAll(inserted);\n rootScope.registerDeclaration(inserted);\n}\n\nfunction hoistIdentifier(idPath: NodePath<Identifier>): void {\n if (!idPath.isReferenced()) {\n throw unsupported(idPath);\n }\n\n const binding = idPath.scope.getBinding(idPath.node.name);\n if (!binding) {\n // It's something strange\n throw unsupported(idPath, 'is undefined');\n }\n\n if (binding.kind === 'module') {\n // Modules are global by default\n return;\n }\n\n if (!['var', 'let', 'const', 'hoisted'].includes(binding.kind)) {\n // This is not a variable, we can't hoist it\n throw unsupported(binding.path, 'is a function parameter');\n }\n\n const { scope, path: bindingPath } = binding;\n // parent here can be null or undefined in different versions of babel\n if (!scope.parent) {\n // The variable is already in the root scope\n return;\n }\n\n if (bindingPath.isVariableDeclarator()) {\n hoistVariableDeclarator(bindingPath);\n\n return;\n }\n\n throw unsupported(idPath);\n}\n\n/**\n * Only an expression that can be evaluated in the root scope can be\n * used in a Linaria template. This function tries to hoist the expression.\n * @param ex The expression to hoist.\n * @param evaluate If true, we try to statically evaluate the expression.\n * @param imports All the imports of the file.\n */\nexport function extractExpression(\n ex: NodePath<Expression>,\n evaluate = false,\n imports: IImport[] = []\n): Omit<ExpressionValue, 'buildCodeFrameError' | 'source'> {\n if (\n ex.isLiteral() &&\n ('value' in ex.node || ex.node.type === 'NullLiteral')\n ) {\n return {\n ex: ex.node,\n kind: ValueType.CONST,\n value: ex.node.type === 'NullLiteral' ? null : ex.node.value,\n } as Omit<ConstValue, 'buildCodeFrameError' | 'source'>;\n }\n\n const { loc } = ex.node;\n\n const rootScope = ex.scope.getProgramParent();\n const statementInRoot = ex.findParent(\n (p) => p.parentPath?.isProgram() === true\n ) as NodePath<Statement>;\n\n const isFunction =\n ex.isFunctionExpression() || ex.isArrowFunctionExpression();\n\n // Generate next _expN name\n const expUid = rootScope.generateUid('exp');\n\n const evaluated = staticEval(ex, evaluate);\n\n if (!evaluated) {\n // If expression is not statically evaluable,\n // we need to hoist all its referenced identifiers\n\n // Collect all referenced identifiers\n findIdentifiers([ex], 'reference').forEach((id) => {\n if (!id.isIdentifier()) return;\n\n // Try to evaluate and inline them…\n const evaluatedId = staticEval(id, evaluate);\n if (evaluatedId) {\n mutate(id, (p) => {\n p.replaceWith(valueToLiteral(evaluatedId[0], ex));\n });\n } else {\n // … or hoist them to the root scope\n hoistIdentifier(id);\n }\n });\n }\n\n const kind = isFunction ? ValueType.FUNCTION : ValueType.LAZY;\n\n // Declare _expN const with the lazy expression\n const declaration = expressionDeclarationTpl({\n expId: createId(expUid),\n expression: evaluated\n ? valueToLiteral(evaluated[0], ex)\n : cloneNode(ex.node),\n }) as VariableDeclaration;\n\n // Insert the declaration as close as possible to the original expression\n const [inserted] = statementInRoot.insertBefore(declaration);\n referenceAll(inserted);\n rootScope.registerDeclaration(inserted);\n\n const importedFrom: string[] = [];\n function findImportSourceOfIdentifier(idPath: NodePath<Identifier>) {\n const exBindingIdentifier = idPath.scope.getBinding(idPath.node.name)\n ?.identifier;\n const exImport =\n imports.find((i) => i.local.node === exBindingIdentifier) ?? null;\n if (exImport) {\n importedFrom.push(exImport.source);\n }\n }\n\n if (ex.isIdentifier()) {\n findImportSourceOfIdentifier(ex);\n } else {\n ex.traverse({\n Identifier: findImportSourceOfIdentifier,\n });\n }\n\n // Replace the expression with the _expN() call\n mutate(ex, (p) => {\n p.replaceWith({\n type: 'CallExpression',\n callee: createId(expUid),\n arguments: [],\n });\n });\n\n // eslint-disable-next-line no-param-reassign\n ex.node.loc = loc;\n\n // noinspection UnnecessaryLocalVariableJS\n const result: Omit<\n LazyValue | FunctionValue,\n 'buildCodeFrameError' | 'source'\n > = {\n kind,\n ex: createId(expUid, loc),\n importedFrom,\n };\n\n return result;\n}\n\nconst debug = logger.extend('template-parse:identify-expressions');\n\n/**\n * Collects, hoists, and makes lazy all expressions in the given template\n * If evaluate is true, it will try to evaluate the expressions\n */\nexport function collectTemplateDependencies(\n path: NodePath<TaggedTemplateExpression>,\n evaluate = false\n): [quasis: TemplateElement[], expressionValues: ExpressionValue[]] {\n const quasi = path.get('quasi');\n const quasis = quasi.get('quasis');\n const expressions = quasi.get('expressions');\n\n debug('Found: %s', expressions.length);\n\n const expressionValues: ExpressionValue[] = expressions.map(\n (ex: NodePath<Expression | TSType>): ExpressionValue => {\n const buildCodeFrameError = ex.buildCodeFrameError.bind(ex);\n const source = getSource(ex);\n\n if (!ex.isExpression()) {\n throw buildCodeFrameError(\n `The expression '${source}' is not supported.`\n );\n }\n\n const extracted = extractExpression(ex, evaluate);\n\n return {\n ...extracted,\n source,\n buildCodeFrameError,\n } as ExpressionValue;\n }\n );\n\n return [quasis.map((p) => p.node), expressionValues];\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"collectTemplateDependencies.js","names":["_template","require","_types","_shared","_createId","_findIdentifiers","_getSource","_scopeHelpers","_valueToLiteral","staticEval","ex","evaluate","undefined","result","confident","hasEvalMeta","value","expressionDeclarationTpl","statement","preserveComments","unsupported","reason","buildCodeFrameError","isIdentifier","getUidInRootScope","path","name","node","rootScope","scope","getProgramParent","hasBinding","generateUid","hoistVariableDeclarator","parent","referencedIdentifiers","findIdentifiers","forEach","identifier","hoistIdentifier","bindingIdentifiers","newName","rename","statementInRoot","findParent","p","_p$parentPath","parentPath","isProgram","declaration","type","kind","declarations","cloneNode","inserted","insertBefore","referenceAll","registerDeclaration","idPath","isReferenced","binding","getBinding","includes","bindingPath","isVariableDeclarator","extractExpression","imports","isLiteral","ValueType","CONST","loc","_p$parentPath2","isFunction","isFunctionExpression","isArrowFunctionExpression","expUid","evaluated","id","evaluatedId","mutate","replaceWith","valueToLiteral","FUNCTION","LAZY","expId","createId","expression","importedFrom","findImportSourceOfIdentifier","_idPath$scope$getBind","_imports$find","exBindingIdentifier","exImport","find","i","local","push","source","traverse","Identifier","callee","arguments","debug","logger","extend","collectTemplateDependencies","quasi","get","quasis","expressions","length","expressionValues","map","bind","getSource","isExpression","extracted"],"sources":["../../src/utils/collectTemplateDependencies.ts"],"sourcesContent":["/* eslint @typescript-eslint/no-use-before-define: [\"error\", { \"functions\": false }] */\n\n/**\n * This file is a visitor that checks TaggedTemplateExpressions and look for WYW template literals.\n * For each template it makes a list of dependencies, try to evaluate expressions, and if it is not possible, mark them as lazy dependencies.\n */\n\nimport { statement } from '@babel/template';\nimport type { NodePath } from '@babel/traverse';\nimport type {\n Expression,\n Identifier,\n JSXIdentifier,\n Statement,\n TaggedTemplateExpression,\n TemplateElement,\n TSType,\n VariableDeclaration,\n VariableDeclarator,\n} from '@babel/types';\nimport { cloneNode } from '@babel/types';\n\nimport type {\n ConstValue,\n ExpressionValue,\n FunctionValue,\n LazyValue,\n} from '@wyw-in-js/shared';\nimport { hasEvalMeta, ValueType, logger } from '@wyw-in-js/shared';\n\nimport type { IImport } from './collectExportsAndImports';\nimport { createId } from './createId';\nimport { findIdentifiers } from './findIdentifiers';\nimport { getSource } from './getSource';\nimport { mutate, referenceAll } from './scopeHelpers';\nimport { valueToLiteral } from './valueToLiteral';\n\nfunction staticEval(\n ex: NodePath<Expression>,\n evaluate = false\n): [unknown] | undefined {\n if (!evaluate) return undefined;\n\n const result = ex.evaluate();\n if (result.confident && !hasEvalMeta(result.value)) {\n return [result.value];\n }\n\n return undefined;\n}\n\nconst expressionDeclarationTpl = statement(\n 'const %%expId%% = /*#__PURE__*/ () => %%expression%%',\n {\n preserveComments: true,\n }\n);\n\nconst unsupported = (ex: NodePath, reason?: string): Error =>\n ex.buildCodeFrameError(\n `This ${\n ex.isIdentifier() ? 'identifier' : 'expression'\n } cannot be used in the template${reason ? `, because it ${reason}` : ''}.`\n );\n\nfunction getUidInRootScope(path: NodePath<Identifier | JSXIdentifier>): string {\n const { name } = path.node;\n const rootScope = path.scope.getProgramParent();\n if (rootScope.hasBinding(name)) {\n return rootScope.generateUid(name);\n }\n\n return name;\n}\n\nfunction hoistVariableDeclarator(ex: NodePath<VariableDeclarator>) {\n if (!ex.scope.parent) {\n // It is already in the root scope\n return;\n }\n\n const referencedIdentifiers = findIdentifiers([ex], 'reference');\n referencedIdentifiers.forEach((identifier) => {\n if (identifier.isIdentifier()) {\n hoistIdentifier(identifier);\n }\n });\n\n const bindingIdentifiers = findIdentifiers([ex], 'declaration');\n\n bindingIdentifiers.forEach((path) => {\n const newName = getUidInRootScope(path);\n if (newName !== path.node.name) {\n path.scope.rename(path.node.name, newName);\n }\n });\n\n const rootScope = ex.scope.getProgramParent();\n\n const statementInRoot = ex.findParent(\n (p) => p.parentPath?.isProgram() === true\n ) as NodePath<Statement>;\n\n const declaration: VariableDeclaration = {\n type: 'VariableDeclaration',\n kind: 'let',\n declarations: [cloneNode(ex.node)],\n };\n\n const [inserted] = statementInRoot.insertBefore(declaration);\n referenceAll(inserted);\n rootScope.registerDeclaration(inserted);\n}\n\nfunction hoistIdentifier(idPath: NodePath<Identifier>): void {\n if (!idPath.isReferenced()) {\n throw unsupported(idPath);\n }\n\n const binding = idPath.scope.getBinding(idPath.node.name);\n if (!binding) {\n // It's something strange\n throw unsupported(idPath, 'is undefined');\n }\n\n if (binding.kind === 'module') {\n // Modules are global by default\n return;\n }\n\n if (!['var', 'let', 'const', 'hoisted'].includes(binding.kind)) {\n // This is not a variable, we can't hoist it\n throw unsupported(binding.path, 'is a function parameter');\n }\n\n const { scope, path: bindingPath } = binding;\n // parent here can be null or undefined in different versions of babel\n if (!scope.parent) {\n // The variable is already in the root scope\n return;\n }\n\n if (bindingPath.isVariableDeclarator()) {\n hoistVariableDeclarator(bindingPath);\n\n return;\n }\n\n throw unsupported(idPath);\n}\n\n/**\n * Only an expression that can be evaluated in the root scope can be\n * used in a WYW template. This function tries to hoist the expression.\n * @param ex The expression to hoist.\n * @param evaluate If true, we try to statically evaluate the expression.\n * @param imports All the imports of the file.\n */\nexport function extractExpression(\n ex: NodePath<Expression>,\n evaluate = false,\n imports: IImport[] = []\n): Omit<ExpressionValue, 'buildCodeFrameError' | 'source'> {\n if (\n ex.isLiteral() &&\n ('value' in ex.node || ex.node.type === 'NullLiteral')\n ) {\n return {\n ex: ex.node,\n kind: ValueType.CONST,\n value: ex.node.type === 'NullLiteral' ? null : ex.node.value,\n } as Omit<ConstValue, 'buildCodeFrameError' | 'source'>;\n }\n\n const { loc } = ex.node;\n\n const rootScope = ex.scope.getProgramParent();\n const statementInRoot = ex.findParent(\n (p) => p.parentPath?.isProgram() === true\n ) as NodePath<Statement>;\n\n const isFunction =\n ex.isFunctionExpression() || ex.isArrowFunctionExpression();\n\n // Generate next _expN name\n const expUid = rootScope.generateUid('exp');\n\n const evaluated = staticEval(ex, evaluate);\n\n if (!evaluated) {\n // If expression is not statically evaluable,\n // we need to hoist all its referenced identifiers\n\n // Collect all referenced identifiers\n findIdentifiers([ex], 'reference').forEach((id) => {\n if (!id.isIdentifier()) return;\n\n // Try to evaluate and inline them…\n const evaluatedId = staticEval(id, evaluate);\n if (evaluatedId) {\n mutate(id, (p) => {\n p.replaceWith(valueToLiteral(evaluatedId[0], ex));\n });\n } else {\n // … or hoist them to the root scope\n hoistIdentifier(id);\n }\n });\n }\n\n const kind = isFunction ? ValueType.FUNCTION : ValueType.LAZY;\n\n // Declare _expN const with the lazy expression\n const declaration = expressionDeclarationTpl({\n expId: createId(expUid),\n expression: evaluated\n ? valueToLiteral(evaluated[0], ex)\n : cloneNode(ex.node),\n }) as VariableDeclaration;\n\n // Insert the declaration as close as possible to the original expression\n const [inserted] = statementInRoot.insertBefore(declaration);\n referenceAll(inserted);\n rootScope.registerDeclaration(inserted);\n\n const importedFrom: string[] = [];\n function findImportSourceOfIdentifier(idPath: NodePath<Identifier>) {\n const exBindingIdentifier = idPath.scope.getBinding(idPath.node.name)\n ?.identifier;\n const exImport =\n imports.find((i) => i.local.node === exBindingIdentifier) ?? null;\n if (exImport) {\n importedFrom.push(exImport.source);\n }\n }\n\n if (ex.isIdentifier()) {\n findImportSourceOfIdentifier(ex);\n } else {\n ex.traverse({\n Identifier: findImportSourceOfIdentifier,\n });\n }\n\n // Replace the expression with the _expN() call\n mutate(ex, (p) => {\n p.replaceWith({\n type: 'CallExpression',\n callee: createId(expUid),\n arguments: [],\n });\n });\n\n // eslint-disable-next-line no-param-reassign\n ex.node.loc = loc;\n\n // noinspection UnnecessaryLocalVariableJS\n const result: Omit<\n LazyValue | FunctionValue,\n 'buildCodeFrameError' | 'source'\n > = {\n kind,\n ex: createId(expUid, loc),\n importedFrom,\n };\n\n return result;\n}\n\nconst debug = logger.extend('template-parse:identify-expressions');\n\n/**\n * Collects, hoists, and makes lazy all expressions in the given template\n * If evaluate is true, it will try to evaluate the expressions\n */\nexport function collectTemplateDependencies(\n path: NodePath<TaggedTemplateExpression>,\n evaluate = false\n): [quasis: TemplateElement[], expressionValues: ExpressionValue[]] {\n const quasi = path.get('quasi');\n const quasis = quasi.get('quasis');\n const expressions = quasi.get('expressions');\n\n debug('Found: %s', expressions.length);\n\n const expressionValues: ExpressionValue[] = expressions.map(\n (ex: NodePath<Expression | TSType>): ExpressionValue => {\n const buildCodeFrameError = ex.buildCodeFrameError.bind(ex);\n const source = getSource(ex);\n\n if (!ex.isExpression()) {\n throw buildCodeFrameError(\n `The expression '${source}' is not supported.`\n );\n }\n\n const extracted = extractExpression(ex, evaluate);\n\n return {\n ...extracted,\n source,\n buildCodeFrameError,\n } as ExpressionValue;\n }\n );\n\n return [quasis.map((p) => p.node), expressionValues];\n}\n"],"mappings":"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"}
@@ -9,9 +9,9 @@ var _path = require("path");
9
9
  var _core = require("@babel/core");
10
10
  var _helperModuleImports = require("@babel/helper-module-imports");
11
11
  var _processorUtils = require("@wyw-in-js/processor-utils");
12
+ var _shared = require("@wyw-in-js/shared");
12
13
  var _collectExportsAndImports = require("./collectExportsAndImports");
13
14
  var _collectTemplateDependencies = require("./collectTemplateDependencies");
14
- var _findPackageJSON = require("./findPackageJSON");
15
15
  var _getSource = require("./getSource");
16
16
  var _isNotNull = require("./isNotNull");
17
17
  var _scopeHelpers = require("./scopeHelpers");
@@ -38,7 +38,7 @@ const getDefinedTagsFromPackage = (pkgName, filename) => {
38
38
  if (definedTagsCache.has(pkgName)) {
39
39
  return definedTagsCache.get(pkgName);
40
40
  }
41
- const packageJSONPath = (0, _findPackageJSON.findPackageJSON)(pkgName, filename);
41
+ const packageJSONPath = (0, _shared.findPackageJSON)(pkgName, filename);
42
42
  if (!packageJSONPath) {
43
43
  return undefined;
44
44
  }