@wyw-in-js/transform 1.0.6 → 1.0.7

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 (77) hide show
  1. package/esm/cache.js +100 -7
  2. package/esm/cache.js.map +1 -1
  3. package/esm/debug/fileReporter.js.map +1 -1
  4. package/esm/module.js +51 -2
  5. package/esm/module.js.map +1 -1
  6. package/esm/plugins/shaker.js +152 -13
  7. package/esm/plugins/shaker.js.map +1 -1
  8. package/esm/shaker.js +51 -23
  9. package/esm/shaker.js.map +1 -1
  10. package/esm/transform/BaseEntrypoint.js +3 -1
  11. package/esm/transform/BaseEntrypoint.js.map +1 -1
  12. package/esm/transform/Entrypoint.js +60 -17
  13. package/esm/transform/Entrypoint.js.map +1 -1
  14. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  15. package/esm/transform/barrelManifest.js +291 -0
  16. package/esm/transform/barrelManifest.js.map +1 -0
  17. package/esm/transform/generators/getExports.js +5 -0
  18. package/esm/transform/generators/getExports.js.map +1 -1
  19. package/esm/transform/generators/processEntrypoint.js +27 -1
  20. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  21. package/esm/transform/generators/resolveImports.js +29 -5
  22. package/esm/transform/generators/resolveImports.js.map +1 -1
  23. package/esm/transform/generators/rewriteBarrelImports.js +733 -0
  24. package/esm/transform/generators/rewriteBarrelImports.js.map +1 -0
  25. package/esm/transform/generators/transform.js +154 -21
  26. package/esm/transform/generators/transform.js.map +1 -1
  27. package/esm/transform/types.js.map +1 -1
  28. package/lib/cache.js +103 -7
  29. package/lib/cache.js.map +1 -1
  30. package/lib/debug/fileReporter.js.map +1 -1
  31. package/lib/module.js +51 -2
  32. package/lib/module.js.map +1 -1
  33. package/lib/plugins/shaker.js +152 -13
  34. package/lib/plugins/shaker.js.map +1 -1
  35. package/lib/shaker.js +58 -26
  36. package/lib/shaker.js.map +1 -1
  37. package/lib/transform/BaseEntrypoint.js +3 -1
  38. package/lib/transform/BaseEntrypoint.js.map +1 -1
  39. package/lib/transform/Entrypoint.js +61 -17
  40. package/lib/transform/Entrypoint.js.map +1 -1
  41. package/lib/transform/EvaluatedEntrypoint.js.map +1 -1
  42. package/lib/transform/barrelManifest.js +300 -0
  43. package/lib/transform/barrelManifest.js.map +1 -0
  44. package/lib/transform/generators/getExports.js +5 -0
  45. package/lib/transform/generators/getExports.js.map +1 -1
  46. package/lib/transform/generators/processEntrypoint.js +27 -1
  47. package/lib/transform/generators/processEntrypoint.js.map +1 -1
  48. package/lib/transform/generators/resolveImports.js +29 -5
  49. package/lib/transform/generators/resolveImports.js.map +1 -1
  50. package/lib/transform/generators/rewriteBarrelImports.js +743 -0
  51. package/lib/transform/generators/rewriteBarrelImports.js.map +1 -0
  52. package/lib/transform/generators/transform.js +158 -22
  53. package/lib/transform/generators/transform.js.map +1 -1
  54. package/lib/transform/types.js.map +1 -1
  55. package/package.json +8 -4
  56. package/types/cache.d.ts +16 -2
  57. package/types/cache.js +111 -7
  58. package/types/debug/fileReporter.d.ts +1 -0
  59. package/types/module.d.ts +3 -0
  60. package/types/module.js +57 -2
  61. package/types/plugins/shaker.js +161 -16
  62. package/types/shaker.d.ts +10 -1
  63. package/types/shaker.js +56 -28
  64. package/types/transform/BaseEntrypoint.d.ts +3 -1
  65. package/types/transform/BaseEntrypoint.js +5 -1
  66. package/types/transform/Entrypoint.d.ts +9 -0
  67. package/types/transform/Entrypoint.js +73 -20
  68. package/types/transform/EvaluatedEntrypoint.d.ts +2 -0
  69. package/types/transform/barrelManifest.d.ts +42 -0
  70. package/types/transform/barrelManifest.js +300 -0
  71. package/types/transform/generators/getExports.js +5 -0
  72. package/types/transform/generators/processEntrypoint.js +26 -1
  73. package/types/transform/generators/resolveImports.js +29 -5
  74. package/types/transform/generators/rewriteBarrelImports.d.ts +15 -0
  75. package/types/transform/generators/rewriteBarrelImports.js +815 -0
  76. package/types/transform/generators/transform.js +148 -19
  77. package/types/transform/types.d.ts +2 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"barrelManifest.js","names":["_traverse","_interopRequireDefault","require","_types","e","__esModule","default","isTypeOnlyImport","statement","importKind","specifiers","length","every","specifier","type","isTypeOnlyExport","exportKind","getModuleExportName","node","name","value","isTypeOnlyStatement","collectExportNamedDeclaration","reexports","explicitExports","source","add","exported","push","getNamedReexport","getDefaultReexport","getNamespaceReexport","imported","local","kind","collectImportBinding","imports","sawValueImport","set","getImportSpecifierName","getLocalDeclarationNames","declaration","Object","keys","getBindingIdentifiers","collectLocalExportNamedDeclaration","importedBindings","passthroughCandidates","complete","ok","names","has","get","collectPassthroughReexports","ast","bindingReferenceCounts","Map","traverse","Program","path","localName","_path$scope$getBindin","_path$scope$getBindin2","scope","getBinding","referencePaths","stop","exportedNames","analyzeBarrelProgram","Set","exportAll","program","body","localResult","getExportAllSource","passthroughResult","analyzeBarrelFile","result","reason"],"sources":["../../src/transform/barrelManifest.ts"],"sourcesContent":["/* eslint-disable no-continue, @typescript-eslint/no-use-before-define */\nimport traverse from '@babel/traverse';\nimport { getBindingIdentifiers } from '@babel/types';\nimport type {\n ClassDeclaration,\n Declaration,\n ExportAllDeclaration,\n ExportDefaultSpecifier,\n ExportNamedDeclaration,\n ExportNamespaceSpecifier,\n ExportSpecifier,\n File,\n FunctionDeclaration,\n Identifier,\n ImportDeclaration,\n ImportSpecifier,\n Program,\n StringLiteral,\n VariableDeclaration,\n} from '@babel/types';\n\nexport type BarrelSkipReason =\n | 'custom-evaluator'\n | 'empty'\n | 'ignored'\n | 'impure'\n | 'namespace-barrel'\n | 'unknown-star';\n\nexport type BarrelBlockedReason =\n | 'ambiguous'\n | 'cycle'\n | 'namespace-barrel'\n | 'unknown-star'\n | 'unresolved';\n\nexport type BarrelResolvedBinding =\n | {\n imported: string;\n kind: 'named';\n source: string;\n }\n | {\n kind: 'namespace';\n source: string;\n };\n\nexport type BarrelManifestExport =\n | BarrelResolvedBinding\n | {\n kind: 'blocked';\n reason: BarrelBlockedReason;\n };\n\nexport type BarrelManifest = {\n complete: boolean;\n exports: Record<string, BarrelManifestExport>;\n kind: 'barrel';\n};\n\nexport type BarrelManifestCacheEntry =\n | BarrelManifest\n | {\n kind: 'ineligible';\n reason: BarrelSkipReason;\n };\n\nexport type RawBarrelReexport =\n | {\n exported: string;\n imported: string;\n kind: 'named';\n source: string;\n }\n | {\n exported: string;\n kind: 'namespace';\n source: string;\n };\n\nexport type RawBarrelManifest = {\n complete: boolean;\n explicitExports: string[];\n exportAll: string[];\n kind: 'barrel';\n reexports: RawBarrelReexport[];\n};\n\ntype LocalImportBinding =\n | {\n imported: string;\n kind: 'named';\n source: string;\n }\n | {\n kind: 'namespace';\n source: string;\n };\n\nconst isTypeOnlyImport = (statement: ImportDeclaration): boolean => {\n if (statement.importKind === 'type') {\n return true;\n }\n\n if (statement.specifiers.length === 0) {\n return false;\n }\n\n return statement.specifiers.every(\n (specifier) =>\n specifier.type === 'ImportSpecifier' && specifier.importKind === 'type'\n );\n};\n\nconst isTypeOnlyExport = (statement: ExportNamedDeclaration): boolean =>\n statement.exportKind === 'type';\n\nconst getModuleExportName = (node: Identifier | StringLiteral): string =>\n node.type === 'Identifier' ? node.name : node.value;\n\nconst isTypeOnlyStatement = (statement: Program['body'][number]): boolean => {\n switch (statement.type) {\n case 'EmptyStatement':\n case 'TSDeclareFunction':\n case 'TSInterfaceDeclaration':\n case 'TSTypeAliasDeclaration':\n return true;\n default:\n return false;\n }\n};\n\nfunction collectExportNamedDeclaration(\n statement: ExportNamedDeclaration,\n reexports: RawBarrelReexport[],\n explicitExports: Set<string>\n): boolean {\n if (!statement.source) {\n return isTypeOnlyExport(statement);\n }\n\n if (isTypeOnlyExport(statement)) {\n return true;\n }\n\n const source = statement.source.value;\n for (const specifier of statement.specifiers) {\n if (specifier.type === 'ExportSpecifier') {\n if (specifier.exportKind === 'type') {\n continue;\n }\n\n explicitExports.add(getModuleExportName(specifier.exported));\n reexports.push(getNamedReexport(specifier, source));\n continue;\n }\n\n if (specifier.type === 'ExportDefaultSpecifier') {\n explicitExports.add(getModuleExportName(specifier.exported));\n reexports.push(getDefaultReexport(specifier, source));\n continue;\n }\n\n if (specifier.type === 'ExportNamespaceSpecifier') {\n explicitExports.add(getModuleExportName(specifier.exported));\n reexports.push(getNamespaceReexport(specifier, source));\n continue;\n }\n\n return false;\n }\n\n return statement.specifiers.length > 0;\n}\n\nfunction getNamedReexport(\n specifier: ExportSpecifier,\n source: string\n): RawBarrelReexport {\n return {\n exported: getModuleExportName(specifier.exported),\n imported: getModuleExportName(specifier.local),\n kind: 'named',\n source,\n };\n}\n\nfunction getDefaultReexport(\n specifier: ExportDefaultSpecifier,\n source: string\n): RawBarrelReexport {\n return {\n exported: getModuleExportName(specifier.exported),\n imported: 'default',\n kind: 'named',\n source,\n };\n}\n\nfunction getNamespaceReexport(\n specifier: ExportNamespaceSpecifier,\n source: string\n): RawBarrelReexport {\n return {\n exported: getModuleExportName(specifier.exported),\n kind: 'namespace',\n source,\n };\n}\n\nconst collectImportBinding = (\n statement: ImportDeclaration,\n imports: Map<string, LocalImportBinding>\n): boolean => {\n if (statement.importKind === 'type') {\n return true;\n }\n\n if (statement.specifiers.length === 0) {\n return false;\n }\n\n let sawValueImport = false;\n for (const specifier of statement.specifiers) {\n if (\n specifier.type === 'ImportSpecifier' &&\n specifier.importKind === 'type'\n ) {\n continue;\n }\n\n sawValueImport = true;\n\n if (specifier.type === 'ImportSpecifier') {\n imports.set(specifier.local.name, {\n imported: getImportSpecifierName(specifier),\n kind: 'named',\n source: statement.source.value,\n });\n continue;\n }\n\n if (specifier.type === 'ImportDefaultSpecifier') {\n imports.set(specifier.local.name, {\n imported: 'default',\n kind: 'named',\n source: statement.source.value,\n });\n continue;\n }\n\n imports.set(specifier.local.name, {\n kind: 'namespace',\n source: statement.source.value,\n });\n }\n\n return sawValueImport || isTypeOnlyImport(statement);\n};\n\nconst getImportSpecifierName = (specifier: ImportSpecifier): string =>\n getModuleExportName(specifier.imported);\n\nconst getLocalDeclarationNames = (\n declaration: Declaration\n): string[] | null => {\n if (\n declaration.type === 'VariableDeclaration' ||\n declaration.type === 'FunctionDeclaration' ||\n declaration.type === 'ClassDeclaration'\n ) {\n return Object.keys(\n getBindingIdentifiers(\n declaration as\n | VariableDeclaration\n | FunctionDeclaration\n | ClassDeclaration\n )\n );\n }\n\n if (\n declaration.type === 'TSEnumDeclaration' ||\n declaration.type === 'TSModuleDeclaration'\n ) {\n return null;\n }\n\n return [];\n};\n\nconst collectLocalExportNamedDeclaration = (\n statement: ExportNamedDeclaration,\n importedBindings: Map<string, LocalImportBinding>,\n passthroughCandidates: Map<string, string[]>,\n explicitExports: Set<string>\n): { complete: boolean; ok: boolean } => {\n let complete = true;\n\n if (isTypeOnlyExport(statement)) {\n return {\n complete: true,\n ok: true,\n };\n }\n\n if (statement.declaration) {\n const names = getLocalDeclarationNames(statement.declaration);\n if (names === null) {\n return {\n complete: false,\n ok: false,\n };\n }\n\n for (const name of names) {\n explicitExports.add(name);\n }\n\n return {\n complete: names.length === 0,\n ok: true,\n };\n }\n\n for (const specifier of statement.specifiers) {\n if (specifier.type !== 'ExportSpecifier') {\n return {\n complete: false,\n ok: false,\n };\n }\n\n if (specifier.exportKind === 'type') {\n continue;\n }\n\n const exported = getModuleExportName(specifier.exported);\n explicitExports.add(exported);\n\n if (specifier.local.type !== 'Identifier') {\n complete = false;\n continue;\n }\n\n if (!importedBindings.has(specifier.local.name)) {\n complete = false;\n continue;\n }\n\n if (!passthroughCandidates.has(specifier.local.name)) {\n passthroughCandidates.set(specifier.local.name, []);\n }\n passthroughCandidates.get(specifier.local.name)!.push(exported);\n }\n\n return {\n complete: complete && statement.specifiers.length > 0,\n ok: true,\n };\n};\n\nconst collectPassthroughReexports = (\n ast: File,\n importedBindings: Map<string, LocalImportBinding>,\n passthroughCandidates: Map<string, string[]>,\n reexports: RawBarrelReexport[]\n): { complete: boolean; ok: boolean } => {\n let complete = true;\n const bindingReferenceCounts = new Map<string, number>();\n\n traverse(ast, {\n Program(path) {\n for (const localName of passthroughCandidates.keys()) {\n bindingReferenceCounts.set(\n localName,\n path.scope.getBinding(localName)?.referencePaths.length ?? -1\n );\n }\n path.stop();\n },\n });\n\n for (const [localName, exportedNames] of passthroughCandidates) {\n if (bindingReferenceCounts.get(localName) !== exportedNames.length) {\n complete = false;\n continue;\n }\n\n const imported = importedBindings.get(localName)!;\n for (const exported of exportedNames) {\n if (imported.kind === 'namespace') {\n reexports.push({\n exported,\n kind: 'namespace',\n source: imported.source,\n });\n continue;\n }\n\n reexports.push({\n exported,\n imported: imported.imported,\n kind: 'named',\n source: imported.source,\n });\n }\n }\n\n return {\n complete,\n ok: true,\n };\n};\n\nfunction analyzeBarrelProgram(ast: File): RawBarrelManifest | null {\n const reexports: RawBarrelReexport[] = [];\n const explicitExports = new Set<string>();\n const exportAll: string[] = [];\n const importedBindings = new Map<string, LocalImportBinding>();\n const passthroughCandidates = new Map<string, string[]>();\n let complete = true;\n\n for (const statement of ast.program.body) {\n if (statement.type === 'ImportDeclaration') {\n if (!collectImportBinding(statement, importedBindings)) {\n return null;\n }\n continue;\n }\n\n if (statement.type === 'ExportNamedDeclaration') {\n if (statement.source) {\n if (\n !collectExportNamedDeclaration(statement, reexports, explicitExports)\n ) {\n return null;\n }\n continue;\n }\n\n const localResult = collectLocalExportNamedDeclaration(\n statement,\n importedBindings,\n passthroughCandidates,\n explicitExports\n );\n if (!localResult.ok) {\n return null;\n }\n complete = complete && localResult.complete;\n continue;\n }\n\n if (statement.type === 'ExportAllDeclaration') {\n if (statement.exportKind === 'type') {\n continue;\n }\n\n if (!statement.source) {\n return null;\n }\n\n exportAll.push(getExportAllSource(statement));\n continue;\n }\n\n if (statement.type === 'ExportDefaultDeclaration') {\n return null;\n }\n\n if (!isTypeOnlyStatement(statement)) {\n return null;\n }\n }\n\n const passthroughResult = collectPassthroughReexports(\n ast,\n importedBindings,\n passthroughCandidates,\n reexports\n );\n if (!passthroughResult.ok) {\n return null;\n }\n complete = complete && passthroughResult.complete;\n\n if (reexports.length === 0 && exportAll.length === 0) {\n return null;\n }\n\n return {\n complete,\n explicitExports: [...explicitExports],\n exportAll,\n kind: 'barrel',\n reexports,\n };\n}\n\nconst getExportAllSource = (statement: ExportAllDeclaration): string =>\n statement.source.value;\n\nexport function analyzeBarrelFile(\n ast: File\n): BarrelManifestCacheEntry | RawBarrelManifest {\n const result = analyzeBarrelProgram(ast);\n\n if (!result) {\n return {\n kind: 'ineligible',\n reason: 'impure',\n };\n }\n\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -67,11 +67,16 @@ function* getExports() {
67
67
  const resolvedImports = yield* this.getNext('resolveImports', entrypoint, {
68
68
  imports: new Map(withWildcardReexport.map(i => [i.source, []]))
69
69
  });
70
+ const dependencyFilenames = resolvedImports.flatMap(dependency => dependency.resolved ? [dependency.resolved] : []);
70
71
  const importedEntrypoints = findExportsInImports(entrypoint, resolvedImports);
71
72
  for (const importedEntrypoint of importedEntrypoints) {
72
73
  const exports = yield* this.getNext('getExports', importedEntrypoint.entrypoint, undefined);
73
74
  result.push(...exports);
74
75
  }
76
+ cache.add('exports', entrypoint.name, result);
77
+ cache.setCacheDependencies('exports', entrypoint.name, dependencyFilenames);
78
+ entrypoint.log(`exports: %o`, result);
79
+ return result;
75
80
  }
