@fideus-labs/ngff-zarr 0.18.1 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/esm/browser-mod.d.ts +1 -0
  2. package/esm/browser-mod.d.ts.map +1 -1
  3. package/esm/browser-mod.js +1 -0
  4. package/esm/browser-mod.js.map +1 -1
  5. package/esm/io/hcs.d.ts.map +1 -1
  6. package/esm/io/hcs.js +11 -3
  7. package/esm/io/hcs.js.map +1 -1
  8. package/esm/io/to_ngff_zarr-browser.d.ts +2 -0
  9. package/esm/io/to_ngff_zarr-browser.d.ts.map +1 -1
  10. package/esm/io/to_ngff_zarr-browser.js +5 -2
  11. package/esm/io/to_ngff_zarr-browser.js.map +1 -1
  12. package/esm/mod.d.ts +1 -0
  13. package/esm/mod.d.ts.map +1 -1
  14. package/esm/mod.js +1 -0
  15. package/esm/mod.js.map +1 -1
  16. package/esm/schemas/coordinate_systems.d.ts +2 -2
  17. package/esm/schemas/rfc4.d.ts +9 -9
  18. package/esm/schemas/rfc4.d.ts.map +1 -1
  19. package/esm/schemas/rfc4.js +6 -0
  20. package/esm/schemas/rfc4.js.map +1 -1
  21. package/esm/types/hcs.d.ts +7 -0
  22. package/esm/types/hcs.d.ts.map +1 -1
  23. package/esm/types/hcs.js +16 -3
  24. package/esm/types/hcs.js.map +1 -1
  25. package/esm/types/rfc4.d.ts +7 -1
  26. package/esm/types/rfc4.d.ts.map +1 -1
  27. package/esm/types/rfc4.js +12 -0
  28. package/esm/types/rfc4.js.map +1 -1
  29. package/esm/types/zarr_metadata.d.ts +8 -0
  30. package/esm/types/zarr_metadata.d.ts.map +1 -1
  31. package/esm/types/zarr_metadata.js.map +1 -1
  32. package/esm/utils/from_zarr_attrs.d.ts.map +1 -1
  33. package/esm/utils/from_zarr_attrs.js +97 -3
  34. package/esm/utils/from_zarr_attrs.js.map +1 -1
  35. package/esm/utils/py_format.d.ts +18 -0
  36. package/esm/utils/py_format.d.ts.map +1 -0
  37. package/esm/utils/py_format.js +22 -0
  38. package/esm/utils/py_format.js.map +1 -0
  39. package/esm/utils/rfc4_validation.d.ts +8 -0
  40. package/esm/utils/rfc4_validation.d.ts.map +1 -1
  41. package/esm/utils/rfc4_validation.js +19 -2
  42. package/esm/utils/rfc4_validation.js.map +1 -1
  43. package/esm/utils/structural_validation.d.ts +425 -0
  44. package/esm/utils/structural_validation.d.ts.map +1 -0
  45. package/esm/utils/structural_validation.js +808 -0
  46. package/esm/utils/structural_validation.js.map +1 -0
  47. package/package.json +1 -1
@@ -65,6 +65,14 @@ export interface MetadataInterface {
65
65
  version: string;
66
66
  type?: string;
67
67
  metadata?: MethodMetadata;
68
+ /**
69
+ * Unrecognized keys that leaked into the `multiscales[]` entry (a malformed
70
+ * or double-namespaced v0.5 document). Captured verbatim so the v0.5
71
+ * namespacing rules (`zarr-format`, `ome-namespace`) can flag them; mirrors
72
+ * the Rust port's `#[serde(flatten)]` `extra` passthrough. It is a read-side
73
+ * validation aid only and is never serialized back to the store.
74
+ */
75
+ extra?: Record<string, unknown>;
68
76
  }
