@animus-ui/extract 0.1.16 → 0.1.18

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 (44) hide show
  1. package/README.md +3 -1
  2. package/crates/extract-v2/animus-extract-v2.darwin-arm64.node +0 -0
  3. package/crates/extract-v2/animus-extract-v2.linux-arm64-gnu.node +0 -0
  4. package/crates/extract-v2/animus-extract-v2.linux-x64-gnu.node +0 -0
  5. package/crates/extract-v2/index.d.ts +20 -2
  6. package/dist/index.cjs +4 -1
  7. package/dist/index.mjs +2 -2
  8. package/dist/pipeline/analyze-project-args.d.ts +8 -1
  9. package/dist/pipeline/analyze-project-args.d.ts.map +1 -1
  10. package/dist/pipeline/core-options.d.ts +10 -2
  11. package/dist/pipeline/core-options.d.ts.map +1 -1
  12. package/dist/pipeline/dynamic-prop-config.d.ts +31 -4
  13. package/dist/pipeline/dynamic-prop-config.d.ts.map +1 -1
  14. package/dist/pipeline/engine-adapter.d.ts +1 -1
  15. package/dist/pipeline/engine-adapter.d.ts.map +1 -1
  16. package/dist/pipeline/index.d.ts +3 -3
  17. package/dist/pipeline/index.d.ts.map +1 -1
  18. package/dist/pipeline/manifest-diagnostics.d.ts +10 -2
  19. package/dist/pipeline/manifest-diagnostics.d.ts.map +1 -1
  20. package/dist/pipeline/manifest-schema.d.ts +7 -0
  21. package/dist/pipeline/manifest-schema.d.ts.map +1 -1
  22. package/dist/pipeline/prefix.d.ts +2 -0
  23. package/dist/pipeline/prefix.d.ts.map +1 -1
  24. package/dist/pipeline/property-registrations.d.ts +16 -0
  25. package/dist/pipeline/property-registrations.d.ts.map +1 -0
  26. package/dist/pipeline/run-analysis.d.ts.map +1 -1
  27. package/dist/pipeline/source-corpus.d.ts +11 -0
  28. package/dist/pipeline/source-corpus.d.ts.map +1 -1
  29. package/dist/pipeline/source-ingestion.d.ts +12 -0
  30. package/dist/pipeline/source-ingestion.d.ts.map +1 -1
  31. package/dist/pipeline/system-config.d.ts +12 -2
  32. package/dist/pipeline/system-config.d.ts.map +1 -1
  33. package/dist/pipeline/system-props-module.d.ts +3 -1
  34. package/dist/pipeline/system-props-module.d.ts.map +1 -1
  35. package/dist/pipeline/unit-fallback.d.ts.map +1 -1
  36. package/dist/{pipeline-DeEENy5C.mjs → pipeline-Dr-I4Xhl.mjs} +211 -19
  37. package/dist/{pipeline-x1yBZ2UP.cjs → pipeline-OKnmnyFu.cjs} +228 -18
  38. package/dist/session/extraction-session.d.ts +16 -7
  39. package/dist/session/extraction-session.d.ts.map +1 -1
  40. package/dist/session/index.d.ts +1 -1
  41. package/dist/session/index.d.ts.map +1 -1
  42. package/dist/session.cjs +70 -40
  43. package/dist/session.mjs +70 -41
  44. package/package.json +4 -4
@@ -84,7 +84,7 @@ function assembleStylesheet(options) {
84
84
  //#region pipeline/analyze-project-args.ts
85
85
  /** @internal */
86
86
  function buildAnalyzeProjectArgs(inputs) {
87
- return [
87
+ const args = [
88
88
  inputs.filesJson,
89
89
  inputs.scalesJson,
90
90
  inputs.variableMapJson,
@@ -102,8 +102,11 @@ function buildAnalyzeProjectArgs(inputs) {
102
102
  inputs.staticCssJson,
103
103
  inputs.conditionAliasesJson,
104
104
  inputs.externalDirsJson,
105
- inputs.transformSourcesJson
105
+ inputs.transformSourcesJson,
106
+ inputs.transformProvenanceJson ?? null
106
107
  ];
108
+ if (inputs.declarationScalesJson) args.push(inputs.declarationScalesJson);
109
+ return args;
107
110
  }
108
111
  //#endregion
109
112
  //#region pipeline/content-hash.ts
@@ -767,6 +770,7 @@ const NODE_NEXT_EXTENSION_MAP = {
767
770
  ".tsx",
768
771
  ".jsx"
769
772
  ],
773
+ ".jsx": [".tsx"],
770
774
  ".mjs": [".mts"],
771
775
  ".cjs": [".cts"]
772
776
  };
@@ -948,6 +952,7 @@ async function ingestSourceEntries(rawEntries, options) {
948
952
  }]);
949
953
  }
950
954
  const facts = collectFileFacts(analysisEntries, options);
