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.
- package/README.md +13 -6
- package/dist/chunk-grid/index.d.ts +27 -0
- package/dist/chunk-grid/index.d.ts.map +1 -0
- package/dist/chunk-grid/index.js +21 -0
- package/dist/chunk-grid/index.js.map +1 -0
- package/dist/chunk-grid/rectilinear.d.ts +14 -0
- package/dist/chunk-grid/rectilinear.d.ts.map +1 -0
- package/dist/chunk-grid/rectilinear.js +76 -0
- package/dist/chunk-grid/rectilinear.js.map +1 -0
- package/dist/chunk-grid/regular.d.ts +7 -0
- package/dist/chunk-grid/regular.d.ts.map +1 -0
- package/dist/chunk-grid/regular.js +36 -0
- package/dist/chunk-grid/regular.js.map +1 -0
- package/dist/codec/index.d.ts +34 -0
- package/dist/codec/index.d.ts.map +1 -0
- package/dist/codec/index.js +35 -0
- package/dist/codec/index.js.map +1 -0
- package/dist/codec/sharding-indexed.d.ts +26 -0
- package/dist/codec/sharding-indexed.d.ts.map +1 -0
- package/dist/codec/sharding-indexed.js +80 -0
- package/dist/codec/sharding-indexed.js.map +1 -0
- package/dist/codec/transpose.d.ts +19 -0
- package/dist/codec/transpose.d.ts.map +1 -0
- package/dist/codec/transpose.js +66 -0
- package/dist/codec/transpose.js.map +1 -0
- package/dist/data-type/bool.d.ts +4 -0
- package/dist/data-type/bool.d.ts.map +1 -0
- package/dist/data-type/bool.js +7 -0
- package/dist/data-type/bool.js.map +1 -0
- package/dist/data-type/bytes.d.ts +11 -0
- package/dist/data-type/bytes.d.ts.map +1 -0
- package/dist/data-type/bytes.js +18 -0
- package/dist/data-type/bytes.js.map +1 -0
- package/dist/data-type/complex128.d.ts +3 -0
- package/dist/data-type/complex128.d.ts.map +1 -0
- package/dist/data-type/complex128.js +4 -0
- package/dist/data-type/complex128.js.map +1 -0
- package/dist/data-type/complex64.d.ts +3 -0
- package/dist/data-type/complex64.d.ts.map +1 -0
- package/dist/data-type/complex64.js +4 -0
- package/dist/data-type/complex64.js.map +1 -0
- package/dist/data-type/descriptor.d.ts +44 -0
- package/dist/data-type/descriptor.d.ts.map +1 -0
- package/dist/data-type/descriptor.js +57 -0
- package/dist/data-type/descriptor.js.map +1 -0
- package/dist/data-type/float16.d.ts +3 -0
- package/dist/data-type/float16.d.ts.map +1 -0
- package/dist/data-type/float16.js +4 -0
- package/dist/data-type/float16.js.map +1 -0
- package/dist/data-type/float32.d.ts +3 -0
- package/dist/data-type/float32.d.ts.map +1 -0
- package/dist/data-type/float32.js +4 -0
- package/dist/data-type/float32.js.map +1 -0
- package/dist/data-type/float64.d.ts +3 -0
- package/dist/data-type/float64.d.ts.map +1 -0
- package/dist/data-type/float64.js +4 -0
- package/dist/data-type/float64.js.map +1 -0
- package/dist/data-type/index.d.ts +23 -0
- package/dist/data-type/index.d.ts.map +1 -0
- package/dist/data-type/index.js +92 -0
- package/dist/data-type/index.js.map +1 -0
- package/dist/data-type/int16.d.ts +3 -0
- package/dist/data-type/int16.d.ts.map +1 -0
- package/dist/data-type/int16.js +4 -0
- package/dist/data-type/int16.js.map +1 -0
- package/dist/data-type/int32.d.ts +3 -0
- package/dist/data-type/int32.d.ts.map +1 -0
- package/dist/data-type/int32.js +4 -0
- package/dist/data-type/int32.js.map +1 -0
- package/dist/data-type/int64.d.ts +3 -0
- package/dist/data-type/int64.d.ts.map +1 -0
- package/dist/data-type/int64.js +4 -0
- package/dist/data-type/int64.js.map +1 -0
- package/dist/data-type/int8.d.ts +3 -0
- package/dist/data-type/int8.d.ts.map +1 -0
- package/dist/data-type/int8.js +4 -0
- package/dist/data-type/int8.js.map +1 -0
- package/dist/data-type/numpy-datetime64.d.ts +18 -0
- package/dist/data-type/numpy-datetime64.d.ts.map +1 -0
- package/dist/data-type/numpy-datetime64.js +14 -0
- package/dist/data-type/numpy-datetime64.js.map +1 -0
- package/dist/data-type/numpy-timedelta64.d.ts +4 -0
- package/dist/data-type/numpy-timedelta64.d.ts.map +1 -0
- package/dist/data-type/numpy-timedelta64.js +4 -0
- package/dist/data-type/numpy-timedelta64.js.map +1 -0
- package/dist/data-type/raw.d.ts +10 -0
- package/dist/data-type/raw.d.ts.map +1 -0
- package/dist/data-type/raw.js +26 -0
- package/dist/data-type/raw.js.map +1 -0
- package/dist/data-type/string.d.ts +6 -0
- package/dist/data-type/string.d.ts.map +1 -0
- package/dist/data-type/string.js +7 -0
- package/dist/data-type/string.js.map +1 -0
- package/dist/data-type/struct.d.ts +17 -0
- package/dist/data-type/struct.d.ts.map +1 -0
- package/dist/data-type/struct.js +44 -0
- package/dist/data-type/struct.js.map +1 -0
- package/dist/data-type/uint16.d.ts +3 -0
- package/dist/data-type/uint16.d.ts.map +1 -0
- package/dist/data-type/uint16.js +4 -0
- package/dist/data-type/uint16.js.map +1 -0
- package/dist/data-type/uint32.d.ts +3 -0
- package/dist/data-type/uint32.d.ts.map +1 -0
- package/dist/data-type/uint32.js +4 -0
- package/dist/data-type/uint32.js.map +1 -0
- package/dist/data-type/uint64.d.ts +3 -0
- package/dist/data-type/uint64.d.ts.map +1 -0
- package/dist/data-type/uint64.js +4 -0
- package/dist/data-type/uint64.js.map +1 -0
- package/dist/data-type/uint8.d.ts +3 -0
- package/dist/data-type/uint8.d.ts.map +1 -0
- package/dist/data-type/uint8.js +4 -0
- package/dist/data-type/uint8.js.map +1 -0
- package/dist/guards.d.ts +21 -0
- package/dist/guards.d.ts.map +1 -0
- package/dist/guards.js +39 -0
- package/dist/guards.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/semantics.d.ts +14 -42
- package/dist/semantics.d.ts.map +1 -1
- package/dist/semantics.js +22 -416
- package/dist/semantics.js.map +1 -1
- package/package.json +4 -2
- package/src/chunk-grid/index.ts +40 -0
- package/src/chunk-grid/rectilinear.ts +88 -0
- package/src/chunk-grid/regular.ts +42 -0
- package/src/codec/index.ts +76 -0
- package/src/codec/sharding-indexed.ts +113 -0
- package/src/codec/transpose.ts +80 -0
- package/src/data-type/bool.ts +8 -0
- package/src/data-type/bytes.ts +26 -0
- package/src/data-type/complex128.ts +4 -0
- package/src/data-type/complex64.ts +4 -0
- package/src/data-type/descriptor.ts +115 -0
- package/src/data-type/float16.ts +4 -0
- package/src/data-type/float32.ts +4 -0
- package/src/data-type/float64.ts +4 -0
- package/src/data-type/index.ts +129 -0
- package/src/data-type/int16.ts +4 -0
- package/src/data-type/int32.ts +4 -0
- package/src/data-type/int64.ts +4 -0
- package/src/data-type/int8.ts +4 -0
- package/src/data-type/numpy-datetime64.ts +33 -0
- package/src/data-type/numpy-timedelta64.ts +9 -0
- package/src/data-type/raw.ts +31 -0
- package/src/data-type/string.ts +11 -0
- package/src/data-type/struct.ts +55 -0
- package/src/data-type/uint16.ts +4 -0
- package/src/data-type/uint32.ts +4 -0
- package/src/data-type/uint64.ts +4 -0
- package/src/data-type/uint8.ts +4 -0
- package/src/guards.ts +48 -0
- package/src/index.ts +22 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|