@wyw-in-js/shared 2.0.0-alpha.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/index.js.map +1 -1
- package/esm/options/nativeResolverOptions.js +9 -4
- package/esm/options/nativeResolverOptions.js.map +1 -1
- package/esm/options/types.js.map +1 -1
- package/package.json +1 -1
- package/types/index.d.ts +1 -1
- package/types/options/nativeResolverOptions.js +10 -8
- package/types/options/types.d.ts +3 -0
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,SACE,uBACA,6BACK;AAEP,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 {\n mergeOxcResolverAlias,\n toNativeResolverAlias,\n} from './options/nativeResolverOptions';\nexport type { NativeResolverAlias } from './options/nativeResolverOptions';\nexport { slugify } from './slugify';\nexport { ValueType } from './types';\n\nexport type { IVariableContext } from './IVariableContext';\nexport type {\n ClassNameSlugVars,\n ClassNameFn,\n CodeRemoverOptions,\n EvalErrorMode,\n EvalOptionsV2,\n EvalRequireMode,\n EvalResolverKind,\n EvalResolverMode,\n EvalRuntime,\n EvalStrategy,\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
|
+
{"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,SACE,uBACA,6BACK;AAEP,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 {\n mergeOxcResolverAlias,\n toNativeResolverAlias,\n} from './options/nativeResolverOptions';\nexport type { NativeResolverAlias } from './options/nativeResolverOptions';\nexport { slugify } from './slugify';\nexport { ValueType } from './types';\n\nexport type { IVariableContext } from './IVariableContext';\nexport type {\n ClassNameSlugVars,\n ClassNameFn,\n CodeRemoverOptions,\n EvalErrorMode,\n EvalOptionsV2,\n EvalRequireMode,\n EvalResolverKind,\n EvalResolverMode,\n EvalRuntime,\n EvalStrategy,\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 WywInJsProcessorOptions,\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"}
|
|
@@ -10,10 +10,15 @@ const toAliasTargets = (replacement) => {
|
|
|
10
10
|
};
|
|
11
11
|
export const toNativeResolverAlias = (alias) => {
|
|
12
12
|
const nativeAlias = {};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}))
|
|
13
|
+
let entries = [];
|
|
14
|
+
if (Array.isArray(alias)) {
|
|
15
|
+
entries = alias;
|
|
16
|
+
} else if (isNativeResolverAlias(alias)) {
|
|
17
|
+
entries = Object.entries(alias).map(([find, replacement]) => ({
|
|
18
|
+
find,
|
|
19
|
+
replacement
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
17
22
|
entries.forEach((rawEntry) => {
|
|
18
23
|
if (!isNativeResolverAlias(rawEntry)) {
|
|
19
24
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"AAcA,MAAM,yBAAyB,UAC7B,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,MAAM;AAEtE,MAAM,kBACJ,gBAC4C;AAC5C,KAAI,OAAO,gBAAgB,UAAU;AACnC,SAAO,CAAC,YAAY;;AAGtB,KACE,MAAM,QAAQ,YAAY,IAC1B,YAAY,OAAO,SAAS,OAAO,SAAS,SAAS,EACrD;AACA,SAAO;;AAGT,QAAO;;AAGT,OAAO,MAAM,
|
|
1
|
+
{"mappings":"AAcA,MAAM,yBAAyB,UAC7B,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,MAAM;AAEtE,MAAM,kBACJ,gBAC4C;AAC5C,KAAI,OAAO,gBAAgB,UAAU;AACnC,SAAO,CAAC,YAAY;;AAGtB,KACE,MAAM,QAAQ,YAAY,IAC1B,YAAY,OAAO,SAAS,OAAO,SAAS,SAAS,EACrD;AACA,SAAO;;AAGT,QAAO;;AAGT,OAAO,MAAM,yBAAyB,UAAwC;CAC5E,MAAM,cAAmC,EAAE;CAE3C,IAAI,UAAqB,EAAE;AAE3B,KAAI,MAAM,QAAQ,MAAM,EAAE;AACxB,YAAU;YACD,sBAAsB,MAAM,EAAE;AACvC,YAAU,OAAO,QAAQ,MAAM,CAAC,KAAK,CAAC,MAAM,kBAAkB;GAC5D;GACA;GACD,EAAE;;AAGL,SAAQ,SAAS,aAAa;AAC5B,MAAI,CAAC,sBAAsB,SAAS,EAAE;AACpC;;EAGF,MAAM,QAAQ;EACd,MAAM,OAAO,UAAU,QAAQ,MAAM,OAAO,MAAM;EAClD,MAAM,cACJ,iBAAiB,QAAQ,MAAM,cAAc,MAAM;EACrD,MAAM,UAAU,eAAe,YAAY;AAE3C,MAAI,OAAO,SAAS,YAAY,CAAC,SAAS;AACxC;;AAGF,cAAY,QAAQ;GACpB;AAEF,QAAO;;AAGT,OAAO,MAAM,yBACX,YACA,iBAC2B;AAC3B,KAAI,OAAO,KAAK,aAAa,CAAC,WAAW,GAAG;AAC1C,SAAO;;CAGT,MAAM,WAAW,YAAY,YAAY,EAAE;CAC3C,MAAM,kBAAkB,sBAAsB,SAAS,MAAM,GACzD,SAAS,QACT,EAAE;AAEN,QAAO;EACL,GAAG;EACH,UAAU;GACR,GAAG;GACH,OAAO;IACL,GAAG;IACH,GAAG;IACJ;GACF;EACF","names":[],"sources":["../../src/options/nativeResolverOptions.ts"],"version":3,"sourcesContent":["import type { OxcOptions } from './types';\n\nexport type NativeResolverAlias = Record<\n string,\n Array<string | undefined | null>\n>;\n\ntype AliasEntry = {\n alias?: unknown;\n find?: unknown;\n name?: unknown;\n replacement?: unknown;\n};\n\nconst isNativeResolverAlias = (value: unknown): value is NativeResolverAlias =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst toAliasTargets = (\n replacement: unknown\n): Array<string | undefined | null> | null => {\n if (typeof replacement === 'string') {\n return [replacement];\n }\n\n if (\n Array.isArray(replacement) &&\n replacement.every((item) => typeof item === 'string')\n ) {\n return replacement;\n }\n\n return null;\n};\n\nexport const toNativeResolverAlias = (alias: unknown): NativeResolverAlias => {\n const nativeAlias: NativeResolverAlias = {};\n\n let entries: unknown[] = [];\n\n if (Array.isArray(alias)) {\n entries = alias;\n } else if (isNativeResolverAlias(alias)) {\n entries = Object.entries(alias).map(([find, replacement]) => ({\n find,\n replacement,\n }));\n }\n\n entries.forEach((rawEntry) => {\n if (!isNativeResolverAlias(rawEntry)) {\n return;\n }\n\n const entry = rawEntry as AliasEntry;\n const find = 'find' in entry ? entry.find : entry.name;\n const replacement =\n 'replacement' in entry ? entry.replacement : entry.alias;\n const targets = toAliasTargets(replacement);\n\n if (typeof find !== 'string' || !targets) {\n return;\n }\n\n nativeAlias[find] = targets;\n });\n\n return nativeAlias;\n};\n\nexport const mergeOxcResolverAlias = (\n oxcOptions: OxcOptions | undefined,\n bundlerAlias: NativeResolverAlias\n): OxcOptions | undefined => {\n if (Object.keys(bundlerAlias).length === 0) {\n return oxcOptions;\n }\n\n const resolver = oxcOptions?.resolver ?? {};\n const configuredAlias = isNativeResolverAlias(resolver.alias)\n ? resolver.alias\n : {};\n\n return {\n ...oxcOptions,\n resolver: {\n ...resolver,\n alias: {\n ...bundlerAlias,\n ...configuredAlias,\n },\n },\n };\n};\n"],"file":"nativeResolverOptions.js"}
|
package/esm/options/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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 native 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' | 'native' | 'custom';\n\nexport type EvalRequireMode = 'warn-and-run' | 'error' | 'off';\n\nexport type EvalStrategy = 'execute' | 'hybrid' | 'static';\n\nexport type EvalRuntime = 'nodejs';\n\nexport type EvalErrorMode = 'strict' | 'loose';\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 * Controls how interpolation values are computed.\n * - `execute`: use the build-time evaluator.\n * - `hybrid`: resolve provably static values first, then fall back to the evaluator.\n * - `static`: resolve only provably static values and fail on evaluator fallback.\n */\n strategy?: EvalStrategy;\n /**\n * Runtime used by the build-time evaluator.\n */\n runtime?: EvalRuntime;\n /**\n * Default is `bundler`. `hybrid` is an opt-in mode whose intended\n * precedence is customResolver -> native Oxc resolver -> bundler.\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 errors?: EvalErrorMode; // 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 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 eval?: EvalOptionsV2;\n extensions: string[];\n features: FeatureFlags;\n highPriorityPlugins: string[];\n ignore?: RegExp;\n importLoaders?: ImportLoaders;\n importOverrides?: ImportOverrides;\n /**\n * Per-source map of imported names to statically-known values. Used by\n * the static evaluator when resolving imports from the listed sources.\n *\n * Each entry maps an import source (a package name or absolute file\n * path) to a record of imported names. Each name's value is either:\n * - a function: treated as a pure helper. Called at every CallExpression\n * site whose callee resolves to this binding, with evaluator-resolved\n * args. Result is treated as a static value.\n * - any other value: treated as a literal binding override. Returned\n * wherever the binding is referenced.\n *\n * Trust model is the same as importOverrides / tagResolver: the user\n * vouches that pure helpers are deterministic and that literal\n * overrides reflect the runtime value (or knowingly diverge for\n * prototyping / SSR theming).\n *\n * Example:\n * staticBindings: {\n * '@linaria/core': {\n * cx: (...args) => args.filter(Boolean).join(' '),\n * },\n * '/abs/path/to/theme.ts': {\n * themeVars: { panelBg: '#f00' },\n * },\n * }\n */\n staticBindings?: Record<string, Record<string, unknown>>;\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"}
|
|
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 native 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' | 'native' | 'custom';\n\nexport type EvalRequireMode = 'warn-and-run' | 'error' | 'off';\n\nexport type EvalStrategy = 'execute' | 'hybrid' | 'static';\n\nexport type EvalRuntime = 'nodejs';\n\nexport type EvalErrorMode = 'strict' | 'loose';\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 * Controls how interpolation values are computed.\n * - `execute`: use the build-time evaluator.\n * - `hybrid`: resolve provably static values first, then fall back to the evaluator.\n * - `static`: resolve only provably static values and fail on evaluator fallback.\n */\n strategy?: EvalStrategy;\n /**\n * Runtime used by the build-time evaluator.\n */\n runtime?: EvalRuntime;\n /**\n * Default is `bundler`. `hybrid` is an opt-in mode whose intended\n * precedence is customResolver -> native Oxc resolver -> bundler.\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 errors?: EvalErrorMode; // 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 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 interface WywInJsProcessorOptions {}\n\nexport type StrictOptions = {\n classNameSlug?: string | ClassNameFn;\n codeRemover?: CodeRemoverOptions;\n conditionNames?: string[];\n displayName: boolean;\n eval?: EvalOptionsV2;\n extensions: string[];\n features: FeatureFlags;\n highPriorityPlugins: string[];\n ignore?: RegExp;\n importLoaders?: ImportLoaders;\n importOverrides?: ImportOverrides;\n processors?: WywInJsProcessorOptions;\n /**\n * Per-source map of imported names to statically-known values. Used by\n * the static evaluator when resolving imports from the listed sources.\n *\n * Each entry maps an import source (a package name or absolute file\n * path) to a record of imported names. Each name's value is either:\n * - a function: treated as a pure helper. Called at every CallExpression\n * site whose callee resolves to this binding, with evaluator-resolved\n * args. Result is treated as a static value.\n * - any other value: treated as a literal binding override. Returned\n * wherever the binding is referenced.\n *\n * Trust model is the same as importOverrides / tagResolver: the user\n * vouches that pure helpers are deterministic and that literal\n * overrides reflect the runtime value (or knowingly diverge for\n * prototyping / SSR theming).\n *\n * Example:\n * staticBindings: {\n * '@linaria/core': {\n * cx: (...args) => args.filter(Boolean).join(' '),\n * },\n * '/abs/path/to/theme.ts': {\n * themeVars: { panelBg: '#f00' },\n * },\n * }\n */\n staticBindings?: Record<string, Record<string, unknown>>;\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"}
|
package/package.json
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -11,5 +11,5 @@ export type { NativeResolverAlias } from './options/nativeResolverOptions';
|
|
|
11
11
|
export { slugify } from './slugify';
|
|
12
12
|
export { ValueType } from './types';
|
|
13
13
|
export type { IVariableContext } from './IVariableContext';
|
|
14
|
-
export type { ClassNameSlugVars, ClassNameFn, CodeRemoverOptions, EvalErrorMode, EvalOptionsV2, EvalRequireMode, EvalResolverKind, EvalResolverMode, EvalRuntime, EvalStrategy, EvalWarning, EvalWarningCode, ImportLoader, ImportLoaderContext, ImportLoaders, ImportOverride, ImportOverrides, OxcOptions, TagResolverMeta, StrictOptions, EvalRule, EvaluatorOptions, TransformEngineOptions, Evaluator, FeatureFlag, EvaluatorConfig, FeatureFlags, VariableNameFn, } from './options/types';
|
|
14
|
+
export type { ClassNameSlugVars, ClassNameFn, CodeRemoverOptions, EvalErrorMode, EvalOptionsV2, EvalRequireMode, EvalResolverKind, EvalResolverMode, EvalRuntime, EvalStrategy, EvalWarning, EvalWarningCode, ImportLoader, ImportLoaderContext, ImportLoaders, ImportOverride, ImportOverrides, OxcOptions, TagResolverMeta, StrictOptions, EvalRule, EvaluatorOptions, TransformEngineOptions, Evaluator, FeatureFlag, EvaluatorConfig, FeatureFlags, VariableNameFn, WywInJsProcessorOptions, } from './options/types';
|
|
15
15
|
export type { Artifact, AstExpression, AstNode, BigIntLiteral, BooleanLiteral, BuildCodeFrameErrorFn, ConstValue, DecimalLiteral, ExpressionValue, FunctionValue, Identifier, ICSSRule, LazyValue, Location, NullLiteral, NumericLiteral, Replacement, Replacements, Rules, SourceLocation, StringLiteral, WYWEvalMeta, } from './types';
|
|
@@ -11,14 +11,16 @@ const toAliasTargets = (replacement) => {
|
|
|
11
11
|
};
|
|
12
12
|
export const toNativeResolverAlias = (alias) => {
|
|
13
13
|
const nativeAlias = {};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
let entries = [];
|
|
15
|
+
if (Array.isArray(alias)) {
|
|
16
|
+
entries = alias;
|
|
17
|
+
}
|
|
18
|
+
else if (isNativeResolverAlias(alias)) {
|
|
19
|
+
entries = Object.entries(alias).map(([find, replacement]) => ({
|
|
20
|
+
find,
|
|
21
|
+
replacement,
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
22
24
|
entries.forEach((rawEntry) => {
|
|
23
25
|
if (!isNativeResolverAlias(rawEntry)) {
|
|
24
26
|
return;
|
package/types/options/types.d.ts
CHANGED
|
@@ -171,6 +171,8 @@ export type OxcOptions = {
|
|
|
171
171
|
*/
|
|
172
172
|
transform?: Record<string, unknown>;
|
|
173
173
|
};
|
|
174
|
+
export interface WywInJsProcessorOptions {
|
|
175
|
+
}
|
|
174
176
|
export type StrictOptions = {
|
|
175
177
|
classNameSlug?: string | ClassNameFn;
|
|
176
178
|
codeRemover?: CodeRemoverOptions;
|
|
@@ -183,6 +185,7 @@ export type StrictOptions = {
|
|
|
183
185
|
ignore?: RegExp;
|
|
184
186
|
importLoaders?: ImportLoaders;
|
|
185
187
|
importOverrides?: ImportOverrides;
|
|
188
|
+
processors?: WywInJsProcessorOptions;
|
|
186
189
|
/**
|
|
187
190
|
* Per-source map of imported names to statically-known values. Used by
|
|
188
191
|
* the static evaluator when resolving imports from the listed sources.
|