@wyw-in-js/shared 1.0.5 → 2.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/esm/IVariableContext.js +1 -1
  2. package/esm/IVariableContext.js.map +1 -1
  3. package/esm/asyncResolveFallback.js +35 -31
  4. package/esm/asyncResolveFallback.js.map +1 -1
  5. package/esm/asyncResolverFactory.js +9 -9
  6. package/esm/asyncResolverFactory.js.map +1 -1
  7. package/esm/debugger.js +1 -1
  8. package/esm/debugger.js.map +1 -1
  9. package/esm/findPackageJSON.js +60 -68
  10. package/esm/findPackageJSON.js.map +1 -1
  11. package/esm/hasEvalMeta.js +2 -2
  12. package/esm/hasEvalMeta.js.map +1 -1
  13. package/esm/index.js +10 -10
  14. package/esm/index.js.map +1 -1
  15. package/esm/isBoxedPrimitive.js +4 -5
  16. package/esm/isBoxedPrimitive.js.map +1 -1
  17. package/esm/logger.js +17 -17
  18. package/esm/logger.js.map +1 -1
  19. package/esm/options/isFeatureEnabled.js +22 -27
  20. package/esm/options/isFeatureEnabled.js.map +1 -1
  21. package/esm/options/types.js +1 -1
  22. package/esm/options/types.js.map +1 -1
  23. package/esm/slugify.js +47 -49
  24. package/esm/slugify.js.map +1 -1
  25. package/esm/types.js +6 -10
  26. package/esm/types.js.map +1 -1
  27. package/package.json +12 -10
  28. package/types/IVariableContext.js +1 -2
  29. package/types/asyncResolveFallback.js +8 -14
  30. package/types/asyncResolverFactory.js +1 -5
  31. package/types/debugger.js +1 -2
  32. package/types/findPackageJSON.js +13 -17
  33. package/types/hasEvalMeta.js +1 -4
  34. package/types/index.d.ts +2 -2
  35. package/types/index.js +9 -23
  36. package/types/isBoxedPrimitive.js +1 -4
  37. package/types/logger.js +7 -14
  38. package/types/options/isFeatureEnabled.js +3 -7
  39. package/types/options/types.d.ts +79 -8
  40. package/types/options/types.js +1 -2
  41. package/types/slugify.js +1 -4
  42. package/types/types.d.ts +40 -1
  43. package/types/types.js +2 -5
  44. package/esm/babel.js +0 -2
  45. package/esm/babel.js.map +0 -1
  46. package/lib/IVariableContext.js +0 -2
  47. package/lib/IVariableContext.js.map +0 -1
  48. package/lib/asyncResolveFallback.js +0 -47
  49. package/lib/asyncResolveFallback.js.map +0 -1
  50. package/lib/asyncResolverFactory.js +0 -18
  51. package/lib/asyncResolverFactory.js.map +0 -1
  52. package/lib/babel.js +0 -2
  53. package/lib/babel.js.map +0 -1
  54. package/lib/debugger.js +0 -2
  55. package/lib/debugger.js.map +0 -1
  56. package/lib/findPackageJSON.js +0 -81
  57. package/lib/findPackageJSON.js.map +0 -1
  58. package/lib/hasEvalMeta.js +0 -10
  59. package/lib/hasEvalMeta.js.map +0 -1
  60. package/lib/index.js +0 -81
  61. package/lib/index.js.map +0 -1
  62. package/lib/isBoxedPrimitive.js +0 -15
  63. package/lib/isBoxedPrimitive.js.map +0 -1
  64. package/lib/logger.js +0 -35
  65. package/lib/logger.js.map +0 -1
  66. package/lib/options/isFeatureEnabled.js +0 -37
  67. package/lib/options/isFeatureEnabled.js.map +0 -1
  68. package/lib/options/types.js +0 -2
  69. package/lib/options/types.js.map +0 -1
  70. package/lib/slugify.js +0 -68
  71. package/lib/slugify.js.map +0 -1
  72. package/lib/types.js +0 -16
  73. package/lib/types.js.map +0 -1
  74. package/types/babel.d.ts +0 -2
  75. package/types/babel.js +0 -2
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=IVariableContext.js.map
2
+ //# sourceMappingURL=IVariableContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IVariableContext.js","names":[],"sources":["../src/IVariableContext.ts"],"sourcesContent":["export interface IVariableContext {\n componentName: string;\n componentSlug: string;\n index: number;\n precedingCss: string;\n processor: string;\n source: string;\n unit: string;\n valueSlug: string;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"mappings":"","names":[],"sources":["../src/IVariableContext.ts"],"version":3,"sourcesContent":["export interface IVariableContext {\n componentName: string;\n componentSlug: string;\n index: number;\n precedingCss: string;\n processor: string;\n source: string;\n unit: string;\n valueSlug: string;\n}\n"],"file":"IVariableContext.js"}
@@ -1,38 +1,42 @@
1
- import path from 'path';
1
+ import path from "path";
2
+ import { createRequire } from "module";
3
+ const nodeRequire = createRequire(import.meta.url);
2
4
  const safeResolve = (name, where) => {
3
- try {
4
- return require.resolve(name, {
5
- paths: where
6
- });
7
- } catch (e) {
8
- return e;
9
- }
5
+ try {
6
+ return nodeRequire.resolve(name, { paths: where });
7
+ } catch (e) {
8
+ return e;
9
+ }
10
10
  };
