@skmtc/core 0.27.0 → 0.28.1

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 (111) hide show
  1. package/esm/context/CoreContext.d.ts.map +1 -1
  2. package/esm/context/CoreContext.js +4 -2
  3. package/esm/context/GenerateContext.d.ts +16 -2
  4. package/esm/context/GenerateContext.d.ts.map +1 -1
  5. package/esm/context/GenerateContext.js +94 -15
  6. package/esm/context/generateTypes.d.ts +33 -2
  7. package/esm/context/generateTypes.d.ts.map +1 -1
  8. package/esm/dsl/model/ModelDriver.d.ts.map +1 -1
  9. package/esm/dsl/model/ModelDriver.js +1 -2
  10. package/esm/dsl/model/toModelProjectionBase.d.ts +1 -1
  11. package/esm/dsl/model/toModelProjectionBase.d.ts.map +1 -1
  12. package/esm/dsl/model/toModelProjectionBase.js +9 -9
  13. package/esm/dsl/operation/gql/GqlOperationDriver.d.ts.map +1 -1
  14. package/esm/dsl/operation/gql/GqlOperationDriver.js +1 -3
  15. package/esm/dsl/operation/gql/toGqlOperationProjectionBase.d.ts +1 -1
  16. package/esm/dsl/operation/gql/toGqlOperationProjectionBase.d.ts.map +1 -1
  17. package/esm/dsl/operation/gql/toGqlOperationProjectionBase.js +9 -15
  18. package/esm/dsl/operation/oas/OasOperationDriver.d.ts.map +1 -1
  19. package/esm/dsl/operation/oas/OasOperationDriver.js +1 -3
  20. package/esm/dsl/operation/oas/toOasOperationProjectionBase.d.ts +1 -1
  21. package/esm/dsl/operation/oas/toOasOperationProjectionBase.d.ts.map +1 -1
  22. package/esm/dsl/operation/oas/toOasOperationProjectionBase.js +9 -15
  23. package/esm/dsl/webhook/WebhookDriver.d.ts.map +1 -1
  24. package/esm/dsl/webhook/WebhookDriver.js +1 -3
  25. package/esm/dsl/webhook/toWebhookProjectionBase.d.ts +1 -1
  26. package/esm/dsl/webhook/toWebhookProjectionBase.d.ts.map +1 -1
  27. package/esm/dsl/webhook/toWebhookProjectionBase.js +9 -15
  28. package/esm/enrichments/EnrichmentAudit.d.ts +79 -0
  29. package/esm/enrichments/EnrichmentAudit.d.ts.map +1 -0
  30. package/esm/enrichments/EnrichmentAudit.js +210 -0
  31. package/esm/enrichments/EnrichmentWarning.d.ts +72 -0
  32. package/esm/enrichments/EnrichmentWarning.d.ts.map +1 -0
  33. package/esm/enrichments/EnrichmentWarning.js +50 -0
  34. package/esm/enrichments/findUnknownKeys.d.ts +40 -0
  35. package/esm/enrichments/findUnknownKeys.d.ts.map +1 -0
  36. package/esm/enrichments/findUnknownKeys.js +80 -0
  37. package/esm/enrichments/parseEnrichmentUmbrella.d.ts +63 -0
  38. package/esm/enrichments/parseEnrichmentUmbrella.d.ts.map +1 -0
  39. package/esm/enrichments/parseEnrichmentUmbrella.js +66 -0
  40. package/esm/enrichments/toEnrichmentDescriptor.d.ts.map +1 -1
  41. package/esm/enrichments/toEnrichmentDescriptor.js +1 -20
  42. package/esm/enrichments/valibotShape.d.ts +51 -0
  43. package/esm/enrichments/valibotShape.d.ts.map +1 -0
  44. package/esm/enrichments/valibotShape.js +37 -0
  45. package/esm/helpers/nearestKey.d.ts +18 -0
  46. package/esm/helpers/nearestKey.d.ts.map +1 -0
  47. package/esm/helpers/nearestKey.js +60 -0
  48. package/esm/mod.d.ts +2 -0
  49. package/esm/mod.d.ts.map +1 -1
  50. package/esm/mod.js +2 -0
  51. package/esm/run/toArtifacts.d.ts.map +1 -1
  52. package/esm/run/toArtifacts.js +2 -1
  53. package/esm/types/Manifest.d.ts +9 -0
  54. package/esm/types/Manifest.d.ts.map +1 -1
  55. package/esm/types/Manifest.js +2 -0
  56. package/package.json +1 -1
  57. package/script/context/CoreContext.d.ts.map +1 -1
  58. package/script/context/CoreContext.js +4 -2
  59. package/script/context/GenerateContext.d.ts +16 -2
  60. package/script/context/GenerateContext.d.ts.map +1 -1
  61. package/script/context/GenerateContext.js +94 -15
  62. package/script/context/generateTypes.d.ts +33 -2
  63. package/script/context/generateTypes.d.ts.map +1 -1
  64. package/script/dsl/model/ModelDriver.d.ts.map +1 -1
  65. package/script/dsl/model/ModelDriver.js +1 -5
  66. package/script/dsl/model/toModelProjectionBase.d.ts +1 -1
  67. package/script/dsl/model/toModelProjectionBase.d.ts.map +1 -1
  68. package/script/dsl/model/toModelProjectionBase.js +9 -45
  69. package/script/dsl/operation/gql/GqlOperationDriver.d.ts.map +1 -1
  70. package/script/dsl/operation/gql/GqlOperationDriver.js +1 -6
  71. package/script/dsl/operation/gql/toGqlOperationProjectionBase.d.ts +1 -1
  72. package/script/dsl/operation/gql/toGqlOperationProjectionBase.d.ts.map +1 -1
  73. package/script/dsl/operation/gql/toGqlOperationProjectionBase.js +9 -51
  74. package/script/dsl/operation/oas/OasOperationDriver.d.ts.map +1 -1
  75. package/script/dsl/operation/oas/OasOperationDriver.js +1 -6
  76. package/script/dsl/operation/oas/toOasOperationProjectionBase.d.ts +1 -1
  77. package/script/dsl/operation/oas/toOasOperationProjectionBase.d.ts.map +1 -1
  78. package/script/dsl/operation/oas/toOasOperationProjectionBase.js +9 -51
  79. package/script/dsl/webhook/WebhookDriver.d.ts.map +1 -1
  80. package/script/dsl/webhook/WebhookDriver.js +1 -6
  81. package/script/dsl/webhook/toWebhookProjectionBase.d.ts +1 -1
  82. package/script/dsl/webhook/toWebhookProjectionBase.d.ts.map +1 -1
  83. package/script/dsl/webhook/toWebhookProjectionBase.js +9 -51
  84. package/script/enrichments/EnrichmentAudit.d.ts +79 -0
  85. package/script/enrichments/EnrichmentAudit.d.ts.map +1 -0
  86. package/script/enrichments/EnrichmentAudit.js +215 -0
  87. package/script/enrichments/EnrichmentWarning.d.ts +72 -0
  88. package/script/enrichments/EnrichmentWarning.d.ts.map +1 -0
  89. package/script/enrichments/EnrichmentWarning.js +87 -0
  90. package/script/enrichments/findUnknownKeys.d.ts +40 -0
  91. package/script/enrichments/findUnknownKeys.d.ts.map +1 -0
  92. package/script/enrichments/findUnknownKeys.js +84 -0
  93. package/script/enrichments/parseEnrichmentUmbrella.d.ts +63 -0
  94. package/script/enrichments/parseEnrichmentUmbrella.d.ts.map +1 -0
  95. package/script/enrichments/parseEnrichmentUmbrella.js +103 -0
  96. package/script/enrichments/toEnrichmentDescriptor.d.ts.map +1 -1
  97. package/script/enrichments/toEnrichmentDescriptor.js +10 -29
  98. package/script/enrichments/valibotShape.d.ts +51 -0
  99. package/script/enrichments/valibotShape.d.ts.map +1 -0
  100. package/script/enrichments/valibotShape.js +44 -0
  101. package/script/helpers/nearestKey.d.ts +18 -0
  102. package/script/helpers/nearestKey.d.ts.map +1 -0
  103. package/script/helpers/nearestKey.js +64 -0
  104. package/script/mod.d.ts +2 -0
  105. package/script/mod.d.ts.map +1 -1
  106. package/script/mod.js +2 -0
  107. package/script/run/toArtifacts.d.ts.map +1 -1
  108. package/script/run/toArtifacts.js +2 -1
  109. package/script/types/Manifest.d.ts +9 -0
  110. package/script/types/Manifest.d.ts.map +1 -1
  111. package/script/types/Manifest.js +2 -0
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview The shared umbrella-parse seam for the projection-base
4
+ * factories.
5
+ *
6
+ * Every `static toEnrichments` — OAS operation, webhook, GQL operation,
7
+ * model — assembles the same `{ subject, generator, stack }` umbrella
8
+ * from three storage spots and parses it through the generator's
9
+ * composite schema. This helper centralizes that assembly so both
10
+ * enrichment-validation mechanisms ride one seam:
11
+ *
12
+ * - the reads go through `context.readEnrichment` — the recording
13
+ * accessor feeding the consumption audit (`EnrichmentAudit`);
14
+ * - the raw values are diffed against the schema (`findUnknownKeys`)
15
+ * and dropped keys surface as `UNKNOWN_ENRICHMENT_KEY` warnings.
16
+ *
17
+ * The `stack` scope is exempt from unknown-key detection: it is a single
18
+ * bag shared by every generator in the composition, and each consumer
19
+ * declares only the fields it reads — keys other generators own are
20
+ * expected, not typos.
21
+ *
22
+ * A wrong-typed value still throws exactly as before — the `v.parse` at
23
+ * the end is unchanged, and unknown-key detection runs first so a
24
+ * throwing leaf doesn't hide a dropped key.
25
+ *
26
+ * @module parseEnrichmentUmbrella
27
+ */
28
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
29
+ if (k2 === undefined) k2 = k;
30
+ var desc = Object.getOwnPropertyDescriptor(m, k);
31
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
32
+ desc = { enumerable: true, get: function() { return m[k]; } };
33
+ }
34
+ Object.defineProperty(o, k2, desc);
35
+ }) : (function(o, m, k, k2) {
36
+ if (k2 === undefined) k2 = k;
37
+ o[k2] = m[k];
38
+ }));
39
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
40
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
41
+ }) : function(o, v) {
42
+ o["default"] = v;
43
+ });
44
+ var __importStar = (this && this.__importStar) || (function () {
45
+ var ownKeys = function(o) {
46
+ ownKeys = Object.getOwnPropertyNames || function (o) {
47
+ var ar = [];
48
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
49
+ return ar;
50
+ };
51
+ return ownKeys(o);
52
+ };
53
+ return function (mod) {
54
+ if (mod && mod.__esModule) return mod;
55
+ var result = {};
56
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
57
+ __setModuleDefault(result, mod);
58
+ return result;
59
+ };
60
+ })();
61
+ Object.defineProperty(exports, "__esModule", { value: true });
62
+ exports.parseEnrichmentUmbrella = void 0;
63
+ const v = __importStar(require("valibot"));
64
+ const Enrichments_js_1 = require("../types/Enrichments.js");
65
+ const findUnknownKeys_js_1 = require("./findUnknownKeys.js");
66
+ const EnrichmentWarning_js_1 = require("./EnrichmentWarning.js");
67
+ /**
68
+ * Assemble and parse one `{ subject, generator, stack }` enrichment
69
+ * umbrella, recording the reads for the consumption audit and reporting
70
+ * schema-dropped keys.
71
+ *
72
+ * @throws on a wrong-typed value, exactly like the raw `v.parse` this
73
+ * wraps — the generator's item is then recorded as `error` and the run
74
+ * continues (fail-open).
75
+ */
76
+ const parseEnrichmentUmbrella = ({ context, generatorId, subjectSegments, schema }) => {
77
+ const raw = {
78
+ subject: context.readEnrichment([generatorId, ...subjectSegments]),
79
+ generator: context.readEnrichment([generatorId, Enrichments_js_1.GENERATOR_ENRICHMENT_KEY]),
80
+ stack: context.readEnrichment([Enrichments_js_1.STACK_ENRICHMENT_KEY])
81
+ };
82
+ // Diff the generator-owned scopes against the schema (stack excluded —
83
+ // shared bag). Walking the umbrella keeps the scope schemas attributed
84
+ // without reaching into the composite's entries.
85
+ const unknownKeys = (0, findUnknownKeys_js_1.findUnknownKeys)(schema, { subject: raw.subject, generator: raw.generator });
86
+ for (const { path, suggestion } of unknownKeys) {
87
+ const [scope, ...leafPath] = path;
88
+ const routingPath = scope === 'subject'
89
+ ? [generatorId, ...subjectSegments, ...leafPath]
90
+ : [generatorId, Enrichments_js_1.GENERATOR_ENRICHMENT_KEY, ...leafPath];
91
+ context.reportEnrichmentWarning({
92
+ level: 'warning',
93
+ type: 'UNKNOWN_ENRICHMENT_KEY',
94
+ path: routingPath,
95
+ message: `unknown enrichment key '${routingPath[routingPath.length - 1]}' at ` +
96
+ `'${(0, EnrichmentWarning_js_1.formatEnrichmentPath)(routingPath.slice(0, -1))}' — ignored` +
97
+ (suggestion !== undefined ? ` (did you mean '${suggestion}'?)` : ''),
98
+ ...(suggestion !== undefined ? { suggestion } : {})
99
+ });
100
+ }
101
+ return v.parse(schema, raw);
102
+ };
103
+ exports.parseEnrichmentUmbrella = parseEnrichmentUmbrella;
@@ -1 +1 @@
1
- {"version":3,"file":"toEnrichmentDescriptor.d.ts","sourceRoot":"","sources":["../../src/enrichments/toEnrichmentDescriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,SAAS,CAAA;AAGjC;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAA;IACX,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,8BAA8B;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB,GACD;IACE,IAAI,EAAE,cAAc,CAAA;IACpB;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAA;CACnB,GACD;IACE,IAAI,EAAE,OAAO,CAAA;IACb,0BAA0B;IAC1B,IAAI,EAAE,eAAe,CAAA;CACtB,GACD;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,kCAAkC;IAClC,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B,CAAA;AAEL;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,oBAAoB,CAAA;AAExE,sEAAsE;AACtE,MAAM,MAAM,mBAAmB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;AAEzD,iFAAiF;AACjF,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAA;AAE3D;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,WAAW,CAAA;IACxB;;;;;OAKG;IACH,eAAe,EAAE,OAAO,CAAA;IACxB,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,GAAG,OAAO,GAAG,SAAS,CAAA;IACpE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,aAAa,CAAA;IACnD;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,OAAO,CAAA;CACxC,CAAA;AAqJD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,CAAC,CAAC,aAAa,GAAG,SAAS,KAAG,eAAe,EAKvF,CAAA;AAsBD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,gBAAgB,KAAG,oBAK/D,CAAA"}
1
+ {"version":3,"file":"toEnrichmentDescriptor.d.ts","sourceRoot":"","sources":["../../src/enrichments/toEnrichmentDescriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,SAAS,CAAA;AAUjC;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAA;IACX,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,8BAA8B;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB,GACD;IACE,IAAI,EAAE,cAAc,CAAA;IACpB;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAA;CACnB,GACD;IACE,IAAI,EAAE,OAAO,CAAA;IACb,0BAA0B;IAC1B,IAAI,EAAE,eAAe,CAAA;CACtB,GACD;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,kCAAkC;IAClC,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B,CAAA;AAEL;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,oBAAoB,CAAA;AAExE,sEAAsE;AACtE,MAAM,MAAM,mBAAmB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;AAEzD,iFAAiF;AACjF,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAA;AAE3D;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,WAAW,CAAA;IACxB;;;;;OAKG;IACH,eAAe,EAAE,OAAO,CAAA;IACxB,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,GAAG,OAAO,GAAG,SAAS,CAAA;IACpE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,aAAa,CAAA;IACnD;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,OAAO,CAAA;CACxC,CAAA;AAwGD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,CAAC,CAAC,aAAa,GAAG,SAAS,KAAG,eAAe,EAKvF,CAAA;AAsBD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,gBAAgB,KAAG,oBAK/D,CAAA"}
@@ -2,27 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toEnrichmentDescriptor = exports.toEnrichmentFields = void 0;
4
4
  const ModuleSelect_js_1 = require("../types/ModuleSelect.js");
5
- const isValibotSchema = (input) => typeof input === 'object' &&
6
- input !== null &&
7
- 'type' in input &&
8
- typeof input.type === 'string';
9
- const isEntriesRecord = (input) => typeof input === 'object' && input !== null;
5
+ const valibotShape_js_1 = require("./valibotShape.js");
10
6
  const isOptionsArray = (input) => Array.isArray(input);
11
- const WRAPPER_TYPES = new Set(['optional', 'nullable', 'nullish']);
12
- const unwrap = (schema) => {
13
- if (WRAPPER_TYPES.has(schema.type) && isValibotSchema(schema.wrapped)) {
14
- return { inner: schema.wrapped, optional: true };
15
- }
16
- return { inner: schema, optional: false };
17
- };
18
- /**
19
- * A `v.pipe(base, …actions)` schema spreads `base` and adds a `pipe` array
20
- * whose first element IS the original base schema. The `moduleSelect`
21
- * registry lookup must therefore also check the pipe's base, or piping a
22
- * moduleSelect through metadata (`v.title(…)`) would silently demote it to
23
- * a generic object widget.
24
- */
25
- const baseOf = (schema) => Array.isArray(schema.pipe) && isValibotSchema(schema.pipe[0]) ? schema.pipe[0] : schema;
26
7
  /** The `v.title(…)` metadata riding a piped schema, if any — the field label. */
27
8
  const titleOf = (schema) => {
28
9
  if (!Array.isArray(schema.pipe))
@@ -49,7 +30,7 @@ const titleOf = (schema) => {
49
30
  * rule is structural — it names no scope, so it composes with the generic
50
31
  * object walk rather than special-casing `subject` / `generator` / `stack`.
51
32
  */
52
- const isOmittedMember = (rawSchema) => isValibotSchema(rawSchema) && unwrap(rawSchema).inner.type === 'undefined';
33
+ const isOmittedMember = (rawSchema) => (0, valibotShape_js_1.isValibotSchema)(rawSchema) && (0, valibotShape_js_1.unwrap)(rawSchema).inner.type === 'undefined';
53
34
  const toLabel = (key) => {
54
35
  if (key === '')
55
36
  return '';
@@ -57,7 +38,7 @@ const toLabel = (key) => {
57
38
  return spaced.charAt(0).toUpperCase() + spaced.slice(1);
58
39
  };
59
40
  const typeFor = (schema) => {
60
- const moduleType = (0, ModuleSelect_js_1.moduleTypeOf)(schema) ?? (0, ModuleSelect_js_1.moduleTypeOf)(baseOf(schema));
41
+ const moduleType = (0, ModuleSelect_js_1.moduleTypeOf)(schema) ?? (0, ModuleSelect_js_1.moduleTypeOf)((0, valibotShape_js_1.baseOf)(schema));
61
42
  if (moduleType !== undefined) {
62
43
  return { type: 'moduleSelect', moduleType };
63
44
  }
@@ -73,14 +54,14 @@ const typeFor = (schema) => {
73
54
  return { type: 'select', options: opts };
74
55
  }
75
56
  case 'object': {
76
- const entries = isEntriesRecord(schema.entries) ? schema.entries : {};
57
+ const entries = (0, valibotShape_js_1.isEntriesRecord)(schema.entries) ? schema.entries : {};
77
58
  return {
78
59
  type: 'object',
79
60
  fields: walkEntries(entries)
80
61
  };
81
62
  }
82
63
  case 'array': {
83
- if (isValibotSchema(schema.item)) {
64
+ if ((0, valibotShape_js_1.isValibotSchema)(schema.item)) {
84
65
  return { type: 'array', item: walkFromShape('', schema.item) };
85
66
  }
86
67
  // An unrecognisable item schema degrades to a text item — consistent
@@ -92,14 +73,14 @@ const typeFor = (schema) => {
92
73
  }
93
74
  };
94
75
  const walkFromShape = (key, rawSchema) => {
95
- const { inner, optional } = unwrap(rawSchema);
76
+ const { inner, optional } = (0, valibotShape_js_1.unwrap)(rawSchema);
96
77
  // A `v.title(…)` label wins over the key-derived one; the title may ride
97
78
  // the schema itself or sit inside an optional wrapper.
98
79
  const label = titleOf(inner) ?? titleOf(rawSchema) ?? toLabel(key);
99
80
  return { key, label, optional, ...typeFor(inner) };
100
81
  };
101
82
  const walkField = (key, rawSchema) => {
102
- if (!isValibotSchema(rawSchema)) {
83
+ if (!(0, valibotShape_js_1.isValibotSchema)(rawSchema)) {
103
84
  return { key, label: toLabel(key), optional: false, type: 'text' };
104
85
  }
105
86
  return walkFromShape(key, rawSchema);
@@ -134,10 +115,10 @@ const walkEntries = (entries) => Object.keys(entries)
134
115
  * when only the field shape is needed.
135
116
  */
136
117
  const toEnrichmentFields = (schema) => {
137
- if (!isValibotSchema(schema))
118
+ if (!(0, valibotShape_js_1.isValibotSchema)(schema))
138
119
  return [];
139
- const { inner } = unwrap(schema);
140
- if (inner.type !== 'object' || !isEntriesRecord(inner.entries))
120
+ const { inner } = (0, valibotShape_js_1.unwrap)(schema);
121
+ if (inner.type !== 'object' || !(0, valibotShape_js_1.isEntriesRecord)(inner.entries))
141
122
  return [];
142
123
  return walkEntries(inner.entries);
143
124
  };
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @fileoverview Structural view of Valibot schemas as observed at runtime.
3
+ *
4
+ * Valibot's declared `GenericSchema` is opaque (intentionally a black box
5
+ * for parse calls) but the runtime objects expose tagged-union shape via
6
+ * `type` plus the wrapper / container properties below. The walkers that
7
+ * traverse generator enrichment schemas — `toEnrichmentDescriptor` (form
8
+ * projection) and `findUnknownKeys` (dropped-key detection) — narrow into
9
+ * this view once at each entry point and stay inside it.
10
+ *
11
+ * @module valibotShape
12
+ */
13
+ import type * as v from 'valibot';
14
+ /**
15
+ * The runtime shape of a Valibot schema node. `wrapped` carries the inner
16
+ * schema of `optional` / `nullable` / `nullish` wrappers; `entries` the
17
+ * member schemas of an `object`; `item` an `array`'s element schema;
18
+ * `key` / `value` a `record`'s key and value schemas; `options` a
19
+ * `picklist` / union's choices; `pipe` a `v.pipe(...)`'s action chain
20
+ * (whose first element is the base schema).
21
+ */
22
+ export type ValibotSchemaShape = {
23
+ readonly type: string;
24
+ readonly wrapped?: unknown;
25
+ readonly entries?: unknown;
26
+ readonly item?: unknown;
27
+ readonly key?: unknown;
28
+ readonly value?: unknown;
29
+ readonly options?: unknown;
30
+ readonly pipe?: unknown;
31
+ };
32
+ export declare const isValibotSchema: (input: unknown) => input is ValibotSchemaShape;
33
+ export declare const isEntriesRecord: (input: unknown) => input is Record<string, v.GenericSchema>;
34
+ /**
35
+ * Strip a single `optional` / `nullable` / `nullish` wrapper, reporting
36
+ * whether one was present. Wrappers don't nest in practice (a schema is
37
+ * declared optional once), so one level suffices.
38
+ */
39
+ export declare const unwrap: (schema: ValibotSchemaShape) => {
40
+ inner: ValibotSchemaShape;
41
+ optional: boolean;
42
+ };
43
+ /**
44
+ * A `v.pipe(base, …actions)` schema spreads `base` and adds a `pipe` array
45
+ * whose first element IS the original base schema. Lookups keyed on schema
46
+ * *identity* (e.g. the `moduleSelect` registry) must therefore also check
47
+ * the pipe's base, or piping a schema through metadata (`v.title(…)`)
48
+ * would silently break the lookup.
49
+ */
50
+ export declare const baseOf: (schema: ValibotSchemaShape) => ValibotSchemaShape;
51
+ //# sourceMappingURL=valibotShape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valibotShape.d.ts","sourceRoot":"","sources":["../../src/enrichments/valibotShape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,CAAC,MAAM,SAAS,CAAA;AAEjC;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,kBAIH,CAAA;AAEvD,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,CAC3C,CAAA;AAI7C;;;;GAIG;AACH,eAAO,MAAM,MAAM,GACjB,QAAQ,kBAAkB,KACzB;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAKhD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,GAAI,QAAQ,kBAAkB,KAAG,kBACqC,CAAA"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Structural view of Valibot schemas as observed at runtime.
4
+ *
5
+ * Valibot's declared `GenericSchema` is opaque (intentionally a black box
6
+ * for parse calls) but the runtime objects expose tagged-union shape via
7
+ * `type` plus the wrapper / container properties below. The walkers that
8
+ * traverse generator enrichment schemas — `toEnrichmentDescriptor` (form
9
+ * projection) and `findUnknownKeys` (dropped-key detection) — narrow into
10
+ * this view once at each entry point and stay inside it.
11
+ *
12
+ * @module valibotShape
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.baseOf = exports.unwrap = exports.isEntriesRecord = exports.isValibotSchema = void 0;
16
+ const isValibotSchema = (input) => typeof input === 'object' &&
17
+ input !== null &&
18
+ 'type' in input &&
19
+ typeof input.type === 'string';
20
+ exports.isValibotSchema = isValibotSchema;
21
+ const isEntriesRecord = (input) => typeof input === 'object' && input !== null;
22
+ exports.isEntriesRecord = isEntriesRecord;
23
+ const WRAPPER_TYPES = new Set(['optional', 'nullable', 'nullish']);
24
+ /**
25
+ * Strip a single `optional` / `nullable` / `nullish` wrapper, reporting
26
+ * whether one was present. Wrappers don't nest in practice (a schema is
27
+ * declared optional once), so one level suffices.
28
+ */
29
+ const unwrap = (schema) => {
30
+ if (WRAPPER_TYPES.has(schema.type) && (0, exports.isValibotSchema)(schema.wrapped)) {
31
+ return { inner: schema.wrapped, optional: true };
32
+ }
33
+ return { inner: schema, optional: false };
34
+ };
35
+ exports.unwrap = unwrap;
36
+ /**
37
+ * A `v.pipe(base, …actions)` schema spreads `base` and adds a `pipe` array
38
+ * whose first element IS the original base schema. Lookups keyed on schema
39
+ * *identity* (e.g. the `moduleSelect` registry) must therefore also check
40
+ * the pipe's base, or piping a schema through metadata (`v.title(…)`)
41
+ * would silently break the lookup.
42
+ */
43
+ const baseOf = (schema) => Array.isArray(schema.pipe) && (0, exports.isValibotSchema)(schema.pipe[0]) ? schema.pipe[0] : schema;
44
+ exports.baseOf = baseOf;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @fileoverview Nearest-key suggestion for "did you mean …?" hints.
3
+ *
4
+ * Used by the enrichment validation surfaces (`EnrichmentAudit`,
5
+ * `findUnknownKeys`) to pair an unrecognized key with its closest known
6
+ * sibling. Pure string utility — no context, no schema awareness.
7
+ *
8
+ * @module nearestKey
9
+ */
10
+ /**
11
+ * The candidate closest to `target`, or `undefined` when nothing is close
12
+ * enough to be a plausible typo. A case-only mismatch (`POST` for `post`)
13
+ * always wins; otherwise candidates compete within a small edit-distance
14
+ * budget (1 for short keys, 2 otherwise). An exact match returns
15
+ * `undefined` — a key that exists needs no suggestion.
16
+ */
17
+ export declare const nearestKey: (target: string, candidates: Iterable<string>) => string | undefined;
18
+ //# sourceMappingURL=nearestKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nearestKey.d.ts","sourceRoot":"","sources":["../../src/helpers/nearestKey.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA+BH;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,YAAY,QAAQ,CAAC,MAAM,CAAC,KAAG,MAAM,GAAG,SAmBlF,CAAA"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Nearest-key suggestion for "did you mean …?" hints.
4
+ *
5
+ * Used by the enrichment validation surfaces (`EnrichmentAudit`,
6
+ * `findUnknownKeys`) to pair an unrecognized key with its closest known
7
+ * sibling. Pure string utility — no context, no schema awareness.
8
+ *
9
+ * @module nearestKey
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.nearestKey = void 0;
13
+ /**
14
+ * Levenshtein edit distance with an early-exit bound: returns
15
+ * `bound + 1` as soon as the distance provably exceeds `bound`, so
16
+ * candidate scans stay cheap on long, unrelated keys.
17
+ */
18
+ const editDistance = (a, b, bound) => {
19
+ if (Math.abs(a.length - b.length) > bound)
20
+ return bound + 1;
21
+ if (a === b)
22
+ return 0;
23
+ let previous = Array.from({ length: b.length + 1 }, (_, index) => index);
24
+ for (let i = 1; i <= a.length; i++) {
25
+ const current = [i];
26
+ let rowMinimum = i;
27
+ for (let j = 1; j <= b.length; j++) {
28
+ const substitution = previous[j - 1] + (a[i - 1] === b[j - 1] ? 0 : 1);
29
+ const value = Math.min(previous[j] + 1, current[j - 1] + 1, substitution);
30
+ current.push(value);
31
+ rowMinimum = Math.min(rowMinimum, value);
32
+ }
33
+ if (rowMinimum > bound)
34
+ return bound + 1;
35
+ previous = current;
36
+ }
37
+ return previous[b.length];
38
+ };
39
+ /**
40
+ * The candidate closest to `target`, or `undefined` when nothing is close
41
+ * enough to be a plausible typo. A case-only mismatch (`POST` for `post`)
42
+ * always wins; otherwise candidates compete within a small edit-distance
43
+ * budget (1 for short keys, 2 otherwise). An exact match returns
44
+ * `undefined` — a key that exists needs no suggestion.
45
+ */
46
+ const nearestKey = (target, candidates) => {
47
+ const bound = target.length <= 4 ? 1 : 2;
48
+ const lowerTarget = target.toLowerCase();
49
+ let best;
50
+ let bestDistance = bound + 1;
51
+ for (const candidate of candidates) {
52
+ if (candidate === target)
53
+ return undefined;
54
+ if (candidate.toLowerCase() === lowerTarget)
55
+ return candidate;
56
+ const distance = editDistance(target, candidate, bound);
57
+ if (distance < bestDistance) {
58
+ best = candidate;
59
+ bestDistance = distance;
60
+ }
61
+ }
62
+ return best;
63
+ };
64
+ exports.nearestKey = nearestKey;
package/script/mod.d.ts CHANGED
@@ -201,6 +201,8 @@ export * from './types/SchemaPath.js';
201
201
  export * from './enrichments/toEnrichmentDescriptor.js';
202
202
  export * from './enrichments/validateConfig.js';
203
203
  export * from './enrichments/readEnrichments.js';
204
+ export * from './enrichments/EnrichmentWarning.js';
205
+ export * from './enrichments/findUnknownKeys.js';
204
206
  export * from './types/Preview.js';
205
207
  export * from './types/RefName.js';
206
208
  export * from './types/Results.js';
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"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"}
package/script/mod.js CHANGED
@@ -215,6 +215,8 @@ __exportStar(require("./types/SchemaPath.js"), exports);
215
215
  __exportStar(require("./enrichments/toEnrichmentDescriptor.js"), exports);
216
216
  __exportStar(require("./enrichments/validateConfig.js"), exports);
217
217
  __exportStar(require("./enrichments/readEnrichments.js"), exports);
218
+ __exportStar(require("./enrichments/EnrichmentWarning.js"), exports);
219
+ __exportStar(require("./enrichments/findUnknownKeys.js"), exports);
218
220
  __exportStar(require("./types/Preview.js"), exports);
219
221
  __exportStar(require("./types/RefName.js"), exports);
220
222
  __exportStar(require("./types/Results.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"toArtifacts.d.ts","sourceRoot":"","sources":["../../src/run/toArtifacts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAErE;;;;;;;;;;;;;;;;;;GAkBG;AACH,KAAK,aAAa,GAAG;IACnB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,0DAA0D;IAC1D,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAA;IACpC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0CAA0C;IAC1C,UAAU,EAAE,UAAU,CAAA;IACtB,4DAA4D;IAC5D,oBAAoB,EAAE,CAAC,cAAc,GAAG,SAAS,OAAO,sBAAsB,CAAC,cAAc,CAAC,CAAA;IAC9F,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAA;IACf,2DAA2D;IAC3D,MAAM,EAAE,OAAO,CAAA;IACf;;;;OAIG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAA;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AACH,eAAO,MAAM,WAAW,GAAI,4HAYzB,aAAa,KAAG;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,QAAQ,EAAE,eAAe,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACpC,UAAU,CAAC,EAAE,OAAO,CAAA;CA6BrB,CAAA"}
1
+ {"version":3,"file":"toArtifacts.d.ts","sourceRoot":"","sources":["../../src/run/toArtifacts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAErE;;;;;;;;;;;;;;;;;;GAkBG;AACH,KAAK,aAAa,GAAG;IACnB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,0DAA0D;IAC1D,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAA;IACpC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0CAA0C;IAC1C,UAAU,EAAE,UAAU,CAAA;IACtB,4DAA4D;IAC5D,oBAAoB,EAAE,CAAC,cAAc,GAAG,SAAS,OAAO,sBAAsB,CAAC,cAAc,CAAC,CAAA;IAC9F,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAA;IACf,2DAA2D;IAC3D,MAAM,EAAE,OAAO,CAAA;IACf;;;;OAIG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAA;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AACH,eAAO,MAAM,WAAW,GAAI,4HAYzB,aAAa,KAAG;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,QAAQ,EAAE,eAAe,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACpC,UAAU,CAAC,EAAE,OAAO,CAAA;CAuCrB,CAAA"}
@@ -72,7 +72,7 @@ const CoreContext_js_1 = require("../context/CoreContext.js");
72
72
  */
73
73
  const toArtifacts = ({ traceId, spanId, document, settings, toGeneratorConfigMap, logsPath, startAt, silent, stackTrail, attribution, inspect }) => {
74
74
  const context = new CoreContext_js_1.CoreContext({ spanId, logsPath, silent });
75
- const { artifacts, files, previews, results, parseIssues, sidecars, generationMap, inspection } = context.toArtifacts({
75
+ const { artifacts, files, previews, results, parseIssues, enrichmentWarnings, sidecars, generationMap, inspection } = context.toArtifacts({
76
76
  settings,
77
77
  toGeneratorConfigMap,
78
78
  document,
@@ -88,6 +88,7 @@ const toArtifacts = ({ traceId, spanId, document, settings, toGeneratorConfigMap
88
88
  spanId,
89
89
  results,
90
90
  parseIssues,
91
+ enrichmentWarnings,
91
92
  deploymentId: Date.now().toString(),
92
93
  region: undefined,
93
94
  startAt,
@@ -74,6 +74,7 @@ import "../_dnt.polyfills.js";
74
74
  import { type ResultsItem } from './Results.js';
75
75
  import { type Preview } from './Preview.js';
76
76
  import type { ParseIssue } from '../context/ParseIssue.js';
77
+ import { type EnrichmentWarning } from '../enrichments/EnrichmentWarning.js';
77
78
  import * as v from 'valibot';
78
79
  export type ManifestEntry = {
79
80
  lines: number;
@@ -109,6 +110,14 @@ export type ManifestContent = {
109
110
  * it from `.settings/manifest.json` without re-running.
110
111
  */
111
112
  parseIssues: ParseIssue[];
113
+ /**
114
+ * Enrichment addressing / unknown-key warnings recorded during the
115
+ * generate phase — dead config the engine never consumed, keys the
116
+ * generator's schema dropped, and info lines for enrichments on
117
+ * skipped items. Empty for a clean run; optional so manifests written
118
+ * by older cores still parse.
119
+ */
120
+ enrichmentWarnings?: EnrichmentWarning[];
112
121
  startAt: number;
113
122
  endAt: number;
114
123
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Manifest.d.ts","sourceRoot":"","sources":["../../src/types/Manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,OAAO,sBAAsB,CAAC;AAG9B,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAG1D,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AA4D5B,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,aAAa,CAKvD,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,CAAC,CAAC,aAAa,CAAC,WAAW,CAGnD,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,OAAO,EAAE,WAAW,CAAA;IACpB;;;;;OAKG;IACH,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,aAAa,CAAC,eAAe,CAW3D,CAAA"}
1
+ {"version":3,"file":"Manifest.d.ts","sourceRoot":"","sources":["../../src/types/Manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,OAAO,sBAAsB,CAAC;AAG9B,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAG/F,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AA4D5B,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,aAAa,CAKvD,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,CAAC,CAAC,aAAa,CAAC,WAAW,CAGnD,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,OAAO,EAAE,WAAW,CAAA;IACpB;;;;;OAKG;IACH,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,aAAa,CAAC,eAAe,CAY3D,CAAA"}
@@ -109,6 +109,7 @@ exports.manifestContent = exports.previewItem = exports.manifestEntry = void 0;
109
109
  require("../_dnt.polyfills.js");
110
110
  const Results_js_1 = require("./Results.js");
111
111
  const Preview_js_1 = require("./Preview.js");
112
+ const EnrichmentWarning_js_1 = require("../enrichments/EnrichmentWarning.js");
112
113
  const generateTypes_js_1 = require("../context/generateTypes.js");
113
114
  const ParseIssue_js_1 = require("../context/ParseIssue.js");
114
115
  const v = __importStar(require("valibot"));
@@ -188,6 +189,7 @@ exports.manifestContent = v.object({
188
189
  previews: v.record(v.string(), Preview_js_1.preview),
189
190
  results: Results_js_1.resultsItem,
190
191
  parseIssues: v.array(parseIssue),
192
+ enrichmentWarnings: v.optional(v.array(EnrichmentWarning_js_1.enrichmentWarning)),
191
193
  startAt: v.number(),
192
194
  endAt: v.number()
193
195
  });