@wyw-in-js/shared 0.3.0 → 0.4.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.
@@ -17,12 +17,22 @@ export function findPackageJSON(pkgName, filename) {
17
17
  }
18
18
  return cache.get(pkgPath);
19
19
  } catch (er) {
20
- if (typeof er === 'object' && er !== null && er.code === 'MODULE_NOT_FOUND') {
20
+ const code = typeof er === 'object' && er !== null && 'code' in er ? er.code : undefined;
21
+ if (code === 'MODULE_NOT_FOUND') {
21
22
  if (skipPathsOptions && filename) {
22
23
  return findPackageJSON(pkgName, null);
23
24
  }
24
25
  return undefined;
25
26
  }
27
+ if (code === 'ERR_PACKAGE_PATH_NOT_EXPORTED') {
28
+ // See https://github.com/Anber/wyw-in-js/issues/43
29
+ // `require` can't resolve ESM-only packages. We can use the `resolve`
30
+ // package here, but it does not solve all cases because `pkgName`
31
+ // can be an alias and should be resolved by a bundler. However, we can't use
32
+ // `resolve` from a bundler because it is async. The good news is that in that
33
+ // specific case, we can just ignore those packages. For now.
34
+ return undefined;
35
+ }
26
36
  throw er;
27
37
  }
28
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"findPackageJSON.js","names":["dirname","isAbsolute","process","findUp","cache","Map","findPackageJSON","pkgName","filename","isJest","Boolean","env","JEST_WORKER_ID","skipPathsOptions","startsWith","pkgPath","require","resolve","paths","has","set","sync","cwd","get","er","code","undefined"],"sources":["../src/findPackageJSON.ts"],"sourcesContent":["import { dirname, isAbsolute } from 'path';\nimport * as process from 'process';\n\nimport findUp from 'find-up';\n\nconst cache = new Map<string, string | undefined>();\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(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 if (\n typeof er === 'object' &&\n er !== null &&\n (er as { code?: unknown }).code === 'MODULE_NOT_FOUND'\n ) {\n if (skipPathsOptions && filename) {\n return findPackageJSON(pkgName, null);\n }\n\n return undefined;\n }\n\n throw er;\n }\n}\n"],"mappings":"AAAA,SAASA,OAAO,EAAEC,UAAU,QAAQ,MAAM;AAC1C,OAAO,KAAKC,OAAO,MAAM,SAAS;AAElC,OAAOC,MAAM,MAAM,SAAS;AAE5B,MAAMC,KAAK,GAAG,IAAIC,GAAG,CAA6B,CAAC;AAEnD,OAAO,SAASC,eAAeA,CAC7BC,OAAe,EACfC,QAAmC,EACnC;EACA;EACA,MAAMC,MAAM,GAAGC,OAAO,CAACR,OAAO,CAACS,GAAG,CAACC,cAAc,CAAC;EAClD,MAAMC,gBAAgB,GAAGJ,MAAM,IAAI,CAACF,OAAO,CAACO,UAAU,CAAC,GAAG,CAAC;EAE3D,IAAI;IACF,MAAMC,OAAO,GACXR,OAAO,KAAK,GAAG,IAAIC,QAAQ,IAAIP,UAAU,CAACO,QAAQ,CAAC,GAC/CA,QAAQ,GACRQ,OAAO,CAACC,OAAO,CACbV,OAAO,EACPC,QAAQ,GAAG;MAAEU,KAAK,EAAE,CAAClB,OAAO,CAACQ,QAAQ,CAAC;IAAE,CAAC,GAAG,CAAC,CAC/C,CAAC;IACP,IAAI,CAACJ,KAAK,CAACe,GAAG,CAACJ,OAAO,CAAC,EAAE;MACvBX,KAAK,CAACgB,GAAG,CAACL,OAAO,EAAEZ,MAAM,CAACkB,IAAI,CAAC,cAAc,EAAE;QAAEC,GAAG,EAAEP;MAAQ,CAAC,CAAC,CAAC;IACnE;IAEA,OAAOX,KAAK,CAACmB,GAAG,CAACR,OAAO,CAAC;EAC3B,CAAC,CAAC,OAAOS,EAAW,EAAE;IACpB,IACE,OAAOA,EAAE,KAAK,QAAQ,IACtBA,EAAE,KAAK,IAAI,IACVA,EAAE,CAAwBC,IAAI,KAAK,kBAAkB,EACtD;MACA,IAAIZ,gBAAgB,IAAIL,QAAQ,EAAE;QAChC,OAAOF,eAAe,CAACC,OAAO,EAAE,IAAI,CAAC;MACvC;MAEA,OAAOmB,SAAS;IAClB;IAEA,MAAMF,EAAE;EACV;AACF"}
1
+ {"version":3,"file":"findPackageJSON.js","names":["dirname","isAbsolute","process","findUp","cache","Map","findPackageJSON","pkgName","filename","isJest","Boolean","env","JEST_WORKER_ID","skipPathsOptions","startsWith","pkgPath","require","resolve","paths","has","set","sync","cwd","get","er","code","undefined"],"sources":["../src/findPackageJSON.ts"],"sourcesContent":["import { dirname, isAbsolute } from 'path';\nimport * as process from 'process';\n\nimport findUp from 'find-up';\n\nconst cache = new Map<string, string | undefined>();\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(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 (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,OAAO,EAAEC,UAAU,QAAQ,MAAM;AAC1C,OAAO,KAAKC,OAAO,MAAM,SAAS;AAElC,OAAOC,MAAM,MAAM,SAAS;AAE5B,MAAMC,KAAK,GAAG,IAAIC,GAAG,CAA6B,CAAC;AAEnD,OAAO,SAASC,eAAeA,CAC7BC,OAAe,EACfC,QAAmC,EACnC;EACA;EACA,MAAMC,MAAM,GAAGC,OAAO,CAACR,OAAO,CAACS,GAAG,CAACC,cAAc,CAAC;EAClD,MAAMC,gBAAgB,GAAGJ,MAAM,IAAI,CAACF,OAAO,CAACO,UAAU,CAAC,GAAG,CAAC;EAE3D,IAAI;IACF,MAAMC,OAAO,GACXR,OAAO,KAAK,GAAG,IAAIC,QAAQ,IAAIP,UAAU,CAACO,QAAQ,CAAC,GAC/CA,QAAQ,GACRQ,OAAO,CAACC,OAAO,CACbV,OAAO,EACPC,QAAQ,GAAG;MAAEU,KAAK,EAAE,CAAClB,OAAO,CAACQ,QAAQ,CAAC;IAAE,CAAC,GAAG,CAAC,CAC/C,CAAC;IACP,IAAI,CAACJ,KAAK,CAACe,GAAG,CAACJ,OAAO,CAAC,EAAE;MACvBX,KAAK,CAACgB,GAAG,CAACL,OAAO,EAAEZ,MAAM,CAACkB,IAAI,CAAC,cAAc,EAAE;QAAEC,GAAG,EAAEP;MAAQ,CAAC,CAAC,CAAC;IACnE;IAEA,OAAOX,KAAK,CAACmB,GAAG,CAACR,OAAO,CAAC;EAC3B,CAAC,CAAC,OAAOS,EAAW,EAAE;IACpB,MAAMC,IAAI,GACR,OAAOD,EAAE,KAAK,QAAQ,IAAIA,EAAE,KAAK,IAAI,IAAI,MAAM,IAAIA,EAAE,GACjDA,EAAE,CAACC,IAAI,GACPC,SAAS;IAEf,IAAID,IAAI,KAAK,kBAAkB,EAAE;MAC/B,IAAIZ,gBAAgB,IAAIL,QAAQ,EAAE;QAChC,OAAOF,eAAe,CAACC,OAAO,EAAE,IAAI,CAAC;MACvC;MAEA,OAAOmB,SAAS;IAClB;IAEA,IAAID,IAAI,KAAK,+BAA+B,EAAE;MAC5C;MACA;MACA;MACA;MACA;MACA;MACA,OAAOC,SAAS;IAClB;IAEA,MAAMF,EAAE;EACV;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../src/options/types.ts"],"sourcesContent":["import type { Context as VmContext } from 'vm';\n\nimport type { TransformOptions } from '@babel/core';\nimport type { File } from '@babel/types';\n\nimport type { IVariableContext } from '../IVariableContext';\nimport type { Core } from '../babel';\n\nexport type ClassNameSlugVars = {\n dir: string;\n ext: string;\n file: string;\n hash: string;\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 onlyExports: 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 AllFeatureFlags = {\n dangerousCodeRemover: FeatureFlag;\n globalCache: FeatureFlag;\n happyDOM: FeatureFlag;\n softErrors: FeatureFlag;\n useBabelConfigs: FeatureFlag;\n};\n\nexport type FeatureFlags<\n TOnly extends keyof AllFeatureFlags = keyof AllFeatureFlags,\n> = Pick<AllFeatureFlags, TOnly>;\n\nexport type StrictOptions = {\n babelOptions: TransformOptions;\n classNameSlug?: string | ClassNameFn;\n displayName: boolean;\n evaluate: boolean;\n extensions: string[];\n features: FeatureFlags;\n highPriorityPlugins: string[];\n ignore?: RegExp;\n overrideContext?: (\n context: Partial<VmContext>,\n filename: string\n ) => Partial<VmContext>;\n rules: EvalRule[];\n tagResolver?: (source: string, tag: string) => string | null;\n variableNameConfig?: 'var' | 'dashes' | 'raw';\n variableNameSlug?: string | VariableNameFn;\n};\n"],"mappings":""}
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 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 onlyExports: 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 AllFeatureFlags = {\n dangerousCodeRemover: FeatureFlag;\n globalCache: FeatureFlag;\n happyDOM: FeatureFlag;\n softErrors: FeatureFlag;\n useBabelConfigs: FeatureFlag;\n};\n\nexport type FeatureFlags<\n TOnly extends keyof AllFeatureFlags = keyof AllFeatureFlags,\n> = Pick<AllFeatureFlags, TOnly>;\n\nexport type StrictOptions = {\n babelOptions: TransformOptions;\n classNameSlug?: string | ClassNameFn;\n displayName: boolean;\n evaluate: boolean;\n extensions: string[];\n features: FeatureFlags;\n highPriorityPlugins: string[];\n ignore?: RegExp;\n overrideContext?: (\n context: Partial<VmContext>,\n filename: string\n ) => Partial<VmContext>;\n rules: EvalRule[];\n tagResolver?: (source: string, tag: string) => string | null;\n variableNameConfig?: 'var' | 'dashes' | 'raw';\n variableNameSlug?: string | VariableNameFn;\n};\n"],"mappings":""}
@@ -26,12 +26,22 @@ function findPackageJSON(pkgName, filename) {
26
26
  }
