zarr-metadata 0.7.0 → 0.9.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 (156) hide show
  1. package/README.md +13 -6
  2. package/dist/chunk-grid/index.d.ts +27 -0
  3. package/dist/chunk-grid/index.d.ts.map +1 -0
  4. package/dist/chunk-grid/index.js +21 -0
  5. package/dist/chunk-grid/index.js.map +1 -0
  6. package/dist/chunk-grid/rectilinear.d.ts +14 -0
  7. package/dist/chunk-grid/rectilinear.d.ts.map +1 -0
  8. package/dist/chunk-grid/rectilinear.js +76 -0
  9. package/dist/chunk-grid/rectilinear.js.map +1 -0
  10. package/dist/chunk-grid/regular.d.ts +7 -0
  11. package/dist/chunk-grid/regular.d.ts.map +1 -0
  12. package/dist/chunk-grid/regular.js +36 -0
  13. package/dist/chunk-grid/regular.js.map +1 -0
  14. package/dist/codec/index.d.ts +34 -0
  15. package/dist/codec/index.d.ts.map +1 -0
  16. package/dist/codec/index.js +35 -0
  17. package/dist/codec/index.js.map +1 -0
  18. package/dist/codec/sharding-indexed.d.ts +26 -0
  19. package/dist/codec/sharding-indexed.d.ts.map +1 -0
  20. package/dist/codec/sharding-indexed.js +80 -0
  21. package/dist/codec/sharding-indexed.js.map +1 -0
  22. package/dist/codec/transpose.d.ts +19 -0
  23. package/dist/codec/transpose.d.ts.map +1 -0
  24. package/dist/codec/transpose.js +66 -0
  25. package/dist/codec/transpose.js.map +1 -0
  26. package/dist/data-type/bool.d.ts +4 -0
  27. package/dist/data-type/bool.d.ts.map +1 -0
  28. package/dist/data-type/bool.js +7 -0
  29. package/dist/data-type/bool.js.map +1 -0
  30. package/dist/data-type/bytes.d.ts +11 -0
  31. package/dist/data-type/bytes.d.ts.map +1 -0
  32. package/dist/data-type/bytes.js +18 -0
  33. package/dist/data-type/bytes.js.map +1 -0
  34. package/dist/data-type/complex128.d.ts +3 -0
  35. package/dist/data-type/complex128.d.ts.map +1 -0
  36. package/dist/data-type/complex128.js +4 -0
  37. package/dist/data-type/complex128.js.map +1 -0
  38. package/dist/data-type/complex64.d.ts +3 -0
  39. package/dist/data-type/complex64.d.ts.map +1 -0
  40. package/dist/data-type/complex64.js +4 -0
  41. package/dist/data-type/complex64.js.map +1 -0
  42. package/dist/data-type/descriptor.d.ts +44 -0
  43. package/dist/data-type/descriptor.d.ts.map +1 -0
  44. package/dist/data-type/descriptor.js +57 -0
  45. package/dist/data-type/descriptor.js.map +1 -0
  46. package/dist/data-type/float16.d.ts +3 -0
  47. package/dist/data-type/float16.d.ts.map +1 -0
  48. package/dist/data-type/float16.js +4 -0
  49. package/dist/data-type/float16.js.map +1 -0
  50. package/dist/data-type/float32.d.ts +3 -0
  51. package/dist/data-type/float32.d.ts.map +1 -0
  52. package/dist/data-type/float32.js +4 -0
  53. package/dist/data-type/float32.js.map +1 -0
  54. package/dist/data-type/float64.d.ts +3 -0
  55. package/dist/data-type/float64.d.ts.map +1 -0
  56. package/dist/data-type/float64.js +4 -0
  57. package/dist/data-type/float64.js.map +1 -0
  58. package/dist/data-type/index.d.ts +23 -0
  59. package/dist/data-type/index.d.ts.map +1 -0
  60. package/dist/data-type/index.js +92 -0
  61. package/dist/data-type/index.js.map +1 -0
  62. package/dist/data-type/int16.d.ts +3 -0
  63. package/dist/data-type/int16.d.ts.map +1 -0
  64. package/dist/data-type/int16.js +4 -0
  65. package/dist/data-type/int16.js.map +1 -0
  66. package/dist/data-type/int32.d.ts +3 -0
  67. package/dist/data-type/int32.d.ts.map +1 -0
  68. package/dist/data-type/int32.js +4 -0
  69. package/dist/data-type/int32.js.map +1 -0
  70. package/dist/data-type/int64.d.ts +3 -0
  71. package/dist/data-type/int64.d.ts.map +1 -0
  72. package/dist/data-type/int64.js +4 -0
  73. package/dist/data-type/int64.js.map +1 -0
  74. package/dist/data-type/int8.d.ts +3 -0
  75. package/dist/data-type/int8.d.ts.map +1 -0
  76. package/dist/data-type/int8.js +4 -0
  77. package/dist/data-type/int8.js.map +1 -0
  78. package/dist/data-type/numpy-datetime64.d.ts +18 -0
  79. package/dist/data-type/numpy-datetime64.d.ts.map +1 -0
  80. package/dist/data-type/numpy-datetime64.js +14 -0
  81. package/dist/data-type/numpy-datetime64.js.map +1 -0
  82. package/dist/data-type/numpy-timedelta64.d.ts +4 -0
  83. package/dist/data-type/numpy-timedelta64.d.ts.map +1 -0
  84. package/dist/data-type/numpy-timedelta64.js +4 -0
  85. package/dist/data-type/numpy-timedelta64.js.map +1 -0
  86. package/dist/data-type/raw.d.ts +10 -0
  87. package/dist/data-type/raw.d.ts.map +1 -0
  88. package/dist/data-type/raw.js +26 -0
  89. package/dist/data-type/raw.js.map +1 -0
  90. package/dist/data-type/string.d.ts +6 -0
  91. package/dist/data-type/string.d.ts.map +1 -0
  92. package/dist/data-type/string.js +7 -0
  93. package/dist/data-type/string.js.map +1 -0
  94. package/dist/data-type/struct.d.ts +17 -0
  95. package/dist/data-type/struct.d.ts.map +1 -0
  96. package/dist/data-type/struct.js +44 -0
  97. package/dist/data-type/struct.js.map +1 -0
  98. package/dist/data-type/uint16.d.ts +3 -0
  99. package/dist/data-type/uint16.d.ts.map +1 -0
  100. package/dist/data-type/uint16.js +4 -0
  101. package/dist/data-type/uint16.js.map +1 -0
  102. package/dist/data-type/uint32.d.ts +3 -0
  103. package/dist/data-type/uint32.d.ts.map +1 -0
  104. package/dist/data-type/uint32.js +4 -0
  105. package/dist/data-type/uint32.js.map +1 -0
  106. package/dist/data-type/uint64.d.ts +3 -0
  107. package/dist/data-type/uint64.d.ts.map +1 -0
  108. package/dist/data-type/uint64.js +4 -0
  109. package/dist/data-type/uint64.js.map +1 -0
  110. package/dist/data-type/uint8.d.ts +3 -0
  111. package/dist/data-type/uint8.d.ts.map +1 -0
  112. package/dist/data-type/uint8.js +4 -0
  113. package/dist/data-type/uint8.js.map +1 -0
  114. package/dist/guards.d.ts +21 -0
  115. package/dist/guards.d.ts.map +1 -0
  116. package/dist/guards.js +39 -0
  117. package/dist/guards.js.map +1 -0
  118. package/dist/index.d.ts +3 -0
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js.map +1 -1
  121. package/dist/semantics.d.ts +14 -42
  122. package/dist/semantics.d.ts.map +1 -1
  123. package/dist/semantics.js +22 -416
  124. package/dist/semantics.js.map +1 -1
  125. package/package.json +4 -2
  126. package/src/chunk-grid/index.ts +40 -0
  127. package/src/chunk-grid/rectilinear.ts +88 -0
  128. package/src/chunk-grid/regular.ts +42 -0
  129. package/src/codec/index.ts +76 -0
  130. package/src/codec/sharding-indexed.ts +113 -0
  131. package/src/codec/transpose.ts +80 -0
  132. package/src/data-type/bool.ts +8 -0
  133. package/src/data-type/bytes.ts +26 -0
  134. package/src/data-type/complex128.ts +4 -0
  135. package/src/data-type/complex64.ts +4 -0
  136. package/src/data-type/descriptor.ts +115 -0
  137. package/src/data-type/float16.ts +4 -0
  138. package/src/data-type/float32.ts +4 -0
  139. package/src/data-type/float64.ts +4 -0
  140. package/src/data-type/index.ts +129 -0
  141. package/src/data-type/int16.ts +4 -0
  142. package/src/data-type/int32.ts +4 -0
  143. package/src/data-type/int64.ts +4 -0
  144. package/src/data-type/int8.ts +4 -0
  145. package/src/data-type/numpy-datetime64.ts +33 -0
  146. package/src/data-type/numpy-timedelta64.ts +9 -0
  147. package/src/data-type/raw.ts +31 -0
  148. package/src/data-type/string.ts +11 -0
  149. package/src/data-type/struct.ts +55 -0
  150. package/src/data-type/uint16.ts +4 -0
  151. package/src/data-type/uint32.ts +4 -0
  152. package/src/data-type/uint64.ts +4 -0
  153. package/src/data-type/uint8.ts +4 -0
  154. package/src/guards.ts +48 -0
  155. package/src/index.ts +22 -0
  156. package/src/semantics.ts +24 -444
