@wyw-in-js/transform 1.0.7 → 1.1.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/cache.js +60 -5
- package/esm/cache.js.map +1 -1
- package/esm/index.js +2 -1
- package/esm/index.js.map +1 -1
- package/esm/module.js +8 -3
- package/esm/module.js.map +1 -1
- package/esm/transform/Entrypoint.js +8 -3
- package/esm/transform/Entrypoint.js.map +1 -1
- package/esm/transform/actions/BaseAction.js +2 -1
- package/esm/transform/actions/BaseAction.js.map +1 -1
- package/esm/transform/actions/actionRunner.js +2 -2
- package/esm/transform/actions/actionRunner.js.map +1 -1
- package/esm/transform/actions/types.js.map +1 -1
- package/esm/transform/generators/processEntrypoint.js +5 -1
- package/esm/transform/generators/processEntrypoint.js.map +1 -1
- package/esm/transform/generators/workflow.js +11 -0
- package/esm/transform/generators/workflow.js.map +1 -1
- package/esm/transform/helpers/loadWywOptions.js +1 -0
- package/esm/transform/helpers/loadWywOptions.js.map +1 -1
- package/esm/transform/types.js.map +1 -1
- package/esm/transform.js +45 -23
- package/esm/transform.js.map +1 -1
- package/esm/types.js.map +1 -1
- package/esm/utils/TransformDiagnostics.js +10 -0
- package/esm/utils/TransformDiagnostics.js.map +1 -0
- package/esm/utils/TransformMetadata.js +20 -0
- package/esm/utils/TransformMetadata.js.map +1 -1
- package/esm/utils/collectTemplateDependencies.js +9 -0
- package/esm/utils/collectTemplateDependencies.js.map +1 -1
- package/lib/cache.js +60 -5
- package/lib/cache.js.map +1 -1
- package/lib/index.js +29 -0
- package/lib/index.js.map +1 -1
- package/lib/module.js +10 -5
- package/lib/module.js.map +1 -1
- package/lib/transform/Entrypoint.js +8 -3
- package/lib/transform/Entrypoint.js.map +1 -1
- package/lib/transform/actions/BaseAction.js +2 -1
- package/lib/transform/actions/BaseAction.js.map +1 -1
- package/lib/transform/actions/actionRunner.js +2 -2
- package/lib/transform/actions/actionRunner.js.map +1 -1
- package/lib/transform/actions/types.js.map +1 -1
- package/lib/transform/generators/processEntrypoint.js +5 -1
- package/lib/transform/generators/processEntrypoint.js.map +1 -1
- package/lib/transform/generators/workflow.js +10 -0
- package/lib/transform/generators/workflow.js.map +1 -1
- package/lib/transform/helpers/loadWywOptions.js +1 -0
- package/lib/transform/helpers/loadWywOptions.js.map +1 -1
- package/lib/transform/types.js.map +1 -1
- package/lib/transform.js +45 -23
- package/lib/transform.js.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/TransformDiagnostics.js +20 -0
- package/lib/utils/TransformDiagnostics.js.map +1 -0
- package/lib/utils/TransformMetadata.js +27 -1
- package/lib/utils/TransformMetadata.js.map +1 -1
- package/lib/utils/collectTemplateDependencies.js +9 -0
- package/lib/utils/collectTemplateDependencies.js.map +1 -1
- package/package.json +3 -3
- package/types/cache.d.ts +7 -0
- package/types/cache.js +59 -3
- package/types/index.d.ts +4 -2
- package/types/index.js +6 -1
- package/types/module.js +8 -3
- package/types/plugins/collector.d.ts +4 -1
- package/types/transform/Entrypoint.d.ts +1 -1
- package/types/transform/Entrypoint.js +8 -3
- package/types/transform/actions/BaseAction.d.ts +2 -1
- package/types/transform/actions/BaseAction.js +3 -1
- package/types/transform/actions/actionRunner.js +2 -2
- package/types/transform/actions/types.d.ts +4 -0
- package/types/transform/generators/processEntrypoint.js +4 -1
- package/types/transform/generators/workflow.js +8 -0
- package/types/transform/helpers/loadWywOptions.js +1 -0
- package/types/transform/types.d.ts +1 -0
- package/types/transform.js +47 -23
- package/types/types.d.ts +4 -1
- package/types/utils/TransformDiagnostics.d.ts +9 -0
- package/types/utils/TransformDiagnostics.js +15 -0
- package/types/utils/TransformMetadata.d.ts +22 -4
- package/types/utils/TransformMetadata.js +24 -1
- package/types/utils/collectTemplateDependencies.js +9 -0
package/lib/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","names":["_fs","_interopRequireDefault","require","_module","_path","_vm","_tsInvariant","_shared","_Entrypoint","_Entrypoint2","_UnprocessedEntrypointError","_importOverrides","_parseRequest","_createVmContext","e","__esModule","default","CJS_DEFAULT_CONDITIONS","expandConditions","conditionNames","result","Set","name","d","add","isBarePackageSubpath","id","startsWith","path","isAbsolute","split","length","includes","DefaultModuleImplementation","exports","NativeModule","builtins","assert","buffer","child_process","cluster","console","constants","crypto","dgram","dns","domain","events","fs","http","https","module","net","os","punycode","process","querystring","readline","repl","stream","string_decoder","sys","timers","tls","tty","url","util","vm","zlib","VITE_VIRTUAL_PREFIX","REACT_REFRESH_VIRTUAL_ID","reactRefreshRuntime","createSignatureFunctionForTransform","NOOP","browserOnlyEvalHintTriggers","getBrowserOnlyEvalHint","error","message","Error","String","looksLikeBrowserOnly","some","trigger","join","warnedUnknownImportsByServices","WeakMap","emitWarning","services","warn","getWarnedUnknownImports","cached","get","created","set","getUncached","test","cachedSet","has","filter","t","resolve","resolved","resolveDependency","invariant","defaultImportLoaders","raw","Module","callstack","isEvaluated","Object","assign","dependencies","push","debug","dependency","source","loaded","loadByImportLoaders","handled","value","entrypoint","getEntrypoint","only","evaluated","isSuperSet","evaluatedOnly","m","createChild","evaluate","ensure","bind","entrypointRef","constructor","parentModule","moduleImpl","_parentModule$ignored","_entrypoint$ignored","cache","isFeatureEnabled","options","pluginOptions","features","WeakRef","idx","filename","log","extend","parentIsIgnored","ignored","extensions","deref","assertTransformed","evaluatedCreated","supersededWith","createEvaluated","transformedCode","stripQueryAndHash","JSON","parse","context","teardown","createVmContext","__wyw_dynamic_import","__dirname","dirname","overrideContext","script","Script","runInContext","isUnprocessedEntrypointError","EvalError","baseMessage","hint","_entrypoint$evaluated","strippedFilename","extension","extname","newEntrypoint","readFileSync","stack","getStack","uncachedExports","reprocessOnly","_entrypoint$evaluated2","_entrypoint$only","_entrypoint$evaluated3","evaluatedExports","mergeOnly","code","Entrypoint","createRoot","resolveWithConditions","parent","conditions","resolveOptions","undefined","shouldRetryWithExtensions","_resolveFilename","ext","getDependency","Promise","_extensions","added","_override$unknown","forEach","strippedId","paths","_nodeModulePaths","isFileSpecifier","endsWith","existsSync","slice","root","keyInfo","toImportKey","override","getImportOverride","importOverrides","key","policy","unknown","mock","shouldWarn","finalResolved","resolveMockSpecifier","importer","_message","errorMessage","map","item","Boolean","warnedUnknownImports","stringify","applyImportOverrideToOnly","request","importLoaders","query","hash","parseRequest","params","URLSearchParams","matchedKey","Array","from","keys","find","loader","importerDir","toUrl","relative","replace","posix","sep","readFile"],"sources":["../src/module.ts"],"sourcesContent":["/**\n * This is a custom implementation for the module system for evaluating code,\n * used for resolving values for dependencies interpolated in `css` or `styled`.\n *\n * This serves 2 purposes:\n * - Avoid leakage from evaluated code to module cache in current context, e.g. `babel-register`\n * - Allow us to invalidate the module cache without affecting other stuff, necessary for rebuilds\n *\n * We also use it to transpile the code with Babel by default.\n * We also store source maps for it to provide correct error stacktraces.\n *\n */\n\nimport fs from 'fs';\nimport NativeModule from 'module';\nimport path from 'path';\nimport vm from 'vm';\n\nimport { invariant } from 'ts-invariant';\n\nimport {\n isFeatureEnabled,\n type Debugger,\n type ImportLoaderContext,\n type ImportLoaders,\n} from '@wyw-in-js/shared';\n\nimport './utils/dispose-polyfill';\nimport type { TransformCacheCollection } from './cache';\nimport { Entrypoint } from './transform/Entrypoint';\nimport {\n getStack,\n isSuperSet,\n mergeOnly,\n} from './transform/Entrypoint.helpers';\nimport type { IEntrypointDependency } from './transform/Entrypoint.types';\nimport type { IEvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';\nimport { isUnprocessedEntrypointError } from './transform/actions/UnprocessedEntrypointError';\nimport type { Services } from './transform/types';\nimport {\n applyImportOverrideToOnly,\n getImportOverride,\n resolveMockSpecifier,\n toImportKey,\n} from './utils/importOverrides';\nimport { parseRequest, stripQueryAndHash } from './utils/parseRequest';\nimport { createVmContext } from './vm/createVmContext';\n\ntype HiddenModuleMembers = {\n _extensions: Record<string, () => void>;\n _resolveFilename: (\n id: string,\n options: { filename: string; id: string; paths: string[] },\n isMain?: boolean,\n resolveOptions?: { conditions?: Set<string> }\n ) => string;\n _nodeModulePaths(filename: string): string[];\n};\n\nconst CJS_DEFAULT_CONDITIONS = ['require', 'node', 'default'] as const;\n\nfunction expandConditions(conditionNames: string[]): Set<string> {\n const result = new Set<string>();\n for (const name of conditionNames) {\n if (name === '...') {\n for (const d of CJS_DEFAULT_CONDITIONS) result.add(d);\n } else {\n result.add(name);\n }\n }\n return result;\n}\n\nfunction isBarePackageSubpath(id: string): boolean {\n if (id.startsWith('.') || path.isAbsolute(id)) {\n return false;\n }\n\n if (id.startsWith('@')) {\n return id.split('/').length > 2;\n }\n\n return id.includes('/');\n}\n\nexport const DefaultModuleImplementation = NativeModule as typeof NativeModule &\n HiddenModuleMembers;\n\n// Supported node builtins based on the modules polyfilled by webpack\n// `true` means module is polyfilled, `false` means module is empty\nconst builtins = {\n assert: true,\n buffer: true,\n child_process: false,\n cluster: false,\n console: true,\n constants: true,\n crypto: true,\n dgram: false,\n dns: false,\n domain: true,\n events: true,\n fs: false,\n http: true,\n https: true,\n module: false,\n net: false,\n os: true,\n path: true,\n punycode: true,\n process: true,\n querystring: true,\n readline: false,\n repl: false,\n stream: true,\n string_decoder: true,\n sys: true,\n timers: true,\n tls: false,\n tty: true,\n url: true,\n util: true,\n vm: true,\n zlib: true,\n};\n\nconst VITE_VIRTUAL_PREFIX = '/@';\nconst REACT_REFRESH_VIRTUAL_ID = '/@react-refresh';\nconst reactRefreshRuntime = {\n createSignatureFunctionForTransform: () => () => {},\n};\n\nconst NOOP = () => {};\n\nconst browserOnlyEvalHintTriggers = [\n 'window is not defined',\n \"evaluating 'window\",\n 'document is not defined',\n \"evaluating 'document\",\n 'navigator is not defined',\n \"evaluating 'navigator\",\n 'self is not defined',\n \"evaluating 'self\",\n];\n\nconst getBrowserOnlyEvalHint = (error: unknown): string | null => {\n const message = error instanceof Error ? error.message : String(error);\n const looksLikeBrowserOnly = browserOnlyEvalHintTriggers.some((trigger) =>\n message.includes(trigger)\n );\n if (!looksLikeBrowserOnly) return null;\n\n return [\n '',\n '[wyw-in-js] Evaluation hint:',\n 'This usually means browser-only code ran during build-time evaluation.',\n 'Move browser-only initialization out of evaluated modules, or mock the import via `importOverrides`.',\n \"Example: importOverrides: { 'msw/browser': { mock: './src/__mocks__/msw-browser.js' } }\",\n ].join('\\n');\n};\n\nconst warnedUnknownImportsByServices = new WeakMap<Services, Set<string>>();\n\nfunction emitWarning(services: Services, message: string) {\n if (services.emitWarning) {\n services.emitWarning(message);\n return;\n }\n\n // eslint-disable-next-line no-console\n console.warn(message);\n}\n\nfunction getWarnedUnknownImports(services: Services): Set<string> {\n const cached = warnedUnknownImportsByServices.get(services);\n if (cached) {\n return cached;\n }\n\n const created = new Set<string>();\n warnedUnknownImportsByServices.set(services, created);\n return created;\n}\n\nfunction getUncached(cached: string | string[], test: string[]): string[] {\n const cachedSet = new Set(\n typeof cached === 'string' ? cached.split(',') : cached\n );\n\n if (cachedSet.has('*')) {\n return [];\n }\n\n return test.filter((t) => !cachedSet.has(t));\n}\n\nfunction resolve(\n this: { resolveDependency: (id: string) => IEntrypointDependency },\n id: string\n): string {\n const { resolved } = this.resolveDependency(id);\n invariant(resolved, `Unable to resolve \"${id}\"`);\n return resolved;\n}\n\nconst defaultImportLoaders: ImportLoaders = {\n raw: 'raw',\n url: 'url',\n};\n\nexport class Module {\n public readonly callstack: string[] = [];\n\n public readonly debug: Debugger;\n\n public readonly dependencies: string[];\n\n public readonly extensions: string[];\n\n public readonly filename: string;\n\n public id: string;\n\n public readonly idx: string;\n\n public readonly ignored: boolean;\n\n public isEvaluated: boolean = false;\n\n public readonly parentIsIgnored: boolean;\n\n public require: {\n (id: string): unknown;\n ensure: () => void;\n resolve: (id: string) => string;\n } = Object.assign(\n (id: string) => {\n if (id === REACT_REFRESH_VIRTUAL_ID) {\n this.dependencies.push(id);\n this.debug('require', `vite virtual '${id}'`);\n return reactRefreshRuntime;\n }\n\n if (id.startsWith(VITE_VIRTUAL_PREFIX)) {\n this.dependencies.push(id);\n this.debug('require', `vite virtual '${id}'`);\n return {};\n }\n\n if (id in builtins) {\n // The module is in the allowed list of builtin node modules\n // Ideally we should prevent importing them, but webpack polyfills some\n // So we check for the list of polyfills to determine which ones to support\n if (builtins[id as keyof typeof builtins]) {\n this.debug('require', `builtin '${id}'`);\n return require(id);\n }\n\n return null;\n }\n\n // Resolve module id (and filename) relatively to parent module\n const dependency = this.resolveDependency(id);\n if (dependency.resolved === id && !path.isAbsolute(id)) {\n // The module is a builtin node modules, but not in the allowed list\n throw new Error(\n `Unable to import \"${id}\". Importing Node builtins is not supported in the sandbox.`\n );\n }\n\n invariant(\n dependency.resolved,\n `Dependency ${dependency.source} cannot be resolved`\n );\n\n const loaded = this.loadByImportLoaders(id, dependency.resolved);\n if (loaded.handled) {\n this.dependencies.push(id);\n this.debug('require', `${id} -> ${dependency.resolved} (loader)`);\n return loaded.value;\n }\n\n this.dependencies.push(id);\n\n this.debug('require', `${id} -> ${dependency.resolved}`);\n\n const entrypoint = this.getEntrypoint(\n dependency.resolved,\n dependency.only,\n this.debug\n );\n\n if (entrypoint === null) {\n return dependency.resolved;\n }\n\n if (\n entrypoint.evaluated ||\n isSuperSet(entrypoint.evaluatedOnly, dependency.only)\n ) {\n return entrypoint.exports;\n }\n\n const m = this.createChild(entrypoint);\n m.evaluate();\n\n return entrypoint.exports;\n },\n {\n ensure: NOOP,\n resolve: resolve.bind(this),\n }\n );\n\n public resolve = resolve.bind(this);\n\n private cache: TransformCacheCollection;\n\n #entrypointRef: WeakRef<Entrypoint> | Entrypoint;\n\n constructor(\n private services: Services,\n entrypoint: Entrypoint,\n parentModule?: Module,\n private moduleImpl: HiddenModuleMembers = DefaultModuleImplementation\n ) {\n this.cache = services.cache;\n this.#entrypointRef = isFeatureEnabled(\n services.options.pluginOptions.features,\n 'useWeakRefInEval',\n entrypoint.name\n )\n ? new WeakRef(entrypoint)\n : entrypoint;\n this.idx = entrypoint.idx;\n this.id = entrypoint.name;\n this.filename = entrypoint.name;\n this.dependencies = [];\n this.debug = entrypoint.log.extend('module');\n this.parentIsIgnored = parentModule?.ignored ?? false;\n this.ignored = entrypoint.ignored ?? this.parentIsIgnored;\n\n if (parentModule) {\n this.callstack = [entrypoint.name, ...parentModule.callstack];\n } else {\n this.callstack = [entrypoint.name];\n }\n\n this.extensions = services.options.pluginOptions.extensions;\n\n this.debug('init', entrypoint.name);\n }\n\n public get exports() {\n return this.entrypoint.exports;\n }\n\n public set exports(value) {\n this.entrypoint.exports = value;\n\n this.debug('the whole exports was overridden with %O', value);\n }\n\n protected get entrypoint(): Entrypoint {\n const entrypoint =\n this.#entrypointRef instanceof WeakRef\n ? this.#entrypointRef.deref()\n : this.#entrypointRef;\n invariant(entrypoint, `Module ${this.idx} is disposed`);\n return entrypoint;\n }\n\n evaluate(): void {\n const { entrypoint } = this;\n entrypoint.assertTransformed();\n\n const cached = this.cache.get('entrypoints', entrypoint.name)!;\n let evaluatedCreated = false;\n if (!entrypoint.supersededWith) {\n this.cache.add(\n 'entrypoints',\n entrypoint.name,\n entrypoint.createEvaluated()\n );\n evaluatedCreated = true;\n }\n\n const { transformedCode: source } = entrypoint;\n const { pluginOptions } = this.services.options;\n\n if (!source) {\n this.debug(`evaluate`, 'there is nothing to evaluate');\n return;\n }\n\n if (this.isEvaluated) {\n this.debug('evaluate', `is already evaluated`);\n return;\n }\n\n this.debug('evaluate');\n this.debug.extend('source')('%s', source);\n\n this.isEvaluated = true;\n\n const filename = stripQueryAndHash(this.filename);\n\n if (/\\.json$/.test(filename)) {\n // For JSON files, parse it to a JS object similar to Node\n this.exports = JSON.parse(source);\n return;\n }\n\n const { context, teardown } = createVmContext(\n filename,\n pluginOptions.features,\n {\n module: this,\n exports: entrypoint.exports,\n require: this.require,\n __wyw_dynamic_import: async (id: unknown) => this.require(String(id)),\n __dirname: path.dirname(filename),\n },\n pluginOptions.overrideContext\n );\n\n try {\n const script = new vm.Script(\n `(function (exports) { ${source}\\n})(exports);`,\n {\n filename,\n }\n );\n\n script.runInContext(context);\n } catch (e) {\n this.isEvaluated = false;\n if (evaluatedCreated) {\n this.cache.add('entrypoints', entrypoint.name, cached);\n }\n\n if (isUnprocessedEntrypointError(e)) {\n // It will be handled by evalFile scenario\n throw e;\n }\n\n if (e instanceof EvalError) {\n this.debug('%O', e);\n\n throw e;\n }\n\n this.debug('%O\\n%O', e, this.callstack);\n const baseMessage = `${(e as Error).message} in${this.callstack.join(\n '\\n| '\n )}\\n`;\n const hint = getBrowserOnlyEvalHint(e);\n\n throw new EvalError(hint ? `${baseMessage}${hint}\\n` : baseMessage);\n } finally {\n teardown();\n }\n }\n\n getEntrypoint(\n filename: string,\n only: string[],\n log: Debugger\n ): Entrypoint | IEvaluatedEntrypoint | null {\n const strippedFilename = stripQueryAndHash(filename);\n const extension = path.extname(strippedFilename);\n if (extension !== '.json' && !this.extensions.includes(extension)) {\n return null;\n }\n\n const entrypoint = this.cache.get('entrypoints', filename);\n if (entrypoint && isSuperSet(entrypoint.evaluatedOnly ?? [], only)) {\n log('✅ file has been already evaluated');\n return entrypoint;\n }\n\n if (entrypoint?.ignored) {\n log(\n '✅ file has been ignored during prepare stage. Original code will be used'\n );\n return entrypoint;\n }\n\n if (this.ignored) {\n log(\n '✅ one of the parent files has been ignored during prepare stage. Original code will be used'\n );\n\n const newEntrypoint = this.entrypoint.createChild(\n filename,\n ['*'],\n fs.readFileSync(strippedFilename, 'utf-8')\n );\n\n if (newEntrypoint === 'loop') {\n const stack = getStack(this.entrypoint);\n throw new Error(\n `Circular dependency detected: ${stack.join(' -> ')} -> ${filename}`\n );\n }\n\n return newEntrypoint;\n }\n\n let uncachedExports: string[] | null = null;\n let reprocessOnly: string[] = only;\n // Requested file can be already prepared for evaluation on the stage 1\n if (only && entrypoint) {\n const evaluatedExports =\n entrypoint.evaluatedOnly?.length !== 0\n ? entrypoint.evaluatedOnly\n : entrypoint.only ?? [];\n uncachedExports = getUncached(evaluatedExports, only);\n if (uncachedExports.length === 0) {\n log('✅ ready for evaluation');\n return entrypoint;\n }\n\n if (entrypoint.evaluatedOnly?.length) {\n reprocessOnly = mergeOnly(evaluatedExports, only);\n }\n\n log(\n '❌ file has been processed during prepare stage but %o is not evaluated yet (evaluated: %o)',\n uncachedExports,\n evaluatedExports\n );\n } else {\n log('❌ file has not been processed during prepare stage');\n }\n\n // If code wasn't extracted from cache, it indicates that we were unable\n // to process some of the imports on stage1. Let's try to reprocess.\n const code = fs.readFileSync(strippedFilename, 'utf-8');\n const newEntrypoint = Entrypoint.createRoot(\n this.services,\n filename,\n reprocessOnly,\n code\n );\n\n if (newEntrypoint.evaluated) {\n log('✅ file has been already evaluated');\n return newEntrypoint;\n }\n\n if (newEntrypoint.ignored) {\n log(\n '✅ file has been ignored during prepare stage. Original code will be used'\n );\n return newEntrypoint;\n }\n\n return newEntrypoint;\n }\n\n private resolveWithConditions(\n id: string,\n parent: { id: string; filename: string; paths: string[] },\n conditions?: Set<string>\n ): string {\n const resolveOptions = conditions ? { conditions } : undefined;\n const shouldRetryWithExtensions =\n conditions &&\n path.extname(id) === '' &&\n (id.startsWith('.') || path.isAbsolute(id) || isBarePackageSubpath(id));\n try {\n return this.moduleImpl._resolveFilename(\n id,\n parent,\n false,\n resolveOptions\n );\n } catch (e: unknown) {\n if (\n shouldRetryWithExtensions &&\n e instanceof Error &&\n (e as NodeJS.ErrnoException).code === 'MODULE_NOT_FOUND'\n ) {\n // Extensionless subpath requests (e.g. \"pkg/src/*\" or \"./src/*\") may\n // resolve to extensionless targets via conditional exports. Retry with\n // each known extension, but never rewrite already explicit specifiers.\n for (const ext of this.extensions) {\n try {\n return this.moduleImpl._resolveFilename(\n id + ext,\n parent,\n false,\n resolveOptions\n );\n } catch {\n // try next extension\n }\n }\n }\n throw e;\n }\n }\n\n resolveDependency = (id: string): IEntrypointDependency => {\n const cached = this.entrypoint.getDependency(id);\n invariant(!(cached instanceof Promise), 'Dependency is not resolved yet');\n\n if (cached) {\n return cached;\n }\n\n if (!this.ignored) {\n this.debug(\n '❌ import has not been resolved during prepare stage. Fallback to Node.js resolver'\n );\n }\n\n const extensions = this.moduleImpl._extensions;\n const added: string[] = [];\n\n try {\n // Check for supported extensions\n this.extensions.forEach((ext) => {\n if (ext in extensions) {\n return;\n }\n\n // When an extension is not supported, add it\n // And keep track of it to clean it up after resolving\n // Use noop for the transform function since we handle it\n extensions[ext] = NOOP;\n added.push(ext);\n });\n\n const { filename } = this;\n const strippedId = stripQueryAndHash(id);\n\n const parent = {\n id: filename,\n filename,\n paths: this.moduleImpl._nodeModulePaths(path.dirname(filename)),\n };\n const { conditionNames } = this.services.options.pluginOptions;\n const conditions = conditionNames?.length\n ? expandConditions(conditionNames)\n : undefined;\n\n let resolved = this.resolveWithConditions(strippedId, parent, conditions);\n\n const isFileSpecifier =\n strippedId.startsWith('.') || path.isAbsolute(strippedId);\n\n if (\n isFileSpecifier &&\n path.extname(strippedId) === '' &&\n resolved.endsWith('.cjs') &&\n fs.existsSync(`${resolved.slice(0, -4)}.js`)\n ) {\n // When both `.cjs` and `.js` exist for an extensionless specifier, the\n // resolver may pick `.cjs` depending on the environment/extensions.\n // Prefer `.js` to keep resolved paths stable (e.g. importOverrides keys).\n resolved = `${resolved.slice(0, -4)}.js`;\n }\n\n const { root } = this.services.options;\n const keyInfo = toImportKey({\n source: id,\n resolved,\n root,\n });\n\n const override = getImportOverride(\n this.services.options.pluginOptions.importOverrides,\n keyInfo.key\n );\n\n const policy = override?.unknown ?? (override?.mock ? 'allow' : 'warn');\n const shouldWarn = !this.ignored && policy === 'warn';\n\n let finalResolved = resolved;\n if (override?.mock) {\n try {\n finalResolved = resolveMockSpecifier({\n mock: override.mock,\n importer: filename,\n root,\n stack: this.callstack,\n });\n } catch (e) {\n const errorMessage = String((e as Error)?.message ?? e);\n throw new Error(\n `[wyw-in-js] Failed to resolve import mock for \"${keyInfo.key}\" (${id} from ${filename}): ${errorMessage}`\n );\n }\n }\n\n if (policy === 'error') {\n throw new Error(\n [\n `[wyw-in-js] Unknown import reached during eval (Node resolver fallback)`,\n ``,\n `importer: ${filename}`,\n `source: ${id}`,\n `resolved: ${resolved}`,\n override?.mock\n ? `mock: ${override.mock} -> ${finalResolved}`\n : ``,\n ``,\n `callstack:`,\n ...this.callstack.map((item) => ` ${item}`),\n ``,\n `config key: ${keyInfo.key}`,\n ]\n .filter(Boolean)\n .join('\\n')\n );\n }\n\n const warnedUnknownImports = getWarnedUnknownImports(this.services);\n\n if (shouldWarn && !warnedUnknownImports.has(keyInfo.key)) {\n warnedUnknownImports.add(keyInfo.key);\n emitWarning(\n this.services,\n [\n `[wyw-in-js] Unknown import reached during eval (Node resolver fallback)`,\n ``,\n `importer: ${filename}`,\n `source: ${id}`,\n `resolved: ${resolved}`,\n override?.mock\n ? `mock: ${override.mock} -> ${finalResolved}`\n : ``,\n ``,\n `callstack:`,\n ...this.callstack.map((item) => ` ${item}`),\n ``,\n `config key: ${keyInfo.key}`,\n `hint: add { importOverrides: { ${JSON.stringify(\n keyInfo.key\n )}: { unknown: 'allow' } } } to silence warnings, or use { mock } / { noShake: true } overrides.`,\n ]\n .filter(Boolean)\n .join('\\n')\n );\n }\n\n return {\n source: id,\n only: applyImportOverrideToOnly(['*'], override),\n resolved: finalResolved,\n };\n } finally {\n // Cleanup the extensions we added to restore previous behaviour\n added.forEach((ext) => delete extensions[ext]);\n }\n };\n\n protected createChild(entrypoint: Entrypoint): Module {\n return new Module(this.services, entrypoint, this, this.moduleImpl);\n }\n\n private loadByImportLoaders(\n request: string,\n resolved: string\n ): { handled: boolean; value: unknown } {\n const { pluginOptions } = this.services.options;\n const importLoaders =\n pluginOptions.importLoaders === undefined\n ? defaultImportLoaders\n : { ...defaultImportLoaders, ...pluginOptions.importLoaders };\n\n const { query, hash } = parseRequest(request);\n if (!query) return { handled: false, value: undefined };\n\n const params = new URLSearchParams(query);\n const matchedKey = Array.from(params.keys()).find(\n (key) => importLoaders[key] !== undefined && importLoaders[key] !== false\n );\n\n if (!matchedKey) return { handled: false, value: undefined };\n\n const loader = importLoaders[matchedKey];\n\n const filename = stripQueryAndHash(resolved);\n const importer = stripQueryAndHash(this.filename);\n const importerDir = path.dirname(importer);\n\n const toUrl = () => {\n const relative = path\n .relative(importerDir, filename)\n .replace(/\\\\/g, path.posix.sep);\n\n if (relative.startsWith('.') || path.isAbsolute(relative)) {\n return relative;\n }\n\n return `./${relative}`;\n };\n\n const readFile = () => fs.readFileSync(filename, 'utf-8');\n\n const context: ImportLoaderContext = {\n importer,\n request,\n resolved,\n filename,\n query,\n hash,\n emitWarning: (message) => emitWarning(this.services, message),\n readFile,\n toUrl,\n };\n\n if (loader === 'raw') {\n return { handled: true, value: context.readFile() };\n }\n\n if (loader === 'url') {\n return { handled: true, value: context.toUrl() };\n }\n\n if (typeof loader === 'function') {\n return { handled: true, value: loader(context) };\n }\n\n return { handled: false, value: undefined };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"module.js","names":["_fs","_interopRequireDefault","require","_module","_path","_vm","_tsInvariant","_shared","_Entrypoint","_Entrypoint2","_UnprocessedEntrypointError","_importOverrides","_parseRequest","_createVmContext","e","__esModule","default","CJS_DEFAULT_CONDITIONS","expandConditions","conditionNames","result","Set","name","d","add","isBarePackageSubpath","id","startsWith","path","isAbsolute","split","length","includes","DefaultModuleImplementation","exports","NativeModule","builtins","assert","buffer","child_process","cluster","console","constants","crypto","dgram","dns","domain","events","fs","http","https","module","net","os","punycode","process","querystring","readline","repl","stream","string_decoder","sys","timers","tls","tty","url","util","vm","zlib","VITE_VIRTUAL_PREFIX","REACT_REFRESH_VIRTUAL_ID","reactRefreshRuntime","createSignatureFunctionForTransform","NOOP","browserOnlyEvalHintTriggers","getBrowserOnlyEvalHint","error","message","Error","String","looksLikeBrowserOnly","some","trigger","join","warnedUnknownImportsByServices","WeakMap","emitWarning","services","warn","getWarnedUnknownImports","cached","get","created","set","getUncached","test","cachedSet","has","filter","t","resolve","resolved","resolveDependency","invariant","defaultImportLoaders","raw","Module","callstack","isEvaluated","Object","assign","dependencies","push","debug","dependency","source","loaded","loadByImportLoaders","handled","value","entrypoint","getEntrypoint","only","evaluated","isSuperSet","evaluatedOnly","m","createChild","evaluate","ensure","bind","entrypointRef","constructor","parentModule","moduleImpl","_parentModule$ignored","_entrypoint$ignored","cache","isFeatureEnabled","options","pluginOptions","features","WeakRef","idx","filename","log","extend","parentIsIgnored","ignored","extensions","deref","assertTransformed","evaluatedCreated","supersededWith","createEvaluated","transformedCode","stripQueryAndHash","JSON","parse","context","teardown","createVmContext","__wyw_dynamic_import","__dirname","dirname","overrideContext","script","Script","runInContext","isUnprocessedEntrypointError","EvalError","baseMessage","hint","_entrypoint$evaluated","_entrypoint","strippedFilename","extension","extname","checkFreshness","undefined","newEntrypoint","readFileSync","stack","getStack","uncachedExports","reprocessOnly","_entrypoint$evaluated2","_entrypoint$only","_entrypoint$evaluated3","evaluatedExports","mergeOnly","code","Entrypoint","createRoot","resolveWithConditions","parent","conditions","resolveOptions","shouldRetryWithExtensions","_resolveFilename","ext","getDependency","Promise","_extensions","added","_override$unknown","forEach","strippedId","paths","_nodeModulePaths","isFileSpecifier","endsWith","existsSync","slice","root","keyInfo","toImportKey","override","getImportOverride","importOverrides","key","policy","unknown","mock","shouldWarn","finalResolved","resolveMockSpecifier","importer","_message","errorMessage","map","item","Boolean","warnedUnknownImports","stringify","applyImportOverrideToOnly","request","importLoaders","query","hash","parseRequest","params","URLSearchParams","matchedKey","Array","from","keys","find","loader","importerDir","toUrl","relative","replace","posix","sep","readFile"],"sources":["../src/module.ts"],"sourcesContent":["/**\n * This is a custom implementation for the module system for evaluating code,\n * used for resolving values for dependencies interpolated in `css` or `styled`.\n *\n * This serves 2 purposes:\n * - Avoid leakage from evaluated code to module cache in current context, e.g. `babel-register`\n * - Allow us to invalidate the module cache without affecting other stuff, necessary for rebuilds\n *\n * We also use it to transpile the code with Babel by default.\n * We also store source maps for it to provide correct error stacktraces.\n *\n */\n\nimport fs from 'fs';\nimport NativeModule from 'module';\nimport path from 'path';\nimport vm from 'vm';\n\nimport { invariant } from 'ts-invariant';\n\nimport {\n isFeatureEnabled,\n type Debugger,\n type ImportLoaderContext,\n type ImportLoaders,\n} from '@wyw-in-js/shared';\n\nimport './utils/dispose-polyfill';\nimport type { TransformCacheCollection } from './cache';\nimport { Entrypoint } from './transform/Entrypoint';\nimport {\n getStack,\n isSuperSet,\n mergeOnly,\n} from './transform/Entrypoint.helpers';\nimport type { IEntrypointDependency } from './transform/Entrypoint.types';\nimport type { IEvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';\nimport { isUnprocessedEntrypointError } from './transform/actions/UnprocessedEntrypointError';\nimport type { Services } from './transform/types';\nimport {\n applyImportOverrideToOnly,\n getImportOverride,\n resolveMockSpecifier,\n toImportKey,\n} from './utils/importOverrides';\nimport { parseRequest, stripQueryAndHash } from './utils/parseRequest';\nimport { createVmContext } from './vm/createVmContext';\n\ntype HiddenModuleMembers = {\n _extensions: Record<string, () => void>;\n _resolveFilename: (\n id: string,\n options: { filename: string; id: string; paths: string[] },\n isMain?: boolean,\n resolveOptions?: { conditions?: Set<string> }\n ) => string;\n _nodeModulePaths(filename: string): string[];\n};\n\nconst CJS_DEFAULT_CONDITIONS = ['require', 'node', 'default'] as const;\n\nfunction expandConditions(conditionNames: string[]): Set<string> {\n const result = new Set<string>();\n for (const name of conditionNames) {\n if (name === '...') {\n for (const d of CJS_DEFAULT_CONDITIONS) result.add(d);\n } else {\n result.add(name);\n }\n }\n return result;\n}\n\nfunction isBarePackageSubpath(id: string): boolean {\n if (id.startsWith('.') || path.isAbsolute(id)) {\n return false;\n }\n\n if (id.startsWith('@')) {\n return id.split('/').length > 2;\n }\n\n return id.includes('/');\n}\n\nexport const DefaultModuleImplementation = NativeModule as typeof NativeModule &\n HiddenModuleMembers;\n\n// Supported node builtins based on the modules polyfilled by webpack\n// `true` means module is polyfilled, `false` means module is empty\nconst builtins = {\n assert: true,\n buffer: true,\n child_process: false,\n cluster: false,\n console: true,\n constants: true,\n crypto: true,\n dgram: false,\n dns: false,\n domain: true,\n events: true,\n fs: false,\n http: true,\n https: true,\n module: false,\n net: false,\n os: true,\n path: true,\n punycode: true,\n process: true,\n querystring: true,\n readline: false,\n repl: false,\n stream: true,\n string_decoder: true,\n sys: true,\n timers: true,\n tls: false,\n tty: true,\n url: true,\n util: true,\n vm: true,\n zlib: true,\n};\n\nconst VITE_VIRTUAL_PREFIX = '/@';\nconst REACT_REFRESH_VIRTUAL_ID = '/@react-refresh';\nconst reactRefreshRuntime = {\n createSignatureFunctionForTransform: () => () => {},\n};\n\nconst NOOP = () => {};\n\nconst browserOnlyEvalHintTriggers = [\n 'window is not defined',\n \"evaluating 'window\",\n 'document is not defined',\n \"evaluating 'document\",\n 'navigator is not defined',\n \"evaluating 'navigator\",\n 'self is not defined',\n \"evaluating 'self\",\n];\n\nconst getBrowserOnlyEvalHint = (error: unknown): string | null => {\n const message = error instanceof Error ? error.message : String(error);\n const looksLikeBrowserOnly = browserOnlyEvalHintTriggers.some((trigger) =>\n message.includes(trigger)\n );\n if (!looksLikeBrowserOnly) return null;\n\n return [\n '',\n '[wyw-in-js] Evaluation hint:',\n 'This usually means browser-only code ran during build-time evaluation.',\n 'Move browser-only initialization out of evaluated modules, or mock the import via `importOverrides`.',\n \"Example: importOverrides: { 'msw/browser': { mock: './src/__mocks__/msw-browser.js' } }\",\n ].join('\\n');\n};\n\nconst warnedUnknownImportsByServices = new WeakMap<Services, Set<string>>();\n\nfunction emitWarning(services: Services, message: string) {\n if (services.emitWarning) {\n services.emitWarning(message);\n return;\n }\n\n // eslint-disable-next-line no-console\n console.warn(message);\n}\n\nfunction getWarnedUnknownImports(services: Services): Set<string> {\n const cached = warnedUnknownImportsByServices.get(services);\n if (cached) {\n return cached;\n }\n\n const created = new Set<string>();\n warnedUnknownImportsByServices.set(services, created);\n return created;\n}\n\nfunction getUncached(cached: string | string[], test: string[]): string[] {\n const cachedSet = new Set(\n typeof cached === 'string' ? cached.split(',') : cached\n );\n\n if (cachedSet.has('*')) {\n return [];\n }\n\n return test.filter((t) => !cachedSet.has(t));\n}\n\nfunction resolve(\n this: { resolveDependency: (id: string) => IEntrypointDependency },\n id: string\n): string {\n const { resolved } = this.resolveDependency(id);\n invariant(resolved, `Unable to resolve \"${id}\"`);\n return resolved;\n}\n\nconst defaultImportLoaders: ImportLoaders = {\n raw: 'raw',\n url: 'url',\n};\n\nexport class Module {\n public readonly callstack: string[] = [];\n\n public readonly debug: Debugger;\n\n public readonly dependencies: string[];\n\n public readonly extensions: string[];\n\n public readonly filename: string;\n\n public id: string;\n\n public readonly idx: string;\n\n public readonly ignored: boolean;\n\n public isEvaluated: boolean = false;\n\n public readonly parentIsIgnored: boolean;\n\n public require: {\n (id: string): unknown;\n ensure: () => void;\n resolve: (id: string) => string;\n } = Object.assign(\n (id: string) => {\n if (id === REACT_REFRESH_VIRTUAL_ID) {\n this.dependencies.push(id);\n this.debug('require', `vite virtual '${id}'`);\n return reactRefreshRuntime;\n }\n\n if (id.startsWith(VITE_VIRTUAL_PREFIX)) {\n this.dependencies.push(id);\n this.debug('require', `vite virtual '${id}'`);\n return {};\n }\n\n if (id in builtins) {\n // The module is in the allowed list of builtin node modules\n // Ideally we should prevent importing them, but webpack polyfills some\n // So we check for the list of polyfills to determine which ones to support\n if (builtins[id as keyof typeof builtins]) {\n this.debug('require', `builtin '${id}'`);\n return require(id);\n }\n\n return null;\n }\n\n // Resolve module id (and filename) relatively to parent module\n const dependency = this.resolveDependency(id);\n if (dependency.resolved === id && !path.isAbsolute(id)) {\n // The module is a builtin node modules, but not in the allowed list\n throw new Error(\n `Unable to import \"${id}\". Importing Node builtins is not supported in the sandbox.`\n );\n }\n\n invariant(\n dependency.resolved,\n `Dependency ${dependency.source} cannot be resolved`\n );\n\n const loaded = this.loadByImportLoaders(id, dependency.resolved);\n if (loaded.handled) {\n this.dependencies.push(id);\n this.debug('require', `${id} -> ${dependency.resolved} (loader)`);\n return loaded.value;\n }\n\n this.dependencies.push(id);\n\n this.debug('require', `${id} -> ${dependency.resolved}`);\n\n const entrypoint = this.getEntrypoint(\n dependency.resolved,\n dependency.only,\n this.debug\n );\n\n if (entrypoint === null) {\n return dependency.resolved;\n }\n\n if (\n entrypoint.evaluated ||\n isSuperSet(entrypoint.evaluatedOnly, dependency.only)\n ) {\n return entrypoint.exports;\n }\n\n const m = this.createChild(entrypoint);\n m.evaluate();\n\n return entrypoint.exports;\n },\n {\n ensure: NOOP,\n resolve: resolve.bind(this),\n }\n );\n\n public resolve = resolve.bind(this);\n\n private cache: TransformCacheCollection;\n\n #entrypointRef: WeakRef<Entrypoint> | Entrypoint;\n\n constructor(\n private services: Services,\n entrypoint: Entrypoint,\n parentModule?: Module,\n private moduleImpl: HiddenModuleMembers = DefaultModuleImplementation\n ) {\n this.cache = services.cache;\n this.#entrypointRef = isFeatureEnabled(\n services.options.pluginOptions.features,\n 'useWeakRefInEval',\n entrypoint.name\n )\n ? new WeakRef(entrypoint)\n : entrypoint;\n this.idx = entrypoint.idx;\n this.id = entrypoint.name;\n this.filename = entrypoint.name;\n this.dependencies = [];\n this.debug = entrypoint.log.extend('module');\n this.parentIsIgnored = parentModule?.ignored ?? false;\n this.ignored = entrypoint.ignored ?? this.parentIsIgnored;\n\n if (parentModule) {\n this.callstack = [entrypoint.name, ...parentModule.callstack];\n } else {\n this.callstack = [entrypoint.name];\n }\n\n this.extensions = services.options.pluginOptions.extensions;\n\n this.debug('init', entrypoint.name);\n }\n\n public get exports() {\n return this.entrypoint.exports;\n }\n\n public set exports(value) {\n this.entrypoint.exports = value;\n\n this.debug('the whole exports was overridden with %O', value);\n }\n\n protected get entrypoint(): Entrypoint {\n const entrypoint =\n this.#entrypointRef instanceof WeakRef\n ? this.#entrypointRef.deref()\n : this.#entrypointRef;\n invariant(entrypoint, `Module ${this.idx} is disposed`);\n return entrypoint;\n }\n\n evaluate(): void {\n const { entrypoint } = this;\n entrypoint.assertTransformed();\n\n const cached = this.cache.get('entrypoints', entrypoint.name)!;\n let evaluatedCreated = false;\n if (!entrypoint.supersededWith) {\n this.cache.add(\n 'entrypoints',\n entrypoint.name,\n entrypoint.createEvaluated()\n );\n evaluatedCreated = true;\n }\n\n const { transformedCode: source } = entrypoint;\n const { pluginOptions } = this.services.options;\n\n if (!source) {\n this.debug(`evaluate`, 'there is nothing to evaluate');\n return;\n }\n\n if (this.isEvaluated) {\n this.debug('evaluate', `is already evaluated`);\n return;\n }\n\n this.debug('evaluate');\n this.debug.extend('source')('%s', source);\n\n this.isEvaluated = true;\n\n const filename = stripQueryAndHash(this.filename);\n\n if (/\\.json$/.test(filename)) {\n // For JSON files, parse it to a JS object similar to Node\n this.exports = JSON.parse(source);\n return;\n }\n\n const { context, teardown } = createVmContext(\n filename,\n pluginOptions.features,\n {\n module: this,\n exports: entrypoint.exports,\n require: this.require,\n __wyw_dynamic_import: async (id: unknown) => this.require(String(id)),\n __dirname: path.dirname(filename),\n },\n pluginOptions.overrideContext\n );\n\n try {\n const script = new vm.Script(\n `(function (exports) { ${source}\\n})(exports);`,\n {\n filename,\n }\n );\n\n script.runInContext(context);\n } catch (e) {\n this.isEvaluated = false;\n if (evaluatedCreated) {\n this.cache.add('entrypoints', entrypoint.name, cached);\n }\n\n if (isUnprocessedEntrypointError(e)) {\n // It will be handled by evalFile scenario\n throw e;\n }\n\n if (e instanceof EvalError) {\n this.debug('%O', e);\n\n throw e;\n }\n\n this.debug('%O\\n%O', e, this.callstack);\n const baseMessage = `${(e as Error).message} in${this.callstack.join(\n '\\n| '\n )}\\n`;\n const hint = getBrowserOnlyEvalHint(e);\n\n throw new EvalError(hint ? `${baseMessage}${hint}\\n` : baseMessage);\n } finally {\n teardown();\n }\n }\n\n getEntrypoint(\n filename: string,\n only: string[],\n log: Debugger\n ): Entrypoint | IEvaluatedEntrypoint | null {\n const strippedFilename = stripQueryAndHash(filename);\n const extension = path.extname(strippedFilename);\n if (extension !== '.json' && !this.extensions.includes(extension)) {\n return null;\n }\n\n let entrypoint = this.cache.get('entrypoints', filename);\n if (entrypoint && isSuperSet(entrypoint.evaluatedOnly ?? [], only)) {\n if (this.cache.checkFreshness(filename, strippedFilename)) {\n entrypoint = undefined;\n }\n\n if (entrypoint) {\n log('✅ file has been already evaluated');\n return entrypoint;\n }\n }\n\n if (entrypoint?.ignored) {\n log(\n '✅ file has been ignored during prepare stage. Original code will be used'\n );\n return entrypoint;\n }\n\n if (this.ignored) {\n log(\n '✅ one of the parent files has been ignored during prepare stage. Original code will be used'\n );\n\n const newEntrypoint = this.entrypoint.createChild(\n filename,\n ['*'],\n fs.readFileSync(strippedFilename, 'utf-8')\n );\n\n if (newEntrypoint === 'loop') {\n const stack = getStack(this.entrypoint);\n throw new Error(\n `Circular dependency detected: ${stack.join(' -> ')} -> ${filename}`\n );\n }\n\n return newEntrypoint;\n }\n\n let uncachedExports: string[] | null = null;\n let reprocessOnly: string[] = only;\n // Requested file can be already prepared for evaluation on the stage 1\n if (only && entrypoint) {\n const evaluatedExports =\n entrypoint.evaluatedOnly?.length !== 0\n ? entrypoint.evaluatedOnly\n : entrypoint.only ?? [];\n uncachedExports = getUncached(evaluatedExports, only);\n if (uncachedExports.length === 0) {\n log('✅ ready for evaluation');\n return entrypoint;\n }\n\n if (entrypoint.evaluatedOnly?.length) {\n reprocessOnly = mergeOnly(evaluatedExports, only);\n }\n\n log(\n '❌ file has been processed during prepare stage but %o is not evaluated yet (evaluated: %o)',\n uncachedExports,\n evaluatedExports\n );\n } else {\n log('❌ file has not been processed during prepare stage');\n }\n\n // If code wasn't extracted from cache, it indicates that we were unable\n // to process some of the imports on stage1. Let's try to reprocess.\n const code = fs.readFileSync(strippedFilename, 'utf-8');\n const newEntrypoint = Entrypoint.createRoot(\n this.services,\n filename,\n reprocessOnly,\n code\n );\n\n if (newEntrypoint.evaluated) {\n log('✅ file has been already evaluated');\n return newEntrypoint;\n }\n\n if (newEntrypoint.ignored) {\n log(\n '✅ file has been ignored during prepare stage. Original code will be used'\n );\n return newEntrypoint;\n }\n\n return newEntrypoint;\n }\n\n private resolveWithConditions(\n id: string,\n parent: { id: string; filename: string; paths: string[] },\n conditions?: Set<string>\n ): string {\n const resolveOptions = conditions ? { conditions } : undefined;\n const shouldRetryWithExtensions =\n conditions &&\n path.extname(id) === '' &&\n (id.startsWith('.') || path.isAbsolute(id) || isBarePackageSubpath(id));\n try {\n return this.moduleImpl._resolveFilename(\n id,\n parent,\n false,\n resolveOptions\n );\n } catch (e: unknown) {\n if (\n shouldRetryWithExtensions &&\n e instanceof Error &&\n (e as NodeJS.ErrnoException).code === 'MODULE_NOT_FOUND'\n ) {\n // Extensionless subpath requests (e.g. \"pkg/src/*\" or \"./src/*\") may\n // resolve to extensionless targets via conditional exports. Retry with\n // each known extension, but never rewrite already explicit specifiers.\n for (const ext of this.extensions) {\n try {\n return this.moduleImpl._resolveFilename(\n id + ext,\n parent,\n false,\n resolveOptions\n );\n } catch {\n // try next extension\n }\n }\n }\n throw e;\n }\n }\n\n resolveDependency = (id: string): IEntrypointDependency => {\n const cached = this.entrypoint.getDependency(id);\n invariant(!(cached instanceof Promise), 'Dependency is not resolved yet');\n\n if (cached) {\n return cached;\n }\n\n if (!this.ignored) {\n this.debug(\n '❌ import has not been resolved during prepare stage. Fallback to Node.js resolver'\n );\n }\n\n const extensions = this.moduleImpl._extensions;\n const added: string[] = [];\n\n try {\n // Check for supported extensions\n this.extensions.forEach((ext) => {\n if (ext in extensions) {\n return;\n }\n\n // When an extension is not supported, add it\n // And keep track of it to clean it up after resolving\n // Use noop for the transform function since we handle it\n extensions[ext] = NOOP;\n added.push(ext);\n });\n\n const { filename } = this;\n const strippedId = stripQueryAndHash(id);\n\n const parent = {\n id: filename,\n filename,\n paths: this.moduleImpl._nodeModulePaths(path.dirname(filename)),\n };\n const { conditionNames } = this.services.options.pluginOptions;\n const conditions = conditionNames?.length\n ? expandConditions(conditionNames)\n : undefined;\n\n let resolved = this.resolveWithConditions(strippedId, parent, conditions);\n\n const isFileSpecifier =\n strippedId.startsWith('.') || path.isAbsolute(strippedId);\n\n if (\n isFileSpecifier &&\n path.extname(strippedId) === '' &&\n resolved.endsWith('.cjs') &&\n fs.existsSync(`${resolved.slice(0, -4)}.js`)\n ) {\n // When both `.cjs` and `.js` exist for an extensionless specifier, the\n // resolver may pick `.cjs` depending on the environment/extensions.\n // Prefer `.js` to keep resolved paths stable (e.g. importOverrides keys).\n resolved = `${resolved.slice(0, -4)}.js`;\n }\n\n const { root } = this.services.options;\n const keyInfo = toImportKey({\n source: id,\n resolved,\n root,\n });\n\n const override = getImportOverride(\n this.services.options.pluginOptions.importOverrides,\n keyInfo.key\n );\n\n const policy = override?.unknown ?? (override?.mock ? 'allow' : 'warn');\n const shouldWarn = !this.ignored && policy === 'warn';\n\n let finalResolved = resolved;\n if (override?.mock) {\n try {\n finalResolved = resolveMockSpecifier({\n mock: override.mock,\n importer: filename,\n root,\n stack: this.callstack,\n });\n } catch (e) {\n const errorMessage = String((e as Error)?.message ?? e);\n throw new Error(\n `[wyw-in-js] Failed to resolve import mock for \"${keyInfo.key}\" (${id} from ${filename}): ${errorMessage}`\n );\n }\n }\n\n if (policy === 'error') {\n throw new Error(\n [\n `[wyw-in-js] Unknown import reached during eval (Node resolver fallback)`,\n ``,\n `importer: ${filename}`,\n `source: ${id}`,\n `resolved: ${resolved}`,\n override?.mock\n ? `mock: ${override.mock} -> ${finalResolved}`\n : ``,\n ``,\n `callstack:`,\n ...this.callstack.map((item) => ` ${item}`),\n ``,\n `config key: ${keyInfo.key}`,\n ]\n .filter(Boolean)\n .join('\\n')\n );\n }\n\n const warnedUnknownImports = getWarnedUnknownImports(this.services);\n\n if (shouldWarn && !warnedUnknownImports.has(keyInfo.key)) {\n warnedUnknownImports.add(keyInfo.key);\n emitWarning(\n this.services,\n [\n `[wyw-in-js] Unknown import reached during eval (Node resolver fallback)`,\n ``,\n `importer: ${filename}`,\n `source: ${id}`,\n `resolved: ${resolved}`,\n override?.mock\n ? `mock: ${override.mock} -> ${finalResolved}`\n : ``,\n ``,\n `callstack:`,\n ...this.callstack.map((item) => ` ${item}`),\n ``,\n `config key: ${keyInfo.key}`,\n `hint: add { importOverrides: { ${JSON.stringify(\n keyInfo.key\n )}: { unknown: 'allow' } } } to silence warnings, or use { mock } / { noShake: true } overrides.`,\n ]\n .filter(Boolean)\n .join('\\n')\n );\n }\n\n return {\n source: id,\n only: applyImportOverrideToOnly(['*'], override),\n resolved: finalResolved,\n };\n } finally {\n // Cleanup the extensions we added to restore previous behaviour\n added.forEach((ext) => delete extensions[ext]);\n }\n };\n\n protected createChild(entrypoint: Entrypoint): Module {\n return new Module(this.services, entrypoint, this, this.moduleImpl);\n }\n\n private loadByImportLoaders(\n request: string,\n resolved: string\n ): { handled: boolean; value: unknown } {\n const { pluginOptions } = this.services.options;\n const importLoaders =\n pluginOptions.importLoaders === undefined\n ? defaultImportLoaders\n : { ...defaultImportLoaders, ...pluginOptions.importLoaders };\n\n const { query, hash } = parseRequest(request);\n if (!query) return { handled: false, value: undefined };\n\n const params = new URLSearchParams(query);\n const matchedKey = Array.from(params.keys()).find(\n (key) => importLoaders[key] !== undefined && importLoaders[key] !== false\n );\n\n if (!matchedKey) return { handled: false, value: undefined };\n\n const loader = importLoaders[matchedKey];\n\n const filename = stripQueryAndHash(resolved);\n const importer = stripQueryAndHash(this.filename);\n const importerDir = path.dirname(importer);\n\n const toUrl = () => {\n const relative = path\n .relative(importerDir, filename)\n .replace(/\\\\/g, path.posix.sep);\n\n if (relative.startsWith('.') || path.isAbsolute(relative)) {\n return relative;\n }\n\n return `./${relative}`;\n };\n\n const readFile = () => fs.readFileSync(filename, 'utf-8');\n\n const context: ImportLoaderContext = {\n importer,\n request,\n resolved,\n filename,\n query,\n hash,\n emitWarning: (message) => emitWarning(this.services, message),\n readFile,\n toUrl,\n };\n\n if (loader === 'raw') {\n return { handled: true, value: context.readFile() };\n }\n\n if (loader === 'url') {\n return { handled: true, value: context.toUrl() };\n }\n\n if (typeof loader === 'function') {\n return { handled: true, value: loader(context) };\n }\n\n return { handled: false, value: undefined };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,6 +15,7 @@ var _UnprocessedEntrypointError = require("./actions/UnprocessedEntrypointError"
|
|
|
15
15
|
var _parseRequest = require("../utils/parseRequest");
|
|
16
16
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
17
|
const EMPTY_FILE = '=== empty file ===';
|
|
18
|
+
const DEFAULT_ACTION_CONTEXT = Symbol('defaultActionContext');
|
|
18
19
|
function hasLoop(name, parent, processed = []) {
|
|
19
20
|
if (parent.name === name || processed.includes(parent.name)) {
|
|
20
21
|
return true;
|
|
@@ -195,17 +196,21 @@ class Entrypoint extends _BaseEntrypoint.BaseEntrypoint {
|
|
|
195
196
|
beginProcessing() {
|
|
196
197
|
this.#isProcessing = true;
|
|
197
198
|
}
|
|
198
|
-
createAction(actionType, data, abortSignal = null) {
|
|
199
|
+
createAction(actionType, data, abortSignal = null, actionContext = DEFAULT_ACTION_CONTEXT) {
|
|
199
200
|
var _cached$abortSignal;
|
|
200
201
|
if (!this.actionsCache.has(actionType)) {
|
|
201
202
|
this.actionsCache.set(actionType, new Map());
|
|
202
203
|
}
|
|
203
|
-
const
|
|
204
|
+
const contexts = this.actionsCache.get(actionType);
|
|
205
|
+
if (!contexts.has(actionContext)) {
|
|
206
|
+
contexts.set(actionContext, new Map());
|
|
207
|
+
}
|
|
208
|
+
const cache = contexts.get(actionContext);
|
|
204
209
|
const cached = cache.get(data);
|
|
205
210
|
if (cached && !((_cached$abortSignal = cached.abortSignal) !== null && _cached$abortSignal !== void 0 && _cached$abortSignal.aborted)) {
|
|
206
211
|
return cached;
|
|
207
212
|
}
|
|
208
|
-
const newAction = new _BaseAction.BaseAction(actionType, this.services, this, data, abortSignal);
|
|
213
|
+
const newAction = new _BaseAction.BaseAction(actionType, this.services, this, data, abortSignal, actionContext);
|
|
209
214
|
cache.set(data, newAction);
|
|
210
215
|
this.services.eventEmitter.entrypointEvent(this.seqId, {
|
|
211
216
|
type: 'actionCreated',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Entrypoint.js","names":["_nodeFs","_interopRequireDefault","require","_tsInvariant","_BaseEntrypoint","_Entrypoint","_EvaluatedEntrypoint","_AbortError","_BaseAction","_UnprocessedEntrypointError","_parseRequest","e","__esModule","default","EMPTY_FILE","hasLoop","name","parent","processed","includes","p","parents","found","Entrypoint","BaseEntrypoint","evaluated","onSupersedeHandlers","actionsCache","Map","hasWywMetadata","isProcessing","pendingOnly","supersededWith","transformResultCode","constructor","services","initialCode","only","exports","evaluatedOnly","loadedAndParsed","resolveTasks","dependencies","invalidationDependencies","invalidateOnDependencyChange","Set","generation","_parents$0$log","_parents$","loadAndParseFn","log","code","undefined","cache","invalidateIfChanged","evaluator","originalCode","extend","ignored","_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","fs","readFileSync","stripQueryAndHash","mergedOnly","mergeOnly","isLoop","map","push","isSuperSet","deferOnlySupersede","supersede","newEntrypoint","addDependency","dependency","delete","source","set","addInvalidationDependency","addResolveTask","applyDeferredSupersede","nextEntrypoint","assertNotSuperseded","AbortError","assertTransformed","_this$supersededWith3","UnprocessedEntrypointError","beginProcessing","createAction","actionType","data","abortSignal","_cached$abortSignal","has","aborted","newAction","BaseAction","entrypointEvent","type","actionIdx","idx","createChild","createEvaluated","EvaluatedEntrypoint","exportsProxy","endProcessing","getDependency","getInvalidationDependency","markInvalidateOnDependencyChange","filename","getResolveTask","onSupersede","callback","index","indexOf","splice","setTransformResult","res","_res$code","Boolean","metadata","isNull","newOnlyOrEntrypoint","with","forEach","handler"],"sources":["../../src/transform/Entrypoint.ts"],"sourcesContent":["import fs from 'node:fs';\nimport { 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';\nimport { stripQueryAndHash } from '../utils/parseRequest';\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 #isProcessing = false;\n\n #pendingOnly: string[] | null = null;\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 readonly dependencies = new Map<string, IEntrypointDependency>(),\n readonly invalidationDependencies = new Map<\n string,\n IEntrypointDependency\n >(),\n readonly invalidateOnDependencyChange = new Set<string>(),\n generation = 1\n ) {\n super(\n services,\n evaluatedOnly,\n exports,\n generation,\n name,\n only,\n parents,\n dependencies,\n invalidationDependencies,\n invalidateOnDependencyChange\n );\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(\n name,\n this.loadedAndParsed.code,\n undefined,\n this.initialCode === undefined ? 'fs' : 'loaded'\n );\n }\n\n const code =\n this.loadedAndParsed.evaluator === 'ignored'\n ? '[IGNORED]'\n : this.originalCode || EMPTY_FILE;\n\n this.log.extend('source')('created %s (%o)\\n%s', name, only, code);\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 let changed = false;\n if (loadedCode !== undefined) {\n changed = cache.invalidateIfChanged(\n name,\n loadedCode,\n undefined,\n 'loaded'\n );\n } else if (cached && cached.initialCode === undefined) {\n try {\n changed = cache.invalidateIfChanged(\n name,\n fs.readFileSync(stripQueryAndHash(name), 'utf8'),\n undefined,\n 'fs'\n );\n } catch {\n changed = false;\n }\n }\n\n if (!cached?.evaluated && cached?.ignored) {\n return ['cached', cached];\n }\n\n const exports = cached?.exports;\n const evaluatedOnly = changed ? [] : cached?.evaluatedOnly ?? [];\n\n const mergedOnly = cached?.only ? mergeOnly(cached.only, only) : [...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 if (cached.#isProcessing) {\n cached.deferOnlySupersede(mergedOnly);\n cached.log(\n 'is being processed, defer supersede (%o -> %o)',\n cached.only,\n mergedOnly\n );\n return [isLoop ? 'loop' : 'cached', cached];\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 && 'invalidationDependencies' in cached\n ? cached.invalidationDependencies\n : undefined,\n cached && 'invalidateOnDependencyChange' in cached\n ? cached.invalidateOnDependencyChange\n : 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 addInvalidationDependency(dependency: IEntrypointDependency): void {\n this.resolveTasks.delete(dependency.source);\n this.invalidationDependencies.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 applyDeferredSupersede() {\n if (this.#supersededWith || this.#pendingOnly === null) {\n return null;\n }\n\n const mergedOnly = mergeOnly(this.only, this.#pendingOnly);\n this.#pendingOnly = null;\n\n if (isSuperSet(this.only, mergedOnly)) {\n return null;\n }\n\n this.log('apply deferred supersede (%o -> %o)', this.only, mergedOnly);\n\n const nextEntrypoint = this.supersede(mergedOnly);\n this.services.cache.add('entrypoints', this.name, nextEntrypoint);\n\n return nextEntrypoint;\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 beginProcessing() {\n this.#isProcessing = true;\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 const evaluated = new EvaluatedEntrypoint(\n this.services,\n evaluatedOnly,\n this.exportsProxy,\n this.generation + 1,\n this.name,\n this.only,\n this.parents,\n this.dependencies,\n this.invalidationDependencies,\n this.invalidateOnDependencyChange\n );\n\n evaluated.initialCode = this.initialCode;\n\n return evaluated;\n }\n\n public endProcessing() {\n this.#isProcessing = false;\n }\n\n public getDependency(name: string): IEntrypointDependency | undefined {\n return this.dependencies.get(name);\n }\n\n public getInvalidationDependency(\n name: string\n ): IEntrypointDependency | undefined {\n return this.invalidationDependencies.get(name);\n }\n\n public markInvalidateOnDependencyChange(filename: string): void {\n this.invalidateOnDependencyChange.add(filename);\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 deferOnlySupersede(only: string[]) {\n this.#pendingOnly = this.#pendingOnly\n ? mergeOnly(this.#pendingOnly, only)\n : [...only];\n }\n\n private supersede(newOnlyOrEntrypoint: string[] | Entrypoint): Entrypoint {\n this.#pendingOnly = null;\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.invalidationDependencies,\n this.invalidateOnDependencyChange,\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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Entrypoint.js","names":["_nodeFs","_interopRequireDefault","require","_tsInvariant","_BaseEntrypoint","_Entrypoint","_EvaluatedEntrypoint","_AbortError","_BaseAction","_UnprocessedEntrypointError","_parseRequest","e","__esModule","default","EMPTY_FILE","DEFAULT_ACTION_CONTEXT","Symbol","hasLoop","name","parent","processed","includes","p","parents","found","Entrypoint","BaseEntrypoint","evaluated","onSupersedeHandlers","actionsCache","Map","hasWywMetadata","isProcessing","pendingOnly","supersededWith","transformResultCode","constructor","services","initialCode","only","exports","evaluatedOnly","loadedAndParsed","resolveTasks","dependencies","invalidationDependencies","invalidateOnDependencyChange","Set","generation","_parents$0$log","_parents$","loadAndParseFn","log","code","undefined","cache","invalidateIfChanged","evaluator","originalCode","extend","ignored","_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","fs","readFileSync","stripQueryAndHash","mergedOnly","mergeOnly","isLoop","map","push","isSuperSet","deferOnlySupersede","supersede","newEntrypoint","addDependency","dependency","delete","source","set","addInvalidationDependency","addResolveTask","applyDeferredSupersede","nextEntrypoint","assertNotSuperseded","AbortError","assertTransformed","_this$supersededWith3","UnprocessedEntrypointError","beginProcessing","createAction","actionType","data","abortSignal","actionContext","_cached$abortSignal","has","contexts","aborted","newAction","BaseAction","entrypointEvent","type","actionIdx","idx","createChild","createEvaluated","EvaluatedEntrypoint","exportsProxy","endProcessing","getDependency","getInvalidationDependency","markInvalidateOnDependencyChange","filename","getResolveTask","onSupersede","callback","index","indexOf","splice","setTransformResult","res","_res$code","Boolean","metadata","isNull","newOnlyOrEntrypoint","with","forEach","handler"],"sources":["../../src/transform/Entrypoint.ts"],"sourcesContent":["import fs from 'node:fs';\nimport { 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';\nimport { stripQueryAndHash } from '../utils/parseRequest';\n\nconst EMPTY_FILE = '=== empty file ===';\nconst DEFAULT_ACTION_CONTEXT = Symbol('defaultActionContext');\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, Map<unknown, BaseAction<ActionQueueItem>>>\n > = new Map();\n\n #hasWywMetadata: boolean = false;\n\n #isProcessing = false;\n\n #pendingOnly: string[] | null = null;\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 readonly dependencies = new Map<string, IEntrypointDependency>(),\n readonly invalidationDependencies = new Map<\n string,\n IEntrypointDependency\n >(),\n readonly invalidateOnDependencyChange = new Set<string>(),\n generation = 1\n ) {\n super(\n services,\n evaluatedOnly,\n exports,\n generation,\n name,\n only,\n parents,\n dependencies,\n invalidationDependencies,\n invalidateOnDependencyChange\n );\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(\n name,\n this.loadedAndParsed.code,\n undefined,\n this.initialCode === undefined ? 'fs' : 'loaded'\n );\n }\n\n const code =\n this.loadedAndParsed.evaluator === 'ignored'\n ? '[IGNORED]'\n : this.originalCode || EMPTY_FILE;\n\n this.log.extend('source')('created %s (%o)\\n%s', name, only, code);\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 let changed = false;\n if (loadedCode !== undefined) {\n changed = cache.invalidateIfChanged(\n name,\n loadedCode,\n undefined,\n 'loaded'\n );\n } else if (cached && cached.initialCode === undefined) {\n try {\n changed = cache.invalidateIfChanged(\n name,\n fs.readFileSync(stripQueryAndHash(name), 'utf8'),\n undefined,\n 'fs'\n );\n } catch {\n changed = false;\n }\n }\n\n if (!cached?.evaluated && cached?.ignored) {\n return ['cached', cached];\n }\n\n const exports = cached?.exports;\n const evaluatedOnly = changed ? [] : cached?.evaluatedOnly ?? [];\n\n const mergedOnly = cached?.only ? mergeOnly(cached.only, only) : [...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 if (cached.#isProcessing) {\n cached.deferOnlySupersede(mergedOnly);\n cached.log(\n 'is being processed, defer supersede (%o -> %o)',\n cached.only,\n mergedOnly\n );\n return [isLoop ? 'loop' : 'cached', cached];\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 && 'invalidationDependencies' in cached\n ? cached.invalidationDependencies\n : undefined,\n cached && 'invalidateOnDependencyChange' in cached\n ? cached.invalidateOnDependencyChange\n : 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 addInvalidationDependency(dependency: IEntrypointDependency): void {\n this.resolveTasks.delete(dependency.source);\n this.invalidationDependencies.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 applyDeferredSupersede() {\n if (this.#supersededWith || this.#pendingOnly === null) {\n return null;\n }\n\n const mergedOnly = mergeOnly(this.only, this.#pendingOnly);\n this.#pendingOnly = null;\n\n if (isSuperSet(this.only, mergedOnly)) {\n return null;\n }\n\n this.log('apply deferred supersede (%o -> %o)', this.only, mergedOnly);\n\n const nextEntrypoint = this.supersede(mergedOnly);\n this.services.cache.add('entrypoints', this.name, nextEntrypoint);\n\n return nextEntrypoint;\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 beginProcessing() {\n this.#isProcessing = true;\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 actionContext: unknown = DEFAULT_ACTION_CONTEXT\n ): BaseAction<TAction> {\n if (!this.actionsCache.has(actionType)) {\n this.actionsCache.set(actionType, new Map());\n }\n\n const contexts = this.actionsCache.get(actionType)!;\n if (!contexts.has(actionContext)) {\n contexts.set(actionContext, new Map());\n }\n\n const cache = contexts.get(actionContext)!;\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 actionContext\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 const evaluated = new EvaluatedEntrypoint(\n this.services,\n evaluatedOnly,\n this.exportsProxy,\n this.generation + 1,\n this.name,\n this.only,\n this.parents,\n this.dependencies,\n this.invalidationDependencies,\n this.invalidateOnDependencyChange\n );\n\n evaluated.initialCode = this.initialCode;\n\n return evaluated;\n }\n\n public endProcessing() {\n this.#isProcessing = false;\n }\n\n public getDependency(name: string): IEntrypointDependency | undefined {\n return this.dependencies.get(name);\n }\n\n public getInvalidationDependency(\n name: string\n ): IEntrypointDependency | undefined {\n return this.invalidationDependencies.get(name);\n }\n\n public markInvalidateOnDependencyChange(filename: string): void {\n this.invalidateOnDependencyChange.add(filename);\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 deferOnlySupersede(only: string[]) {\n this.#pendingOnly = this.#pendingOnly\n ? mergeOnly(this.#pendingOnly, only)\n : [...only];\n }\n\n private supersede(newOnlyOrEntrypoint: string[] | Entrypoint): Entrypoint {\n this.#pendingOnly = null;\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.invalidationDependencies,\n this.invalidateOnDependencyChange,\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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","ignoreList":[]}
|
|
@@ -14,12 +14,13 @@ class BaseAction {
|
|
|
14
14
|
activeScenario = null;
|
|
15
15
|
activeScenarioNextResults = [];
|
|
16
16
|
handler = null;
|
|
17
|
-
constructor(type, services, entrypoint, data, abortSignal) {
|
|
17
|
+
constructor(type, services, entrypoint, data, abortSignal, actionContext) {
|
|
18
18
|
this.type = type;
|
|
19
19
|
this.services = services;
|
|
20
20
|
this.entrypoint = entrypoint;
|
|
21
21
|
this.data = data;
|
|
22
22
|
this.abortSignal = abortSignal;
|
|
23
|
+
this.actionContext = actionContext;
|
|
23
24
|
actionIdx += 1;
|
|
24
25
|
this.idx = actionIdx.toString(16).padStart(6, '0');
|
|
25
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseAction.js","names":["require","_types","actionIdx","BaseAction","result","Pending","activeScenario","activeScenarioNextResults","handler","constructor","type","services","entrypoint","data","abortSignal","idx","toString","padStart","log","extend","ref","createAbortSignal","abortController","AbortController","unsubscribeFromParentAbort","onAbort","abort","unsubscribeFromSupersede","onSupersede","signal","Symbol","dispose","getNext","fn","_this$abortSignal","addEventListener","_this$abortSignal2","removeEventListener","run","Error","name","call","nextIdx","throwFn","e","emitAction","throw","nextFn","arg","next","processNextResult","onError","then","r","done","value","push","processError","length","nextResult","errorInGenerator","recover","activeScenarioError","processNext","rethrowActiveScenarioError","yieldIdx","eventEmitter","action","exports"],"sources":["../../../src/transform/actions/BaseAction.ts"],"sourcesContent":["/* eslint-disable no-plusplus */\nimport '../../utils/dispose-polyfill';\nimport type { Debugger } from '@wyw-in-js/shared';\n\nimport type { Entrypoint } from '../Entrypoint';\nimport type {\n ActionQueueItem,\n ActionTypes,\n AnyIteratorResult,\n AsyncScenarioForAction,\n Handler,\n IBaseAction,\n Services,\n SyncScenarioForAction,\n TypeOfResult,\n YieldResult,\n} from '../types';\nimport { Pending } from '../types';\n\nlet actionIdx = 0;\n\nexport type ActionByType<TType extends ActionTypes> = Extract<\n ActionQueueItem,\n {\n type: TType;\n }\n>;\n\ntype GetBase<TAction extends ActionQueueItem> = IBaseAction<\n TAction,\n TypeOfResult<TAction>,\n TAction['data']\n>;\n\nexport class BaseAction<TAction extends ActionQueueItem>\n implements GetBase<TAction>\n{\n public readonly idx: string;\n\n public result: TypeOfResult<TAction> | typeof Pending = Pending;\n\n private activeScenario:\n | SyncScenarioForAction<TAction>\n | AsyncScenarioForAction<TAction>\n | null = null;\n\n private activeScenarioError?: unknown;\n\n private activeScenarioNextResults: AnyIteratorResult<\n 'async' | 'sync',\n TypeOfResult<TAction>\n >[] = [];\n\n private handler: null | unknown = null;\n\n public constructor(\n public readonly type: TAction['type'],\n public readonly services: Services,\n public readonly entrypoint: Entrypoint,\n public readonly data: TAction['data'],\n public readonly abortSignal: AbortSignal | null\n ) {\n actionIdx += 1;\n this.idx = actionIdx.toString(16).padStart(6, '0');\n }\n\n public get log(): Debugger {\n return this.entrypoint.log.extend(this.ref);\n }\n\n public get ref() {\n return `${this.type}@${this.idx}`;\n }\n\n public createAbortSignal(): AbortSignal & Disposable {\n const abortController = new AbortController();\n\n const unsubscribeFromParentAbort = this.onAbort(() => {\n this.entrypoint.log('parent aborted');\n abortController.abort();\n });\n\n const unsubscribeFromSupersede = this.entrypoint.onSupersede(() => {\n this.entrypoint.log('entrypoint superseded, aborting processing');\n abortController.abort();\n });\n\n const abortSignal = abortController.signal as AbortSignal & Disposable;\n abortSignal[Symbol.dispose] = () => {\n unsubscribeFromParentAbort();\n unsubscribeFromSupersede();\n };\n\n return abortSignal;\n }\n\n public *getNext<\n TNextType extends ActionTypes,\n TNextAction extends ActionByType<TNextType> = ActionByType<TNextType>,\n >(\n type: TNextType,\n entrypoint: Entrypoint,\n data: TNextAction['data'],\n abortSignal: AbortSignal | null = this.abortSignal\n ): Generator<\n [TNextType, Entrypoint, TNextAction['data'], AbortSignal | null],\n TypeOfResult<TNextAction>,\n YieldResult\n > {\n return (yield [\n type,\n entrypoint,\n data,\n abortSignal,\n ]) as TypeOfResult<TNextAction>;\n }\n\n public onAbort(fn: () => void): () => void {\n this.abortSignal?.addEventListener('abort', fn);\n\n return () => {\n this.abortSignal?.removeEventListener('abort', fn);\n };\n }\n\n public run<\n TMode extends 'async' | 'sync',\n THandler extends Handler<TMode, TAction> = Handler<TMode, TAction>,\n >(handler: THandler) {\n type IterationResult = AnyIteratorResult<TMode, TypeOfResult<TAction>>;\n\n if (this.handler && this.handler !== handler) {\n throw new Error(\n `action handler is already set for ${this.ref} (${this.entrypoint.name})`\n );\n }\n\n this.handler = handler;\n\n if (!this.activeScenario) {\n this.activeScenario = handler.call(this);\n this.activeScenarioNextResults = [];\n }\n\n let nextIdx = 0;\n\n const throwFn = (e: unknown) =>\n this.emitAction(nextIdx, () => this.activeScenario!.throw(e));\n\n const nextFn = (arg: YieldResult) =>\n this.emitAction(nextIdx, () => this.activeScenario!.next(arg));\n\n const processNextResult = (\n result: IterationResult,\n onError?: (e: unknown) => void\n ) => {\n if ('then' in result) {\n result.then((r) => {\n if (r.done) {\n this.result = r.value;\n }\n }, onError);\n } else if (result.done) {\n this.result = result.value;\n }\n\n this.activeScenarioNextResults.push(result);\n };\n\n const processError = (e: unknown) => {\n if (this.activeScenarioNextResults.length > nextIdx) {\n this.log(\n 'error was already handled in another branch, result idx is %d',\n nextIdx\n );\n return;\n }\n\n this.log('error processing, result idx is %d', nextIdx);\n\n try {\n const nextResult = throwFn(e);\n processNextResult(nextResult as IterationResult, processError);\n } catch (errorInGenerator) {\n const { recover } = handler;\n if (recover) {\n const nextResult = {\n done: false,\n value: recover(errorInGenerator, this),\n };\n\n processNextResult(nextResult as IterationResult, processError);\n return;\n }\n\n this.activeScenarioError = errorInGenerator;\n throw errorInGenerator;\n }\n };\n\n const processNext = (arg: YieldResult) => {\n if (this.activeScenarioNextResults.length > nextIdx) {\n this.log(\n 'next was already handled in another branch, result idx is %d',\n nextIdx\n );\n return;\n }\n\n this.log('next processing, result idx is %d', nextIdx);\n\n try {\n const nextResult = nextFn(arg);\n processNextResult(nextResult as IterationResult, processError);\n } catch (e) {\n processError(e);\n }\n };\n\n return {\n next: (arg: YieldResult): IterationResult => {\n this.rethrowActiveScenarioError();\n processNext(arg);\n return this.activeScenarioNextResults[nextIdx++] as IterationResult;\n },\n throw: (e: unknown): IterationResult => {\n this.rethrowActiveScenarioError();\n processError(e);\n return this.activeScenarioNextResults[nextIdx++] as IterationResult;\n },\n };\n }\n\n protected emitAction<TRes>(yieldIdx: number, fn: () => TRes) {\n return this.services.eventEmitter.action(\n this.type,\n `${this.idx}:${yieldIdx + 1}`,\n this.entrypoint.ref,\n fn\n );\n }\n\n private rethrowActiveScenarioError() {\n if (!this.activeScenarioError) {\n return;\n }\n\n this.log(\n 'scenario has an unhandled error from another branch, rethrow %o',\n this.activeScenarioError\n );\n\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw this.activeScenarioError;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"BaseAction.js","names":["require","_types","actionIdx","BaseAction","result","Pending","activeScenario","activeScenarioNextResults","handler","constructor","type","services","entrypoint","data","abortSignal","actionContext","idx","toString","padStart","log","extend","ref","createAbortSignal","abortController","AbortController","unsubscribeFromParentAbort","onAbort","abort","unsubscribeFromSupersede","onSupersede","signal","Symbol","dispose","getNext","fn","_this$abortSignal","addEventListener","_this$abortSignal2","removeEventListener","run","Error","name","call","nextIdx","throwFn","e","emitAction","throw","nextFn","arg","next","processNextResult","onError","then","r","done","value","push","processError","length","nextResult","errorInGenerator","recover","activeScenarioError","processNext","rethrowActiveScenarioError","yieldIdx","eventEmitter","action","exports"],"sources":["../../../src/transform/actions/BaseAction.ts"],"sourcesContent":["/* eslint-disable no-plusplus */\nimport '../../utils/dispose-polyfill';\nimport type { Debugger } from '@wyw-in-js/shared';\n\nimport type { Entrypoint } from '../Entrypoint';\nimport type {\n ActionQueueItem,\n ActionTypes,\n AnyIteratorResult,\n AsyncScenarioForAction,\n Handler,\n IBaseAction,\n Services,\n SyncScenarioForAction,\n TypeOfResult,\n YieldResult,\n} from '../types';\nimport { Pending } from '../types';\n\nlet actionIdx = 0;\n\nexport type ActionByType<TType extends ActionTypes> = Extract<\n ActionQueueItem,\n {\n type: TType;\n }\n>;\n\ntype GetBase<TAction extends ActionQueueItem> = IBaseAction<\n TAction,\n TypeOfResult<TAction>,\n TAction['data']\n>;\n\nexport class BaseAction<TAction extends ActionQueueItem>\n implements GetBase<TAction>\n{\n public readonly idx: string;\n\n public result: TypeOfResult<TAction> | typeof Pending = Pending;\n\n private activeScenario:\n | SyncScenarioForAction<TAction>\n | AsyncScenarioForAction<TAction>\n | null = null;\n\n private activeScenarioError?: unknown;\n\n private activeScenarioNextResults: AnyIteratorResult<\n 'async' | 'sync',\n TypeOfResult<TAction>\n >[] = [];\n\n private handler: null | unknown = null;\n\n public constructor(\n public readonly type: TAction['type'],\n public readonly services: Services,\n public readonly entrypoint: Entrypoint,\n public readonly data: TAction['data'],\n public readonly abortSignal: AbortSignal | null,\n public readonly actionContext: unknown\n ) {\n actionIdx += 1;\n this.idx = actionIdx.toString(16).padStart(6, '0');\n }\n\n public get log(): Debugger {\n return this.entrypoint.log.extend(this.ref);\n }\n\n public get ref() {\n return `${this.type}@${this.idx}`;\n }\n\n public createAbortSignal(): AbortSignal & Disposable {\n const abortController = new AbortController();\n\n const unsubscribeFromParentAbort = this.onAbort(() => {\n this.entrypoint.log('parent aborted');\n abortController.abort();\n });\n\n const unsubscribeFromSupersede = this.entrypoint.onSupersede(() => {\n this.entrypoint.log('entrypoint superseded, aborting processing');\n abortController.abort();\n });\n\n const abortSignal = abortController.signal as AbortSignal & Disposable;\n abortSignal[Symbol.dispose] = () => {\n unsubscribeFromParentAbort();\n unsubscribeFromSupersede();\n };\n\n return abortSignal;\n }\n\n public *getNext<\n TNextType extends ActionTypes,\n TNextAction extends ActionByType<TNextType> = ActionByType<TNextType>,\n >(\n type: TNextType,\n entrypoint: Entrypoint,\n data: TNextAction['data'],\n abortSignal: AbortSignal | null = this.abortSignal\n ): Generator<\n [TNextType, Entrypoint, TNextAction['data'], AbortSignal | null],\n TypeOfResult<TNextAction>,\n YieldResult\n > {\n return (yield [\n type,\n entrypoint,\n data,\n abortSignal,\n ]) as TypeOfResult<TNextAction>;\n }\n\n public onAbort(fn: () => void): () => void {\n this.abortSignal?.addEventListener('abort', fn);\n\n return () => {\n this.abortSignal?.removeEventListener('abort', fn);\n };\n }\n\n public run<\n TMode extends 'async' | 'sync',\n THandler extends Handler<TMode, TAction> = Handler<TMode, TAction>,\n >(handler: THandler) {\n type IterationResult = AnyIteratorResult<TMode, TypeOfResult<TAction>>;\n\n if (this.handler && this.handler !== handler) {\n throw new Error(\n `action handler is already set for ${this.ref} (${this.entrypoint.name})`\n );\n }\n\n this.handler = handler;\n\n if (!this.activeScenario) {\n this.activeScenario = handler.call(this);\n this.activeScenarioNextResults = [];\n }\n\n let nextIdx = 0;\n\n const throwFn = (e: unknown) =>\n this.emitAction(nextIdx, () => this.activeScenario!.throw(e));\n\n const nextFn = (arg: YieldResult) =>\n this.emitAction(nextIdx, () => this.activeScenario!.next(arg));\n\n const processNextResult = (\n result: IterationResult,\n onError?: (e: unknown) => void\n ) => {\n if ('then' in result) {\n result.then((r) => {\n if (r.done) {\n this.result = r.value;\n }\n }, onError);\n } else if (result.done) {\n this.result = result.value;\n }\n\n this.activeScenarioNextResults.push(result);\n };\n\n const processError = (e: unknown) => {\n if (this.activeScenarioNextResults.length > nextIdx) {\n this.log(\n 'error was already handled in another branch, result idx is %d',\n nextIdx\n );\n return;\n }\n\n this.log('error processing, result idx is %d', nextIdx);\n\n try {\n const nextResult = throwFn(e);\n processNextResult(nextResult as IterationResult, processError);\n } catch (errorInGenerator) {\n const { recover } = handler;\n if (recover) {\n const nextResult = {\n done: false,\n value: recover(errorInGenerator, this),\n };\n\n processNextResult(nextResult as IterationResult, processError);\n return;\n }\n\n this.activeScenarioError = errorInGenerator;\n throw errorInGenerator;\n }\n };\n\n const processNext = (arg: YieldResult) => {\n if (this.activeScenarioNextResults.length > nextIdx) {\n this.log(\n 'next was already handled in another branch, result idx is %d',\n nextIdx\n );\n return;\n }\n\n this.log('next processing, result idx is %d', nextIdx);\n\n try {\n const nextResult = nextFn(arg);\n processNextResult(nextResult as IterationResult, processError);\n } catch (e) {\n processError(e);\n }\n };\n\n return {\n next: (arg: YieldResult): IterationResult => {\n this.rethrowActiveScenarioError();\n processNext(arg);\n return this.activeScenarioNextResults[nextIdx++] as IterationResult;\n },\n throw: (e: unknown): IterationResult => {\n this.rethrowActiveScenarioError();\n processError(e);\n return this.activeScenarioNextResults[nextIdx++] as IterationResult;\n },\n };\n }\n\n protected emitAction<TRes>(yieldIdx: number, fn: () => TRes) {\n return this.services.eventEmitter.action(\n this.type,\n `${this.idx}:${yieldIdx + 1}`,\n this.entrypoint.ref,\n fn\n );\n }\n\n private rethrowActiveScenarioError() {\n if (!this.activeScenarioError) {\n return;\n }\n\n this.log(\n 'scenario has an unhandled error from another branch, rethrow %o',\n this.activeScenarioError\n );\n\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw this.activeScenarioError;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -41,7 +41,7 @@ async function asyncActionRunner(action, actionHandlers, stack = [getActionRef(a
|
|
|
41
41
|
return result.value;
|
|
42
42
|
}
|
|
43
43
|
const [type, entrypoint, data, abortSignal] = result.value;
|
|
44
|
-
const nextAction = entrypoint.createAction(type, data, abortSignal);
|
|
44
|
+
const nextAction = entrypoint.createAction(type, data, abortSignal, action.actionContext);
|
|
45
45
|
try {
|
|
46
46
|
actionResult = await asyncActionRunner(nextAction, actionHandlers, [...stack, getActionRef(type, entrypoint)]);
|
|
47
47
|
} catch (e) {
|
|
@@ -70,7 +70,7 @@ function syncActionRunner(action, actionHandlers, stack = [getActionRef(action.t
|
|
|
70
70
|
return result.value;
|
|
71
71
|
}
|
|
72
72
|
const [type, entrypoint, data, abortSignal] = result.value;
|
|
73
|
-
const nextAction = entrypoint.createAction(type, data, abortSignal);
|
|
73
|
+
const nextAction = entrypoint.createAction(type, data, abortSignal, action.actionContext);
|
|
74
74
|
try {
|
|
75
75
|
actionResult = syncActionRunner(nextAction, actionHandlers, [...stack, getActionRef(type, entrypoint)]);
|
|
76
76
|
} catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actionRunner.js","names":["_types","require","_AbortError","getHandler","action","actionHandlers","handler","type","Error","getActionRef","entrypoint","ref","ACTION_ERROR","Symbol","isActionError","e","Array","isArray","asyncActionRunner","stack","result","Pending","log","generator","run","actionResult","_action$abortSignal","abortSignal","aborted","throw","AbortError","next","done","value","data","nextAction","createAction","syncActionRunner","_action$abortSignal2"],"sources":["../../../src/transform/actions/actionRunner.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport type {\n ActionQueueItem,\n Handler,\n Handlers,\n TypeOfResult,\n} from '../types';\nimport { Pending } from '../types';\n\nimport { AbortError } from './AbortError';\nimport type { BaseAction } from './BaseAction';\n\nfunction getHandler<\n TMode extends 'async' | 'sync',\n TAction extends ActionQueueItem,\n>(\n action: BaseAction<TAction>,\n actionHandlers: Handlers<TMode>\n): Handler<TMode, TAction> {\n const handler = actionHandlers[action.type];\n if (!handler) {\n throw new Error(`No handler for action ${action.type}`);\n }\n\n // FIXME Handlers<TMode>[TAction['type']] is not assignable to Handler<TMode, TAction>\n return handler as unknown as Handler<TMode, TAction>;\n}\n\nconst getActionRef = (type: string, entrypoint: { ref: string }) =>\n `${type}@${entrypoint.ref}`;\n\nconst ACTION_ERROR = Symbol('ACTION_ERROR');\ntype ActionError = [marker: typeof ACTION_ERROR, err: unknown];\nconst isActionError = (e: unknown): e is ActionError =>\n Array.isArray(e) && e[0] === ACTION_ERROR;\n\nexport async function asyncActionRunner<TAction extends ActionQueueItem>(\n action: BaseAction<TAction>,\n actionHandlers: Handlers<'async' | 'sync'>,\n stack: string[] = [getActionRef(action.type, action.entrypoint)]\n): Promise<TypeOfResult<TAction>> {\n if (action.result !== Pending) {\n action.log('result is cached');\n return action.result as TypeOfResult<TAction>;\n }\n\n const handler = getHandler(action, actionHandlers);\n const generator = action.run<'async' | 'sync'>(handler);\n let actionResult: TypeOfResult<ActionQueueItem> | ActionError | undefined;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (action.abortSignal?.aborted) {\n action.log('action is aborted');\n generator.throw(new AbortError(stack[0]));\n }\n\n const result = await (isActionError(actionResult)\n ? generator.throw(actionResult[1])\n : generator.next(actionResult));\n if (result.done) {\n return result.value as TypeOfResult<TAction>;\n }\n\n const [type, entrypoint, data, abortSignal] = result.value;\n const nextAction = entrypoint.createAction(type
|
|
1
|
+
{"version":3,"file":"actionRunner.js","names":["_types","require","_AbortError","getHandler","action","actionHandlers","handler","type","Error","getActionRef","entrypoint","ref","ACTION_ERROR","Symbol","isActionError","e","Array","isArray","asyncActionRunner","stack","result","Pending","log","generator","run","actionResult","_action$abortSignal","abortSignal","aborted","throw","AbortError","next","done","value","data","nextAction","createAction","actionContext","syncActionRunner","_action$abortSignal2"],"sources":["../../../src/transform/actions/actionRunner.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport type {\n ActionQueueItem,\n Handler,\n Handlers,\n TypeOfResult,\n} from '../types';\nimport { Pending } from '../types';\n\nimport { AbortError } from './AbortError';\nimport type { BaseAction } from './BaseAction';\n\nfunction getHandler<\n TMode extends 'async' | 'sync',\n TAction extends ActionQueueItem,\n>(\n action: BaseAction<TAction>,\n actionHandlers: Handlers<TMode>\n): Handler<TMode, TAction> {\n const handler = actionHandlers[action.type];\n if (!handler) {\n throw new Error(`No handler for action ${action.type}`);\n }\n\n // FIXME Handlers<TMode>[TAction['type']] is not assignable to Handler<TMode, TAction>\n return handler as unknown as Handler<TMode, TAction>;\n}\n\nconst getActionRef = (type: string, entrypoint: { ref: string }) =>\n `${type}@${entrypoint.ref}`;\n\nconst ACTION_ERROR = Symbol('ACTION_ERROR');\ntype ActionError = [marker: typeof ACTION_ERROR, err: unknown];\nconst isActionError = (e: unknown): e is ActionError =>\n Array.isArray(e) && e[0] === ACTION_ERROR;\n\nexport async function asyncActionRunner<TAction extends ActionQueueItem>(\n action: BaseAction<TAction>,\n actionHandlers: Handlers<'async' | 'sync'>,\n stack: string[] = [getActionRef(action.type, action.entrypoint)]\n): Promise<TypeOfResult<TAction>> {\n if (action.result !== Pending) {\n action.log('result is cached');\n return action.result as TypeOfResult<TAction>;\n }\n\n const handler = getHandler(action, actionHandlers);\n const generator = action.run<'async' | 'sync'>(handler);\n let actionResult: TypeOfResult<ActionQueueItem> | ActionError | undefined;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (action.abortSignal?.aborted) {\n action.log('action is aborted');\n generator.throw(new AbortError(stack[0]));\n }\n\n const result = await (isActionError(actionResult)\n ? generator.throw(actionResult[1])\n : generator.next(actionResult));\n if (result.done) {\n return result.value as TypeOfResult<TAction>;\n }\n\n const [type, entrypoint, data, abortSignal] = result.value;\n const nextAction = entrypoint.createAction(\n type,\n data,\n abortSignal,\n action.actionContext\n );\n\n try {\n actionResult = await asyncActionRunner(nextAction, actionHandlers, [\n ...stack,\n getActionRef(type, entrypoint),\n ]);\n } catch (e) {\n nextAction.log('error', e);\n actionResult = [ACTION_ERROR, e];\n }\n }\n}\n\nexport function syncActionRunner<TAction extends ActionQueueItem>(\n action: BaseAction<TAction>,\n actionHandlers: Handlers<'sync'>,\n stack: string[] = [getActionRef(action.type, action.entrypoint)]\n): TypeOfResult<TAction> {\n if (action.result !== Pending) {\n action.log('result is cached');\n return action.result as TypeOfResult<TAction>;\n }\n\n const handler = getHandler(action, actionHandlers);\n const generator = action.run<'sync'>(handler);\n let actionResult: TypeOfResult<ActionQueueItem> | ActionError | undefined;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (action.abortSignal?.aborted) {\n action.log('action is aborted');\n generator.throw(new AbortError(stack[0]));\n }\n\n const result = isActionError(actionResult)\n ? generator.throw(actionResult[1])\n : generator.next(actionResult);\n if (result.done) {\n return result.value as TypeOfResult<TAction>;\n }\n\n const [type, entrypoint, data, abortSignal] = result.value;\n const nextAction = entrypoint.createAction(\n type,\n data,\n abortSignal,\n action.actionContext\n );\n\n try {\n actionResult = syncActionRunner(nextAction, actionHandlers, [\n ...stack,\n getActionRef(type, entrypoint),\n ]);\n } catch (e) {\n nextAction.log('error', e);\n actionResult = [ACTION_ERROR, e];\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../src/transform/actions/types.ts"],"sourcesContent":["import type { BabelFileResult } from '@babel/core';\n\nimport type { Replacements, Rules } from '@wyw-in-js/shared';\n\nexport interface IExtracted {\n cssSourceMapText: string;\n cssText: string;\n replacements: Replacements;\n rules: Rules;\n}\n\nexport interface IWorkflowActionNonLinariaResult {\n code: string;\n sourceMap: BabelFileResult['map'];\n}\n\nexport interface IWorkflowActionLinariaResult\n extends IExtracted,\n IWorkflowActionNonLinariaResult {\n dependencies: string[];\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../src/transform/actions/types.ts"],"sourcesContent":["import type { BabelFileResult } from '@babel/core';\n\nimport type { Replacements, Rules } from '@wyw-in-js/shared';\n\nimport type { WYWTransformDiagnostic } from '../../utils/TransformDiagnostics';\nimport type { WYWTransformResultMetadata } from '../../utils/TransformMetadata';\n\nexport interface IExtracted {\n cssSourceMapText: string;\n cssText: string;\n replacements: Replacements;\n rules: Rules;\n}\n\nexport interface IWorkflowActionNonLinariaResult {\n code: string;\n sourceMap: BabelFileResult['map'];\n}\n\nexport interface IWorkflowActionLinariaResult\n extends IExtracted,\n IWorkflowActionNonLinariaResult {\n dependencies: string[];\n diagnostics?: WYWTransformDiagnostic[];\n metadata?: WYWTransformResultMetadata;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -10,8 +10,12 @@ var _barrelManifest = require("../barrelManifest");
|
|
|
10
10
|
function _usingCtx2() { var r = "function" == typeof SuppressedError ? SuppressedError : function (r, e) { var n = Error(); return n.name = "SuppressedError", n.error = r, n.suppressed = e, n; }, e = {}, n = []; function using(r, e) { if (null != e) { if (Object(e) !== e) throw new TypeError("using declarations can only be used with objects, functions, null, or undefined."); if (r) var o = e[Symbol.asyncDispose || Symbol.for("Symbol.asyncDispose")]; if (void 0 === o && (o = e[Symbol.dispose || Symbol.for("Symbol.dispose")], r)) var t = o; if ("function" != typeof o) throw new TypeError("Object is not disposable."); t && (o = function () { try { t.call(e); } catch (r) { return Promise.reject(r); } }), n.push({ v: e, d: o, a: r }); } else r && n.push({ d: e, a: r }); return e; } return { e: e, u: using.bind(null, !1), a: using.bind(null, !0), d: function () { var o, t = this.e, s = 0; function next() { for (; o = n.pop();) try { if (!o.a && 1 === s) return s = 0, n.push(o), Promise.resolve().then(next); if (o.d) { var r = o.d.call(o.v); if (o.a) return s |= 2, Promise.resolve(r).then(next, err); } else s |= 1; } catch (r) { return err(r); } if (1 === s) return t !== e ? Promise.reject(t) : Promise.resolve(); if (t !== e) throw t; } function err(n) { return t = t !== e ? new r(n, t) : n, next(); } return next(); } }; }
|
|
11
11
|
const shouldSkipExplodeReexports = action => {
|
|
12
12
|
const {
|
|
13
|
-
loadedAndParsed
|
|
13
|
+
loadedAndParsed,
|
|
14
|
+
only
|
|
14
15
|
} = action.entrypoint;
|
|
16
|
+
if (only.length === 1 && only[0] === '__wywPreval') {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
15
19
|
if (loadedAndParsed.evaluator !== _shaker.shaker || !loadedAndParsed.ast) {
|
|
16
20
|
return false;
|
|
17
21
|
}
|