11
- const suffixes = ['.js', '.ts', '.jsx', '.tsx'].reduce((acc, ext) => {
12
- acc.push(`/index${ext}`);
13
- acc.push(ext);
14
- return acc;
11
+ const suffixes = [
12
+ ".js",
13
+ ".ts",
14
+ ".jsx",
15
+ ".tsx"
16
+ ].reduce((acc, ext) => {
17
+ acc.push(`/index${ext}`);
18
+ acc.push(ext);
19
+ return acc;
15
20
  }, []);
16
21
  export const syncResolve = (what, importer, stack) => {
17
- const where = [importer, ...stack].map(p => path.dirname(p));
18
- const resolved = safeResolve(what, where);
19
- if (!(resolved instanceof Error)) {
20
- return resolved;
21
- }
22
-
23
- // eslint-disable-next-line no-restricted-syntax
24
- for (const suffix of suffixes) {
25
- const resolvedWithSuffix = safeResolve(what + suffix, where);
26
- if (resolvedWithSuffix instanceof Error) {
27
- // eslint-disable-next-line no-continue
28
- continue;
29
- }
30
- return resolvedWithSuffix;
31
- }
32
- throw resolved;
22
+ const where = [importer, ...stack].map((p) => path.dirname(p));
23
+ const resolved = safeResolve(what, where);
24
+ if (!(resolved instanceof Error)) {
25
+ return resolved;
26
+ }
27
+ // eslint-disable-next-line no-restricted-syntax
28
+ for (const suffix of suffixes) {
29
+ const resolvedWithSuffix = safeResolve(what + suffix, where);
30
+ if (resolvedWithSuffix instanceof Error) {
31
+ // eslint-disable-next-line no-continue
32
+ continue;
33
+ }
34
+ return resolvedWithSuffix;
35
+ }
36
+ throw resolved;
33
37
  };
34
38
  export const asyncResolveFallback = (what, importer, stack) => {
35
- const resolved = syncResolve(what, importer, stack);
36
- return Promise.resolve(resolved);
39
+ const resolved = syncResolve(what, importer, stack);
40
+ return Promise.resolve(resolved);
37
41
  };
38
- //# sourceMappingURL=asyncResolveFallback.js.map
42
+ //# sourceMappingURL=asyncResolveFallback.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"asyncResolveFallback.js","names":["path","safeResolve","name","where","require","resolve","paths","e","suffixes","reduce","acc","ext","push","syncResolve","what","importer","stack","map","p","dirname","resolved","Error","suffix","resolvedWithSuffix","asyncResolveFallback","Promise"],"sources":["../src/asyncResolveFallback.ts"],"sourcesContent":["import path from 'path';\n\nconst safeResolve = (name: string, where: string[]): string | Error => {\n try {\n return require.resolve(name, {\n paths: where,\n });\n } catch (e: unknown) {\n return e as Error;\n }\n};\n\nconst suffixes = ['.js', '.ts', '.jsx', '.tsx'].reduce((acc: string[], ext) => {\n acc.push(`/index${ext}`);\n acc.push(ext);\n return acc;\n}, []);\n\nexport const syncResolve = (\n what: string,\n importer: string,\n stack: string[]\n): string => {\n const where = [importer, ...stack].map((p) => path.dirname(p));\n const resolved = safeResolve(what, where);\n if (!(resolved instanceof Error)) {\n return resolved;\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const suffix of suffixes) {\n const resolvedWithSuffix = safeResolve(what + suffix, where);\n if (resolvedWithSuffix instanceof Error) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n return resolvedWithSuffix;\n }\n\n throw resolved;\n};\n\nexport const asyncResolveFallback = (\n what: string,\n importer: string,\n stack: string[]\n): Promise<string> => {\n const resolved = syncResolve(what, importer, stack);\n return Promise.resolve(resolved);\n};\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AAEvB,MAAMC,WAAW,GAAGA,CAACC,IAAY,EAAEC,KAAe,KAAqB;EACrE,IAAI;IACF,OAAOC,OAAO,CAACC,OAAO,CAACH,IAAI,EAAE;MAC3BI,KAAK,EAAEH;IACT,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOI,CAAU,EAAE;IACnB,OAAOA,CAAC;EACV;AACF,CAAC;AAED,MAAMC,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAACC,MAAM,CAAC,CAACC,GAAa,EAAEC,GAAG,KAAK;EAC7ED,GAAG,CAACE,IAAI,CAAC,SAASD,GAAG,EAAE,CAAC;EACxBD,GAAG,CAACE,IAAI,CAACD,GAAG,CAAC;EACb,OAAOD,GAAG;AACZ,CAAC,EAAE,EAAE,CAAC;AAEN,OAAO,MAAMG,WAAW,GAAGA,CACzBC,IAAY,EACZC,QAAgB,EAChBC,KAAe,KACJ;EACX,MAAMb,KAAK,GAAG,CAACY,QAAQ,EAAE,GAAGC,KAAK,CAAC,CAACC,GAAG,CAAEC,CAAC,IAAKlB,IAAI,CAACmB,OAAO,CAACD,CAAC,CAAC,CAAC;EAC9D,MAAME,QAAQ,GAAGnB,WAAW,CAACa,IAAI,EAAEX,KAAK,CAAC;EACzC,IAAI,EAAEiB,QAAQ,YAAYC,KAAK,CAAC,EAAE;IAChC,OAAOD,QAAQ;EACjB;;EAEA;EACA,KAAK,MAAME,MAAM,IAAId,QAAQ,EAAE;IAC7B,MAAMe,kBAAkB,GAAGtB,WAAW,CAACa,IAAI,GAAGQ,MAAM,EAAEnB,KAAK,CAAC;IAC5D,IAAIoB,kBAAkB,YAAYF,KAAK,EAAE;MACvC;MACA;IACF;IAEA,OAAOE,kBAAkB;EAC3B;EAEA,MAAMH,QAAQ;AAChB,CAAC;AAED,OAAO,MAAMI,oBAAoB,GAAGA,CAClCV,IAAY,EACZC,QAAgB,EAChBC,KAAe,KACK;EACpB,MAAMI,QAAQ,GAAGP,WAAW,CAACC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,CAAC;EACnD,OAAOS,OAAO,CAACpB,OAAO,CAACe,QAAQ,CAAC;AAClC,CAAC","ignoreList":[]}
1
+ {"mappings":"AAAA,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAE9B,MAAM,cAAc,cAAc,OAAO,KAAK,IAAI;AAElD,MAAM,eAAe,MAAc,UAAoC;AACrE,KAAI;AACF,SAAO,YAAY,QAAQ,MAAM,EAC/B,OAAO,OACR,CAAC;UACK,GAAY;AACnB,SAAO;;;AAIX,MAAM,WAAW;CAAC;CAAO;CAAO;CAAQ;CAAO,CAAC,QAAQ,KAAe,QAAQ;AAC7E,KAAI,KAAK,SAAS,MAAM;AACxB,KAAI,KAAK,IAAI;AACb,QAAO;GACN,EAAE,CAAC;AAEN,OAAO,MAAM,eACX,MACA,UACA,UACW;CACX,MAAM,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,MAAM,KAAK,QAAQ,EAAE,CAAC;CAC9D,MAAM,WAAW,YAAY,MAAM,MAAM;AACzC,KAAI,EAAE,oBAAoB,QAAQ;AAChC,SAAO;;;AAIT,MAAK,MAAM,UAAU,UAAU;EAC7B,MAAM,qBAAqB,YAAY,OAAO,QAAQ,MAAM;AAC5D,MAAI,8BAA8B,OAAO;;AAEvC;;AAGF,SAAO;;AAGT,OAAM;;AAGR,OAAO,MAAM,wBACX,MACA,UACA,UACoB;CACpB,MAAM,WAAW,YAAY,MAAM,UAAU,MAAM;AACnD,QAAO,QAAQ,QAAQ,SAAS","names":[],"sources":["../src/asyncResolveFallback.ts"],"version":3,"sourcesContent":["import path from 'path';\nimport { createRequire } from 'module';\n\nconst nodeRequire = createRequire(import.meta.url);\n\nconst safeResolve = (name: string, where: string[]): string | Error => {\n try {\n return nodeRequire.resolve(name, {\n paths: where,\n });\n } catch (e: unknown) {\n return e as Error;\n }\n};\n\nconst suffixes = ['.js', '.ts', '.jsx', '.tsx'].reduce((acc: string[], ext) => {\n acc.push(`/index${ext}`);\n acc.push(ext);\n return acc;\n}, []);\n\nexport const syncResolve = (\n what: string,\n importer: string,\n stack: string[]\n): string => {\n const where = [importer, ...stack].map((p) => path.dirname(p));\n const resolved = safeResolve(what, where);\n if (!(resolved instanceof Error)) {\n return resolved;\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const suffix of suffixes) {\n const resolvedWithSuffix = safeResolve(what + suffix, where);\n if (resolvedWithSuffix instanceof Error) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n return resolvedWithSuffix;\n }\n\n throw resolved;\n};\n\nexport const asyncResolveFallback = (\n what: string,\n importer: string,\n stack: string[]\n): Promise<string> => {\n const resolved = syncResolve(what, importer, stack);\n return Promise.resolve(resolved);\n};\n"],"file":"asyncResolveFallback.js"}
@@ -1,11 +1,11 @@
1
1
  export const asyncResolverFactory = (onResolve, mapper) => {
2
- const memoizedSyncResolve = new WeakMap();
3
- return resolveFn => {
4
- if (!memoizedSyncResolve.has(resolveFn)) {
5
- const fn = (what, importer, stack) => resolveFn(...mapper(what, importer, stack)).then(resolved => onResolve(resolved, what, importer, stack));
6
- memoizedSyncResolve.set(resolveFn, fn);
7
- }
8
- return memoizedSyncResolve.get(resolveFn);
9
- };
2
+ const memoizedSyncResolve = new WeakMap();
3
+ return (resolveFn) => {
4
+ if (!memoizedSyncResolve.has(resolveFn)) {
5
+ const fn = (what, importer, stack) => resolveFn(...mapper(what, importer, stack)).then((resolved) => onResolve(resolved, what, importer, stack));
6
+ memoizedSyncResolve.set(resolveFn, fn);
7
+ }
8
+ return memoizedSyncResolve.get(resolveFn);
9
+ };
10
10
  };
11
- //# sourceMappingURL=asyncResolverFactory.js.map
11
+ //# sourceMappingURL=asyncResolverFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"asyncResolverFactory.js","names":["asyncResolverFactory","onResolve","mapper","memoizedSyncResolve","WeakMap","resolveFn","has","fn","what","importer","stack","then","resolved","set","get"],"sources":["../src/asyncResolverFactory.ts"],"sourcesContent":["export const asyncResolverFactory = <\n TResolved,\n const TResolverArgs extends readonly unknown[],\n TResolve extends (...args: TResolverArgs) => Promise<TResolved>,\n>(\n onResolve: (\n resolved: TResolved,\n what: string,\n importer: string,\n stack: string[]\n ) => Promise<string | null>,\n mapper: (what: string, importer: string, stack: string[]) => TResolverArgs\n) => {\n const memoizedSyncResolve = new WeakMap<\n TResolve,\n (what: string, importer: string, stack: string[]) => Promise<string | null>\n >();\n\n return (resolveFn: TResolve) => {\n if (!memoizedSyncResolve.has(resolveFn)) {\n const fn = (\n what: string,\n importer: string,\n stack: string[]\n ): Promise<string | null> =>\n resolveFn(...mapper(what, importer, stack)).then((resolved) =>\n onResolve(resolved, what, importer, stack)\n );\n\n memoizedSyncResolve.set(resolveFn, fn);\n }\n\n return memoizedSyncResolve.get(resolveFn)!;\n };\n};\n"],"mappings":"AAAA,OAAO,MAAMA,oBAAoB,GAAGA,CAKlCC,SAK2B,EAC3BC,MAA0E,KACvE;EACH,MAAMC,mBAAmB,GAAG,IAAIC,OAAO,CAGrC,CAAC;EAEH,OAAQC,SAAmB,IAAK;IAC9B,IAAI,CAACF,mBAAmB,CAACG,GAAG,CAACD,SAAS,CAAC,EAAE;MACvC,MAAME,EAAE,GAAGA,CACTC,IAAY,EACZC,QAAgB,EAChBC,KAAe,KAEfL,SAAS,CAAC,GAAGH,MAAM,CAACM,IAAI,EAAEC,QAAQ,EAAEC,KAAK,CAAC,CAAC,CAACC,IAAI,CAAEC,QAAQ,IACxDX,SAAS,CAACW,QAAQ,EAAEJ,IAAI,EAAEC,QAAQ,EAAEC,KAAK,CAC3C,CAAC;MAEHP,mBAAmB,CAACU,GAAG,CAACR,SAAS,EAAEE,EAAE,CAAC;IACxC;IAEA,OAAOJ,mBAAmB,CAACW,GAAG,CAACT,SAAS,CAAC;EAC3C,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"mappings":"AAAA,OAAO,MAAM,wBAKX,WAMA,WACG;CACH,MAAM,sBAAsB,IAAI,SAG7B;AAEH,SAAQ,cAAwB;AAC9B,MAAI,CAAC,oBAAoB,IAAI,UAAU,EAAE;GACvC,MAAM,MACJ,MACA,UACA,UAEA,UAAU,GAAG,OAAO,MAAM,UAAU,MAAM,CAAC,CAAC,MAAM,aAChD,UAAU,UAAU,MAAM,UAAU,MAAM,CAC3C;AAEH,uBAAoB,IAAI,WAAW,GAAG;;AAGxC,SAAO,oBAAoB,IAAI,UAAU","names":[],"sources":["../src/asyncResolverFactory.ts"],"version":3,"sourcesContent":["export const asyncResolverFactory = <\n TResolved,\n const TResolverArgs extends readonly unknown[],\n TResolve extends (...args: TResolverArgs) => Promise<TResolved>,\n>(\n onResolve: (\n resolved: TResolved,\n what: string,\n importer: string,\n stack: string[]\n ) => Promise<string | null>,\n mapper: (what: string, importer: string, stack: string[]) => TResolverArgs\n) => {\n const memoizedSyncResolve = new WeakMap<\n TResolve,\n (what: string, importer: string, stack: string[]) => Promise<string | null>\n >();\n\n return (resolveFn: TResolve) => {\n if (!memoizedSyncResolve.has(resolveFn)) {\n const fn = (\n what: string,\n importer: string,\n stack: string[]\n ): Promise<string | null> =>\n resolveFn(...mapper(what, importer, stack)).then((resolved) =>\n onResolve(resolved, what, importer, stack)\n );\n\n memoizedSyncResolve.set(resolveFn, fn);\n }\n\n return memoizedSyncResolve.get(resolveFn)!;\n };\n};\n"],"file":"asyncResolverFactory.js"}
package/esm/debugger.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=debugger.js.map
2
+ //# sourceMappingURL=debugger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"debugger.js","names":[],"sources":["../src/debugger.ts"],"sourcesContent":["export type Debugger = {\n (formatter: unknown, ...args: unknown[]): void;\n color: string;\n destroy: () => boolean;\n diff: number;\n enabled: boolean;\n extend: (namespace: string, delimiter?: string) => Debugger;\n log: (...args: unknown[]) => unknown;\n namespace: string;\n};\n"],"mappings":"","ignoreList":[]}
1
+ {"mappings":"","names":[],"sources":["../src/debugger.ts"],"version":3,"sourcesContent":["export type Debugger = {\n (formatter: unknown, ...args: unknown[]): void;\n color: string;\n destroy: () => boolean;\n diff: number;\n enabled: boolean;\n extend: (namespace: string, delimiter?: string) => Debugger;\n log: (...args: unknown[]) => unknown;\n namespace: string;\n};\n"],"file":"debugger.js"}
@@ -1,73 +1,65 @@
1
- import { readFileSync } from 'fs';
2
- import { dirname, isAbsolute } from 'path';
3
- import findUp from 'find-up';
1
+ import { readFileSync } from "fs";
2
+ import { dirname, isAbsolute } from "path";
3
+ import { createRequire } from "module";
4
+ import findUp from "find-up";
4
5
  const cache = new Map();
6
+ const nodeRequire = createRequire(import.meta.url);
5
7
  function findSelfPackageJSON(pkgName, filename) {
6
- const packageJSONPath = findUp.sync('package.json', {
7
- cwd: dirname(filename)
8
- });
9
- if (!packageJSONPath) return undefined;
10
- try {
11
- const packageJSON = JSON.parse(readFileSync(packageJSONPath, 'utf8'));
12
- return packageJSON?.name === pkgName ? packageJSONPath : undefined;
13
- } catch {
14
- return undefined;
15
- }
8
+ const packageJSONPath = findUp.sync("package.json", { cwd: dirname(filename) });
9
+ if (!packageJSONPath) return undefined;
10
+ try {
11
+ const packageJSON = JSON.parse(readFileSync(packageJSONPath, "utf8"));
12
+ return packageJSON?.name === pkgName ? packageJSONPath : undefined;
13
+ } catch {
14
+ return undefined;
15
+ }
16
16
  }
17
17
  export function findPackageJSON(pkgName, filename) {
18
- // Jest's resolver does not work properly with `moduleNameMapper` when `paths` are defined
19
- const isJest = Boolean(globalThis.process?.env?.JEST_WORKER_ID);
20
- const skipPathsOptions = isJest && !pkgName.startsWith('.');
21
- try {
22
- const pkgPath = pkgName === '.' && filename && isAbsolute(filename) ? filename : require.resolve(pkgName, filename ? {
23
- paths: [dirname(filename)]
24
- } : {});
25
- if (!cache.has(pkgPath)) {
26
- cache.set(pkgPath, findUp.sync('package.json', {
27
- cwd: pkgPath
28
- }));
29
- }
30
- return cache.get(pkgPath);
31
- } catch (er) {
32
- const code = typeof er === 'object' && er !== null && 'code' in er ? er.code : undefined;
33
- if (code === 'MODULE_NOT_FOUND') {
34
- if (filename) {
35
- // Bun doesn't expose workspace packages via `require.resolve`, but tests
36
- // and tooling can still reference the current package by name.
37
- const selfPackageJSON = findSelfPackageJSON(pkgName, filename);
38
- if (selfPackageJSON) {
39
- return selfPackageJSON;
40
- }
41
- const bun = globalThis.Bun;
42
- if (bun && typeof bun.resolveSync === 'function') {
43
- try {
44
- const resolved = bun.resolveSync(pkgName, filename);
45
- if (!cache.has(resolved)) {
46
- cache.set(resolved, findUp.sync('package.json', {
47
- cwd: resolved
48
- }));
49
- }
50
- return cache.get(resolved);
51
- } catch {
52
- // fall through to the existing resolution heuristics
53
- }
54
- }
55
- }
56
- if (skipPathsOptions && filename) {
57
- return findPackageJSON(pkgName, null);
58
- }
59
- return undefined;
60
- }
61
- if (code === 'ERR_PACKAGE_PATH_NOT_EXPORTED') {
62
- // See https://github.com/Anber/wyw-in-js/issues/43
63
- // `require` can't resolve ESM-only packages. We can use the `resolve`
64
- // package here, but it does not solve all cases because `pkgName`
65
- // can be an alias and should be resolved by a bundler. However, we can't use
66
- // `resolve` from a bundler because it is async. The good news is that in that
67
- // specific case, we can just ignore those packages. For now.
68
- return undefined;
69
- }
70
- throw er;
71
- }
18
+ // Jest's resolver does not work properly with `moduleNameMapper` when `paths` are defined
19
+ const isJest = Boolean(globalThis.process?.env?.JEST_WORKER_ID);
20
+ const skipPathsOptions = isJest && !pkgName.startsWith(".");
21
+ try {
22
+ const pkgPath = pkgName === "." && filename && isAbsolute(filename) ? filename : nodeRequire.resolve(pkgName, filename ? { paths: [dirname(filename)] } : {});
23
+ if (!cache.has(pkgPath)) {
24
+ cache.set(pkgPath, findUp.sync("package.json", { cwd: pkgPath }));
25
+ }
26
+ return cache.get(pkgPath);
27
+ } catch (er) {
28
+ const code = typeof er === "object" && er !== null && "code" in er ? er.code : undefined;
29
+ if (code === "MODULE_NOT_FOUND") {
30
+ if (filename) {
31
+ // Bun doesn't expose workspace packages via `require.resolve`, but tests
32
+ // and tooling can still reference the current package by name.
33
+ const selfPackageJSON = findSelfPackageJSON(pkgName, filename);
34
+ if (selfPackageJSON) {
35
+ return selfPackageJSON;
36
+ }
37
+ const bun = globalThis.Bun;
38
+ if (bun && typeof bun.resolveSync === "function") {
39
+ try {
40
+ const resolved = bun.resolveSync(pkgName, filename);
41
+ if (!cache.has(resolved)) {
42
+ cache.set(resolved, findUp.sync("package.json", { cwd: resolved }));
43
+ }
44
+ return cache.get(resolved);
45
+ } catch {}
46
+ }
47
+ }
48
+ if (skipPathsOptions && filename) {
49
+ return findPackageJSON(pkgName, null);
50
+ }
51
+ return undefined;
52
+ }
53
+ if (code === "ERR_PACKAGE_PATH_NOT_EXPORTED") {
54
+ // See https://github.com/Anber/wyw-in-js/issues/43
55
+ // `require` can't resolve ESM-only packages. We can use the `resolve`
56
+ // package here, but it does not solve all cases because `pkgName`
57
+ // can be an alias and should be resolved by a bundler. However, we can't use
58
+ // `resolve` from a bundler because it is async. The good news is that in that
59
+ // specific case, we can just ignore those packages. For now.
60
+ return undefined;
61
+ }
62
+ throw er;
63
+ }
72
64
  }
73
- //# sourceMappingURL=findPackageJSON.js.map
65
+ //# sourceMappingURL=findPackageJSON.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"findPackageJSON.js","names":["readFileSync","dirname","isAbsolute","findUp","cache","Map","findSelfPackageJSON","pkgName","filename","packageJSONPath","sync","cwd","undefined","packageJSON","JSON","parse","name","findPackageJSON","isJest","Boolean","globalThis","process","env","JEST_WORKER_ID","skipPathsOptions","startsWith","pkgPath","require","resolve","paths","has","set","get","er","code","selfPackageJSON","bun","Bun","resolveSync","resolved"],"sources":["../src/findPackageJSON.ts"],"sourcesContent":["import { readFileSync } from 'fs';\nimport { dirname, isAbsolute } from 'path';\nimport findUp from 'find-up';\n\nconst cache = new Map<string, string | undefined>();\n\nfunction findSelfPackageJSON(pkgName: string, filename: string) {\n const packageJSONPath = findUp.sync('package.json', {\n cwd: dirname(filename),\n });\n if (!packageJSONPath) return undefined;\n\n try {\n const packageJSON = JSON.parse(readFileSync(packageJSONPath, 'utf8'));\n return packageJSON?.name === pkgName ? packageJSONPath : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport function findPackageJSON(\n pkgName: string,\n filename: string | null | undefined\n) {\n // Jest's resolver does not work properly with `moduleNameMapper` when `paths` are defined\n const isJest = Boolean(globalThis.process?.env?.JEST_WORKER_ID);\n const skipPathsOptions = isJest && !pkgName.startsWith('.');\n\n try {\n const pkgPath =\n pkgName === '.' && filename && isAbsolute(filename)\n ? filename\n : require.resolve(\n pkgName,\n filename ? { paths: [dirname(filename)] } : {}\n );\n if (!cache.has(pkgPath)) {\n cache.set(pkgPath, findUp.sync('package.json', { cwd: pkgPath }));\n }\n\n return cache.get(pkgPath);\n } catch (er: unknown) {\n const code =\n typeof er === 'object' && er !== null && 'code' in er\n ? er.code\n : undefined;\n\n if (code === 'MODULE_NOT_FOUND') {\n if (filename) {\n // Bun doesn't expose workspace packages via `require.resolve`, but tests\n // and tooling can still reference the current package by name.\n const selfPackageJSON = findSelfPackageJSON(pkgName, filename);\n if (selfPackageJSON) {\n return selfPackageJSON;\n }\n\n const bun = (\n globalThis as typeof globalThis & {\n Bun?: {\n resolveSync?: (specifier: string, from: string) => string;\n };\n }\n ).Bun;\n if (bun && typeof bun.resolveSync === 'function') {\n try {\n const resolved = bun.resolveSync(pkgName, filename);\n if (!cache.has(resolved)) {\n cache.set(\n resolved,\n findUp.sync('package.json', {\n cwd: resolved,\n })\n );\n }\n\n return cache.get(resolved);\n } catch {\n // fall through to the existing resolution heuristics\n }\n }\n }\n\n if (skipPathsOptions && filename) {\n return findPackageJSON(pkgName, null);\n }\n\n return undefined;\n }\n\n if (code === 'ERR_PACKAGE_PATH_NOT_EXPORTED') {\n // See https://github.com/Anber/wyw-in-js/issues/43\n // `require` can't resolve ESM-only packages. We can use the `resolve`\n // package here, but it does not solve all cases because `pkgName`\n // can be an alias and should be resolved by a bundler. However, we can't use\n // `resolve` from a bundler because it is async. The good news is that in that\n // specific case, we can just ignore those packages. For now.\n return undefined;\n }\n\n throw er;\n }\n}\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,IAAI;AACjC,SAASC,OAAO,EAAEC,UAAU,QAAQ,MAAM;AAC1C,OAAOC,MAAM,MAAM,SAAS;AAE5B,MAAMC,KAAK,GAAG,IAAIC,GAAG,CAA6B,CAAC;AAEnD,SAASC,mBAAmBA,CAACC,OAAe,EAAEC,QAAgB,EAAE;EAC9D,MAAMC,eAAe,GAAGN,MAAM,CAACO,IAAI,CAAC,cAAc,EAAE;IAClDC,GAAG,EAAEV,OAAO,CAACO,QAAQ;EACvB,CAAC,CAAC;EACF,IAAI,CAACC,eAAe,EAAE,OAAOG,SAAS;EAEtC,IAAI;IACF,MAAMC,WAAW,GAAGC,IAAI,CAACC,KAAK,CAACf,YAAY,CAACS,eAAe,EAAE,MAAM,CAAC,CAAC;IACrE,OAAOI,WAAW,EAAEG,IAAI,KAAKT,OAAO,GAAGE,eAAe,GAAGG,SAAS;EACpE,CAAC,CAAC,MAAM;IACN,OAAOA,SAAS;EAClB;AACF;AAEA,OAAO,SAASK,eAAeA,CAC7BV,OAAe,EACfC,QAAmC,EACnC;EACA;EACA,MAAMU,MAAM,GAAGC,OAAO,CAACC,UAAU,CAACC,OAAO,EAAEC,GAAG,EAAEC,cAAc,CAAC;EAC/D,MAAMC,gBAAgB,GAAGN,MAAM,IAAI,CAACX,OAAO,CAACkB,UAAU,CAAC,GAAG,CAAC;EAE3D,IAAI;IACF,MAAMC,OAAO,GACXnB,OAAO,KAAK,GAAG,IAAIC,QAAQ,IAAIN,UAAU,CAACM,QAAQ,CAAC,GAC/CA,QAAQ,GACRmB,OAAO,CAACC,OAAO,CACbrB,OAAO,EACPC,QAAQ,GAAG;MAAEqB,KAAK,EAAE,CAAC5B,OAAO,CAACO,QAAQ,CAAC;IAAE,CAAC,GAAG,CAAC,CAC/C,CAAC;IACP,IAAI,CAACJ,KAAK,CAAC0B,GAAG,CAACJ,OAAO,CAAC,EAAE;MACvBtB,KAAK,CAAC2B,GAAG,CAACL,OAAO,EAAEvB,MAAM,CAACO,IAAI,CAAC,cAAc,EAAE;QAAEC,GAAG,EAAEe;MAAQ,CAAC,CAAC,CAAC;IACnE;IAEA,OAAOtB,KAAK,CAAC4B,GAAG,CAACN,OAAO,CAAC;EAC3B,CAAC,CAAC,OAAOO,EAAW,EAAE;IACpB,MAAMC,IAAI,GACR,OAAOD,EAAE,KAAK,QAAQ,IAAIA,EAAE,KAAK,IAAI,IAAI,MAAM,IAAIA,EAAE,GACjDA,EAAE,CAACC,IAAI,GACPtB,SAAS;IAEf,IAAIsB,IAAI,KAAK,kBAAkB,EAAE;MAC/B,IAAI1B,QAAQ,EAAE;QACZ;QACA;QACA,MAAM2B,eAAe,GAAG7B,mBAAmB,CAACC,OAAO,EAAEC,QAAQ,CAAC;QAC9D,IAAI2B,eAAe,EAAE;UACnB,OAAOA,eAAe;QACxB;QAEA,MAAMC,GAAG,GACPhB,UAAU,CAKViB,GAAG;QACL,IAAID,GAAG,IAAI,OAAOA,GAAG,CAACE,WAAW,KAAK,UAAU,EAAE;UAChD,IAAI;YACF,MAAMC,QAAQ,GAAGH,GAAG,CAACE,WAAW,CAAC/B,OAAO,EAAEC,QAAQ,CAAC;YACnD,IAAI,CAACJ,KAAK,CAAC0B,GAAG,CAACS,QAAQ,CAAC,EAAE;cACxBnC,KAAK,CAAC2B,GAAG,CACPQ,QAAQ,EACRpC,MAAM,CAACO,IAAI,CAAC,cAAc,EAAE;gBAC1BC,GAAG,EAAE4B;cACP,CAAC,CACH,CAAC;YACH;YAEA,OAAOnC,KAAK,CAAC4B,GAAG,CAACO,QAAQ,CAAC;UAC5B,CAAC,CAAC,MAAM;YACN;UAAA;QAEJ;MACF;MAEA,IAAIf,gBAAgB,IAAIhB,QAAQ,EAAE;QAChC,OAAOS,eAAe,CAACV,OAAO,EAAE,IAAI,CAAC;MACvC;MAEA,OAAOK,SAAS;IAClB;IAEA,IAAIsB,IAAI,KAAK,+BAA+B,EAAE;MAC5C;MACA;MACA;MACA;MACA;MACA;MACA,OAAOtB,SAAS;IAClB;IAEA,MAAMqB,EAAE;EACV;AACF","ignoreList":[]}
1
+ {"mappings":"AAAA,SAAS,oBAAoB;AAC7B,SAAS,SAAS,kBAAkB;AACpC,SAAS,qBAAqB;AAC9B,OAAO,YAAY;AAEnB,MAAM,QAAQ,IAAI,KAAiC;AACnD,MAAM,cAAc,cAAc,OAAO,KAAK,IAAI;AAElD,SAAS,oBAAoB,SAAiB,UAAkB;CAC9D,MAAM,kBAAkB,OAAO,KAAK,gBAAgB,EAClD,KAAK,QAAQ,SAAS,EACvB,CAAC;AACF,KAAI,CAAC,gBAAiB,QAAO;AAE7B,KAAI;EACF,MAAM,cAAc,KAAK,MAAM,aAAa,iBAAiB,OAAO,CAAC;AACrE,SAAO,aAAa,SAAS,UAAU,kBAAkB;SACnD;AACN,SAAO;;;AAIX,OAAO,SAAS,gBACd,SACA,UACA;;CAEA,MAAM,SAAS,QAAQ,WAAW,SAAS,KAAK,eAAe;CAC/D,MAAM,mBAAmB,UAAU,CAAC,QAAQ,WAAW,IAAI;AAE3D,KAAI;EACF,MAAM,UACJ,YAAY,OAAO,YAAY,WAAW,SAAS,GAC/C,WACA,YAAY,QACV,SACA,WAAW,EAAE,OAAO,CAAC,QAAQ,SAAS,CAAC,EAAE,GAAG,EAAE,CAC/C;AACP,MAAI,CAAC,MAAM,IAAI,QAAQ,EAAE;AACvB,SAAM,IAAI,SAAS,OAAO,KAAK,gBAAgB,EAAE,KAAK,SAAS,CAAC,CAAC;;AAGnE,SAAO,MAAM,IAAI,QAAQ;UAClB,IAAa;EACpB,MAAM,OACJ,OAAO,OAAO,YAAY,OAAO,QAAQ,UAAU,KAC/C,GAAG,OACH;AAEN,MAAI,SAAS,oBAAoB;AAC/B,OAAI,UAAU;;;IAGZ,MAAM,kBAAkB,oBAAoB,SAAS,SAAS;AAC9D,QAAI,iBAAiB;AACnB,YAAO;;IAGT,MAAM,MACJ,WAKA;AACF,QAAI,OAAO,OAAO,IAAI,gBAAgB,YAAY;AAChD,SAAI;MACF,MAAM,WAAW,IAAI,YAAY,SAAS,SAAS;AACnD,UAAI,CAAC,MAAM,IAAI,SAAS,EAAE;AACxB,aAAM,IACJ,UACA,OAAO,KAAK,gBAAgB,EAC1B,KAAK,UACN,CAAC,CACH;;AAGH,aAAO,MAAM,IAAI,SAAS;aACpB;;;AAMZ,OAAI,oBAAoB,UAAU;AAChC,WAAO,gBAAgB,SAAS,KAAK;;AAGvC,UAAO;;AAGT,MAAI,SAAS,iCAAiC;;;;;;;AAO5C,UAAO;;AAGT,QAAM","names":[],"sources":["../src/findPackageJSON.ts"],"version":3,"sourcesContent":["import { readFileSync } from 'fs';\nimport { dirname, isAbsolute } from 'path';\nimport { createRequire } from 'module';\nimport findUp from 'find-up';\n\nconst cache = new Map<string, string | undefined>();\nconst nodeRequire = createRequire(import.meta.url);\n\nfunction findSelfPackageJSON(pkgName: string, filename: string) {\n const packageJSONPath = findUp.sync('package.json', {\n cwd: dirname(filename),\n });\n if (!packageJSONPath) return undefined;\n\n try {\n const packageJSON = JSON.parse(readFileSync(packageJSONPath, 'utf8'));\n return packageJSON?.name === pkgName ? packageJSONPath : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport function findPackageJSON(\n pkgName: string,\n filename: string | null | undefined\n) {\n // Jest's resolver does not work properly with `moduleNameMapper` when `paths` are defined\n const isJest = Boolean(globalThis.process?.env?.JEST_WORKER_ID);\n const skipPathsOptions = isJest && !pkgName.startsWith('.');\n\n try {\n const pkgPath =\n pkgName === '.' && filename && isAbsolute(filename)\n ? filename\n : nodeRequire.resolve(\n pkgName,\n filename ? { paths: [dirname(filename)] } : {}\n );\n if (!cache.has(pkgPath)) {\n cache.set(pkgPath, findUp.sync('package.json', { cwd: pkgPath }));\n }\n\n return cache.get(pkgPath);\n } catch (er: unknown) {\n const code =\n typeof er === 'object' && er !== null && 'code' in er\n ? er.code\n : undefined;\n\n if (code === 'MODULE_NOT_FOUND') {\n if (filename) {\n // Bun doesn't expose workspace packages via `require.resolve`, but tests\n // and tooling can still reference the current package by name.\n const selfPackageJSON = findSelfPackageJSON(pkgName, filename);\n if (selfPackageJSON) {\n return selfPackageJSON;\n }\n\n const bun = (\n globalThis as typeof globalThis & {\n Bun?: {\n resolveSync?: (specifier: string, from: string) => string;\n };\n }\n ).Bun;\n if (bun && typeof bun.resolveSync === 'function') {\n try {\n const resolved = bun.resolveSync(pkgName, filename);\n if (!cache.has(resolved)) {\n cache.set(\n resolved,\n findUp.sync('package.json', {\n cwd: resolved,\n })\n );\n }\n\n return cache.get(resolved);\n } catch {\n // fall through to the existing resolution heuristics\n }\n }\n }\n\n if (skipPathsOptions && filename) {\n return findPackageJSON(pkgName, null);\n }\n\n return undefined;\n }\n\n if (code === 'ERR_PACKAGE_PATH_NOT_EXPORTED') {\n // See https://github.com/Anber/wyw-in-js/issues/43\n // `require` can't resolve ESM-only packages. We can use the `resolve`\n // package here, but it does not solve all cases because `pkgName`\n // can be an alias and should be resolved by a bundler. However, we can't use\n // `resolve` from a bundler because it is async. The good news is that in that\n // specific case, we can just ignore those packages. For now.\n return undefined;\n }\n\n throw er;\n }\n}\n"],"file":"findPackageJSON.js"}
@@ -1,4 +1,4 @@
1
1
  export function hasEvalMeta(value) {
2
- return typeof value === 'object' && value !== null && '__wyw_meta' in value;
2
+ return typeof value === "object" && value !== null && "__wyw_meta" in value;
3
3
  }
4
- //# sourceMappingURL=hasEvalMeta.js.map
4
+ //# sourceMappingURL=hasEvalMeta.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasEvalMeta.js","names":["hasEvalMeta","value"],"sources":["../src/hasEvalMeta.ts"],"sourcesContent":["import type { WYWEvalMeta } from './types';\n\nexport function hasEvalMeta(value: unknown): value is WYWEvalMeta {\n return typeof value === 'object' && value !== null && '__wyw_meta' in value;\n}\n"],"mappings":"AAEA,OAAO,SAASA,WAAWA,CAACC,KAAc,EAAwB;EAChE,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,IAAI,YAAY,IAAIA,KAAK;AAC7E","ignoreList":[]}
1
+ {"mappings":"AAEA,OAAO,SAAS,YAAY,OAAsC;AAChE,QAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,gBAAgB","names":[],"sources":["../src/hasEvalMeta.ts"],"version":3,"sourcesContent":["import type { WYWEvalMeta } from './types';\n\nexport function hasEvalMeta(value: unknown): value is WYWEvalMeta {\n return typeof value === 'object' && value !== null && '__wyw_meta' in value;\n}\n"],"file":"hasEvalMeta.js"}
package/esm/index.js CHANGED
@@ -1,10 +1,10 @@
1
- export { asyncResolveFallback, syncResolve } from './asyncResolveFallback';
2
- export { asyncResolverFactory } from './asyncResolverFactory';
3
- export { hasEvalMeta } from './hasEvalMeta';
4
- export { findPackageJSON } from './findPackageJSON';
5
- export { isBoxedPrimitive } from './isBoxedPrimitive';
6
- export { enableDebug, logger } from './logger';
7
- export { isFeatureEnabled } from './options/isFeatureEnabled';
8
- export { slugify } from './slugify';
9
- export { ValueType } from './types';
10
- //# sourceMappingURL=index.js.map
1
+ export { asyncResolveFallback, syncResolve } from "./asyncResolveFallback.js";
2
+ export { asyncResolverFactory } from "./asyncResolverFactory.js";
3
+ export { hasEvalMeta } from "./hasEvalMeta.js";
4
+ export { findPackageJSON } from "./findPackageJSON.js";
5
+ export { isBoxedPrimitive } from "./isBoxedPrimitive.js";
6
+ export { enableDebug, logger } from "./logger.js";
7
+ export { isFeatureEnabled } from "./options/isFeatureEnabled.js";
8
+ export { slugify } from "./slugify.js";
9
+ export { ValueType } from "./types.js";
10
+ //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["asyncResolveFallback","syncResolve","asyncResolverFactory","hasEvalMeta","findPackageJSON","isBoxedPrimitive","enableDebug","logger","isFeatureEnabled","slugify","ValueType"],"sources":["../src/index.ts"],"sourcesContent":["export type { Debugger } from './debugger';\n\nexport { asyncResolveFallback, syncResolve } from './asyncResolveFallback';\nexport { asyncResolverFactory } from './asyncResolverFactory';\nexport { hasEvalMeta } from './hasEvalMeta';\nexport { findPackageJSON } from './findPackageJSON';\nexport { isBoxedPrimitive } from './isBoxedPrimitive';\nexport { enableDebug, logger } from './logger';\nexport { isFeatureEnabled } from './options/isFeatureEnabled';\nexport { slugify } from './slugify';\nexport { ValueType } from './types';\n\nexport type { IVariableContext } from './IVariableContext';\nexport type {\n ClassNameSlugVars,\n ClassNameFn,\n CodeRemoverOptions,\n ImportLoader,\n ImportLoaderContext,\n ImportLoaders,\n ImportOverride,\n ImportOverrides,\n TagResolverMeta,\n StrictOptions,\n EvalRule,\n Evaluator,\n FeatureFlag,\n EvaluatorConfig,\n FeatureFlags,\n VariableNameFn,\n} from './options/types';\nexport type {\n Artifact,\n BuildCodeFrameErrorFn,\n ConstValue,\n ExpressionValue,\n FunctionValue,\n ICSSRule,\n LazyValue,\n Location,\n Replacement,\n Replacements,\n Rules,\n WYWEvalMeta,\n} from './types';\n"],"mappings":"AAEA,SAASA,oBAAoB,EAAEC,WAAW,QAAQ,wBAAwB;AAC1E,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,WAAW,EAAEC,MAAM,QAAQ,UAAU;AAC9C,SAASC,gBAAgB,QAAQ,4BAA4B;AAC7D,SAASC,OAAO,QAAQ,WAAW;AACnC,SAASC,SAAS,QAAQ,SAAS","ignoreList":[]}
1
+ {"mappings":"AAEA,SAAS,sBAAsB,mBAAmB;AAClD,SAAS,4BAA4B;AACrC,SAAS,mBAAmB;AAC5B,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AACjC,SAAS,aAAa,cAAc;AACpC,SAAS,wBAAwB;AACjC,SAAS,eAAe;AACxB,SAAS,iBAAiB","names":[],"sources":["../src/index.ts"],"version":3,"sourcesContent":["export type { Debugger } from './debugger';\n\nexport { asyncResolveFallback, syncResolve } from './asyncResolveFallback';\nexport { asyncResolverFactory } from './asyncResolverFactory';\nexport { hasEvalMeta } from './hasEvalMeta';\nexport { findPackageJSON } from './findPackageJSON';\nexport { isBoxedPrimitive } from './isBoxedPrimitive';\nexport { enableDebug, logger } from './logger';\nexport { isFeatureEnabled } from './options/isFeatureEnabled';\nexport { slugify } from './slugify';\nexport { ValueType } from './types';\n\nexport type { IVariableContext } from './IVariableContext';\nexport type {\n ClassNameSlugVars,\n ClassNameFn,\n CodeRemoverOptions,\n EvalOptionsV2,\n EvalRequireMode,\n EvalResolverKind,\n EvalResolverMode,\n EvalWarning,\n EvalWarningCode,\n ImportLoader,\n ImportLoaderContext,\n ImportLoaders,\n ImportOverride,\n ImportOverrides,\n OxcOptions,\n TagResolverMeta,\n StrictOptions,\n EvalRule,\n EvaluatorOptions,\n TransformEngineOptions,\n Evaluator,\n FeatureFlag,\n EvaluatorConfig,\n FeatureFlags,\n VariableNameFn,\n} from './options/types';\nexport type {\n Artifact,\n AstExpression,\n AstNode,\n BigIntLiteral,\n BooleanLiteral,\n BuildCodeFrameErrorFn,\n ConstValue,\n DecimalLiteral,\n ExpressionValue,\n FunctionValue,\n Identifier,\n ICSSRule,\n LazyValue,\n Location,\n NullLiteral,\n NumericLiteral,\n Replacement,\n Replacements,\n Rules,\n SourceLocation,\n StringLiteral,\n WYWEvalMeta,\n} from './types';\n"],"file":"index.js"}
@@ -1,9 +1,8 @@
1
1
  // There is a problem with using boxed numbers and strings in TS,
2
2
  // so we cannot just use `instanceof` here
3
-
4
- const constructors = ['Number', 'String'];
3
+ const constructors = ["Number", "String"];
5
4
  export function isBoxedPrimitive(o) {
6
- if (typeof o !== 'object' || o === null) return false;
7
- return constructors.includes(o.constructor.name) && typeof o?.valueOf() !== 'object';
5
+ if (typeof o !== "object" || o === null) return false;
6
+ return constructors.includes(o.constructor.name) && typeof o?.valueOf() !== "object";
8
7
  }
9
- //# sourceMappingURL=isBoxedPrimitive.js.map
8
+ //# sourceMappingURL=isBoxedPrimitive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isBoxedPrimitive.js","names":["constructors","isBoxedPrimitive","o","includes","constructor","name","valueOf"],"sources":["../src/isBoxedPrimitive.ts"],"sourcesContent":["// There is a problem with using boxed numbers and strings in TS,\n// so we cannot just use `instanceof` here\n\nconst constructors = ['Number', 'String'];\nexport function isBoxedPrimitive(o: unknown): o is number | string {\n if (typeof o !== 'object' || o === null) return false;\n return (\n constructors.includes(o.constructor.name) &&\n typeof o?.valueOf() !== 'object'\n );\n}\n"],"mappings":"AAAA;AACA;;AAEA,MAAMA,YAAY,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACzC,OAAO,SAASC,gBAAgBA,CAACC,CAAU,EAAwB;EACjE,IAAI,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,KAAK,IAAI,EAAE,OAAO,KAAK;EACrD,OACEF,YAAY,CAACG,QAAQ,CAACD,CAAC,CAACE,WAAW,CAACC,IAAI,CAAC,IACzC,OAAOH,CAAC,EAAEI,OAAO,CAAC,CAAC,KAAK,QAAQ;AAEpC","ignoreList":[]}
1
+ {"mappings":";;AAGA,MAAM,eAAe,CAAC,UAAU,SAAS;AACzC,OAAO,SAAS,iBAAiB,GAAkC;AACjE,KAAI,OAAO,MAAM,YAAY,MAAM,KAAM,QAAO;AAChD,QACE,aAAa,SAAS,EAAE,YAAY,KAAK,IACzC,OAAO,GAAG,SAAS,KAAK","names":[],"sources":["../src/isBoxedPrimitive.ts"],"version":3,"sourcesContent":["// There is a problem with using boxed numbers and strings in TS,\n// so we cannot just use `instanceof` here\n\nconst constructors = ['Number', 'String'];\nexport function isBoxedPrimitive(o: unknown): o is number | string {\n if (typeof o !== 'object' || o === null) return false;\n return (\n constructors.includes(o.constructor.name) &&\n typeof o?.valueOf() !== 'object'\n );\n}\n"],"file":"isBoxedPrimitive.js"}
package/esm/logger.js CHANGED
@@ -1,26 +1,26 @@
1
- import genericDebug from 'debug';
2
- const BASE_NAMESPACE = 'wyw-in-js';
1
+ import genericDebug from "debug";
2
+ const BASE_NAMESPACE = "wyw-in-js";
3
3
  export const logger = genericDebug(BASE_NAMESPACE);
4
4
  const loggers = new Map();
5
5
  function gerOrCreate(namespace) {
6
- if (!namespace) return logger;
7
- const lastIndexOf = namespace.lastIndexOf(':');
8
- if (!loggers.has(namespace)) {
9
- loggers.set(namespace, gerOrCreate(namespace.substring(0, lastIndexOf)).extend(namespace.substring(lastIndexOf + 1)));
10
- }
11
- return loggers.get(namespace);
6
+ if (!namespace) return logger;
7
+ const lastIndexOf = namespace.lastIndexOf(":");
8
+ if (!loggers.has(namespace)) {
9
+ loggers.set(namespace, gerOrCreate(namespace.substring(0, lastIndexOf)).extend(namespace.substring(lastIndexOf + 1)));
10
+ }
11
+ return loggers.get(namespace);
12
12
  }
13
- genericDebug.formatters.r = ref => {
14
- const namespace = typeof ref === 'string' ? ref : ref.namespace;
15
- const text = typeof ref === 'string' ? namespace : ref.text ?? namespace;
16
- const color = parseInt(gerOrCreate(namespace).color, 10);
17
- const colorCode = `\u001B[3${color < 8 ? color : `8;5;${color}`}`;
18
- return `${colorCode};1m${text}\u001B[0m`;
13
+ genericDebug.formatters.r = (ref) => {
14
+ const namespace = typeof ref === "string" ? ref : ref.namespace;
15
+ const text = typeof ref === "string" ? namespace : ref.text ?? namespace;
16
+ const color = parseInt(gerOrCreate(namespace).color, 10);
17
+ const colorCode = `\u001B[3${color < 8 ? color : `8;5;${color}`}`;
18
+ return `${colorCode};1m${text}\u001B[0m`;
19
19
  };
20
20
  genericDebug.formatters.f = function f(fn) {
21
- return JSON.stringify(fn());
21
+ return JSON.stringify(fn());
22
22
  };
23
23
  export function enableDebug(namespace = `${BASE_NAMESPACE}:*`) {
24
- genericDebug.enable(namespace);
24
+ genericDebug.enable(namespace);
25
25
  }
26
- //# sourceMappingURL=logger.js.map
26
+ //# sourceMappingURL=logger.js.map
package/esm/logger.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","names":["genericDebug","BASE_NAMESPACE","logger","loggers","Map","gerOrCreate","namespace","lastIndexOf","has","set","substring","extend","get","formatters","r","ref","text","color","parseInt","colorCode","f","fn","JSON","stringify","enableDebug","enable"],"sources":["../src/logger.ts"],"sourcesContent":["import genericDebug from 'debug';\n\nimport type { Debugger } from './debugger';\n\nconst BASE_NAMESPACE = 'wyw-in-js';\n\nexport const logger: Debugger = genericDebug(BASE_NAMESPACE);\n\nconst loggers = new Map<string, Debugger>();\n\nfunction gerOrCreate(namespace: string | null | undefined): Debugger {\n if (!namespace) return logger;\n const lastIndexOf = namespace.lastIndexOf(':');\n if (!loggers.has(namespace)) {\n loggers.set(\n namespace,\n gerOrCreate(namespace.substring(0, lastIndexOf)).extend(\n namespace.substring(lastIndexOf + 1)\n )\n );\n }\n\n return loggers.get(namespace)!;\n}\n\ngenericDebug.formatters.r = (\n ref: string | { namespace: string; text?: string }\n) => {\n const namespace = typeof ref === 'string' ? ref : ref.namespace;\n const text = typeof ref === 'string' ? namespace : ref.text ?? namespace;\n const color = parseInt(gerOrCreate(namespace).color, 10);\n const colorCode = `\\u001B[3${color < 8 ? color : `8;5;${color}`}`;\n return `${colorCode};1m${text}\\u001B[0m`;\n};\n\ngenericDebug.formatters.f = function f(fn: () => unknown) {\n return JSON.stringify(fn());\n};\n\nexport function enableDebug(namespace = `${BASE_NAMESPACE}:*`) {\n genericDebug.enable(namespace);\n}\n"],"mappings":"AAAA,OAAOA,YAAY,MAAM,OAAO;AAIhC,MAAMC,cAAc,GAAG,WAAW;AAElC,OAAO,MAAMC,MAAgB,GAAGF,YAAY,CAACC,cAAc,CAAC;AAE5D,MAAME,OAAO,GAAG,IAAIC,GAAG,CAAmB,CAAC;AAE3C,SAASC,WAAWA,CAACC,SAAoC,EAAY;EACnE,IAAI,CAACA,SAAS,EAAE,OAAOJ,MAAM;EAC7B,MAAMK,WAAW,GAAGD,SAAS,CAACC,WAAW,CAAC,GAAG,CAAC;EAC9C,IAAI,CAACJ,OAAO,CAACK,GAAG,CAACF,SAAS,CAAC,EAAE;IAC3BH,OAAO,CAACM,GAAG,CACTH,SAAS,EACTD,WAAW,CAACC,SAAS,CAACI,SAAS,CAAC,CAAC,EAAEH,WAAW,CAAC,CAAC,CAACI,MAAM,CACrDL,SAAS,CAACI,SAAS,CAACH,WAAW,GAAG,CAAC,CACrC,CACF,CAAC;EACH;EAEA,OAAOJ,OAAO,CAACS,GAAG,CAACN,SAAS,CAAC;AAC/B;AAEAN,YAAY,CAACa,UAAU,CAACC,CAAC,GACvBC,GAAkD,IAC/C;EACH,MAAMT,SAAS,GAAG,OAAOS,GAAG,KAAK,QAAQ,GAAGA,GAAG,GAAGA,GAAG,CAACT,SAAS;EAC/D,MAAMU,IAAI,GAAG,OAAOD,GAAG,KAAK,QAAQ,GAAGT,SAAS,GAAGS,GAAG,CAACC,IAAI,IAAIV,SAAS;EACxE,MAAMW,KAAK,GAAGC,QAAQ,CAACb,WAAW,CAACC,SAAS,CAAC,CAACW,KAAK,EAAE,EAAE,CAAC;EACxD,MAAME,SAAS,GAAG,WAAWF,KAAK,GAAG,CAAC,GAAGA,KAAK,GAAG,OAAOA,KAAK,EAAE,EAAE;EACjE,OAAO,GAAGE,SAAS,MAAMH,IAAI,WAAW;AAC1C,CAAC;AAEDhB,YAAY,CAACa,UAAU,CAACO,CAAC,GAAG,SAASA,CAACA,CAACC,EAAiB,EAAE;EACxD,OAAOC,IAAI,CAACC,SAAS,CAACF,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,OAAO,SAASG,WAAWA,CAAClB,SAAS,GAAG,GAAGL,cAAc,IAAI,EAAE;EAC7DD,YAAY,CAACyB,MAAM,CAACnB,SAAS,CAAC;AAChC","ignoreList":[]}
1
+ {"mappings":"AAAA,OAAO,kBAAkB;AAIzB,MAAM,iBAAiB;AAEvB,OAAO,MAAM,SAAmB,aAAa,eAAe;AAE5D,MAAM,UAAU,IAAI,KAAuB;AAE3C,SAAS,YAAY,WAAgD;AACnE,KAAI,CAAC,UAAW,QAAO;CACvB,MAAM,cAAc,UAAU,YAAY,IAAI;AAC9C,KAAI,CAAC,QAAQ,IAAI,UAAU,EAAE;AAC3B,UAAQ,IACN,WACA,YAAY,UAAU,UAAU,GAAG,YAAY,CAAC,CAAC,OAC/C,UAAU,UAAU,cAAc,EAAE,CACrC,CACF;;AAGH,QAAO,QAAQ,IAAI,UAAU;;AAG/B,aAAa,WAAW,KACtB,QACG;CACH,MAAM,YAAY,OAAO,QAAQ,WAAW,MAAM,IAAI;CACtD,MAAM,OAAO,OAAO,QAAQ,WAAW,YAAY,IAAI,QAAQ;CAC/D,MAAM,QAAQ,SAAS,YAAY,UAAU,CAAC,OAAO,GAAG;CACxD,MAAM,YAAY,WAAW,QAAQ,IAAI,QAAQ,OAAO;AACxD,QAAO,GAAG,UAAU,KAAK,KAAK;;AAGhC,aAAa,WAAW,IAAI,SAAS,EAAE,IAAmB;AACxD,QAAO,KAAK,UAAU,IAAI,CAAC;;AAG7B,OAAO,SAAS,YAAY,YAAY,GAAG,eAAe,KAAK;AAC7D,cAAa,OAAO,UAAU","names":[],"sources":["../src/logger.ts"],"version":3,"sourcesContent":["import genericDebug from 'debug';\n\nimport type { Debugger } from './debugger';\n\nconst BASE_NAMESPACE = 'wyw-in-js';\n\nexport const logger: Debugger = genericDebug(BASE_NAMESPACE);\n\nconst loggers = new Map<string, Debugger>();\n\nfunction gerOrCreate(namespace: string | null | undefined): Debugger {\n if (!namespace) return logger;\n const lastIndexOf = namespace.lastIndexOf(':');\n if (!loggers.has(namespace)) {\n loggers.set(\n namespace,\n gerOrCreate(namespace.substring(0, lastIndexOf)).extend(\n namespace.substring(lastIndexOf + 1)\n )\n );\n }\n\n return loggers.get(namespace)!;\n}\n\ngenericDebug.formatters.r = (\n ref: string | { namespace: string; text?: string }\n) => {\n const namespace = typeof ref === 'string' ? ref : ref.namespace;\n const text = typeof ref === 'string' ? namespace : ref.text ?? namespace;\n const color = parseInt(gerOrCreate(namespace).color, 10);\n const colorCode = `\\u001B[3${color < 8 ? color : `8;5;${color}`}`;\n return `${colorCode};1m${text}\\u001B[0m`;\n};\n\ngenericDebug.formatters.f = function f(fn: () => unknown) {\n return JSON.stringify(fn());\n};\n\nexport function enableDebug(namespace = `${BASE_NAMESPACE}:*`) {\n genericDebug.enable(namespace);\n}\n"],"file":"logger.js"}
@@ -1,30 +1,25 @@
1
- import { Minimatch } from 'minimatch';
2
-
3
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
-
1
+ import { Minimatch } from "minimatch";
5
2
  const cachedMatchers = new Map();
6
3
  export const isFeatureEnabled = (features, featureName, filename) => {
7
- const value = features?.[featureName] ?? false;
8
- if (typeof value === 'boolean') {
9
- return value;
10
- }
11
-
12
- // Fast check for glob patterns
13
- if (value === '*' || value === '**/*') {
14
- return true;
15
- }
16
- const array = Array.isArray(value) ? value : [value];
17
-
18
- /**
19
- * Check rule by rule like .gitignore
20
- */
21
- return array.map(pattern => {
22
- let matcher = cachedMatchers.get(pattern);
23
- if (!matcher) {
24
- matcher = [pattern.startsWith('!'), new Minimatch(pattern)];
25
- cachedMatchers.set(pattern, matcher);
26
- }
27
- return [matcher[0], matcher[1].match(filename)];
28
- }).reduce((acc, [negated, match]) => negated ? acc && match : acc || match, false);
4
+ const value = features?.[featureName] ?? false;
5
+ if (typeof value === "boolean") {
6
+ return value;
7
+ }
8
+ // Fast check for glob patterns
9
+ if (value === "*" || value === "**/*") {
10
+ return true;
11
+ }
12
+ const array = Array.isArray(value) ? value : [value];
13
+ /**
14
+ * Check rule by rule like .gitignore
15
+ */
16
+ return array.map((pattern) => {
17
+ let matcher = cachedMatchers.get(pattern);
18
+ if (!matcher) {
19
+ matcher = [pattern.startsWith("!"), new Minimatch(pattern)];
20
+ cachedMatchers.set(pattern, matcher);
21
+ }
22
+ return [matcher[0], matcher[1].match(filename)];
23
+ }).reduce((acc, [negated, match]) => negated ? acc && match : acc || match, false);
29
24
  };
30
- //# sourceMappingURL=isFeatureEnabled.js.map
25
+ //# sourceMappingURL=isFeatureEnabled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isFeatureEnabled.js","names":["Minimatch","cachedMatchers","Map","isFeatureEnabled","features","featureName","filename","value","array","Array","isArray","map","pattern","matcher","get","startsWith","set","match","reduce","acc","negated"],"sources":["../../src/options/isFeatureEnabled.ts"],"sourcesContent":["import { Minimatch } from 'minimatch';\n\nimport type { FeatureFlag } from './types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype NoInfer<T> = [T][T extends any ? 0 : never];\n\nconst cachedMatchers = new Map<\n string,\n [nagated: boolean, matcher: Minimatch]\n>();\n\nexport const isFeatureEnabled = <T extends string>(\n features:\n | {\n [K in T]?: FeatureFlag;\n }\n | undefined,\n featureName: NoInfer<T>,\n filename: string\n) => {\n const value = features?.[featureName] ?? false;\n if (typeof value === 'boolean') {\n return value;\n }\n\n // Fast check for glob patterns\n if (value === '*' || value === '**/*') {\n return true;\n }\n\n const array: string[] = Array.isArray(value) ? value : [value];\n\n /**\n * Check rule by rule like .gitignore\n */\n return array\n .map((pattern) => {\n let matcher = cachedMatchers.get(pattern);\n if (!matcher) {\n matcher = [pattern.startsWith('!'), new Minimatch(pattern)];\n cachedMatchers.set(pattern, matcher);\n }\n\n return [matcher[0], matcher[1].match(filename)];\n })\n .reduce(\n (acc, [negated, match]) => (negated ? acc && match : acc || match),\n false\n );\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,WAAW;;AAIrC;;AAGA,MAAMC,cAAc,GAAG,IAAIC,GAAG,CAG5B,CAAC;AAEH,OAAO,MAAMC,gBAAgB,GAAGA,CAC9BC,QAIa,EACbC,WAAuB,EACvBC,QAAgB,KACb;EACH,MAAMC,KAAK,GAAGH,QAAQ,GAAGC,WAAW,CAAC,IAAI,KAAK;EAC9C,IAAI,OAAOE,KAAK,KAAK,SAAS,EAAE;IAC9B,OAAOA,KAAK;EACd;;EAEA;EACA,IAAIA,KAAK,KAAK,GAAG,IAAIA,KAAK,KAAK,MAAM,EAAE;IACrC,OAAO,IAAI;EACb;EAEA,MAAMC,KAAe,GAAGC,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC,GAAGA,KAAK,GAAG,CAACA,KAAK,CAAC;;EAE9D;AACF;AACA;EACE,OAAOC,KAAK,CACTG,GAAG,CAAEC,OAAO,IAAK;IAChB,IAAIC,OAAO,GAAGZ,cAAc,CAACa,GAAG,CAACF,OAAO,CAAC;IACzC,IAAI,CAACC,OAAO,EAAE;MACZA,OAAO,GAAG,CAACD,OAAO,CAACG,UAAU,CAAC,GAAG,CAAC,EAAE,IAAIf,SAAS,CAACY,OAAO,CAAC,CAAC;MAC3DX,cAAc,CAACe,GAAG,CAACJ,OAAO,EAAEC,OAAO,CAAC;IACtC;IAEA,OAAO,CAACA,OAAO,CAAC,CAAC,CAAC,EAAEA,OAAO,CAAC,CAAC,CAAC,CAACI,KAAK,CAACX,QAAQ,CAAC,CAAC;EACjD,CAAC,CAAC,CACDY,MAAM,CACL,CAACC,GAAG,EAAE,CAACC,OAAO,EAAEH,KAAK,CAAC,KAAMG,OAAO,GAAGD,GAAG,IAAIF,KAAK,GAAGE,GAAG,IAAIF,KAAM,EAClE,KACF,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"mappings":"AAAA,SAAS,iBAAiB;AAO1B,MAAM,iBAAiB,IAAI,KAGxB;AAEH,OAAO,MAAM,oBACX,UAKA,aACA,aACG;CACH,MAAM,QAAQ,WAAW,gBAAgB;AACzC,KAAI,OAAO,UAAU,WAAW;AAC9B,SAAO;;;AAIT,KAAI,UAAU,OAAO,UAAU,QAAQ;AACrC,SAAO;;CAGT,MAAM,QAAkB,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,MAAM;;;;AAK9D,QAAO,MACJ,KAAK,YAAY;EAChB,IAAI,UAAU,eAAe,IAAI,QAAQ;AACzC,MAAI,CAAC,SAAS;AACZ,aAAU,CAAC,QAAQ,WAAW,IAAI,EAAE,IAAI,UAAU,QAAQ,CAAC;AAC3D,kBAAe,IAAI,SAAS,QAAQ;;AAGtC,SAAO,CAAC,QAAQ,IAAI,QAAQ,GAAG,MAAM,SAAS,CAAC;GAC/C,CACD,QACE,KAAK,CAAC,SAAS,WAAY,UAAU,OAAO,QAAQ,OAAO,OAC5D,MACD","names":[],"sources":["../../src/options/isFeatureEnabled.ts"],"version":3,"sourcesContent":["import { Minimatch } from 'minimatch';\n\nimport type { FeatureFlag } from './types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype NoInfer<T> = [T][T extends any ? 0 : never];\n\nconst cachedMatchers = new Map<\n string,\n [nagated: boolean, matcher: Minimatch]\n>();\n\nexport const isFeatureEnabled = <T extends string>(\n features:\n | {\n [K in T]?: FeatureFlag;\n }\n | undefined,\n featureName: NoInfer<T>,\n filename: string\n) => {\n const value = features?.[featureName] ?? false;\n if (typeof value === 'boolean') {\n return value;\n }\n\n // Fast check for glob patterns\n if (value === '*' || value === '**/*') {\n return true;\n }\n\n const array: string[] = Array.isArray(value) ? value : [value];\n\n /**\n * Check rule by rule like .gitignore\n */\n return array\n .map((pattern) => {\n let matcher = cachedMatchers.get(pattern);\n if (!matcher) {\n matcher = [pattern.startsWith('!'), new Minimatch(pattern)];\n cachedMatchers.set(pattern, matcher);\n }\n\n return [matcher[0], matcher[1].match(filename)];\n })\n .reduce(\n (acc, [negated, match]) => (negated ? acc && match : acc || match),\n false\n );\n};\n"],"file":"isFeatureEnabled.js"}
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=types.js.map
2
+ //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../src/options/types.ts"],"sourcesContent":["import type { TransformOptions } from '@babel/core';\nimport type { File } from '@babel/types';\n\nimport type { IVariableContext } from '../IVariableContext';\nimport type { Core } from '../babel';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype VmContext = Record<string, any>; // It's Context from `vm`\n\nexport type ClassNameSlugVars = {\n dir: string;\n ext: string;\n file: string;\n hash: string;\n index: number;\n name: string;\n title: string;\n};\n\nexport type ClassNameFn = (\n hash: string,\n title: string,\n args: ClassNameSlugVars\n) => string;\n\nexport type VariableNameFn = (context: IVariableContext) => string;\n\nexport type EvaluatorConfig = {\n features: StrictOptions['features'];\n highPriorityPlugins: string[];\n importOverrides?: StrictOptions['importOverrides'];\n onlyExports: string[];\n root?: string;\n};\n\nexport type Evaluator = (\n evalConfig: TransformOptions,\n ast: File,\n code: string,\n config: EvaluatorConfig,\n babel: Core\n) => [\n ast: File,\n code: string,\n imports: Map<string, string[]> | null,\n exports?: string[] | null,\n];\n\nexport type EvalRule = {\n action: Evaluator | 'ignore' | string;\n babelOptions?: TransformOptions;\n test?: RegExp | ((path: string, code: string) => boolean);\n};\n\nexport type FeatureFlag = boolean | string | string[];\n\ntype ImportOverrideMock = {\n /**\n * Replaces resolved import with provided specifier (resolved on prepare/eval stages).\n * Raw `source` stays intact; only resolution target changes.\n */\n mock: string;\n noShake?: never;\n unknown?: never;\n};\n\ntype ImportOverrideNoShake = {\n mock?: never;\n /**\n * Disables tree-shaking for this import by forcing `only=['*']`.\n */\n noShake: true;\n unknown?: never;\n};\n\ntype ImportOverrideUnknown = {\n mock?: never;\n noShake?: never;\n /**\n * Controls behavior when an import reaches eval-time Node resolver fallback.\n * - 'warn' (default): warn once per canonical import key.\n * - 'error': throw.\n * - 'allow': no warning, keep load-as-is.\n */\n unknown: 'allow' | 'error' | 'warn';\n};\n\nexport type ImportOverride =\n | ImportOverrideMock\n | ImportOverrideNoShake\n | ImportOverrideUnknown;\n\nexport type ImportOverrides = Record<string, ImportOverride>;\n\nexport type ImportLoaderContext = {\n emitWarning: (message: string) => void;\n filename: string;\n hash: string;\n importer: string;\n query: string;\n readFile: () => string;\n request: string;\n resolved: string;\n toUrl: () => string;\n};\n\nexport type ImportLoader =\n | 'raw'\n | 'url'\n | ((context: ImportLoaderContext) => unknown);\n\nexport type ImportLoaders = Record<string, ImportLoader | false>;\n\nexport type TagResolverMeta = {\n resolvedSource?: string;\n sourceFile: string | null | undefined;\n};\n\ntype AllFeatureFlags = {\n dangerousCodeRemover: FeatureFlag;\n globalCache: FeatureFlag;\n happyDOM: FeatureFlag;\n softErrors: FeatureFlag;\n useBabelConfigs: FeatureFlag;\n useWeakRefInEval: FeatureFlag;\n};\n\nexport type FeatureFlags<\n TOnly extends keyof AllFeatureFlags = keyof AllFeatureFlags,\n> = Pick<AllFeatureFlags, TOnly>;\n\nexport type CodeRemoverOptions = {\n componentTypes?: Record<string, string[]>;\n hocs?: Record<string, string[]>;\n};\n\nexport type StrictOptions = {\n babelOptions: TransformOptions;\n classNameSlug?: string | ClassNameFn;\n codeRemover?: CodeRemoverOptions;\n conditionNames?: string[];\n displayName: boolean;\n evaluate: boolean;\n extensions: string[];\n features: FeatureFlags;\n highPriorityPlugins: string[];\n ignore?: RegExp;\n importLoaders?: ImportLoaders;\n importOverrides?: ImportOverrides;\n overrideContext?: (\n context: Partial<VmContext>,\n filename: string\n ) => Partial<VmContext>;\n rules: EvalRule[];\n tagResolver?: (\n source: string,\n tag: string,\n meta: TagResolverMeta\n ) => string | null;\n variableNameConfig?: 'var' | 'dashes' | 'raw';\n variableNameSlug?: string | VariableNameFn;\n};\n"],"mappings":"","ignoreList":[]}
1
+ {"mappings":"","names":[],"sources":["../../src/options/types.ts"],"version":3,"sourcesContent":["import type { IVariableContext } from '../IVariableContext';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype VmContext = Record<string, any>; // It's Context from `vm`\n\nexport type ClassNameSlugVars = {\n dir: string;\n ext: string;\n file: string;\n hash: string;\n index: number;\n name: string;\n title: string;\n};\n\nexport type ClassNameFn = (\n hash: string,\n title: string,\n args: ClassNameSlugVars\n) => string;\n\nexport type VariableNameFn = (context: IVariableContext) => string;\n\nexport type EvaluatorConfig = {\n features: StrictOptions['features'];\n highPriorityPlugins: string[];\n importOverrides?: StrictOptions['importOverrides'];\n onlyExports: string[];\n root?: string;\n};\n\nexport type EvaluatorOptions = {\n ast?: boolean | null;\n configFile?: boolean | null | string;\n env?: Record<string, EvaluatorOptions | null | undefined> | null;\n filename?: string | null;\n inputSourceMap?: object | null;\n overrides?: EvaluatorOptions[] | null;\n plugins?: unknown[] | null;\n presets?: unknown[] | null;\n root?: string | null;\n sourceFileName?: string | null;\n sourceMaps?: boolean | 'both' | 'inline' | null;\n [key: string]: unknown;\n};\n\nexport type TransformEngineOptions = EvaluatorOptions;\n\nexport type EvaluatorAst = unknown;\n\nexport type EvaluatorRuntime = unknown;\n\nexport type Evaluator = (\n evalConfig: EvaluatorOptions,\n ast: EvaluatorAst,\n code: string,\n config: EvaluatorConfig,\n runtime: EvaluatorRuntime\n) => [\n ast: EvaluatorAst,\n code: string,\n imports: Map<string, string[]> | null,\n exports?: string[] | null,\n];\n\nexport type EvalRule = {\n action: Evaluator | 'ignore' | string;\n /**\n * Per-rule Oxc options for the Oxc-first transform path.\n */\n oxcOptions?: OxcOptions;\n test?: RegExp | ((path: string, code: string) => boolean);\n};\n\nexport type FeatureFlag = boolean | string | string[];\n\ntype ImportOverrideMock = {\n /**\n * Replaces resolved import with provided specifier (resolved on prepare/eval stages).\n * Raw `source` stays intact; only resolution target changes.\n */\n mock: string;\n noShake?: never;\n unknown?: never;\n};\n\ntype ImportOverrideNoShake = {\n mock?: never;\n /**\n * Disables tree-shaking for this import by forcing `only=['*']`.\n */\n noShake: true;\n unknown?: never;\n};\n\ntype ImportOverrideUnknown = {\n mock?: never;\n noShake?: never;\n /**\n * Controls behavior when an import reaches eval-time Node resolver fallback.\n * - 'warn' (default): warn once per canonical import key.\n * - 'error': throw.\n * - 'allow': no warning, keep load-as-is.\n */\n unknown: 'allow' | 'error' | 'warn';\n};\n\nexport type ImportOverride =\n | ImportOverrideMock\n | ImportOverrideNoShake\n | ImportOverrideUnknown;\n\nexport type ImportOverrides = Record<string, ImportOverride>;\n\nexport type ImportLoaderContext = {\n emitWarning: (message: string) => void;\n filename: string;\n hash: string;\n importer: string;\n query: string;\n readFile: () => string;\n request: string;\n resolved: string;\n toUrl: () => string;\n};\n\nexport type ImportLoader =\n | 'raw'\n | 'url'\n | ((context: ImportLoaderContext) => unknown);\n\nexport type ImportLoaders = Record<string, ImportLoader | false>;\n\nexport type EvalResolverMode = 'bundler' | 'hybrid' | 'node' | 'custom';\n\nexport type EvalRequireMode = 'warn-and-run' | 'error' | 'off';\n\nexport type EvalResolverKind = 'import' | 'dynamic-import' | 'require';\n\nexport type EvalWarningCode =\n | 'resolve-fallback'\n | 'resolve-error'\n | 'require-fallback'\n | 'require-error'\n | 'dynamic-import'\n | 'eval-error';\n\nexport type EvalWarning = {\n code: EvalWarningCode;\n message: string;\n importer?: string;\n specifier?: string;\n resolved?: string | null;\n callstack?: string[];\n hint?: string;\n};\n\nexport type EvalOptionsV2 = {\n /**\n * Default is `bundler`. `hybrid` is an opt-in mode whose intended\n * precedence is customResolver -> safe Oxc subset -> bundler -> node.\n */\n resolver?: EvalResolverMode;\n customResolver?: (\n specifier: string,\n importer: string,\n kind: EvalResolverKind\n ) => Promise<{ id: string; external?: boolean } | null>;\n customLoader?: (\n id: string\n ) => Promise<{ code: string; map?: unknown; loader?: string } | null>;\n require?: EvalRequireMode; // default: 'warn-and-run'\n mode?: 'strict' | 'loose'; // default: 'strict'\n globals?: Record<string, unknown>;\n onWarn?: (warning: EvalWarning) => void;\n};\n\nexport type TagResolverMeta = {\n resolvedSource?: string;\n sourceFile: string | null | undefined;\n};\n\ntype AllFeatureFlags = {\n dangerousCodeRemover: FeatureFlag;\n globalCache: FeatureFlag;\n happyDOM: FeatureFlag;\n softErrors: FeatureFlag;\n staticImportValues: FeatureFlag;\n useWeakRefInEval: FeatureFlag;\n};\n\nexport type FeatureFlags<\n TOnly extends keyof AllFeatureFlags = keyof AllFeatureFlags,\n> = Pick<AllFeatureFlags, TOnly>;\n\nexport type CodeRemoverOptions = {\n componentTypes?: Record<string, string[]>;\n hocs?: Record<string, string[]>;\n};\n\nexport type OxcOptions = {\n /**\n * Parser-level Oxc options. The first slice only preserves this contract.\n */\n parser?: Record<string, unknown>;\n /**\n * Resolver-level Oxc options. Bundler-aware resolution remains authoritative\n * unless `eval.resolver` explicitly opts into `hybrid`.\n */\n resolver?: Record<string, unknown>;\n /**\n * Transform-level Oxc options.\n */\n transform?: Record<string, unknown>;\n};\n\nexport type StrictOptions = {\n classNameSlug?: string | ClassNameFn;\n codeRemover?: CodeRemoverOptions;\n conditionNames?: string[];\n displayName: boolean;\n evaluate: boolean;\n eval?: EvalOptionsV2;\n extensions: string[];\n features: FeatureFlags;\n highPriorityPlugins: string[];\n ignore?: RegExp;\n importLoaders?: ImportLoaders;\n importOverrides?: ImportOverrides;\n outputMetadata: boolean;\n overrideContext?: (\n context: Partial<VmContext>,\n filename: string\n ) => Partial<VmContext>;\n /**\n * Oxc-first transform options.\n */\n oxcOptions: OxcOptions;\n rules: EvalRule[];\n tagResolver?: (\n source: string,\n tag: string,\n meta: TagResolverMeta\n ) => string | null;\n evalConsole?: 'warning' | 'pipe';\n variableNameConfig?: 'var' | 'dashes' | 'raw';\n variableNameSlug?: string | VariableNameFn;\n};\n"],"file":"types.js"}