955
+ const abortedParses = [];
951
956
  for (const [analysisPath, file] of Object.entries(facts.files)) {
952
957
  const originalPath = analysisOwner.get(analysisPath) ?? analysisPath;
953
958
  for (const message of file.parseDiagnostics) diagnostics.push({
@@ -956,6 +961,11 @@ async function ingestSourceEntries(rawEntries, options) {
956
961
  originalPath,
957
962
  analysisPath
958
963
  });
964
+ if (file.parsePanicked) abortedParses.push({
965
+ originalPath,
966
+ hash: ownership[originalPath].originalHash,
967
+ messages: file.parseDiagnostics
968
+ });
959
969
  }
960
970
  const resolvers = new ResolverExportIndex(facts, analysisEntries.map((entry) => entry.path));
961
971
  for (const { canonicalPath, paths } of resolvers.collisions) for (let index = 0; index < paths.length; index += 1) {
@@ -985,12 +995,14 @@ async function ingestSourceEntries(rawEntries, options) {
985
995
  }
986
996
  addAdaptedEntries(original.path, result.entries);
987
997
  }
988
- return {
998
+ const result = {
989
999
  originalEntries,
990
1000
  analysisEntries,
991
1001
  ownership,
992
1002
  diagnostics
993
1003
  };
1004
+ if (abortedParses.length > 0) result.abortedParses = abortedParses;
1005
+ return result;
994
1006
  }
995
1007
  /**
996
1008
  * `parseCount` counts the parses performed by THIS call, so a fully-memoized
@@ -1116,7 +1128,7 @@ function createV2EngineApi(deps) {
1116
1128
  return {
1117
1129
  loadSystemModule: (...args) => native.loadSystemModule(...args),
1118
1130
  extractFacts: (filesJson) => native.extractFacts(filesJson),
1119
- analyzeProject: (filesJsonRaw, scalesJson, variableMapJson, contextualVarsJson, propConfigJson, groupRegistryJson, packageResolutionJson, devMode, emitterConfigJson, selectorAliasesJson, _selectorOrderJson, globalStyleBlocksJson, pathAliasesJson, keyframesJson, staticCssJson, conditionAliasesJson, externalDirsJson, transformSourcesJson) => {
1131
+ analyzeProject: (filesJsonRaw, scalesJson, variableMapJson, contextualVarsJson, propConfigJson, groupRegistryJson, packageResolutionJson, devMode, emitterConfigJson, selectorAliasesJson, _selectorOrderJson, globalStyleBlocksJson, pathAliasesJson, keyframesJson, staticCssJson, conditionAliasesJson, externalDirsJson, transformSourcesJson, transformProvenanceJson, declarationScalesJson) => {
1120
1132
  const filesJson = deps.rehydrateFilesJson ? deps.rehydrateFilesJson(filesJsonRaw) : filesJsonRaw;
1121
1133
  const sent = /* @__PURE__ */ new Map();
1122
1134
  for (const entry of parseFilesJson(filesJson, label)) sent.set(entry.path, entry.source);
@@ -1141,6 +1153,8 @@ function createV2EngineApi(deps) {
1141
1153
  staticCssJson: staticCssJson ?? void 0,
1142
1154
  externalDirsJson: externalDirsJson ?? void 0,
1143
1155
  transformSourcesJson: transformSourcesJson ?? void 0,
1156
+ transformProvenanceJson: transformProvenanceJson ?? void 0,
1157
+ declarationScalesJson,
1144
1158
  devMode
1145
1159
  };
1146
1160
  const engine = new native.ExtractEngine(config);
@@ -1200,6 +1214,12 @@ const REPLACEABLE_DEFAULT_EXCLUDE = [
1200
1214
  ".spec."
1201
1215
  ];
1202
1216
  const DEFAULT_EXCLUDE = [...STRUCTURAL_EXCLUDE, ...REPLACEABLE_DEFAULT_EXCLUDE];
1217
+ /** The effective log tier: the option or `ANIMUS_DEBUG`, whichever is higher. */
1218
+ function resolveVerbosity(option, debugEnv) {
1219
+ if (option === "trace" || debugEnv === "trace") return "trace";
1220
+ if (option === true || debugEnv === "1" || debugEnv === "true") return "verbose";
1221
+ return "quiet";
1222
+ }
1203
1223
  const CORE_OPTION_KEYS = /* @__PURE__ */ new Set([
1204
1224
  "system",
1205
1225
  "exclude",
@@ -1261,6 +1281,7 @@ function assertKnownOptionKeys(raw, ownKeys = [], rejectKeys = [], opts = {}) {
1261
1281
  */
1262
1282
  const isString = (value) => Object(value) !== value && Object.prototype.toString.call(value) === "[object String]";
1263
1283
  const isBoolean = (value) => Object(value) !== value && Object.prototype.toString.call(value) === "[object Boolean]";
1284
+ const isVerbose = (value) => isBoolean(value) || value === "trace";
1264
1285
  const isStringArray = (value) => Array.isArray(value) && value.every(isString);
1265
1286
  const isStringOrStringArray = (value) => isString(value) || isStringArray(value);
1266
1287
  const CORE_VALUE_GATES = [
@@ -1286,8 +1307,8 @@ const CORE_VALUE_GATES = [
1286
1307
  },
1287
1308
  {
1288
1309
  key: "verbose",
1289
- ok: isBoolean,
1290
- expected: "a boolean"
1310
+ ok: isVerbose,
1311
+ expected: "a boolean or 'trace'"
1291
1312
  },
1292
1313
  {
1293
1314
  key: "minify",
@@ -1969,6 +1990,16 @@ function createSourceCorpus(host, ingestor = createSourceIngestor(host)) {
1969
1990
  const ingested = await ingestor.ingest(rawEntries);
1970
1991
  return withoutInvalidOriginals(ingested, ingestor.surfaceDiagnostics(ingested.diagnostics));
1971
1992
  },
1993
+ rejection(prepared) {
1994
+ const aborted = (prepared.abortedParses ?? []).filter(({ originalPath }) => prepared.ownership[originalPath] !== void 0);
1995
+ if (aborted.length === 0) return null;
1996
+ const files = aborted.map(({ originalPath, messages }) => `${originalPath} (${messages.join("; ")})`).join(", ");
1997
+ const owners = aborted.length === 1 ? "this file's" : "these files'";
1998
+ return {
1999
+ originals: new Map(aborted.map(({ originalPath, hash }) => [originalPath, hash])),
2000
+ message: `${host.prefix} analysis not published: the parser stopped before the end of ${files}; fix the syntax error to publish ${owners} changes`
2001
+ };
2002
+ },
1972
2003
  publish(accepted) {
1973
2004
  ingestor.markPublished(accepted);
1974
2005
  published = {
@@ -2304,6 +2335,8 @@ function unreadableSourceDiagnostic(relPath, error) {
2304
2335
  }
2305
2336
  /** The collision entry code minted by the system package's merge. */
2306
2337
  const VOCABULARY_COLLISION = "animus.vocabulary.collision";
2338
+ /** A theme `@property` registration browsers would ignore; it is not emitted. */
2339
+ const INVALID_PROPERTY_REGISTRATION = "animus.theme.invalid-property-registration";
2307
2340
  /** Minted when a sealed kit with registered vocabulary is consumed through
2308
2341
  * the deprecated `from()`/`includes:` verbs. */
2309
2342
  const VOCABULARY_LEGACY_VERB = "animus.vocabulary.legacy-verb";
@@ -2311,7 +2344,8 @@ const DIAGNOSTIC_SEVERITY = /* @__PURE__ */ new Map([
2311
2344
  [SELECTOR_UNSUPPORTED_SUBJECT, "error"],
2312
2345
  [UNREADABLE_SOURCE_FILE, "error"],
2313
2346
  [VOCABULARY_COLLISION, "warn"],
2314
- [VOCABULARY_LEGACY_VERB, "warn"]
2347
+ [VOCABULARY_LEGACY_VERB, "warn"],
2348
+ [INVALID_PROPERTY_REGISTRATION, "error"]
2315
2349
  ]);
2316
2350
  /** An unlisted code is `warn`: a witness kind from a newer system package
2317
2351
  * must not fail the strict build of a host that predates its writer. */
@@ -2352,6 +2386,19 @@ function vocabularyWitnessDiagnostics(vocabularyWitnessesJson) {
2352
2386
  });
2353
2387
  return diagnostics;
2354
2388
  }
2389
+ /** The diagnostics a loaded system's own records carry: vocabulary
2390
+ * witnesses and invalid `@property` registrations. */
2391
+ function systemLoadDiagnostics(system) {
2392
+ const registrations = (system.invalidPropertyRegistrations ?? []).map(({ name, reason }) => ({
2393
+ file: "system",
2394
+ component: name,
2395
+ kind: "warn",
2396
+ message: `@property ${name} was not emitted: ${reason}. Browsers ignore an invalid registration and minifying it fails; fix it where the theme declares ${name} (${INVALID_PROPERTY_REGISTRATION})`,
2397
+ code: INVALID_PROPERTY_REGISTRATION,
2398
+ severity: severityFor(INVALID_PROPERTY_REGISTRATION)
2399
+ }));
2400
+ return [...vocabularyWitnessDiagnostics(system.vocabularyWitnessesJson), ...registrations];
2401
+ }
2355
2402
  /**
2356
2403
  * The single strict-escalation policy point for both extraction plugins:
2357
2404
  * error-severity diagnostics throw together under `strict`, else warn.
@@ -2376,9 +2423,14 @@ function surfaceManifestDiagnostics(manifest, warn, policy = {}) {
2376
2423
  }
2377
2424
  //#endregion
2378
2425
  //#region pipeline/unit-fallback.ts
2426
+ /** A digit run after one of these continues a word (`#b1b1b7`, `ss01`,
2427
+ * `U+0025`), so it is not a bare number. The extractor predicts this pass
2428
+ * with `unit_fallback_rewrites` in `crates/extract-v2/src/css.rs`; keep both
2429
+ * in step. */
2430
+ const WORD_CHAR = /[A-Za-z0-9_#+-]/;
2379
2431
  function applyUnitFallback(css) {
2380
- return css.replace(/([a-z-]+)\s*:\s*([^;{}]+);/g, (match, prop, value) => {
2381
- if ((0, _animus_ui_properties.isUnitlessProperty)(prop)) return match;
2432
+ return css.replace(/(--[\w-]+|[a-z-]+)\s*:\s*([^;{}]+);/g, (match, prop, value) => {
2433
+ if ((0, _animus_ui_properties.isUnitlessProperty)(prop) || prop.startsWith("--")) return match;
2382
2434
  let depth = 0;
2383
2435
  let fixed = "";
2384
2436
  let i = 0;
@@ -2393,8 +2445,14 @@ function applyUnitFallback(css) {
2393
2445
  } else if (depth > 0) {
2394
2446
  fixed += value[i];
2395
2447
  i++;
2448
+ } else if (value[i] === "\"" || value[i] === "'") {
2449
+ let end = i + 1;
2450
+ while (end < value.length && value[end] !== value[i]) end += value[end] === "\\" ? 2 : 1;
2451
+ end = Math.min(end + 1, value.length);
2452
+ fixed += value.slice(i, end);
2453
+ i = end;
2396
2454
  } else {
2397
- const numMatch = value.slice(i).match(/^(-?\d+\.?\d*)/);
2455
+ const numMatch = i === 0 || !WORD_CHAR.test(value[i - 1]) ? value.slice(i).match(/^([+-]?\d+\.?\d*)/) : null;
2398
2456
  if (numMatch) {
2399
2457
  const num = numMatch[1];
2400
2458
  const after = value[i + num.length];
@@ -2419,7 +2477,7 @@ function buildAnalysisInputs(opts) {
2419
2477
  css_module_id: opts.emitter.cssModuleId
2420
2478
  };
2421
2479
  if (opts.emitter.systemPropsModuleId) emitterConfig.system_props_module_id = opts.emitter.systemPropsModuleId;
2422
- return {
2480
+ const inputs = {
2423
2481
  filesJson: JSON.stringify(opts.fileEntries),
2424
2482
  scalesJson: opts.system.scalesJson,
2425
2483
  variableMapJson: opts.system.variableMapJson,
@@ -2436,8 +2494,11 @@ function buildAnalysisInputs(opts) {
2436
2494
  staticCssJson: opts.staticCssJson ?? null,
2437
2495
  conditionAliasesJson: opts.system.conditionAliasesJson ?? null,
2438
2496
  transformSourcesJson: opts.system.transformSourcesJson ?? null,
2497
+ transformProvenanceJson: opts.system.transformProvenanceJson ?? null,
2439
2498
  externalDirsJson: opts.externalDirs?.length && hasSourceThemeManifests(opts.system) ? JSON.stringify(opts.externalDirs) : null
2440
2499
  };
2500
+ if (opts.system.declarationScalesJson) inputs.declarationScalesJson = opts.system.declarationScalesJson;
2501
+ return inputs;
2441
2502
  }
2442
2503
  function hasSourceThemeManifests(system) {
2443
2504
  const json = system.sourceThemeManifestsJson ?? "";
@@ -2459,7 +2520,11 @@ function runProjectAnalysis(engineApi, opts) {
2459
2520
  const manifest = JSON.parse(manifestJson);
2460
2521
  surfaceManifestDiagnostics(manifest, opts.warn, {
2461
2522
  strict: opts.strict,
2462
- prepend: [...collectSelectorAliasDiagnostics(opts.system.selectorAliasesJson), ...opts.extraDiagnostics ?? []]
2523
+ prepend: [
2524
+ ...collectSelectorAliasDiagnostics(opts.system.selectorAliasesJson),
2525
+ ...systemLoadDiagnostics(opts.system),
2526
+ ...opts.extraDiagnostics ?? []
2527
+ ]
2463
2528
  });
2464
2529
  const parseMs = Math.round(performance.now() - t);
2465
2530
  return {
@@ -2519,6 +2584,11 @@ function serializeStaticCss(config) {
2519
2584
  }
2520
2585
  //#endregion
2521
2586
  //#region pipeline/prefix.ts
2587
+ /** Prefix variable references without changing their matching rules. */
2588
+ function prefixVariableReferences(prefix, value) {
2589
+ if (!prefix) return value;
2590
+ return value.replace(/var\(--([a-zA-Z][\w-]*)\)/g, `var(--${prefix}-$1)`);
2591
+ }
2522
2592
  function applyPrefix(prefix, variableMapJson, variableCss, themeJson, contextualVarsJson) {
2523
2593
  if (!prefix) return {
2524
2594
  variableMapJson,
@@ -2526,18 +2596,18 @@ function applyPrefix(prefix, variableMapJson, variableCss, themeJson, contextual
2526
2596
  themeJson,
2527
2597
  contextualVarsJson
2528
2598
  };
2529
- const varRefRe = /var\(--([a-zA-Z][\w-]*)\)/g;
2530
2599
  const map = JSON.parse(variableMapJson);
2531
2600
  const prefixed = {};
2532
2601
  for (const [key, varName] of Object.entries(map)) prefixed[key] = varName.startsWith("--") ? `--${prefix}-${varName.slice(2)}` : varName;
2533
2602
  let css = variableCss;
2534
2603
  css = css.replace(/--([a-zA-Z][\w-]*)\s*:/g, `--${prefix}-$1:`);
2535
- css = css.replace(varRefRe, `var(--${prefix}-$1)`);
2604
+ css = prefixVariableReferences(prefix, css);
2605
+ css = css.replace(/@property(\s+)--([a-zA-Z][\w-]*)/g, `@property$1--${prefix}-$2`);
2536
2606
  const result = {
2537
2607
  variableMapJson: JSON.stringify(prefixed),
2538
2608
  variableCss: css
2539
2609
  };
2540
- if (themeJson) result.themeJson = themeJson.replace(varRefRe, `var(--${prefix}-$1)`);
2610
+ if (themeJson) result.themeJson = prefixVariableReferences(prefix, themeJson);
2541
2611
  if (contextualVarsJson) {
2542
2612
  const ctxVars = JSON.parse(contextualVarsJson);
2543
2613
  const prefixedCtx = {};
@@ -2547,6 +2617,88 @@ function applyPrefix(prefix, variableMapJson, variableCss, themeJson, contextual
2547
2617
  return result;
2548
2618
  }
2549
2619
  //#endregion
2620
+ //#region pipeline/property-registrations.ts
2621
+ const PROPERTY_RULE = /@property\s+(--[\w-]+)\s*\{[^}]*\}\n?/g;
2622
+ /** The data types a registration's `syntax` may name. */
2623
+ const SYNTAX_TYPES = /* @__PURE__ */ new Set([
2624
+ "angle",
2625
+ "color",
2626
+ "custom-ident",
2627
+ "image",
2628
+ "integer",
2629
+ "length",
2630
+ "length-percentage",
2631
+ "number",
2632
+ "percentage",
2633
+ "resolution",
2634
+ "string",
2635
+ "time",
2636
+ "transform-function",
2637
+ "transform-list",
2638
+ "url"
2639
+ ]);
2640
+ const SYNTAX_COMPONENT = /^(?:<([a-z-]+)>[+#]?|-?[a-zA-Z_][\w-]*)$/;
2641
+ /** The syntax types whose values can carry a font- or container-relative
2642
+ * unit, which makes a typed initial value depend on context. */
2643
+ const DIMENSION_TYPES = /* @__PURE__ */ new Set([
2644
+ "image",
2645
+ "length",
2646
+ "length-percentage",
2647
+ "transform-function",
2648
+ "transform-list"
2649
+ ]);
2650
+ const RELATIVE_UNIT = /(?:\d|\.)(?:r?em|r?ex|r?cap|r?ch|r?ic|r?lh|cq(?:w|h|i|b|min|max))\b/i;
2651
+ const SUBSTITUTION = /\b(?:var|env|attr)\(/i;
2652
+ /** Quoted strings and `url()` hold text, never units or substitutions. */
2653
+ const LITERAL_TEXT = /"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|url\([^)]*\)/gi;
2654
+ /**
2655
+ * Removes the `@property` rules browsers would ignore — an unknown syntax
2656
+ * component, a syntax other than `*` without an initial value, an initial
2657
+ * value that depends on context, or one the syntax does not accept.
2658
+ * Minifying a stylesheet that contains such a rule can also fail.
2659
+ */
2660
+ function splitInvalidPropertyRegistrations(css) {
2661
+ const invalid = [];
2662
+ return {
2663
+ css: css.replace(PROPERTY_RULE, (rule, name) => {
2664
+ const reason = registrationFailure(rule);
2665
+ if (reason === null) return rule;
2666
+ invalid.push({
2667
+ name,
2668
+ reason
2669
+ });
2670
+ return "";
2671
+ }),
2672
+ invalid
2673
+ };
2674
+ }
2675
+ function registrationFailure(rule) {
2676
+ const syntax = /syntax:\s*"([^"]*)"/.exec(rule)?.[1]?.trim() ?? "";
2677
+ const initialValue = /initial-value\s*:\s*([^;}]*)/.exec(rule)?.[1]?.trim();
2678
+ if (syntax !== "*") {
2679
+ const components = syntax.split("|").map((component) => ({
2680
+ text: component.trim(),
2681
+ match: SYNTAX_COMPONENT.exec(component.trim())
2682
+ }));
2683
+ const unknown = components.find(({ match }) => match === null || match[1] !== void 0 && !SYNTAX_TYPES.has(match[1]));
2684
+ if (unknown !== void 0) return `syntax "${syntax}" has the unknown component "${unknown.text}"`;
2685
+ if (initialValue === void 0) return `syntax "${syntax}" needs an initialValue`;
2686
+ const dimensional = components.some(({ match }) => match?.[1] !== void 0 && DIMENSION_TYPES.has(match[1]));
2687
+ const value = initialValue.replace(LITERAL_TEXT, "");
2688
+ if (SUBSTITUTION.test(value) || dimensional && RELATIVE_UNIT.test(value)) return `initialValue "${initialValue}" depends on context; font- and container-relative units and var(), env() and attr() are not allowed`;
2689
+ }
2690
+ try {
2691
+ (0, lightningcss.transform)({
2692
+ filename: "animus-registrations.css",
2693
+ code: Buffer.from(rule)
2694
+ });
2695
+ return null;
2696
+ } catch (error) {
2697
+ const detail = error instanceof Error ? error.message : String(error);
2698
+ return `the CSS parser rejects \`${rule.trim()}\` (${detail})`;
2699
+ }
2700
+ }
2701
+ //#endregion
2550
2702
  //#region pipeline/system-config.ts
2551
2703
  /**
2552
2704
  * Load and normalize a SystemInstance; `prefix` namespaces every CSS
@@ -2557,16 +2709,19 @@ function loadSystemConfig(engineApi, opts) {
2557
2709
  const config = loadSystemModule(opts.systemPath, opts.rootDir);
2558
2710
  let scalesJson = config.scalesJson;
2559
2711
  let variableMapJson = config.variableMapJson;
2560
- let variableCss = config.variableCss;
2712
+ const registrations = splitInvalidPropertyRegistrations(config.variableCss);
2713
+ let variableCss = registrations.css;
2561
2714
  let contextualVarsJson = config.contextualVarsJson || null;
2715
+ let declarationScalesJson = config.declarationScalesJson || null;
2562
2716
  if (opts.prefix) {
2563
2717
  const prefixed = applyPrefix(opts.prefix, variableMapJson, variableCss, scalesJson, contextualVarsJson || void 0);
2564
2718
  variableMapJson = prefixed.variableMapJson;
2565
2719
  variableCss = prefixed.variableCss;
2566
2720
  if (prefixed.themeJson) scalesJson = prefixed.themeJson;
2567
2721
  if (prefixed.contextualVarsJson) contextualVarsJson = prefixed.contextualVarsJson;
2722
+ if (declarationScalesJson) declarationScalesJson = prefixVariableReferences(opts.prefix, declarationScalesJson);
2568
2723
  }
2569
- return {
2724
+ const system = {
2570
2725
  propConfigJson: config.propConfig,
2571
2726
  groupRegistryJson: config.groupRegistry,
2572
2727
  scalesJson,
@@ -2576,12 +2731,16 @@ function loadSystemConfig(engineApi, opts) {
2576
2731
  selectorAliasesJson: config.selectorAliases || null,
2577
2732
  conditionAliasesJson: config.conditionAliases || null,
2578
2733
  transformSourcesJson: config.transformSources || null,
2734
+ transformProvenanceJson: config.transformProvenance || null,
2579
2735
  globalStyleBlocksJson: config.globalStyleBlocks || null,
2580
2736
  keyframesJson: config.keyframesBlocks || null,
2581
2737
  vocabularyWitnessesJson: config.vocabularyWitnesses || null,
2582
2738
  dependencies: config.dependencies ?? [],
2583
2739
  sourceThemeManifestsJson: config.sourceThemeManifests || null
2584
2740
  };
2741
+ if (declarationScalesJson) system.declarationScalesJson = declarationScalesJson;
2742
+ if (registrations.invalid.length > 0) system.invalidPropertyRegistrations = registrations.invalid;
2743
+ return system;
2585
2744
  }
2586
2745
  //#endregion
2587
2746
  //#region pipeline/structural-self-check.ts
@@ -2611,6 +2770,16 @@ function runStructuralSelfCheck(input) {
2611
2770
  function buildDynamicPropConfig(dynamicProps) {
2612
2771
  const configEntries = {};
2613
2772
  for (const [propName, meta] of Object.entries(dynamicProps)) {
2773
+ if (meta.kind === "declarations") {
2774
+ if (!meta.slotClass || !meta.memberVars || !meta.declarationScaleValues) throw new Error(`buildDynamicPropConfig: declaration prop '${propName}' carries no member metadata — expected slotClass, memberVars and declarationScaleValues.`);
2775
+ configEntries[propName] = {
2776
+ kind: meta.kind,
2777
+ slotClass: meta.slotClass,
2778
+ memberVars: meta.memberVars,
2779
+ declarationScaleValues: meta.declarationScaleValues
2780
+ };
2781
+ continue;
2782
+ }
2614
2783
  if (!meta.varName || !meta.slotClass) throw new Error(`buildDynamicPropConfig: dynamic prop '${propName}' carries no slot metadata — expected varName and slotClass, got keys [${Object.keys(meta).join(", ")}].`);
2615
2784
  const entry = {
2616
2785
  varName: meta.varName,
@@ -2619,16 +2788,39 @@ function buildDynamicPropConfig(dynamicProps) {
2619
2788
  if (meta.property) entry.property = meta.property;
2620
2789
  if (meta.properties && meta.properties.length > 0) entry.properties = meta.properties;
2621
2790
  if (meta.transformName) entry.transformName = meta.transformName;
2791
+ if (meta.transformId) entry.transformId = meta.transformId;
2622
2792
  if (meta.scaleValues && Object.keys(meta.scaleValues).length > 0) entry.scaleValues = meta.scaleValues;
2793
+ if (meta.negative) entry.negative = true;
2794
+ if (meta.strict) entry.strict = true;
2795
+ if (meta.keywords?.length) entry.keywords = meta.keywords;
2623
2796
  configEntries[propName] = entry;
2624
2797
  }
2625
2798
  return configEntries;
2626
2799
  }
2627
2800
  //#endregion
2628
2801
  //#region pipeline/system-props-module.ts
2802
+ /** Compiles the exact entry text in strict mode, the mode of the ES module it
2803
+ * lands in, without evaluating it: one malformed entry would otherwise fail
2804
+ * the whole module. */
2805
+ function parsesAsEntry(entry) {
2806
+ try {
2807
+ Function(`'use strict'; return {\n${entry}};`);
2808
+ return true;
2809
+ } catch {
2810
+ return false;
2811
+ }
2812
+ }
2813
+ /** Delivers the loaded system's configured transform sources that analysis
2814
+ * admitted, keyed by definition and wrapped as `({source})` like the
2815
+ * build-time evaluator registers them. Static evaluation uses the same
2816
+ * definitions, so a same-named project declaration reaches neither path. */
2817
+ function transformsSource(admittedTransforms) {
2818
+ const entries = Object.entries(admittedTransforms).sort(([a], [b]) => a < b ? -1 : 1).map(([name, source]) => ` ${JSON.stringify(name)}: (${source}),\n`).filter(parsesAsEntry);
2819
+ return entries.length > 0 ? `{\n${entries.join("")}}` : "{}";
2820
+ }
2629
2821
  function buildSystemPropsModule(opts) {
2630
2822
  const dynamicPropConfig = buildDynamicPropConfig(opts.dynamicProps);
2631
- return `export const systemPropMap = ${opts.systemPropMapJson};\nexport const systemPropGroups = ${opts.groupRegistryJson};\nexport const dynamicPropConfig = ${JSON.stringify(dynamicPropConfig)};\nexport const transforms = ${opts.transformsSource ?? "{}"};\n`;
2823
+ return `export const systemPropMap = ${opts.systemPropMapJson};\nexport const systemPropGroups = ${opts.groupRegistryJson};\nexport const dynamicPropConfig = ${JSON.stringify(dynamicPropConfig)};\nexport const transforms = ${transformsSource(opts.admittedTransforms)};\n` + (opts.typedSystemProps.length > 0 ? `export const typedSystemProps = ${JSON.stringify(opts.typedSystemProps)};\n` : "");
2632
2824
  }
2633
2825
  //#endregion
2634
2826
  //#region pipeline/timing-waterfall.ts
@@ -2964,6 +3156,12 @@ Object.defineProperty(exports, "ENGINE_TRANSFORM_EXTENSIONS", {
2964
3156
  return ENGINE_TRANSFORM_EXTENSIONS;
2965
3157
  }
2966
3158
  });
3159
+ Object.defineProperty(exports, "INVALID_PROPERTY_REGISTRATION", {
3160
+ enumerable: true,
3161
+ get: function() {
3162
+ return INVALID_PROPERTY_REGISTRATION;
3163
+ }
3164
+ });
2967
3165
  Object.defineProperty(exports, "REPLACEABLE_DEFAULT_EXCLUDE", {
2968
3166
  enumerable: true,
2969
3167
  get: function() {
@@ -3282,6 +3480,12 @@ Object.defineProperty(exports, "resolveThroughPathAliases", {
3282
3480
  return resolveThroughPathAliases;
3283
3481
  }
3284
3482
  });
3483
+ Object.defineProperty(exports, "resolveVerbosity", {
3484
+ enumerable: true,
3485
+ get: function() {
3486
+ return resolveVerbosity;
3487
+ }
3488
+ });
3285
3489
  Object.defineProperty(exports, "runProjectAnalysis", {
3286
3490
  enumerable: true,
3287
3491
  get: function() {
@@ -3342,6 +3546,12 @@ Object.defineProperty(exports, "surfaceManifestDiagnostics", {
3342
3546
  return surfaceManifestDiagnostics;
3343
3547
  }
3344
3548
  });
3549
+ Object.defineProperty(exports, "systemLoadDiagnostics", {
3550
+ enumerable: true,
3551
+ get: function() {
3552
+ return systemLoadDiagnostics;
3553
+ }
3554
+ });
3345
3555
  Object.defineProperty(exports, "toWatchKeys", {
3346
3556
  enumerable: true,
3347
3557
  get: function() {
@@ -64,9 +64,6 @@ export declare class ExtractionSession {
64
64
  private readonly options;
65
65
  private readonly staticCssJson;
66
66
  private system;
67
- /** Vocabulary witness diagnostics from the sealed system's registration
68
- * record, awaiting the shared surfacing pass. */
69
- private systemVocabularyDiagnostics;
70
67
  /** Configured external files that could not be read. Incremental passes
71
68
  * re-collect nothing, so they replay these instead of passing strict. */
72
69
  private ingestionFailureDiagnostics;
@@ -100,6 +97,14 @@ export declare class ExtractionSession {
100
97
  onArtifactWrite: ((name: string, content: string) => void) | null;
101
98
  private statusAttemptId;
102
99
  private statusAttemptOpen;
100
+ /** Message of the aborted-parse rejection holding publication. While set,
101
+ * the cache keeps every observed source so the repair publishes them in
102
+ * one generation; a successful publication clears it. */
103
+ private heldRejection;
104
+ /** A system reload an aborted parse rejected. Its dependency hashes already
105
+ * advanced, so the first batch that passes the parse check publishes
106
+ * through the full pipeline, which loads the latest system. */
107
+ private systemReloadOwed;
103
108
  /** Monotonic readiness witness: flips true on the first complete
104
109
  * publication and never regresses; every later status write carries it. */
105
110
  private firstEmissionComplete;
@@ -136,14 +141,18 @@ export declare class ExtractionSession {
136
141
  /** Resolve the scan configuration from options — the single source of the
137
142
  * exclude/extension policy shared by the full and incremental pipelines. */
138
143
  private resolveScanConfig;
139
- /** One single-flight analysis transaction per event batch: concurrent
140
- * entries join the in-flight promise; each settled entry reports outcome. */
144
+ /** Concurrent entries wait for publication, then ingest their own batch;
145
+ * content hashes coalesce observations the prior analysis covered. */
141
146
  handleWatchUpdate(changes: WatchChanges): Promise<void>;
142
147
  private routeWatchUpdate;
143
- /** Owner-side entry for a batch a non-owning compiler observed. Serializes
144
- * behind any in-flight transaction — it has no other delivery. */
148
+ /** The shared owner gate for local and forwarded batches. Every waiter
149
+ * rechecks the slot so distinct batches publish in arrival order. */
145
150
  ingestForwardedBatch(changes: WatchChanges): Promise<void>;
146
151
  private processWatchUpdate;
152
+ /** An aborted parse fails the attempt in every mode with a terminal
153
+ * `failed` status, so the last commit stays current, and holds publication
154
+ * until an attempt without one publishes. */
155
+ private throwOnAbortedParse;
147
156
  private publishSourceIngestion;
148
157
  /** Full analysis + publication, registered in the one in-flight
149
158
  * transaction slot; a nested reload leaves the enclosing registration. */
@@ -1 +1 @@
1
- {"version":3,"file":"extraction-session.d.ts","sourceRoot":"","sources":["../../session/extraction-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extraction-session.d.ts","sourceRoot":"","sources":["../../session/extraction-session.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,5 @@ export { analysisCommitPath, analysisInputsPath, analysisStatusPath, ANIMUS_ARTI
6
6
  export type { AnalysisCommit, AnalysisStatus, SessionEnvelope, } from './session-paths';
7
7
  export { runSessionPipeline, startTurbopackWatcher, } from './turbopack-orchestrator';
8
8
  export type { TurbopackWatcherHandle, TurbopackWatchOutcome, } from './turbopack-orchestrator';
9
- export { engineApi, getAnalysisStartedPromise, getAnalyzedHashes, getManifestJson, getReplacementEpoch, getSessionArtifactDir, getSharedCss, getSharedExternalDirs, getSharedExternalEntries, getSharedSystemProps, setAnalysisStartedPromise, setSharedEngine, } from './singleton';
9
+ export { engineApi, getAnalysisStartedPromise, getAnalyzedHashes, getManifestJson, getReplacementEpoch, getSessionArtifactDir, getSharedCss, getSharedExternalDirs, getSharedExternalEntries, getSharedSystemProps, resetAnalysisStartedPromise, setAnalysisStartedPromise, setSharedEngine, } from './singleton';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EACL,iBAAiB,EACjB,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,eAAe,EACf,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,eAAe,EACf,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,SAAS,EACT,yBAAyB,EACzB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,eAAe,GAChB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EACL,iBAAiB,EACjB,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,eAAe,EACf,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,eAAe,EACf,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,SAAS,EACT,yBAAyB,EACzB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EACzB,eAAe,GAChB,MAAM,aAAa,CAAC"}