@@ -0,0 +1,3 @@
1
+ /** The core `uint16` data type. */
2
+ export declare const uint16: import("./descriptor.js").DataTypeDescriptor;
3
+ //# sourceMappingURL=uint16.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint16.d.ts","sourceRoot":"","sources":["../../src/data-type/uint16.ts"],"names":[],"mappings":"AAEA,mCAAmC;AACnC,eAAO,MAAM,MAAM,8CAAkC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { intDataType } from "./descriptor.js";
2
+ /** The core `uint16` data type. */
3
+ export const uint16 = intDataType("uint16", 0, 65535);
4
+ //# sourceMappingURL=uint16.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint16.js","sourceRoot":"","sources":["../../src/data-type/uint16.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,mCAAmC;AACnC,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** The core `uint32` data type. */
2
+ export declare const uint32: import("./descriptor.js").DataTypeDescriptor;
3
+ //# sourceMappingURL=uint32.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint32.d.ts","sourceRoot":"","sources":["../../src/data-type/uint32.ts"],"names":[],"mappings":"AAEA,mCAAmC;AACnC,eAAO,MAAM,MAAM,8CAAuC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { intDataType } from "./descriptor.js";
2
+ /** The core `uint32` data type. */
3
+ export const uint32 = intDataType("uint32", 0, 4294967295);
4
+ //# sourceMappingURL=uint32.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint32.js","sourceRoot":"","sources":["../../src/data-type/uint32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,mCAAmC;AACnC,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** The core `uint64` data type. */
2
+ export declare const uint64: import("./descriptor.js").DataTypeDescriptor;
3
+ //# sourceMappingURL=uint64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint64.d.ts","sourceRoot":"","sources":["../../src/data-type/uint64.ts"],"names":[],"mappings":"AAEA,mCAAmC;AACnC,eAAO,MAAM,MAAM,8CAAiD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { intDataType } from "./descriptor.js";
2
+ /** The core `uint64` data type. */
3
+ export const uint64 = intDataType("uint64", 0, 18446744073709551615);
4
+ //# sourceMappingURL=uint64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint64.js","sourceRoot":"","sources":["../../src/data-type/uint64.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,mCAAmC;AACnC,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,EAAE,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** The core `uint8` data type. */
2
+ export declare const uint8: import("./descriptor.js").DataTypeDescriptor;
3
+ //# sourceMappingURL=uint8.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint8.d.ts","sourceRoot":"","sources":["../../src/data-type/uint8.ts"],"names":[],"mappings":"AAEA,kCAAkC;AAClC,eAAO,MAAM,KAAK,8CAA+B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { intDataType } from "./descriptor.js";
2
+ /** The core `uint8` data type. */
3
+ export const uint8 = intDataType("uint8", 0, 255);
4
+ //# sourceMappingURL=uint8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uint8.js","sourceRoot":"","sources":["../../src/data-type/uint8.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,kCAAkC;AAClC,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Shared value guards for the content modules (chunk grids, codecs, data
3
+ * types) and the semantics orchestrator. The structural document layer
4
+ * (validation.ts) keeps its own copies deliberately: it is the
5
+ * corpus-governed layer and stays self-contained.
6
+ */
7
+ export type Path = ReadonlyArray<string | number>;
8
+ export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
9
+ export declare function isIntArray(value: unknown): value is number[];
10
+ /** The `{name, configuration}` of a metadata field, when extractable. */
11
+ export declare function fieldParts(field: unknown): {
12
+ name: string;
13
+ configuration: Record<string, unknown> | undefined;
14
+ } | undefined;
15
+ /**
16
+ * Whether a metadata field genuinely lacks a `configuration` member (a
17
+ * malformed one — `configuration: 5` — is the structural layer's
18
+ * complaint, not the semantic layer's).
19
+ */
20
+ export declare function configurationMissing(field: unknown): boolean;
21
+ //# sourceMappingURL=guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAElD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAI9E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,EAAE,CAM5D;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CACxB,KAAK,EAAE,OAAO,GACb;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;CAAE,GAAG,SAAS,CAUlF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI5D"}
package/dist/guards.js ADDED
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Shared value guards for the content modules (chunk grids, codecs, data
3
+ * types) and the semantics orchestrator. The structural document layer
4
+ * (validation.ts) keeps its own copies deliberately: it is the
5
+ * corpus-governed layer and stays self-contained.
6
+ */
7
+ export function isPlainObject(value) {
8
+ if (typeof value !== "object" || value === null || Array.isArray(value))
9
+ return false;
10
+ const proto = Object.getPrototypeOf(value);
11
+ return proto === null || proto === Object.prototype;
12
+ }
13
+ export function isIntArray(value) {
14
+ return (Array.isArray(value) &&
15
+ Object.keys(value).length === value.length &&
16
+ value.every((item) => Number.isInteger(item)));
17
+ }
18
+ /** The `{name, configuration}` of a metadata field, when extractable. */
19
+ export function fieldParts(field) {
20
+ if (typeof field === "string")
21
+ return { name: field, configuration: undefined };
22
+ if (isPlainObject(field) && typeof field["name"] === "string") {
23
+ const configuration = field["configuration"];
24
+ return {
25
+ name: field["name"],
26
+ configuration: isPlainObject(configuration) ? configuration : undefined,
27
+ };
28
+ }
29
+ return undefined;
30
+ }
31
+ /**
32
+ * Whether a metadata field genuinely lacks a `configuration` member (a
33
+ * malformed one — `configuration: 5` — is the structural layer's
34
+ * complaint, not the semantic layer's).
35
+ */
36
+ export function configurationMissing(field) {
37
+ return (typeof field === "string" || (isPlainObject(field) && !Object.hasOwn(field, "configuration")));
38
+ }
39
+ //# sourceMappingURL=guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.js","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,KAAK,GAAY,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAC1C,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAC9C,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,UAAU,CACxB,KAAc;IAEd,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;IAChF,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC9D,MAAM,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;QAC7C,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,aAAa,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;SACxE,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAC9F,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,9 @@
7
7
  */