69
77
  /**
70
78
  * Result from parsing zarr attributes
@@ -1 +1 @@
1
- {"version":3,"file":"zarr_metadata.d.ts","sourceRoot":"","sources":["../../src/types/zarr_metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zarr_metadata.d.ts","sourceRoot":"","sources":["../../src/types/zarr_metadata.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"zarr_metadata.js","sourceRoot":"","sources":["../../src/types/zarr_metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAmGtD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACK,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAA2B,EAC3B,aAAmC;IAEnC,MAAM,OAAO,GAAG,OAAO,aAAa,KAAK,QAAQ;QAC/C,CAAC,CAAE,aAA6B;QAChC,CAAC,CAAC,aAAa,CAAC;IAElB,IAAI,OAAO,KAAK,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,OAAO;YACL,GAAG,QAAQ;YACX,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,KAAK,WAAW,CAAC,GAAG,EAAE,CAAC;QACvC,OAAO;YACL,GAAG,QAAQ;YACX,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,mCAAmC,QAAQ,CAAC,OAAO,OAAO,OAAO,EAAE,CACpE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA2B;IAC3D,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,0BAA0B,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAe;IACzC,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAAqB;IACrD,OAAO,EAAE,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"zarr_metadata.js","sourceRoot":"","sources":["../../src/types/zarr_metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA2GtD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACK,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAA2B,EAC3B,aAAmC;IAEnC,MAAM,OAAO,GAAG,OAAO,aAAa,KAAK,QAAQ;QAC/C,CAAC,CAAE,aAA6B;QAChC,CAAC,CAAC,aAAa,CAAC;IAElB,IAAI,OAAO,KAAK,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,OAAO;YACL,GAAG,QAAQ;YACX,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,KAAK,WAAW,CAAC,GAAG,EAAE,CAAC;QACvC,OAAO;YACL,GAAG,QAAQ;YACX,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,mCAAmC,QAAQ,CAAC,OAAO,OAAO,OAAO,EAAE,CACpE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA2B;IAC3D,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,0BAA0B,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAe;IACzC,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAAqB;IACrD,OAAO,EAAE,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"from_zarr_attrs.d.ts","sourceRoot":"","sources":["../../src/utils/from_zarr_attrs.ts"],"names":[],"mappings":"AAGA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,EAGV,mBAAmB,EAMpB,MAAM,2BAA2B,CAAC;AAKnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsE3D;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EACpD,QAAQ,UAAQ,GACf,OAAO,CAAC,mBAAmB,CAAC,CA6R9B;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EACpD,QAAQ,UAAQ,GACf,OAAO,CAAC,mBAAmB,CAAC,CA6B9B"}
1
+ {"version":3,"file":"from_zarr_attrs.d.ts","sourceRoot":"","sources":["../../src/utils/from_zarr_attrs.ts"],"names":[],"mappings":"AAGA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,EAGV,mBAAmB,EAMpB,MAAM,2BAA2B,CAAC;AAKnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA4H3D;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EACpD,QAAQ,UAAQ,GACf,OAAO,CAAC,mBAAmB,CAAC,CAkU9B;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EACpD,QAAQ,UAAQ,GACf,OAAO,CAAC,mBAAmB,CAAC,CAuC9B"}
@@ -8,6 +8,7 @@ import { SUPPORTED_DIMS } from "../types/zarr_metadata.js";
8
8
  import { NgffImage } from "../types/ngff_image.js";
9
9
  import { parseOmero } from "./parse_metadata.js";
10
10
  import { hasRfc4OrientationMetadata, validateRfc4Orientation, } from "./rfc4_validation.js";
11
+ import { validateStructural, ValidationLevel, } from "./structural_validation.js";
11
12
  import { AnatomicalOrientationValues } from "../types/rfc4.js";
12
13
  /**
13
14
  * Map string orientation values to enum values
@@ -31,6 +32,12 @@ const ORIENTATION_VALUE_MAP = {
31
32
  "caudal-to-cranial": AnatomicalOrientationValues.CaudalToCranial,
32
33
  "proximal-to-distal": AnatomicalOrientationValues.ProximalToDistal,
33
34
  "distal-to-proximal": AnatomicalOrientationValues.DistalToProximal,
35
+ "superficial-to-deep": AnatomicalOrientationValues.SuperficialToDeep,
36
+ "deep-to-superficial": AnatomicalOrientationValues.DeepToSuperficial,
37
+ "apical-to-basal": AnatomicalOrientationValues.ApicalToBasal,
38
+ "basal-to-apical": AnatomicalOrientationValues.BasalToApical,
39
+ "apex-to-base": AnatomicalOrientationValues.ApexToBase,
40
+ "base-to-apex": AnatomicalOrientationValues.BaseToApex,
34
41
  };
35
42
  /**
36
43
  * Extract anatomical orientations from axes metadata.
@@ -60,6 +67,48 @@ function extractOrientationsFromAxes(axesData) {
60
67
  }
61
68
  return hasOrientation ? orientations : undefined;
62
69
  }
70
+ /**
71
+ * Return whether an OME-Zarr spec version string is `0.4` or newer.
72
+ *
73
+ * The dotted version is compared component-wise as integers, so multi-digit
74
+ * minor versions order correctly: `"0.10"` is newer than `"0.4"`, not older.
75
+ * A plain `Number.parseFloat("0.10")` would yield `0.1` and wrongly drop v0.10+
76
+ * metadata from structural validation. This mirrors the Python port's
77
+ * `packaging.version.parse(version) >= packaging.version.parse("0.4")` gate.
78
+ *
79
+ * Returns `false` for an unparsable version (leading component not a number),
80
+ * matching the prior `Number.isNaN` guard that skipped validation in that case.
81
+ */
82
+ function isSpecVersionAtLeastV04(version) {
83
+ const [major, minor = 0] = version
84
+ .split(".")
85
+ .map((part) => Number.parseInt(part, 10));
86
+ if (Number.isNaN(major)) {
87
+ return false;
88
+ }
89
+ // A NaN minor (e.g. "0.x") fails `minor >= 4`, so it needs no separate guard.
90
+ return major > 0 || (major === 0 && minor >= 4);
91
+ }
92
+ /**
93
+ * Recognized keys of a single `multiscales[]` entry. Any other key present in an
94
+ * entry is a leak -- a group-level `ome` / `multiscales` wrapper, a
95
+ * `zarr_format` byte that belongs on the enclosing Zarr v3 group, and so on --
96
+ * and is routed to `Metadata.extra` for the v0.5 namespacing rules to inspect.
97
+ * `omero` is absent on purpose: it is a sibling of `multiscales`, parsed
98
+ * separately, never a field of the entry. `@type` *is* recognized: the Python
99
+ * writer stamps the JSON-LD `@type` (`"ngff:Image"`) onto every entry, so it is
100
+ * a legitimate library-written key, not a leak.
101
+ */
102
+ const MULTISCALE_ENTRY_FIELDS = new Set([
103
+ "@type",
104
+ "version",
105
+ "name",
106
+ "axes",
107
+ "datasets",
108
+ "coordinateTransformations",
109
+ "type",
110
+ "metadata",
111
+ ]);
63
112
  /**
64
113
  * Parse Metadata and NgffImages from OME-Zarr v0.4 root attributes.
65
114
  *
@@ -143,6 +192,13 @@ export async function fromZarrAttrsV04(rootAttrs, store, validate = false) {
143
192
  name: String(axisObj.name),
144
193
  type: String(axisObj.type),
145
194
  unit: axisObj.unit,
195
+ // Preserve RFC 4 orientation on the parsed axis so the strict
196
+ // structural pass below can run validateAxisOrientation; dropping it
197
+ // here makes that rule a no-op. This mirrors the Python port, whose
198
+ // _filter_axis_dict keeps the raw orientation field on each Axis.
199
+ ...(axisObj.orientation !== undefined && axisObj.orientation !== null
200
+ ? { orientation: axisObj.orientation }
201
+ : {}),
146
202
  };
147
203
  });
148
204
  }
@@ -268,13 +324,31 @@ export async function fromZarrAttrsV04(rootAttrs, store, validate = false) {
268
324
  });
269
325
  images.push(ngffImage);
270
326
  }
327
+ // Keys that a malformed or double-namespaced document leaked into the
328
+ // multiscale entry -- e.g. a group-level `ome` / `multiscales` wrapper, or a
329
+ // `zarr_format` byte that belongs on the enclosing Zarr v3 group, never on the
330
+ // entry. Captured verbatim so the v0.5 namespacing rules can flag them.
331
+ const extra = {};
332
+ for (const [key, value] of Object.entries(multiscalesMetadata)) {
333
+ if (!MULTISCALE_ENTRY_FIELDS.has(key)) {
334
+ extra[key] = value;
335
+ }
336
+ }
271
337
  // Build the metadata object - use spread to only include optional properties if defined
272
338
  const metadata = {
273
339
  axes,
274
340
  datasets,
275
341
  name: multiscalesMetadata.name ?? "image",
276
- version: multiscalesMetadata.version ?? "0.4",
342
+ // OME-Zarr v0.5 hoists the spec `version` to the group-level `ome`
343
+ // namespace; v0.4 carries it on each multiscale entry. Prefer the
344
+ // group-level value (which fromZarrAttrsV05 forwards as a top-level
345
+ // `version`) so the structural pass sees the true spec version -- which the
346
+ // v0.5 namespacing rules gate on. v0.4 has no top-level version, so this
347
+ // falls back to the entry's.
348
+ version: rootAttrs.version ??
349
+ multiscalesMetadata.version ?? "0.4",
277
350
  omero,
351
+ extra,
278
352
  coordinateTransformations: multiscalesMetadata.coordinateTransformations ??
279
353
  undefined,
280
354
  ...(multiscalesMetadata.type !== undefined &&
@@ -288,6 +362,16 @@ export async function fromZarrAttrsV04(rootAttrs, store, validate = false) {
288
362
  }
289
363
  : {}),
290
364
  };
365
+ // Strict structural validation of the parsed metadata, layered after the
366
+ // schema pass and RFC 4 dict check above. The structural rules encode the
367
+ // v0.4+ metadata model (typed axes and per-dataset coordinate
368
+ // transformations); the legacy v0.1-0.3 layouts predate it, so the rules are
369
+ // scoped to v0.4 and newer.
370
+ if (validate) {
371
+ if (isSpecVersionAtLeastV04(metadata.version)) {
372
+ validateStructural(metadata, { level: ValidationLevel.Strict });
373
+ }
374
+ }
291
375
  return { metadata, images };
292
376
  }
293
377
  /**
@@ -302,15 +386,25 @@ export async function fromZarrAttrsV05(rootAttrs, store, validate = false) {
302
386
  const omeData = rootAttrs.ome;
303
387
  let v04Attrs;
304
388
  if (omeData && "multiscales" in omeData) {
305
- // Standard v0.5 format with "ome" wrapper
389
+ // Standard v0.5 format with "ome" wrapper. Forward the hoisted
390
+ // `ome.version` as a top-level `version` so fromZarrAttrsV04 records the
391
+ // true spec version (v0.5), which the v0.5 namespacing rules gate on. This
392
+ // entry point definitionally handles v0.5, so default to "0.5" when
393
+ // `ome.version` is absent -- otherwise a malformed v0.5 store missing its
394
+ // version would fall back to "0.4" and skip the v0.5 namespacing rules
395
+ // during the structural pass (which runs before the version is corrected
396
+ // below).
306
397
  v04Attrs = {
398
+ version: omeData.version ?? "0.5",
307
399
  multiscales: omeData.multiscales,
308
400
  omero: omeData.omero ?? rootAttrs.omero,
309
401
  };
310
402
  }
311
403
  else if ("multiscales" in rootAttrs) {
312
- // Compatibility mode: multiscales at root level (as written by toNgffZarr)
404
+ // Compatibility mode: multiscales at root level (as written by toNgffZarr).
405
+ // Same v0.5 floor as the wrapped branch above.
313
406
  v04Attrs = {
407
+ version: rootAttrs.version ?? "0.5",
314
408
  multiscales: rootAttrs.multiscales,
315
409
  omero: rootAttrs.omero,
316
410
  };
@@ -1 +1 @@
1
- {"version":3,"file":"from_zarr_attrs.js","sourceRoot":"","sources":["../../src/utils/from_zarr_attrs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"from_zarr_attrs.js","sourceRoot":"","sources":["../../src/utils/from_zarr_attrs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Python-style value formatting helpers shared across the validation modules.
3
+ *
4
+ * These keep `ValidationError` message bytes identical to the Python port,
5
+ * which the cross-language parity tests assert.
6
+ */
7
+ /**
8
+ * Render a list of names as a Python-style list literal, e.g. `['z', 'y']`.
9
+ *
10
+ * Mirrors Python's `str(list_of_str)` / f-string rendering: bracketed,
11
+ * single-quoted elements, comma-space separated. Both the structural
12
+ * spatial-axis-order message and the RFC 4 axis-orientation-completeness
13
+ * message interpolate this verbatim, so the two ports stay byte-for-byte
14
+ * identical. Axis names reaching these rules are single-quote-free, so the
15
+ * plain single-quoted element form is exact.
16
+ */
17
+ export declare function formatNameList(names: readonly string[]): string;
18
+ //# sourceMappingURL=py_format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"py_format.d.ts","sourceRoot":"","sources":["../../src/utils/py_format.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAE/D"}
@@ -0,0 +1,22 @@
1
+ // SPDX-FileCopyrightText: Copyright (c) Fideus Labs LLC
2
+ // SPDX-License-Identifier: MIT
3
+ /**
4
+ * Python-style value formatting helpers shared across the validation modules.
5
+ *
6
+ * These keep `ValidationError` message bytes identical to the Python port,
7
+ * which the cross-language parity tests assert.
8
+ */
9
+ /**
10
+ * Render a list of names as a Python-style list literal, e.g. `['z', 'y']`.
11
+ *
12
+ * Mirrors Python's `str(list_of_str)` / f-string rendering: bracketed,
13
+ * single-quoted elements, comma-space separated. Both the structural
14
+ * spatial-axis-order message and the RFC 4 axis-orientation-completeness
15
+ * message interpolate this verbatim, so the two ports stay byte-for-byte
16
+ * identical. Axis names reaching these rules are single-quote-free, so the
17
+ * plain single-quoted element form is exact.
18
+ */
19
+ export function formatNameList(names) {
20
+ return `[${names.map((name) => `'${name}'`).join(", ")}]`;
21
+ }
22
+ //# sourceMappingURL=py_format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"py_format.js","sourceRoot":"","sources":["../../src/utils/py_format.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAC/B;;;;;GAKG;AAEH;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,KAAwB;IACrD,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5D,CAAC"}
@@ -13,6 +13,14 @@ export declare function hasRfc4OrientationMetadata(axes: Array<Record<string, un
13
13
  /**
14
14
  * Validate RFC 4 anatomical orientation metadata.
15
15
  *
16
+ * The two inconsistency errors carry stable marker substrings -- `same type`
17
+ * for a mixed-`type` failure and `all spatial axes` for the all-or-none
18
+ * completeness failure -- that `validateAxisOrientation` reads to map each
19
+ * failure onto its `SpecRule`. These markers are a load-bearing contract
20
+ * pinned by a message-stability test (see
21
+ * `structural_validation_orientation_test.ts`) so the mapping cannot silently
22
+ * break if the wording is later edited.
23
+ *
16
24
  * @param axes - List of axis metadata dictionaries to validate
17
25
  * @throws Error if the orientation metadata is invalid or inconsistent
18
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"rfc4_validation.d.ts","sourceRoot":"","sources":["../../src/utils/rfc4_validation.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AA0BH;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACnC,OAAO,CAYT;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACnC,IAAI,CA0DN"}
1
+ {"version":3,"file":"rfc4_validation.d.ts","sourceRoot":"","sources":["../../src/utils/rfc4_validation.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAiCH;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACnC,OAAO,CAYT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACnC,IAAI,CA4DN"}
@@ -6,6 +6,7 @@
6
6
  * This module provides validation for RFC 4 anatomical orientation metadata.
7
7
  */
8
8
  import { AnatomicalOrientationValuesSchema } from "../schemas/rfc4.js";
9
+ import { formatNameList } from "./py_format.js";
9
10
  /** Valid anatomical orientation values */
10
11
  const VALID_ORIENTATION_VALUES = new Set([
11
12
  "left-to-right",
@@ -26,6 +27,12 @@ const VALID_ORIENTATION_VALUES = new Set([
26
27
  "caudal-to-cranial",
27
28
  "proximal-to-distal",
28
29
  "distal-to-proximal",
30
+ "superficial-to-deep",
31
+ "deep-to-superficial",
32
+ "apical-to-basal",
33
+ "basal-to-apical",
34
+ "apex-to-base",
35
+ "base-to-apex",
29
36
  ]);
30
37
  /**
31
38
  * Check if the axes contain RFC 4 anatomical orientation metadata.
@@ -47,6 +54,14 @@ export function hasRfc4OrientationMetadata(axes) {
47
54
  /**
48
55
  * Validate RFC 4 anatomical orientation metadata.
49
56
  *
57
+ * The two inconsistency errors carry stable marker substrings -- `same type`
58
+ * for a mixed-`type` failure and `all spatial axes` for the all-or-none
59
+ * completeness failure -- that `validateAxisOrientation` reads to map each
60
+ * failure onto its `SpecRule`. These markers are a load-bearing contract
61
+ * pinned by a message-stability test (see
62
+ * `structural_validation_orientation_test.ts`) so the mapping cannot silently
63
+ * break if the wording is later edited.
64
+ *
50
65
  * @param axes - List of axis metadata dictionaries to validate
51
66
  * @throws Error if the orientation metadata is invalid or inconsistent
52
67
  */
@@ -91,8 +106,10 @@ export function validateRfc4Orientation(axes) {
91
106
  if (hasOrientation && spatialAxesWithoutOrientation.length > 0) {
92
107
  throw new Error(`RFC 4 requires that if orientation is defined for one spatial axis, ` +
93
108
  `it must be defined for all spatial axes. ` +
94
- `Axes with orientation: ${spatialAxesWithOrientation.join(", ")}, ` +
95
- `axes without orientation: ${spatialAxesWithoutOrientation.join(", ")}`);
109
+ `Axes with orientation: ` +
110
+ `${formatNameList(spatialAxesWithOrientation)}, ` +
111
+ `axes without orientation: ` +
112
+ `${formatNameList(spatialAxesWithoutOrientation)}`);
96
113
  }
97
114
  }
98
115
  //# sourceMappingURL=rfc4_validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rfc4_validation.js","sourceRoot":"","sources":["../../src/utils/rfc4_validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rfc4_validation.js","sourceRoot":"","sources":["../../src/utils/rfc4_validation.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,+BAA+B;AAC/B;;;;GAIG;AAEH,OAAO,EAAE,iCAAiC,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,0CAA0C;AAC1C,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC;IACvC,eAAe;IACf,eAAe;IACf,uBAAuB;IACvB,uBAAuB;IACvB,sBAAsB;IACtB,sBAAsB;IACtB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,qBAAqB;IACrB,iBAAiB;IACjB,iBAAiB;IACjB,cAAc;IACd,cAAc;CACf,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAAoC;IAEpC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,IACE,OAAO,IAAI,KAAK,QAAQ;YACxB,IAAI,KAAK,IAAI;YACb,IAAI,CAAC,IAAI,KAAK,OAAO;YACrB,aAAa,IAAI,IAAI,EACrB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAoC;IAEpC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,eAAe,GAAkB,IAAI,CAAC;IAC1C,MAAM,0BAA0B,GAAa,EAAE,CAAC;IAChD,MAAM,6BAA6B,GAAa,EAAE,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;YAEhD,IAAI,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;gBACvD,cAAc,GAAG,IAAI,CAAC;gBACtB,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAE1C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAsC,CAAC;gBAEhE,iDAAiD;gBACjD,MAAM,WAAW,GAAG,WAAW,CAAC,IAA0B,CAAC;gBAC3D,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;oBAC7B,eAAe,GAAG,WAAW,IAAI,IAAI,CAAC;gBACxC,CAAC;qBAAM,IAAI,WAAW,KAAK,eAAe,EAAE,CAAC;oBAC3C,MAAM,IAAI,KAAK,CACb,yDAAyD;wBACvD,gBAAgB,eAAe,QAAQ,WAAW,EAAE,CACvD,CAAC;gBACJ,CAAC;gBAED,kDAAkD;gBAClD,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAA2B,CAAC;gBACjE,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;oBACnC,MAAM,MAAM,GAAG,iCAAiC,CAAC,SAAS,CACxD,gBAAgB,CACjB,CAAC;oBACF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBACpB,MAAM,IAAI,KAAK,CACb,8BAA8B,gBAAgB,eAAe,QAAQ,KAAK;4BACxE,qBACE,CAAC,GAAG,wBAAwB,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAChD,EAAE,CACL,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,0CAA0C;IAC1C,IAAI,cAAc,IAAI,6BAA6B,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACb,sEAAsE;YACpE,2CAA2C;YAC3C,yBAAyB;YACzB,GAAG,cAAc,CAAC,0BAA0B,CAAC,IAAI;YACjD,4BAA4B;YAC5B,GAAG,cAAc,CAAC,6BAA6B,CAAC,EAAE,CACrD,CAAC;IACJ,CAAC;AACH,CAAC"}