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 @@
1
+ {"version":3,"file":"complex128.js","sourceRoot":"","sources":["../../src/data-type/complex128.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,gEAAgE;AAChE,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** The core `complex64` data type (components are float32). */
2
+ export declare const complex64: import("./descriptor.js").DataTypeDescriptor;
3
+ //# sourceMappingURL=complex64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complex64.d.ts","sourceRoot":"","sources":["../../src/data-type/complex64.ts"],"names":[],"mappings":"AAEA,+DAA+D;AAC/D,eAAO,MAAM,SAAS,8CAAkC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { complexDataType } from "./descriptor.js";
2
+ /** The core `complex64` data type (components are float32). */
3
+ export const complex64 = complexDataType("complex64", 8);
4
+ //# sourceMappingURL=complex64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complex64.js","sourceRoot":"","sources":["../../src/data-type/complex64.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,+DAA+D;AAC/D,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * The data type descriptor interface and the shared fill-value machinery
3
+ * the per-type modules build on. One module per supported data type;
4
+ * `index.ts` assembles them into the dispatch the semantic layer uses.
5
+ */
6
+ import type { IssueKind, PathedIssue } from "../errors.js";
7
+ /** Context handed to a descriptor's fill check. */
8
+ export interface FillContext {
9
+ /** The data_type field's configuration, when present and an object. */
10
+ configuration: Record<string, unknown> | undefined;
11
+ /** Recursion depth (struct fields may nest structs). */
12
+ depth: number;
13
+ /**
14
+ * Recursive check for compound types: issues for `fill` judged against
15
+ * the data type named by `dataTypeField`, pathed relative to that fill.
16
+ */
17
+ fillIssuesFor(dataTypeField: unknown, fill: unknown, depth: number): PathedIssue[];
18
+ }
19
+ /** Everything the semantic layer knows about one data type. */
20
+ export interface DataTypeDescriptor {
21
+ /** Whether this module owns the given `data_type` name. */
22
+ matches(name: string): boolean;
23
+ /** Required configuration members, when the type needs a configuration. */
24
+ requiredConfigKeys?: readonly string[];
25
+ /** Name-level validity beyond ownership (e.g. r<N>'s multiple-of-8 rule). */
26
+ nameIssue?(name: string): string | undefined;
27
+ /** Fill-value issues, pathed relative to the fill value itself. */
28
+ fillIssues(fill: unknown, name: string, context: FillContext): PathedIssue[];
29
+ }
30
+ export declare function issue(path: ReadonlyArray<string | number>, message: string, kind?: IssueKind): PathedIssue;
31
+ /** A single unpathed issue — the common case for scalar types. */
32
+ export declare function simple(message: string): PathedIssue[];
33
+ export declare function named(matchName: string): (name: string) => boolean;
34
+ /** A float fill value: a JSON number, a non-finite sentinel, or a hex string. */
35
+ export type FloatFillValue = number | "NaN" | "Infinity" | "-Infinity" | string;
36
+ /** A complex fill value: `[real, imaginary]`, each a float fill form. */
37
+ export type ComplexFillValue = [FloatFillValue, FloatFillValue];
38
+ export declare function isFloatFill(value: unknown, hexDigits: number): boolean;
39
+ export declare function floatFillMessage(name: string, hexDigits: number): string;
40
+ export declare function isByteArray(value: unknown): value is number[];
41
+ export declare function intDataType(name: string, low: number, high: number): DataTypeDescriptor;
42
+ export declare function floatDataType(name: string, hexDigits: number): DataTypeDescriptor;
43
+ export declare function complexDataType(name: string, componentHexDigits: number): DataTypeDescriptor;
44
+ //# sourceMappingURL=descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/data-type/descriptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D,mDAAmD;AACnD,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACnD,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;CACpF;AAED,+DAA+D;AAC/D,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,6EAA6E;IAC7E,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7C,mEAAmE;IACnE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;CAC9E;AAED,wBAAgB,KAAK,CACnB,IAAI,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,EACpC,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,SAA2B,GAChC,WAAW,CAEb;AAED,kEAAkE;AAClE,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAErD;AAED,wBAAgB,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAElE;AAID,iFAAiF;AACjF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;AAEhF,yEAAyE;AACzE,MAAM,MAAM,gBAAgB,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AAEhE,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAKtE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKxE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,EAAE,CAM7D;AAID,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAQvF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,kBAAkB,CAMjF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,kBAAkB,CAe5F"}
@@ -0,0 +1,57 @@
1
+ export function issue(path, message, kind = "invalid_value") {
2
+ return { path, message, kind };
3
+ }
4
+ /** A single unpathed issue — the common case for scalar types. */
5
+ export function simple(message) {
6
+ return [issue([], message)];
7
+ }
8
+ export function named(matchName) {
9
+ return (name) => name === matchName;
10
+ }
11
+ export function isFloatFill(value, hexDigits) {
12
+ if (typeof value === "number")
13
+ return true;
14
+ if (typeof value !== "string")
15
+ return false;
16
+ if (value === "NaN" || value === "Infinity" || value === "-Infinity")
17
+ return true;
18
+ return new RegExp(`^0x[0-9a-fA-F]{${hexDigits}}$`).test(value);
19
+ }
20
+ export function floatFillMessage(name, hexDigits) {
21
+ return (`expected a number, "NaN", "Infinity", "-Infinity", or a ` +
22
+ `${hexDigits}-hex-digit "0x..." string for data type ${JSON.stringify(name)}`);
23
+ }
24
+ export function isByteArray(value) {
25
+ return (Array.isArray(value) &&
26
+ Object.keys(value).length === value.length &&
27
+ value.every((item) => Number.isInteger(item) && item >= 0 && item <= 255));
28
+ }
29
+ // --- per-family factories ---------------------------------------------------
30
+ export function intDataType(name, low, high) {
31
+ return {
32
+ matches: named(name),
33
+ fillIssues: (fill) => Number.isInteger(fill) && fill >= low && fill <= high
34
+ ? []
35
+ : simple(`expected an integer in [${low}, ${high}] for data type ${JSON.stringify(name)}`),
36
+ };
37
+ }
38
+ export function floatDataType(name, hexDigits) {
39
+ return {
40
+ matches: named(name),
41
+ fillIssues: (fill) => isFloatFill(fill, hexDigits) ? [] : simple(floatFillMessage(name, hexDigits)),
42
+ };
43
+ }
44
+ export function complexDataType(name, componentHexDigits) {
45
+ return {
46
+ matches: named(name),
47
+ fillIssues: (fill) => {
48
+ const ok = Array.isArray(fill) &&
49
+ fill.length === 2 &&
50
+ fill.every((part) => isFloatFill(part, componentHexDigits));
51
+ return ok
52
+ ? []
53
+ : simple(`expected a two-element [real, imaginary] array for data type ${JSON.stringify(name)}`);
54
+ },
55
+ };
56
+ }
57
+ //# sourceMappingURL=descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"descriptor.js","sourceRoot":"","sources":["../../src/data-type/descriptor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** The core `float16` data type. */
2
+ export declare const float16: import("./descriptor.js").DataTypeDescriptor;
3
+ //# sourceMappingURL=float16.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"float16.d.ts","sourceRoot":"","sources":["../../src/data-type/float16.ts"],"names":[],"mappings":"AAEA,oCAAoC;AACpC,eAAO,MAAM,OAAO,8CAA8B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { floatDataType } from "./descriptor.js";
2
+ /** The core `float16` data type. */
3
+ export const float16 = floatDataType("float16", 4);
4
+ //# sourceMappingURL=float16.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"float16.js","sourceRoot":"","sources":["../../src/data-type/float16.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,oCAAoC;AACpC,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** The core `float32` data type. */
2
+ export declare const float32: import("./descriptor.js").DataTypeDescriptor;
3
+ //# sourceMappingURL=float32.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"float32.d.ts","sourceRoot":"","sources":["../../src/data-type/float32.ts"],"names":[],"mappings":"AAEA,oCAAoC;AACpC,eAAO,MAAM,OAAO,8CAA8B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { floatDataType } from "./descriptor.js";
2
+ /** The core `float32` data type. */
3
+ export const float32 = floatDataType("float32", 8);
4
+ //# sourceMappingURL=float32.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"float32.js","sourceRoot":"","sources":["../../src/data-type/float32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,oCAAoC;AACpC,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** The core `float64` data type. */
2
+ export declare const float64: import("./descriptor.js").DataTypeDescriptor;
3
+ //# sourceMappingURL=float64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"float64.d.ts","sourceRoot":"","sources":["../../src/data-type/float64.ts"],"names":[],"mappings":"AAEA,oCAAoC;AACpC,eAAO,MAAM,OAAO,8CAA+B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { floatDataType } from "./descriptor.js";
2
+ /** The core `float64` data type. */
3
+ export const float64 = floatDataType("float64", 16);
4
+ //# sourceMappingURL=float64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"float64.js","sourceRoot":"","sources":["../../src/data-type/float64.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,oCAAoC;AACpC,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The data types this package interprets, one module per type, assembled
3
+ * into the dispatch the semantic layer uses: the core scalars, the r<N>
4
+ * raw-bits family, and the established zarr-extensions conventions
5
+ * (string, bytes, numpy.datetime64/timedelta64, struct). Unrecognized
6
+ * names yield no verdicts — the name space is open — and other types'
7
+ * required fields remain registry-schema facts.
8
+ */
9
+ import type { PathedIssue } from "../errors.js";
10
+ export type { ComplexFillValue, DataTypeDescriptor, FillContext, FloatFillValue, } from "./descriptor.js";
11
+ export type { BytesFillValue } from "./bytes.js";
12
+ export type { NumpyDatetime64Configuration, NumpyDatetime64FillValue, NumpyTimeUnit, } from "./numpy-datetime64.js";
13
+ export type { RawBytesFillValue } from "./raw.js";
14
+ export type { StringFillValue } from "./string.js";
15
+ export type { StructConfiguration, StructField } from "./struct.js";
16
+ /**
17
+ * Interpret a document's `data_type` field against its `fill_value`:
18
+ * name-level rules, required configuration members, and the fill's JSON
19
+ * shape (recursively, for struct). Issues are pathed from the document
20
+ * root (`data_type` / `fill_value`).
21
+ */
22
+ export declare function dataTypeVerdict(rawField: unknown, fillPresent: boolean, fill: unknown): PathedIssue[];
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data-type/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAwBhD,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EACV,4BAA4B,EAC5B,wBAAwB,EACxB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA+BpE;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,OAAO,EACjB,WAAW,EAAE,OAAO,EACpB,IAAI,EAAE,OAAO,GACZ,WAAW,EAAE,CAyCf"}
@@ -0,0 +1,92 @@
1
+ import { configurationMissing, fieldParts } from "../guards.js";
2
+ import { bool } from "./bool.js";
3
+ import { bytes } from "./bytes.js";
4
+ import { complex64 } from "./complex64.js";
5
+ import { complex128 } from "./complex128.js";
6
+ import { issue } from "./descriptor.js";
7
+ import { float16 } from "./float16.js";
8
+ import { float32 } from "./float32.js";
9
+ import { float64 } from "./float64.js";
10
+ import { int8 } from "./int8.js";
11
+ import { int16 } from "./int16.js";
12
+ import { int32 } from "./int32.js";
13
+ import { int64 } from "./int64.js";
14
+ import { numpyDatetime64 } from "./numpy-datetime64.js";
15
+ import { numpyTimedelta64 } from "./numpy-timedelta64.js";
16
+ import { raw } from "./raw.js";
17
+ import { string } from "./string.js";
18
+ import { struct } from "./struct.js";
19
+ import { uint8 } from "./uint8.js";
20
+ import { uint16 } from "./uint16.js";
21
+ import { uint32 } from "./uint32.js";
22
+ import { uint64 } from "./uint64.js";
23
+ const DESCRIPTORS = [
24
+ bool,
25
+ int8, int16, int32, int64,
26
+ uint8, uint16, uint32, uint64,
27
+ float16, float32, float64,
28
+ complex64, complex128,
29
+ raw,
30
+ string, bytes,
31
+ numpyDatetime64, numpyTimedelta64,
32
+ struct,
33
+ ];
34
+ function descriptorFor(name) {
35
+ return DESCRIPTORS.find((descriptor) => descriptor.matches(name));
36
+ }
37
+ // struct fields may nest structs; matches the structural layer's cap.
38
+ const MAX_FILL_DEPTH = 64;
39
+ function fillIssuesFor(dataTypeField, fill, depth) {
40
+ if (depth >= MAX_FILL_DEPTH)
41
+ return [];
42
+ const parts = fieldParts(dataTypeField);
43
+ if (parts === undefined)
44
+ return [];
45
+ const descriptor = descriptorFor(parts.name);
46
+ if (descriptor === undefined)
47
+ return []; // unrecognized: no verdict
48
+ const context = { configuration: parts.configuration, depth, fillIssuesFor };
49
+ return descriptor.fillIssues(fill, parts.name, context);
50
+ }
51
+ /**
52
+ * Interpret a document's `data_type` field against its `fill_value`:
53
+ * name-level rules, required configuration members, and the fill's JSON
54
+ * shape (recursively, for struct). Issues are pathed from the document
55
+ * root (`data_type` / `fill_value`).
56
+ */
57
+ export function dataTypeVerdict(rawField, fillPresent, fill) {
58
+ const parts = fieldParts(rawField);
59
+ if (parts === undefined)
60
+ return [];
61
+ const descriptor = descriptorFor(parts.name);
62
+ if (descriptor === undefined)
63
+ return [];
64
+ const issues = [];
65
+ const nameProblem = descriptor.nameIssue?.(parts.name);
66
+ if (nameProblem !== undefined) {
67
+ issues.push(issue(["data_type"], nameProblem));
68
+ }
69
+ const required = descriptor.requiredConfigKeys;
70
+ if (required !== undefined) {
71
+ if (configurationMissing(rawField)) {
72
+ issues.push(issue(["data_type"], `${JSON.stringify(parts.name)} requires a configuration with ${required
73
+ .map((key) => JSON.stringify(key))
74
+ .join(" and ")}`, "missing_key"));
75
+ }
76
+ else if (parts.configuration !== undefined) {
77
+ for (const key of required) {
78
+ if (!Object.hasOwn(parts.configuration, key)) {
79
+ issues.push(issue(["data_type", "configuration", key], "missing required key", "missing_key"));
80
+ }
81
+ }
82
+ }
83
+ }
84
+ if (fillPresent) {
85
+ issues.push(...fillIssuesFor(rawField, fill, 0).map((inner) => ({
86
+ ...inner,
87
+ path: ["fill_value", ...inner.path],
88
+ })));
89
+ }
90
+ return issues;
91
+ }
92
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data-type/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** The core `int16` data type. */
2
+ export declare const int16: import("./descriptor.js").DataTypeDescriptor;
3
+ //# sourceMappingURL=int16.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"int16.d.ts","sourceRoot":"","sources":["../../src/data-type/int16.ts"],"names":[],"mappings":"AAEA,kCAAkC;AAClC,eAAO,MAAM,KAAK,8CAAsC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { intDataType } from "./descriptor.js";
2
+ /** The core `int16` data type. */
3
+ export const int16 = intDataType("int16", -32768, 32767);
4
+ //# sourceMappingURL=int16.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"int16.js","sourceRoot":"","sources":["../../src/data-type/int16.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,kCAAkC;AAClC,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** The core `int32` data type. */
2
+ export declare const int32: import("./descriptor.js").DataTypeDescriptor;
3
+ //# sourceMappingURL=int32.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"int32.d.ts","sourceRoot":"","sources":["../../src/data-type/int32.ts"],"names":[],"mappings":"AAEA,kCAAkC;AAClC,eAAO,MAAM,KAAK,8CAAgD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { intDataType } from "./descriptor.js";
2
+ /** The core `int32` data type. */
3
+ export const int32 = intDataType("int32", -2147483648, 2147483647);
4
+ //# sourceMappingURL=int32.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"int32.js","sourceRoot":"","sources":["../../src/data-type/int32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,kCAAkC;AAClC,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** The core `int64` data type. */
2
+ export declare const int64: import("./descriptor.js").DataTypeDescriptor;
3
+ //# sourceMappingURL=int64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"int64.d.ts","sourceRoot":"","sources":["../../src/data-type/int64.ts"],"names":[],"mappings":"AAEA,kCAAkC;AAClC,eAAO,MAAM,KAAK,8CAAkE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { intDataType } from "./descriptor.js";
2
+ /** The core `int64` data type. */
3
+ export const int64 = intDataType("int64", -9223372036854775808, 9223372036854775807);
4
+ //# sourceMappingURL=int64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"int64.js","sourceRoot":"","sources":["../../src/data-type/int64.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,kCAAkC;AAClC,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** The core `int8` data type. */
2
+ export declare const int8: import("./descriptor.js").DataTypeDescriptor;
3
+ //# sourceMappingURL=int8.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"int8.d.ts","sourceRoot":"","sources":["../../src/data-type/int8.ts"],"names":[],"mappings":"AAEA,iCAAiC;AACjC,eAAO,MAAM,IAAI,8CAAiC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { intDataType } from "./descriptor.js";
2
+ /** The core `int8` data type. */
3
+ export const int8 = intDataType("int8", -128, 127);
4
+ //# sourceMappingURL=int8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"int8.js","sourceRoot":"","sources":["../../src/data-type/int8.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,iCAAiC;AACjC,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { type DataTypeDescriptor } from "./descriptor.js";
2
+ /** Time unit codes used by numpy.datetime64 / numpy.timedelta64. */
3
+ export type NumpyTimeUnit = "Y" | "M" | "W" | "D" | "h" | "m" | "s" | "ms" | "us" | "μs" | "ns" | "ps" | "fs" | "as" | "generic";
4
+ /** Configuration of the numpy temporal data types. */
5
+ export interface NumpyDatetime64Configuration {
6
+ unit: NumpyTimeUnit;
7
+ scale_factor: number;
8
+ }
9
+ /**
10
+ * Fill value of the numpy temporal data types: an integer count of
11
+ * `unit * scale_factor` since the epoch, or the `"NaT"` sentinel.
12
+ */
13
+ export type NumpyDatetime64FillValue = number | "NaT";
14
+ /** Descriptor factory shared by numpy.datetime64 and numpy.timedelta64. */
15
+ export declare function numpyTemporalDataType(name: string): DataTypeDescriptor;
16
+ /** The zarr-extensions `numpy.datetime64` data type. */
17
+ export declare const numpyDatetime64: DataTypeDescriptor;
18
+ //# sourceMappingURL=numpy-datetime64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numpy-datetime64.d.ts","sourceRoot":"","sources":["../../src/data-type/numpy-datetime64.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,oEAAoE;AACpE,MAAM,MAAM,aAAa,GACrB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GACvC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;AAE/D,sDAAsD;AACtD,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,KAAK,CAAC;AAEtD,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAStE;AAED,wDAAwD;AACxD,eAAO,MAAM,eAAe,oBAA4C,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { named, simple } from "./descriptor.js";
2
+ /** Descriptor factory shared by numpy.datetime64 and numpy.timedelta64. */
3
+ export function numpyTemporalDataType(name) {
4
+ return {
5
+ matches: named(name),
6
+ requiredConfigKeys: ["unit", "scale_factor"],
7
+ fillIssues: (fill) => Number.isInteger(fill) || fill === "NaT"
8
+ ? []
9
+ : simple(`expected an integer or "NaT" for data type ${JSON.stringify(name)}`),
10
+ };
11
+ }
12
+ /** The zarr-extensions `numpy.datetime64` data type. */
13
+ export const numpyDatetime64 = numpyTemporalDataType("numpy.datetime64");
14
+ //# sourceMappingURL=numpy-datetime64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numpy-datetime64.js","sourceRoot":"","sources":["../../src/data-type/numpy-datetime64.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAA2B,MAAM,iBAAiB,CAAC;AAmBzE,2EAA2E;AAC3E,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;QACpB,kBAAkB,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC;QAC5C,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CACnB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK;YACtC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,MAAM,CAAC,8CAA8C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;KACnF,CAAC;AACJ,CAAC;AAED,wDAAwD;AACxD,MAAM,CAAC,MAAM,eAAe,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export type { NumpyDatetime64Configuration as NumpyTimedelta64Configuration, NumpyDatetime64FillValue as NumpyTimedelta64FillValue, } from "./numpy-datetime64.js";
2
+ /** The zarr-extensions `numpy.timedelta64` data type. */
3
+ export declare const numpyTimedelta64: import("./descriptor.js").DataTypeDescriptor;
4
+ //# sourceMappingURL=numpy-timedelta64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numpy-timedelta64.d.ts","sourceRoot":"","sources":["../../src/data-type/numpy-timedelta64.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,4BAA4B,IAAI,6BAA6B,EAC7D,wBAAwB,IAAI,yBAAyB,GACtD,MAAM,uBAAuB,CAAC;AAE/B,yDAAyD;AACzD,eAAO,MAAM,gBAAgB,8CAA6C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { numpyTemporalDataType } from "./numpy-datetime64.js";
2
+ /** The zarr-extensions `numpy.timedelta64` data type. */
3
+ export const numpyTimedelta64 = numpyTemporalDataType("numpy.timedelta64");
4
+ //# sourceMappingURL=numpy-timedelta64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numpy-timedelta64.js","sourceRoot":"","sources":["../../src/data-type/numpy-timedelta64.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAO9D,yDAAyD;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type DataTypeDescriptor } from "./descriptor.js";
2
+ /** Fill value of the `r<N>` raw-bits data types: one integer per byte. */
3
+ export type RawBytesFillValue = number[];
4
+ /**
5
+ * The core `r<N>` raw-bits data type family. The name itself carries a
6
+ * rule — N must be a positive multiple of 8 — and the fill value must
7
+ * hold exactly N/8 bytes.
8
+ */
9
+ export declare const raw: DataTypeDescriptor;
10
+ //# sourceMappingURL=raw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw.d.ts","sourceRoot":"","sources":["../../src/data-type/raw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE/E,0EAA0E;AAC1E,MAAM,MAAM,iBAAiB,GAAG,MAAM,EAAE,CAAC;AAIzC;;;;GAIG;AACH,eAAO,MAAM,GAAG,EAAE,kBAkBjB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { isByteArray, simple } from "./descriptor.js";
2
+ const RAW = /^r([1-9][0-9]*)$/;
3
+ /**
4
+ * The core `r<N>` raw-bits data type family. The name itself carries a
5
+ * rule — N must be a positive multiple of 8 — and the fill value must
6
+ * hold exactly N/8 bytes.
7
+ */
8
+ export const raw = {
9
+ matches: (name) => RAW.test(name),
10
+ nameIssue: (name) => {
11
+ const bits = Number(RAW.exec(name)[1]);
12
+ return bits % 8 === 0
13
+ ? undefined
14
+ : `expected "r<N>" with N a positive multiple of 8, got ${JSON.stringify(name)}`;
15
+ },
16
+ fillIssues: (fill, name) => {
17
+ const bits = Number(RAW.exec(name)[1]);
18
+ if (bits % 8 !== 0)
19
+ return []; // the name issue already covers this document
20
+ const expectedBytes = bits / 8;
21
+ return isByteArray(fill) && fill.length === expectedBytes
22
+ ? []
23
+ : simple(`expected an array of ${expectedBytes} integers in [0, 255] for data type ${JSON.stringify(name)}`);
24
+ },
25
+ };
26
+ //# sourceMappingURL=raw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw.js","sourceRoot":"","sources":["../../src/data-type/raw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAA2B,MAAM,iBAAiB,CAAC;AAK/E,MAAM,GAAG,GAAG,kBAAkB,CAAC;AAE/B;;;;GAIG;AACH,MAAM,CAAC,MAAM,GAAG,GAAuB;IACrC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;QAClB,MAAM,IAAI,GAAG,MAAM,CAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC;YACnB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,wDAAwD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IACrF,CAAC;IACD,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,IAAI,GAAG,MAAM,CAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC,CAAC,8CAA8C;QAC7E,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC;QAC/B,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa;YACvD,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,MAAM,CACJ,wBAAwB,aAAa,uCAAuC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CACnG,CAAC;IACR,CAAC;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type DataTypeDescriptor } from "./descriptor.js";
2
+ /** Fill value of the `string` data type: a JSON unicode string. */
3
+ export type StringFillValue = string;
4
+ /** The zarr-extensions `string` data type (variable-length UTF-8). */
5
+ export declare const string: DataTypeDescriptor;
6
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/data-type/string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,mEAAmE;AACnE,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AAErC,sEAAsE;AACtE,eAAO,MAAM,MAAM,EAAE,kBAIpB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { named, simple } from "./descriptor.js";
2
+ /** The zarr-extensions `string` data type (variable-length UTF-8). */
3
+ export const string = {
4
+ matches: named("string"),
5
+ fillIssues: (fill) => typeof fill === "string" ? [] : simple('expected a string fill value for data type "string"'),
6
+ };
7
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/data-type/string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAA2B,MAAM,iBAAiB,CAAC;AAKzE,sEAAsE;AACtE,MAAM,CAAC,MAAM,MAAM,GAAuB;IACxC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;IACxB,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CACnB,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,qDAAqD,CAAC;CAChG,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type DataTypeDescriptor } from "./descriptor.js";
2
+ /** One field of a `struct` data type; `data_type` recurses (structs may nest). */
3
+ export interface StructField {
4
+ name: string;
5
+ data_type: unknown;
6
+ }
7
+ /** Configuration of the `struct` data type. */
8
+ export interface StructConfiguration {
9
+ fields: StructField[];
10
+ }
11
+ /**
12
+ * The zarr-extensions `struct` data type (heterogeneous record). Its fill
13
+ * value is a JSON object mapping every field name to that field's fill
14
+ * value, each judged recursively against the field's own data type.
15
+ */
16
+ export declare const struct: DataTypeDescriptor;
17
+ //# sourceMappingURL=struct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../../src/data-type/struct.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEhF,kFAAkF;AAClF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,kBAmCpB,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { isPlainObject } from "../guards.js";
2
+ import { issue, named, simple } from "./descriptor.js";
3
+ /**
4
+ * The zarr-extensions `struct` data type (heterogeneous record). Its fill
5
+ * value is a JSON object mapping every field name to that field's fill
6
+ * value, each judged recursively against the field's own data type.
7
+ */
8
+ export const struct = {
9
+ matches: named("struct"),
10
+ requiredConfigKeys: ["fields"],
11
+ fillIssues: (fill, _name, context) => {
12
+ if (!isPlainObject(fill)) {
13
+ return simple('expected an object mapping field names to fill values for data type "struct"');
14
+ }
15
+ const fields = context.configuration?.["fields"];
16
+ if (!Array.isArray(fields))
17
+ return []; // config shape is the schema layer's problem
18
+ const declared = new Map();
19
+ for (const field of fields) {
20
+ if (isPlainObject(field) && typeof field["name"] === "string") {
21
+ declared.set(field["name"], field["data_type"]);
22
+ }
23
+ }
24
+ if (declared.size !== fields.length)
25
+ return []; // malformed fields: schema layer's problem
26
+ const issues = [];
27
+ for (const [fieldName, dataType] of declared) {
28
+ if (!Object.hasOwn(fill, fieldName)) {
29
+ issues.push(issue([fieldName], "missing required key", "missing_key"));
30
+ continue;
31
+ }
32
+ issues.push(...context
33
+ .fillIssuesFor(dataType, fill[fieldName], context.depth + 1)
34
+ .map((inner) => ({ ...inner, path: [fieldName, ...inner.path] })));
35
+ }
36
+ for (const key of Object.keys(fill)) {
37
+ if (!declared.has(key)) {
38
+ issues.push(issue([key], "unexpected member (no such struct field)"));
39
+ }
40
+ }
41
+ return issues;
42
+ },
43
+ };
44
+ //# sourceMappingURL=struct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"struct.js","sourceRoot":"","sources":["../../src/data-type/struct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAA2B,MAAM,iBAAiB,CAAC;AAahF;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAuB;IACxC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;IACxB,kBAAkB,EAAE,CAAC,QAAQ,CAAC;IAC9B,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC,8EAA8E,CAAC,CAAC;QAChG,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC,CAAC,6CAA6C;QACpF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC5C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC9D,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC,CAAC,2CAA2C;QAC3F,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAC,CAAC;gBACvE,SAAS;YACX,CAAC;YACD,MAAM,CAAC,IAAI,CACT,GAAG,OAAO;iBACP,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;iBAC3D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CACpE,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,0CAA0C,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC"}