@wyw-in-js/transform 0.1.1 → 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.
- package/esm/index.js +4 -1
- package/esm/index.js.map +1 -1
- package/esm/options/loadBabelOptions.js +1 -1
- package/esm/options/loadBabelOptions.js.map +1 -1
- package/esm/plugins/babel-transform.js +2 -2
- package/esm/plugins/babel-transform.js.map +1 -1
- package/esm/plugins/collector.js +4 -4
- package/esm/plugins/collector.js.map +1 -1
- package/esm/plugins/preeval.js +11 -11
- package/esm/plugins/preeval.js.map +1 -1
- package/esm/plugins/shaker.js +5 -5
- package/esm/plugins/shaker.js.map +1 -1
- package/esm/shaker.js +2 -2
- package/esm/shaker.js.map +1 -1
- package/esm/transform/Entrypoint.helpers.js +1 -2
- package/esm/transform/Entrypoint.helpers.js.map +1 -1
- package/esm/transform/Entrypoint.js +4 -4
- package/esm/transform/Entrypoint.js.map +1 -1
- package/esm/transform/generators/collect.js +3 -2
- package/esm/transform/generators/collect.js.map +1 -1
- package/esm/transform/generators/evalFile.js +6 -6
- package/esm/transform/generators/evalFile.js.map +1 -1
- package/esm/transform/generators/extract.js +18 -14
- package/esm/transform/generators/extract.js.map +1 -1
- package/esm/transform/generators/transform.js +2 -2
- package/esm/transform/generators/transform.js.map +1 -1
- package/esm/transform/generators/workflow.js +3 -3
- package/esm/transform/generators/workflow.js.map +1 -1
- package/esm/transform/helpers/{loadLinariaOptions.js → loadWywOptions.js} +5 -5
- package/esm/transform/helpers/loadWywOptions.js.map +1 -0
- package/esm/transform.js +11 -10
- package/esm/transform.js.map +1 -1
- package/esm/types.js.map +1 -1
- package/esm/utils/ShakerMetadata.js +1 -1
- package/esm/utils/ShakerMetadata.js.map +1 -1
- package/esm/utils/{addIdentifierToLinariaPreval.js → addIdentifierToWywPreval.js} +10 -10
- package/esm/utils/addIdentifierToWywPreval.js.map +1 -0
- package/esm/utils/collectExportsAndImports.js +141 -53
- package/esm/utils/collectExportsAndImports.js.map +1 -1
- package/esm/utils/collectTemplateDependencies.js +2 -2
- package/esm/utils/collectTemplateDependencies.js.map +1 -1
- package/esm/utils/getTagProcessor.js +1 -1
- package/esm/utils/getTagProcessor.js.map +1 -1
- package/esm/utils/hasWywPreval.js +7 -0
- package/esm/utils/hasWywPreval.js.map +1 -0
- package/lib/index.js +28 -4
- package/lib/index.js.map +1 -1
- package/lib/options/loadBabelOptions.js +1 -1
- package/lib/options/loadBabelOptions.js.map +1 -1
- package/lib/plugins/babel-transform.js +2 -2
- package/lib/plugins/babel-transform.js.map +1 -1
- package/lib/plugins/collector.js +4 -4
- package/lib/plugins/collector.js.map +1 -1
- package/lib/plugins/preeval.js +11 -11
- package/lib/plugins/preeval.js.map +1 -1
- package/lib/plugins/shaker.js +5 -5
- package/lib/plugins/shaker.js.map +1 -1
- package/lib/shaker.js +2 -2
- package/lib/shaker.js.map +1 -1
- package/lib/transform/Entrypoint.helpers.js +1 -2
- package/lib/transform/Entrypoint.helpers.js.map +1 -1
- package/lib/transform/Entrypoint.js +4 -4
- package/lib/transform/Entrypoint.js.map +1 -1
- package/lib/transform/generators/collect.js +1 -1
- package/lib/transform/generators/collect.js.map +1 -1
- package/lib/transform/generators/evalFile.js +6 -6
- package/lib/transform/generators/evalFile.js.map +1 -1
- package/lib/transform/generators/extract.js +18 -14
- package/lib/transform/generators/extract.js.map +1 -1
- package/lib/transform/generators/transform.js +2 -2
- package/lib/transform/generators/transform.js.map +1 -1
- package/lib/transform/generators/workflow.js +3 -3
- package/lib/transform/generators/workflow.js.map +1 -1
- package/lib/transform/helpers/{loadLinariaOptions.js → loadWywOptions.js} +6 -6
- package/lib/transform/helpers/loadWywOptions.js.map +1 -0
- package/lib/transform/helpers/withDefaultServices.js +2 -2
- package/lib/transform/helpers/withDefaultServices.js.map +1 -1
- package/lib/transform.js +11 -10
- package/lib/transform.js.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/ShakerMetadata.js +1 -1
- package/lib/utils/ShakerMetadata.js.map +1 -1
- package/lib/utils/{addIdentifierToLinariaPreval.js → addIdentifierToWywPreval.js} +12 -12
- package/lib/utils/addIdentifierToWywPreval.js.map +1 -0
- package/lib/utils/collectExportsAndImports.js +141 -53
- package/lib/utils/collectExportsAndImports.js.map +1 -1
- package/lib/utils/collectTemplateDependencies.js +2 -2
- package/lib/utils/collectTemplateDependencies.js.map +1 -1
- package/lib/utils/getTagProcessor.js +2 -2
- package/lib/utils/getTagProcessor.js.map +1 -1
- package/lib/utils/hasWywPreval.js +13 -0
- package/lib/utils/hasWywPreval.js.map +1 -0
- package/lib/vm/createVmContext.js +2 -2
- package/lib/vm/createVmContext.js.map +1 -1
- package/package.json +24 -21
- package/types/index.d.ts +5 -2
- package/types/index.js +9 -3
- package/types/options/loadBabelOptions.js +1 -1
- package/types/plugins/babel-transform.js +2 -2
- package/types/plugins/collector.js +4 -4
- package/types/plugins/preeval.js +11 -11
- package/types/plugins/shaker.js +5 -5
- package/types/shaker.js +2 -2
- package/types/transform/Entrypoint.d.ts +1 -1
- package/types/transform/Entrypoint.helpers.js +3 -3
- package/types/transform/Entrypoint.js +4 -4
- package/types/transform/generators/collect.js +1 -1
- package/types/transform/generators/evalFile.js +7 -7
- package/types/transform/generators/extract.js +21 -12
- package/types/transform/generators/transform.js +2 -4
- package/types/transform/generators/workflow.js +3 -3
- package/types/transform/helpers/{loadLinariaOptions.d.ts → loadWywOptions.d.ts} +1 -1
- package/types/transform/helpers/{loadLinariaOptions.js → loadWywOptions.js} +19 -19
- package/types/transform.d.ts +7 -6
- package/types/transform.js +11 -10
- package/types/types.d.ts +1 -1
- package/types/utils/ShakerMetadata.d.ts +1 -1
- package/types/utils/ShakerMetadata.js +1 -1
- package/types/utils/addIdentifierToWywPreval.d.ts +4 -0
- package/types/utils/{addIdentifierToLinariaPreval.js → addIdentifierToWywPreval.js} +12 -12
- package/types/utils/collectExportsAndImports.js +157 -58
- package/types/utils/collectTemplateDependencies.d.ts +1 -1
- package/types/utils/collectTemplateDependencies.js +2 -2
- package/types/utils/getTagProcessor.js +2 -2
- package/types/utils/hasWywPreval.d.ts +4 -0
- package/types/utils/{hasLinariaPreval.js → hasWywPreval.js} +3 -3
- package/esm/transform/helpers/loadLinariaOptions.js.map +0 -1
- package/esm/utils/addIdentifierToLinariaPreval.js.map +0 -1
- package/esm/utils/findPackageJSON.js +0 -26
- package/esm/utils/findPackageJSON.js.map +0 -1
- package/esm/utils/hasLinariaPreval.js +0 -7
- package/esm/utils/hasLinariaPreval.js.map +0 -1
- package/lib/transform/helpers/loadLinariaOptions.js.map +0 -1
- package/lib/utils/addIdentifierToLinariaPreval.js.map +0 -1
- package/lib/utils/findPackageJSON.js +0 -35
- package/lib/utils/findPackageJSON.js.map +0 -1
- package/lib/utils/hasLinariaPreval.js +0 -13
- package/lib/utils/hasLinariaPreval.js.map +0 -1
- package/types/utils/addIdentifierToLinariaPreval.d.ts +0 -4
- package/types/utils/findPackageJSON.d.ts +0 -1
- package/types/utils/findPackageJSON.js +0 -56
- package/types/utils/hasLinariaPreval.d.ts +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaker.js","names":["_shared","require","_collectExportsAndImports","_getFileIdx","_isRemoved","_scopeHelpers","_traversalCache","EXT_REGEX","ALLOWED_EXTENSIONS","shouldKeepSideEffect","importPath","ext","match","includes","getBindingForExport","exportPath","isIdentifier","scope","getBinding","node","name","variableDeclarator","findParent","p","isVariableDeclarator","id","get","isAssignmentExpression","left","isFunctionDeclaration","isClassDeclaration","undefined","withoutRemoved","items","filter","local","isRemoved","rearrangeExports","types","t","root","exportRefs","exports","rearranged","rootScope","forEach","refs","length","declarator","uid","generateUid","declaration","unshiftContainer","variableDeclaration","identifier","registerDeclaration","ref","replaced","replaceWith","isBindingIdentifier","_replaced$parentPath","registerConstantViolation","parentPath","reference","pushed","pushContainer","expressionStatement","assignmentExpression","memberExpression","shakerPlugin","babel","keepSideEffects","ifUnknownExport","onlyExports","shakerLogger","logger","extend","pre","file","filename","opts","log","getFileIdx","join","onlyExportsSet","Set","collected","collectExportsAndImports","path","sideEffectImports","imports","sideEffectImport","Object","values","reexports","hasLinariaPreval","__linariaPreval","hasDefault","default","has","delete","size","deadExports","keys","remove","importedAsSideEffect","isEsModule","add","aliveExports","importNames","map","imported","entries","exported","some","alive","exp","exportToPath","Map","set","notFoundExports","clear","isAllExportsFound","Error","forDeleting","i","source","push","deleted","dereferenced","changed","binding","action","findActionForNode","parent","outerReferences","referencePaths","isAncestor","dereference","applyAction","removeWithRelated","visitor","post","processedImports","addImport","metadata","linariaEvaluator","invalidateTraversalCache"],"sources":["../../src/plugins/shaker.ts"],"sourcesContent":["import type { BabelFile, PluginObj, NodePath } from '@babel/core';\nimport type { Binding } from '@babel/traverse';\nimport type {\n Identifier,\n MemberExpression,\n Program,\n VariableDeclarator,\n} from '@babel/types';\n\nimport { logger } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport type { IMetadata } from '../utils/ShakerMetadata';\nimport type { Exports, IState } from '../utils/collectExportsAndImports';\nimport {\n collectExportsAndImports,\n sideEffectImport,\n} from '../utils/collectExportsAndImports';\nimport { getFileIdx } from '../utils/getFileIdx';\nimport { isRemoved } from '../utils/isRemoved';\nimport {\n applyAction,\n dereference,\n findActionForNode,\n reference,\n removeWithRelated,\n} from '../utils/scopeHelpers';\nimport { invalidateTraversalCache } from '../utils/traversalCache';\n\nconst EXT_REGEX = /\\.[0-9a-z]+$/;\nconst ALLOWED_EXTENSIONS = ['.js', '.cjs', '.mjs'];\n\nfunction shouldKeepSideEffect(importPath: string) {\n const [ext] = importPath.match(EXT_REGEX) || [''];\n\n return ext === '' || ALLOWED_EXTENSIONS.includes(ext);\n}\n\nexport interface IShakerOptions {\n ifUnknownExport?: 'error' | 'ignore' | 'reexport-all' | 'skip-shaking';\n keepSideEffects?: boolean;\n onlyExports: string[];\n}\n\ninterface NodeWithName {\n name: string;\n}\n\nfunction getBindingForExport(exportPath: NodePath): Binding | undefined {\n if (exportPath.isIdentifier()) {\n return exportPath.scope.getBinding(exportPath.node.name);\n }\n\n const variableDeclarator = exportPath.findParent((p) =>\n p.isVariableDeclarator()\n ) as NodePath<VariableDeclarator> | undefined;\n if (variableDeclarator) {\n const id = variableDeclarator.get('id');\n if (id.isIdentifier()) {\n return variableDeclarator.scope.getBinding(id.node.name);\n }\n }\n\n if (exportPath.isAssignmentExpression()) {\n const left = exportPath.get('left');\n if (left.isIdentifier()) {\n return exportPath.scope.getBinding(left.node.name);\n }\n }\n\n if (exportPath.isFunctionDeclaration() || exportPath.isClassDeclaration()) {\n return exportPath.scope.getBinding(exportPath.node.id!.name);\n }\n\n return undefined;\n}\n\nconst withoutRemoved = <T extends { local: NodePath }>(items: T[]): T[] =>\n items.filter(({ local }) => !isRemoved(local));\n\nfunction rearrangeExports(\n { types: t }: Core,\n root: NodePath<Program>,\n exportRefs: Map<string, NodePath<MemberExpression>[]>,\n exports: Exports\n): Exports {\n const rearranged = {\n ...exports,\n };\n\n const rootScope = root.scope;\n exportRefs.forEach((refs, name) => {\n if (refs.length <= 1) {\n if (refs.length === 1) {\n // Maybe exports is assigned to another variable?\n const declarator = refs[0].findParent((p) =>\n p.isVariableDeclarator()\n ) as NodePath<VariableDeclarator> | undefined;\n\n if (!declarator) {\n return;\n }\n } else {\n return;\n }\n }\n\n const uid = rootScope.generateUid(name);\n // Define variable in the beginning\n const [declaration] = root.unshiftContainer('body', [\n t.variableDeclaration('var', [t.variableDeclarator(t.identifier(uid))]),\n ]);\n\n rootScope.registerDeclaration(declaration);\n\n // Replace every reference with defined variable\n refs.forEach((ref) => {\n const [replaced] = ref.replaceWith(t.identifier(uid));\n if (replaced.isBindingIdentifier()) {\n rootScope.registerConstantViolation(replaced);\n if (replaced.parentPath?.parentPath?.isVariableDeclarator()) {\n // This is `const foo = exports.foo = \"value\"` case\n reference(replaced, replaced, true);\n }\n } else {\n reference(replaced);\n }\n });\n\n // Assign defined variable to the export\n const [pushed] = root.pushContainer('body', [\n t.expressionStatement(\n t.assignmentExpression(\n '=',\n t.memberExpression(t.identifier('exports'), t.identifier(name)),\n t.identifier(uid)\n )\n ),\n ]);\n\n const local = pushed.get('expression.right') as NodePath<Identifier>;\n reference(local);\n\n rearranged[name] = local;\n });\n\n return rearranged;\n}\n\nexport default function shakerPlugin(\n babel: Core,\n {\n keepSideEffects = false,\n ifUnknownExport = 'skip-shaking',\n onlyExports,\n }: IShakerOptions\n): PluginObj<IState & { filename: string }> {\n const shakerLogger = logger.extend('shaker');\n\n return {\n name: '@wyw-in-js/transform/shaker',\n pre(file: BabelFile) {\n this.filename = file.opts.filename!;\n const log = shakerLogger.extend(getFileIdx(this.filename));\n\n log('start', `${this.filename}, onlyExports: ${onlyExports.join(',')}`);\n const onlyExportsSet = new Set(onlyExports);\n\n const collected = collectExportsAndImports(file.path);\n const sideEffectImports = collected.imports.filter(sideEffectImport);\n log(\n 'import-and-exports',\n [\n `imports: ${collected.imports.length} (side-effects: ${sideEffectImports.length})`,\n `exports: ${Object.values(collected.exports).length}`,\n `reexports: ${collected.reexports.length}`,\n ].join(', ')\n );\n\n // We cannot just throw out exports if they are referred in the code\n // Let's dome some replacements\n const exports = rearrangeExports(\n babel,\n file.path,\n collected.exportRefs,\n collected.exports\n );\n\n Object.values(exports).forEach((local) => {\n if (local.isAssignmentExpression()) {\n const left = local.get('left');\n if (left.isIdentifier()) {\n // For some reason babel does not mark id in AssignmentExpression as a reference\n // So we need to do it manually\n reference(left, left, true);\n }\n }\n });\n\n const hasLinariaPreval = exports.__linariaPreval !== undefined;\n const hasDefault = exports.default !== undefined;\n\n // If __linariaPreval is not exported, we can remove it from onlyExports\n if (onlyExportsSet.has('__linariaPreval') && !hasLinariaPreval) {\n onlyExportsSet.delete('__linariaPreval');\n }\n\n if (onlyExportsSet.size === 0) {\n // Fast-lane: if there are no exports to keep, we can just shake out the whole file\n this.imports = [];\n this.exports = {};\n this.reexports = [];\n this.deadExports = Object.keys(exports);\n\n file.path.get('body').forEach((p) => {\n p.remove();\n });\n\n return;\n }\n\n const importedAsSideEffect = onlyExportsSet.has('side-effect');\n onlyExportsSet.delete('side-effect');\n\n // Hackaround for packages which include a 'default' export without specifying __esModule; such packages cannot be\n // shaken as they will break interopRequireDefault babel helper\n // See example in shaker-plugin.test.ts\n // Real-world example was found in preact/compat npm package\n if (\n onlyExportsSet.has('default') &&\n hasDefault &&\n !collected.isEsModule\n ) {\n this.imports = collected.imports;\n this.exports = exports;\n this.reexports = collected.reexports;\n this.deadExports = [];\n return;\n }\n\n if (!onlyExportsSet.has('*')) {\n // __esModule should be kept alive\n onlyExportsSet.add('__esModule');\n\n const aliveExports = new Set<NodePath>();\n const importNames = collected.imports.map(({ imported }) => imported);\n\n Object.entries(exports).forEach(([exported, local]) => {\n if (onlyExportsSet.has(exported)) {\n aliveExports.add(local);\n } else if (\n importNames.includes((local.node as NodeWithName).name || '')\n ) {\n aliveExports.add(local);\n } else if ([...aliveExports].some((alive) => alive === local)) {\n // It's possible to export multiple values from a single variable initializer, e.g\n // export const { foo, bar } = baz();\n // We need to treat all of them as used if any of them are used, since otherwise\n // we'll attempt to delete the baz() call\n aliveExports.add(local);\n }\n });\n\n collected.reexports.forEach((exp) => {\n if (onlyExportsSet.has(exp.exported)) {\n aliveExports.add(exp.local);\n }\n });\n\n const exportToPath = new Map<string, NodePath>();\n Object.entries(exports).forEach(([exported, local]) => {\n exportToPath.set(exported, local);\n });\n\n collected.reexports.forEach((exp) => {\n exportToPath.set(exp.exported, exp.local);\n });\n\n const notFoundExports = [...onlyExportsSet].filter(\n (exp) =>\n exp !== '__esModule' && !aliveExports.has(exportToPath.get(exp)!)\n );\n exportToPath.clear();\n\n const isAllExportsFound = notFoundExports.length === 0;\n if (!isAllExportsFound && ifUnknownExport !== 'ignore') {\n if (ifUnknownExport === 'error') {\n throw new Error(\n `Unknown export(s) requested: ${onlyExports.join(',')}`\n );\n }\n\n if (ifUnknownExport === 'reexport-all') {\n // If there are unknown exports, we have keep alive all re-exports.\n if (exports['*'] !== undefined) {\n aliveExports.add(exports['*']);\n }\n\n collected.reexports.forEach((exp) => {\n if (exp.exported === '*') {\n aliveExports.add(exp.local);\n }\n });\n }\n\n if (ifUnknownExport === 'skip-shaking') {\n this.imports = collected.imports;\n this.exports = exports;\n this.reexports = collected.reexports;\n this.deadExports = [];\n\n return;\n }\n }\n\n const forDeleting = [\n ...Object.values(exports),\n ...collected.reexports.map((i) => i.local),\n ].filter((exp) => !aliveExports.has(exp));\n\n if (!keepSideEffects && !importedAsSideEffect) {\n // Remove all imports that don't import something explicitly and should not be kept\n sideEffectImports.forEach((i) => {\n if (!shouldKeepSideEffect(i.source)) {\n forDeleting.push(i.local);\n }\n });\n }\n\n const deleted = new Set<NodePath>();\n\n let dereferenced: NodePath<Identifier>[] = [];\n let changed = true;\n while (changed && deleted.size < forDeleting.length) {\n changed = false;\n // eslint-disable-next-line no-restricted-syntax\n for (const path of forDeleting) {\n if (deleted.has(path)) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n const binding = getBindingForExport(path);\n const action = findActionForNode(path);\n const parent = action?.[1];\n const outerReferences = (binding?.referencePaths || []).filter(\n (ref) => ref !== parent && !parent?.isAncestor(ref)\n );\n if (outerReferences.length > 0 && path.isIdentifier()) {\n // Temporary deref it in order to simplify further checks.\n dereference(path);\n dereferenced.push(path);\n }\n\n if (\n !deleted.has(path) &&\n (!binding || outerReferences.length === 0)\n ) {\n if (action) {\n applyAction(action);\n } else {\n removeWithRelated([path]);\n }\n\n deleted.add(path);\n changed = true;\n }\n }\n\n dereferenced.forEach((path) => {\n // If path is still alive, we need to reference it back\n if (!isRemoved(path)) {\n reference(path);\n }\n });\n\n dereferenced = [];\n }\n }\n\n this.imports = withoutRemoved(collected.imports);\n this.exports = {};\n this.deadExports = [];\n\n Object.entries(exports).forEach(([exported, local]) => {\n if (isRemoved(local)) {\n this.deadExports.push(exported);\n } else {\n this.exports[exported] = local;\n }\n });\n\n this.reexports = withoutRemoved(collected.reexports);\n },\n visitor: {},\n post(file: BabelFile) {\n const log = shakerLogger.extend(getFileIdx(file.opts.filename!));\n\n const processedImports = new Set<string>();\n const imports = new Map<string, string[]>();\n const addImport = ({\n imported,\n source,\n }: {\n imported: string;\n source: string;\n }) => {\n if (processedImports.has(`${source}:${imported}`)) {\n return;\n }\n\n if (!imports.has(source)) {\n imports.set(source, []);\n }\n\n if (imported) {\n imports.get(source)!.push(imported);\n }\n\n processedImports.add(`${source}:${imported}`);\n };\n\n this.imports.forEach(addImport);\n this.reexports.forEach(addImport);\n\n log('end', `remaining imports: %O`, imports);\n\n // eslint-disable-next-line no-param-reassign\n (file.metadata as IMetadata).linariaEvaluator = {\n imports,\n };\n\n invalidateTraversalCache(file.path);\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shaker.js","names":["_shared","require","_collectExportsAndImports","_getFileIdx","_isRemoved","_scopeHelpers","_traversalCache","EXT_REGEX","ALLOWED_EXTENSIONS","shouldKeepSideEffect","importPath","ext","match","includes","getBindingForExport","exportPath","isIdentifier","scope","getBinding","node","name","variableDeclarator","findParent","p","isVariableDeclarator","id","get","isAssignmentExpression","left","isFunctionDeclaration","isClassDeclaration","undefined","withoutRemoved","items","filter","local","isRemoved","rearrangeExports","types","t","root","exportRefs","exports","rearranged","rootScope","forEach","refs","length","declarator","uid","generateUid","declaration","unshiftContainer","variableDeclaration","identifier","registerDeclaration","ref","replaced","replaceWith","isBindingIdentifier","_replaced$parentPath","registerConstantViolation","parentPath","reference","pushed","pushContainer","expressionStatement","assignmentExpression","memberExpression","shakerPlugin","babel","keepSideEffects","ifUnknownExport","onlyExports","shakerLogger","logger","extend","pre","file","filename","opts","log","getFileIdx","join","onlyExportsSet","Set","collected","collectExportsAndImports","path","sideEffectImports","imports","sideEffectImport","Object","values","reexports","hasWywPreval","__wywPreval","hasDefault","default","has","delete","size","deadExports","keys","remove","importedAsSideEffect","isEsModule","add","aliveExports","importNames","map","imported","entries","exported","some","alive","exp","exportToPath","Map","set","notFoundExports","clear","isAllExportsFound","Error","forDeleting","i","source","push","deleted","dereferenced","changed","binding","action","findActionForNode","parent","outerReferences","referencePaths","isAncestor","dereference","applyAction","removeWithRelated","visitor","post","processedImports","addImport","metadata","wywEvaluator","invalidateTraversalCache"],"sources":["../../src/plugins/shaker.ts"],"sourcesContent":["import type { BabelFile, PluginObj, NodePath } from '@babel/core';\nimport type { Binding } from '@babel/traverse';\nimport type {\n Identifier,\n MemberExpression,\n Program,\n VariableDeclarator,\n} from '@babel/types';\n\nimport { logger } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport type { IMetadata } from '../utils/ShakerMetadata';\nimport type { Exports, IState } from '../utils/collectExportsAndImports';\nimport {\n collectExportsAndImports,\n sideEffectImport,\n} from '../utils/collectExportsAndImports';\nimport { getFileIdx } from '../utils/getFileIdx';\nimport { isRemoved } from '../utils/isRemoved';\nimport {\n applyAction,\n dereference,\n findActionForNode,\n reference,\n removeWithRelated,\n} from '../utils/scopeHelpers';\nimport { invalidateTraversalCache } from '../utils/traversalCache';\n\nconst EXT_REGEX = /\\.[0-9a-z]+$/;\nconst ALLOWED_EXTENSIONS = ['.js', '.cjs', '.mjs'];\n\nfunction shouldKeepSideEffect(importPath: string) {\n const [ext] = importPath.match(EXT_REGEX) || [''];\n\n return ext === '' || ALLOWED_EXTENSIONS.includes(ext);\n}\n\nexport interface IShakerOptions {\n ifUnknownExport?: 'error' | 'ignore' | 'reexport-all' | 'skip-shaking';\n keepSideEffects?: boolean;\n onlyExports: string[];\n}\n\ninterface NodeWithName {\n name: string;\n}\n\nfunction getBindingForExport(exportPath: NodePath): Binding | undefined {\n if (exportPath.isIdentifier()) {\n return exportPath.scope.getBinding(exportPath.node.name);\n }\n\n const variableDeclarator = exportPath.findParent((p) =>\n p.isVariableDeclarator()\n ) as NodePath<VariableDeclarator> | undefined;\n if (variableDeclarator) {\n const id = variableDeclarator.get('id');\n if (id.isIdentifier()) {\n return variableDeclarator.scope.getBinding(id.node.name);\n }\n }\n\n if (exportPath.isAssignmentExpression()) {\n const left = exportPath.get('left');\n if (left.isIdentifier()) {\n return exportPath.scope.getBinding(left.node.name);\n }\n }\n\n if (exportPath.isFunctionDeclaration() || exportPath.isClassDeclaration()) {\n return exportPath.scope.getBinding(exportPath.node.id!.name);\n }\n\n return undefined;\n}\n\nconst withoutRemoved = <T extends { local: NodePath }>(items: T[]): T[] =>\n items.filter(({ local }) => !isRemoved(local));\n\nfunction rearrangeExports(\n { types: t }: Core,\n root: NodePath<Program>,\n exportRefs: Map<string, NodePath<MemberExpression>[]>,\n exports: Exports\n): Exports {\n const rearranged = {\n ...exports,\n };\n\n const rootScope = root.scope;\n exportRefs.forEach((refs, name) => {\n if (refs.length <= 1) {\n if (refs.length === 1) {\n // Maybe exports is assigned to another variable?\n const declarator = refs[0].findParent((p) =>\n p.isVariableDeclarator()\n ) as NodePath<VariableDeclarator> | undefined;\n\n if (!declarator) {\n return;\n }\n } else {\n return;\n }\n }\n\n const uid = rootScope.generateUid(name);\n // Define variable in the beginning\n const [declaration] = root.unshiftContainer('body', [\n t.variableDeclaration('var', [t.variableDeclarator(t.identifier(uid))]),\n ]);\n\n rootScope.registerDeclaration(declaration);\n\n // Replace every reference with defined variable\n refs.forEach((ref) => {\n const [replaced] = ref.replaceWith(t.identifier(uid));\n if (replaced.isBindingIdentifier()) {\n rootScope.registerConstantViolation(replaced);\n if (replaced.parentPath?.parentPath?.isVariableDeclarator()) {\n // This is `const foo = exports.foo = \"value\"` case\n reference(replaced, replaced, true);\n }\n } else {\n reference(replaced);\n }\n });\n\n // Assign defined variable to the export\n const [pushed] = root.pushContainer('body', [\n t.expressionStatement(\n t.assignmentExpression(\n '=',\n t.memberExpression(t.identifier('exports'), t.identifier(name)),\n t.identifier(uid)\n )\n ),\n ]);\n\n const local = pushed.get('expression.right') as NodePath<Identifier>;\n reference(local);\n\n rearranged[name] = local;\n });\n\n return rearranged;\n}\n\nexport default function shakerPlugin(\n babel: Core,\n {\n keepSideEffects = false,\n ifUnknownExport = 'skip-shaking',\n onlyExports,\n }: IShakerOptions\n): PluginObj<IState & { filename: string }> {\n const shakerLogger = logger.extend('shaker');\n\n return {\n name: '@wyw-in-js/transform/shaker',\n pre(file: BabelFile) {\n this.filename = file.opts.filename!;\n const log = shakerLogger.extend(getFileIdx(this.filename));\n\n log('start', `${this.filename}, onlyExports: ${onlyExports.join(',')}`);\n const onlyExportsSet = new Set(onlyExports);\n\n const collected = collectExportsAndImports(file.path);\n const sideEffectImports = collected.imports.filter(sideEffectImport);\n log(\n 'import-and-exports',\n [\n `imports: ${collected.imports.length} (side-effects: ${sideEffectImports.length})`,\n `exports: ${Object.values(collected.exports).length}`,\n `reexports: ${collected.reexports.length}`,\n ].join(', ')\n );\n\n // We cannot just throw out exports if they are referred in the code\n // Let's dome some replacements\n const exports = rearrangeExports(\n babel,\n file.path,\n collected.exportRefs,\n collected.exports\n );\n\n Object.values(exports).forEach((local) => {\n if (local.isAssignmentExpression()) {\n const left = local.get('left');\n if (left.isIdentifier()) {\n // For some reason babel does not mark id in AssignmentExpression as a reference\n // So we need to do it manually\n reference(left, left, true);\n }\n }\n });\n\n const hasWywPreval = exports.__wywPreval !== undefined;\n const hasDefault = exports.default !== undefined;\n\n // If __wywPreval is not exported, we can remove it from onlyExports\n if (onlyExportsSet.has('__wywPreval') && !hasWywPreval) {\n onlyExportsSet.delete('__wywPreval');\n }\n\n if (onlyExportsSet.size === 0) {\n // Fast-lane: if there are no exports to keep, we can just shake out the whole file\n this.imports = [];\n this.exports = {};\n this.reexports = [];\n this.deadExports = Object.keys(exports);\n\n file.path.get('body').forEach((p) => {\n p.remove();\n });\n\n return;\n }\n\n const importedAsSideEffect = onlyExportsSet.has('side-effect');\n onlyExportsSet.delete('side-effect');\n\n // Hackaround for packages which include a 'default' export without specifying __esModule; such packages cannot be\n // shaken as they will break interopRequireDefault babel helper\n // See example in shaker-plugin.test.ts\n // Real-world example was found in preact/compat npm package\n if (\n onlyExportsSet.has('default') &&\n hasDefault &&\n !collected.isEsModule\n ) {\n this.imports = collected.imports;\n this.exports = exports;\n this.reexports = collected.reexports;\n this.deadExports = [];\n return;\n }\n\n if (!onlyExportsSet.has('*')) {\n // __esModule should be kept alive\n onlyExportsSet.add('__esModule');\n\n const aliveExports = new Set<NodePath>();\n const importNames = collected.imports.map(({ imported }) => imported);\n\n Object.entries(exports).forEach(([exported, local]) => {\n if (onlyExportsSet.has(exported)) {\n aliveExports.add(local);\n } else if (\n importNames.includes((local.node as NodeWithName).name || '')\n ) {\n aliveExports.add(local);\n } else if ([...aliveExports].some((alive) => alive === local)) {\n // It's possible to export multiple values from a single variable initializer, e.g\n // export const { foo, bar } = baz();\n // We need to treat all of them as used if any of them are used, since otherwise\n // we'll attempt to delete the baz() call\n aliveExports.add(local);\n }\n });\n\n collected.reexports.forEach((exp) => {\n if (onlyExportsSet.has(exp.exported)) {\n aliveExports.add(exp.local);\n }\n });\n\n const exportToPath = new Map<string, NodePath>();\n Object.entries(exports).forEach(([exported, local]) => {\n exportToPath.set(exported, local);\n });\n\n collected.reexports.forEach((exp) => {\n exportToPath.set(exp.exported, exp.local);\n });\n\n const notFoundExports = [...onlyExportsSet].filter(\n (exp) =>\n exp !== '__esModule' && !aliveExports.has(exportToPath.get(exp)!)\n );\n exportToPath.clear();\n\n const isAllExportsFound = notFoundExports.length === 0;\n if (!isAllExportsFound && ifUnknownExport !== 'ignore') {\n if (ifUnknownExport === 'error') {\n throw new Error(\n `Unknown export(s) requested: ${onlyExports.join(',')}`\n );\n }\n\n if (ifUnknownExport === 'reexport-all') {\n // If there are unknown exports, we have keep alive all re-exports.\n if (exports['*'] !== undefined) {\n aliveExports.add(exports['*']);\n }\n\n collected.reexports.forEach((exp) => {\n if (exp.exported === '*') {\n aliveExports.add(exp.local);\n }\n });\n }\n\n if (ifUnknownExport === 'skip-shaking') {\n this.imports = collected.imports;\n this.exports = exports;\n this.reexports = collected.reexports;\n this.deadExports = [];\n\n return;\n }\n }\n\n const forDeleting = [\n ...Object.values(exports),\n ...collected.reexports.map((i) => i.local),\n ].filter((exp) => !aliveExports.has(exp));\n\n if (!keepSideEffects && !importedAsSideEffect) {\n // Remove all imports that don't import something explicitly and should not be kept\n sideEffectImports.forEach((i) => {\n if (!shouldKeepSideEffect(i.source)) {\n forDeleting.push(i.local);\n }\n });\n }\n\n const deleted = new Set<NodePath>();\n\n let dereferenced: NodePath<Identifier>[] = [];\n let changed = true;\n while (changed && deleted.size < forDeleting.length) {\n changed = false;\n // eslint-disable-next-line no-restricted-syntax\n for (const path of forDeleting) {\n if (deleted.has(path)) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n const binding = getBindingForExport(path);\n const action = findActionForNode(path);\n const parent = action?.[1];\n const outerReferences = (binding?.referencePaths || []).filter(\n (ref) => ref !== parent && !parent?.isAncestor(ref)\n );\n if (outerReferences.length > 0 && path.isIdentifier()) {\n // Temporary deref it in order to simplify further checks.\n dereference(path);\n dereferenced.push(path);\n }\n\n if (\n !deleted.has(path) &&\n (!binding || outerReferences.length === 0)\n ) {\n if (action) {\n applyAction(action);\n } else {\n removeWithRelated([path]);\n }\n\n deleted.add(path);\n changed = true;\n }\n }\n\n dereferenced.forEach((path) => {\n // If path is still alive, we need to reference it back\n if (!isRemoved(path)) {\n reference(path);\n }\n });\n\n dereferenced = [];\n }\n }\n\n this.imports = withoutRemoved(collected.imports);\n this.exports = {};\n this.deadExports = [];\n\n Object.entries(exports).forEach(([exported, local]) => {\n if (isRemoved(local)) {\n this.deadExports.push(exported);\n } else {\n this.exports[exported] = local;\n }\n });\n\n this.reexports = withoutRemoved(collected.reexports);\n },\n visitor: {},\n post(file: BabelFile) {\n const log = shakerLogger.extend(getFileIdx(file.opts.filename!));\n\n const processedImports = new Set<string>();\n const imports = new Map<string, string[]>();\n const addImport = ({\n imported,\n source,\n }: {\n imported: string;\n source: string;\n }) => {\n if (processedImports.has(`${source}:${imported}`)) {\n return;\n }\n\n if (!imports.has(source)) {\n imports.set(source, []);\n }\n\n if (imported) {\n imports.get(source)!.push(imported);\n }\n\n processedImports.add(`${source}:${imported}`);\n };\n\n this.imports.forEach(addImport);\n this.reexports.forEach(addImport);\n\n log('end', `remaining imports: %O`, imports);\n\n // eslint-disable-next-line no-param-reassign\n (file.metadata as IMetadata).wywEvaluator = {\n imports,\n };\n\n invalidateTraversalCache(file.path);\n },\n };\n}\n"],"mappings":"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"}
|
package/lib/shaker.js
CHANGED
|
@@ -44,7 +44,7 @@ const shaker = (evalConfig, ast, code, {
|
|
|
44
44
|
const transformOptions = {
|
|
45
45
|
...evalConfig,
|
|
46
46
|
caller: {
|
|
47
|
-
name: '
|
|
47
|
+
name: 'wyw-in-js'
|
|
48
48
|
},
|
|
49
49
|
plugins
|
|
50
50
|
};
|
|
@@ -52,7 +52,7 @@ const shaker = (evalConfig, ast, code, {
|
|
|
52
52
|
if (!transformed || !(0, _ShakerMetadata.hasShakerMetadata)(transformed.metadata)) {
|
|
53
53
|
throw new Error(`${evalConfig.filename} has no shaker metadata`);
|
|
54
54
|
}
|
|
55
|
-
return [transformed.ast, (_transformed$code = transformed.code) !== null && _transformed$code !== void 0 ? _transformed$code : '', transformed.metadata.
|
|
55
|
+
return [transformed.ast, (_transformed$code = transformed.code) !== null && _transformed$code !== void 0 ? _transformed$code : '', transformed.metadata.wywEvaluator.imports];
|
|
56
56
|
};
|
|
57
57
|
var _default = exports.default = shaker;
|
|
58
58
|
//# sourceMappingURL=shaker.js.map
|
package/lib/shaker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaker.js","names":["_ShakerMetadata","require","_getPluginKey","hasKeyInList","plugin","list","pluginKey","getPluginKey","some","i","includes","safeResolve","id","paths","resolve","filter","shaker","evalConfig","ast","code","highPriorityPlugins","config","babel","_evalConfig$plugins$f","_evalConfig$plugins","_evalConfig$plugins2","_evalConfig$plugins3","_evalConfig$filename","_evalConfig$filename2","_transformed$code","preShakePlugins","plugins","hasCommonjsPlugin","push","filename","endsWith","_evalConfig$plugins4","hasTypescriptPlugin","preset","transformOptions","caller","name","transformed","transformFromAstSync","hasShakerMetadata","metadata","Error","
|
|
1
|
+
{"version":3,"file":"shaker.js","names":["_ShakerMetadata","require","_getPluginKey","hasKeyInList","plugin","list","pluginKey","getPluginKey","some","i","includes","safeResolve","id","paths","resolve","filter","shaker","evalConfig","ast","code","highPriorityPlugins","config","babel","_evalConfig$plugins$f","_evalConfig$plugins","_evalConfig$plugins2","_evalConfig$plugins3","_evalConfig$filename","_evalConfig$filename2","_transformed$code","preShakePlugins","plugins","hasCommonjsPlugin","push","filename","endsWith","_evalConfig$plugins4","hasTypescriptPlugin","preset","transformOptions","caller","name","transformed","transformFromAstSync","hasShakerMetadata","metadata","Error","wywEvaluator","imports","_default","exports","default"],"sources":["../src/shaker.ts"],"sourcesContent":["import type { TransformOptions, PluginItem } from '@babel/core';\n\nimport type { Evaluator } from '@wyw-in-js/shared';\n\nimport { hasShakerMetadata } from './utils/ShakerMetadata';\nimport { getPluginKey } from './utils/getPluginKey';\n\nconst hasKeyInList = (plugin: PluginItem, list: string[]): boolean => {\n const pluginKey = getPluginKey(plugin);\n return pluginKey ? list.some((i) => pluginKey.includes(i)) : false;\n};\n\nconst safeResolve = (id: string, paths: (string | null)[]): string | null => {\n try {\n return require.resolve(id, {\n paths: paths.filter((i) => i !== null) as string[],\n });\n } catch {\n return null;\n }\n};\n\nconst shaker: Evaluator = (\n evalConfig,\n ast,\n code,\n { highPriorityPlugins, ...config },\n babel\n) => {\n const preShakePlugins =\n evalConfig.plugins?.filter((i) => hasKeyInList(i, highPriorityPlugins)) ??\n [];\n\n const plugins = [\n ...preShakePlugins,\n [require.resolve('./plugins/shaker'), config],\n ...(evalConfig.plugins ?? []).filter(\n (i) => !hasKeyInList(i, highPriorityPlugins)\n ),\n ];\n\n const hasCommonjsPlugin = evalConfig.plugins?.some(\n (i) => getPluginKey(i) === 'transform-modules-commonjs'\n );\n\n if (!hasCommonjsPlugin) {\n plugins.push(require.resolve('@babel/plugin-transform-modules-commonjs'));\n }\n\n if (\n evalConfig.filename?.endsWith('.ts') ||\n evalConfig.filename?.endsWith('.tsx')\n ) {\n const hasTypescriptPlugin = evalConfig.plugins?.some(\n (i) => getPluginKey(i) === 'transform-typescript'\n );\n\n if (!hasTypescriptPlugin) {\n const preset = safeResolve('@babel/preset-typescript', [\n evalConfig.filename,\n ]);\n const plugin = safeResolve('@babel/plugin-transform-typescript', [\n evalConfig.filename,\n preset,\n ]);\n\n if (plugin) {\n plugins.push(plugin);\n }\n }\n }\n\n const transformOptions: TransformOptions = {\n ...evalConfig,\n caller: {\n name: 'wyw-in-js',\n },\n plugins,\n };\n\n const transformed = babel.transformFromAstSync(ast, code, transformOptions);\n\n if (!transformed || !hasShakerMetadata(transformed.metadata)) {\n throw new Error(`${evalConfig.filename} has no shaker metadata`);\n }\n\n return [\n transformed.ast!,\n transformed.code ?? '',\n transformed.metadata.wywEvaluator.imports,\n ];\n};\n\nexport default shaker;\n"],"mappings":"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"}
|
|
@@ -80,7 +80,7 @@ function buildConfigs(services, name, pluginOptions, babelOptions) {
|
|
|
80
80
|
var _parseConfig$plugins$, _parseConfig$plugins2, _rawConfig$plugins2;
|
|
81
81
|
if (!moduleResolverWarned) {
|
|
82
82
|
// eslint-disable-next-line no-console
|
|
83
|
-
console.warn(`[
|
|
83
|
+
console.warn(`[wyw-in-js] ${name} has a module-resolver plugin in its babelrc, but it is not present ` + `in the babelOptions for the wyw-in-js plugin. This works for now but will be an error in the future. ` + `Please add the module-resolver plugin to the babelOptions for the wyw-in-js plugin.`);
|
|
84
84
|
moduleResolverWarned = true;
|
|
85
85
|
}
|
|
86
86
|
rawConfig.plugins = [...((_parseConfig$plugins$ = (_parseConfig$plugins2 = parseConfig.plugins) === null || _parseConfig$plugins2 === void 0 ? void 0 : _parseConfig$plugins2.filter(plugin => isModuleResolver(plugin))) !== null && _parseConfig$plugins$ !== void 0 ? _parseConfig$plugins$ : []), ...((_rawConfig$plugins2 = rawConfig.plugins) !== null && _rawConfig$plugins2 !== void 0 ? _rawConfig$plugins2 : [])];
|
|
@@ -112,7 +112,6 @@ function loadAndParse(services, name, loadedCode, log) {
|
|
|
112
112
|
}
|
|
113
113
|
return ''; // it is a built-in module
|
|
114
114
|
},
|
|
115
|
-
|
|
116
115
|
evaluator: 'ignored',
|
|
117
116
|
reason: 'extension'
|
|
118
117
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Entrypoint.helpers.js","names":["_fs","require","_path","_shared","_buildOptions","_loadBabelOptions","_getFileIdx","_getPluginKey","getMatchedRule","rules","filename","code","i","length","rule","test","RegExp","action","parseFile","babel","originalCode","parseConfig","log","logger","extend","getFileIdx","parseResult","parseSync","Error","isModuleResolver","plugin","key","getPluginKey","includes","moduleResolverWarned","buildConfigs","services","name","pluginOptions","babelOptions","_parseConfig$plugins","_rawConfig$plugins","options","commonOptions","ast","inputSourceMap","root","sourceFileName","sourceMaps","rawConfig","buildOptions","useBabelConfigs","isFeatureEnabled","features","configFile","loadBabelOptions","babelrc","parseHasModuleResolver","plugins","some","rawHasModuleResolver","_parseConfig$plugins$","_parseConfig$plugins2","_rawConfig$plugins2","console","warn","filter","evalConfig","loadAndParse","loadedCode","eventEmitter","extension","extname","extensions","isAbsolute","readFileSync","evaluator","reason","getOrParse","perf","resolve","paths","dirname","default","getStack","entrypoint","stack","parents","push","mergeOnly","a","b","result","Set","forEach","item","add","sort","isSuperSet","aSet","every","has","exports"],"sources":["../../src/transform/Entrypoint.helpers.ts"],"sourcesContent":["import { readFileSync } from 'fs';\nimport { dirname, extname, isAbsolute } from 'path';\n\nimport type { TransformOptions, PluginItem } from '@babel/core';\nimport type { File } from '@babel/types';\n\nimport type {\n Debugger,\n EvalRule,\n Evaluator,\n StrictOptions,\n} from '@wyw-in-js/shared';\nimport { logger, isFeatureEnabled } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport { buildOptions } from '../options/buildOptions';\nimport { loadBabelOptions } from '../options/loadBabelOptions';\nimport type { ParentEntrypoint } from '../types';\nimport { getFileIdx } from '../utils/getFileIdx';\nimport { getPluginKey } from '../utils/getPluginKey';\n\nimport type { IEntrypointCode, IIgnoredEntrypoint } from './Entrypoint.types';\nimport type { Services } from './types';\n\nexport function getMatchedRule(\n rules: EvalRule[],\n filename: string,\n code: string\n): EvalRule {\n for (let i = rules.length - 1; i >= 0; i--) {\n const rule = rules[i];\n if (!rule.test) {\n return rule;\n }\n\n if (typeof rule.test === 'function' && rule.test(filename, code)) {\n return rule;\n }\n\n if (rule.test instanceof RegExp && rule.test.test(filename)) {\n return rule;\n }\n }\n\n return { action: 'ignore' };\n}\n\nexport function parseFile(\n babel: Core,\n filename: string,\n originalCode: string,\n parseConfig: TransformOptions\n): File {\n const log = logger.extend('transform:parse').extend(getFileIdx(filename));\n\n const parseResult = babel.parseSync(originalCode, parseConfig);\n if (!parseResult) {\n throw new Error(`Failed to parse ${filename}`);\n }\n\n log('stage-1', `${filename} has been parsed`);\n\n return parseResult;\n}\n\nconst isModuleResolver = (plugin: PluginItem) => {\n const key = getPluginKey(plugin);\n if (!key) return false;\n\n if (['module-resolver', 'babel-plugin-module-resolver'].includes(key)) {\n return true;\n }\n\n return /([\\\\/])babel-plugin-module-resolver\\1/.test(key);\n};\n\nlet moduleResolverWarned = false;\n\nfunction buildConfigs(\n services: Services,\n name: string,\n pluginOptions: StrictOptions,\n babelOptions: TransformOptions | undefined\n): {\n evalConfig: TransformOptions;\n parseConfig: TransformOptions;\n} {\n const { babel, options } = services;\n\n const commonOptions = {\n ast: true,\n filename: name,\n inputSourceMap: options.inputSourceMap,\n root: options.root,\n sourceFileName: name,\n sourceMaps: true,\n };\n\n const rawConfig = buildOptions(\n pluginOptions?.babelOptions,\n babelOptions,\n commonOptions\n );\n\n const useBabelConfigs = isFeatureEnabled(\n pluginOptions.features,\n 'useBabelConfigs',\n name\n );\n\n if (!useBabelConfigs) {\n rawConfig.configFile = false;\n }\n\n const parseConfig = loadBabelOptions(babel, name, {\n babelrc: useBabelConfigs,\n ...rawConfig,\n });\n\n const parseHasModuleResolver = parseConfig.plugins?.some(isModuleResolver);\n const rawHasModuleResolver = rawConfig.plugins?.some(isModuleResolver);\n\n if (parseHasModuleResolver && !rawHasModuleResolver) {\n if (!moduleResolverWarned) {\n // eslint-disable-next-line no-console\n console.warn(\n `[linaria] ${name} has a module-resolver plugin in its babelrc, but it is not present ` +\n `in the babelOptions for the linaria plugin. This works for now but will be an error in the future. ` +\n `Please add the module-resolver plugin to the babelOptions for the linaria plugin.`\n );\n\n moduleResolverWarned = true;\n }\n\n rawConfig.plugins = [\n ...(parseConfig.plugins?.filter((plugin) => isModuleResolver(plugin)) ??\n []),\n ...(rawConfig.plugins ?? []),\n ];\n }\n\n const evalConfig = loadBabelOptions(babel, name, {\n babelrc: false,\n ...rawConfig,\n });\n\n return {\n evalConfig,\n parseConfig,\n };\n}\n\nexport function loadAndParse(\n services: Services,\n name: string,\n loadedCode: string | undefined,\n log: Debugger\n): IEntrypointCode | IIgnoredEntrypoint {\n const {\n babel,\n eventEmitter,\n options: { pluginOptions },\n } = services;\n\n const extension = extname(name);\n\n if (!pluginOptions.extensions.includes(extension)) {\n log(\n '[createEntrypoint] %s is ignored. If you want it to be processed, you should add \\'%s\\' to the \"extensions\" option.',\n name,\n extension\n );\n\n return {\n get code() {\n if (isAbsolute(name)) {\n return loadedCode ?? readFileSync(name, 'utf-8');\n }\n\n return ''; // it is a built-in module\n },\n evaluator: 'ignored',\n reason: 'extension',\n };\n }\n\n const code = loadedCode ?? readFileSync(name, 'utf-8');\n\n const { action, babelOptions } = getMatchedRule(\n pluginOptions.rules,\n name,\n code\n );\n\n let ast: File | undefined;\n\n const { evalConfig, parseConfig } = buildConfigs(\n services,\n name,\n pluginOptions,\n babelOptions\n );\n\n const getOrParse = () => {\n if (ast) return ast;\n ast = eventEmitter.perf('parseFile', () =>\n parseFile(babel, name, code, parseConfig)\n );\n\n return ast;\n };\n\n if (action === 'ignore') {\n log('[createEntrypoint] %s is ignored by rule', name);\n return {\n get ast() {\n return getOrParse();\n },\n code,\n evaluator: 'ignored',\n reason: 'rule',\n };\n }\n\n const evaluator: Evaluator =\n typeof action === 'function'\n ? action\n : require(\n require.resolve(action, {\n paths: [dirname(name)],\n })\n ).default;\n\n return {\n get ast() {\n return getOrParse();\n },\n code,\n evaluator,\n evalConfig,\n };\n}\n\nexport function getStack(entrypoint: ParentEntrypoint) {\n if (!entrypoint) return [];\n\n const stack = [entrypoint.name];\n\n let { parents } = entrypoint;\n while (parents.length) {\n stack.push(parents[0].name);\n parents = parents[0].parents;\n }\n\n return stack;\n}\n\nexport function mergeOnly(a: string[], b: string[]) {\n const result = new Set(a);\n b.forEach((item) => result.add(item));\n return [...result].filter((i) => i).sort();\n}\n\nexport const isSuperSet = <T>(a: (T | '*')[], b: (T | '*')[]) => {\n if (a.includes('*')) return true;\n if (b.length === 0) return true;\n const aSet = new Set(a);\n return b.every((item) => aSet.has(item));\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Entrypoint.helpers.js","names":["_fs","require","_path","_shared","_buildOptions","_loadBabelOptions","_getFileIdx","_getPluginKey","getMatchedRule","rules","filename","code","i","length","rule","test","RegExp","action","parseFile","babel","originalCode","parseConfig","log","logger","extend","getFileIdx","parseResult","parseSync","Error","isModuleResolver","plugin","key","getPluginKey","includes","moduleResolverWarned","buildConfigs","services","name","pluginOptions","babelOptions","_parseConfig$plugins","_rawConfig$plugins","options","commonOptions","ast","inputSourceMap","root","sourceFileName","sourceMaps","rawConfig","buildOptions","useBabelConfigs","isFeatureEnabled","features","configFile","loadBabelOptions","babelrc","parseHasModuleResolver","plugins","some","rawHasModuleResolver","_parseConfig$plugins$","_parseConfig$plugins2","_rawConfig$plugins2","console","warn","filter","evalConfig","loadAndParse","loadedCode","eventEmitter","extension","extname","extensions","isAbsolute","readFileSync","evaluator","reason","getOrParse","perf","resolve","paths","dirname","default","getStack","entrypoint","stack","parents","push","mergeOnly","a","b","result","Set","forEach","item","add","sort","isSuperSet","aSet","every","has","exports"],"sources":["../../src/transform/Entrypoint.helpers.ts"],"sourcesContent":["import { readFileSync } from 'fs';\nimport { dirname, extname, isAbsolute } from 'path';\n\nimport type { TransformOptions, PluginItem } from '@babel/core';\nimport type { File } from '@babel/types';\n\nimport type {\n Debugger,\n EvalRule,\n Evaluator,\n StrictOptions,\n} from '@wyw-in-js/shared';\nimport { logger, isFeatureEnabled } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport { buildOptions } from '../options/buildOptions';\nimport { loadBabelOptions } from '../options/loadBabelOptions';\nimport type { ParentEntrypoint } from '../types';\nimport { getFileIdx } from '../utils/getFileIdx';\nimport { getPluginKey } from '../utils/getPluginKey';\n\nimport type { IEntrypointCode, IIgnoredEntrypoint } from './Entrypoint.types';\nimport type { Services } from './types';\n\nexport function getMatchedRule(\n rules: EvalRule[],\n filename: string,\n code: string\n): EvalRule {\n for (let i = rules.length - 1; i >= 0; i--) {\n const rule = rules[i];\n if (!rule.test) {\n return rule;\n }\n\n if (typeof rule.test === 'function' && rule.test(filename, code)) {\n return rule;\n }\n\n if (rule.test instanceof RegExp && rule.test.test(filename)) {\n return rule;\n }\n }\n\n return { action: 'ignore' };\n}\n\nexport function parseFile(\n babel: Core,\n filename: string,\n originalCode: string,\n parseConfig: TransformOptions\n): File {\n const log = logger.extend('transform:parse').extend(getFileIdx(filename));\n\n const parseResult = babel.parseSync(originalCode, parseConfig);\n if (!parseResult) {\n throw new Error(`Failed to parse ${filename}`);\n }\n\n log('stage-1', `${filename} has been parsed`);\n\n return parseResult;\n}\n\nconst isModuleResolver = (plugin: PluginItem) => {\n const key = getPluginKey(plugin);\n if (!key) return false;\n\n if (['module-resolver', 'babel-plugin-module-resolver'].includes(key)) {\n return true;\n }\n\n return /([\\\\/])babel-plugin-module-resolver\\1/.test(key);\n};\n\nlet moduleResolverWarned = false;\n\nfunction buildConfigs(\n services: Services,\n name: string,\n pluginOptions: StrictOptions,\n babelOptions: TransformOptions | undefined\n): {\n evalConfig: TransformOptions;\n parseConfig: TransformOptions;\n} {\n const { babel, options } = services;\n\n const commonOptions = {\n ast: true,\n filename: name,\n inputSourceMap: options.inputSourceMap,\n root: options.root,\n sourceFileName: name,\n sourceMaps: true,\n };\n\n const rawConfig = buildOptions(\n pluginOptions?.babelOptions,\n babelOptions,\n commonOptions\n );\n\n const useBabelConfigs = isFeatureEnabled(\n pluginOptions.features,\n 'useBabelConfigs',\n name\n );\n\n if (!useBabelConfigs) {\n rawConfig.configFile = false;\n }\n\n const parseConfig = loadBabelOptions(babel, name, {\n babelrc: useBabelConfigs,\n ...rawConfig,\n });\n\n const parseHasModuleResolver = parseConfig.plugins?.some(isModuleResolver);\n const rawHasModuleResolver = rawConfig.plugins?.some(isModuleResolver);\n\n if (parseHasModuleResolver && !rawHasModuleResolver) {\n if (!moduleResolverWarned) {\n // eslint-disable-next-line no-console\n console.warn(\n `[wyw-in-js] ${name} has a module-resolver plugin in its babelrc, but it is not present ` +\n `in the babelOptions for the wyw-in-js plugin. This works for now but will be an error in the future. ` +\n `Please add the module-resolver plugin to the babelOptions for the wyw-in-js plugin.`\n );\n\n moduleResolverWarned = true;\n }\n\n rawConfig.plugins = [\n ...(parseConfig.plugins?.filter((plugin) => isModuleResolver(plugin)) ??\n []),\n ...(rawConfig.plugins ?? []),\n ];\n }\n\n const evalConfig = loadBabelOptions(babel, name, {\n babelrc: false,\n ...rawConfig,\n });\n\n return {\n evalConfig,\n parseConfig,\n };\n}\n\nexport function loadAndParse(\n services: Services,\n name: string,\n loadedCode: string | undefined,\n log: Debugger\n): IEntrypointCode | IIgnoredEntrypoint {\n const {\n babel,\n eventEmitter,\n options: { pluginOptions },\n } = services;\n\n const extension = extname(name);\n\n if (!pluginOptions.extensions.includes(extension)) {\n log(\n '[createEntrypoint] %s is ignored. If you want it to be processed, you should add \\'%s\\' to the \"extensions\" option.',\n name,\n extension\n );\n\n return {\n get code() {\n if (isAbsolute(name)) {\n return loadedCode ?? readFileSync(name, 'utf-8');\n }\n\n return ''; // it is a built-in module\n },\n evaluator: 'ignored',\n reason: 'extension',\n };\n }\n\n const code = loadedCode ?? readFileSync(name, 'utf-8');\n\n const { action, babelOptions } = getMatchedRule(\n pluginOptions.rules,\n name,\n code\n );\n\n let ast: File | undefined;\n\n const { evalConfig, parseConfig } = buildConfigs(\n services,\n name,\n pluginOptions,\n babelOptions\n );\n\n const getOrParse = () => {\n if (ast) return ast;\n ast = eventEmitter.perf('parseFile', () =>\n parseFile(babel, name, code, parseConfig)\n );\n\n return ast;\n };\n\n if (action === 'ignore') {\n log('[createEntrypoint] %s is ignored by rule', name);\n return {\n get ast() {\n return getOrParse();\n },\n code,\n evaluator: 'ignored',\n reason: 'rule',\n };\n }\n\n const evaluator: Evaluator =\n typeof action === 'function'\n ? action\n : require(\n require.resolve(action, {\n paths: [dirname(name)],\n })\n ).default;\n\n return {\n get ast() {\n return getOrParse();\n },\n code,\n evaluator,\n evalConfig,\n };\n}\n\nexport function getStack(entrypoint: ParentEntrypoint) {\n if (!entrypoint) return [];\n\n const stack = [entrypoint.name];\n\n let { parents } = entrypoint;\n while (parents.length) {\n stack.push(parents[0].name);\n parents = parents[0].parents;\n }\n\n return stack;\n}\n\nexport function mergeOnly(a: string[], b: string[]) {\n const result = new Set(a);\n b.forEach((item) => result.add(item));\n return [...result].filter((i) => i).sort();\n}\n\nexport const isSuperSet = <T>(a: (T | '*')[], b: (T | '*')[]) => {\n if (a.includes('*')) return true;\n if (b.length === 0) return true;\n const aSet = new Set(a);\n return b.every((item) => aSet.has(item));\n};\n"],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ class Entrypoint extends _BaseEntrypoint.BaseEntrypoint {
|
|
|
28
28
|
evaluated = false;
|
|
29
29
|
onSupersedeHandlers = [];
|
|
30
30
|
actionsCache = new Map();
|
|
31
|
-
#
|
|
31
|
+
#hasWywMetadata = false;
|
|
32
32
|
#supersededWith = null;
|
|
33
33
|
#transformResultCode = null;
|
|
34
34
|
constructor(services, parents, initialCode, name, only, exports, evaluatedOnly, loadedAndParsed, resolveTasks = new Map(), dependencies = new Map(), generation = 1) {
|
|
@@ -185,8 +185,8 @@ class Entrypoint extends _BaseEntrypoint.BaseEntrypoint {
|
|
|
185
185
|
getResolveTask(name) {
|
|
186
186
|
return this.resolveTasks.get(name);
|
|
187
187
|
}
|
|
188
|
-
|
|
189
|
-
return this.#
|
|
188
|
+
hasWywMetadata() {
|
|
189
|
+
return this.#hasWywMetadata;
|
|
190
190
|
}
|
|
191
191
|
onSupersede(callback) {
|
|
192
192
|
if (this.#supersededWith) {
|
|
@@ -203,7 +203,7 @@ class Entrypoint extends _BaseEntrypoint.BaseEntrypoint {
|
|
|
203
203
|
}
|
|
204
204
|
setTransformResult(res) {
|
|
205
205
|
var _res$code;
|
|
206
|
-
this.#
|
|
206
|
+
this.#hasWywMetadata = Boolean(res === null || res === void 0 ? void 0 : res.metadata);
|
|
207
207
|
this.#transformResultCode = (_res$code = res === null || res === void 0 ? void 0 : res.code) !== null && _res$code !== void 0 ? _res$code : null;
|
|
208
208
|
this.services.eventEmitter.entrypointEvent(this.seqId, {
|
|
209
209
|
isNull: res === null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Entrypoint.js","names":["_tsInvariant","require","_BaseEntrypoint","_Entrypoint","_EvaluatedEntrypoint","_AbortError","_BaseAction","_UnprocessedEntrypointError","EMPTY_FILE","hasLoop","name","parent","processed","includes","p","parents","found","Entrypoint","BaseEntrypoint","evaluated","onSupersedeHandlers","actionsCache","Map","hasLinariaMetadata","supersededWith","transformResultCode","constructor","services","initialCode","only","exports","evaluatedOnly","loadedAndParsed","resolveTasks","dependencies","generation","_parents$0$log","_parents$","loadAndParseFn","log","code","undefined","cache","invalidateIfChanged","extend","originalCode","ignored","evaluator","_this$supersededWith$","_this$supersededWith","transformedCode","_ref","_this$transformResult","_this$supersededWith2","createRoot","loadedCode","created","create","invariant","eventEmitter","perf","status","entrypoint","innerCreate","seqId","add","_cached$evaluatedOnly","cached","get","changed","mergedOnly","mergeOnly","filter","i","isLoop","map","push","isSuperSet","supersede","newEntrypoint","addDependency","dependency","delete","source","set","addResolveTask","assertNotSuperseded","AbortError","assertTransformed","_this$supersededWith3","UnprocessedEntrypointError","createAction","actionType","data","abortSignal","_cached$abortSignal","has","aborted","newAction","BaseAction","entrypointEvent","type","actionIdx","idx","createChild","createEvaluated","EvaluatedEntrypoint","exportsProxy","getDependency","getResolveTask","onSupersede","callback","index","indexOf","splice","setTransformResult","res","_res$code","Boolean","metadata","isNull","newOnlyOrEntrypoint","with","forEach","handler"],"sources":["../../src/transform/Entrypoint.ts"],"sourcesContent":["import { invariant } from 'ts-invariant';\n\nimport type { ParentEntrypoint, ITransformFileResult } from '../types';\n\nimport { BaseEntrypoint } from './BaseEntrypoint';\nimport { isSuperSet, mergeOnly } from './Entrypoint.helpers';\nimport type {\n IEntrypointCode,\n IEntrypointDependency,\n IIgnoredEntrypoint,\n} from './Entrypoint.types';\nimport { EvaluatedEntrypoint } from './EvaluatedEntrypoint';\nimport { AbortError } from './actions/AbortError';\nimport type { ActionByType } from './actions/BaseAction';\nimport { BaseAction } from './actions/BaseAction';\nimport { UnprocessedEntrypointError } from './actions/UnprocessedEntrypointError';\nimport type { Services, ActionTypes, ActionQueueItem } from './types';\n\nconst EMPTY_FILE = '=== empty file ===';\n\nfunction hasLoop(\n name: string,\n parent: ParentEntrypoint,\n processed: string[] = []\n): boolean {\n if (parent.name === name || processed.includes(parent.name)) {\n return true;\n }\n\n for (const p of parent.parents) {\n const found = hasLoop(name, p, [...processed, parent.name]);\n if (found) {\n return found;\n }\n }\n\n return false;\n}\n\nexport class Entrypoint extends BaseEntrypoint {\n public readonly evaluated = false;\n\n public readonly loadedAndParsed: IEntrypointCode | IIgnoredEntrypoint;\n\n protected onSupersedeHandlers: Array<(newEntrypoint: Entrypoint) => void> =\n [];\n\n private actionsCache: Map<\n ActionTypes,\n Map<unknown, BaseAction<ActionQueueItem>>\n > = new Map();\n\n #hasLinariaMetadata: boolean = false;\n\n #supersededWith: Entrypoint | null = null;\n\n #transformResultCode: string | null = null;\n\n private constructor(\n services: Services,\n parents: ParentEntrypoint[],\n public readonly initialCode: string | undefined,\n name: string,\n only: string[],\n exports: Record<string | symbol, unknown> | undefined,\n evaluatedOnly: string[],\n loadedAndParsed?: IEntrypointCode | IIgnoredEntrypoint,\n protected readonly resolveTasks = new Map<\n string,\n Promise<IEntrypointDependency>\n >(),\n protected readonly dependencies = new Map<string, IEntrypointDependency>(),\n generation = 1\n ) {\n super(services, evaluatedOnly, exports, generation, name, only, parents);\n\n this.loadedAndParsed =\n loadedAndParsed ??\n services.loadAndParseFn(\n services,\n name,\n initialCode,\n parents[0]?.log ?? services.log\n );\n\n if (this.loadedAndParsed.code !== undefined) {\n services.cache.invalidateIfChanged(name, this.loadedAndParsed.code);\n }\n\n this.log.extend('source')(\n 'created %s (%o)\\n%s',\n name,\n only,\n this.originalCode || EMPTY_FILE\n );\n }\n\n public get ignored() {\n return this.loadedAndParsed.evaluator === 'ignored';\n }\n\n public get originalCode() {\n return this.loadedAndParsed.code;\n }\n\n public get supersededWith(): Entrypoint | null {\n return this.#supersededWith?.supersededWith ?? this.#supersededWith;\n }\n\n public get transformedCode(): string | null {\n return (\n this.#transformResultCode ?? this.supersededWith?.transformedCode ?? null\n );\n }\n\n public static createRoot(\n services: Services,\n name: string,\n only: string[],\n loadedCode: string | undefined\n ): Entrypoint {\n const created = Entrypoint.create(services, null, name, only, loadedCode);\n invariant(created !== 'loop', 'loop detected');\n\n return created;\n }\n\n /**\n * Creates an entrypoint for the specified file.\n * If there is already an entrypoint for this file, there will be four possible outcomes:\n * 1. If `loadedCode` is specified and is different from the one that was used to create the existing entrypoint,\n * the existing entrypoint will be superseded by a new one and all cached results for it will be invalidated.\n * It can happen if the file was changed and the watcher notified us about it, or we received a new version\n * of the file from a loader whereas the previous one was loaded from the filesystem.\n * The new entrypoint will be returned.\n * 2. If `only` is subset of the existing entrypoint's `only`, the existing entrypoint will be returned.\n * 3. If `only` is superset of the existing entrypoint's `only`, the existing entrypoint will be superseded and the new one will be returned.\n * 4. If a loop is detected, 'ignored' will be returned, the existing entrypoint will be superseded or not depending on the `only` value.\n */\n protected static create(\n services: Services,\n parent: ParentEntrypoint | null,\n name: string,\n only: string[],\n loadedCode: string | undefined\n ): Entrypoint | 'loop' {\n const { cache, eventEmitter } = services;\n return eventEmitter.perf('createEntrypoint', () => {\n const [status, entrypoint] = Entrypoint.innerCreate(\n services,\n parent\n ? {\n evaluated: parent.evaluated,\n log: parent.log,\n name: parent.name,\n parents: parent.parents,\n seqId: parent.seqId,\n }\n : null,\n name,\n only,\n loadedCode\n );\n\n if (status !== 'cached') {\n cache.add('entrypoints', name, entrypoint);\n }\n\n return status === 'loop' ? 'loop' : entrypoint;\n });\n }\n\n private static innerCreate(\n services: Services,\n parent: ParentEntrypoint | null,\n name: string,\n only: string[],\n loadedCode: string | undefined\n ): ['loop' | 'created' | 'cached', Entrypoint] {\n const { cache } = services;\n\n const cached = cache.get('entrypoints', name);\n const changed =\n loadedCode !== undefined\n ? cache.invalidateIfChanged(name, loadedCode)\n : false;\n\n if (!cached?.evaluated && cached?.ignored) {\n return ['cached', cached];\n }\n\n const exports = cached?.exports;\n const evaluatedOnly = cached?.evaluatedOnly ?? [];\n const mergedOnly =\n !changed && cached?.only\n ? mergeOnly(cached.only, only).filter((i) => !evaluatedOnly.includes(i))\n : only;\n\n if (cached?.evaluated) {\n cached.log('is already evaluated with', cached.evaluatedOnly);\n }\n\n if (!changed && cached && !cached.evaluated) {\n const isLoop = parent && hasLoop(name, parent);\n if (isLoop) {\n parent.log('[createEntrypoint] %s is a loop', name);\n }\n\n if (parent && !cached.parents.map((p) => p.name).includes(parent.name)) {\n cached.parents.push(parent);\n }\n\n if (isSuperSet(cached.only, mergedOnly)) {\n cached.log('is cached', name);\n return [isLoop ? 'loop' : 'cached', cached];\n }\n\n cached.log(\n 'is cached, but with different `only` %o (the cached one %o)',\n only,\n cached?.only\n );\n\n return [isLoop ? 'loop' : 'created', cached.supersede(mergedOnly)];\n }\n\n const newEntrypoint = new Entrypoint(\n services,\n parent ? [parent] : [],\n loadedCode,\n name,\n mergedOnly,\n exports,\n evaluatedOnly,\n undefined,\n cached && 'resolveTasks' in cached ? cached.resolveTasks : undefined,\n cached && 'dependencies' in cached ? cached.dependencies : undefined,\n cached ? cached.generation + 1 : 1\n );\n\n if (cached && !cached.evaluated) {\n cached.log('is cached, but with different code');\n cached.supersede(newEntrypoint);\n }\n\n return ['created', newEntrypoint];\n }\n\n public addDependency(dependency: IEntrypointDependency): void {\n this.resolveTasks.delete(dependency.source);\n this.dependencies.set(dependency.source, dependency);\n }\n\n public addResolveTask(\n name: string,\n dependency: Promise<IEntrypointDependency>\n ): void {\n this.resolveTasks.set(name, dependency);\n }\n\n public assertNotSuperseded() {\n if (this.supersededWith) {\n this.log('superseded');\n throw new AbortError('superseded');\n }\n }\n\n public assertTransformed() {\n if (this.transformedCode === null) {\n this.log('not transformed');\n throw new UnprocessedEntrypointError(this.supersededWith ?? this);\n }\n }\n\n public createAction<\n TType extends ActionTypes,\n TAction extends ActionByType<TType>,\n >(\n actionType: TType,\n data: TAction['data'],\n abortSignal: AbortSignal | null = null\n ): BaseAction<TAction> {\n if (!this.actionsCache.has(actionType)) {\n this.actionsCache.set(actionType, new Map());\n }\n\n const cache = this.actionsCache.get(actionType)!;\n const cached = cache.get(data);\n if (cached && !cached.abortSignal?.aborted) {\n return cached as BaseAction<TAction>;\n }\n\n const newAction = new BaseAction<TAction>(\n actionType as TAction['type'],\n this.services,\n this,\n data,\n abortSignal\n );\n\n cache.set(data, newAction);\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'actionCreated',\n actionType,\n actionIdx: newAction.idx,\n });\n\n return newAction;\n }\n\n public createChild(\n name: string,\n only: string[],\n loadedCode?: string\n ): Entrypoint | 'loop' {\n return Entrypoint.create(this.services, this, name, only, loadedCode);\n }\n\n public createEvaluated() {\n const evaluatedOnly = mergeOnly(this.evaluatedOnly, this.only);\n this.log('create EvaluatedEntrypoint for %o', evaluatedOnly);\n\n return new EvaluatedEntrypoint(\n this.services,\n evaluatedOnly,\n this.exportsProxy,\n this.generation + 1,\n this.name,\n this.only,\n this.parents\n );\n }\n\n public getDependency(name: string): IEntrypointDependency | undefined {\n return this.dependencies.get(name);\n }\n\n public getResolveTask(\n name: string\n ): Promise<IEntrypointDependency> | undefined {\n return this.resolveTasks.get(name);\n }\n\n public hasLinariaMetadata() {\n return this.#hasLinariaMetadata;\n }\n\n public onSupersede(callback: (newEntrypoint: Entrypoint) => void) {\n if (this.#supersededWith) {\n callback(this.#supersededWith);\n return () => {};\n }\n\n this.onSupersedeHandlers.push(callback);\n\n return () => {\n const index = this.onSupersedeHandlers.indexOf(callback);\n if (index >= 0) {\n this.onSupersedeHandlers.splice(index, 1);\n }\n };\n }\n\n public setTransformResult(res: ITransformFileResult | null) {\n this.#hasLinariaMetadata = Boolean(res?.metadata);\n this.#transformResultCode = res?.code ?? null;\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n isNull: res === null,\n type: 'setTransformResult',\n });\n }\n\n private supersede(newOnlyOrEntrypoint: string[] | Entrypoint): Entrypoint {\n const newEntrypoint =\n newOnlyOrEntrypoint instanceof Entrypoint\n ? newOnlyOrEntrypoint\n : new Entrypoint(\n this.services,\n this.parents,\n this.initialCode,\n this.name,\n newOnlyOrEntrypoint,\n this.exports,\n this.evaluatedOnly,\n this.loadedAndParsed,\n this.resolveTasks,\n this.dependencies,\n this.generation + 1\n );\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'superseded',\n with: newEntrypoint.seqId,\n });\n this.log(\n 'superseded by %s (%o -> %o)',\n newEntrypoint.name,\n this.only,\n newEntrypoint.only\n );\n this.#supersededWith = newEntrypoint;\n this.onSupersedeHandlers.forEach((handler) => handler(newEntrypoint));\n\n return newEntrypoint;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Entrypoint.js","names":["_tsInvariant","require","_BaseEntrypoint","_Entrypoint","_EvaluatedEntrypoint","_AbortError","_BaseAction","_UnprocessedEntrypointError","EMPTY_FILE","hasLoop","name","parent","processed","includes","p","parents","found","Entrypoint","BaseEntrypoint","evaluated","onSupersedeHandlers","actionsCache","Map","hasWywMetadata","supersededWith","transformResultCode","constructor","services","initialCode","only","exports","evaluatedOnly","loadedAndParsed","resolveTasks","dependencies","generation","_parents$0$log","_parents$","loadAndParseFn","log","code","undefined","cache","invalidateIfChanged","extend","originalCode","ignored","evaluator","_this$supersededWith$","_this$supersededWith","transformedCode","_ref","_this$transformResult","_this$supersededWith2","createRoot","loadedCode","created","create","invariant","eventEmitter","perf","status","entrypoint","innerCreate","seqId","add","_cached$evaluatedOnly","cached","get","changed","mergedOnly","mergeOnly","filter","i","isLoop","map","push","isSuperSet","supersede","newEntrypoint","addDependency","dependency","delete","source","set","addResolveTask","assertNotSuperseded","AbortError","assertTransformed","_this$supersededWith3","UnprocessedEntrypointError","createAction","actionType","data","abortSignal","_cached$abortSignal","has","aborted","newAction","BaseAction","entrypointEvent","type","actionIdx","idx","createChild","createEvaluated","EvaluatedEntrypoint","exportsProxy","getDependency","getResolveTask","onSupersede","callback","index","indexOf","splice","setTransformResult","res","_res$code","Boolean","metadata","isNull","newOnlyOrEntrypoint","with","forEach","handler"],"sources":["../../src/transform/Entrypoint.ts"],"sourcesContent":["import { invariant } from 'ts-invariant';\n\nimport type { ParentEntrypoint, ITransformFileResult } from '../types';\n\nimport { BaseEntrypoint } from './BaseEntrypoint';\nimport { isSuperSet, mergeOnly } from './Entrypoint.helpers';\nimport type {\n IEntrypointCode,\n IEntrypointDependency,\n IIgnoredEntrypoint,\n} from './Entrypoint.types';\nimport { EvaluatedEntrypoint } from './EvaluatedEntrypoint';\nimport { AbortError } from './actions/AbortError';\nimport type { ActionByType } from './actions/BaseAction';\nimport { BaseAction } from './actions/BaseAction';\nimport { UnprocessedEntrypointError } from './actions/UnprocessedEntrypointError';\nimport type { Services, ActionTypes, ActionQueueItem } from './types';\n\nconst EMPTY_FILE = '=== empty file ===';\n\nfunction hasLoop(\n name: string,\n parent: ParentEntrypoint,\n processed: string[] = []\n): boolean {\n if (parent.name === name || processed.includes(parent.name)) {\n return true;\n }\n\n for (const p of parent.parents) {\n const found = hasLoop(name, p, [...processed, parent.name]);\n if (found) {\n return found;\n }\n }\n\n return false;\n}\n\nexport class Entrypoint extends BaseEntrypoint {\n public readonly evaluated = false;\n\n public readonly loadedAndParsed: IEntrypointCode | IIgnoredEntrypoint;\n\n protected onSupersedeHandlers: Array<(newEntrypoint: Entrypoint) => void> =\n [];\n\n private actionsCache: Map<\n ActionTypes,\n Map<unknown, BaseAction<ActionQueueItem>>\n > = new Map();\n\n #hasWywMetadata: boolean = false;\n\n #supersededWith: Entrypoint | null = null;\n\n #transformResultCode: string | null = null;\n\n private constructor(\n services: Services,\n parents: ParentEntrypoint[],\n public readonly initialCode: string | undefined,\n name: string,\n only: string[],\n exports: Record<string | symbol, unknown> | undefined,\n evaluatedOnly: string[],\n loadedAndParsed?: IEntrypointCode | IIgnoredEntrypoint,\n protected readonly resolveTasks = new Map<\n string,\n Promise<IEntrypointDependency>\n >(),\n protected readonly dependencies = new Map<string, IEntrypointDependency>(),\n generation = 1\n ) {\n super(services, evaluatedOnly, exports, generation, name, only, parents);\n\n this.loadedAndParsed =\n loadedAndParsed ??\n services.loadAndParseFn(\n services,\n name,\n initialCode,\n parents[0]?.log ?? services.log\n );\n\n if (this.loadedAndParsed.code !== undefined) {\n services.cache.invalidateIfChanged(name, this.loadedAndParsed.code);\n }\n\n this.log.extend('source')(\n 'created %s (%o)\\n%s',\n name,\n only,\n this.originalCode || EMPTY_FILE\n );\n }\n\n public get ignored() {\n return this.loadedAndParsed.evaluator === 'ignored';\n }\n\n public get originalCode() {\n return this.loadedAndParsed.code;\n }\n\n public get supersededWith(): Entrypoint | null {\n return this.#supersededWith?.supersededWith ?? this.#supersededWith;\n }\n\n public get transformedCode(): string | null {\n return (\n this.#transformResultCode ?? this.supersededWith?.transformedCode ?? null\n );\n }\n\n public static createRoot(\n services: Services,\n name: string,\n only: string[],\n loadedCode: string | undefined\n ): Entrypoint {\n const created = Entrypoint.create(services, null, name, only, loadedCode);\n invariant(created !== 'loop', 'loop detected');\n\n return created;\n }\n\n /**\n * Creates an entrypoint for the specified file.\n * If there is already an entrypoint for this file, there will be four possible outcomes:\n * 1. If `loadedCode` is specified and is different from the one that was used to create the existing entrypoint,\n * the existing entrypoint will be superseded by a new one and all cached results for it will be invalidated.\n * It can happen if the file was changed and the watcher notified us about it, or we received a new version\n * of the file from a loader whereas the previous one was loaded from the filesystem.\n * The new entrypoint will be returned.\n * 2. If `only` is subset of the existing entrypoint's `only`, the existing entrypoint will be returned.\n * 3. If `only` is superset of the existing entrypoint's `only`, the existing entrypoint will be superseded and the new one will be returned.\n * 4. If a loop is detected, 'ignored' will be returned, the existing entrypoint will be superseded or not depending on the `only` value.\n */\n protected static create(\n services: Services,\n parent: ParentEntrypoint | null,\n name: string,\n only: string[],\n loadedCode: string | undefined\n ): Entrypoint | 'loop' {\n const { cache, eventEmitter } = services;\n return eventEmitter.perf('createEntrypoint', () => {\n const [status, entrypoint] = Entrypoint.innerCreate(\n services,\n parent\n ? {\n evaluated: parent.evaluated,\n log: parent.log,\n name: parent.name,\n parents: parent.parents,\n seqId: parent.seqId,\n }\n : null,\n name,\n only,\n loadedCode\n );\n\n if (status !== 'cached') {\n cache.add('entrypoints', name, entrypoint);\n }\n\n return status === 'loop' ? 'loop' : entrypoint;\n });\n }\n\n private static innerCreate(\n services: Services,\n parent: ParentEntrypoint | null,\n name: string,\n only: string[],\n loadedCode: string | undefined\n ): ['loop' | 'created' | 'cached', Entrypoint] {\n const { cache } = services;\n\n const cached = cache.get('entrypoints', name);\n const changed =\n loadedCode !== undefined\n ? cache.invalidateIfChanged(name, loadedCode)\n : false;\n\n if (!cached?.evaluated && cached?.ignored) {\n return ['cached', cached];\n }\n\n const exports = cached?.exports;\n const evaluatedOnly = cached?.evaluatedOnly ?? [];\n const mergedOnly =\n !changed && cached?.only\n ? mergeOnly(cached.only, only).filter((i) => !evaluatedOnly.includes(i))\n : only;\n\n if (cached?.evaluated) {\n cached.log('is already evaluated with', cached.evaluatedOnly);\n }\n\n if (!changed && cached && !cached.evaluated) {\n const isLoop = parent && hasLoop(name, parent);\n if (isLoop) {\n parent.log('[createEntrypoint] %s is a loop', name);\n }\n\n if (parent && !cached.parents.map((p) => p.name).includes(parent.name)) {\n cached.parents.push(parent);\n }\n\n if (isSuperSet(cached.only, mergedOnly)) {\n cached.log('is cached', name);\n return [isLoop ? 'loop' : 'cached', cached];\n }\n\n cached.log(\n 'is cached, but with different `only` %o (the cached one %o)',\n only,\n cached?.only\n );\n\n return [isLoop ? 'loop' : 'created', cached.supersede(mergedOnly)];\n }\n\n const newEntrypoint = new Entrypoint(\n services,\n parent ? [parent] : [],\n loadedCode,\n name,\n mergedOnly,\n exports,\n evaluatedOnly,\n undefined,\n cached && 'resolveTasks' in cached ? cached.resolveTasks : undefined,\n cached && 'dependencies' in cached ? cached.dependencies : undefined,\n cached ? cached.generation + 1 : 1\n );\n\n if (cached && !cached.evaluated) {\n cached.log('is cached, but with different code');\n cached.supersede(newEntrypoint);\n }\n\n return ['created', newEntrypoint];\n }\n\n public addDependency(dependency: IEntrypointDependency): void {\n this.resolveTasks.delete(dependency.source);\n this.dependencies.set(dependency.source, dependency);\n }\n\n public addResolveTask(\n name: string,\n dependency: Promise<IEntrypointDependency>\n ): void {\n this.resolveTasks.set(name, dependency);\n }\n\n public assertNotSuperseded() {\n if (this.supersededWith) {\n this.log('superseded');\n throw new AbortError('superseded');\n }\n }\n\n public assertTransformed() {\n if (this.transformedCode === null) {\n this.log('not transformed');\n throw new UnprocessedEntrypointError(this.supersededWith ?? this);\n }\n }\n\n public createAction<\n TType extends ActionTypes,\n TAction extends ActionByType<TType>,\n >(\n actionType: TType,\n data: TAction['data'],\n abortSignal: AbortSignal | null = null\n ): BaseAction<TAction> {\n if (!this.actionsCache.has(actionType)) {\n this.actionsCache.set(actionType, new Map());\n }\n\n const cache = this.actionsCache.get(actionType)!;\n const cached = cache.get(data);\n if (cached && !cached.abortSignal?.aborted) {\n return cached as BaseAction<TAction>;\n }\n\n const newAction = new BaseAction<TAction>(\n actionType as TAction['type'],\n this.services,\n this,\n data,\n abortSignal\n );\n\n cache.set(data, newAction);\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'actionCreated',\n actionType,\n actionIdx: newAction.idx,\n });\n\n return newAction;\n }\n\n public createChild(\n name: string,\n only: string[],\n loadedCode?: string\n ): Entrypoint | 'loop' {\n return Entrypoint.create(this.services, this, name, only, loadedCode);\n }\n\n public createEvaluated() {\n const evaluatedOnly = mergeOnly(this.evaluatedOnly, this.only);\n this.log('create EvaluatedEntrypoint for %o', evaluatedOnly);\n\n return new EvaluatedEntrypoint(\n this.services,\n evaluatedOnly,\n this.exportsProxy,\n this.generation + 1,\n this.name,\n this.only,\n this.parents\n );\n }\n\n public getDependency(name: string): IEntrypointDependency | undefined {\n return this.dependencies.get(name);\n }\n\n public getResolveTask(\n name: string\n ): Promise<IEntrypointDependency> | undefined {\n return this.resolveTasks.get(name);\n }\n\n public hasWywMetadata() {\n return this.#hasWywMetadata;\n }\n\n public onSupersede(callback: (newEntrypoint: Entrypoint) => void) {\n if (this.#supersededWith) {\n callback(this.#supersededWith);\n return () => {};\n }\n\n this.onSupersedeHandlers.push(callback);\n\n return () => {\n const index = this.onSupersedeHandlers.indexOf(callback);\n if (index >= 0) {\n this.onSupersedeHandlers.splice(index, 1);\n }\n };\n }\n\n public setTransformResult(res: ITransformFileResult | null) {\n this.#hasWywMetadata = Boolean(res?.metadata);\n this.#transformResultCode = res?.code ?? null;\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n isNull: res === null,\n type: 'setTransformResult',\n });\n }\n\n private supersede(newOnlyOrEntrypoint: string[] | Entrypoint): Entrypoint {\n const newEntrypoint =\n newOnlyOrEntrypoint instanceof Entrypoint\n ? newOnlyOrEntrypoint\n : new Entrypoint(\n this.services,\n this.parents,\n this.initialCode,\n this.name,\n newOnlyOrEntrypoint,\n this.exports,\n this.evaluatedOnly,\n this.loadedAndParsed,\n this.resolveTasks,\n this.dependencies,\n this.generation + 1\n );\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'superseded',\n with: newEntrypoint.seqId,\n });\n this.log(\n 'superseded by %s (%o -> %o)',\n newEntrypoint.name,\n this.only,\n newEntrypoint.only\n );\n this.#supersededWith = newEntrypoint;\n this.onSupersedeHandlers.forEach((handler) => handler(newEntrypoint));\n\n return newEntrypoint;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect.js","names":["_buildOptions","require","_collector","_TransformMetadata","collect","_result$ast","babel","options","services","valueCache","data","entrypoint","loadedAndParsed","name","evaluator","Error","transformPlugins","collectorPlugin","pluginOptions","values","transformConfig","buildOptions","envName","plugins","sourceMaps","sourceFileName","inputSourceMap","root","ast","babelrc","configFile","sourceType","result","transformFromAstSync","code","cwd","filename","program","transformMetadata","getTransformMetadata","metadata","map"],"sources":["../../../src/transform/generators/collect.ts"],"sourcesContent":["import type { PluginItem } from '@babel/core';\n\nimport { buildOptions } from '../../options/buildOptions';\nimport { filename as collectorPlugin } from '../../plugins/collector';\nimport { getTransformMetadata } from '../../utils/TransformMetadata';\nimport type { ICollectAction, SyncScenarioForAction } from '../types';\n\n/**\n * Parses the specified file, finds tags, applies run-time replacements,\n * removes dead code.\n */\n// eslint-disable-next-line require-yield\nexport function* collect(\n this: ICollectAction\n): SyncScenarioForAction<ICollectAction> {\n const { babel, options } = this.services;\n const { valueCache } = this.data;\n const { entrypoint } = this;\n const { loadedAndParsed, name } = entrypoint;\n\n if (loadedAndParsed.evaluator === 'ignored') {\n throw new Error('entrypoint was ignored');\n }\n\n const transformPlugins: PluginItem[] = [\n [\n collectorPlugin,\n {\n ...options.pluginOptions,\n values: valueCache,\n },\n ],\n ];\n\n const transformConfig = buildOptions({\n envName: '
|
|
1
|
+
{"version":3,"file":"collect.js","names":["_buildOptions","require","_collector","_TransformMetadata","collect","_result$ast","babel","options","services","valueCache","data","entrypoint","loadedAndParsed","name","evaluator","Error","transformPlugins","collectorPlugin","pluginOptions","values","transformConfig","buildOptions","envName","plugins","sourceMaps","sourceFileName","inputSourceMap","root","ast","babelrc","configFile","sourceType","result","transformFromAstSync","code","cwd","filename","program","transformMetadata","getTransformMetadata","metadata","map"],"sources":["../../../src/transform/generators/collect.ts"],"sourcesContent":["import type { PluginItem } from '@babel/core';\n\nimport { buildOptions } from '../../options/buildOptions';\nimport { filename as collectorPlugin } from '../../plugins/collector';\nimport { getTransformMetadata } from '../../utils/TransformMetadata';\nimport type { ICollectAction, SyncScenarioForAction } from '../types';\n\n/**\n * Parses the specified file, finds tags, applies run-time replacements,\n * removes dead code.\n */\n// eslint-disable-next-line require-yield\nexport function* collect(\n this: ICollectAction\n): SyncScenarioForAction<ICollectAction> {\n const { babel, options } = this.services;\n const { valueCache } = this.data;\n const { entrypoint } = this;\n const { loadedAndParsed, name } = entrypoint;\n\n if (loadedAndParsed.evaluator === 'ignored') {\n throw new Error('entrypoint was ignored');\n }\n\n const transformPlugins: PluginItem[] = [\n [\n collectorPlugin,\n {\n ...options.pluginOptions,\n values: valueCache,\n },\n ],\n ];\n\n const transformConfig = buildOptions({\n envName: 'wyw-in-js',\n plugins: transformPlugins,\n sourceMaps: true,\n sourceFileName: name,\n inputSourceMap: options.inputSourceMap,\n root: options.root,\n ast: true,\n babelrc: false,\n configFile: false,\n sourceType: 'unambiguous',\n });\n\n const result = babel.transformFromAstSync(\n loadedAndParsed.ast,\n loadedAndParsed.code,\n {\n ...transformConfig,\n cwd: options.root,\n filename: name,\n }\n );\n\n if (!result || !result.ast?.program) {\n throw new Error('Babel transform failed');\n }\n\n const transformMetadata = getTransformMetadata(result.metadata);\n\n return {\n ast: result.ast,\n code: result.code,\n map: result.map,\n metadata: transformMetadata ?? null,\n };\n}\n"],"mappings":";;;;;;AAEA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AAGA;AACA;AACA;AACA;AACA;AACO,UAAUG,OAAOA,CAAA,EAEiB;EAAA,IAAAC,WAAA;EACvC,MAAM;IAAEC,KAAK;IAAEC;EAAQ,CAAC,GAAG,IAAI,CAACC,QAAQ;EACxC,MAAM;IAAEC;EAAW,CAAC,GAAG,IAAI,CAACC,IAAI;EAChC,MAAM;IAAEC;EAAW,CAAC,GAAG,IAAI;EAC3B,MAAM;IAAEC,eAAe;IAAEC;EAAK,CAAC,GAAGF,UAAU;EAE5C,IAAIC,eAAe,CAACE,SAAS,KAAK,SAAS,EAAE;IAC3C,MAAM,IAAIC,KAAK,CAAC,wBAAwB,CAAC;EAC3C;EAEA,MAAMC,gBAA8B,GAAG,CACrC,CACEC,mBAAe,EACf;IACE,GAAGV,OAAO,CAACW,aAAa;IACxBC,MAAM,EAAEV;EACV,CAAC,CACF,CACF;EAED,MAAMW,eAAe,GAAG,IAAAC,0BAAY,EAAC;IACnCC,OAAO,EAAE,WAAW;IACpBC,OAAO,EAAEP,gBAAgB;IACzBQ,UAAU,EAAE,IAAI;IAChBC,cAAc,EAAEZ,IAAI;IACpBa,cAAc,EAAEnB,OAAO,CAACmB,cAAc;IACtCC,IAAI,EAAEpB,OAAO,CAACoB,IAAI;IAClBC,GAAG,EAAE,IAAI;IACTC,OAAO,EAAE,KAAK;IACdC,UAAU,EAAE,KAAK;IACjBC,UAAU,EAAE;EACd,CAAC,CAAC;EAEF,MAAMC,MAAM,GAAG1B,KAAK,CAAC2B,oBAAoB,CACvCrB,eAAe,CAACgB,GAAG,EACnBhB,eAAe,CAACsB,IAAI,EACpB;IACE,GAAGd,eAAe;IAClBe,GAAG,EAAE5B,OAAO,CAACoB,IAAI;IACjBS,QAAQ,EAAEvB;EACZ,CACF,CAAC;EAED,IAAI,CAACmB,MAAM,IAAI,GAAA3B,WAAA,GAAC2B,MAAM,CAACJ,GAAG,cAAAvB,WAAA,eAAVA,WAAA,CAAYgC,OAAO,GAAE;IACnC,MAAM,IAAItB,KAAK,CAAC,wBAAwB,CAAC;EAC3C;EAEA,MAAMuB,iBAAiB,GAAG,IAAAC,uCAAoB,EAACP,MAAM,CAACQ,QAAQ,CAAC;EAE/D,OAAO;IACLZ,GAAG,EAAEI,MAAM,CAACJ,GAAG;IACfM,IAAI,EAAEF,MAAM,CAACE,IAAI;IACjBO,GAAG,EAAET,MAAM,CAACS,GAAG;IACfD,QAAQ,EAAEF,iBAAiB,aAAjBA,iBAAiB,cAAjBA,iBAAiB,GAAI;EACjC,CAAC;AACH"}
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.evalFile = evalFile;
|
|
7
7
|
var _evaluators = _interopRequireDefault(require("../../evaluators"));
|
|
8
|
-
var
|
|
8
|
+
var _hasWywPreval = _interopRequireDefault(require("../../utils/hasWywPreval"));
|
|
9
9
|
var _UnprocessedEntrypointError = require("../actions/UnprocessedEntrypointError");
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
11
|
const wrap = fn => {
|
|
@@ -28,7 +28,7 @@ function* evalFile() {
|
|
|
28
28
|
const {
|
|
29
29
|
log
|
|
30
30
|
} = entrypoint;
|
|
31
|
-
log(`>> evaluate
|
|
31
|
+
log(`>> evaluate __wywPreval`);
|
|
32
32
|
let evaluated;
|
|
33
33
|
while (evaluated === undefined) {
|
|
34
34
|
try {
|
|
@@ -42,16 +42,16 @@ function* evalFile() {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
const
|
|
46
|
-
if (!
|
|
45
|
+
const wywPreval = (0, _hasWywPreval.default)(evaluated.value) ? evaluated.value.__wywPreval : undefined;
|
|
46
|
+
if (!wywPreval) {
|
|
47
47
|
return null;
|
|
48
48
|
}
|
|
49
49
|
const valueCache = new Map();
|
|
50
|
-
Object.entries(
|
|
50
|
+
Object.entries(wywPreval).forEach(([key, lazyValue]) => {
|
|
51
51
|
const value = wrap(lazyValue);
|
|
52
52
|
valueCache.set(key, value);
|
|
53
53
|
});
|
|
54
|
-
log(`<< evaluated
|
|
54
|
+
log(`<< evaluated __wywPreval %O`, valueCache);
|
|
55
55
|
return [valueCache, evaluated.dependencies];
|
|
56
56
|
}
|
|
57
57
|
//# sourceMappingURL=evalFile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evalFile.js","names":["_evaluators","_interopRequireDefault","require","
|
|
1
|
+
{"version":3,"file":"evalFile.js","names":["_evaluators","_interopRequireDefault","require","_hasWywPreval","_UnprocessedEntrypointError","obj","__esModule","default","wrap","fn","e","evalFile","entrypoint","log","evaluated","undefined","evaluate","services","isUnprocessedEntrypointError","wywPreval","hasWywPreval","value","__wywPreval","valueCache","Map","Object","entries","forEach","key","lazyValue","set","dependencies"],"sources":["../../../src/transform/generators/evalFile.ts"],"sourcesContent":["import type { ValueCache } from '@wyw-in-js/processor-utils';\n\nimport type { IEvaluateResult } from '../../evaluators';\nimport evaluate from '../../evaluators';\nimport hasWywPreval from '../../utils/hasWywPreval';\nimport { isUnprocessedEntrypointError } from '../actions/UnprocessedEntrypointError';\nimport type { IEvalAction, SyncScenarioForAction } from '../types';\n\nconst wrap = <T>(fn: () => T): T | Error => {\n try {\n return fn();\n } catch (e) {\n return e as Error;\n }\n};\n\n/**\n * Executes the code prepared in previous steps within the current `Entrypoint`.\n * Returns all exports that were requested in `only`.\n */\n// eslint-disable-next-line require-yield\nexport function* evalFile(\n this: IEvalAction\n): SyncScenarioForAction<IEvalAction> {\n const { entrypoint } = this;\n const { log } = entrypoint;\n\n log(`>> evaluate __wywPreval`);\n\n let evaluated: IEvaluateResult | undefined;\n\n while (evaluated === undefined) {\n try {\n evaluated = evaluate(this.services, entrypoint);\n } catch (e) {\n if (isUnprocessedEntrypointError(e)) {\n entrypoint.log(\n 'Evaluation has been aborted because one if the required files is not processed. Schedule reprocessing and repeat evaluation.'\n );\n yield ['processEntrypoint', e.entrypoint, undefined];\n } else {\n throw e;\n }\n }\n }\n\n const wywPreval = hasWywPreval(evaluated.value)\n ? evaluated.value.__wywPreval\n : undefined;\n\n if (!wywPreval) {\n return null;\n }\n\n const valueCache: ValueCache = new Map();\n Object.entries(wywPreval).forEach(([key, lazyValue]) => {\n const value = wrap(lazyValue);\n valueCache.set(key, value);\n });\n\n log(`<< evaluated __wywPreval %O`, valueCache);\n\n return [valueCache, evaluated.dependencies];\n}\n"],"mappings":";;;;;;AAGA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,2BAAA,GAAAF,OAAA;AAAqF,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGrF,MAAMG,IAAI,GAAOC,EAAW,IAAgB;EAC1C,IAAI;IACF,OAAOA,EAAE,CAAC,CAAC;EACb,CAAC,CAAC,OAAOC,CAAC,EAAE;IACV,OAAOA,CAAC;EACV;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACO,UAAUC,QAAQA,CAAA,EAEa;EACpC,MAAM;IAAEC;EAAW,CAAC,GAAG,IAAI;EAC3B,MAAM;IAAEC;EAAI,CAAC,GAAGD,UAAU;EAE1BC,GAAG,CAAE,yBAAwB,CAAC;EAE9B,IAAIC,SAAsC;EAE1C,OAAOA,SAAS,KAAKC,SAAS,EAAE;IAC9B,IAAI;MACFD,SAAS,GAAG,IAAAE,mBAAQ,EAAC,IAAI,CAACC,QAAQ,EAAEL,UAAU,CAAC;IACjD,CAAC,CAAC,OAAOF,CAAC,EAAE;MACV,IAAI,IAAAQ,wDAA4B,EAACR,CAAC,CAAC,EAAE;QACnCE,UAAU,CAACC,GAAG,CACZ,8HACF,CAAC;QACD,MAAM,CAAC,mBAAmB,EAAEH,CAAC,CAACE,UAAU,EAAEG,SAAS,CAAC;MACtD,CAAC,MAAM;QACL,MAAML,CAAC;MACT;IACF;EACF;EAEA,MAAMS,SAAS,GAAG,IAAAC,qBAAY,EAACN,SAAS,CAACO,KAAK,CAAC,GAC3CP,SAAS,CAACO,KAAK,CAACC,WAAW,GAC3BP,SAAS;EAEb,IAAI,CAACI,SAAS,EAAE;IACd,OAAO,IAAI;EACb;EAEA,MAAMI,UAAsB,GAAG,IAAIC,GAAG,CAAC,CAAC;EACxCC,MAAM,CAACC,OAAO,CAACP,SAAS,CAAC,CAACQ,OAAO,CAAC,CAAC,CAACC,GAAG,EAAEC,SAAS,CAAC,KAAK;IACtD,MAAMR,KAAK,GAAGb,IAAI,CAACqB,SAAS,CAAC;IAC7BN,UAAU,CAACO,GAAG,CAACF,GAAG,EAAEP,KAAK,CAAC;EAC5B,CAAC,CAAC;EAEFR,GAAG,CAAE,6BAA4B,EAAEU,UAAU,CAAC;EAE9C,OAAO,CAACA,UAAU,EAAET,SAAS,CAACiB,YAAY,CAAC;AAC7C"}
|
|
@@ -7,9 +7,8 @@ exports.extract = extract;
|
|
|
7
7
|
exports.transformUrl = transformUrl;
|
|
8
8
|
var _path = _interopRequireDefault(require("path"));
|
|
9
9
|
var _sourceMap = require("source-map");
|
|
10
|
-
var _stylis =
|
|
10
|
+
var _stylis = require("stylis");
|
|
11
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
-
const STYLIS_DECLARATION = 1;
|
|
13
12
|
const posixSep = _path.default.posix.sep;
|
|
14
13
|
function transformUrl(url, outputFilename, sourceFilename, platformPath = _path.default) {
|
|
15
14
|
// Replace asset path with new path relative to the output CSS
|
|
@@ -21,6 +20,22 @@ function transformUrl(url, outputFilename, sourceFilename, platformPath = _path.
|
|
|
21
20
|
}
|
|
22
21
|
return relative.split(platformPath.sep).join(posixSep);
|
|
23
22
|
}
|
|
23
|
+
function createStylisPreprocessor(options) {
|
|
24
|
+
function stylisPreprocess(selector, text) {
|
|
25
|
+
return (0, _stylis.serialize)((0, _stylis.compile)(`${selector} {${text}}\n`), (0, _stylis.middleware)([element => {
|
|
26
|
+
const {
|
|
27
|
+
outputFilename
|
|
28
|
+
} = options;
|
|
29
|
+
if (element.type === 'decl' && outputFilename) {
|
|
30
|
+
// When writing to a file, we need to adjust the relative paths inside url(..) expressions.
|
|
31
|
+
// It'll allow css-loader to resolve an imported asset properly.
|
|
32
|
+
// eslint-disable-next-line no-param-reassign
|
|
33
|
+
element.return = element.value.replace(/\b(url\((["']?))(\.[^)]+?)(\2\))/g, (match, p1, p2, p3, p4) => p1 + transformUrl(p3, outputFilename, options.filename) + p4);
|
|
34
|
+
}
|
|
35
|
+
}, _stylis.namespace, _stylis.prefixer, _stylis.stringify]));
|
|
36
|
+
}
|
|
37
|
+
return stylisPreprocess;
|
|
38
|
+
}
|
|
24
39
|
function extractCssFromAst(rules, originalCode, options) {
|
|
25
40
|
const mappings = [];
|
|
26
41
|
let cssText = '';
|
|
@@ -35,18 +50,7 @@ function extractCssFromAst(rules, originalCode, options) {
|
|
|
35
50
|
break;
|
|
36
51
|
case 'stylis':
|
|
37
52
|
default:
|
|
38
|
-
|
|
39
|
-
const {
|
|
40
|
-
outputFilename
|
|
41
|
-
} = options;
|
|
42
|
-
if (context === STYLIS_DECLARATION && outputFilename) {
|
|
43
|
-
// When writing to a file, we need to adjust the relative paths inside url(..) expressions
|
|
44
|
-
// It'll allow css-loader to resolve an imported asset properly
|
|
45
|
-
return decl.replace(/\b(url\((["']?))(\.[^)]+?)(\2\))/g, (match, p1, p2, p3, p4) => p1 + transformUrl(p3, outputFilename, options.filename) + p4);
|
|
46
|
-
}
|
|
47
|
-
return decl;
|
|
48
|
-
});
|
|
49
|
-
preprocessor = _stylis.default;
|
|
53
|
+
preprocessor = createStylisPreprocessor(options);
|
|
50
54
|
}
|
|
51
55
|
}
|
|
52
56
|
Object.keys(rules).forEach((selector, index) => {
|