@wyw-in-js/transform 0.6.0 → 0.8.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 CHANGED
@@ -1,4 +1,5 @@
1
1
  import { createHash } from 'crypto';
2
+ import fs from 'node:fs';
2
3
  import { logger } from '@wyw-in-js/shared';
3
4
  import { getFileIdx } from './utils/getFileIdx';
4
5
  function hashContent(content) {
@@ -25,6 +26,9 @@ export class TransformCacheCollection {
25
26
  return cache.get(key) === value ? 'unchanged' : 'updated';
26
27
  });
27
28
  cache.set(key, value);
29
+ if ('initialCode' in value) {
30
+ this.contentHashes.set(key, hashContent(value.initialCode ?? ''));
31
+ }
28
32
  }
29
33
  clear(cacheName) {
30
34
  if (cacheName === 'all') {
@@ -66,6 +70,19 @@ export class TransformCacheCollection {
66
70
  });
67
71
  }
68
72
  invalidateIfChanged(filename, content) {
73
+ const fileEntrypoint = this.get('entrypoints', filename);
74
+
75
+ // We need to check all dependencies of the file
76
+ // because they might have changed as well.
77
+ if (fileEntrypoint) {
78
+ for (const [, dependency] of fileEntrypoint.dependencies) {
79
+ const dependencyFilename = dependency.resolved;
80
+ if (dependencyFilename) {
81
+ const dependencyContent = fs.readFileSync(dependencyFilename, 'utf8');
82
+ this.invalidateIfChanged(dependencyFilename, dependencyContent);
83
+ }
84
+ }
85
+ }
69
86
  const hash = this.contentHashes.get(filename);
70
87
  const newHash = hashContent(content);
71
88
  if (hash !== newHash) {
package/esm/cache.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","names":["createHash","logger","getFileIdx","hashContent","content","update","digest","cacheLogger","extend","cacheNames","loggers","reduce","acc","key","TransformCacheCollection","contentHashes","Map","constructor","caches","entrypoints","exports","add","cacheName","value","cache","has","get","set","clear","forEach","name","delete","invalidate","res","undefined","invalidateForFile","filename","invalidateIfChanged","hash","newHash"],"sources":["../src/cache.ts"],"sourcesContent":["import { createHash } from 'crypto';\n\nimport { logger } from '@wyw-in-js/shared';\n\nimport type { Entrypoint } from './transform/Entrypoint';\nimport type { IEvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';\nimport { getFileIdx } from './utils/getFileIdx';\n\nfunction hashContent(content: string) {\n return createHash('sha256').update(content).digest('hex');\n}\n\ninterface ICaches {\n entrypoints: Map<string, Entrypoint | IEvaluatedEntrypoint>;\n exports: Map<string, string[]>;\n}\n\ntype MapValue<T> = T extends Map<string, infer V> ? V : never;\n\nconst cacheLogger = logger.extend('cache');\n\nconst cacheNames = ['entrypoints', 'exports'] as const;\ntype CacheNames = (typeof cacheNames)[number];\n\nconst loggers = cacheNames.reduce(\n (acc, key) => ({\n ...acc,\n [key]: cacheLogger.extend(key),\n }),\n {} as Record<CacheNames, typeof logger>\n);\n\nexport class TransformCacheCollection {\n public readonly entrypoints: Map<string, Entrypoint | IEvaluatedEntrypoint>;\n\n public readonly exports: Map<string, string[]>;\n\n private contentHashes = new Map<string, string>();\n\n constructor(caches: Partial<ICaches> = {}) {\n this.entrypoints = caches.entrypoints || new Map();\n this.exports = caches.exports || new Map();\n }\n\n public add<\n TCache extends CacheNames,\n TValue extends MapValue<ICaches[TCache]>,\n >(cacheName: TCache, key: string, value: TValue): void {\n const cache = this[cacheName] as Map<string, TValue>;\n loggers[cacheName]('%s:add %s %f', getFileIdx(key), key, () => {\n if (!cache.has(key)) {\n return 'added';\n }\n\n return cache.get(key) === value ? 'unchanged' : 'updated';\n });\n\n cache.set(key, value);\n }\n\n public clear(cacheName: CacheNames | 'all'): void {\n if (cacheName === 'all') {\n cacheNames.forEach((name) => {\n this.clear(name);\n });\n\n return;\n }\n\n loggers[cacheName]('clear');\n const cache = this[cacheName] as Map<string, unknown>;\n\n cache.clear();\n }\n\n public delete(cacheName: CacheNames, key: string): void {\n this.invalidate(cacheName, key);\n }\n\n public get<\n TCache extends CacheNames,\n TValue extends MapValue<ICaches[TCache]>,\n >(cacheName: TCache, key: string): TValue | undefined {\n const cache = this[cacheName] as Map<string, TValue>;\n\n const res = cache.get(key);\n loggers[cacheName]('get', key, res === undefined ? 'miss' : 'hit');\n return res;\n }\n\n public has(cacheName: CacheNames, key: string): boolean {\n const cache = this[cacheName] as Map<string, unknown>;\n\n const res = cache.has(key);\n loggers[cacheName]('has', key, res);\n return res;\n }\n\n public invalidate(cacheName: CacheNames, key: string): void {\n const cache = this[cacheName] as Map<string, unknown>;\n if (!cache.has(key)) {\n return;\n }\n\n loggers[cacheName]('invalidate', key);\n\n cache.delete(key);\n }\n\n public invalidateForFile(filename: string) {\n cacheNames.forEach((cacheName) => {\n this.invalidate(cacheName, filename);\n });\n }\n\n public invalidateIfChanged(filename: string, content: string) {\n const hash = this.contentHashes.get(filename);\n const newHash = hashContent(content);\n\n if (hash !== newHash) {\n cacheLogger('content has changed, invalidate all for %s', filename);\n this.contentHashes.set(filename, newHash);\n this.invalidateForFile(filename);\n\n return true;\n }\n\n return false;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","names":["createHash","fs","logger","getFileIdx","hashContent","content","update","digest","cacheLogger","extend","cacheNames","loggers","reduce","acc","key","TransformCacheCollection","contentHashes","Map","constructor","caches","entrypoints","exports","add","cacheName","value","cache","has","get","set","initialCode","clear","forEach","name","delete","invalidate","res","undefined","invalidateForFile","filename","invalidateIfChanged","fileEntrypoint","dependency","dependencies","dependencyFilename","resolved","dependencyContent","readFileSync","hash","newHash"],"sources":["../src/cache.ts"],"sourcesContent":["import { createHash } from 'crypto';\nimport fs from 'node:fs';\nimport { logger } from '@wyw-in-js/shared';\n\nimport type { Entrypoint } from './transform/Entrypoint';\nimport type { IEvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';\nimport { getFileIdx } from './utils/getFileIdx';\n\nfunction hashContent(content: string) {\n return createHash('sha256').update(content).digest('hex');\n}\n\ninterface IBaseCachedEntrypoint {\n dependencies: Map<string, { resolved: string | null }>;\n initialCode?: string;\n}\n\ninterface ICaches<TEntrypoint extends IBaseCachedEntrypoint> {\n entrypoints: Map<string, TEntrypoint>;\n exports: Map<string, string[]>;\n}\n\ntype MapValue<T> = T extends Map<string, infer V> ? V : never;\n\nconst cacheLogger = logger.extend('cache');\n\nconst cacheNames = ['entrypoints', 'exports'] as const;\ntype CacheNames = (typeof cacheNames)[number];\n\nconst loggers = cacheNames.reduce(\n (acc, key) => ({\n ...acc,\n [key]: cacheLogger.extend(key),\n }),\n {} as Record<CacheNames, typeof logger>\n);\n\nexport class TransformCacheCollection<\n TEntrypoint extends IBaseCachedEntrypoint = Entrypoint | IEvaluatedEntrypoint,\n> {\n public readonly entrypoints: Map<string, TEntrypoint>;\n\n public readonly exports: Map<string, string[]>;\n\n private contentHashes = new Map<string, string>();\n\n constructor(caches: Partial<ICaches<TEntrypoint>> = {}) {\n this.entrypoints = caches.entrypoints || new Map();\n this.exports = caches.exports || new Map();\n }\n\n public add<\n TCache extends CacheNames,\n TValue extends MapValue<ICaches<TEntrypoint>[TCache]>,\n >(cacheName: TCache, key: string, value: TValue): void {\n const cache = this[cacheName] as Map<string, TValue>;\n loggers[cacheName]('%s:add %s %f', getFileIdx(key), key, () => {\n if (!cache.has(key)) {\n return 'added';\n }\n\n return cache.get(key) === value ? 'unchanged' : 'updated';\n });\n\n cache.set(key, value);\n\n if ('initialCode' in value) {\n this.contentHashes.set(key, hashContent(value.initialCode ?? ''));\n }\n }\n\n public clear(cacheName: CacheNames | 'all'): void {\n if (cacheName === 'all') {\n cacheNames.forEach((name) => {\n this.clear(name);\n });\n\n return;\n }\n\n loggers[cacheName]('clear');\n const cache = this[cacheName] as Map<string, unknown>;\n\n cache.clear();\n }\n\n public delete(cacheName: CacheNames, key: string): void {\n this.invalidate(cacheName, key);\n }\n\n public get<\n TCache extends CacheNames,\n TValue extends MapValue<ICaches<TEntrypoint>[TCache]>,\n >(cacheName: TCache, key: string): TValue | undefined {\n const cache = this[cacheName] as Map<string, TValue>;\n\n const res = cache.get(key);\n loggers[cacheName]('get', key, res === undefined ? 'miss' : 'hit');\n return res;\n }\n\n public has(cacheName: CacheNames, key: string): boolean {\n const cache = this[cacheName] as Map<string, unknown>;\n\n const res = cache.has(key);\n loggers[cacheName]('has', key, res);\n return res;\n }\n\n public invalidate(cacheName: CacheNames, key: string): void {\n const cache = this[cacheName] as Map<string, unknown>;\n if (!cache.has(key)) {\n return;\n }\n\n loggers[cacheName]('invalidate', key);\n\n cache.delete(key);\n }\n\n public invalidateForFile(filename: string) {\n cacheNames.forEach((cacheName) => {\n this.invalidate(cacheName, filename);\n });\n }\n\n public invalidateIfChanged(filename: string, content: string) {\n const fileEntrypoint = this.get('entrypoints', filename);\n\n // We need to check all dependencies of the file\n // because they might have changed as well.\n if (fileEntrypoint) {\n for (const [, dependency] of fileEntrypoint.dependencies) {\n const dependencyFilename = dependency.resolved;\n if (dependencyFilename) {\n const dependencyContent = fs.readFileSync(dependencyFilename, 'utf8');\n this.invalidateIfChanged(dependencyFilename, dependencyContent);\n }\n }\n }\n\n const hash = this.contentHashes.get(filename);\n const newHash = hashContent(content);\n\n if (hash !== newHash) {\n cacheLogger('content has changed, invalidate all for %s', filename);\n this.contentHashes.set(filename, newHash);\n this.invalidateForFile(filename);\n\n return true;\n }\n\n return false;\n }\n}\n"],"mappings":"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"}
@@ -107,15 +107,17 @@ export class BaseEntrypoint {
107
107
  // eslint-disable-next-line no-plusplus
108
108
  seqId = entrypointSeqId++;
109
109
  #exports;
110
- constructor(services, evaluatedOnly, exports, generation, name, only, parents) {
110
+ constructor(services, evaluatedOnly, exports, generation, name, only, parents, dependencies) {
111
111
  this.services = services;
112
112
  this.evaluatedOnly = evaluatedOnly;
113
113
  this.generation = generation;
114
114
  this.name = name;
115
115
  this.only = only;
116
116
  this.parents = parents;
117
+ this.dependencies = dependencies;
117
118
  this.idx = getFileIdx(name);
118
119
  this.log = parents[0]?.log.extend(this.ref, '->') ?? services.log.extend(this.ref);
120
+ this.dependencies = dependencies;
119
121
  let isExportsInherited = false;
120
122
  if (exports) {
121
123
  if (isProxy(exports)) {
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEntrypoint.js","names":["getFileIdx","hasKey","obj","key","VALUES","Symbol","isProxy","createExports","log","exports","lazyFields","Set","Proxy","get","_target","value","Reflect","undefined","defaultValue","default","has","ownKeys","Object","keys","set","delete","defineProperty","descriptor","prev","v","add","getOwnPropertyDescriptor","enumerable","configurable","EXPORTS","entrypointSeqId","BaseEntrypoint","seqId","constructor","services","evaluatedOnly","generation","name","only","parents","idx","extend","ref","isExportsInherited","eventEmitter","entrypointEvent","class","filename","parentId","type","exportsProxy"],"sources":["../../src/transform/BaseEntrypoint.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Debugger } from '@wyw-in-js/shared';\n\nimport type { ParentEntrypoint } from '../types';\nimport { getFileIdx } from '../utils/getFileIdx';\n\nimport type { Services } from './types';\n\nconst hasKey = <TKey extends string | symbol>(\n obj: unknown,\n key: TKey\n): obj is Record<TKey, unknown> =>\n (typeof obj === 'object' || typeof obj === 'function') &&\n obj !== null &&\n key in obj;\n\nconst VALUES = Symbol('values');\n\nconst isProxy = (\n obj: unknown\n): obj is { [VALUES]: Record<string | symbol, unknown> } =>\n typeof obj === 'object' && obj !== null && VALUES in obj;\n\nexport const createExports = (log: Debugger) => {\n let exports: Record<string | symbol, unknown> = {};\n const lazyFields = new Set<string | symbol>();\n\n return new Proxy(exports, {\n get: (_target, key) => {\n if (key === VALUES) {\n return exports;\n }\n\n let value: unknown;\n if (key in exports) {\n value = exports[key];\n } else {\n // Support Object.prototype methods on `exports`\n // e.g `exports.hasOwnProperty`\n value = Reflect.get(exports, key);\n }\n\n if (value === undefined && 'default' in exports) {\n const defaultValue = exports.default;\n if (hasKey(defaultValue, key)) {\n log(\n '⚠️ %s has been found in `default`. It indicates that ESM to CJS conversion went wrong.',\n key\n );\n value = defaultValue[key];\n }\n }\n\n if (value !== undefined && lazyFields.has(key)) {\n value = (value as () => unknown)();\n }\n\n log('get %s: %o', key, value);\n return value;\n },\n has: (_target, key) => {\n if (key === VALUES) return true;\n return key in exports;\n },\n ownKeys: () => {\n return Object.keys(exports);\n },\n set: (_target, key, value) => {\n if (key === VALUES) {\n exports = value;\n return true;\n }\n\n if (key !== '__esModule') {\n log('set %s: %o', key, value);\n }\n\n if (value !== undefined) {\n exports[key] = value;\n lazyFields.delete(key);\n }\n\n return true;\n },\n defineProperty: (_target, key, descriptor) => {\n const { value } = descriptor;\n if (value !== undefined) {\n if (key !== '__esModule') {\n log('defineProperty %s with value %o', key, value);\n }\n\n exports[key] = value;\n lazyFields.delete(key);\n\n return true;\n }\n\n if ('get' in descriptor) {\n if (lazyFields.has(key)) {\n const prev = exports[key] as () => void;\n exports[key] = () => {\n const v = descriptor.get?.();\n if (v !== undefined) {\n return v;\n }\n\n return prev();\n };\n } else {\n const prev = exports[key];\n exports[key] = () => {\n const v = descriptor.get?.();\n if (v !== undefined) {\n return v;\n }\n\n return prev;\n };\n }\n\n lazyFields.add(key);\n log('defineProperty %s with getter', key);\n }\n\n return true;\n },\n getOwnPropertyDescriptor: (_target, key) => {\n if (key in exports)\n return {\n enumerable: true,\n configurable: true,\n };\n\n return undefined;\n },\n });\n};\n\nconst EXPORTS = Symbol('exports');\n\nlet entrypointSeqId = 0;\n\nexport abstract class BaseEntrypoint {\n public static createExports = createExports;\n\n public readonly idx: string;\n\n public readonly log: Debugger;\n\n // eslint-disable-next-line no-plusplus\n public readonly seqId = entrypointSeqId++;\n\n readonly #exports: Record<string | symbol, unknown>;\n\n protected constructor(\n protected services: Services,\n public readonly evaluatedOnly: string[],\n exports: Record<string | symbol, unknown> | undefined,\n public readonly generation: number,\n public readonly name: string,\n public readonly only: string[],\n public readonly parents: ParentEntrypoint[]\n ) {\n this.idx = getFileIdx(name);\n this.log =\n parents[0]?.log.extend(this.ref, '->') ?? services.log.extend(this.ref);\n\n let isExportsInherited = false;\n if (exports) {\n if (isProxy(exports)) {\n this.#exports = exports;\n isExportsInherited = true;\n } else {\n this.#exports = createExports(this.log);\n this.#exports[EXPORTS] = exports;\n }\n this.exports = exports;\n } else {\n this.#exports = BaseEntrypoint.createExports(this.log);\n }\n\n services.eventEmitter.entrypointEvent(this.seqId, {\n class: this.constructor.name,\n evaluatedOnly: this.evaluatedOnly,\n filename: name,\n generation,\n idx: this.idx,\n isExportsInherited,\n only,\n parentId: parents[0]?.seqId ?? null,\n type: 'created',\n });\n }\n\n public get exports(): Record<string | symbol, unknown> {\n if (EXPORTS in this.#exports) {\n return this.#exports[EXPORTS] as Record<string | symbol, unknown>;\n }\n\n return this.#exports;\n }\n\n public set exports(value: unknown) {\n if (isProxy(value)) {\n this.#exports[VALUES] = value[VALUES];\n } else {\n this.#exports[EXPORTS] = value;\n }\n }\n\n public get ref() {\n return `${this.idx}#${this.generation}`;\n }\n\n protected get exportsProxy() {\n return this.#exports;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"BaseEntrypoint.js","names":["getFileIdx","hasKey","obj","key","VALUES","Symbol","isProxy","createExports","log","exports","lazyFields","Set","Proxy","get","_target","value","Reflect","undefined","defaultValue","default","has","ownKeys","Object","keys","set","delete","defineProperty","descriptor","prev","v","add","getOwnPropertyDescriptor","enumerable","configurable","EXPORTS","entrypointSeqId","BaseEntrypoint","seqId","constructor","services","evaluatedOnly","generation","name","only","parents","dependencies","idx","extend","ref","isExportsInherited","eventEmitter","entrypointEvent","class","filename","parentId","type","exportsProxy"],"sources":["../../src/transform/BaseEntrypoint.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Debugger } from '@wyw-in-js/shared';\n\nimport type { ParentEntrypoint } from '../types';\nimport { getFileIdx } from '../utils/getFileIdx';\n\nimport type { Services } from './types';\nimport type { IEntrypointDependency } from './Entrypoint.types';\n\nconst hasKey = <TKey extends string | symbol>(\n obj: unknown,\n key: TKey\n): obj is Record<TKey, unknown> =>\n (typeof obj === 'object' || typeof obj === 'function') &&\n obj !== null &&\n key in obj;\n\nconst VALUES = Symbol('values');\n\nconst isProxy = (\n obj: unknown\n): obj is { [VALUES]: Record<string | symbol, unknown> } =>\n typeof obj === 'object' && obj !== null && VALUES in obj;\n\nexport const createExports = (log: Debugger) => {\n let exports: Record<string | symbol, unknown> = {};\n const lazyFields = new Set<string | symbol>();\n\n return new Proxy(exports, {\n get: (_target, key) => {\n if (key === VALUES) {\n return exports;\n }\n\n let value: unknown;\n if (key in exports) {\n value = exports[key];\n } else {\n // Support Object.prototype methods on `exports`\n // e.g `exports.hasOwnProperty`\n value = Reflect.get(exports, key);\n }\n\n if (value === undefined && 'default' in exports) {\n const defaultValue = exports.default;\n if (hasKey(defaultValue, key)) {\n log(\n '⚠️ %s has been found in `default`. It indicates that ESM to CJS conversion went wrong.',\n key\n );\n value = defaultValue[key];\n }\n }\n\n if (value !== undefined && lazyFields.has(key)) {\n value = (value as () => unknown)();\n }\n\n log('get %s: %o', key, value);\n return value;\n },\n has: (_target, key) => {\n if (key === VALUES) return true;\n return key in exports;\n },\n ownKeys: () => {\n return Object.keys(exports);\n },\n set: (_target, key, value) => {\n if (key === VALUES) {\n exports = value;\n return true;\n }\n\n if (key !== '__esModule') {\n log('set %s: %o', key, value);\n }\n\n if (value !== undefined) {\n exports[key] = value;\n lazyFields.delete(key);\n }\n\n return true;\n },\n defineProperty: (_target, key, descriptor) => {\n const { value } = descriptor;\n if (value !== undefined) {\n if (key !== '__esModule') {\n log('defineProperty %s with value %o', key, value);\n }\n\n exports[key] = value;\n lazyFields.delete(key);\n\n return true;\n }\n\n if ('get' in descriptor) {\n if (lazyFields.has(key)) {\n const prev = exports[key] as () => void;\n exports[key] = () => {\n const v = descriptor.get?.();\n if (v !== undefined) {\n return v;\n }\n\n return prev();\n };\n } else {\n const prev = exports[key];\n exports[key] = () => {\n const v = descriptor.get?.();\n if (v !== undefined) {\n return v;\n }\n\n return prev;\n };\n }\n\n lazyFields.add(key);\n log('defineProperty %s with getter', key);\n }\n\n return true;\n },\n getOwnPropertyDescriptor: (_target, key) => {\n if (key in exports)\n return {\n enumerable: true,\n configurable: true,\n };\n\n return undefined;\n },\n });\n};\n\nconst EXPORTS = Symbol('exports');\n\nlet entrypointSeqId = 0;\n\nexport abstract class BaseEntrypoint {\n public static createExports = createExports;\n\n public readonly idx: string;\n\n public readonly log: Debugger;\n\n // eslint-disable-next-line no-plusplus\n public readonly seqId = entrypointSeqId++;\n\n readonly #exports: Record<string | symbol, unknown>;\n\n protected constructor(\n protected services: Services,\n public readonly evaluatedOnly: string[],\n exports: Record<string | symbol, unknown> | undefined,\n public readonly generation: number,\n public readonly name: string,\n public readonly only: string[],\n public readonly parents: ParentEntrypoint[],\n public readonly dependencies: Map<string, IEntrypointDependency>\n ) {\n this.idx = getFileIdx(name);\n this.log =\n parents[0]?.log.extend(this.ref, '->') ?? services.log.extend(this.ref);\n\n this.dependencies = dependencies;\n\n let isExportsInherited = false;\n if (exports) {\n if (isProxy(exports)) {\n this.#exports = exports;\n isExportsInherited = true;\n } else {\n this.#exports = createExports(this.log);\n this.#exports[EXPORTS] = exports;\n }\n this.exports = exports;\n } else {\n this.#exports = BaseEntrypoint.createExports(this.log);\n }\n\n services.eventEmitter.entrypointEvent(this.seqId, {\n class: this.constructor.name,\n evaluatedOnly: this.evaluatedOnly,\n filename: name,\n generation,\n idx: this.idx,\n isExportsInherited,\n only,\n parentId: parents[0]?.seqId ?? null,\n type: 'created',\n });\n }\n\n public get exports(): Record<string | symbol, unknown> {\n if (EXPORTS in this.#exports) {\n return this.#exports[EXPORTS] as Record<string | symbol, unknown>;\n }\n\n return this.#exports;\n }\n\n public set exports(value: unknown) {\n if (isProxy(value)) {\n this.#exports[VALUES] = value[VALUES];\n } else {\n this.#exports[EXPORTS] = value;\n }\n }\n\n public get ref() {\n return `${this.idx}#${this.generation}`;\n }\n\n protected get exportsProxy() {\n return this.#exports;\n }\n}\n"],"mappings":"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"}
@@ -26,7 +26,7 @@ export class Entrypoint extends BaseEntrypoint {
26
26
  #supersededWith = null;
27
27
  #transformResultCode = null;
28
28
  constructor(services, parents, initialCode, name, only, exports, evaluatedOnly, loadedAndParsed, resolveTasks = new Map(), dependencies = new Map(), generation = 1) {
29
- super(services, evaluatedOnly, exports, generation, name, only, parents);
29
+ super(services, evaluatedOnly, exports, generation, name, only, parents, dependencies);
30
30
  this.initialCode = initialCode;
31
31
  this.resolveTasks = resolveTasks;
32
32
  this.dependencies = dependencies;
@@ -97,7 +97,7 @@ export class Entrypoint extends BaseEntrypoint {
97
97
  }
98
98
  const exports = cached?.exports;
99
99
  const evaluatedOnly = cached?.evaluatedOnly ?? [];
100
- const mergedOnly = !changed && cached?.only ? mergeOnly(cached.only, only).filter(i => !evaluatedOnly.includes(i)) : only;
100
+ const mergedOnly = cached?.only ? mergeOnly(cached.only, only) : only;
101
101
  if (cached?.evaluated) {
102
102
  cached.log('is already evaluated with', cached.evaluatedOnly);
103
103
  }
@@ -166,7 +166,7 @@ export class Entrypoint extends BaseEntrypoint {
166
166
  createEvaluated() {
167
167
  const evaluatedOnly = mergeOnly(this.evaluatedOnly, this.only);
168
168
  this.log('create EvaluatedEntrypoint for %o', evaluatedOnly);
169
- return new EvaluatedEntrypoint(this.services, evaluatedOnly, this.exportsProxy, this.generation + 1, this.name, this.only, this.parents);
169
+ return new EvaluatedEntrypoint(this.services, evaluatedOnly, this.exportsProxy, this.generation + 1, this.name, this.only, this.parents, this.dependencies);
170
170
  }
171
171
  getDependency(name) {
172
172
  return this.dependencies.get(name);
@@ -1 +1 @@
1
- {"version":3,"file":"Entrypoint.js","names":["invariant","BaseEntrypoint","isSuperSet","mergeOnly","EvaluatedEntrypoint","AbortError","BaseAction","UnprocessedEntrypointError","EMPTY_FILE","hasLoop","name","parent","processed","includes","p","parents","found","Entrypoint","evaluated","onSupersedeHandlers","actionsCache","Map","hasWywMetadata","supersededWith","transformResultCode","constructor","services","initialCode","only","exports","evaluatedOnly","loadedAndParsed","resolveTasks","dependencies","generation","loadAndParseFn","log","code","undefined","cache","invalidateIfChanged","evaluator","originalCode","extend","ignored","transformedCode","createRoot","loadedCode","created","create","eventEmitter","perf","status","entrypoint","innerCreate","seqId","add","cached","get","changed","mergedOnly","filter","i","isLoop","map","push","supersede","newEntrypoint","addDependency","dependency","delete","source","set","addResolveTask","assertNotSuperseded","assertTransformed","createAction","actionType","data","abortSignal","has","aborted","newAction","entrypointEvent","type","actionIdx","idx","createChild","createEvaluated","exportsProxy","getDependency","getResolveTask","onSupersede","callback","index","indexOf","splice","setTransformResult","res","Boolean","metadata","isNull","newOnlyOrEntrypoint","with","forEach","handler"],"sources":["../../src/transform/Entrypoint.ts"],"sourcesContent":["import { invariant } from 'ts-invariant';\n\nimport type { ParentEntrypoint, ITransformFileResult } from '../types';\n\nimport { BaseEntrypoint } from './BaseEntrypoint';\nimport { isSuperSet, mergeOnly } from './Entrypoint.helpers';\nimport type {\n IEntrypointCode,\n IEntrypointDependency,\n IIgnoredEntrypoint,\n} from './Entrypoint.types';\nimport { EvaluatedEntrypoint } from './EvaluatedEntrypoint';\nimport { AbortError } from './actions/AbortError';\nimport type { ActionByType } from './actions/BaseAction';\nimport { BaseAction } from './actions/BaseAction';\nimport { UnprocessedEntrypointError } from './actions/UnprocessedEntrypointError';\nimport type { Services, ActionTypes, ActionQueueItem } from './types';\n\nconst EMPTY_FILE = '=== empty file ===';\n\nfunction hasLoop(\n name: string,\n parent: ParentEntrypoint,\n processed: string[] = []\n): boolean {\n if (parent.name === name || processed.includes(parent.name)) {\n return true;\n }\n\n for (const p of parent.parents) {\n const found = hasLoop(name, p, [...processed, parent.name]);\n if (found) {\n return found;\n }\n }\n\n return false;\n}\n\nexport class Entrypoint extends BaseEntrypoint {\n public readonly evaluated = false;\n\n public readonly loadedAndParsed: IEntrypointCode | IIgnoredEntrypoint;\n\n protected onSupersedeHandlers: Array<(newEntrypoint: Entrypoint) => void> =\n [];\n\n private actionsCache: Map<\n ActionTypes,\n Map<unknown, BaseAction<ActionQueueItem>>\n > = new Map();\n\n #hasWywMetadata: boolean = false;\n\n #supersededWith: Entrypoint | null = null;\n\n #transformResultCode: string | null = null;\n\n private constructor(\n services: Services,\n parents: ParentEntrypoint[],\n public readonly initialCode: string | undefined,\n name: string,\n only: string[],\n exports: Record<string | symbol, unknown> | undefined,\n evaluatedOnly: string[],\n loadedAndParsed?: IEntrypointCode | IIgnoredEntrypoint,\n protected readonly resolveTasks = new Map<\n string,\n Promise<IEntrypointDependency>\n >(),\n protected readonly dependencies = new Map<string, IEntrypointDependency>(),\n generation = 1\n ) {\n super(services, evaluatedOnly, exports, generation, name, only, parents);\n\n this.loadedAndParsed =\n loadedAndParsed ??\n services.loadAndParseFn(\n services,\n name,\n initialCode,\n parents[0]?.log ?? services.log\n );\n\n if (this.loadedAndParsed.code !== undefined) {\n services.cache.invalidateIfChanged(name, this.loadedAndParsed.code);\n }\n\n 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 const changed =\n loadedCode !== undefined\n ? cache.invalidateIfChanged(name, loadedCode)\n : false;\n\n if (!cached?.evaluated && cached?.ignored) {\n return ['cached', cached];\n }\n\n const exports = cached?.exports;\n const evaluatedOnly = cached?.evaluatedOnly ?? [];\n const mergedOnly =\n !changed && cached?.only\n ? mergeOnly(cached.only, only).filter((i) => !evaluatedOnly.includes(i))\n : only;\n\n if (cached?.evaluated) {\n cached.log('is already evaluated with', cached.evaluatedOnly);\n }\n\n if (!changed && cached && !cached.evaluated) {\n const isLoop = parent && hasLoop(name, parent);\n if (isLoop) {\n parent.log('[createEntrypoint] %s is a loop', name);\n }\n\n if (parent && !cached.parents.map((p) => p.name).includes(parent.name)) {\n cached.parents.push(parent);\n }\n\n if (isSuperSet(cached.only, mergedOnly)) {\n cached.log('is cached', name);\n return [isLoop ? 'loop' : 'cached', cached];\n }\n\n cached.log(\n 'is cached, but with different `only` %o (the cached one %o)',\n only,\n cached?.only\n );\n\n return [isLoop ? 'loop' : 'created', cached.supersede(mergedOnly)];\n }\n\n const newEntrypoint = new Entrypoint(\n services,\n parent ? [parent] : [],\n loadedCode,\n name,\n mergedOnly,\n exports,\n evaluatedOnly,\n undefined,\n cached && 'resolveTasks' in cached ? cached.resolveTasks : undefined,\n cached && 'dependencies' in cached ? cached.dependencies : undefined,\n cached ? cached.generation + 1 : 1\n );\n\n if (cached && !cached.evaluated) {\n cached.log('is cached, but with different code');\n cached.supersede(newEntrypoint);\n }\n\n return ['created', newEntrypoint];\n }\n\n public addDependency(dependency: IEntrypointDependency): void {\n this.resolveTasks.delete(dependency.source);\n this.dependencies.set(dependency.source, dependency);\n }\n\n public addResolveTask(\n name: string,\n dependency: Promise<IEntrypointDependency>\n ): void {\n this.resolveTasks.set(name, dependency);\n }\n\n public assertNotSuperseded() {\n if (this.supersededWith) {\n this.log('superseded');\n throw new AbortError('superseded');\n }\n }\n\n public assertTransformed() {\n if (this.transformedCode === null) {\n this.log('not transformed');\n throw new UnprocessedEntrypointError(this.supersededWith ?? this);\n }\n }\n\n public createAction<\n TType extends ActionTypes,\n TAction extends ActionByType<TType>,\n >(\n actionType: TType,\n data: TAction['data'],\n abortSignal: AbortSignal | null = null\n ): BaseAction<TAction> {\n if (!this.actionsCache.has(actionType)) {\n this.actionsCache.set(actionType, new Map());\n }\n\n const cache = this.actionsCache.get(actionType)!;\n const cached = cache.get(data);\n if (cached && !cached.abortSignal?.aborted) {\n return cached as BaseAction<TAction>;\n }\n\n const newAction = new BaseAction<TAction>(\n actionType as TAction['type'],\n this.services,\n this,\n data,\n abortSignal\n );\n\n cache.set(data, newAction);\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'actionCreated',\n actionType,\n actionIdx: newAction.idx,\n });\n\n return newAction;\n }\n\n public createChild(\n name: string,\n only: string[],\n loadedCode?: string\n ): Entrypoint | 'loop' {\n return Entrypoint.create(this.services, this, name, only, loadedCode);\n }\n\n public createEvaluated() {\n const evaluatedOnly = mergeOnly(this.evaluatedOnly, this.only);\n this.log('create EvaluatedEntrypoint for %o', evaluatedOnly);\n\n return new EvaluatedEntrypoint(\n this.services,\n evaluatedOnly,\n this.exportsProxy,\n this.generation + 1,\n this.name,\n this.only,\n this.parents\n );\n }\n\n public getDependency(name: string): IEntrypointDependency | undefined {\n return this.dependencies.get(name);\n }\n\n public getResolveTask(\n name: string\n ): Promise<IEntrypointDependency> | undefined {\n return this.resolveTasks.get(name);\n }\n\n public hasWywMetadata() {\n return this.#hasWywMetadata;\n }\n\n public onSupersede(callback: (newEntrypoint: Entrypoint) => void) {\n if (this.#supersededWith) {\n callback(this.#supersededWith);\n return () => {};\n }\n\n this.onSupersedeHandlers.push(callback);\n\n return () => {\n const index = this.onSupersedeHandlers.indexOf(callback);\n if (index >= 0) {\n this.onSupersedeHandlers.splice(index, 1);\n }\n };\n }\n\n public setTransformResult(res: ITransformFileResult | null) {\n this.#hasWywMetadata = Boolean(res?.metadata);\n this.#transformResultCode = res?.code ?? null;\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n isNull: res === null,\n type: 'setTransformResult',\n });\n }\n\n private supersede(newOnlyOrEntrypoint: string[] | Entrypoint): Entrypoint {\n const newEntrypoint =\n newOnlyOrEntrypoint instanceof Entrypoint\n ? newOnlyOrEntrypoint\n : new Entrypoint(\n this.services,\n this.parents,\n this.initialCode,\n this.name,\n newOnlyOrEntrypoint,\n this.exports,\n this.evaluatedOnly,\n this.loadedAndParsed,\n this.resolveTasks,\n this.dependencies,\n this.generation + 1\n );\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'superseded',\n with: newEntrypoint.seqId,\n });\n this.log(\n 'superseded by %s (%o -> %o)',\n newEntrypoint.name,\n this.only,\n newEntrypoint.only\n );\n this.#supersededWith = newEntrypoint;\n this.onSupersedeHandlers.forEach((handler) => handler(newEntrypoint));\n\n return newEntrypoint;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Entrypoint.js","names":["invariant","BaseEntrypoint","isSuperSet","mergeOnly","EvaluatedEntrypoint","AbortError","BaseAction","UnprocessedEntrypointError","EMPTY_FILE","hasLoop","name","parent","processed","includes","p","parents","found","Entrypoint","evaluated","onSupersedeHandlers","actionsCache","Map","hasWywMetadata","supersededWith","transformResultCode","constructor","services","initialCode","only","exports","evaluatedOnly","loadedAndParsed","resolveTasks","dependencies","generation","loadAndParseFn","log","code","undefined","cache","invalidateIfChanged","evaluator","originalCode","extend","ignored","transformedCode","createRoot","loadedCode","created","create","eventEmitter","perf","status","entrypoint","innerCreate","seqId","add","cached","get","changed","mergedOnly","isLoop","map","push","supersede","newEntrypoint","addDependency","dependency","delete","source","set","addResolveTask","assertNotSuperseded","assertTransformed","createAction","actionType","data","abortSignal","has","aborted","newAction","entrypointEvent","type","actionIdx","idx","createChild","createEvaluated","exportsProxy","getDependency","getResolveTask","onSupersede","callback","index","indexOf","splice","setTransformResult","res","Boolean","metadata","isNull","newOnlyOrEntrypoint","with","forEach","handler"],"sources":["../../src/transform/Entrypoint.ts"],"sourcesContent":["import { invariant } from 'ts-invariant';\n\nimport type { ParentEntrypoint, ITransformFileResult } from '../types';\n\nimport { BaseEntrypoint } from './BaseEntrypoint';\nimport { isSuperSet, mergeOnly } from './Entrypoint.helpers';\nimport type {\n IEntrypointCode,\n IEntrypointDependency,\n IIgnoredEntrypoint,\n} from './Entrypoint.types';\nimport { EvaluatedEntrypoint } from './EvaluatedEntrypoint';\nimport { AbortError } from './actions/AbortError';\nimport type { ActionByType } from './actions/BaseAction';\nimport { BaseAction } from './actions/BaseAction';\nimport { UnprocessedEntrypointError } from './actions/UnprocessedEntrypointError';\nimport type { Services, ActionTypes, ActionQueueItem } from './types';\n\nconst EMPTY_FILE = '=== empty file ===';\n\nfunction hasLoop(\n name: string,\n parent: ParentEntrypoint,\n processed: string[] = []\n): boolean {\n if (parent.name === name || processed.includes(parent.name)) {\n return true;\n }\n\n for (const p of parent.parents) {\n const found = hasLoop(name, p, [...processed, parent.name]);\n if (found) {\n return found;\n }\n }\n\n return false;\n}\n\nexport class Entrypoint extends BaseEntrypoint {\n public readonly evaluated = false;\n\n public readonly loadedAndParsed: IEntrypointCode | IIgnoredEntrypoint;\n\n protected onSupersedeHandlers: Array<(newEntrypoint: Entrypoint) => void> =\n [];\n\n private actionsCache: Map<\n ActionTypes,\n Map<unknown, BaseAction<ActionQueueItem>>\n > = new Map();\n\n #hasWywMetadata: boolean = false;\n\n #supersededWith: Entrypoint | null = null;\n\n #transformResultCode: string | null = null;\n\n private constructor(\n services: Services,\n parents: ParentEntrypoint[],\n public readonly initialCode: string | undefined,\n name: string,\n only: string[],\n exports: Record<string | symbol, unknown> | undefined,\n evaluatedOnly: string[],\n loadedAndParsed?: IEntrypointCode | IIgnoredEntrypoint,\n protected readonly resolveTasks = new Map<\n string,\n Promise<IEntrypointDependency>\n >(),\n readonly dependencies = new Map<string, IEntrypointDependency>(),\n generation = 1\n ) {\n super(\n services,\n evaluatedOnly,\n exports,\n generation,\n name,\n only,\n parents,\n dependencies\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(name, this.loadedAndParsed.code);\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 const changed =\n loadedCode !== undefined\n ? cache.invalidateIfChanged(name, loadedCode)\n : false;\n\n if (!cached?.evaluated && cached?.ignored) {\n return ['cached', cached];\n }\n\n const exports = cached?.exports;\n const evaluatedOnly = cached?.evaluatedOnly ?? [];\n\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 return [isLoop ? 'loop' : 'created', cached.supersede(mergedOnly)];\n }\n\n const newEntrypoint = new Entrypoint(\n services,\n parent ? [parent] : [],\n loadedCode,\n name,\n mergedOnly,\n exports,\n evaluatedOnly,\n undefined,\n cached && 'resolveTasks' in cached ? cached.resolveTasks : undefined,\n cached && 'dependencies' in cached ? cached.dependencies : undefined,\n cached ? cached.generation + 1 : 1\n );\n\n if (cached && !cached.evaluated) {\n cached.log('is cached, but with different code');\n cached.supersede(newEntrypoint);\n }\n\n return ['created', newEntrypoint];\n }\n\n public addDependency(dependency: IEntrypointDependency): void {\n this.resolveTasks.delete(dependency.source);\n this.dependencies.set(dependency.source, dependency);\n }\n\n public addResolveTask(\n name: string,\n dependency: Promise<IEntrypointDependency>\n ): void {\n this.resolveTasks.set(name, dependency);\n }\n\n public assertNotSuperseded() {\n if (this.supersededWith) {\n this.log('superseded');\n throw new AbortError('superseded');\n }\n }\n\n public assertTransformed() {\n if (this.transformedCode === null) {\n this.log('not transformed');\n throw new UnprocessedEntrypointError(this.supersededWith ?? this);\n }\n }\n\n public createAction<\n TType extends ActionTypes,\n TAction extends ActionByType<TType>,\n >(\n actionType: TType,\n data: TAction['data'],\n abortSignal: AbortSignal | null = null\n ): BaseAction<TAction> {\n if (!this.actionsCache.has(actionType)) {\n this.actionsCache.set(actionType, new Map());\n }\n\n const cache = this.actionsCache.get(actionType)!;\n const cached = cache.get(data);\n if (cached && !cached.abortSignal?.aborted) {\n return cached as BaseAction<TAction>;\n }\n\n const newAction = new BaseAction<TAction>(\n actionType as TAction['type'],\n this.services,\n this,\n data,\n abortSignal\n );\n\n cache.set(data, newAction);\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'actionCreated',\n actionType,\n actionIdx: newAction.idx,\n });\n\n return newAction;\n }\n\n public createChild(\n name: string,\n only: string[],\n loadedCode?: string\n ): Entrypoint | 'loop' {\n return Entrypoint.create(this.services, this, name, only, loadedCode);\n }\n\n public createEvaluated() {\n const evaluatedOnly = mergeOnly(this.evaluatedOnly, this.only);\n this.log('create EvaluatedEntrypoint for %o', evaluatedOnly);\n\n return new EvaluatedEntrypoint(\n this.services,\n evaluatedOnly,\n this.exportsProxy,\n this.generation + 1,\n this.name,\n this.only,\n this.parents,\n this.dependencies\n );\n }\n\n public getDependency(name: string): IEntrypointDependency | undefined {\n return this.dependencies.get(name);\n }\n\n public getResolveTask(\n name: string\n ): Promise<IEntrypointDependency> | undefined {\n return this.resolveTasks.get(name);\n }\n\n public hasWywMetadata() {\n return this.#hasWywMetadata;\n }\n\n public onSupersede(callback: (newEntrypoint: Entrypoint) => void) {\n if (this.#supersededWith) {\n callback(this.#supersededWith);\n return () => {};\n }\n\n this.onSupersedeHandlers.push(callback);\n\n return () => {\n const index = this.onSupersedeHandlers.indexOf(callback);\n if (index >= 0) {\n this.onSupersedeHandlers.splice(index, 1);\n }\n };\n }\n\n public setTransformResult(res: ITransformFileResult | null) {\n this.#hasWywMetadata = Boolean(res?.metadata);\n this.#transformResultCode = res?.code ?? null;\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n isNull: res === null,\n type: 'setTransformResult',\n });\n }\n\n private supersede(newOnlyOrEntrypoint: string[] | Entrypoint): Entrypoint {\n const newEntrypoint =\n newOnlyOrEntrypoint instanceof Entrypoint\n ? newOnlyOrEntrypoint\n : new Entrypoint(\n this.services,\n this.parents,\n this.initialCode,\n this.name,\n newOnlyOrEntrypoint,\n this.exports,\n this.evaluatedOnly,\n this.loadedAndParsed,\n this.resolveTasks,\n this.dependencies,\n this.generation + 1\n );\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'superseded',\n with: newEntrypoint.seqId,\n });\n this.log(\n 'superseded by %s (%o -> %o)',\n newEntrypoint.name,\n this.only,\n newEntrypoint.only\n );\n this.#supersededWith = newEntrypoint;\n this.onSupersedeHandlers.forEach((handler) => handler(newEntrypoint));\n\n return newEntrypoint;\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,cAAc;AAIxC,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,UAAU,EAAEC,SAAS,QAAQ,sBAAsB;AAM5D,SAASC,mBAAmB,QAAQ,uBAAuB;AAC3D,SAASC,UAAU,QAAQ,sBAAsB;AAEjD,SAASC,UAAU,QAAQ,sBAAsB;AACjD,SAASC,0BAA0B,QAAQ,sCAAsC;AAGjF,MAAMC,UAAU,GAAG,oBAAoB;AAEvC,SAASC,OAAOA,CACdC,IAAY,EACZC,MAAwB,EACxBC,SAAmB,GAAG,EAAE,EACf;EACT,IAAID,MAAM,CAACD,IAAI,KAAKA,IAAI,IAAIE,SAAS,CAACC,QAAQ,CAACF,MAAM,CAACD,IAAI,CAAC,EAAE;IAC3D,OAAO,IAAI;EACb;EAEA,KAAK,MAAMI,CAAC,IAAIH,MAAM,CAACI,OAAO,EAAE;IAC9B,MAAMC,KAAK,GAAGP,OAAO,CAACC,IAAI,EAAEI,CAAC,EAAE,CAAC,GAAGF,SAAS,EAAED,MAAM,CAACD,IAAI,CAAC,CAAC;IAC3D,IAAIM,KAAK,EAAE;MACT,OAAOA,KAAK;IACd;EACF;EAEA,OAAO,KAAK;AACd;AAEA,OAAO,MAAMC,UAAU,SAAShB,cAAc,CAAC;EAC7BiB,SAAS,GAAG,KAAK;EAIvBC,mBAAmB,GAC3B,EAAE;EAEIC,YAAY,GAGhB,IAAIC,GAAG,CAAC,CAAC;EAEb,CAACC,cAAc,GAAY,KAAK;EAEhC,CAACC,cAAc,GAAsB,IAAI;EAEzC,CAACC,mBAAmB,GAAkB,IAAI;EAElCC,WAAWA,CACjBC,QAAkB,EAClBX,OAA2B,EACXY,WAA+B,EAC/CjB,IAAY,EACZkB,IAAc,EACdC,OAAqD,EACrDC,aAAuB,EACvBC,eAAsD,EACnCC,YAAY,GAAG,IAAIX,GAAG,CAGvC,CAAC,EACMY,YAAY,GAAG,IAAIZ,GAAG,CAAgC,CAAC,EAChEa,UAAU,GAAG,CAAC,EACd;IACA,KAAK,CACHR,QAAQ,EACRI,aAAa,EACbD,OAAO,EACPK,UAAU,EACVxB,IAAI,EACJkB,IAAI,EACJb,OAAO,EACPkB,YACF,CAAC;IAAC,KAtBcN,WAA+B,GAA/BA,WAA+B;IAAA,KAM5BK,YAAY,GAAZA,YAAY;IAAA,KAItBC,YAAY,GAAZA,YAAY;IAcrB,IAAI,CAACF,eAAe,GAClBA,eAAe,IACfL,QAAQ,CAACS,cAAc,CACrBT,QAAQ,EACRhB,IAAI,EACJiB,WAAW,EACXZ,OAAO,CAAC,CAAC,CAAC,EAAEqB,GAAG,IAAIV,QAAQ,CAACU,GAC9B,CAAC;IAEH,IAAI,IAAI,CAACL,eAAe,CAACM,IAAI,KAAKC,SAAS,EAAE;MAC3CZ,QAAQ,CAACa,KAAK,CAACC,mBAAmB,CAAC9B,IAAI,EAAE,IAAI,CAACqB,eAAe,CAACM,IAAI,CAAC;IACrE;IAEA,MAAMA,IAAI,GACR,IAAI,CAACN,eAAe,CAACU,SAAS,KAAK,SAAS,GACxC,WAAW,GACX,IAAI,CAACC,YAAY,IAAIlC,UAAU;IAErC,IAAI,CAAC4B,GAAG,CAACO,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,EAAEjC,IAAI,EAAEkB,IAAI,EAAES,IAAI,CAAC;EACpE;EAEA,IAAWO,OAAOA,CAAA,EAAG;IACnB,OAAO,IAAI,CAACb,eAAe,CAACU,SAAS,KAAK,SAAS;EACrD;EAEA,IAAWC,YAAYA,CAAA,EAAG;IACxB,OAAO,IAAI,CAACX,eAAe,CAACM,IAAI;EAClC;EAEA,IAAWd,cAAcA,CAAA,EAAsB;IAC7C,OAAO,IAAI,CAAC,CAACA,cAAc,EAAEA,cAAc,IAAI,IAAI,CAAC,CAACA,cAAc;EACrE;EAEA,IAAWsB,eAAeA,CAAA,EAAkB;IAC1C,OACE,IAAI,CAAC,CAACrB,mBAAmB,IAAI,IAAI,CAACD,cAAc,EAAEsB,eAAe,IAAI,IAAI;EAE7E;EAEA,OAAcC,UAAUA,CACtBpB,QAAkB,EAClBhB,IAAY,EACZkB,IAAc,EACdmB,UAA8B,EAClB;IACZ,MAAMC,OAAO,GAAG/B,UAAU,CAACgC,MAAM,CAACvB,QAAQ,EAAE,IAAI,EAAEhB,IAAI,EAAEkB,IAAI,EAAEmB,UAAU,CAAC;IACzE/C,SAAS,CAACgD,OAAO,KAAK,MAAM,EAAE,eAAe,CAAC;IAE9C,OAAOA,OAAO;EAChB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAiBC,MAAMA,CACrBvB,QAAkB,EAClBf,MAA+B,EAC/BD,IAAY,EACZkB,IAAc,EACdmB,UAA8B,EACT;IACrB,MAAM;MAAER,KAAK;MAAEW;IAAa,CAAC,GAAGxB,QAAQ;IACxC,OAAOwB,YAAY,CAACC,IAAI,CAAC,kBAAkB,EAAE,MAAM;MACjD,MAAM,CAACC,MAAM,EAAEC,UAAU,CAAC,GAAGpC,UAAU,CAACqC,WAAW,CACjD5B,QAAQ,EACRf,MAAM,GACF;QACEO,SAAS,EAAEP,MAAM,CAACO,SAAS;QAC3BkB,GAAG,EAAEzB,MAAM,CAACyB,GAAG;QACf1B,IAAI,EAAEC,MAAM,CAACD,IAAI;QACjBK,OAAO,EAAEJ,MAAM,CAACI,OAAO;QACvBwC,KAAK,EAAE5C,MAAM,CAAC4C;MAChB,CAAC,GACD,IAAI,EACR7C,IAAI,EACJkB,IAAI,EACJmB,UACF,CAAC;MAED,IAAIK,MAAM,KAAK,QAAQ,EAAE;QACvBb,KAAK,CAACiB,GAAG,CAAC,aAAa,EAAE9C,IAAI,EAAE2C,UAAU,CAAC;MAC5C;MAEA,OAAOD,MAAM,KAAK,MAAM,GAAG,MAAM,GAAGC,UAAU;IAChD,CAAC,CAAC;EACJ;EAEA,OAAeC,WAAWA,CACxB5B,QAAkB,EAClBf,MAA+B,EAC/BD,IAAY,EACZkB,IAAc,EACdmB,UAA8B,EACe;IAC7C,MAAM;MAAER;IAAM,CAAC,GAAGb,QAAQ;IAE1B,MAAM+B,MAAM,GAAGlB,KAAK,CAACmB,GAAG,CAAC,aAAa,EAAEhD,IAAI,CAAC;IAC7C,MAAMiD,OAAO,GACXZ,UAAU,KAAKT,SAAS,GACpBC,KAAK,CAACC,mBAAmB,CAAC9B,IAAI,EAAEqC,UAAU,CAAC,GAC3C,KAAK;IAEX,IAAI,CAACU,MAAM,EAAEvC,SAAS,IAAIuC,MAAM,EAAEb,OAAO,EAAE;MACzC,OAAO,CAAC,QAAQ,EAAEa,MAAM,CAAC;IAC3B;IAEA,MAAM5B,OAAO,GAAG4B,MAAM,EAAE5B,OAAO;IAC/B,MAAMC,aAAa,GAAG2B,MAAM,EAAE3B,aAAa,IAAI,EAAE;IAEjD,MAAM8B,UAAU,GAAGH,MAAM,EAAE7B,IAAI,GAAGzB,SAAS,CAACsD,MAAM,CAAC7B,IAAI,EAAEA,IAAI,CAAC,GAAGA,IAAI;IAErE,IAAI6B,MAAM,EAAEvC,SAAS,EAAE;MACrBuC,MAAM,CAACrB,GAAG,CAAC,2BAA2B,EAAEqB,MAAM,CAAC3B,aAAa,CAAC;IAC/D;IAEA,IAAI,CAAC6B,OAAO,IAAIF,MAAM,IAAI,CAACA,MAAM,CAACvC,SAAS,EAAE;MAC3C,MAAM2C,MAAM,GAAGlD,MAAM,IAAIF,OAAO,CAACC,IAAI,EAAEC,MAAM,CAAC;MAC9C,IAAIkD,MAAM,EAAE;QACVlD,MAAM,CAACyB,GAAG,CAAC,iCAAiC,EAAE1B,IAAI,CAAC;MACrD;MAEA,IAAIC,MAAM,IAAI,CAAC8C,MAAM,CAAC1C,OAAO,CAAC+C,GAAG,CAAEhD,CAAC,IAAKA,CAAC,CAACJ,IAAI,CAAC,CAACG,QAAQ,CAACF,MAAM,CAACD,IAAI,CAAC,EAAE;QACtE+C,MAAM,CAAC1C,OAAO,CAACgD,IAAI,CAACpD,MAAM,CAAC;MAC7B;MAEA,IAAIT,UAAU,CAACuD,MAAM,CAAC7B,IAAI,EAAEgC,UAAU,CAAC,EAAE;QACvCH,MAAM,CAACrB,GAAG,CAAC,WAAW,EAAE1B,IAAI,CAAC;QAC7B,OAAO,CAACmD,MAAM,GAAG,MAAM,GAAG,QAAQ,EAAEJ,MAAM,CAAC;MAC7C;MAEAA,MAAM,CAACrB,GAAG,CACR,6DAA6D,EAC7DR,IAAI,EACJ6B,MAAM,EAAE7B,IACV,CAAC;MAED,OAAO,CAACiC,MAAM,GAAG,MAAM,GAAG,SAAS,EAAEJ,MAAM,CAACO,SAAS,CAACJ,UAAU,CAAC,CAAC;IACpE;IAEA,MAAMK,aAAa,GAAG,IAAIhD,UAAU,CAClCS,QAAQ,EACRf,MAAM,GAAG,CAACA,MAAM,CAAC,GAAG,EAAE,EACtBoC,UAAU,EACVrC,IAAI,EACJkD,UAAU,EACV/B,OAAO,EACPC,aAAa,EACbQ,SAAS,EACTmB,MAAM,IAAI,cAAc,IAAIA,MAAM,GAAGA,MAAM,CAACzB,YAAY,GAAGM,SAAS,EACpEmB,MAAM,IAAI,cAAc,IAAIA,MAAM,GAAGA,MAAM,CAACxB,YAAY,GAAGK,SAAS,EACpEmB,MAAM,GAAGA,MAAM,CAACvB,UAAU,GAAG,CAAC,GAAG,CACnC,CAAC;IAED,IAAIuB,MAAM,IAAI,CAACA,MAAM,CAACvC,SAAS,EAAE;MAC/BuC,MAAM,CAACrB,GAAG,CAAC,oCAAoC,CAAC;MAChDqB,MAAM,CAACO,SAAS,CAACC,aAAa,CAAC;IACjC;IAEA,OAAO,CAAC,SAAS,EAAEA,aAAa,CAAC;EACnC;EAEOC,aAAaA,CAACC,UAAiC,EAAQ;IAC5D,IAAI,CAACnC,YAAY,CAACoC,MAAM,CAACD,UAAU,CAACE,MAAM,CAAC;IAC3C,IAAI,CAACpC,YAAY,CAACqC,GAAG,CAACH,UAAU,CAACE,MAAM,EAAEF,UAAU,CAAC;EACtD;EAEOI,cAAcA,CACnB7D,IAAY,EACZyD,UAA0C,EACpC;IACN,IAAI,CAACnC,YAAY,CAACsC,GAAG,CAAC5D,IAAI,EAAEyD,UAAU,CAAC;EACzC;EAEOK,mBAAmBA,CAAA,EAAG;IAC3B,IAAI,IAAI,CAACjD,cAAc,EAAE;MACvB,IAAI,CAACa,GAAG,CAAC,YAAY,CAAC;MACtB,MAAM,IAAI/B,UAAU,CAAC,YAAY,CAAC;IACpC;EACF;EAEOoE,iBAAiBA,CAAA,EAAG;IACzB,IAAI,IAAI,CAAC5B,eAAe,KAAK,IAAI,EAAE;MACjC,IAAI,CAACT,GAAG,CAAC,iBAAiB,CAAC;MAC3B,MAAM,IAAI7B,0BAA0B,CAAC,IAAI,CAACgB,cAAc,IAAI,IAAI,CAAC;IACnE;EACF;EAEOmD,YAAYA,CAIjBC,UAAiB,EACjBC,IAAqB,EACrBC,WAA+B,GAAG,IAAI,EACjB;IACrB,IAAI,CAAC,IAAI,CAACzD,YAAY,CAAC0D,GAAG,CAACH,UAAU,CAAC,EAAE;MACtC,IAAI,CAACvD,YAAY,CAACkD,GAAG,CAACK,UAAU,EAAE,IAAItD,GAAG,CAAC,CAAC,CAAC;IAC9C;IAEA,MAAMkB,KAAK,GAAG,IAAI,CAACnB,YAAY,CAACsC,GAAG,CAACiB,UAAU,CAAE;IAChD,MAAMlB,MAAM,GAAGlB,KAAK,CAACmB,GAAG,CAACkB,IAAI,CAAC;IAC9B,IAAInB,MAAM,IAAI,CAACA,MAAM,CAACoB,WAAW,EAAEE,OAAO,EAAE;MAC1C,OAAOtB,MAAM;IACf;IAEA,MAAMuB,SAAS,GAAG,IAAI1E,UAAU,CAC9BqE,UAAU,EACV,IAAI,CAACjD,QAAQ,EACb,IAAI,EACJkD,IAAI,EACJC,WACF,CAAC;IAEDtC,KAAK,CAAC+B,GAAG,CAACM,IAAI,EAAEI,SAAS,CAAC;IAE1B,IAAI,CAACtD,QAAQ,CAACwB,YAAY,CAAC+B,eAAe,CAAC,IAAI,CAAC1B,KAAK,EAAE;MACrD2B,IAAI,EAAE,eAAe;MACrBP,UAAU;MACVQ,SAAS,EAAEH,SAAS,CAACI;IACvB,CAAC,CAAC;IAEF,OAAOJ,SAAS;EAClB;EAEOK,WAAWA,CAChB3E,IAAY,EACZkB,IAAc,EACdmB,UAAmB,EACE;IACrB,OAAO9B,UAAU,CAACgC,MAAM,CAAC,IAAI,CAACvB,QAAQ,EAAE,IAAI,EAAEhB,IAAI,EAAEkB,IAAI,EAAEmB,UAAU,CAAC;EACvE;EAEOuC,eAAeA,CAAA,EAAG;IACvB,MAAMxD,aAAa,GAAG3B,SAAS,CAAC,IAAI,CAAC2B,aAAa,EAAE,IAAI,CAACF,IAAI,CAAC;IAC9D,IAAI,CAACQ,GAAG,CAAC,mCAAmC,EAAEN,aAAa,CAAC;IAE5D,OAAO,IAAI1B,mBAAmB,CAC5B,IAAI,CAACsB,QAAQ,EACbI,aAAa,EACb,IAAI,CAACyD,YAAY,EACjB,IAAI,CAACrD,UAAU,GAAG,CAAC,EACnB,IAAI,CAACxB,IAAI,EACT,IAAI,CAACkB,IAAI,EACT,IAAI,CAACb,OAAO,EACZ,IAAI,CAACkB,YACP,CAAC;EACH;EAEOuD,aAAaA,CAAC9E,IAAY,EAAqC;IACpE,OAAO,IAAI,CAACuB,YAAY,CAACyB,GAAG,CAAChD,IAAI,CAAC;EACpC;EAEO+E,cAAcA,CACnB/E,IAAY,EACgC;IAC5C,OAAO,IAAI,CAACsB,YAAY,CAAC0B,GAAG,CAAChD,IAAI,CAAC;EACpC;EAEOY,cAAcA,CAAA,EAAG;IACtB,OAAO,IAAI,CAAC,CAACA,cAAc;EAC7B;EAEOoE,WAAWA,CAACC,QAA6C,EAAE;IAChE,IAAI,IAAI,CAAC,CAACpE,cAAc,EAAE;MACxBoE,QAAQ,CAAC,IAAI,CAAC,CAACpE,cAAc,CAAC;MAC9B,OAAO,MAAM,CAAC,CAAC;IACjB;IAEA,IAAI,CAACJ,mBAAmB,CAAC4C,IAAI,CAAC4B,QAAQ,CAAC;IAEvC,OAAO,MAAM;MACX,MAAMC,KAAK,GAAG,IAAI,CAACzE,mBAAmB,CAAC0E,OAAO,CAACF,QAAQ,CAAC;MACxD,IAAIC,KAAK,IAAI,CAAC,EAAE;QACd,IAAI,CAACzE,mBAAmB,CAAC2E,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;MAC3C;IACF,CAAC;EACH;EAEOG,kBAAkBA,CAACC,GAAgC,EAAE;IAC1D,IAAI,CAAC,CAAC1E,cAAc,GAAG2E,OAAO,CAACD,GAAG,EAAEE,QAAQ,CAAC;IAC7C,IAAI,CAAC,CAAC1E,mBAAmB,GAAGwE,GAAG,EAAE3D,IAAI,IAAI,IAAI;IAE7C,IAAI,CAACX,QAAQ,CAACwB,YAAY,CAAC+B,eAAe,CAAC,IAAI,CAAC1B,KAAK,EAAE;MACrD4C,MAAM,EAAEH,GAAG,KAAK,IAAI;MACpBd,IAAI,EAAE;IACR,CAAC,CAAC;EACJ;EAEQlB,SAASA,CAACoC,mBAA0C,EAAc;IACxE,MAAMnC,aAAa,GACjBmC,mBAAmB,YAAYnF,UAAU,GACrCmF,mBAAmB,GACnB,IAAInF,UAAU,CACZ,IAAI,CAACS,QAAQ,EACb,IAAI,CAACX,OAAO,EACZ,IAAI,CAACY,WAAW,EAChB,IAAI,CAACjB,IAAI,EACT0F,mBAAmB,EACnB,IAAI,CAACvE,OAAO,EACZ,IAAI,CAACC,aAAa,EAClB,IAAI,CAACC,eAAe,EACpB,IAAI,CAACC,YAAY,EACjB,IAAI,CAACC,YAAY,EACjB,IAAI,CAACC,UAAU,GAAG,CACpB,CAAC;IAEP,IAAI,CAACR,QAAQ,CAACwB,YAAY,CAAC+B,eAAe,CAAC,IAAI,CAAC1B,KAAK,EAAE;MACrD2B,IAAI,EAAE,YAAY;MAClBmB,IAAI,EAAEpC,aAAa,CAACV;IACtB,CAAC,CAAC;IACF,IAAI,CAACnB,GAAG,CACN,6BAA6B,EAC7B6B,aAAa,CAACvD,IAAI,EAClB,IAAI,CAACkB,IAAI,EACTqC,aAAa,CAACrC,IAChB,CAAC;IACD,IAAI,CAAC,CAACL,cAAc,GAAG0C,aAAa;IACpC,IAAI,CAAC9C,mBAAmB,CAACmF,OAAO,CAAEC,OAAO,IAAKA,OAAO,CAACtC,aAAa,CAAC,CAAC;IAErE,OAAOA,aAAa;EACtB;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluatedEntrypoint.js","names":["BaseEntrypoint","EvaluatedEntrypoint","evaluated","ignored"],"sources":["../../src/transform/EvaluatedEntrypoint.ts"],"sourcesContent":["import type { Debugger } from '@wyw-in-js/shared';\n\nimport { BaseEntrypoint } from './BaseEntrypoint';\n\nexport interface IEvaluatedEntrypoint {\n evaluated: true;\n evaluatedOnly: string[];\n exports: Record<string | symbol, unknown>;\n generation: number;\n ignored: false;\n log: Debugger;\n only: string[];\n}\n\nexport class EvaluatedEntrypoint\n extends BaseEntrypoint\n implements IEvaluatedEntrypoint\n{\n public readonly evaluated = true;\n\n public readonly ignored = false;\n}\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ,kBAAkB;AAYjD,OAAO,MAAMC,mBAAmB,SACtBD,cAAc,CAExB;EACkBE,SAAS,GAAG,IAAI;EAEhBC,OAAO,GAAG,KAAK;AACjC"}
1
+ {"version":3,"file":"EvaluatedEntrypoint.js","names":["BaseEntrypoint","EvaluatedEntrypoint","evaluated","ignored"],"sources":["../../src/transform/EvaluatedEntrypoint.ts"],"sourcesContent":["import type { Debugger } from '@wyw-in-js/shared';\n\nimport { BaseEntrypoint } from './BaseEntrypoint';\nimport type { IEntrypointDependency } from './Entrypoint.types';\n\nexport interface IEvaluatedEntrypoint {\n dependencies: Map<string, IEntrypointDependency>;\n evaluated: true;\n evaluatedOnly: string[];\n exports: Record<string | symbol, unknown>;\n generation: number;\n ignored: false;\n log: Debugger;\n only: string[];\n}\n\nexport class EvaluatedEntrypoint\n extends BaseEntrypoint\n implements IEvaluatedEntrypoint\n{\n public readonly evaluated = true;\n\n public readonly ignored = false;\n}\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ,kBAAkB;AAcjD,OAAO,MAAMC,mBAAmB,SACtBD,cAAc,CAExB;EACkBE,SAAS,GAAG,IAAI;EAEhBC,OAAO,GAAG,KAAK;AACjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","names":["SourceMapGenerator","createStylisPreprocessor","extractCssFromAst","rules","originalCode","options","mappings","cssText","preprocessor","selector","text","Object","keys","forEach","index","push","generated","line","column","original","start","name","source","atom","cssSourceMapText","length","generator","file","filename","replace","mapping","addMapping","setSourceContent","toString","extract","services","entrypoint","processors","data","loadedAndParsed","evaluator","Error","allRules","allReplacements","processor","artifacts","artifact","replacements","code"],"sources":["../../../src/transform/generators/extract.ts"],"sourcesContent":["import type { Mapping } from 'source-map';\nimport { SourceMapGenerator } from 'source-map';\n\nimport type { Replacements, Rules } from '@wyw-in-js/shared';\n\nimport type { Options, PreprocessorFn } from '../../types';\nimport type { IExtractAction, SyncScenarioForAction } from '../types';\nimport { createStylisPreprocessor } from './createStylisPreprocessor';\n\nfunction extractCssFromAst(\n rules: Rules,\n originalCode: string,\n options: Pick<Options, 'preprocessor' | 'filename' | 'outputFilename'>\n): { cssSourceMapText: string; cssText: string; rules: Rules } {\n const mappings: Mapping[] = [];\n\n let cssText = '';\n\n let preprocessor: PreprocessorFn;\n if (typeof options.preprocessor === 'function') {\n // eslint-disable-next-line prefer-destructuring\n preprocessor = options.preprocessor;\n } else {\n switch (options.preprocessor) {\n case 'none':\n preprocessor = (selector, text) => `${selector} {${text}}\\n`;\n break;\n case 'stylis':\n default:\n preprocessor = createStylisPreprocessor(options);\n }\n }\n\n Object.keys(rules).forEach((selector, index) => {\n mappings.push({\n generated: {\n line: index + 1,\n column: 0,\n },\n original: rules[selector].start!,\n name: selector,\n source: '',\n });\n\n if (rules[selector].atom) {\n // For atoms, we just directly insert cssText, to give the atomizer full control over the rules\n cssText += `${rules[selector].cssText}\\n`;\n } else {\n // Run each rule through stylis to support nesting\n cssText += `${preprocessor(selector, rules[selector].cssText)}\\n`;\n }\n });\n\n return {\n cssText,\n rules,\n\n get cssSourceMapText() {\n if (mappings?.length) {\n const generator = new SourceMapGenerator({\n file: options.filename.replace(/\\.js$/, '.css'),\n });\n\n mappings.forEach((mapping) =>\n generator.addMapping({ ...mapping, source: options.filename })\n );\n\n generator.setSourceContent(options.filename, originalCode);\n\n return generator.toString();\n }\n\n return '';\n },\n };\n}\n\n/**\n * Extract artifacts (e.g. CSS) from processors\n */\n// eslint-disable-next-line require-yield\nexport function* extract(\n this: IExtractAction\n): SyncScenarioForAction<IExtractAction> {\n const { options } = this.services;\n const { entrypoint } = this;\n const { processors } = this.data;\n const { loadedAndParsed } = entrypoint;\n if (loadedAndParsed.evaluator === 'ignored') {\n throw new Error('entrypoint was ignored');\n }\n\n let allRules: Rules = {};\n const allReplacements: Replacements = [];\n processors.forEach((processor) => {\n processor.artifacts.forEach((artifact) => {\n if (artifact[0] !== 'css') return;\n const [rules, replacements] = artifact[1] as [\n rules: Rules,\n sourceMapReplacements: Replacements,\n ];\n\n allRules = {\n ...allRules,\n ...rules,\n };\n\n allReplacements.push(...replacements);\n });\n });\n\n return {\n ...extractCssFromAst(allRules, loadedAndParsed.code, options),\n replacements: allReplacements,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","names":["SourceMapGenerator","createStylisPreprocessor","extractCssFromAst","rules","originalCode","options","mappings","cssText","preprocessor","selector","text","Object","keys","forEach","index","push","generated","line","column","original","start","name","source","atom","cssSourceMapText","length","generator","file","filename","replace","mapping","addMapping","setSourceContent","toString","extract","services","entrypoint","processors","data","loadedAndParsed","evaluator","Error","allRules","allReplacements","processor","artifacts","artifact","replacements","code"],"sources":["../../../src/transform/generators/extract.ts"],"sourcesContent":["import type { Mapping } from 'source-map';\nimport { SourceMapGenerator } from 'source-map';\n\nimport type { Replacements, Rules } from '@wyw-in-js/shared';\n\nimport type { Options, PreprocessorFn } from '../../types';\nimport type { IExtractAction, SyncScenarioForAction } from '../types';\nimport { createStylisPreprocessor } from './createStylisPreprocessor';\n\nfunction extractCssFromAst(\n rules: Rules,\n originalCode: string,\n options: Pick<\n Options,\n 'preprocessor' | 'filename' | 'outputFilename' | 'prefixer'\n >\n): { cssSourceMapText: string; cssText: string; rules: Rules } {\n const mappings: Mapping[] = [];\n\n let cssText = '';\n\n let preprocessor: PreprocessorFn;\n if (typeof options.preprocessor === 'function') {\n // eslint-disable-next-line prefer-destructuring\n preprocessor = options.preprocessor;\n } else {\n switch (options.preprocessor) {\n case 'none':\n preprocessor = (selector, text) => `${selector} {${text}}\\n`;\n break;\n case 'stylis':\n default:\n preprocessor = createStylisPreprocessor(options);\n }\n }\n\n Object.keys(rules).forEach((selector, index) => {\n mappings.push({\n generated: {\n line: index + 1,\n column: 0,\n },\n original: rules[selector].start!,\n name: selector,\n source: '',\n });\n\n if (rules[selector].atom) {\n // For atoms, we just directly insert cssText, to give the atomizer full control over the rules\n cssText += `${rules[selector].cssText}\\n`;\n } else {\n // Run each rule through stylis to support nesting\n cssText += `${preprocessor(selector, rules[selector].cssText)}\\n`;\n }\n });\n\n return {\n cssText,\n rules,\n\n get cssSourceMapText() {\n if (mappings?.length) {\n const generator = new SourceMapGenerator({\n file: options.filename.replace(/\\.js$/, '.css'),\n });\n\n mappings.forEach((mapping) =>\n generator.addMapping({ ...mapping, source: options.filename })\n );\n\n generator.setSourceContent(options.filename, originalCode);\n\n return generator.toString();\n }\n\n return '';\n },\n };\n}\n\n/**\n * Extract artifacts (e.g. CSS) from processors\n */\n// eslint-disable-next-line require-yield\nexport function* extract(\n this: IExtractAction\n): SyncScenarioForAction<IExtractAction> {\n const { options } = this.services;\n const { entrypoint } = this;\n const { processors } = this.data;\n const { loadedAndParsed } = entrypoint;\n if (loadedAndParsed.evaluator === 'ignored') {\n throw new Error('entrypoint was ignored');\n }\n\n let allRules: Rules = {};\n const allReplacements: Replacements = [];\n processors.forEach((processor) => {\n processor.artifacts.forEach((artifact) => {\n if (artifact[0] !== 'css') return;\n const [rules, replacements] = artifact[1] as [\n rules: Rules,\n sourceMapReplacements: Replacements,\n ];\n\n allRules = {\n ...allRules,\n ...rules,\n };\n\n allReplacements.push(...replacements);\n });\n });\n\n return {\n ...extractCssFromAst(allRules, loadedAndParsed.code, options),\n replacements: allReplacements,\n };\n}\n"],"mappings":"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"}
package/esm/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { BabelFile, PluginPass } from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\nimport type { File, Program } from '@babel/types';\nimport type { RawSourceMap } from 'source-map';\n\nimport type { BaseProcessor } from '@wyw-in-js/processor-utils';\nimport type {\n Debugger,\n Replacement,\n Rules,\n StrictOptions,\n} from '@wyw-in-js/shared';\n\nimport type { WYWTransformMetadata } from './utils/TransformMetadata';\n\nexport type PluginOptions = StrictOptions & {\n configFile?: string | false;\n stage?: Stage;\n};\n\nexport type ParentEntrypoint = {\n evaluated: boolean;\n log: Debugger;\n name: string;\n parents: ParentEntrypoint[];\n seqId: number;\n};\n\nexport type Dependencies = string[];\n\nexport interface IPluginState extends PluginPass {\n dependencies: Dependencies;\n file: BabelFile & {\n metadata: {\n wywInJS?: WYWTransformMetadata;\n };\n };\n processors: BaseProcessor[];\n}\n\nexport interface ITransformFileResult {\n code: string;\n metadata: WYWTransformMetadata | null;\n}\n\nexport type Stage = 'preeval' | 'collect';\n\nexport type Result = {\n code: string;\n cssSourceMapText?: string;\n cssText?: string;\n dependencies?: string[];\n replacements?: Replacement[];\n rules?: Rules;\n sourceMap?: RawSourceMap | null;\n};\n\nexport type Options = {\n filename: string;\n inputSourceMap?: RawSourceMap;\n outputFilename?: string;\n pluginOptions?: Partial<PluginOptions>;\n preprocessor?: Preprocessor;\n root?: string;\n};\n\nexport type PreprocessorFn = (selector: string, cssText: string) => string;\nexport type Preprocessor = 'none' | 'stylis' | PreprocessorFn | void;\n\nexport type MissedBabelCoreTypes = {\n File: new (\n options: { filename: string },\n file: { ast: File; code: string }\n ) => { path: NodePath<Program> };\n};\n\nexport type JSONValue =\n | null\n | string\n | number\n | boolean\n | JSONObject\n | JSONArray;\n\nexport interface JSONObject {\n [x: string]: JSONValue;\n}\n\nexport type JSONArray = Array<JSONValue>;\n\nexport type Serializable = JSONValue;\n\n/**\n * CSS-related types\n */\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { BabelFile, PluginPass } from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\nimport type { File, Program } from '@babel/types';\nimport type { RawSourceMap } from 'source-map';\n\nimport type { BaseProcessor } from '@wyw-in-js/processor-utils';\nimport type {\n Debugger,\n Replacement,\n Rules,\n StrictOptions,\n} from '@wyw-in-js/shared';\n\nimport type { WYWTransformMetadata } from './utils/TransformMetadata';\n\nexport type PluginOptions = StrictOptions & {\n configFile?: string | false;\n stage?: Stage;\n};\n\nexport type ParentEntrypoint = {\n evaluated: boolean;\n log: Debugger;\n name: string;\n parents: ParentEntrypoint[];\n seqId: number;\n};\n\nexport type Dependencies = string[];\n\nexport interface IPluginState extends PluginPass {\n dependencies: Dependencies;\n file: BabelFile & {\n metadata: {\n wywInJS?: WYWTransformMetadata;\n };\n };\n processors: BaseProcessor[];\n}\n\nexport interface ITransformFileResult {\n code: string;\n metadata: WYWTransformMetadata | null;\n}\n\nexport type Stage = 'preeval' | 'collect';\n\nexport type Result = {\n code: string;\n cssSourceMapText?: string;\n cssText?: string;\n dependencies?: string[];\n replacements?: Replacement[];\n rules?: Rules;\n sourceMap?: RawSourceMap | null;\n};\n\nexport type Options = {\n filename: string;\n inputSourceMap?: RawSourceMap;\n outputFilename?: string;\n pluginOptions?: Partial<PluginOptions>;\n prefixer?: boolean;\n preprocessor?: Preprocessor;\n root?: string;\n};\n\nexport type PreprocessorFn = (selector: string, cssText: string) => string;\nexport type Preprocessor = 'none' | 'stylis' | PreprocessorFn | void;\n\nexport type MissedBabelCoreTypes = {\n File: new (\n options: { filename: string },\n file: { ast: File; code: string }\n ) => { path: NodePath<Program> };\n};\n\nexport type JSONValue =\n | null\n | string\n | number\n | boolean\n | JSONObject\n | JSONArray;\n\nexport interface JSONObject {\n [x: string]: JSONValue;\n}\n\nexport type JSONArray = Array<JSONValue>;\n\nexport type Serializable = JSONValue;\n\n/**\n * CSS-related types\n */\n"],"mappings":""}
package/lib/cache.js CHANGED
@@ -5,8 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.TransformCacheCollection = void 0;
7
7
  var _crypto = require("crypto");
8
+ var _nodeFs = _interopRequireDefault(require("node:fs"));
8
9
  var _shared = require("@wyw-in-js/shared");
9
10
  var _getFileIdx = require("./utils/getFileIdx");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
12
  function hashContent(content) {
11
13
  return (0, _crypto.createHash)('sha256').update(content).digest('hex');
12
14
  }
@@ -31,6 +33,10 @@ class TransformCacheCollection {
31
33
  return cache.get(key) === value ? 'unchanged' : 'updated';
32
34
  });
33
35
  cache.set(key, value);
36
+ if ('initialCode' in value) {
37
+ var _value$initialCode;
38
+ this.contentHashes.set(key, hashContent((_value$initialCode = value.initialCode) !== null && _value$initialCode !== void 0 ? _value$initialCode : ''));
39
+ }
34
40
  }
35
41
  clear(cacheName) {
36
42
  if (cacheName === 'all') {
@@ -72,6 +78,19 @@ class TransformCacheCollection {
72
78
  });
73
79
  }
74
80
  invalidateIfChanged(filename, content) {
81
+ const fileEntrypoint = this.get('entrypoints', filename);
82
+
83
+ // We need to check all dependencies of the file
84
+ // because they might have changed as well.
85
+ if (fileEntrypoint) {
86
+ for (const [, dependency] of fileEntrypoint.dependencies) {
87
+ const dependencyFilename = dependency.resolved;
88
+ if (dependencyFilename) {
89
+ const dependencyContent = _nodeFs.default.readFileSync(dependencyFilename, 'utf8');
90
+ this.invalidateIfChanged(dependencyFilename, dependencyContent);
91
+ }
92
+ }
93
+ }
75
94
  const hash = this.contentHashes.get(filename);
76
95
  const newHash = hashContent(content);
77
96
  if (hash !== newHash) {
package/lib/cache.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","names":["_crypto","require","_shared","_getFileIdx","hashContent","content","createHash","update","digest","cacheLogger","logger","extend","cacheNames","loggers","reduce","acc","key","TransformCacheCollection","contentHashes","Map","constructor","caches","entrypoints","exports","add","cacheName","value","cache","getFileIdx","has","get","set","clear","forEach","name","delete","invalidate","res","undefined","invalidateForFile","filename","invalidateIfChanged","hash","newHash"],"sources":["../src/cache.ts"],"sourcesContent":["import { createHash } from 'crypto';\n\nimport { logger } from '@wyw-in-js/shared';\n\nimport type { Entrypoint } from './transform/Entrypoint';\nimport type { IEvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';\nimport { getFileIdx } from './utils/getFileIdx';\n\nfunction hashContent(content: string) {\n return createHash('sha256').update(content).digest('hex');\n}\n\ninterface ICaches {\n entrypoints: Map<string, Entrypoint | IEvaluatedEntrypoint>;\n exports: Map<string, string[]>;\n}\n\ntype MapValue<T> = T extends Map<string, infer V> ? V : never;\n\nconst cacheLogger = logger.extend('cache');\n\nconst cacheNames = ['entrypoints', 'exports'] as const;\ntype CacheNames = (typeof cacheNames)[number];\n\nconst loggers = cacheNames.reduce(\n (acc, key) => ({\n ...acc,\n [key]: cacheLogger.extend(key),\n }),\n {} as Record<CacheNames, typeof logger>\n);\n\nexport class TransformCacheCollection {\n public readonly entrypoints: Map<string, Entrypoint | IEvaluatedEntrypoint>;\n\n public readonly exports: Map<string, string[]>;\n\n private contentHashes = new Map<string, string>();\n\n constructor(caches: Partial<ICaches> = {}) {\n this.entrypoints = caches.entrypoints || new Map();\n this.exports = caches.exports || new Map();\n }\n\n public add<\n TCache extends CacheNames,\n TValue extends MapValue<ICaches[TCache]>,\n >(cacheName: TCache, key: string, value: TValue): void {\n const cache = this[cacheName] as Map<string, TValue>;\n loggers[cacheName]('%s:add %s %f', getFileIdx(key), key, () => {\n if (!cache.has(key)) {\n return 'added';\n }\n\n return cache.get(key) === value ? 'unchanged' : 'updated';\n });\n\n cache.set(key, value);\n }\n\n public clear(cacheName: CacheNames | 'all'): void {\n if (cacheName === 'all') {\n cacheNames.forEach((name) => {\n this.clear(name);\n });\n\n return;\n }\n\n loggers[cacheName]('clear');\n const cache = this[cacheName] as Map<string, unknown>;\n\n cache.clear();\n }\n\n public delete(cacheName: CacheNames, key: string): void {\n this.invalidate(cacheName, key);\n }\n\n public get<\n TCache extends CacheNames,\n TValue extends MapValue<ICaches[TCache]>,\n >(cacheName: TCache, key: string): TValue | undefined {\n const cache = this[cacheName] as Map<string, TValue>;\n\n const res = cache.get(key);\n loggers[cacheName]('get', key, res === undefined ? 'miss' : 'hit');\n return res;\n }\n\n public has(cacheName: CacheNames, key: string): boolean {\n const cache = this[cacheName] as Map<string, unknown>;\n\n const res = cache.has(key);\n loggers[cacheName]('has', key, res);\n return res;\n }\n\n public invalidate(cacheName: CacheNames, key: string): void {\n const cache = this[cacheName] as Map<string, unknown>;\n if (!cache.has(key)) {\n return;\n }\n\n loggers[cacheName]('invalidate', key);\n\n cache.delete(key);\n }\n\n public invalidateForFile(filename: string) {\n cacheNames.forEach((cacheName) => {\n this.invalidate(cacheName, filename);\n });\n }\n\n public invalidateIfChanged(filename: string, content: string) {\n const hash = this.contentHashes.get(filename);\n const newHash = hashContent(content);\n\n if (hash !== newHash) {\n cacheLogger('content has changed, invalidate all for %s', filename);\n this.contentHashes.set(filename, newHash);\n this.invalidateForFile(filename);\n\n return true;\n }\n\n return false;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","names":["_crypto","require","_nodeFs","_interopRequireDefault","_shared","_getFileIdx","obj","__esModule","default","hashContent","content","createHash","update","digest","cacheLogger","logger","extend","cacheNames","loggers","reduce","acc","key","TransformCacheCollection","contentHashes","Map","constructor","caches","entrypoints","exports","add","cacheName","value","cache","getFileIdx","has","get","set","_value$initialCode","initialCode","clear","forEach","name","delete","invalidate","res","undefined","invalidateForFile","filename","invalidateIfChanged","fileEntrypoint","dependency","dependencies","dependencyFilename","resolved","dependencyContent","fs","readFileSync","hash","newHash"],"sources":["../src/cache.ts"],"sourcesContent":["import { createHash } from 'crypto';\nimport fs from 'node:fs';\nimport { logger } from '@wyw-in-js/shared';\n\nimport type { Entrypoint } from './transform/Entrypoint';\nimport type { IEvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';\nimport { getFileIdx } from './utils/getFileIdx';\n\nfunction hashContent(content: string) {\n return createHash('sha256').update(content).digest('hex');\n}\n\ninterface IBaseCachedEntrypoint {\n dependencies: Map<string, { resolved: string | null }>;\n initialCode?: string;\n}\n\ninterface ICaches<TEntrypoint extends IBaseCachedEntrypoint> {\n entrypoints: Map<string, TEntrypoint>;\n exports: Map<string, string[]>;\n}\n\ntype MapValue<T> = T extends Map<string, infer V> ? V : never;\n\nconst cacheLogger = logger.extend('cache');\n\nconst cacheNames = ['entrypoints', 'exports'] as const;\ntype CacheNames = (typeof cacheNames)[number];\n\nconst loggers = cacheNames.reduce(\n (acc, key) => ({\n ...acc,\n [key]: cacheLogger.extend(key),\n }),\n {} as Record<CacheNames, typeof logger>\n);\n\nexport class TransformCacheCollection<\n TEntrypoint extends IBaseCachedEntrypoint = Entrypoint | IEvaluatedEntrypoint,\n> {\n public readonly entrypoints: Map<string, TEntrypoint>;\n\n public readonly exports: Map<string, string[]>;\n\n private contentHashes = new Map<string, string>();\n\n constructor(caches: Partial<ICaches<TEntrypoint>> = {}) {\n this.entrypoints = caches.entrypoints || new Map();\n this.exports = caches.exports || new Map();\n }\n\n public add<\n TCache extends CacheNames,\n TValue extends MapValue<ICaches<TEntrypoint>[TCache]>,\n >(cacheName: TCache, key: string, value: TValue): void {\n const cache = this[cacheName] as Map<string, TValue>;\n loggers[cacheName]('%s:add %s %f', getFileIdx(key), key, () => {\n if (!cache.has(key)) {\n return 'added';\n }\n\n return cache.get(key) === value ? 'unchanged' : 'updated';\n });\n\n cache.set(key, value);\n\n if ('initialCode' in value) {\n this.contentHashes.set(key, hashContent(value.initialCode ?? ''));\n }\n }\n\n public clear(cacheName: CacheNames | 'all'): void {\n if (cacheName === 'all') {\n cacheNames.forEach((name) => {\n this.clear(name);\n });\n\n return;\n }\n\n loggers[cacheName]('clear');\n const cache = this[cacheName] as Map<string, unknown>;\n\n cache.clear();\n }\n\n public delete(cacheName: CacheNames, key: string): void {\n this.invalidate(cacheName, key);\n }\n\n public get<\n TCache extends CacheNames,\n TValue extends MapValue<ICaches<TEntrypoint>[TCache]>,\n >(cacheName: TCache, key: string): TValue | undefined {\n const cache = this[cacheName] as Map<string, TValue>;\n\n const res = cache.get(key);\n loggers[cacheName]('get', key, res === undefined ? 'miss' : 'hit');\n return res;\n }\n\n public has(cacheName: CacheNames, key: string): boolean {\n const cache = this[cacheName] as Map<string, unknown>;\n\n const res = cache.has(key);\n loggers[cacheName]('has', key, res);\n return res;\n }\n\n public invalidate(cacheName: CacheNames, key: string): void {\n const cache = this[cacheName] as Map<string, unknown>;\n if (!cache.has(key)) {\n return;\n }\n\n loggers[cacheName]('invalidate', key);\n\n cache.delete(key);\n }\n\n public invalidateForFile(filename: string) {\n cacheNames.forEach((cacheName) => {\n this.invalidate(cacheName, filename);\n });\n }\n\n public invalidateIfChanged(filename: string, content: string) {\n const fileEntrypoint = this.get('entrypoints', filename);\n\n // We need to check all dependencies of the file\n // because they might have changed as well.\n if (fileEntrypoint) {\n for (const [, dependency] of fileEntrypoint.dependencies) {\n const dependencyFilename = dependency.resolved;\n if (dependencyFilename) {\n const dependencyContent = fs.readFileSync(dependencyFilename, 'utf8');\n this.invalidateIfChanged(dependencyFilename, dependencyContent);\n }\n }\n }\n\n const hash = this.contentHashes.get(filename);\n const newHash = hashContent(content);\n\n if (hash !== newHash) {\n cacheLogger('content has changed, invalidate all for %s', filename);\n this.contentHashes.set(filename, newHash);\n this.invalidateForFile(filename);\n\n return true;\n }\n\n return false;\n }\n}\n"],"mappings":"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"}
@@ -116,7 +116,7 @@ class BaseEntrypoint {
116
116
  // eslint-disable-next-line no-plusplus
117
117
  seqId = entrypointSeqId++;
118
118
  #exports;
119
- constructor(services, evaluatedOnly, exports, generation, name, only, parents) {
119
+ constructor(services, evaluatedOnly, exports, generation, name, only, parents, dependencies) {
120
120
  var _parents$0$log$extend, _parents$, _parents$0$seqId, _parents$2;
121
121
  this.services = services;
122
122
  this.evaluatedOnly = evaluatedOnly;
@@ -124,8 +124,10 @@ class BaseEntrypoint {
124
124
  this.name = name;
125
125
  this.only = only;
126
126
  this.parents = parents;
127
+ this.dependencies = dependencies;
127
128
  this.idx = (0, _getFileIdx.getFileIdx)(name);
128
129
  this.log = (_parents$0$log$extend = (_parents$ = parents[0]) === null || _parents$ === void 0 ? void 0 : _parents$.log.extend(this.ref, '->')) !== null && _parents$0$log$extend !== void 0 ? _parents$0$log$extend : services.log.extend(this.ref);
130
+ this.dependencies = dependencies;
129
131
  let isExportsInherited = false;
130
132
  if (exports) {
131
133
  if (isProxy(exports)) {
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEntrypoint.js","names":["_getFileIdx","require","hasKey","obj","key","VALUES","Symbol","isProxy","createExports","log","exports","lazyFields","Set","Proxy","get","_target","value","Reflect","undefined","defaultValue","default","has","ownKeys","Object","keys","set","delete","defineProperty","descriptor","prev","_descriptor$get","v","call","_descriptor$get2","add","getOwnPropertyDescriptor","enumerable","configurable","EXPORTS","entrypointSeqId","BaseEntrypoint","seqId","constructor","services","evaluatedOnly","generation","name","only","parents","_parents$0$log$extend","_parents$","_parents$0$seqId","_parents$2","idx","getFileIdx","extend","ref","isExportsInherited","eventEmitter","entrypointEvent","class","filename","parentId","type","exportsProxy"],"sources":["../../src/transform/BaseEntrypoint.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Debugger } from '@wyw-in-js/shared';\n\nimport type { ParentEntrypoint } from '../types';\nimport { getFileIdx } from '../utils/getFileIdx';\n\nimport type { Services } from './types';\n\nconst hasKey = <TKey extends string | symbol>(\n obj: unknown,\n key: TKey\n): obj is Record<TKey, unknown> =>\n (typeof obj === 'object' || typeof obj === 'function') &&\n obj !== null &&\n key in obj;\n\nconst VALUES = Symbol('values');\n\nconst isProxy = (\n obj: unknown\n): obj is { [VALUES]: Record<string | symbol, unknown> } =>\n typeof obj === 'object' && obj !== null && VALUES in obj;\n\nexport const createExports = (log: Debugger) => {\n let exports: Record<string | symbol, unknown> = {};\n const lazyFields = new Set<string | symbol>();\n\n return new Proxy(exports, {\n get: (_target, key) => {\n if (key === VALUES) {\n return exports;\n }\n\n let value: unknown;\n if (key in exports) {\n value = exports[key];\n } else {\n // Support Object.prototype methods on `exports`\n // e.g `exports.hasOwnProperty`\n value = Reflect.get(exports, key);\n }\n\n if (value === undefined && 'default' in exports) {\n const defaultValue = exports.default;\n if (hasKey(defaultValue, key)) {\n log(\n '⚠️ %s has been found in `default`. It indicates that ESM to CJS conversion went wrong.',\n key\n );\n value = defaultValue[key];\n }\n }\n\n if (value !== undefined && lazyFields.has(key)) {\n value = (value as () => unknown)();\n }\n\n log('get %s: %o', key, value);\n return value;\n },\n has: (_target, key) => {\n if (key === VALUES) return true;\n return key in exports;\n },\n ownKeys: () => {\n return Object.keys(exports);\n },\n set: (_target, key, value) => {\n if (key === VALUES) {\n exports = value;\n return true;\n }\n\n if (key !== '__esModule') {\n log('set %s: %o', key, value);\n }\n\n if (value !== undefined) {\n exports[key] = value;\n lazyFields.delete(key);\n }\n\n return true;\n },\n defineProperty: (_target, key, descriptor) => {\n const { value } = descriptor;\n if (value !== undefined) {\n if (key !== '__esModule') {\n log('defineProperty %s with value %o', key, value);\n }\n\n exports[key] = value;\n lazyFields.delete(key);\n\n return true;\n }\n\n if ('get' in descriptor) {\n if (lazyFields.has(key)) {\n const prev = exports[key] as () => void;\n exports[key] = () => {\n const v = descriptor.get?.();\n if (v !== undefined) {\n return v;\n }\n\n return prev();\n };\n } else {\n const prev = exports[key];\n exports[key] = () => {\n const v = descriptor.get?.();\n if (v !== undefined) {\n return v;\n }\n\n return prev;\n };\n }\n\n lazyFields.add(key);\n log('defineProperty %s with getter', key);\n }\n\n return true;\n },\n getOwnPropertyDescriptor: (_target, key) => {\n if (key in exports)\n return {\n enumerable: true,\n configurable: true,\n };\n\n return undefined;\n },\n });\n};\n\nconst EXPORTS = Symbol('exports');\n\nlet entrypointSeqId = 0;\n\nexport abstract class BaseEntrypoint {\n public static createExports = createExports;\n\n public readonly idx: string;\n\n public readonly log: Debugger;\n\n // eslint-disable-next-line no-plusplus\n public readonly seqId = entrypointSeqId++;\n\n readonly #exports: Record<string | symbol, unknown>;\n\n protected constructor(\n protected services: Services,\n public readonly evaluatedOnly: string[],\n exports: Record<string | symbol, unknown> | undefined,\n public readonly generation: number,\n public readonly name: string,\n public readonly only: string[],\n public readonly parents: ParentEntrypoint[]\n ) {\n this.idx = getFileIdx(name);\n this.log =\n parents[0]?.log.extend(this.ref, '->') ?? services.log.extend(this.ref);\n\n let isExportsInherited = false;\n if (exports) {\n if (isProxy(exports)) {\n this.#exports = exports;\n isExportsInherited = true;\n } else {\n this.#exports = createExports(this.log);\n this.#exports[EXPORTS] = exports;\n }\n this.exports = exports;\n } else {\n this.#exports = BaseEntrypoint.createExports(this.log);\n }\n\n services.eventEmitter.entrypointEvent(this.seqId, {\n class: this.constructor.name,\n evaluatedOnly: this.evaluatedOnly,\n filename: name,\n generation,\n idx: this.idx,\n isExportsInherited,\n only,\n parentId: parents[0]?.seqId ?? null,\n type: 'created',\n });\n }\n\n public get exports(): Record<string | symbol, unknown> {\n if (EXPORTS in this.#exports) {\n return this.#exports[EXPORTS] as Record<string | symbol, unknown>;\n }\n\n return this.#exports;\n }\n\n public set exports(value: unknown) {\n if (isProxy(value)) {\n this.#exports[VALUES] = value[VALUES];\n } else {\n this.#exports[EXPORTS] = value;\n }\n }\n\n public get ref() {\n return `${this.idx}#${this.generation}`;\n }\n\n protected get exportsProxy() {\n return this.#exports;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"BaseEntrypoint.js","names":["_getFileIdx","require","hasKey","obj","key","VALUES","Symbol","isProxy","createExports","log","exports","lazyFields","Set","Proxy","get","_target","value","Reflect","undefined","defaultValue","default","has","ownKeys","Object","keys","set","delete","defineProperty","descriptor","prev","_descriptor$get","v","call","_descriptor$get2","add","getOwnPropertyDescriptor","enumerable","configurable","EXPORTS","entrypointSeqId","BaseEntrypoint","seqId","constructor","services","evaluatedOnly","generation","name","only","parents","dependencies","_parents$0$log$extend","_parents$","_parents$0$seqId","_parents$2","idx","getFileIdx","extend","ref","isExportsInherited","eventEmitter","entrypointEvent","class","filename","parentId","type","exportsProxy"],"sources":["../../src/transform/BaseEntrypoint.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Debugger } from '@wyw-in-js/shared';\n\nimport type { ParentEntrypoint } from '../types';\nimport { getFileIdx } from '../utils/getFileIdx';\n\nimport type { Services } from './types';\nimport type { IEntrypointDependency } from './Entrypoint.types';\n\nconst hasKey = <TKey extends string | symbol>(\n obj: unknown,\n key: TKey\n): obj is Record<TKey, unknown> =>\n (typeof obj === 'object' || typeof obj === 'function') &&\n obj !== null &&\n key in obj;\n\nconst VALUES = Symbol('values');\n\nconst isProxy = (\n obj: unknown\n): obj is { [VALUES]: Record<string | symbol, unknown> } =>\n typeof obj === 'object' && obj !== null && VALUES in obj;\n\nexport const createExports = (log: Debugger) => {\n let exports: Record<string | symbol, unknown> = {};\n const lazyFields = new Set<string | symbol>();\n\n return new Proxy(exports, {\n get: (_target, key) => {\n if (key === VALUES) {\n return exports;\n }\n\n let value: unknown;\n if (key in exports) {\n value = exports[key];\n } else {\n // Support Object.prototype methods on `exports`\n // e.g `exports.hasOwnProperty`\n value = Reflect.get(exports, key);\n }\n\n if (value === undefined && 'default' in exports) {\n const defaultValue = exports.default;\n if (hasKey(defaultValue, key)) {\n log(\n '⚠️ %s has been found in `default`. It indicates that ESM to CJS conversion went wrong.',\n key\n );\n value = defaultValue[key];\n }\n }\n\n if (value !== undefined && lazyFields.has(key)) {\n value = (value as () => unknown)();\n }\n\n log('get %s: %o', key, value);\n return value;\n },\n has: (_target, key) => {\n if (key === VALUES) return true;\n return key in exports;\n },\n ownKeys: () => {\n return Object.keys(exports);\n },\n set: (_target, key, value) => {\n if (key === VALUES) {\n exports = value;\n return true;\n }\n\n if (key !== '__esModule') {\n log('set %s: %o', key, value);\n }\n\n if (value !== undefined) {\n exports[key] = value;\n lazyFields.delete(key);\n }\n\n return true;\n },\n defineProperty: (_target, key, descriptor) => {\n const { value } = descriptor;\n if (value !== undefined) {\n if (key !== '__esModule') {\n log('defineProperty %s with value %o', key, value);\n }\n\n exports[key] = value;\n lazyFields.delete(key);\n\n return true;\n }\n\n if ('get' in descriptor) {\n if (lazyFields.has(key)) {\n const prev = exports[key] as () => void;\n exports[key] = () => {\n const v = descriptor.get?.();\n if (v !== undefined) {\n return v;\n }\n\n return prev();\n };\n } else {\n const prev = exports[key];\n exports[key] = () => {\n const v = descriptor.get?.();\n if (v !== undefined) {\n return v;\n }\n\n return prev;\n };\n }\n\n lazyFields.add(key);\n log('defineProperty %s with getter', key);\n }\n\n return true;\n },\n getOwnPropertyDescriptor: (_target, key) => {\n if (key in exports)\n return {\n enumerable: true,\n configurable: true,\n };\n\n return undefined;\n },\n });\n};\n\nconst EXPORTS = Symbol('exports');\n\nlet entrypointSeqId = 0;\n\nexport abstract class BaseEntrypoint {\n public static createExports = createExports;\n\n public readonly idx: string;\n\n public readonly log: Debugger;\n\n // eslint-disable-next-line no-plusplus\n public readonly seqId = entrypointSeqId++;\n\n readonly #exports: Record<string | symbol, unknown>;\n\n protected constructor(\n protected services: Services,\n public readonly evaluatedOnly: string[],\n exports: Record<string | symbol, unknown> | undefined,\n public readonly generation: number,\n public readonly name: string,\n public readonly only: string[],\n public readonly parents: ParentEntrypoint[],\n public readonly dependencies: Map<string, IEntrypointDependency>\n ) {\n this.idx = getFileIdx(name);\n this.log =\n parents[0]?.log.extend(this.ref, '->') ?? services.log.extend(this.ref);\n\n this.dependencies = dependencies;\n\n let isExportsInherited = false;\n if (exports) {\n if (isProxy(exports)) {\n this.#exports = exports;\n isExportsInherited = true;\n } else {\n this.#exports = createExports(this.log);\n this.#exports[EXPORTS] = exports;\n }\n this.exports = exports;\n } else {\n this.#exports = BaseEntrypoint.createExports(this.log);\n }\n\n services.eventEmitter.entrypointEvent(this.seqId, {\n class: this.constructor.name,\n evaluatedOnly: this.evaluatedOnly,\n filename: name,\n generation,\n idx: this.idx,\n isExportsInherited,\n only,\n parentId: parents[0]?.seqId ?? null,\n type: 'created',\n });\n }\n\n public get exports(): Record<string | symbol, unknown> {\n if (EXPORTS in this.#exports) {\n return this.#exports[EXPORTS] as Record<string | symbol, unknown>;\n }\n\n return this.#exports;\n }\n\n public set exports(value: unknown) {\n if (isProxy(value)) {\n this.#exports[VALUES] = value[VALUES];\n } else {\n this.#exports[EXPORTS] = value;\n }\n }\n\n public get ref() {\n return `${this.idx}#${this.generation}`;\n }\n\n protected get exportsProxy() {\n return this.#exports;\n }\n}\n"],"mappings":";;;;;;AAIA,IAAAA,WAAA,GAAAC,OAAA;AAJA;;AASA,MAAMC,MAAM,GAAGA,CACbC,GAAY,EACZC,GAAS,KAET,CAAC,OAAOD,GAAG,KAAK,QAAQ,IAAI,OAAOA,GAAG,KAAK,UAAU,KACrDA,GAAG,KAAK,IAAI,IACZC,GAAG,IAAID,GAAG;AAEZ,MAAME,MAAM,GAAGC,MAAM,CAAC,QAAQ,CAAC;AAE/B,MAAMC,OAAO,GACXJ,GAAY,IAEZ,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,IAAI,IAAIE,MAAM,IAAIF,GAAG;AAEnD,MAAMK,aAAa,GAAIC,GAAa,IAAK;EAC9C,IAAIC,OAAyC,GAAG,CAAC,CAAC;EAClD,MAAMC,UAAU,GAAG,IAAIC,GAAG,CAAkB,CAAC;EAE7C,OAAO,IAAIC,KAAK,CAACH,OAAO,EAAE;IACxBI,GAAG,EAAEA,CAACC,OAAO,EAAEX,GAAG,KAAK;MACrB,IAAIA,GAAG,KAAKC,MAAM,EAAE;QAClB,OAAOK,OAAO;MAChB;MAEA,IAAIM,KAAc;MAClB,IAAIZ,GAAG,IAAIM,OAAO,EAAE;QAClBM,KAAK,GAAGN,OAAO,CAACN,GAAG,CAAC;MACtB,CAAC,MAAM;QACL;QACA;QACAY,KAAK,GAAGC,OAAO,CAACH,GAAG,CAACJ,OAAO,EAAEN,GAAG,CAAC;MACnC;MAEA,IAAIY,KAAK,KAAKE,SAAS,IAAI,SAAS,IAAIR,OAAO,EAAE;QAC/C,MAAMS,YAAY,GAAGT,OAAO,CAACU,OAAO;QACpC,IAAIlB,MAAM,CAACiB,YAAY,EAAEf,GAAG,CAAC,EAAE;UAC7BK,GAAG,CACD,yFAAyF,EACzFL,GACF,CAAC;UACDY,KAAK,GAAGG,YAAY,CAACf,GAAG,CAAC;QAC3B;MACF;MAEA,IAAIY,KAAK,KAAKE,SAAS,IAAIP,UAAU,CAACU,GAAG,CAACjB,GAAG,CAAC,EAAE;QAC9CY,KAAK,GAAIA,KAAK,CAAmB,CAAC;MACpC;MAEAP,GAAG,CAAC,YAAY,EAAEL,GAAG,EAAEY,KAAK,CAAC;MAC7B,OAAOA,KAAK;IACd,CAAC;IACDK,GAAG,EAAEA,CAACN,OAAO,EAAEX,GAAG,KAAK;MACrB,IAAIA,GAAG,KAAKC,MAAM,EAAE,OAAO,IAAI;MAC/B,OAAOD,GAAG,IAAIM,OAAO;IACvB,CAAC;IACDY,OAAO,EAAEA,CAAA,KAAM;MACb,OAAOC,MAAM,CAACC,IAAI,CAACd,OAAO,CAAC;IAC7B,CAAC;IACDe,GAAG,EAAEA,CAACV,OAAO,EAAEX,GAAG,EAAEY,KAAK,KAAK;MAC5B,IAAIZ,GAAG,KAAKC,MAAM,EAAE;QAClBK,OAAO,GAAGM,KAAK;QACf,OAAO,IAAI;MACb;MAEA,IAAIZ,GAAG,KAAK,YAAY,EAAE;QACxBK,GAAG,CAAC,YAAY,EAAEL,GAAG,EAAEY,KAAK,CAAC;MAC/B;MAEA,IAAIA,KAAK,KAAKE,SAAS,EAAE;QACvBR,OAAO,CAACN,GAAG,CAAC,GAAGY,KAAK;QACpBL,UAAU,CAACe,MAAM,CAACtB,GAAG,CAAC;MACxB;MAEA,OAAO,IAAI;IACb,CAAC;IACDuB,cAAc,EAAEA,CAACZ,OAAO,EAAEX,GAAG,EAAEwB,UAAU,KAAK;MAC5C,MAAM;QAAEZ;MAAM,CAAC,GAAGY,UAAU;MAC5B,IAAIZ,KAAK,KAAKE,SAAS,EAAE;QACvB,IAAId,GAAG,KAAK,YAAY,EAAE;UACxBK,GAAG,CAAC,iCAAiC,EAAEL,GAAG,EAAEY,KAAK,CAAC;QACpD;QAEAN,OAAO,CAACN,GAAG,CAAC,GAAGY,KAAK;QACpBL,UAAU,CAACe,MAAM,CAACtB,GAAG,CAAC;QAEtB,OAAO,IAAI;MACb;MAEA,IAAI,KAAK,IAAIwB,UAAU,EAAE;QACvB,IAAIjB,UAAU,CAACU,GAAG,CAACjB,GAAG,CAAC,EAAE;UACvB,MAAMyB,IAAI,GAAGnB,OAAO,CAACN,GAAG,CAAe;UACvCM,OAAO,CAACN,GAAG,CAAC,GAAG,MAAM;YAAA,IAAA0B,eAAA;YACnB,MAAMC,CAAC,IAAAD,eAAA,GAAGF,UAAU,CAACd,GAAG,cAAAgB,eAAA,uBAAdA,eAAA,CAAAE,IAAA,CAAAJ,UAAiB,CAAC;YAC5B,IAAIG,CAAC,KAAKb,SAAS,EAAE;cACnB,OAAOa,CAAC;YACV;YAEA,OAAOF,IAAI,CAAC,CAAC;UACf,CAAC;QACH,CAAC,MAAM;UACL,MAAMA,IAAI,GAAGnB,OAAO,CAACN,GAAG,CAAC;UACzBM,OAAO,CAACN,GAAG,CAAC,GAAG,MAAM;YAAA,IAAA6B,gBAAA;YACnB,MAAMF,CAAC,IAAAE,gBAAA,GAAGL,UAAU,CAACd,GAAG,cAAAmB,gBAAA,uBAAdA,gBAAA,CAAAD,IAAA,CAAAJ,UAAiB,CAAC;YAC5B,IAAIG,CAAC,KAAKb,SAAS,EAAE;cACnB,OAAOa,CAAC;YACV;YAEA,OAAOF,IAAI;UACb,CAAC;QACH;QAEAlB,UAAU,CAACuB,GAAG,CAAC9B,GAAG,CAAC;QACnBK,GAAG,CAAC,+BAA+B,EAAEL,GAAG,CAAC;MAC3C;MAEA,OAAO,IAAI;IACb,CAAC;IACD+B,wBAAwB,EAAEA,CAACpB,OAAO,EAAEX,GAAG,KAAK;MAC1C,IAAIA,GAAG,IAAIM,OAAO,EAChB,OAAO;QACL0B,UAAU,EAAE,IAAI;QAChBC,YAAY,EAAE;MAChB,CAAC;MAEH,OAAOnB,SAAS;IAClB;EACF,CAAC,CAAC;AACJ,CAAC;AAACR,OAAA,CAAAF,aAAA,GAAAA,aAAA;AAEF,MAAM8B,OAAO,GAAGhC,MAAM,CAAC,SAAS,CAAC;AAEjC,IAAIiC,eAAe,GAAG,CAAC;AAEhB,MAAeC,cAAc,CAAC;EACnC,OAAchC,aAAa,GAAGA,aAAa;EAM3C;EACgBiC,KAAK,GAAGF,eAAe,EAAE;EAEhC,CAAC7B,OAAO;EAEPgC,WAAWA,CACTC,QAAkB,EACZC,aAAuB,EACvClC,OAAqD,EACrCmC,UAAkB,EAClBC,IAAY,EACZC,IAAc,EACdC,OAA2B,EAC3BC,YAAgD,EAChE;IAAA,IAAAC,qBAAA,EAAAC,SAAA,EAAAC,gBAAA,EAAAC,UAAA;IAAA,KARUV,QAAkB,GAAlBA,QAAkB;IAAA,KACZC,aAAuB,GAAvBA,aAAuB;IAAA,KAEvBC,UAAkB,GAAlBA,UAAkB;IAAA,KAClBC,IAAY,GAAZA,IAAY;IAAA,KACZC,IAAc,GAAdA,IAAc;IAAA,KACdC,OAA2B,GAA3BA,OAA2B;IAAA,KAC3BC,YAAgD,GAAhDA,YAAgD;IAEhE,IAAI,CAACK,GAAG,GAAG,IAAAC,sBAAU,EAACT,IAAI,CAAC;IAC3B,IAAI,CAACrC,GAAG,IAAAyC,qBAAA,IAAAC,SAAA,GACNH,OAAO,CAAC,CAAC,CAAC,cAAAG,SAAA,uBAAVA,SAAA,CAAY1C,GAAG,CAAC+C,MAAM,CAAC,IAAI,CAACC,GAAG,EAAE,IAAI,CAAC,cAAAP,qBAAA,cAAAA,qBAAA,GAAIP,QAAQ,CAAClC,GAAG,CAAC+C,MAAM,CAAC,IAAI,CAACC,GAAG,CAAC;IAEzE,IAAI,CAACR,YAAY,GAAGA,YAAY;IAEhC,IAAIS,kBAAkB,GAAG,KAAK;IAC9B,IAAIhD,OAAO,EAAE;MACX,IAAIH,OAAO,CAACG,OAAO,CAAC,EAAE;QACpB,IAAI,CAAC,CAACA,OAAO,GAAGA,OAAO;QACvBgD,kBAAkB,GAAG,IAAI;MAC3B,CAAC,MAAM;QACL,IAAI,CAAC,CAAChD,OAAO,GAAGF,aAAa,CAAC,IAAI,CAACC,GAAG,CAAC;QACvC,IAAI,CAAC,CAACC,OAAO,CAAC4B,OAAO,CAAC,GAAG5B,OAAO;MAClC;MACA,IAAI,CAACA,OAAO,GAAGA,OAAO;IACxB,CAAC,MAAM;MACL,IAAI,CAAC,CAACA,OAAO,GAAG8B,cAAc,CAAChC,aAAa,CAAC,IAAI,CAACC,GAAG,CAAC;IACxD;IAEAkC,QAAQ,CAACgB,YAAY,CAACC,eAAe,CAAC,IAAI,CAACnB,KAAK,EAAE;MAChDoB,KAAK,EAAE,IAAI,CAACnB,WAAW,CAACI,IAAI;MAC5BF,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCkB,QAAQ,EAAEhB,IAAI;MACdD,UAAU;MACVS,GAAG,EAAE,IAAI,CAACA,GAAG;MACbI,kBAAkB;MAClBX,IAAI;MACJgB,QAAQ,GAAAX,gBAAA,IAAAC,UAAA,GAAEL,OAAO,CAAC,CAAC,CAAC,cAAAK,UAAA,uBAAVA,UAAA,CAAYZ,KAAK,cAAAW,gBAAA,cAAAA,gBAAA,GAAI,IAAI;MACnCY,IAAI,EAAE;IACR,CAAC,CAAC;EACJ;EAEA,IAAWtD,OAAOA,CAAA,EAAqC;IACrD,IAAI4B,OAAO,IAAI,IAAI,CAAC,CAAC5B,OAAO,EAAE;MAC5B,OAAO,IAAI,CAAC,CAACA,OAAO,CAAC4B,OAAO,CAAC;IAC/B;IAEA,OAAO,IAAI,CAAC,CAAC5B,OAAO;EACtB;EAEA,IAAWA,OAAOA,CAACM,KAAc,EAAE;IACjC,IAAIT,OAAO,CAACS,KAAK,CAAC,EAAE;MAClB,IAAI,CAAC,CAACN,OAAO,CAACL,MAAM,CAAC,GAAGW,KAAK,CAACX,MAAM,CAAC;IACvC,CAAC,MAAM;MACL,IAAI,CAAC,CAACK,OAAO,CAAC4B,OAAO,CAAC,GAAGtB,KAAK;IAChC;EACF;EAEA,IAAWyC,GAAGA,CAAA,EAAG;IACf,OAAQ,GAAE,IAAI,CAACH,GAAI,IAAG,IAAI,CAACT,UAAW,EAAC;EACzC;EAEA,IAAcoB,YAAYA,CAAA,EAAG;IAC3B,OAAO,IAAI,CAAC,CAACvD,OAAO;EACtB;AACF;AAACA,OAAA,CAAA8B,cAAA,GAAAA,cAAA"}
@@ -33,7 +33,7 @@ class Entrypoint extends _BaseEntrypoint.BaseEntrypoint {
33
33
  #transformResultCode = null;
34
34
  constructor(services, parents, initialCode, name, only, exports, evaluatedOnly, loadedAndParsed, resolveTasks = new Map(), dependencies = new Map(), generation = 1) {
35
35
  var _parents$0$log, _parents$;
36
- super(services, evaluatedOnly, exports, generation, name, only, parents);
36
+ super(services, evaluatedOnly, exports, generation, name, only, parents, dependencies);
37
37
  this.initialCode = initialCode;
38
38
  this.resolveTasks = resolveTasks;
39
39
  this.dependencies = dependencies;
@@ -107,7 +107,7 @@ class Entrypoint extends _BaseEntrypoint.BaseEntrypoint {
107
107
  }
108
108
  const exports = cached === null || cached === void 0 ? void 0 : cached.exports;
109
109
  const evaluatedOnly = (_cached$evaluatedOnly = cached === null || cached === void 0 ? void 0 : cached.evaluatedOnly) !== null && _cached$evaluatedOnly !== void 0 ? _cached$evaluatedOnly : [];
110
- const mergedOnly = !changed && cached !== null && cached !== void 0 && cached.only ? (0, _Entrypoint.mergeOnly)(cached.only, only).filter(i => !evaluatedOnly.includes(i)) : only;
110
+ const mergedOnly = cached !== null && cached !== void 0 && cached.only ? (0, _Entrypoint.mergeOnly)(cached.only, only) : only;
111
111
  if (cached !== null && cached !== void 0 && cached.evaluated) {
112
112
  cached.log('is already evaluated with', cached.evaluatedOnly);
113
113
  }
@@ -178,7 +178,7 @@ class Entrypoint extends _BaseEntrypoint.BaseEntrypoint {
178
178
  createEvaluated() {
179
179
  const evaluatedOnly = (0, _Entrypoint.mergeOnly)(this.evaluatedOnly, this.only);
180
180
  this.log('create EvaluatedEntrypoint for %o', evaluatedOnly);
181
- return new _EvaluatedEntrypoint.EvaluatedEntrypoint(this.services, evaluatedOnly, this.exportsProxy, this.generation + 1, this.name, this.only, this.parents);
181
+ return new _EvaluatedEntrypoint.EvaluatedEntrypoint(this.services, evaluatedOnly, this.exportsProxy, this.generation + 1, this.name, this.only, this.parents, this.dependencies);
182
182
  }
183
183
  getDependency(name) {
184
184
  return this.dependencies.get(name);
@@ -1 +1 @@
1
- {"version":3,"file":"Entrypoint.js","names":["_tsInvariant","require","_BaseEntrypoint","_Entrypoint","_EvaluatedEntrypoint","_AbortError","_BaseAction","_UnprocessedEntrypointError","EMPTY_FILE","hasLoop","name","parent","processed","includes","p","parents","found","Entrypoint","BaseEntrypoint","evaluated","onSupersedeHandlers","actionsCache","Map","hasWywMetadata","supersededWith","transformResultCode","constructor","services","initialCode","only","exports","evaluatedOnly","loadedAndParsed","resolveTasks","dependencies","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","mergedOnly","mergeOnly","filter","i","isLoop","map","push","isSuperSet","supersede","newEntrypoint","addDependency","dependency","delete","source","set","addResolveTask","assertNotSuperseded","AbortError","assertTransformed","_this$supersededWith3","UnprocessedEntrypointError","createAction","actionType","data","abortSignal","_cached$abortSignal","has","aborted","newAction","BaseAction","entrypointEvent","type","actionIdx","idx","createChild","createEvaluated","EvaluatedEntrypoint","exportsProxy","getDependency","getResolveTask","onSupersede","callback","index","indexOf","splice","setTransformResult","res","_res$code","Boolean","metadata","isNull","newOnlyOrEntrypoint","with","forEach","handler"],"sources":["../../src/transform/Entrypoint.ts"],"sourcesContent":["import { invariant } from 'ts-invariant';\n\nimport type { ParentEntrypoint, ITransformFileResult } from '../types';\n\nimport { BaseEntrypoint } from './BaseEntrypoint';\nimport { isSuperSet, mergeOnly } from './Entrypoint.helpers';\nimport type {\n IEntrypointCode,\n IEntrypointDependency,\n IIgnoredEntrypoint,\n} from './Entrypoint.types';\nimport { EvaluatedEntrypoint } from './EvaluatedEntrypoint';\nimport { AbortError } from './actions/AbortError';\nimport type { ActionByType } from './actions/BaseAction';\nimport { BaseAction } from './actions/BaseAction';\nimport { UnprocessedEntrypointError } from './actions/UnprocessedEntrypointError';\nimport type { Services, ActionTypes, ActionQueueItem } from './types';\n\nconst EMPTY_FILE = '=== empty file ===';\n\nfunction hasLoop(\n name: string,\n parent: ParentEntrypoint,\n processed: string[] = []\n): boolean {\n if (parent.name === name || processed.includes(parent.name)) {\n return true;\n }\n\n for (const p of parent.parents) {\n const found = hasLoop(name, p, [...processed, parent.name]);\n if (found) {\n return found;\n }\n }\n\n return false;\n}\n\nexport class Entrypoint extends BaseEntrypoint {\n public readonly evaluated = false;\n\n public readonly loadedAndParsed: IEntrypointCode | IIgnoredEntrypoint;\n\n protected onSupersedeHandlers: Array<(newEntrypoint: Entrypoint) => void> =\n [];\n\n private actionsCache: Map<\n ActionTypes,\n Map<unknown, BaseAction<ActionQueueItem>>\n > = new Map();\n\n #hasWywMetadata: boolean = false;\n\n #supersededWith: Entrypoint | null = null;\n\n #transformResultCode: string | null = null;\n\n private constructor(\n services: Services,\n parents: ParentEntrypoint[],\n public readonly initialCode: string | undefined,\n name: string,\n only: string[],\n exports: Record<string | symbol, unknown> | undefined,\n evaluatedOnly: string[],\n loadedAndParsed?: IEntrypointCode | IIgnoredEntrypoint,\n protected readonly resolveTasks = new Map<\n string,\n Promise<IEntrypointDependency>\n >(),\n protected readonly dependencies = new Map<string, IEntrypointDependency>(),\n generation = 1\n ) {\n super(services, evaluatedOnly, exports, generation, name, only, parents);\n\n this.loadedAndParsed =\n loadedAndParsed ??\n services.loadAndParseFn(\n services,\n name,\n initialCode,\n parents[0]?.log ?? services.log\n );\n\n if (this.loadedAndParsed.code !== undefined) {\n services.cache.invalidateIfChanged(name, this.loadedAndParsed.code);\n }\n\n 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 const changed =\n loadedCode !== undefined\n ? cache.invalidateIfChanged(name, loadedCode)\n : false;\n\n if (!cached?.evaluated && cached?.ignored) {\n return ['cached', cached];\n }\n\n const exports = cached?.exports;\n const evaluatedOnly = cached?.evaluatedOnly ?? [];\n const mergedOnly =\n !changed && cached?.only\n ? mergeOnly(cached.only, only).filter((i) => !evaluatedOnly.includes(i))\n : only;\n\n if (cached?.evaluated) {\n cached.log('is already evaluated with', cached.evaluatedOnly);\n }\n\n if (!changed && cached && !cached.evaluated) {\n const isLoop = parent && hasLoop(name, parent);\n if (isLoop) {\n parent.log('[createEntrypoint] %s is a loop', name);\n }\n\n if (parent && !cached.parents.map((p) => p.name).includes(parent.name)) {\n cached.parents.push(parent);\n }\n\n if (isSuperSet(cached.only, mergedOnly)) {\n cached.log('is cached', name);\n return [isLoop ? 'loop' : 'cached', cached];\n }\n\n cached.log(\n 'is cached, but with different `only` %o (the cached one %o)',\n only,\n cached?.only\n );\n\n return [isLoop ? 'loop' : 'created', cached.supersede(mergedOnly)];\n }\n\n const newEntrypoint = new Entrypoint(\n services,\n parent ? [parent] : [],\n loadedCode,\n name,\n mergedOnly,\n exports,\n evaluatedOnly,\n undefined,\n cached && 'resolveTasks' in cached ? cached.resolveTasks : undefined,\n cached && 'dependencies' in cached ? cached.dependencies : undefined,\n cached ? cached.generation + 1 : 1\n );\n\n if (cached && !cached.evaluated) {\n cached.log('is cached, but with different code');\n cached.supersede(newEntrypoint);\n }\n\n return ['created', newEntrypoint];\n }\n\n public addDependency(dependency: IEntrypointDependency): void {\n this.resolveTasks.delete(dependency.source);\n this.dependencies.set(dependency.source, dependency);\n }\n\n public addResolveTask(\n name: string,\n dependency: Promise<IEntrypointDependency>\n ): void {\n this.resolveTasks.set(name, dependency);\n }\n\n public assertNotSuperseded() {\n if (this.supersededWith) {\n this.log('superseded');\n throw new AbortError('superseded');\n }\n }\n\n public assertTransformed() {\n if (this.transformedCode === null) {\n this.log('not transformed');\n throw new UnprocessedEntrypointError(this.supersededWith ?? this);\n }\n }\n\n public createAction<\n TType extends ActionTypes,\n TAction extends ActionByType<TType>,\n >(\n actionType: TType,\n data: TAction['data'],\n abortSignal: AbortSignal | null = null\n ): BaseAction<TAction> {\n if (!this.actionsCache.has(actionType)) {\n this.actionsCache.set(actionType, new Map());\n }\n\n const cache = this.actionsCache.get(actionType)!;\n const cached = cache.get(data);\n if (cached && !cached.abortSignal?.aborted) {\n return cached as BaseAction<TAction>;\n }\n\n const newAction = new BaseAction<TAction>(\n actionType as TAction['type'],\n this.services,\n this,\n data,\n abortSignal\n );\n\n cache.set(data, newAction);\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'actionCreated',\n actionType,\n actionIdx: newAction.idx,\n });\n\n return newAction;\n }\n\n public createChild(\n name: string,\n only: string[],\n loadedCode?: string\n ): Entrypoint | 'loop' {\n return Entrypoint.create(this.services, this, name, only, loadedCode);\n }\n\n public createEvaluated() {\n const evaluatedOnly = mergeOnly(this.evaluatedOnly, this.only);\n this.log('create EvaluatedEntrypoint for %o', evaluatedOnly);\n\n return new EvaluatedEntrypoint(\n this.services,\n evaluatedOnly,\n this.exportsProxy,\n this.generation + 1,\n this.name,\n this.only,\n this.parents\n );\n }\n\n public getDependency(name: string): IEntrypointDependency | undefined {\n return this.dependencies.get(name);\n }\n\n public getResolveTask(\n name: string\n ): Promise<IEntrypointDependency> | undefined {\n return this.resolveTasks.get(name);\n }\n\n public hasWywMetadata() {\n return this.#hasWywMetadata;\n }\n\n public onSupersede(callback: (newEntrypoint: Entrypoint) => void) {\n if (this.#supersededWith) {\n callback(this.#supersededWith);\n return () => {};\n }\n\n this.onSupersedeHandlers.push(callback);\n\n return () => {\n const index = this.onSupersedeHandlers.indexOf(callback);\n if (index >= 0) {\n this.onSupersedeHandlers.splice(index, 1);\n }\n };\n }\n\n public setTransformResult(res: ITransformFileResult | null) {\n this.#hasWywMetadata = Boolean(res?.metadata);\n this.#transformResultCode = res?.code ?? null;\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n isNull: res === null,\n type: 'setTransformResult',\n });\n }\n\n private supersede(newOnlyOrEntrypoint: string[] | Entrypoint): Entrypoint {\n const newEntrypoint =\n newOnlyOrEntrypoint instanceof Entrypoint\n ? newOnlyOrEntrypoint\n : new Entrypoint(\n this.services,\n this.parents,\n this.initialCode,\n this.name,\n newOnlyOrEntrypoint,\n this.exports,\n this.evaluatedOnly,\n this.loadedAndParsed,\n this.resolveTasks,\n this.dependencies,\n this.generation + 1\n );\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'superseded',\n with: newEntrypoint.seqId,\n });\n this.log(\n 'superseded by %s (%o -> %o)',\n newEntrypoint.name,\n this.only,\n newEntrypoint.only\n );\n this.#supersededWith = newEntrypoint;\n this.onSupersedeHandlers.forEach((handler) => handler(newEntrypoint));\n\n return newEntrypoint;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Entrypoint.js","names":["_tsInvariant","require","_BaseEntrypoint","_Entrypoint","_EvaluatedEntrypoint","_AbortError","_BaseAction","_UnprocessedEntrypointError","EMPTY_FILE","hasLoop","name","parent","processed","includes","p","parents","found","Entrypoint","BaseEntrypoint","evaluated","onSupersedeHandlers","actionsCache","Map","hasWywMetadata","supersededWith","transformResultCode","constructor","services","initialCode","only","exports","evaluatedOnly","loadedAndParsed","resolveTasks","dependencies","generation","_parents$0$log","_parents$","loadAndParseFn","log","code","undefined","cache","invalidateIfChanged","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","mergedOnly","mergeOnly","isLoop","map","push","isSuperSet","supersede","newEntrypoint","addDependency","dependency","delete","source","set","addResolveTask","assertNotSuperseded","AbortError","assertTransformed","_this$supersededWith3","UnprocessedEntrypointError","createAction","actionType","data","abortSignal","_cached$abortSignal","has","aborted","newAction","BaseAction","entrypointEvent","type","actionIdx","idx","createChild","createEvaluated","EvaluatedEntrypoint","exportsProxy","getDependency","getResolveTask","onSupersede","callback","index","indexOf","splice","setTransformResult","res","_res$code","Boolean","metadata","isNull","newOnlyOrEntrypoint","with","forEach","handler"],"sources":["../../src/transform/Entrypoint.ts"],"sourcesContent":["import { invariant } from 'ts-invariant';\n\nimport type { ParentEntrypoint, ITransformFileResult } from '../types';\n\nimport { BaseEntrypoint } from './BaseEntrypoint';\nimport { isSuperSet, mergeOnly } from './Entrypoint.helpers';\nimport type {\n IEntrypointCode,\n IEntrypointDependency,\n IIgnoredEntrypoint,\n} from './Entrypoint.types';\nimport { EvaluatedEntrypoint } from './EvaluatedEntrypoint';\nimport { AbortError } from './actions/AbortError';\nimport type { ActionByType } from './actions/BaseAction';\nimport { BaseAction } from './actions/BaseAction';\nimport { UnprocessedEntrypointError } from './actions/UnprocessedEntrypointError';\nimport type { Services, ActionTypes, ActionQueueItem } from './types';\n\nconst EMPTY_FILE = '=== empty file ===';\n\nfunction hasLoop(\n name: string,\n parent: ParentEntrypoint,\n processed: string[] = []\n): boolean {\n if (parent.name === name || processed.includes(parent.name)) {\n return true;\n }\n\n for (const p of parent.parents) {\n const found = hasLoop(name, p, [...processed, parent.name]);\n if (found) {\n return found;\n }\n }\n\n return false;\n}\n\nexport class Entrypoint extends BaseEntrypoint {\n public readonly evaluated = false;\n\n public readonly loadedAndParsed: IEntrypointCode | IIgnoredEntrypoint;\n\n protected onSupersedeHandlers: Array<(newEntrypoint: Entrypoint) => void> =\n [];\n\n private actionsCache: Map<\n ActionTypes,\n Map<unknown, BaseAction<ActionQueueItem>>\n > = new Map();\n\n #hasWywMetadata: boolean = false;\n\n #supersededWith: Entrypoint | null = null;\n\n #transformResultCode: string | null = null;\n\n private constructor(\n services: Services,\n parents: ParentEntrypoint[],\n public readonly initialCode: string | undefined,\n name: string,\n only: string[],\n exports: Record<string | symbol, unknown> | undefined,\n evaluatedOnly: string[],\n loadedAndParsed?: IEntrypointCode | IIgnoredEntrypoint,\n protected readonly resolveTasks = new Map<\n string,\n Promise<IEntrypointDependency>\n >(),\n readonly dependencies = new Map<string, IEntrypointDependency>(),\n generation = 1\n ) {\n super(\n services,\n evaluatedOnly,\n exports,\n generation,\n name,\n only,\n parents,\n dependencies\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(name, this.loadedAndParsed.code);\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 const changed =\n loadedCode !== undefined\n ? cache.invalidateIfChanged(name, loadedCode)\n : false;\n\n if (!cached?.evaluated && cached?.ignored) {\n return ['cached', cached];\n }\n\n const exports = cached?.exports;\n const evaluatedOnly = cached?.evaluatedOnly ?? [];\n\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 return [isLoop ? 'loop' : 'created', cached.supersede(mergedOnly)];\n }\n\n const newEntrypoint = new Entrypoint(\n services,\n parent ? [parent] : [],\n loadedCode,\n name,\n mergedOnly,\n exports,\n evaluatedOnly,\n undefined,\n cached && 'resolveTasks' in cached ? cached.resolveTasks : undefined,\n cached && 'dependencies' in cached ? cached.dependencies : undefined,\n cached ? cached.generation + 1 : 1\n );\n\n if (cached && !cached.evaluated) {\n cached.log('is cached, but with different code');\n cached.supersede(newEntrypoint);\n }\n\n return ['created', newEntrypoint];\n }\n\n public addDependency(dependency: IEntrypointDependency): void {\n this.resolveTasks.delete(dependency.source);\n this.dependencies.set(dependency.source, dependency);\n }\n\n public addResolveTask(\n name: string,\n dependency: Promise<IEntrypointDependency>\n ): void {\n this.resolveTasks.set(name, dependency);\n }\n\n public assertNotSuperseded() {\n if (this.supersededWith) {\n this.log('superseded');\n throw new AbortError('superseded');\n }\n }\n\n public assertTransformed() {\n if (this.transformedCode === null) {\n this.log('not transformed');\n throw new UnprocessedEntrypointError(this.supersededWith ?? this);\n }\n }\n\n public createAction<\n TType extends ActionTypes,\n TAction extends ActionByType<TType>,\n >(\n actionType: TType,\n data: TAction['data'],\n abortSignal: AbortSignal | null = null\n ): BaseAction<TAction> {\n if (!this.actionsCache.has(actionType)) {\n this.actionsCache.set(actionType, new Map());\n }\n\n const cache = this.actionsCache.get(actionType)!;\n const cached = cache.get(data);\n if (cached && !cached.abortSignal?.aborted) {\n return cached as BaseAction<TAction>;\n }\n\n const newAction = new BaseAction<TAction>(\n actionType as TAction['type'],\n this.services,\n this,\n data,\n abortSignal\n );\n\n cache.set(data, newAction);\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'actionCreated',\n actionType,\n actionIdx: newAction.idx,\n });\n\n return newAction;\n }\n\n public createChild(\n name: string,\n only: string[],\n loadedCode?: string\n ): Entrypoint | 'loop' {\n return Entrypoint.create(this.services, this, name, only, loadedCode);\n }\n\n public createEvaluated() {\n const evaluatedOnly = mergeOnly(this.evaluatedOnly, this.only);\n this.log('create EvaluatedEntrypoint for %o', evaluatedOnly);\n\n return new EvaluatedEntrypoint(\n this.services,\n evaluatedOnly,\n this.exportsProxy,\n this.generation + 1,\n this.name,\n this.only,\n this.parents,\n this.dependencies\n );\n }\n\n public getDependency(name: string): IEntrypointDependency | undefined {\n return this.dependencies.get(name);\n }\n\n public getResolveTask(\n name: string\n ): Promise<IEntrypointDependency> | undefined {\n return this.resolveTasks.get(name);\n }\n\n public hasWywMetadata() {\n return this.#hasWywMetadata;\n }\n\n public onSupersede(callback: (newEntrypoint: Entrypoint) => void) {\n if (this.#supersededWith) {\n callback(this.#supersededWith);\n return () => {};\n }\n\n this.onSupersedeHandlers.push(callback);\n\n return () => {\n const index = this.onSupersedeHandlers.indexOf(callback);\n if (index >= 0) {\n this.onSupersedeHandlers.splice(index, 1);\n }\n };\n }\n\n public setTransformResult(res: ITransformFileResult | null) {\n this.#hasWywMetadata = Boolean(res?.metadata);\n this.#transformResultCode = res?.code ?? null;\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n isNull: res === null,\n type: 'setTransformResult',\n });\n }\n\n private supersede(newOnlyOrEntrypoint: string[] | Entrypoint): Entrypoint {\n const newEntrypoint =\n newOnlyOrEntrypoint instanceof Entrypoint\n ? newOnlyOrEntrypoint\n : new Entrypoint(\n this.services,\n this.parents,\n this.initialCode,\n this.name,\n newOnlyOrEntrypoint,\n this.exports,\n this.evaluatedOnly,\n this.loadedAndParsed,\n this.resolveTasks,\n this.dependencies,\n this.generation + 1\n );\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'superseded',\n with: newEntrypoint.seqId,\n });\n this.log(\n 'superseded by %s (%o -> %o)',\n newEntrypoint.name,\n this.only,\n newEntrypoint.only\n );\n this.#supersededWith = newEntrypoint;\n this.onSupersedeHandlers.forEach((handler) => handler(newEntrypoint));\n\n return newEntrypoint;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluatedEntrypoint.js","names":["_BaseEntrypoint","require","EvaluatedEntrypoint","BaseEntrypoint","evaluated","ignored","exports"],"sources":["../../src/transform/EvaluatedEntrypoint.ts"],"sourcesContent":["import type { Debugger } from '@wyw-in-js/shared';\n\nimport { BaseEntrypoint } from './BaseEntrypoint';\n\nexport interface IEvaluatedEntrypoint {\n evaluated: true;\n evaluatedOnly: string[];\n exports: Record<string | symbol, unknown>;\n generation: number;\n ignored: false;\n log: Debugger;\n only: string[];\n}\n\nexport class EvaluatedEntrypoint\n extends BaseEntrypoint\n implements IEvaluatedEntrypoint\n{\n public readonly evaluated = true;\n\n public readonly ignored = false;\n}\n"],"mappings":";;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AAYO,MAAMC,mBAAmB,SACtBC,8BAAc,CAExB;EACkBC,SAAS,GAAG,IAAI;EAEhBC,OAAO,GAAG,KAAK;AACjC;AAACC,OAAA,CAAAJ,mBAAA,GAAAA,mBAAA"}
1
+ {"version":3,"file":"EvaluatedEntrypoint.js","names":["_BaseEntrypoint","require","EvaluatedEntrypoint","BaseEntrypoint","evaluated","ignored","exports"],"sources":["../../src/transform/EvaluatedEntrypoint.ts"],"sourcesContent":["import type { Debugger } from '@wyw-in-js/shared';\n\nimport { BaseEntrypoint } from './BaseEntrypoint';\nimport type { IEntrypointDependency } from './Entrypoint.types';\n\nexport interface IEvaluatedEntrypoint {\n dependencies: Map<string, IEntrypointDependency>;\n evaluated: true;\n evaluatedOnly: string[];\n exports: Record<string | symbol, unknown>;\n generation: number;\n ignored: false;\n log: Debugger;\n only: string[];\n}\n\nexport class EvaluatedEntrypoint\n extends BaseEntrypoint\n implements IEvaluatedEntrypoint\n{\n public readonly evaluated = true;\n\n public readonly ignored = false;\n}\n"],"mappings":";;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AAcO,MAAMC,mBAAmB,SACtBC,8BAAc,CAExB;EACkBC,SAAS,GAAG,IAAI;EAEhBC,OAAO,GAAG,KAAK;AACjC;AAACC,OAAA,CAAAJ,mBAAA,GAAAA,mBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","names":["_sourceMap","require","_createStylisPreprocessor","extractCssFromAst","rules","originalCode","options","mappings","cssText","preprocessor","selector","text","createStylisPreprocessor","Object","keys","forEach","index","push","generated","line","column","original","start","name","source","atom","cssSourceMapText","length","generator","SourceMapGenerator","file","filename","replace","mapping","addMapping","setSourceContent","toString","extract","services","entrypoint","processors","data","loadedAndParsed","evaluator","Error","allRules","allReplacements","processor","artifacts","artifact","replacements","code"],"sources":["../../../src/transform/generators/extract.ts"],"sourcesContent":["import type { Mapping } from 'source-map';\nimport { SourceMapGenerator } from 'source-map';\n\nimport type { Replacements, Rules } from '@wyw-in-js/shared';\n\nimport type { Options, PreprocessorFn } from '../../types';\nimport type { IExtractAction, SyncScenarioForAction } from '../types';\nimport { createStylisPreprocessor } from './createStylisPreprocessor';\n\nfunction extractCssFromAst(\n rules: Rules,\n originalCode: string,\n options: Pick<Options, 'preprocessor' | 'filename' | 'outputFilename'>\n): { cssSourceMapText: string; cssText: string; rules: Rules } {\n const mappings: Mapping[] = [];\n\n let cssText = '';\n\n let preprocessor: PreprocessorFn;\n if (typeof options.preprocessor === 'function') {\n // eslint-disable-next-line prefer-destructuring\n preprocessor = options.preprocessor;\n } else {\n switch (options.preprocessor) {\n case 'none':\n preprocessor = (selector, text) => `${selector} {${text}}\\n`;\n break;\n case 'stylis':\n default:\n preprocessor = createStylisPreprocessor(options);\n }\n }\n\n Object.keys(rules).forEach((selector, index) => {\n mappings.push({\n generated: {\n line: index + 1,\n column: 0,\n },\n original: rules[selector].start!,\n name: selector,\n source: '',\n });\n\n if (rules[selector].atom) {\n // For atoms, we just directly insert cssText, to give the atomizer full control over the rules\n cssText += `${rules[selector].cssText}\\n`;\n } else {\n // Run each rule through stylis to support nesting\n cssText += `${preprocessor(selector, rules[selector].cssText)}\\n`;\n }\n });\n\n return {\n cssText,\n rules,\n\n get cssSourceMapText() {\n if (mappings?.length) {\n const generator = new SourceMapGenerator({\n file: options.filename.replace(/\\.js$/, '.css'),\n });\n\n mappings.forEach((mapping) =>\n generator.addMapping({ ...mapping, source: options.filename })\n );\n\n generator.setSourceContent(options.filename, originalCode);\n\n return generator.toString();\n }\n\n return '';\n },\n };\n}\n\n/**\n * Extract artifacts (e.g. CSS) from processors\n */\n// eslint-disable-next-line require-yield\nexport function* extract(\n this: IExtractAction\n): SyncScenarioForAction<IExtractAction> {\n const { options } = this.services;\n const { entrypoint } = this;\n const { processors } = this.data;\n const { loadedAndParsed } = entrypoint;\n if (loadedAndParsed.evaluator === 'ignored') {\n throw new Error('entrypoint was ignored');\n }\n\n let allRules: Rules = {};\n const allReplacements: Replacements = [];\n processors.forEach((processor) => {\n processor.artifacts.forEach((artifact) => {\n if (artifact[0] !== 'css') return;\n const [rules, replacements] = artifact[1] as [\n rules: Rules,\n sourceMapReplacements: Replacements,\n ];\n\n allRules = {\n ...allRules,\n ...rules,\n };\n\n allReplacements.push(...replacements);\n });\n });\n\n return {\n ...extractCssFromAst(allRules, loadedAndParsed.code, options),\n replacements: allReplacements,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","names":["_sourceMap","require","_createStylisPreprocessor","extractCssFromAst","rules","originalCode","options","mappings","cssText","preprocessor","selector","text","createStylisPreprocessor","Object","keys","forEach","index","push","generated","line","column","original","start","name","source","atom","cssSourceMapText","length","generator","SourceMapGenerator","file","filename","replace","mapping","addMapping","setSourceContent","toString","extract","services","entrypoint","processors","data","loadedAndParsed","evaluator","Error","allRules","allReplacements","processor","artifacts","artifact","replacements","code"],"sources":["../../../src/transform/generators/extract.ts"],"sourcesContent":["import type { Mapping } from 'source-map';\nimport { SourceMapGenerator } from 'source-map';\n\nimport type { Replacements, Rules } from '@wyw-in-js/shared';\n\nimport type { Options, PreprocessorFn } from '../../types';\nimport type { IExtractAction, SyncScenarioForAction } from '../types';\nimport { createStylisPreprocessor } from './createStylisPreprocessor';\n\nfunction extractCssFromAst(\n rules: Rules,\n originalCode: string,\n options: Pick<\n Options,\n 'preprocessor' | 'filename' | 'outputFilename' | 'prefixer'\n >\n): { cssSourceMapText: string; cssText: string; rules: Rules } {\n const mappings: Mapping[] = [];\n\n let cssText = '';\n\n let preprocessor: PreprocessorFn;\n if (typeof options.preprocessor === 'function') {\n // eslint-disable-next-line prefer-destructuring\n preprocessor = options.preprocessor;\n } else {\n switch (options.preprocessor) {\n case 'none':\n preprocessor = (selector, text) => `${selector} {${text}}\\n`;\n break;\n case 'stylis':\n default:\n preprocessor = createStylisPreprocessor(options);\n }\n }\n\n Object.keys(rules).forEach((selector, index) => {\n mappings.push({\n generated: {\n line: index + 1,\n column: 0,\n },\n original: rules[selector].start!,\n name: selector,\n source: '',\n });\n\n if (rules[selector].atom) {\n // For atoms, we just directly insert cssText, to give the atomizer full control over the rules\n cssText += `${rules[selector].cssText}\\n`;\n } else {\n // Run each rule through stylis to support nesting\n cssText += `${preprocessor(selector, rules[selector].cssText)}\\n`;\n }\n });\n\n return {\n cssText,\n rules,\n\n get cssSourceMapText() {\n if (mappings?.length) {\n const generator = new SourceMapGenerator({\n file: options.filename.replace(/\\.js$/, '.css'),\n });\n\n mappings.forEach((mapping) =>\n generator.addMapping({ ...mapping, source: options.filename })\n );\n\n generator.setSourceContent(options.filename, originalCode);\n\n return generator.toString();\n }\n\n return '';\n },\n };\n}\n\n/**\n * Extract artifacts (e.g. CSS) from processors\n */\n// eslint-disable-next-line require-yield\nexport function* extract(\n this: IExtractAction\n): SyncScenarioForAction<IExtractAction> {\n const { options } = this.services;\n const { entrypoint } = this;\n const { processors } = this.data;\n const { loadedAndParsed } = entrypoint;\n if (loadedAndParsed.evaluator === 'ignored') {\n throw new Error('entrypoint was ignored');\n }\n\n let allRules: Rules = {};\n const allReplacements: Replacements = [];\n processors.forEach((processor) => {\n processor.artifacts.forEach((artifact) => {\n if (artifact[0] !== 'css') return;\n const [rules, replacements] = artifact[1] as [\n rules: Rules,\n sourceMapReplacements: Replacements,\n ];\n\n allRules = {\n ...allRules,\n ...rules,\n };\n\n allReplacements.push(...replacements);\n });\n });\n\n return {\n ...extractCssFromAst(allRules, loadedAndParsed.code, options),\n replacements: allReplacements,\n };\n}\n"],"mappings":"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"}
package/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { BabelFile, PluginPass } from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\nimport type { File, Program } from '@babel/types';\nimport type { RawSourceMap } from 'source-map';\n\nimport type { BaseProcessor } from '@wyw-in-js/processor-utils';\nimport type {\n Debugger,\n Replacement,\n Rules,\n StrictOptions,\n} from '@wyw-in-js/shared';\n\nimport type { WYWTransformMetadata } from './utils/TransformMetadata';\n\nexport type PluginOptions = StrictOptions & {\n configFile?: string | false;\n stage?: Stage;\n};\n\nexport type ParentEntrypoint = {\n evaluated: boolean;\n log: Debugger;\n name: string;\n parents: ParentEntrypoint[];\n seqId: number;\n};\n\nexport type Dependencies = string[];\n\nexport interface IPluginState extends PluginPass {\n dependencies: Dependencies;\n file: BabelFile & {\n metadata: {\n wywInJS?: WYWTransformMetadata;\n };\n };\n processors: BaseProcessor[];\n}\n\nexport interface ITransformFileResult {\n code: string;\n metadata: WYWTransformMetadata | null;\n}\n\nexport type Stage = 'preeval' | 'collect';\n\nexport type Result = {\n code: string;\n cssSourceMapText?: string;\n cssText?: string;\n dependencies?: string[];\n replacements?: Replacement[];\n rules?: Rules;\n sourceMap?: RawSourceMap | null;\n};\n\nexport type Options = {\n filename: string;\n inputSourceMap?: RawSourceMap;\n outputFilename?: string;\n pluginOptions?: Partial<PluginOptions>;\n preprocessor?: Preprocessor;\n root?: string;\n};\n\nexport type PreprocessorFn = (selector: string, cssText: string) => string;\nexport type Preprocessor = 'none' | 'stylis' | PreprocessorFn | void;\n\nexport type MissedBabelCoreTypes = {\n File: new (\n options: { filename: string },\n file: { ast: File; code: string }\n ) => { path: NodePath<Program> };\n};\n\nexport type JSONValue =\n | null\n | string\n | number\n | boolean\n | JSONObject\n | JSONArray;\n\nexport interface JSONObject {\n [x: string]: JSONValue;\n}\n\nexport type JSONArray = Array<JSONValue>;\n\nexport type Serializable = JSONValue;\n\n/**\n * CSS-related types\n */\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { BabelFile, PluginPass } from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\nimport type { File, Program } from '@babel/types';\nimport type { RawSourceMap } from 'source-map';\n\nimport type { BaseProcessor } from '@wyw-in-js/processor-utils';\nimport type {\n Debugger,\n Replacement,\n Rules,\n StrictOptions,\n} from '@wyw-in-js/shared';\n\nimport type { WYWTransformMetadata } from './utils/TransformMetadata';\n\nexport type PluginOptions = StrictOptions & {\n configFile?: string | false;\n stage?: Stage;\n};\n\nexport type ParentEntrypoint = {\n evaluated: boolean;\n log: Debugger;\n name: string;\n parents: ParentEntrypoint[];\n seqId: number;\n};\n\nexport type Dependencies = string[];\n\nexport interface IPluginState extends PluginPass {\n dependencies: Dependencies;\n file: BabelFile & {\n metadata: {\n wywInJS?: WYWTransformMetadata;\n };\n };\n processors: BaseProcessor[];\n}\n\nexport interface ITransformFileResult {\n code: string;\n metadata: WYWTransformMetadata | null;\n}\n\nexport type Stage = 'preeval' | 'collect';\n\nexport type Result = {\n code: string;\n cssSourceMapText?: string;\n cssText?: string;\n dependencies?: string[];\n replacements?: Replacement[];\n rules?: Rules;\n sourceMap?: RawSourceMap | null;\n};\n\nexport type Options = {\n filename: string;\n inputSourceMap?: RawSourceMap;\n outputFilename?: string;\n pluginOptions?: Partial<PluginOptions>;\n prefixer?: boolean;\n preprocessor?: Preprocessor;\n root?: string;\n};\n\nexport type PreprocessorFn = (selector: string, cssText: string) => string;\nexport type Preprocessor = 'none' | 'stylis' | PreprocessorFn | void;\n\nexport type MissedBabelCoreTypes = {\n File: new (\n options: { filename: string },\n file: { ast: File; code: string }\n ) => { path: NodePath<Program> };\n};\n\nexport type JSONValue =\n | null\n | string\n | number\n | boolean\n | JSONObject\n | JSONArray;\n\nexport interface JSONObject {\n [x: string]: JSONValue;\n}\n\nexport type JSONArray = Array<JSONValue>;\n\nexport type Serializable = JSONValue;\n\n/**\n * CSS-related types\n */\n"],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wyw-in-js/transform",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "dependencies": {
5
5
  "@babel/core": "^7.23.5",
6
6
  "@babel/generator": "^7.23.5",
@@ -11,12 +11,12 @@
11
11
  "@babel/types": "^7.23.5",
12
12
  "babel-merge": "^3.0.0",
13
13
  "cosmiconfig": "^8.0.0",
14
- "happy-dom": "^15.11.0",
14
+ "happy-dom": "^20.0.10",
15
15
  "source-map": "^0.7.4",
16
16
  "stylis": "^4.3.0",
17
17
  "ts-invariant": "^0.10.3",
18
- "@wyw-in-js/processor-utils": "0.6.0",
19
- "@wyw-in-js/shared": "0.6.0"
18
+ "@wyw-in-js/processor-utils": "0.8.0",
19
+ "@wyw-in-js/shared": "0.8.0"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@babel/plugin-syntax-typescript": "^7.23.3",
@@ -37,10 +37,10 @@
37
37
  "glob": "^10.3.10",
38
38
  "strip-ansi": "^5.2.0",
39
39
  "typescript": "^5.2.2",
40
- "@wyw-in-js/babel-config": "0.6.0",
41
- "@wyw-in-js/eslint-config": "0.6.0",
42
- "@wyw-in-js/jest-preset": "0.6.0",
43
- "@wyw-in-js/ts-config": "0.6.0"
40
+ "@wyw-in-js/babel-config": "0.8.0",
41
+ "@wyw-in-js/eslint-config": "0.8.0",
42
+ "@wyw-in-js/jest-preset": "0.8.0",
43
+ "@wyw-in-js/ts-config": "0.8.0"
44
44
  },
45
45
  "engines": {
46
46
  "node": ">=16.0.0"
package/types/cache.d.ts CHANGED
@@ -1,21 +1,27 @@
1
1
  import type { Entrypoint } from './transform/Entrypoint';
2
2
  import type { IEvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';
3
- interface ICaches {
4
- entrypoints: Map<string, Entrypoint | IEvaluatedEntrypoint>;
3
+ interface IBaseCachedEntrypoint {
4
+ dependencies: Map<string, {
5
+ resolved: string | null;
6
+ }>;
7
+ initialCode?: string;
8
+ }
9
+ interface ICaches<TEntrypoint extends IBaseCachedEntrypoint> {
10
+ entrypoints: Map<string, TEntrypoint>;
5
11
  exports: Map<string, string[]>;
6
12
  }
7
13
  type MapValue<T> = T extends Map<string, infer V> ? V : never;
8
14
  declare const cacheNames: readonly ["entrypoints", "exports"];
9
15
  type CacheNames = (typeof cacheNames)[number];
10
- export declare class TransformCacheCollection {
11
- readonly entrypoints: Map<string, Entrypoint | IEvaluatedEntrypoint>;
16
+ export declare class TransformCacheCollection<TEntrypoint extends IBaseCachedEntrypoint = Entrypoint | IEvaluatedEntrypoint> {
17
+ readonly entrypoints: Map<string, TEntrypoint>;
12
18
  readonly exports: Map<string, string[]>;
13
19
  private contentHashes;
14
- constructor(caches?: Partial<ICaches>);
15
- add<TCache extends CacheNames, TValue extends MapValue<ICaches[TCache]>>(cacheName: TCache, key: string, value: TValue): void;
20
+ constructor(caches?: Partial<ICaches<TEntrypoint>>);
21
+ add<TCache extends CacheNames, TValue extends MapValue<ICaches<TEntrypoint>[TCache]>>(cacheName: TCache, key: string, value: TValue): void;
16
22
  clear(cacheName: CacheNames | 'all'): void;
17
23
  delete(cacheName: CacheNames, key: string): void;
18
- get<TCache extends CacheNames, TValue extends MapValue<ICaches[TCache]>>(cacheName: TCache, key: string): TValue | undefined;
24
+ get<TCache extends CacheNames, TValue extends MapValue<ICaches<TEntrypoint>[TCache]>>(cacheName: TCache, key: string): TValue | undefined;
19
25
  has(cacheName: CacheNames, key: string): boolean;
20
26
  invalidate(cacheName: CacheNames, key: string): void;
21
27
  invalidateForFile(filename: string): void;
package/types/cache.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.TransformCacheCollection = void 0;
4
7
  const crypto_1 = require("crypto");
8
+ const node_fs_1 = __importDefault(require("node:fs"));
5
9
  const shared_1 = require("@wyw-in-js/shared");
6
10
  const getFileIdx_1 = require("./utils/getFileIdx");
7
11
  function hashContent(content) {
@@ -30,6 +34,9 @@ class TransformCacheCollection {
30
34
  return cache.get(key) === value ? 'unchanged' : 'updated';
31
35
  });
32
36
  cache.set(key, value);
37
+ if ('initialCode' in value) {
38
+ this.contentHashes.set(key, hashContent(value.initialCode ?? ''));
39
+ }
33
40
  }
34
41
  clear(cacheName) {
35
42
  if (cacheName === 'all') {
@@ -71,6 +78,18 @@ class TransformCacheCollection {
71
78
  });
72
79
  }
73
80
  invalidateIfChanged(filename, content) {
81
+ const fileEntrypoint = this.get('entrypoints', filename);
82
+ // We need to check all dependencies of the file
83
+ // because they might have changed as well.
84
+ if (fileEntrypoint) {
85
+ for (const [, dependency] of fileEntrypoint.dependencies) {
86
+ const dependencyFilename = dependency.resolved;
87
+ if (dependencyFilename) {
88
+ const dependencyContent = node_fs_1.default.readFileSync(dependencyFilename, 'utf8');
89
+ this.invalidateIfChanged(dependencyFilename, dependencyContent);
90
+ }
91
+ }
92
+ }
74
93
  const hash = this.contentHashes.get(filename);
75
94
  const newHash = hashContent(content);
76
95
  if (hash !== newHash) {
@@ -2,6 +2,7 @@
2
2
  import type { Debugger } from '@wyw-in-js/shared';
3
3
  import type { ParentEntrypoint } from '../types';
4
4
  import type { Services } from './types';
5
+ import type { IEntrypointDependency } from './Entrypoint.types';
5
6
  export declare const createExports: (log: Debugger) => Record<string | symbol, unknown>;
6
7
  export declare abstract class BaseEntrypoint {
7
8
  #private;
@@ -11,11 +12,12 @@ export declare abstract class BaseEntrypoint {
11
12
  readonly name: string;
12
13
  readonly only: string[];
13
14
  readonly parents: ParentEntrypoint[];
15
+ readonly dependencies: Map<string, IEntrypointDependency>;
14
16
  static createExports: (log: Debugger) => Record<string | symbol, unknown>;
15
17
  readonly idx: string;
16
18
  readonly log: Debugger;
17
19
  readonly seqId: number;
18
- protected constructor(services: Services, evaluatedOnly: string[], exports: Record<string | symbol, unknown> | undefined, generation: number, name: string, only: string[], parents: ParentEntrypoint[]);
20
+ protected constructor(services: Services, evaluatedOnly: string[], exports: Record<string | symbol, unknown> | undefined, generation: number, name: string, only: string[], parents: ParentEntrypoint[], dependencies: Map<string, IEntrypointDependency>);
19
21
  get exports(): Record<string | symbol, unknown>;
20
22
  set exports(value: unknown);
21
23
  get ref(): string;
@@ -115,22 +115,25 @@ class BaseEntrypoint {
115
115
  name;
116
116
  only;
117
117
  parents;
118
+ dependencies;
118
119
  static createExports = exports.createExports;
119
120
  idx;
120
121
  log;
121
122
  // eslint-disable-next-line no-plusplus
122
123
  seqId = entrypointSeqId++;
123
124
  #exports;
124
- constructor(services, evaluatedOnly, exports, generation, name, only, parents) {
125
+ constructor(services, evaluatedOnly, exports, generation, name, only, parents, dependencies) {
125
126
  this.services = services;
126
127
  this.evaluatedOnly = evaluatedOnly;
127
128
  this.generation = generation;
128
129
  this.name = name;
129
130
  this.only = only;
130
131
  this.parents = parents;
132
+ this.dependencies = dependencies;
131
133
  this.idx = (0, getFileIdx_1.getFileIdx)(name);
132
134
  this.log =
133
135
  parents[0]?.log.extend(this.ref, '->') ?? services.log.extend(this.ref);
136
+ this.dependencies = dependencies;
134
137
  let isExportsInherited = false;
135
138
  if (exports) {
136
139
  if (isProxy(exports)) {
@@ -9,7 +9,7 @@ export declare class Entrypoint extends BaseEntrypoint {
9
9
  #private;
10
10
  readonly initialCode: string | undefined;
11
11
  protected readonly resolveTasks: Map<string, Promise<IEntrypointDependency>>;
12
- protected readonly dependencies: Map<string, IEntrypointDependency>;
12
+ readonly dependencies: Map<string, IEntrypointDependency>;
13
13
  readonly evaluated = false;
14
14
  readonly loadedAndParsed: IEntrypointCode | IIgnoredEntrypoint;
15
15
  protected onSupersedeHandlers: Array<(newEntrypoint: Entrypoint) => void>;
@@ -33,7 +33,7 @@ class Entrypoint extends BaseEntrypoint_1.BaseEntrypoint {
33
33
  #supersededWith = null;
34
34
  #transformResultCode = null;
35
35
  constructor(services, parents, initialCode, name, only, exports, evaluatedOnly, loadedAndParsed, resolveTasks = new Map(), dependencies = new Map(), generation = 1) {
36
- super(services, evaluatedOnly, exports, generation, name, only, parents);
36
+ super(services, evaluatedOnly, exports, generation, name, only, parents, dependencies);
37
37
  this.initialCode = initialCode;
38
38
  this.resolveTasks = resolveTasks;
39
39
  this.dependencies = dependencies;
@@ -106,9 +106,7 @@ class Entrypoint extends BaseEntrypoint_1.BaseEntrypoint {
106
106
  }
107
107
  const exports = cached?.exports;
108
108
  const evaluatedOnly = cached?.evaluatedOnly ?? [];
109
- const mergedOnly = !changed && cached?.only
110
- ? (0, Entrypoint_helpers_1.mergeOnly)(cached.only, only).filter((i) => !evaluatedOnly.includes(i))
111
- : only;
109
+ const mergedOnly = cached?.only ? (0, Entrypoint_helpers_1.mergeOnly)(cached.only, only) : only;
112
110
  if (cached?.evaluated) {
113
111
  cached.log('is already evaluated with', cached.evaluatedOnly);
114
112
  }
@@ -177,7 +175,7 @@ class Entrypoint extends BaseEntrypoint_1.BaseEntrypoint {
177
175
  createEvaluated() {
178
176
  const evaluatedOnly = (0, Entrypoint_helpers_1.mergeOnly)(this.evaluatedOnly, this.only);
179
177
  this.log('create EvaluatedEntrypoint for %o', evaluatedOnly);
180
- return new EvaluatedEntrypoint_1.EvaluatedEntrypoint(this.services, evaluatedOnly, this.exportsProxy, this.generation + 1, this.name, this.only, this.parents);
178
+ return new EvaluatedEntrypoint_1.EvaluatedEntrypoint(this.services, evaluatedOnly, this.exportsProxy, this.generation + 1, this.name, this.only, this.parents, this.dependencies);
181
179
  }
182
180
  getDependency(name) {
183
181
  return this.dependencies.get(name);
@@ -1,7 +1,9 @@
1
1
  /// <reference types="debug" />
2
2
  import type { Debugger } from '@wyw-in-js/shared';
3
3
  import { BaseEntrypoint } from './BaseEntrypoint';
4
+ import type { IEntrypointDependency } from './Entrypoint.types';
4
5
  export interface IEvaluatedEntrypoint {
6
+ dependencies: Map<string, IEntrypointDependency>;
5
7
  evaluated: true;
6
8
  evaluatedOnly: string[];
7
9
  exports: Record<string | symbol, unknown>;
package/types/types.d.ts CHANGED
@@ -46,6 +46,7 @@ export type Options = {
46
46
  inputSourceMap?: RawSourceMap;
47
47
  outputFilename?: string;
48
48
  pluginOptions?: Partial<PluginOptions>;
49
+ prefixer?: boolean;
49
50
  preprocessor?: Preprocessor;
50
51
  root?: string;
51
52
  };