76
81
  entrypoint.log(`exports: %o`, result);
77
82
  cache.add('exports', entrypoint.name, result);
@@ -1 +1 @@
1
- {"version":3,"file":"getExports.js","names":["_collectExportsAndImports","require","findExportsInImports","entrypoint","imports","results","imp","resolved","Error","source","newEntrypoint","createChild","push","import","getExports","services","cache","loadedAndParsed","ast","undefined","log","name","has","get","withWildcardReexport","result","babel","traverse","Program","path","exports","reexports","collectExportsAndImports","Object","keys","forEach","token","e","exported","filter","length","resolvedImports","getNext","Map","map","i","importedEntrypoints","importedEntrypoint","add"],"sources":["../../../src/transform/generators/getExports.ts"],"sourcesContent":["import type { IReexport } from '../../utils/collectExportsAndImports';\nimport { collectExportsAndImports } from '../../utils/collectExportsAndImports';\nimport type { Entrypoint } from '../Entrypoint';\nimport type { IEntrypointDependency } from '../Entrypoint.types';\nimport type { IGetExportsAction, SyncScenarioForAction } from '../types';\n\nexport function findExportsInImports(\n entrypoint: Entrypoint,\n imports: IEntrypointDependency[]\n): { entrypoint: Entrypoint; import: string }[] {\n const results: {\n entrypoint: Entrypoint;\n import: string;\n }[] = [];\n\n for (const imp of imports) {\n const { resolved } = imp;\n if (!resolved) {\n throw new Error(`Could not resolve import ${imp.source}`);\n }\n\n const newEntrypoint = entrypoint.createChild(resolved, []);\n\n if (newEntrypoint === 'loop') {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n results.push({\n entrypoint: newEntrypoint,\n import: imp.source,\n });\n }\n\n return results;\n}\n\nexport function* getExports(\n this: IGetExportsAction\n): SyncScenarioForAction<IGetExportsAction> {\n const {\n entrypoint,\n services: { cache },\n } = this;\n const { loadedAndParsed } = entrypoint;\n if (loadedAndParsed.ast === undefined) {\n return [];\n }\n\n entrypoint.log(`get exports from %s`, entrypoint.name);\n\n if (cache.has('exports', entrypoint.name)) {\n return cache.get('exports', entrypoint.name)!;\n }\n\n let withWildcardReexport: IReexport[] = [];\n const result: string[] = [];\n\n this.services.babel.traverse(loadedAndParsed.ast!, {\n Program(path) {\n const { exports, reexports } = collectExportsAndImports(path, 'disabled');\n Object.keys(exports).forEach((token) => {\n result.push(token);\n });\n\n reexports.forEach((e) => {\n if (e.exported !== '*') {\n result.push(e.exported);\n }\n });\n\n withWildcardReexport = reexports.filter((e) => e.exported === '*');\n },\n });\n\n if (withWildcardReexport.length) {\n const resolvedImports = yield* this.getNext('resolveImports', entrypoint, {\n imports: new Map(withWildcardReexport.map((i) => [i.source, []])),\n });\n\n const importedEntrypoints = findExportsInImports(\n entrypoint,\n resolvedImports\n );\n\n for (const importedEntrypoint of importedEntrypoints) {\n const exports = yield* this.getNext(\n 'getExports',\n importedEntrypoint.entrypoint,\n undefined\n );\n\n result.push(...exports);\n }\n }\n\n entrypoint.log(`exports: %o`, result);\n\n cache.add('exports', entrypoint.name, result);\n\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"getExports.js","names":["_collectExportsAndImports","require","findExportsInImports","entrypoint","imports","results","imp","resolved","Error","source","newEntrypoint","createChild","push","import","getExports","services","cache","loadedAndParsed","ast","undefined","log","name","has","get","withWildcardReexport","result","babel","traverse","Program","path","exports","reexports","collectExportsAndImports","Object","keys","forEach","token","e","exported","filter","length","resolvedImports","getNext","Map","map","i","dependencyFilenames","flatMap","dependency","importedEntrypoints","importedEntrypoint","add","setCacheDependencies"],"sources":["../../../src/transform/generators/getExports.ts"],"sourcesContent":["import type { IReexport } from '../../utils/collectExportsAndImports';\nimport { collectExportsAndImports } from '../../utils/collectExportsAndImports';\nimport type { Entrypoint } from '../Entrypoint';\nimport type { IEntrypointDependency } from '../Entrypoint.types';\nimport type { IGetExportsAction, SyncScenarioForAction } from '../types';\n\nexport function findExportsInImports(\n entrypoint: Entrypoint,\n imports: IEntrypointDependency[]\n): { entrypoint: Entrypoint; import: string }[] {\n const results: {\n entrypoint: Entrypoint;\n import: string;\n }[] = [];\n\n for (const imp of imports) {\n const { resolved } = imp;\n if (!resolved) {\n throw new Error(`Could not resolve import ${imp.source}`);\n }\n\n const newEntrypoint = entrypoint.createChild(resolved, []);\n\n if (newEntrypoint === 'loop') {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n results.push({\n entrypoint: newEntrypoint,\n import: imp.source,\n });\n }\n\n return results;\n}\n\nexport function* getExports(\n this: IGetExportsAction\n): SyncScenarioForAction<IGetExportsAction> {\n const {\n entrypoint,\n services: { cache },\n } = this;\n const { loadedAndParsed } = entrypoint;\n if (loadedAndParsed.ast === undefined) {\n return [];\n }\n\n entrypoint.log(`get exports from %s`, entrypoint.name);\n\n if (cache.has('exports', entrypoint.name)) {\n return cache.get('exports', entrypoint.name)!;\n }\n\n let withWildcardReexport: IReexport[] = [];\n const result: string[] = [];\n\n this.services.babel.traverse(loadedAndParsed.ast!, {\n Program(path) {\n const { exports, reexports } = collectExportsAndImports(path, 'disabled');\n Object.keys(exports).forEach((token) => {\n result.push(token);\n });\n\n reexports.forEach((e) => {\n if (e.exported !== '*') {\n result.push(e.exported);\n }\n });\n\n withWildcardReexport = reexports.filter((e) => e.exported === '*');\n },\n });\n\n if (withWildcardReexport.length) {\n const resolvedImports = yield* this.getNext('resolveImports', entrypoint, {\n imports: new Map(withWildcardReexport.map((i) => [i.source, []])),\n });\n const dependencyFilenames = resolvedImports.flatMap((dependency) =>\n dependency.resolved ? [dependency.resolved] : []\n );\n\n const importedEntrypoints = findExportsInImports(\n entrypoint,\n resolvedImports\n );\n\n for (const importedEntrypoint of importedEntrypoints) {\n const exports = yield* this.getNext(\n 'getExports',\n importedEntrypoint.entrypoint,\n undefined\n );\n\n result.push(...exports);\n }\n\n cache.add('exports', entrypoint.name, result);\n cache.setCacheDependencies('exports', entrypoint.name, dependencyFilenames);\n\n entrypoint.log(`exports: %o`, result);\n\n return result;\n }\n\n entrypoint.log(`exports: %o`, result);\n\n cache.add('exports', entrypoint.name, result);\n\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -4,8 +4,21 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.processEntrypoint = processEntrypoint;
7
+ var _shaker = require("../../shaker");
7
8
  var _AbortError = require("../actions/AbortError");
9
+ var _barrelManifest = require("../barrelManifest");
8
10
  function _usingCtx2() { var r = "function" == typeof SuppressedError ? SuppressedError : function (r, e) { var n = Error(); return n.name = "SuppressedError", n.error = r, n.suppressed = e, n; }, e = {}, n = []; function using(r, e) { if (null != e) { if (Object(e) !== e) throw new TypeError("using declarations can only be used with objects, functions, null, or undefined."); if (r) var o = e[Symbol.asyncDispose || Symbol.for("Symbol.asyncDispose")]; if (void 0 === o && (o = e[Symbol.dispose || Symbol.for("Symbol.dispose")], r)) var t = o; if ("function" != typeof o) throw new TypeError("Object is not disposable."); t && (o = function () { try { t.call(e); } catch (r) { return Promise.reject(r); } }), n.push({ v: e, d: o, a: r }); } else r && n.push({ d: e, a: r }); return e; } return { e: e, u: using.bind(null, !1), a: using.bind(null, !0), d: function () { var o, t = this.e, s = 0; function next() { for (; o = n.pop();) try { if (!o.a && 1 === s) return s = 0, n.push(o), Promise.resolve().then(next); if (o.d) { var r = o.d.call(o.v); if (o.a) return s |= 2, Promise.resolve(r).then(next, err); } else s |= 1; } catch (r) { return err(r); } if (1 === s) return t !== e ? Promise.reject(t) : Promise.resolve(); if (t !== e) throw t; } function err(n) { return t = t !== e ? new r(n, t) : n, next(); } return next(); } }; }
11
+ const shouldSkipExplodeReexports = action => {
12
+ const {
13
+ loadedAndParsed
14
+ } = action.entrypoint;
15
+ if (loadedAndParsed.evaluator !== _shaker.shaker || !loadedAndParsed.ast) {
16
+ return false;
17
+ }
18
+ const barrelAnalysis = (0, _barrelManifest.analyzeBarrelFile)(loadedAndParsed.ast);
19
+ return barrelAnalysis.kind === 'barrel' && barrelAnalysis.complete;
20
+ };
21
+
9
22
  /**
10
23
  * The first stage of processing an entrypoint.
11
24
  * This stage is responsible for:
@@ -19,14 +32,25 @@ function* processEntrypoint() {
19
32
  log
20
33
  } = this.entrypoint;
21
34
  log('start processing (only: %o)', only);
35
+ this.entrypoint.beginProcessing();
22
36
  try {
23
37
  try {
24
38
  var _usingCtx = _usingCtx2();
25
39
  const abortSignal = _usingCtx.u(this.createAbortSignal());
26
- yield ['explodeReexports', this.entrypoint, undefined, abortSignal];
40
+ if (shouldSkipExplodeReexports(this)) {
41
+ log('skip explodeReexports for pure barrel');
42
+ } else {
43
+ yield ['explodeReexports', this.entrypoint, undefined, abortSignal];
44
+ }
27
45
  const result = yield* this.getNext('transform', this.entrypoint, undefined, abortSignal);
28
46
  this.entrypoint.assertNotSuperseded();
29
47
  this.entrypoint.setTransformResult(result);
48
+ const supersededWith = this.entrypoint.applyDeferredSupersede();
49
+ if (supersededWith) {
50
+ log('processing finished, deferred only detected; schedule next attempt');
51
+ yield* this.getNext('processEntrypoint', supersededWith, undefined, null);
52
+ return;
53
+ }
30
54
  log('entrypoint processing finished');
31
55
  } catch (_) {
32
56
  _usingCtx.e = _;
@@ -41,6 +65,8 @@ function* processEntrypoint() {
41
65
  }
42
66
  log(`Unhandled error: %O`, e);
43
67
  throw e;
68
+ } finally {
69
+ this.entrypoint.endProcessing();
44
70
  }
45
71
  }
46
72
  //# sourceMappingURL=processEntrypoint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"processEntrypoint.js","names":["_AbortError","require","_usingCtx2","r","SuppressedError","e","n","Error","name","error","suppressed","using","Object","TypeError","o","Symbol","asyncDispose","for","dispose","t","call","Promise","reject","push","v","d","a","u","bind","s","next","pop","resolve","then","err","processEntrypoint","only","log","entrypoint","_usingCtx","abortSignal","createAbortSignal","undefined","result","getNext","assertNotSuperseded","setTransformResult","_","isAborted","supersededWith"],"sources":["../../../src/transform/generators/processEntrypoint.ts"],"sourcesContent":["import { isAborted } from '../actions/AbortError';\nimport type { IProcessEntrypointAction, SyncScenarioForAction } from '../types';\n\n/**\n * The first stage of processing an entrypoint.\n * This stage is responsible for:\n * - scheduling the explodeReexports action\n * - scheduling the transform action\n * - rescheduling itself if the entrypoint is superseded\n */\nexport function* processEntrypoint(\n this: IProcessEntrypointAction\n): SyncScenarioForAction<IProcessEntrypointAction> {\n const { only, log } = this.entrypoint;\n log('start processing (only: %o)', only);\n\n try {\n using abortSignal = this.createAbortSignal();\n\n yield ['explodeReexports', this.entrypoint, undefined, abortSignal];\n const result = yield* this.getNext(\n 'transform',\n this.entrypoint,\n undefined,\n abortSignal\n );\n\n this.entrypoint.assertNotSuperseded();\n\n this.entrypoint.setTransformResult(result);\n\n log('entrypoint processing finished');\n } catch (e) {\n if (isAborted(e) && this.entrypoint.supersededWith) {\n log('processing aborted, schedule the next attempt');\n yield* this.getNext(\n 'processEntrypoint',\n this.entrypoint.supersededWith,\n undefined,\n null\n );\n\n return;\n }\n\n log(`Unhandled error: %O`, e);\n throw e;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"processEntrypoint.js","names":["_shaker","require","_AbortError","_barrelManifest","_usingCtx2","r","SuppressedError","e","n","Error","name","error","suppressed","using","Object","TypeError","o","Symbol","asyncDispose","for","dispose","t","call","Promise","reject","push","v","d","a","u","bind","s","next","pop","resolve","then","err","shouldSkipExplodeReexports","action","loadedAndParsed","entrypoint","evaluator","shaker","ast","barrelAnalysis","analyzeBarrelFile","kind","complete","processEntrypoint","only","log","beginProcessing","_usingCtx","abortSignal","createAbortSignal","undefined","result","getNext","assertNotSuperseded","setTransformResult","supersededWith","applyDeferredSupersede","_","isAborted","endProcessing"],"sources":["../../../src/transform/generators/processEntrypoint.ts"],"sourcesContent":["import { shaker } from '../../shaker';\nimport { isAborted } from '../actions/AbortError';\nimport { analyzeBarrelFile } from '../barrelManifest';\nimport type { IProcessEntrypointAction, SyncScenarioForAction } from '../types';\n\nconst shouldSkipExplodeReexports = (\n action: IProcessEntrypointAction\n): boolean => {\n const { loadedAndParsed } = action.entrypoint;\n if (loadedAndParsed.evaluator !== shaker || !loadedAndParsed.ast) {\n return false;\n }\n\n const barrelAnalysis = analyzeBarrelFile(loadedAndParsed.ast);\n return barrelAnalysis.kind === 'barrel' && barrelAnalysis.complete;\n};\n\n/**\n * The first stage of processing an entrypoint.\n * This stage is responsible for:\n * - scheduling the explodeReexports action\n * - scheduling the transform action\n * - rescheduling itself if the entrypoint is superseded\n */\nexport function* processEntrypoint(\n this: IProcessEntrypointAction\n): SyncScenarioForAction<IProcessEntrypointAction> {\n const { only, log } = this.entrypoint;\n log('start processing (only: %o)', only);\n\n this.entrypoint.beginProcessing();\n\n try {\n using abortSignal = this.createAbortSignal();\n\n if (shouldSkipExplodeReexports(this)) {\n log('skip explodeReexports for pure barrel');\n } else {\n yield ['explodeReexports', this.entrypoint, undefined, abortSignal];\n }\n const result = yield* this.getNext(\n 'transform',\n this.entrypoint,\n undefined,\n abortSignal\n );\n\n this.entrypoint.assertNotSuperseded();\n\n this.entrypoint.setTransformResult(result);\n\n const supersededWith = this.entrypoint.applyDeferredSupersede();\n if (supersededWith) {\n log('processing finished, deferred only detected; schedule next attempt');\n yield* this.getNext('processEntrypoint', supersededWith, undefined, null);\n return;\n }\n\n log('entrypoint processing finished');\n } catch (e) {\n if (isAborted(e) && this.entrypoint.supersededWith) {\n log('processing aborted, schedule the next attempt');\n yield* this.getNext(\n 'processEntrypoint',\n this.entrypoint.supersededWith,\n undefined,\n null\n );\n\n return;\n }\n\n log(`Unhandled error: %O`, e);\n throw e;\n } finally {\n this.entrypoint.endProcessing();\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -46,11 +46,12 @@ function applyImportOverrides(services, entrypoint, resolvedImports) {
46
46
  };
47
47
  });
48
48
  }
49
- function emitDependency(emitter, entrypoint, imports) {
49
+ function emitDependency(emitter, entrypoint, imports, phase) {
50
50
  emitter.single({
51
51
  type: 'dependency',
52
52
  file: entrypoint.name,
53
53
  only: entrypoint.only,
54
+ phase,
54
55
  imports: imports.map(({
55
56
  resolved,
56
57
  only
@@ -70,6 +71,9 @@ function filterUnresolved(entrypoint, resolvedImports) {
70
71
  return true;
71
72
  });
72
73
  }
74
+ function getPreResolvedImports(preResolved) {
75
+ return new Map((preResolved !== null && preResolved !== void 0 ? preResolved : []).map(dependency => [dependency.source, dependency]));
76
+ }
73
77
 
74
78
  /**
75
79
  * Synchronously resolves specified imports with a provided resolver.
@@ -86,15 +90,25 @@ function* syncResolveImports(resolve) {
86
90
  }
87
91
  } = this;
88
92
  const listOfImports = Array.from((_imports$entries = imports === null || imports === void 0 ? void 0 : imports.entries()) !== null && _imports$entries !== void 0 ? _imports$entries : []);
93
+ const preResolvedImports = getPreResolvedImports(this.data.preResolved);
89
94
  const {
90
95
  log
91
96
  } = entrypoint;
92
97
  if (listOfImports.length === 0) {
93
- emitDependency(eventEmitter, entrypoint, []);
98
+ emitDependency(eventEmitter, entrypoint, [], this.data.phase);
94
99
  log('%s has no imports', entrypoint.name);
95
100
  return [];
96
101
  }
97
102
  const resolvedImports = listOfImports.map(([source, only]) => {
103
+ const preResolved = preResolvedImports.get(source);
104
+ if (preResolved) {
105
+ const mergedOnly = (0, _Entrypoint.mergeOnly)(preResolved.only, only);
106
+ log('[sync-resolve] ♻️ %s -> %s (only: %o)', source, preResolved.resolved, mergedOnly);
107
+ return {
108
+ ...preResolved,
109
+ only: mergedOnly
110
+ };
111
+ }
98
112
  let resolved = null;
99
113
  try {
100
114
  resolved = resolve(source, entrypoint.name, (0, _Entrypoint.getStack)(entrypoint));
@@ -110,7 +124,7 @@ function* syncResolveImports(resolve) {
110
124
  });
111
125
  const overriddenImports = applyImportOverrides(this.services, entrypoint, resolvedImports);
112
126
  const filteredImports = filterUnresolved(entrypoint, overriddenImports);
113
- emitDependency(eventEmitter, entrypoint, filteredImports);
127
+ emitDependency(eventEmitter, entrypoint, filteredImports, this.data.phase);
114
128
  return filteredImports;
115
129
  }
116
130
 
@@ -129,11 +143,12 @@ async function* asyncResolveImports(resolve) {
129
143
  }
130
144
  } = this;
131
145
  const listOfImports = Array.from((_imports$entries2 = imports === null || imports === void 0 ? void 0 : imports.entries()) !== null && _imports$entries2 !== void 0 ? _imports$entries2 : []);
146
+ const preResolvedImports = getPreResolvedImports(this.data.preResolved);
132
147
  const {
133
148
  log
134
149
  } = entrypoint;
135
150
  if (listOfImports.length === 0) {
136
- emitDependency(eventEmitter, entrypoint, []);
151
+ emitDependency(eventEmitter, entrypoint, [], this.data.phase);
137
152
  log('%s has no imports', entrypoint.name);
138
153
  return [];
139
154
  }
@@ -155,6 +170,15 @@ async function* asyncResolveImports(resolve) {
155
170
  };
156
171
  };
157
172
  const resolvedImports = await Promise.all(listOfImports.map(([source, importsOnly]) => {
173
+ const preResolved = preResolvedImports.get(source);
174
+ if (preResolved) {
175
+ const mergedOnly = (0, _Entrypoint.mergeOnly)(preResolved.only, importsOnly);
176
+ log('[async-resolve] ♻️ %s (%o) in %s -> %s', source, mergedOnly, entrypoint.name, preResolved.resolved);
177
+ return {
178
+ ...preResolved,
179
+ only: mergedOnly
180
+ };
181
+ }
158
182
  const cached = entrypoint.getDependency(source);
159
183
  if (cached) {
160
184
  return {
@@ -191,7 +215,7 @@ async function* asyncResolveImports(resolve) {
191
215
  log('resolved %d imports', resolvedImports.length);
192
216
  const overriddenImports = applyImportOverrides(this.services, entrypoint, resolvedImports);
193
217
  const filteredImports = filterUnresolved(entrypoint, overriddenImports);
194
- emitDependency(eventEmitter, entrypoint, filteredImports);
218
+ emitDependency(eventEmitter, entrypoint, filteredImports, this.data.phase);
195
219
  return filteredImports;
196
220
  }
197
221
  //# sourceMappingURL=resolveImports.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveImports.js","names":["_getFileIdx","require","_Entrypoint","_importOverrides","applyImportOverrides","services","entrypoint","resolvedImports","overrides","options","pluginOptions","importOverrides","Object","keys","length","root","importer","name","stack","getStack","map","dependency","key","toImportKey","source","resolved","override","getImportOverride","nextOnly","applyImportOverrideToOnly","only","nextResolved","mock","resolveMockSpecifier","emitDependency","emitter","imports","single","type","file","from","what","fileIdx","getFileIdx","filterUnresolved","filter","i","log","syncResolveImports","resolve","_imports$entries","data","eventEmitter","listOfImports","Array","entries","err","overriddenImports","filteredImports","asyncResolveImports","_imports$entries2","getResolveTask","Promise","all","importsOnly","cached","getDependency","mergeOnly","task","newTask","then","res","isSuperSet","merged","addResolveTask","resolveTask"],"sources":["../../../src/transform/generators/resolveImports.ts"],"sourcesContent":["/* eslint-disable no-continue,no-await-in-loop,require-yield */\nimport { getFileIdx } from '../../utils/getFileIdx';\nimport type { Entrypoint } from '../Entrypoint';\nimport { getStack, isSuperSet, mergeOnly } from '../Entrypoint.helpers';\nimport type { IEntrypointDependency } from '../Entrypoint.types';\nimport {\n applyImportOverrideToOnly,\n getImportOverride,\n resolveMockSpecifier,\n toImportKey,\n} from '../../utils/importOverrides';\nimport type {\n AsyncScenarioForAction,\n IResolveImportsAction,\n Services,\n SyncScenarioForAction,\n} from '../types';\n\nfunction applyImportOverrides(\n services: Services,\n entrypoint: Entrypoint,\n resolvedImports: IEntrypointDependency[]\n): IEntrypointDependency[] {\n const overrides = services.options.pluginOptions.importOverrides;\n if (!overrides || Object.keys(overrides).length === 0) {\n return resolvedImports;\n }\n\n const { root } = services.options;\n const importer = entrypoint.name;\n const stack = getStack(entrypoint);\n\n return resolvedImports.map((dependency) => {\n const { key } = toImportKey({\n source: dependency.source,\n resolved: dependency.resolved,\n root,\n });\n const override = getImportOverride(overrides, key);\n if (!override) {\n return dependency;\n }\n\n const nextOnly = applyImportOverrideToOnly(dependency.only, override);\n const nextResolved = override.mock\n ? resolveMockSpecifier({\n mock: override.mock,\n importer,\n root,\n stack,\n })\n : dependency.resolved;\n\n return {\n ...dependency,\n only: nextOnly,\n resolved: nextResolved,\n };\n });\n}\n\nfunction emitDependency(\n emitter: Services['eventEmitter'],\n entrypoint: IResolveImportsAction['entrypoint'],\n imports: IEntrypointDependency[]\n) {\n emitter.single({\n type: 'dependency',\n file: entrypoint.name,\n only: entrypoint.only,\n imports: imports.map(({ resolved, only }) => ({\n from: resolved,\n what: only,\n })),\n fileIdx: getFileIdx(entrypoint.name),\n });\n}\n\nfunction filterUnresolved(\n entrypoint: Entrypoint,\n resolvedImports: IEntrypointDependency[]\n): IEntrypointDependency[] {\n return resolvedImports.filter((i): i is IEntrypointDependency => {\n if (i.resolved === null) {\n entrypoint.log(\n `[resolve] ✅ %s in %s is ignored`,\n i.source,\n entrypoint.name\n );\n return false;\n }\n\n return true;\n });\n}\n\n/**\n * Synchronously resolves specified imports with a provided resolver.\n */\nexport function* syncResolveImports(\n this: IResolveImportsAction,\n resolve: (what: string, importer: string, stack: string[]) => string\n): SyncScenarioForAction<IResolveImportsAction> {\n const {\n data: { imports },\n entrypoint,\n services: { eventEmitter },\n } = this;\n const listOfImports = Array.from(imports?.entries() ?? []);\n const { log } = entrypoint;\n\n if (listOfImports.length === 0) {\n emitDependency(eventEmitter, entrypoint, []);\n\n log('%s has no imports', entrypoint.name);\n return [];\n }\n\n const resolvedImports = listOfImports.map(([source, only]) => {\n let resolved: string | null = null;\n try {\n resolved = resolve(source, entrypoint.name, getStack(entrypoint));\n log('[sync-resolve] ✅ %s -> %s (only: %o)', source, resolved, only);\n } catch (err) {\n log('[sync-resolve] ❌ cannot resolve %s: %O', source, err);\n }\n\n return {\n source,\n only,\n resolved,\n };\n });\n\n const overriddenImports = applyImportOverrides(\n this.services,\n entrypoint,\n resolvedImports\n );\n const filteredImports = filterUnresolved(entrypoint, overriddenImports);\n emitDependency(eventEmitter, entrypoint, filteredImports);\n\n return filteredImports;\n}\n\n/**\n * Asynchronously resolves specified imports with a provided resolver.\n */\nexport async function* asyncResolveImports(\n this: IResolveImportsAction,\n resolve: (\n what: string,\n importer: string,\n stack: string[]\n ) => Promise<string | null>\n): AsyncScenarioForAction<IResolveImportsAction> {\n const {\n data: { imports },\n entrypoint,\n services: { eventEmitter },\n } = this;\n const listOfImports = Array.from(imports?.entries() ?? []);\n const { log } = entrypoint;\n\n if (listOfImports.length === 0) {\n emitDependency(eventEmitter, entrypoint, []);\n\n log('%s has no imports', entrypoint.name);\n return [];\n }\n\n log('resolving %d imports', listOfImports.length);\n\n const getResolveTask = async (\n source: string,\n only: string[]\n ): Promise<IEntrypointDependency> => {\n let resolved: string | null = null;\n try {\n resolved = await resolve(source, entrypoint.name, getStack(entrypoint));\n } catch (err) {\n log(\n '[async-resolve] ❌ cannot resolve %s in %s: %O',\n source,\n entrypoint.name,\n err\n );\n }\n\n if (resolved !== null) {\n log(\n '[async-resolve] ✅ %s (%o) in %s -> %s',\n source,\n only,\n entrypoint.name,\n resolved\n );\n }\n\n return {\n source,\n only,\n resolved,\n };\n };\n\n const resolvedImports = await Promise.all<IEntrypointDependency>(\n listOfImports.map(([source, importsOnly]) => {\n const cached = entrypoint.getDependency(source);\n if (cached) {\n return {\n source,\n only: mergeOnly(cached.only, importsOnly),\n resolved: cached.resolved,\n };\n }\n\n const task = entrypoint.getResolveTask(source);\n if (task) {\n // If we have cached task, we need to merge only…\n const newTask = task.then((res) => {\n if (isSuperSet(res.only, importsOnly)) {\n return res;\n }\n\n // Is this branch even possible?\n const merged = mergeOnly(res.only, importsOnly);\n\n log('merging imports %o and %o: %o', importsOnly, res.only, merged);\n\n return { ...res, only: merged };\n });\n\n // … and update the cache\n entrypoint.addResolveTask(source, newTask);\n return newTask;\n }\n\n const resolveTask = getResolveTask(source, importsOnly);\n\n entrypoint.addResolveTask(source, resolveTask);\n\n return resolveTask;\n })\n );\n\n log('resolved %d imports', resolvedImports.length);\n\n const overriddenImports = applyImportOverrides(\n this.services,\n entrypoint,\n resolvedImports\n );\n const filteredImports = filterUnresolved(entrypoint, overriddenImports);\n emitDependency(eventEmitter, entrypoint, filteredImports);\n return filteredImports;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"resolveImports.js","names":["_getFileIdx","require","_Entrypoint","_importOverrides","applyImportOverrides","services","entrypoint","resolvedImports","overrides","options","pluginOptions","importOverrides","Object","keys","length","root","importer","name","stack","getStack","map","dependency","key","toImportKey","source","resolved","override","getImportOverride","nextOnly","applyImportOverrideToOnly","only","nextResolved","mock","resolveMockSpecifier","emitDependency","emitter","imports","phase","single","type","file","from","what","fileIdx","getFileIdx","filterUnresolved","filter","i","log","getPreResolvedImports","preResolved","Map","syncResolveImports","resolve","_imports$entries","data","eventEmitter","listOfImports","Array","entries","preResolvedImports","get","mergedOnly","mergeOnly","err","overriddenImports","filteredImports","asyncResolveImports","_imports$entries2","getResolveTask","Promise","all","importsOnly","cached","getDependency","task","newTask","then","res","isSuperSet","merged","addResolveTask","resolveTask"],"sources":["../../../src/transform/generators/resolveImports.ts"],"sourcesContent":["/* eslint-disable no-continue,no-await-in-loop,require-yield */\nimport { getFileIdx } from '../../utils/getFileIdx';\nimport type { Entrypoint } from '../Entrypoint';\nimport { getStack, isSuperSet, mergeOnly } from '../Entrypoint.helpers';\nimport type { IEntrypointDependency } from '../Entrypoint.types';\nimport {\n applyImportOverrideToOnly,\n getImportOverride,\n resolveMockSpecifier,\n toImportKey,\n} from '../../utils/importOverrides';\nimport type {\n AsyncScenarioForAction,\n IResolveImportsAction,\n Services,\n SyncScenarioForAction,\n} from '../types';\n\nfunction applyImportOverrides(\n services: Services,\n entrypoint: Entrypoint,\n resolvedImports: IEntrypointDependency[]\n): IEntrypointDependency[] {\n const overrides = services.options.pluginOptions.importOverrides;\n if (!overrides || Object.keys(overrides).length === 0) {\n return resolvedImports;\n }\n\n const { root } = services.options;\n const importer = entrypoint.name;\n const stack = getStack(entrypoint);\n\n return resolvedImports.map((dependency) => {\n const { key } = toImportKey({\n source: dependency.source,\n resolved: dependency.resolved,\n root,\n });\n const override = getImportOverride(overrides, key);\n if (!override) {\n return dependency;\n }\n\n const nextOnly = applyImportOverrideToOnly(dependency.only, override);\n const nextResolved = override.mock\n ? resolveMockSpecifier({\n mock: override.mock,\n importer,\n root,\n stack,\n })\n : dependency.resolved;\n\n return {\n ...dependency,\n only: nextOnly,\n resolved: nextResolved,\n };\n });\n}\n\nfunction emitDependency(\n emitter: Services['eventEmitter'],\n entrypoint: IResolveImportsAction['entrypoint'],\n imports: IEntrypointDependency[],\n phase?: IResolveImportsAction['data']['phase']\n) {\n emitter.single({\n type: 'dependency',\n file: entrypoint.name,\n only: entrypoint.only,\n phase,\n imports: imports.map(({ resolved, only }) => ({\n from: resolved,\n what: only,\n })),\n fileIdx: getFileIdx(entrypoint.name),\n });\n}\n\nfunction filterUnresolved(\n entrypoint: Entrypoint,\n resolvedImports: IEntrypointDependency[]\n): IEntrypointDependency[] {\n return resolvedImports.filter((i): i is IEntrypointDependency => {\n if (i.resolved === null) {\n entrypoint.log(\n `[resolve] ✅ %s in %s is ignored`,\n i.source,\n entrypoint.name\n );\n return false;\n }\n\n return true;\n });\n}\n\nfunction getPreResolvedImports(\n preResolved: IResolveImportsAction['data']['preResolved']\n): Map<string, IEntrypointDependency> {\n return new Map(\n (preResolved ?? []).map((dependency) => [dependency.source, dependency])\n );\n}\n\n/**\n * Synchronously resolves specified imports with a provided resolver.\n */\nexport function* syncResolveImports(\n this: IResolveImportsAction,\n resolve: (what: string, importer: string, stack: string[]) => string\n): SyncScenarioForAction<IResolveImportsAction> {\n const {\n data: { imports },\n entrypoint,\n services: { eventEmitter },\n } = this;\n const listOfImports = Array.from(imports?.entries() ?? []);\n const preResolvedImports = getPreResolvedImports(this.data.preResolved);\n const { log } = entrypoint;\n\n if (listOfImports.length === 0) {\n emitDependency(eventEmitter, entrypoint, [], this.data.phase);\n\n log('%s has no imports', entrypoint.name);\n return [];\n }\n\n const resolvedImports = listOfImports.map(([source, only]) => {\n const preResolved = preResolvedImports.get(source);\n if (preResolved) {\n const mergedOnly = mergeOnly(preResolved.only, only);\n log(\n '[sync-resolve] ♻️ %s -> %s (only: %o)',\n source,\n preResolved.resolved,\n mergedOnly\n );\n return {\n ...preResolved,\n only: mergedOnly,\n };\n }\n\n let resolved: string | null = null;\n try {\n resolved = resolve(source, entrypoint.name, getStack(entrypoint));\n log('[sync-resolve] ✅ %s -> %s (only: %o)', source, resolved, only);\n } catch (err) {\n log('[sync-resolve] ❌ cannot resolve %s: %O', source, err);\n }\n\n return {\n source,\n only,\n resolved,\n };\n });\n\n const overriddenImports = applyImportOverrides(\n this.services,\n entrypoint,\n resolvedImports\n );\n const filteredImports = filterUnresolved(entrypoint, overriddenImports);\n emitDependency(eventEmitter, entrypoint, filteredImports, this.data.phase);\n\n return filteredImports;\n}\n\n/**\n * Asynchronously resolves specified imports with a provided resolver.\n */\nexport async function* asyncResolveImports(\n this: IResolveImportsAction,\n resolve: (\n what: string,\n importer: string,\n stack: string[]\n ) => Promise<string | null>\n): AsyncScenarioForAction<IResolveImportsAction> {\n const {\n data: { imports },\n entrypoint,\n services: { eventEmitter },\n } = this;\n const listOfImports = Array.from(imports?.entries() ?? []);\n const preResolvedImports = getPreResolvedImports(this.data.preResolved);\n const { log } = entrypoint;\n\n if (listOfImports.length === 0) {\n emitDependency(eventEmitter, entrypoint, [], this.data.phase);\n\n log('%s has no imports', entrypoint.name);\n return [];\n }\n\n log('resolving %d imports', listOfImports.length);\n\n const getResolveTask = async (\n source: string,\n only: string[]\n ): Promise<IEntrypointDependency> => {\n let resolved: string | null = null;\n try {\n resolved = await resolve(source, entrypoint.name, getStack(entrypoint));\n } catch (err) {\n log(\n '[async-resolve] ❌ cannot resolve %s in %s: %O',\n source,\n entrypoint.name,\n err\n );\n }\n\n if (resolved !== null) {\n log(\n '[async-resolve] ✅ %s (%o) in %s -> %s',\n source,\n only,\n entrypoint.name,\n resolved\n );\n }\n\n return {\n source,\n only,\n resolved,\n };\n };\n\n const resolvedImports = await Promise.all<IEntrypointDependency>(\n listOfImports.map(([source, importsOnly]) => {\n const preResolved = preResolvedImports.get(source);\n if (preResolved) {\n const mergedOnly = mergeOnly(preResolved.only, importsOnly);\n log(\n '[async-resolve] ♻️ %s (%o) in %s -> %s',\n source,\n mergedOnly,\n entrypoint.name,\n preResolved.resolved\n );\n return {\n ...preResolved,\n only: mergedOnly,\n };\n }\n\n const cached = entrypoint.getDependency(source);\n if (cached) {\n return {\n source,\n only: mergeOnly(cached.only, importsOnly),\n resolved: cached.resolved,\n };\n }\n\n const task = entrypoint.getResolveTask(source);\n if (task) {\n // If we have cached task, we need to merge only…\n const newTask = task.then((res) => {\n if (isSuperSet(res.only, importsOnly)) {\n return res;\n }\n\n // Is this branch even possible?\n const merged = mergeOnly(res.only, importsOnly);\n\n log('merging imports %o and %o: %o', importsOnly, res.only, merged);\n\n return { ...res, only: merged };\n });\n\n // … and update the cache\n entrypoint.addResolveTask(source, newTask);\n return newTask;\n }\n\n const resolveTask = getResolveTask(source, importsOnly);\n\n entrypoint.addResolveTask(source, resolveTask);\n\n return resolveTask;\n })\n );\n\n log('resolved %d imports', resolvedImports.length);\n\n const overriddenImports = applyImportOverrides(\n this.services,\n entrypoint,\n resolvedImports\n );\n const filteredImports = filterUnresolved(entrypoint, overriddenImports);\n emitDependency(eventEmitter, entrypoint, filteredImports, this.data.phase);\n return filteredImports;\n}\n"],"mappings":"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","ignoreList":[]}