8
8
  export type { JSONValue, ZarrV3MetadataFieldJSON, ZarrV3NamedConfigJSON } from "./common.js";
9
9
  export { flattenTree, formatTree, isEmptyTree, MetadataValidationError, treeOf, type ErrorTree, type Issue, type IssueKind, type IssuePath, type ParseResult, type PathedIssue, } from "./errors.js";
10
+ export type { ChunkGridVerdict, RectilinearChunkGridConfiguration, RectilinearDimSpec, RegularChunkGridConfiguration, } from "./chunk-grid/index.js";
11
+ export type { ShardingIndexedCodecConfiguration, TransposeCodecConfiguration, } from "./codec/index.js";
12
+ export type { BytesFillValue, ComplexFillValue, FloatFillValue, NumpyDatetime64Configuration, NumpyDatetime64FillValue, NumpyTimeUnit, RawBytesFillValue, StringFillValue, StructConfiguration, StructField, } from "./data-type/index.js";
10
13
  export * from "./schemas.js";
11
14
  export * from "./semantics.js";
12
15
  export type { StandardSchemaV1 } from "./standard-schema.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EACL,WAAW,EACX,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,MAAM,EACN,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AACrB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EACL,WAAW,EACX,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,MAAM,EACN,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,gBAAgB,EAChB,iCAAiC,EACjC,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,iCAAiC,EACjC,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,4BAA4B,EAC5B,wBAAwB,EACxB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,WAAW,EACX,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,MAAM,GAOP,MAAM,aAAa,CAAC;AACrB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAE/B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,WAAW,EACX,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,MAAM,GAOP,MAAM,aAAa,CAAC;AAuBrB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAE/B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
