@kumwe/studio-core 0.1.0-alpha.7 → 0.1.0-alpha.8

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/README.md CHANGED
@@ -22,6 +22,9 @@ The implemented surface covers:
22
22
  stable diagnostics;
23
23
  - `canonicalStringify` / `canonicalUtf8Bytes` — the canonical cross-language serialization form
24
24
  used for checksums.
25
+ - `compileStudioPropertySchema` / `assertStudioPropertySchema` — eval-free admission and validation
26
+ for the closed, local-only `studio.profile/schema-property` surface, with stable
27
+ `StudioSchemaProfileError` codes and schema pointers.
25
28
 
26
29
  The package has no DOM dependency. Web Components, Flutter clients, command-line tools, and server
27
30
  adapters can therefore share the same command and validation semantics through the protocol.
package/dist/index.d.ts CHANGED
@@ -12,7 +12,7 @@ export { negotiateCapabilities, type CapabilityNegotiationOptions, type Capabili
12
12
  export { compareSemanticVersions, normalizeVersionRange, parseSemanticVersion, satisfiesVersionRange, type ParsedSemanticVersion, } from './semver.js';
13
13
  export { StudioSession, type StudioSessionOptions } from './session.js';
14
14
  export { BlockRegistry, type BlockRegistrationOptions, type ResolvedBlockRegistration, } from './registry.js';
15
- export { assertStudioPropertySchema, STUDIO_SCHEMA_PROFILE_LIMITS } from './schema-profile.js';
15
+ export { assertStudioPropertySchema, compileStudioPropertySchema, STUDIO_SCHEMA_PROFILE_ERROR_CODES, STUDIO_SCHEMA_PROFILE_LIMITS, StudioSchemaProfileError, type StudioPropertySchemaValidator, type StudioSchemaProfileErrorCode, } from './schema-profile.js';
16
16
  export { STUDIO_DEFAULT_URL_POLICY, validateExternalUrl, type ExternalUrlPolicy, type ExternalUrlRejectionReason, type ExternalUrlValidationResult, } from './url-policy.js';
17
17
  export { validateBlueprint, type BlueprintValidationOptions, type BlueprintValidationResult, } from './validation.js';
18
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,6BAA6B,GACnC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,+BAA+B,EAC/B,KAAK,sBAAsB,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,iBAAiB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EACrB,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,GACjC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EACL,aAAa,EACb,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,GAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,GACjC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EACjB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,6BAA6B,GACnC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,+BAA+B,EAC/B,KAAK,sBAAsB,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,iBAAiB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EACrB,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,GACjC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EACL,aAAa,EACb,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,GAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,EACjC,4BAA4B,EAC5B,wBAAwB,EACxB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,GACjC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EACjB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ export { negotiateCapabilities, } from './negotiation.js';
12
12
  export { compareSemanticVersions, normalizeVersionRange, parseSemanticVersion, satisfiesVersionRange, } from './semver.js';
13
13
  export { StudioSession } from './session.js';
14
14
  export { BlockRegistry, } from './registry.js';
15
- export { assertStudioPropertySchema, STUDIO_SCHEMA_PROFILE_LIMITS } from './schema-profile.js';
15
+ export { assertStudioPropertySchema, compileStudioPropertySchema, STUDIO_SCHEMA_PROFILE_ERROR_CODES, STUDIO_SCHEMA_PROFILE_LIMITS, StudioSchemaProfileError, } from './schema-profile.js';
16
16
  export { STUDIO_DEFAULT_URL_POLICY, validateExternalUrl, } from './url-policy.js';
17
17
  export { validateBlueprint, } from './validation.js';
18
18
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,kBAAkB,GAGnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,GAKxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,+BAA+B,GAEhC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,GAErB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EACL,eAAe,EACf,oBAAoB,GAMrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,GAGtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,GAEtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAA6B,MAAM,cAAc,CAAC;AACxE,OAAO,EACL,aAAa,GAGd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GAIpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,GAGlB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,kBAAkB,GAGnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,GAKxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,+BAA+B,GAEhC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,GAErB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EACL,eAAe,EACf,oBAAoB,GAMrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,GAGtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,GAEtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAA6B,MAAM,cAAc,CAAC;AACxE,OAAO,EACL,aAAa,GAGd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,EACjC,4BAA4B,EAC5B,wBAAwB,GAGzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GAIpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,GAGlB,MAAM,iBAAiB,CAAC"}
@@ -26,8 +26,8 @@ interface CompiledProgram {
26
26
  /**
27
27
  * A compiled (pre-walked, pre-resolved) profile schema. `validate` mirrors
28
28
  * the verdict-plus-`errors` shape of the code-generating validator it
29
- * replaces: `errors` is `null` after a passing run and carries the failures
30
- * of the most recent failing run otherwise.
29
+ * replaces: `errors` is `null` after a passing run and carries the ordered,
30
+ * distinct failures of the most recent failing run otherwise.
31
31
  */
32
32
  export declare class CompiledSchemaValidator {
33
33
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"profile-validator.d.ts","sourceRoot":"","sources":["../src/profile-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAwFzD,qEAAqE;AACrE,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CACjC;AAED,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,KAAK,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAgBtC,UAAU,eAAe;IACvB,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACtC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC3C,IAAI,EAAE,UAAU,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAAa,uBAAuB;;IAC3B,MAAM,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAQ;gBAGlC,OAAO,EAAE,eAAe;IAIpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO;CAM5C;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,oBAAyB,GACjC,uBAAuB,CA6CzB"}
1
+ {"version":3,"file":"profile-validator.d.ts","sourceRoot":"","sources":["../src/profile-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA0FzD,qEAAqE;AACrE,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CACjC;AAED,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,KAAK,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAgBtC,UAAU,eAAe;IACvB,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACtC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC3C,IAAI,EAAE,UAAU,CAAC;CAClB;AASD;;;;;GAKG;AACH,qBAAa,uBAAuB;;IAC3B,MAAM,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAQ;gBAGlC,OAAO,EAAE,eAAe;IAIpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO;CAkB5C;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,oBAAyB,GACjC,uBAAuB,CA6CzB"}
@@ -32,7 +32,9 @@
32
32
  *
33
33
  * The interpreter is pure and deterministic: no DOM, no Node APIs, no
34
34
  * `Function` constructor, no shared mutable state beyond the per-validator
35
- * error buffer that mirrors the previous compiled-validator shape.
35
+ * error buffer that mirrors the previous compiled-validator shape. Public
36
+ * diagnostics are the ordered set of distinct failures; exact duplicates
37
+ * are collapsed so repeated reference fan-out cannot amplify output size.
36
38
  */
37
39
  const DRAFT_2020_12 = 'https://json-schema.org/draft/2020-12/schema';
38
40
  const MAX_PATTERN_SOURCE_LENGTH = 500;
@@ -83,8 +85,8 @@ const SUPPORTED_KEYWORDS = new Set([
83
85
  /**
84
86
  * A compiled (pre-walked, pre-resolved) profile schema. `validate` mirrors
85
87
  * the verdict-plus-`errors` shape of the code-generating validator it
86
- * replaces: `errors` is `null` after a passing run and carries the failures
87
- * of the most recent failing run otherwise.
88
+ * replaces: `errors` is `null` after a passing run and carries the ordered,
89
+ * distinct failures of the most recent failing run otherwise.
88
90
  */
89
91
  export class CompiledSchemaValidator {
90
92
  errors = null;
@@ -94,9 +96,13 @@ export class CompiledSchemaValidator {
94
96
  }
95
97
  validate(instance) {
96
98
  const errors = [];
97
- validateSubschema(this.#program.root, instance, '', errors, this.#program, new Set());
98
- this.errors = errors.length > 0 ? errors : null;
99
- return errors.length === 0;
99
+ const valid = validateSubschema(this.#program.root, instance, '', errors, this.#program, new Set(), new WeakMap());
100
+ const diagnostics = uniqueDiagnostics(errors);
101
+ if (valid === diagnostics.length > 0) {
102
+ throw new TypeError('Schema validation verdict and diagnostics disagree.');
103
+ }
104
+ this.errors = diagnostics.length > 0 ? diagnostics : null;
105
+ return valid;
100
106
  }
101
107
  }
102
108
  /**
@@ -163,7 +169,7 @@ function walkDocument(document, patterns, sites) {
163
169
  }
164
170
  seen.add(value);
165
171
  document.schemaPointers.add(pointer);
166
- for (const [keyword, operand] of Object.entries(value)) {
172
+ for (const [keyword, operand] of sortedEntries(value)) {
167
173
  const keywordLocation = describeLocation(document, appendPointer(pointer, keyword));
168
174
  if (!SUPPORTED_KEYWORDS.has(keyword)) {
169
175
  throw new TypeError(`${keywordLocation} uses keyword ${JSON.stringify(keyword)}, which the Studio schema interpreter does not support.`);
@@ -180,7 +186,7 @@ function walkDocument(document, patterns, sites) {
180
186
  }
181
187
  break;
182
188
  case '$ref':
183
- if (typeof operand !== 'string' || operand.length > MAX_REFERENCE_LENGTH) {
189
+ if (typeof operand !== 'string' || codePointLength(operand) > MAX_REFERENCE_LENGTH) {
184
190
  throw new TypeError(`${keywordLocation} must be a string of at most ${MAX_REFERENCE_LENGTH} characters.`);
185
191
  }
186
192
  sites.push({ document, node: value, pointer, reference: operand });
@@ -208,6 +214,15 @@ function walkDocument(document, patterns, sites) {
208
214
  assertTypeOperand(operand, keywordLocation);
209
215
  break;
210
216
  case 'enum':
217
+ if (!isDenseArray(operand) || operand.length === 0) {
218
+ throw new TypeError(`${keywordLocation} must be a dense, non-empty JSON array.`);
219
+ }
220
+ for (let index = 0; index < operand.length; index += 1) {
221
+ if (operand.slice(0, index).some((member) => deepEqual(member, operand[index]))) {
222
+ throw new TypeError(`${keywordLocation} must contain unique JSON values.`);
223
+ }
224
+ }
225
+ break;
211
226
  case 'examples':
212
227
  if (!isDenseArray(operand)) {
213
228
  throw new TypeError(`${keywordLocation} must be a dense JSON array.`);
@@ -223,7 +238,7 @@ function walkDocument(document, patterns, sites) {
223
238
  if (!isSchemaNode(operand)) {
224
239
  throw new TypeError(`${keywordLocation} must be an object of property-name arrays.`);
225
240
  }
226
- for (const [name, dependents] of Object.entries(operand)) {
241
+ for (const [name, dependents] of sortedEntries(operand)) {
227
242
  assertNameArray(dependents, `${keywordLocation}.${name}`);
228
243
  }
229
244
  break;
@@ -282,7 +297,7 @@ function walkDocument(document, patterns, sites) {
282
297
  if (!isSchemaNode(value)) {
283
298
  throw new TypeError(`${describeLocation(document, pointer)} must be an object of schemas.`);
284
299
  }
285
- for (const [name, member] of Object.entries(value)) {
300
+ for (const [name, member] of sortedEntries(value)) {
286
301
  walkSubschema(member, appendPointer(pointer, name));
287
302
  }
288
303
  };
@@ -297,7 +312,7 @@ function walkDocument(document, patterns, sites) {
297
312
  walkSchema(document.root, '');
298
313
  }
299
314
  function compilePattern(operand, location) {
300
- if (typeof operand !== 'string' || operand.length > MAX_PATTERN_SOURCE_LENGTH) {
315
+ if (typeof operand !== 'string' || codePointLength(operand) > MAX_PATTERN_SOURCE_LENGTH) {
301
316
  throw new TypeError(`${location} must be a lexical pattern of at most ${MAX_PATTERN_SOURCE_LENGTH} characters.`);
302
317
  }
303
318
  try {
@@ -406,13 +421,20 @@ function resolveDocumentUri(base, uriPart, location) {
406
421
  // ---------------------------------------------------------------------------
407
422
  // Interpretation.
408
423
  // ---------------------------------------------------------------------------
409
- function validateSubschema(schema, instance, path, errors, program, active) {
424
+ function validateSubschema(schema, instance, path, errors, program, active, memo) {
410
425
  if (typeof schema === 'boolean') {
411
426
  if (!schema) {
412
427
  errors.push({ instancePath: path, keyword: 'false', message: 'boolean schema is false' });
413
428
  }
414
429
  return schema;
415
430
  }
431
+ const cached = memoizedVerdict(memo, schema, path, instance);
432
+ if (cached !== undefined) {
433
+ for (const diagnostic of cached.diagnostics) {
434
+ errors.push({ ...diagnostic });
435
+ }
436
+ return cached.valid;
437
+ }
416
438
  if (active.has(schema)) {
417
439
  // Unreachable for admitted schemas: contributed schemas are checked to be
418
440
  // non-recursive, and canonical recursion always descends into a child
@@ -422,11 +444,22 @@ function validateSubschema(schema, instance, path, errors, program, active) {
422
444
  throw new RangeError('Schema evaluation cycled without consuming instance input.');
423
445
  }
424
446
  active.add(schema);
425
- const valid = validateSchemaNode(schema, instance, path, errors, program, active);
426
- active.delete(schema);
447
+ const firstNewError = errors.length;
448
+ let valid;
449
+ try {
450
+ valid = validateSchemaNode(schema, instance, path, errors, program, active, memo);
451
+ }
452
+ finally {
453
+ active.delete(schema);
454
+ }
455
+ const diagnostics = uniqueDiagnostics(errors.slice(firstNewError));
456
+ if (valid === diagnostics.length > 0) {
457
+ throw new TypeError('Subschema validation verdict and diagnostics disagree.');
458
+ }
459
+ memoizeVerdict(memo, schema, path, instance, { diagnostics, valid });
427
460
  return valid;
428
461
  }
429
- function validateSchemaNode(schema, instance, path, errors, program, active) {
462
+ function validateSchemaNode(schema, instance, path, errors, program, active, memo) {
430
463
  let valid = true;
431
464
  const fail = (keyword, message, at = path) => {
432
465
  valid = false;
@@ -437,7 +470,7 @@ function validateSchemaNode(schema, instance, path, errors, program, active) {
437
470
  if (target === undefined) {
438
471
  throw new TypeError('Schema reference was not resolved at compile time.');
439
472
  }
440
- if (!validateSubschema(target, instance, path, errors, program, active)) {
473
+ if (!validateSubschema(target, instance, path, errors, program, active, memo)) {
441
474
  valid = false;
442
475
  }
443
476
  }
@@ -460,7 +493,7 @@ function validateSchemaNode(schema, instance, path, errors, program, active) {
460
493
  if (Object.hasOwn(schema, 'const') && !deepEqual(schema.const, instance)) {
461
494
  fail('const', 'must be equal to constant');
462
495
  }
463
- validateCombinators(schema, instance, path, errors, program, active, fail);
496
+ validateCombinators(schema, instance, path, errors, program, active, memo, fail);
464
497
  if (typeof instance === 'string') {
465
498
  validateStringKeywords(schema, instance, fail, program);
466
499
  }
@@ -468,25 +501,25 @@ function validateSchemaNode(schema, instance, path, errors, program, active) {
468
501
  validateNumberKeywords(schema, instance, fail);
469
502
  }
470
503
  else if (Array.isArray(instance)) {
471
- if (!validateArrayKeywords(schema, instance, path, errors, program, fail)) {
504
+ if (!validateArrayKeywords(schema, instance, path, errors, program, memo, fail)) {
472
505
  valid = false;
473
506
  }
474
507
  }
475
508
  else if (isObjectInstance(instance)) {
476
- if (!validateObjectKeywords(schema, instance, path, errors, program, fail)) {
509
+ if (!validateObjectKeywords(schema, instance, path, errors, program, memo, fail)) {
477
510
  valid = false;
478
511
  }
479
512
  }
480
513
  return valid;
481
514
  }
482
- function validateCombinators(schema, instance, path, errors, program, active, fail) {
515
+ function validateCombinators(schema, instance, path, errors, program, active, memo, fail) {
483
516
  const speculate = (subschema) => {
484
517
  const scratch = [];
485
- return validateSubschema(subschema, instance, path, scratch, program, active);
518
+ return validateSubschema(subschema, instance, path, scratch, program, active, memo);
486
519
  };
487
520
  if (Array.isArray(schema.allOf)) {
488
521
  for (const member of schema.allOf) {
489
- if (!validateSubschema(member, instance, path, errors, program, active)) {
522
+ if (!validateSubschema(member, instance, path, errors, program, active, memo)) {
490
523
  fail('allOf', 'must match all schemas in allOf');
491
524
  }
492
525
  }
@@ -513,7 +546,7 @@ function validateCombinators(schema, instance, path, errors, program, active, fa
513
546
  if (schema.if !== undefined) {
514
547
  const branch = speculate(schema.if) ? schema.then : schema.else;
515
548
  if (branch !== undefined &&
516
- !validateSubschema(branch, instance, path, errors, program, active)) {
549
+ !validateSubschema(branch, instance, path, errors, program, active, memo)) {
517
550
  fail('if', 'must match the conditional schema');
518
551
  }
519
552
  }
@@ -554,18 +587,42 @@ function validateNumberKeywords(schema, instance, fail) {
554
587
  fail('exclusiveMaximum', `must be < ${schema.exclusiveMaximum}`);
555
588
  }
556
589
  if (typeof schema.multipleOf === 'number') {
557
- // Mirrors the reference validator's division semantics exactly, including
558
- // its precision behavior, so verdicts agree on every representable input.
559
- const quotient = instance / schema.multipleOf;
560
- if (quotient !== Number.parseInt(String(quotient), 10)) {
590
+ // Studio compares the canonical base-10 coefficients exactly. Binary
591
+ // division and epsilon tolerances are both runtime-dependent at decimal
592
+ // boundaries (for example 4.02 / 0.01), so neither is a portable rule.
593
+ if (!isCanonicalDecimalMultiple(instance, schema.multipleOf)) {
561
594
  fail('multipleOf', `must be multiple of ${schema.multipleOf}`);
562
595
  }
563
596
  }
564
597
  }
565
- function validateArrayKeywords(schema, instance, path, errors, program, fail) {
598
+ function isCanonicalDecimalMultiple(instance, divisor) {
599
+ const value = canonicalDecimal(instance);
600
+ const multiple = canonicalDecimal(divisor);
601
+ const exponentDifference = value.exponent - multiple.exponent;
602
+ if (exponentDifference >= 0) {
603
+ return (value.coefficient * 10n ** BigInt(exponentDifference)) % multiple.coefficient === 0n;
604
+ }
605
+ return value.coefficient % (multiple.coefficient * 10n ** BigInt(-exponentDifference)) === 0n;
606
+ }
607
+ function canonicalDecimal(value) {
608
+ const source = JSON.stringify(Object.is(value, -0) ? 0 : value);
609
+ const match = /^(-?)(\d+)(?:\.(\d+))?(?:e([+-]?\d+))?$/u.exec(source);
610
+ if (match === null) {
611
+ throw new TypeError('Canonical decimal conversion requires a finite number.');
612
+ }
613
+ const fraction = match[3] ?? '';
614
+ let coefficient = BigInt(`${match[1] ?? ''}${match[2]}${fraction}`);
615
+ let exponent = Number(match[4] ?? 0) - fraction.length;
616
+ while (coefficient !== 0n && coefficient % 10n === 0n) {
617
+ coefficient /= 10n;
618
+ exponent += 1;
619
+ }
620
+ return { coefficient, exponent };
621
+ }
622
+ function validateArrayKeywords(schema, instance, path, errors, program, memo, fail) {
566
623
  let valid = true;
567
624
  const child = (subschema, index) => {
568
- if (!validateSubschema(subschema, instance[index], `${path}/${index}`, errors, program, new Set())) {
625
+ if (!validateSubschema(subschema, instance[index], `${path}/${index}`, errors, program, new Set(), memo)) {
569
626
  valid = false;
570
627
  }
571
628
  };
@@ -601,24 +658,26 @@ function validateArrayKeywords(schema, instance, path, errors, program, fail) {
601
658
  }
602
659
  return valid;
603
660
  }
604
- function validateObjectKeywords(schema, instance, path, errors, program, fail) {
661
+ function validateObjectKeywords(schema, instance, path, errors, program, memo, fail) {
605
662
  let valid = true;
606
663
  // A member whose value is `undefined` is not JSON and is treated as absent,
607
664
  // matching how the previous validator saw JSON-decoded instances.
608
- const memberNames = Object.keys(instance).filter((name) => instance[name] !== undefined);
665
+ const memberNames = Object.keys(instance)
666
+ .filter((name) => instance[name] !== undefined)
667
+ .sort(compareCodeUnits);
609
668
  const present = (name) => Object.hasOwn(instance, name) && instance[name] !== undefined;
610
669
  const properties = isSchemaNode(schema.properties) ? schema.properties : undefined;
611
670
  if (properties !== undefined) {
612
- for (const [name, subschema] of Object.entries(properties)) {
671
+ for (const [name, subschema] of sortedEntries(properties)) {
613
672
  if (present(name) &&
614
- !validateSubschema(subschema, instance[name], `${path}/${escapeToken(name)}`, errors, program, new Set())) {
673
+ !validateSubschema(subschema, instance[name], `${path}/${escapeToken(name)}`, errors, program, new Set(), memo)) {
615
674
  valid = false;
616
675
  }
617
676
  }
618
677
  }
619
678
  if (Array.isArray(schema.required)) {
620
- for (const name of schema.required) {
621
- if (typeof name === 'string' && !present(name)) {
679
+ for (const name of sortedStrings(schema.required)) {
680
+ if (!present(name)) {
622
681
  fail('required', `must have required property '${name}'`);
623
682
  }
624
683
  }
@@ -633,7 +692,7 @@ function validateObjectKeywords(schema, instance, path, errors, program, fail) {
633
692
  fail('additionalProperties', 'must NOT have additional properties');
634
693
  }
635
694
  else if (additional !== true &&
636
- !validateSubschema(additional, instance[name], `${path}/${escapeToken(name)}`, errors, program, new Set())) {
695
+ !validateSubschema(additional, instance[name], `${path}/${escapeToken(name)}`, errors, program, new Set(), memo)) {
637
696
  valid = false;
638
697
  }
639
698
  }
@@ -642,19 +701,19 @@ function validateObjectKeywords(schema, instance, path, errors, program, fail) {
642
701
  if (propertyNames !== undefined) {
643
702
  for (const name of memberNames) {
644
703
  const scratch = [];
645
- if (!validateSubschema(propertyNames, name, path, scratch, program, new Set())) {
704
+ if (!validateSubschema(propertyNames, name, path, scratch, program, new Set(), memo)) {
646
705
  fail('propertyNames', `property name '${name}' is invalid`);
647
706
  }
648
707
  }
649
708
  }
650
709
  const dependentRequired = schema.dependentRequired;
651
710
  if (isSchemaNode(dependentRequired)) {
652
- for (const [trigger, dependents] of Object.entries(dependentRequired)) {
711
+ for (const [trigger, dependents] of sortedEntries(dependentRequired)) {
653
712
  if (!present(trigger) || !Array.isArray(dependents)) {
654
713
  continue;
655
714
  }
656
- for (const dependent of dependents) {
657
- if (typeof dependent === 'string' && !present(dependent)) {
715
+ for (const dependent of sortedStrings(dependents)) {
716
+ if (!present(dependent)) {
658
717
  fail('dependentRequired', `must have property ${dependent} when property ${trigger} is present`);
659
718
  }
660
719
  }
@@ -671,6 +730,36 @@ function validateObjectKeywords(schema, instance, path, errors, program, fail) {
671
730
  // ---------------------------------------------------------------------------
672
731
  // Shared helpers.
673
732
  // ---------------------------------------------------------------------------
733
+ function memoizedVerdict(memo, schema, path, instance) {
734
+ const instances = memo.get(schema)?.get(path);
735
+ return instances?.get(instance);
736
+ }
737
+ function memoizeVerdict(memo, schema, path, instance, result) {
738
+ let locations = memo.get(schema);
739
+ if (locations === undefined) {
740
+ locations = new Map();
741
+ memo.set(schema, locations);
742
+ }
743
+ let instances = locations.get(path);
744
+ if (instances === undefined) {
745
+ instances = new Map();
746
+ locations.set(path, instances);
747
+ }
748
+ instances.set(instance, result);
749
+ }
750
+ function uniqueDiagnostics(errors) {
751
+ const keys = new Set();
752
+ const diagnostics = [];
753
+ for (const error of errors) {
754
+ const key = JSON.stringify([error.instancePath, error.keyword, error.message]);
755
+ if (keys.has(key)) {
756
+ continue;
757
+ }
758
+ keys.add(key);
759
+ diagnostics.push({ ...error });
760
+ }
761
+ return diagnostics;
762
+ }
674
763
  function matchesType(name, instance) {
675
764
  switch (name) {
676
765
  case 'array':
@@ -765,6 +854,21 @@ function isDenseArray(value) {
765
854
  const keys = Object.keys(value);
766
855
  return keys.length === value.length && keys.every((key, index) => key === String(index));
767
856
  }
857
+ function sortedEntries(value) {
858
+ return Object.entries(value).sort(([left], [right]) => compareCodeUnits(left, right));
859
+ }
860
+ function sortedStrings(values) {
861
+ const strings = [];
862
+ for (const value of values) {
863
+ if (typeof value === 'string') {
864
+ strings.push(value);
865
+ }
866
+ }
867
+ return strings.sort(compareCodeUnits);
868
+ }
869
+ function compareCodeUnits(left, right) {
870
+ return left < right ? -1 : left > right ? 1 : 0;
871
+ }
768
872
  function appendPointer(pointer, token) {
769
873
  return `${pointer}/${escapeToken(token)}`;
770
874
  }
@@ -1 +1 @@
1
- {"version":3,"file":"profile-validator.js","sourceRoot":"","sources":["../src/profile-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile-validator.js","sourceRoot":"","sources":["../src/profile-validator.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,27 @@
1
1
  import type { JsonSchema } from '@kumwe/studio-protocol';
2
+ import { type SchemaValidationError } from './profile-validator.js';
3
+ /** Published complexity limits, pinned to `$defs/limits` in the meta-schema. */
4
+ export declare const STUDIO_SCHEMA_PROFILE_LIMITS: Readonly<Record<string, number>>;
5
+ export type StudioSchemaProfileErrorCode = 'invalid-root' | 'unsupported-keyword' | 'invalid-keyword-value' | 'unsafe-member' | 'limit-exceeded' | 'invalid-reference' | 'recursive-schema';
6
+ export declare const STUDIO_SCHEMA_PROFILE_ERROR_CODES: readonly StudioSchemaProfileErrorCode[];
7
+ /** A deterministic admission failure suitable for cross-runtime corpus comparison. */
8
+ export declare class StudioSchemaProfileError extends TypeError {
9
+ readonly code: StudioSchemaProfileErrorCode;
10
+ /** JSON Pointer to the rejected schema location; the empty string is the root. */
11
+ readonly schemaPath: string;
12
+ constructor(code: StudioSchemaProfileErrorCode, schemaPath: string, message: string, options?: ErrorOptions);
13
+ }
14
+ /** Public, implementation-neutral shape returned by a compiled property schema. */
15
+ export interface StudioPropertySchemaValidator {
16
+ readonly errors: SchemaValidationError[] | null;
17
+ validate(instance: unknown): boolean;
18
+ }
2
19
  /**
3
- * The published complexity limits of the Studio Schema Profile. The
4
- * machine-readable meta-schema (`schema-profile.schema.json`) carries the
5
- * same values; a parity test keeps the two from drifting.
20
+ * Admit and compile one contributed block property schema. The alpha profile
21
+ * is deliberately object-rooted, closed, local-reference-only, non-recursive,
22
+ * and format-free. The returned interpreter performs no code generation.
6
23
  */
7
- export declare const STUDIO_SCHEMA_PROFILE_LIMITS: Readonly<Record<string, number>>;
8
- export declare function assertStudioPropertySchema(schema: JsonSchema): void;
24
+ export declare function compileStudioPropertySchema(schema: unknown): StudioPropertySchemaValidator;
25
+ /** Assert that a value is an admitted Studio property schema. */
26
+ export declare function assertStudioPropertySchema(schema: unknown): asserts schema is JsonSchema;
9
27
  //# sourceMappingURL=schema-profile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-profile.d.ts","sourceRoot":"","sources":["../src/schema-profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAgBzD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYxE,CAAC;AAiDH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CA2BnE"}
1
+ {"version":3,"file":"schema-profile.d.ts","sourceRoot":"","sources":["../src/schema-profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,wBAAwB,CAAC;AAEpE,OAAO,EAAwB,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAoB1F,gFAAgF;AAChF,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBxE,CAAC;AAEH,MAAM,MAAM,4BAA4B,GACpC,cAAc,GACd,qBAAqB,GACrB,uBAAuB,GACvB,eAAe,GACf,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,CAAC;AAEvB,eAAO,MAAM,iCAAiC,EAAE,SAAS,4BAA4B,EASjF,CAAC;AAEL,sFAAsF;AACtF,qBAAa,wBAAyB,SAAQ,SAAS;IACrD,SAAgB,IAAI,EAAE,4BAA4B,CAAC;IACnD,kFAAkF;IAClF,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAGjC,IAAI,EAAE,4BAA4B,EAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,YAAY;CAOzB;AAED,mFAAmF;AACnF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC;CACtC;AAsDD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO,GAAG,6BAA6B,CA4D1F;AAED,iEAAiE;AACjE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,CAExF"}