27
27
  return cache.get(pkgPath);
28
28
  } catch (er) {
29
- if (typeof er === 'object' && er !== null && er.code === 'MODULE_NOT_FOUND') {
29
+ const code = typeof er === 'object' && er !== null && 'code' in er ? er.code : undefined;
30
+ if (code === 'MODULE_NOT_FOUND') {
30
31
  if (skipPathsOptions && filename) {
31
32
  return findPackageJSON(pkgName, null);
32
33
  }
33
34
  return undefined;
34
35
  }
36
+ if (code === 'ERR_PACKAGE_PATH_NOT_EXPORTED') {
37
+ // See https://github.com/Anber/wyw-in-js/issues/43
38
+ // `require` can't resolve ESM-only packages. We can use the `resolve`
39
+ // package here, but it does not solve all cases because `pkgName`
40
+ // can be an alias and should be resolved by a bundler. However, we can't use
41
+ // `resolve` from a bundler because it is async. The good news is that in that
42
+ // specific case, we can just ignore those packages. For now.
43
+ return undefined;
44
+ }
35
45
  throw er;
36
46
  }
37
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"findPackageJSON.js","names":["_path","require","process","_interopRequireWildcard","_findUp","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","cache","Map","findPackageJSON","pkgName","filename","isJest","Boolean","env","JEST_WORKER_ID","skipPathsOptions","startsWith","pkgPath","isAbsolute","resolve","paths","dirname","findUp","sync","cwd","er","code","undefined"],"sources":["../src/findPackageJSON.ts"],"sourcesContent":["import { dirname, isAbsolute } from 'path';\nimport * as process from 'process';\n\nimport findUp from 'find-up';\n\nconst cache = new Map<string, string | undefined>();\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(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 if (\n typeof er === 'object' &&\n er !== null &&\n (er as { code?: unknown }).code === 'MODULE_NOT_FOUND'\n ) {\n if (skipPathsOptions && filename) {\n return findPackageJSON(pkgName, null);\n }\n\n return undefined;\n }\n\n throw er;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"findPackageJSON.js","names":["_path","require","process","_interopRequireWildcard","_findUp","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","cache","Map","findPackageJSON","pkgName","filename","isJest","Boolean","env","JEST_WORKER_ID","skipPathsOptions","startsWith","pkgPath","isAbsolute","resolve","paths","dirname","findUp","sync","cwd","er","code","undefined"],"sources":["../src/findPackageJSON.ts"],"sourcesContent":["import { dirname, isAbsolute } from 'path';\nimport * as process from 'process';\n\nimport findUp from 'find-up';\n\nconst cache = new Map<string, string | undefined>();\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(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 (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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../src/options/types.ts"],"sourcesContent":["import type { Context as VmContext } from 'vm';\n\nimport type { TransformOptions } from '@babel/core';\nimport type { File } from '@babel/types';\n\nimport type { IVariableContext } from '../IVariableContext';\nimport type { Core } from '../babel';\n\nexport type ClassNameSlugVars = {\n dir: string;\n ext: string;\n file: string;\n hash: string;\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 onlyExports: 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 AllFeatureFlags = {\n dangerousCodeRemover: FeatureFlag;\n globalCache: FeatureFlag;\n happyDOM: FeatureFlag;\n softErrors: FeatureFlag;\n useBabelConfigs: FeatureFlag;\n};\n\nexport type FeatureFlags<\n TOnly extends keyof AllFeatureFlags = keyof AllFeatureFlags,\n> = Pick<AllFeatureFlags, TOnly>;\n\nexport type StrictOptions = {\n babelOptions: TransformOptions;\n classNameSlug?: string | ClassNameFn;\n displayName: boolean;\n evaluate: boolean;\n extensions: string[];\n features: FeatureFlags;\n highPriorityPlugins: string[];\n ignore?: RegExp;\n overrideContext?: (\n context: Partial<VmContext>,\n filename: string\n ) => Partial<VmContext>;\n rules: EvalRule[];\n tagResolver?: (source: string, tag: string) => string | null;\n variableNameConfig?: 'var' | 'dashes' | 'raw';\n variableNameSlug?: string | VariableNameFn;\n};\n"],"mappings":""}
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 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 onlyExports: 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 AllFeatureFlags = {\n dangerousCodeRemover: FeatureFlag;\n globalCache: FeatureFlag;\n happyDOM: FeatureFlag;\n softErrors: FeatureFlag;\n useBabelConfigs: FeatureFlag;\n};\n\nexport type FeatureFlags<\n TOnly extends keyof AllFeatureFlags = keyof AllFeatureFlags,\n> = Pick<AllFeatureFlags, TOnly>;\n\nexport type StrictOptions = {\n babelOptions: TransformOptions;\n classNameSlug?: string | ClassNameFn;\n displayName: boolean;\n evaluate: boolean;\n extensions: string[];\n features: FeatureFlags;\n highPriorityPlugins: string[];\n ignore?: RegExp;\n overrideContext?: (\n context: Partial<VmContext>,\n filename: string\n ) => Partial<VmContext>;\n rules: EvalRule[];\n tagResolver?: (source: string, tag: string) => string | null;\n variableNameConfig?: 'var' | 'dashes' | 'raw';\n variableNameSlug?: string | VariableNameFn;\n};\n"],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wyw-in-js/shared",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "dependencies": {
5
5
  "debug": "^4.3.4",
6
6
  "find-up": "^5.0.0",
@@ -12,10 +12,10 @@
12
12
  "@types/debug": "^4.1.9",
13
13
  "@types/node": "^16.18.55",
14
14
  "typescript": "^5.2.2",
15
- "@wyw-in-js/babel-config": "0.3.0",
16
- "@wyw-in-js/eslint-config": "0.3.0",
17
- "@wyw-in-js/jest-preset": "0.3.0",
18
- "@wyw-in-js/ts-config": "0.3.0"
15
+ "@wyw-in-js/babel-config": "0.4.0",
16
+ "@wyw-in-js/eslint-config": "0.4.0",
17
+ "@wyw-in-js/jest-preset": "0.4.0",
18
+ "@wyw-in-js/ts-config": "0.4.0"
19
19
  },
20
20
  "engines": {
21
21
  "node": ">=16.0.0"
@@ -45,14 +45,24 @@ function findPackageJSON(pkgName, filename) {
45
45
  return cache.get(pkgPath);
46
46
  }
47
47
  catch (er) {
48
- if (typeof er === 'object' &&
49
- er !== null &&
50
- er.code === 'MODULE_NOT_FOUND') {
48
+ const code = typeof er === 'object' && er !== null && 'code' in er
49
+ ? er.code
50
+ : undefined;
51
+ if (code === 'MODULE_NOT_FOUND') {
51
52
  if (skipPathsOptions && filename) {
52
53
  return findPackageJSON(pkgName, null);
53
54
  }
54
55
  return undefined;
55
56
  }
57
+ if (code === 'ERR_PACKAGE_PATH_NOT_EXPORTED') {
58
+ // See https://github.com/Anber/wyw-in-js/issues/43
59
+ // `require` can't resolve ESM-only packages. We can use the `resolve`
60
+ // package here, but it does not solve all cases because `pkgName`
61
+ // can be an alias and should be resolved by a bundler. However, we can't use
62
+ // `resolve` from a bundler because it is async. The good news is that in that
63
+ // specific case, we can just ignore those packages. For now.
64
+ return undefined;
65
+ }
56
66
  throw er;
57
67
  }
58
68
  }
@@ -1,9 +1,8 @@
1
- /// <reference types="node" />
2
- import type { Context as VmContext } from 'vm';
3
1
  import type { TransformOptions } from '@babel/core';
4
2
  import type { File } from '@babel/types';
5
3
  import type { IVariableContext } from '../IVariableContext';
6
4
  import type { Core } from '../babel';
5
+ type VmContext = Record<string, any>;
7
6
  export type ClassNameSlugVars = {
8
7
  dir: string;
9
8
  ext: string;