@@ -1,49 +1,21 @@
1
1
  /**
2
- * Semantic (cross-field) validation for v3 array metadata.
2
+ * Semantic (cross-field) validation for v3 array metadata: the
3
+ * orchestrator. The rules themselves live with their content —
4
+ * `chunk-grid/`, `codec/`, and `data-type/` hold one module per
5
+ * interpreted name (grids, codecs, data types), each with its syntax
6
+ * (types) and semantics (procedures), mirroring how the spec, the Python
7
+ * reference's type layout, and the zarr-extensions registry are organized. This module only walks
8
+ * documents: extract shape, ask each content module for its verdicts,
9
+ * thread the chunk-size context into codec pipelines, and descend into a
10
+ * group's inline consolidated entries.
3
11
  *
4
- * The structural validators never interpret what an extension point names;
5
- * this module deliberately interprets a small set of WELL-KNOWN core
6
- * extension points to enforce the cross-field rules the specs state in
7
- * prose:
8
- *
9
- * - the `regular` chunk grid REQUIRES a configuration with `chunk_shape`,
10
- * which has one length per dimension of `shape`;
11
- * - the `rectilinear` chunk grid requires a configuration with `kind` and
12
- * `chunk_shapes`; `chunk_shapes` has one entry per dimension, and each
13
- * explicit chunk list (integers and `[size, count]` run-length pairs)
14
- * sums exactly to that dimension's length (the bare-integer uniform
15
- * shorthand carries no sum constraint, like the regular grid);
16
- * - a `transpose` codec requires a configuration with `order`, a
17
- * permutation of `0..n-1` with one entry per array dimension;
18
- * - a `sharding_indexed` codec requires a configuration with
19
- * `chunk_shape`, `codecs`, and `index_codecs`; its inner `chunk_shape`
20
- * matches the array's
21
- * dimensionality and evenly divides every chunk it shards — the grid's
22
- * chunk at the top level (each distinct per-dimension size, for
23
- * rectilinear grids), the parent shard's inner chunk when sharding
24
- * nests;
25
- * - `fill_value` has a JSON shape permitted for the named core data type
26
- * (booleans for `bool`, ranged integers for the int types, numbers /
27
- * the "NaN"-family sentinels / width-checked "0x…" strings for the
28
- * float types, two-element arrays for the complex types).
29
- *
30
- * Dimensional context is THREADED through codec pipelines rather than
31
- * assumed constant (mirroring zarr-python's chunk-spec threading): a valid
32
- * `transpose` permutes the per-dimension chunk sizes for the codecs after
33
- * it, and any codec this layer cannot reason about — `reshape` may change
34
- * a chunk's rank, and unknown codecs may do anything — invalidates the
35
- * dimensional context for the rest of the pipeline instead of letting
36
- * stale array-level facts produce false verdicts.
37
- *
38
- * Required-configuration rules cover ONLY the names this layer interprets
39
- * (the two grids, transpose, sharding). Other extensions' required fields
40
- * are registry-schema facts — the editor's registry layer enforces them
41
- * from the vendored schemas, and duplicating that knowledge here as
42
- * hardcoded rules would drift. Unrecognized names are skipped everywhere —
43
- * the extension name space is open, and a rule that guessed would lie. This layer has no counterpart
12
+ * Unrecognized names are skipped everywhere — the extension name space is
13
+ * open, and a rule that guessed would lie. This layer has no counterpart
44
14
  * in the Python reference implementation (which stops at structure), so it
45
15
  * is covered by this package's own tests rather than the conformance
46
- * corpus.
16
+ * corpus. The structural document layer (validation.ts) stays
17
+ * content-agnostic and corpus-governed; it never reads the content
18
+ * modules.
47
19
  */
48
20
  import { type ErrorTree } from "./errors.js";
49
21
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"semantics.d.ts","sourceRoot":"","sources":["../src/semantics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,EAAU,KAAK,SAAS,EAAoB,MAAM,aAAa,CAAC;AAiavE;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAElE;AA0BD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAE7D"}
1
+ {"version":3,"file":"semantics.d.ts","sourceRoot":"","sources":["../src/semantics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,EAAU,KAAK,SAAS,EAAoB,MAAM,aAAa,CAAC;AAsBvE;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAElE;AA0BD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAE7D"}