zarr-metadata 0.1.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/LICENSE +21 -0
- package/README.md +113 -0
- package/dist/common.d.ts +35 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +10 -0
- package/dist/common.js.map +1 -0
- package/dist/errors.d.ts +88 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +80 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/keys.d.ts +39 -0
- package/dist/keys.d.ts.map +1 -0
- package/dist/keys.js +22 -0
- package/dist/keys.js.map +1 -0
- package/dist/schemas.d.ts +31 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +43 -0
- package/dist/schemas.js.map +1 -0
- package/dist/standard-schema.d.ts +65 -0
- package/dist/standard-schema.d.ts.map +1 -0
- package/dist/standard-schema.js +11 -0
- package/dist/standard-schema.js.map +1 -0
- package/dist/v2.d.ts +104 -0
- package/dist/v2.d.ts.map +1 -0
- package/dist/v2.js +41 -0
- package/dist/v2.js.map +1 -0
- package/dist/v3.d.ts +89 -0
- package/dist/v3.d.ts.map +1 -0
- package/dist/v3.js +44 -0
- package/dist/v3.js.map +1 -0
- package/dist/validation.d.ts +136 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +784 -0
- package/dist/validation.js.map +1 -0
- package/package.json +51 -0
- package/src/common.ts +39 -0
- package/src/errors.ts +142 -0
- package/src/index.ts +27 -0
- package/src/keys.ts +45 -0
- package/src/schemas.ts +96 -0
- package/src/standard-schema.ts +78 -0
- package/src/v2.ts +126 -0
- package/src/v3.ts +111 -0
- package/src/validation.ts +937 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "zarr-metadata",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Spec-defined metadata types and validators for Zarr v2 and v3.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./package.json": "./package.json"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"src"
|
|
19
|
+
],
|
|
20
|
+
"sideEffects": false,
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=20"
|
|
23
|
+
},
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "git",
|
|
26
|
+
"url": "git+https://github.com/d-v-b/zarr-metadata-ts.git"
|
|
27
|
+
},
|
|
28
|
+
"homepage": "https://github.com/d-v-b/zarr-metadata-ts#readme",
|
|
29
|
+
"bugs": {
|
|
30
|
+
"url": "https://github.com/d-v-b/zarr-metadata-ts/issues"
|
|
31
|
+
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "tsc -p tsconfig.json",
|
|
34
|
+
"clean": "rm -rf dist",
|
|
35
|
+
"prepack": "npm run clean && npm run build",
|
|
36
|
+
"test": "vitest run",
|
|
37
|
+
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json"
|
|
38
|
+
},
|
|
39
|
+
"keywords": [
|
|
40
|
+
"zarr",
|
|
41
|
+
"metadata",
|
|
42
|
+
"validation"
|
|
43
|
+
],
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@changesets/cli": "^3.0.1",
|
|
46
|
+
"@standard-schema/spec": "^1.1.0",
|
|
47
|
+
"@types/node": "^26.4.0",
|
|
48
|
+
"typescript": "^5.6.0",
|
|
49
|
+
"vitest": "^3.0.0"
|
|
50
|
+
}
|
|
51
|
+
}
|
package/src/common.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-version primitives for Zarr metadata.
|
|
3
|
+
*
|
|
4
|
+
* This package is a TypeScript port of the Python `zarr-metadata` package
|
|
5
|
+
* (https://pypi.org/project/zarr-metadata/), which is the reference
|
|
6
|
+
* implementation. The two are kept in lockstep by a shared conformance
|
|
7
|
+
* corpus; see `conformance/` at the repository root.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/** A JSON-encodable value. */
|
|
11
|
+
export type JSONValue =
|
|
12
|
+
| string
|
|
13
|
+
| number
|
|
14
|
+
| boolean
|
|
15
|
+
| null
|
|
16
|
+
| JSONValue[]
|
|
17
|
+
| { [key: string]: JSONValue };
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Externally-tagged union member for a v3 metadata field.
|
|
21
|
+
*
|
|
22
|
+
* The optional `configuration` mapping holds arbitrary JSON-encodable
|
|
23
|
+
* values. `must_understand` is implicitly true when absent.
|
|
24
|
+
*/
|
|
25
|
+
export type ZarrV3NamedConfigJSON = {
|
|
26
|
+
name: string;
|
|
27
|
+
configuration?: { [key: string]: JSONValue };
|
|
28
|
+
must_understand?: boolean;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The JSON shape of any v3 metadata extension-point entry: either a bare
|
|
33
|
+
* short-hand name string or a `{name, configuration, must_understand}`
|
|
34
|
+
* envelope.
|
|
35
|
+
*
|
|
36
|
+
* Used for `data_type`, `chunk_grid`, `chunk_key_encoding`, individual
|
|
37
|
+
* codec entries, and `storage_transformers` in v3 array metadata.
|
|
38
|
+
*/
|
|
39
|
+
export type ZarrV3MetadataFieldJSON = string | ZarrV3NamedConfigJSON;
|
package/src/errors.ts
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The error vocabulary: validation produces a tree of issues mirroring the
|
|
3
|
+
* document's shape, and an empty tree means the document is valid.
|
|
4
|
+
*
|
|
5
|
+
* This shape is native to TypeScript validation libraries (compare Zod's
|
|
6
|
+
* `treeifyError` and `safeParse`) rather than ported from the Python
|
|
7
|
+
* reference implementation, which returns a flat list of loc-tagged
|
|
8
|
+
* problems. The two are isomorphic: `flattenTree` produces the flat
|
|
9
|
+
* path+kind form — the interchange format the cross-language conformance
|
|
10
|
+
* corpus asserts on, and the form editor tooling needs to place a
|
|
11
|
+
* diagnostic at a document location — and `treeOf` rebuilds a tree from it.
|
|
12
|
+
*
|
|
13
|
+
* Invariant: a subtree exists only on the path to at least one issue, so
|
|
14
|
+
* `isEmptyTree` never has to search — an empty root IS the success case.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Machine-readable classification of an issue.
|
|
19
|
+
*
|
|
20
|
+
* - `missing_key`: a required key (document key or store key) is absent.
|
|
21
|
+
* - `invalid_type`: a value has the wrong structural type (e.g. a string
|
|
22
|
+
* where a mapping is required).
|
|
23
|
+
* - `invalid_value`: a value has an acceptable type but invalid content
|
|
24
|
+
* (e.g. `zarr_format: 2` in a v3 document, `order: "Q"`).
|
|
25
|
+
* - `invalid_json`: bytes/text that do not decode as JSON.
|
|
26
|
+
*/
|
|
27
|
+
export type IssueKind = "missing_key" | "invalid_type" | "invalid_value" | "invalid_json";
|
|
28
|
+
|
|
29
|
+
/** One problem, attached to the tree node whose document location it describes. */
|
|
30
|
+
export interface Issue {
|
|
31
|
+
readonly kind: IssueKind;
|
|
32
|
+
readonly message: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The path from the document root to a value: object keys and array
|
|
37
|
+
* indices, e.g. `["codecs", 0, "name"]`. Empty means the document itself.
|
|
38
|
+
*/
|
|
39
|
+
export type IssuePath = ReadonlyArray<string | number>;
|
|
40
|
+
|
|
41
|
+
/** An issue paired with its full path — the flat view of a tree entry. */
|
|
42
|
+
export interface PathedIssue extends Issue {
|
|
43
|
+
readonly path: IssuePath;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Every problem found in a document, arranged as a tree mirroring the
|
|
48
|
+
* document's own shape: `issues` holds the problems at this location, and
|
|
49
|
+
* `children` (keyed by object key or array index) holds the problems below
|
|
50
|
+
* it. An empty tree — no issues, no children — means validation succeeded.
|
|
51
|
+
*
|
|
52
|
+
* `children` is a `Map` so array indices keep their number identity
|
|
53
|
+
* instead of collapsing into string keys.
|
|
54
|
+
*/
|
|
55
|
+
export interface ErrorTree {
|
|
56
|
+
readonly issues: ReadonlyArray<Issue>;
|
|
57
|
+
readonly children: ReadonlyMap<string | number, ErrorTree>;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** Whether `tree` holds no issues anywhere — the success verdict. */
|
|
61
|
+
export function isEmptyTree(tree: ErrorTree): boolean {
|
|
62
|
+
return tree.issues.length === 0 && tree.children.size === 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
interface MutableTree {
|
|
66
|
+
issues: Issue[];
|
|
67
|
+
children: Map<string | number, MutableTree>;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Build an `ErrorTree` from flat pathed issues (the inverse of `flattenTree`). */
|
|
71
|
+
export function treeOf(issues: ReadonlyArray<PathedIssue>): ErrorTree {
|
|
72
|
+
const root: MutableTree = { issues: [], children: new Map() };
|
|
73
|
+
for (const { path, kind, message } of issues) {
|
|
74
|
+
let node = root;
|
|
75
|
+
for (const part of path) {
|
|
76
|
+
let child = node.children.get(part);
|
|
77
|
+
if (child === undefined) {
|
|
78
|
+
child = { issues: [], children: new Map() };
|
|
79
|
+
node.children.set(part, child);
|
|
80
|
+
}
|
|
81
|
+
node = child;
|
|
82
|
+
}
|
|
83
|
+
node.issues.push({ kind, message });
|
|
84
|
+
}
|
|
85
|
+
return root;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* The flat view of `tree`: every issue with its full path, parents before
|
|
90
|
+
* children. This is the interchange form — what the conformance corpus
|
|
91
|
+
* asserts on, and what a consumer placing diagnostics in a text document
|
|
92
|
+
* wants.
|
|
93
|
+
*/
|
|
94
|
+
export function flattenTree(tree: ErrorTree): PathedIssue[] {
|
|
95
|
+
const out: PathedIssue[] = [];
|
|
96
|
+
const walk = (node: ErrorTree, path: IssuePath): void => {
|
|
97
|
+
for (const issue of node.issues) {
|
|
98
|
+
out.push({ path, kind: issue.kind, message: issue.message });
|
|
99
|
+
}
|
|
100
|
+
for (const [part, child] of node.children) {
|
|
101
|
+
walk(child, [...path, part]);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
walk(tree, []);
|
|
105
|
+
return out;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function formatPathedIssue(issue: PathedIssue): string {
|
|
109
|
+
const location = issue.path.length > 0 ? issue.path.join(".") : "<root>";
|
|
110
|
+
return `${location}: ${issue.message}`;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/** Render `tree` as one human-readable line per issue (`"path.to.value: message"`). */
|
|
114
|
+
export function formatTree(tree: ErrorTree): string {
|
|
115
|
+
return flattenTree(tree).map(formatPathedIssue).join("\n");
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* The result of a `safeParse*` function: the narrowed document on success,
|
|
120
|
+
* the error tree on failure.
|
|
121
|
+
*/
|
|
122
|
+
export type ParseResult<T> =
|
|
123
|
+
| { readonly success: true; readonly value: T }
|
|
124
|
+
| { readonly success: false; readonly errors: ErrorTree };
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Thrown by `parse*` functions and the store entry points when a value
|
|
128
|
+
* fails validation. Carries the complete error tree (not just the first
|
|
129
|
+
* problem) as `.errors`, with `.issues` as its flat view.
|
|
130
|
+
*/
|
|
131
|
+
export class MetadataValidationError extends Error {
|
|
132
|
+
readonly errors: ErrorTree;
|
|
133
|
+
readonly issues: ReadonlyArray<PathedIssue>;
|
|
134
|
+
|
|
135
|
+
constructor(errors: ErrorTree) {
|
|
136
|
+
const issues = flattenTree(errors);
|
|
137
|
+
super(issues.map(formatPathedIssue).join("\n"));
|
|
138
|
+
this.name = "MetadataValidationError";
|
|
139
|
+
this.errors = errors;
|
|
140
|
+
this.issues = issues;
|
|
141
|
+
}
|
|
142
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zarr-metadata: spec-defined metadata types and validators for Zarr v2 and
|
|
3
|
+
* v3, in TypeScript.
|
|
4
|
+
*
|
|
5
|
+
* A port of the Python `zarr-metadata` package (the reference
|
|
6
|
+
* implementation), kept in lockstep by a shared conformance corpus.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export type { JSONValue, ZarrV3MetadataFieldJSON, ZarrV3NamedConfigJSON } from "./common.js";
|
|
10
|
+
export {
|
|
11
|
+
flattenTree,
|
|
12
|
+
formatTree,
|
|
13
|
+
isEmptyTree,
|
|
14
|
+
MetadataValidationError,
|
|
15
|
+
treeOf,
|
|
16
|
+
type ErrorTree,
|
|
17
|
+
type Issue,
|
|
18
|
+
type IssueKind,
|
|
19
|
+
type IssuePath,
|
|
20
|
+
type ParseResult,
|
|
21
|
+
type PathedIssue,
|
|
22
|
+
} from "./errors.js";
|
|
23
|
+
export * from "./schemas.js";
|
|
24
|
+
export type { StandardSchemaV1 } from "./standard-schema.js";
|
|
25
|
+
export * from "./v2.js";
|
|
26
|
+
export * from "./v3.js";
|
|
27
|
+
export * from "./validation.js";
|
package/src/keys.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compile-time machinery tying the runtime key arrays to the document types.
|
|
3
|
+
*
|
|
4
|
+
* The validators need key names at runtime, and TypeScript types are erased,
|
|
5
|
+
* so the arrays in v2.ts / v3.ts cannot be derived from the types the way
|
|
6
|
+
* the Python package derives its key sets from `__required_keys__`. What the
|
|
7
|
+
* type system CAN do is the reverse: prove each array is exactly the set of
|
|
8
|
+
* required (or optional) keys declared by the document type, so the two can
|
|
9
|
+
* never drift.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The declared properties of `T`, with index signatures stripped.
|
|
14
|
+
*
|
|
15
|
+
* The v3 document types carry a `[key: string]: ...` index signature for
|
|
16
|
+
* extension fields; without stripping it, `keyof` collapses to `string` and
|
|
17
|
+
* the per-key extraction below would be meaningless.
|
|
18
|
+
*/
|
|
19
|
+
type Known<T> = {
|
|
20
|
+
[K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/** The union of `T`'s required declared keys. */
|
|
24
|
+
export type RequiredKeysOf<T> = {
|
|
25
|
+
[K in keyof Known<T>]-?: {} extends Pick<Known<T>, K> ? never : K;
|
|
26
|
+
}[keyof Known<T>];
|
|
27
|
+
|
|
28
|
+
/** The union of `T`'s optional declared keys. */
|
|
29
|
+
export type OptionalKeysOf<T> = {
|
|
30
|
+
[K in keyof Known<T>]-?: {} extends Pick<Known<T>, K> ? K : never;
|
|
31
|
+
}[keyof Known<T>];
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Identity for a readonly tuple of keys, statically checked to be EXACTLY
|
|
35
|
+
* the union `U`: the element constraint rejects keys outside `U`, and the
|
|
36
|
+
* intersected conditional rejects the tuple when any member of `U` is
|
|
37
|
+
* missing (surfacing as a "not assignable" error on the argument).
|
|
38
|
+
*
|
|
39
|
+
* Usage: `exactKeys<RequiredKeysOf<Doc>>()(["a", "b"])`.
|
|
40
|
+
*/
|
|
41
|
+
export function exactKeys<U extends PropertyKey>() {
|
|
42
|
+
return <const A extends readonly U[]>(
|
|
43
|
+
keys: A & ([U] extends [A[number]] ? unknown : never),
|
|
44
|
+
): A => keys;
|
|
45
|
+
}
|
package/src/schemas.ts
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standard Schema (https://standardschema.dev) objects for every document
|
|
3
|
+
* kind, so the validators plug into anything that accepts standard schemas
|
|
4
|
+
* (tRPC, form libraries, ...).
|
|
5
|
+
*
|
|
6
|
+
* Each schema wraps the corresponding `safeParse*` function: validation is
|
|
7
|
+
* synchronous, success carries the narrowed document, and failure carries
|
|
8
|
+
* the flattened error tree as standard issues. Every issue additionally
|
|
9
|
+
* keeps its machine-readable `kind` (an extension the standard permits);
|
|
10
|
+
* consumers wanting the full `ErrorTree` should use `validate*` directly.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { flattenTree, type IssueKind, type ParseResult, type PathedIssue } from "./errors.js";
|
|
14
|
+
import type { JSONValue, ZarrV3MetadataFieldJSON } from "./common.js";
|
|
15
|
+
import type { StandardSchemaV1 } from "./standard-schema.js";
|
|
16
|
+
import {
|
|
17
|
+
safeParseArrayMetadataV2,
|
|
18
|
+
safeParseArrayMetadataV3,
|
|
19
|
+
safeParseConsolidatedMetadataV2,
|
|
20
|
+
safeParseConsolidatedMetadataV3,
|
|
21
|
+
safeParseGroupMetadataV2,
|
|
22
|
+
safeParseGroupMetadataV3,
|
|
23
|
+
safeParseJson,
|
|
24
|
+
safeParseMetadataFieldV3,
|
|
25
|
+
safeParseMetadataV3,
|
|
26
|
+
} from "./validation.js";
|
|
27
|
+
import type {
|
|
28
|
+
ZarrV2ArrayMetadataJSON,
|
|
29
|
+
ZarrV2ConsolidatedMetadataJSON,
|
|
30
|
+
ZarrV2GroupMetadataJSON,
|
|
31
|
+
} from "./v2.js";
|
|
32
|
+
import type {
|
|
33
|
+
ZarrV3ArrayMetadataJSON,
|
|
34
|
+
ZarrV3ConsolidatedMetadataJSON,
|
|
35
|
+
ZarrV3GroupMetadataJSON,
|
|
36
|
+
ZarrV3MetadataJSON,
|
|
37
|
+
} from "./v3.js";
|
|
38
|
+
|
|
39
|
+
/** A standard issue that also keeps zarr-metadata's machine-readable kind. */
|
|
40
|
+
export interface StandardIssue extends StandardSchemaV1.Issue {
|
|
41
|
+
readonly kind: IssueKind;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function toStandardIssue(issue: PathedIssue): StandardIssue {
|
|
45
|
+
return issue.path.length === 0
|
|
46
|
+
? { message: issue.message, kind: issue.kind }
|
|
47
|
+
: { message: issue.message, path: [...issue.path], kind: issue.kind };
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function schemaOf<T>(
|
|
51
|
+
safeParse: (value: unknown) => ParseResult<T>,
|
|
52
|
+
): StandardSchemaV1<unknown, T> {
|
|
53
|
+
return {
|
|
54
|
+
"~standard": {
|
|
55
|
+
version: 1,
|
|
56
|
+
vendor: "zarr-metadata",
|
|
57
|
+
validate: (value) => {
|
|
58
|
+
const result = safeParse(value);
|
|
59
|
+
return result.success
|
|
60
|
+
? { value: result.value }
|
|
61
|
+
: { issues: flattenTree(result.errors).map(toStandardIssue) };
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export const jsonValueSchema: StandardSchemaV1<unknown, JSONValue> = schemaOf(safeParseJson);
|
|
68
|
+
|
|
69
|
+
export const metadataFieldV3Schema: StandardSchemaV1<unknown, ZarrV3MetadataFieldJSON> =
|
|
70
|
+
schemaOf(safeParseMetadataFieldV3);
|
|
71
|
+
|
|
72
|
+
export const arrayMetadataV3Schema: StandardSchemaV1<unknown, ZarrV3ArrayMetadataJSON> =
|
|
73
|
+
schemaOf(safeParseArrayMetadataV3);
|
|
74
|
+
|
|
75
|
+
export const groupMetadataV3Schema: StandardSchemaV1<unknown, ZarrV3GroupMetadataJSON> =
|
|
76
|
+
schemaOf(safeParseGroupMetadataV3);
|
|
77
|
+
|
|
78
|
+
export const consolidatedMetadataV3Schema: StandardSchemaV1<
|
|
79
|
+
unknown,
|
|
80
|
+
ZarrV3ConsolidatedMetadataJSON
|
|
81
|
+
> = schemaOf(safeParseConsolidatedMetadataV3);
|
|
82
|
+
|
|
83
|
+
/** The complete `zarr.json` grammar, dispatching on `node_type`. */
|
|
84
|
+
export const metadataV3Schema: StandardSchemaV1<unknown, ZarrV3MetadataJSON> =
|
|
85
|
+
schemaOf(safeParseMetadataV3);
|
|
86
|
+
|
|
87
|
+
export const arrayMetadataV2Schema: StandardSchemaV1<unknown, ZarrV2ArrayMetadataJSON> =
|
|
88
|
+
schemaOf(safeParseArrayMetadataV2);
|
|
89
|
+
|
|
90
|
+
export const groupMetadataV2Schema: StandardSchemaV1<unknown, ZarrV2GroupMetadataJSON> =
|
|
91
|
+
schemaOf(safeParseGroupMetadataV2);
|
|
92
|
+
|
|
93
|
+
export const consolidatedMetadataV2Schema: StandardSchemaV1<
|
|
94
|
+
unknown,
|
|
95
|
+
ZarrV2ConsolidatedMetadataJSON
|
|
96
|
+
> = schemaOf(safeParseConsolidatedMetadataV2);
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Standard Schema V1 interface (https://standardschema.dev), vendored.
|
|
3
|
+
*
|
|
4
|
+
* Standard Schema is the interoperability contract implemented by Zod,
|
|
5
|
+
* Valibot, ArkType, and consumed by tRPC, form libraries, and others. The
|
|
6
|
+
* spec is designed to be copied into implementing libraries so they stay
|
|
7
|
+
* dependency-free; the test suite checks this copy against the official
|
|
8
|
+
* `@standard-schema/spec` types (a devDependency) so it cannot drift.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** The Standard Schema interface. */
|
|
12
|
+
export interface StandardSchemaV1<Input = unknown, Output = Input> {
|
|
13
|
+
/** The Standard Schema properties. */
|
|
14
|
+
readonly "~standard": StandardSchemaV1.Props<Input, Output>;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export declare namespace StandardSchemaV1 {
|
|
18
|
+
/** The Standard Schema properties interface. */
|
|
19
|
+
export interface Props<Input = unknown, Output = Input> {
|
|
20
|
+
/** The version number of the standard. */
|
|
21
|
+
readonly version: 1;
|
|
22
|
+
/** The vendor name of the schema library. */
|
|
23
|
+
readonly vendor: string;
|
|
24
|
+
/** Validates unknown input values. */
|
|
25
|
+
readonly validate: (value: unknown) => Result<Output> | Promise<Result<Output>>;
|
|
26
|
+
/** Inferred types associated with the schema. */
|
|
27
|
+
readonly types?: Types<Input, Output> | undefined;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** The result interface of the validate function. */
|
|
31
|
+
export type Result<Output> = SuccessResult<Output> | FailureResult;
|
|
32
|
+
|
|
33
|
+
/** The result interface if validation succeeds. */
|
|
34
|
+
export interface SuccessResult<Output> {
|
|
35
|
+
/** The typed output value. */
|
|
36
|
+
readonly value: Output;
|
|
37
|
+
/** The non-existent issues. */
|
|
38
|
+
readonly issues?: undefined;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** The result interface if validation fails. */
|
|
42
|
+
export interface FailureResult {
|
|
43
|
+
/** The issues of failed validation. */
|
|
44
|
+
readonly issues: ReadonlyArray<Issue>;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** The issue interface of the failure output. */
|
|
48
|
+
export interface Issue {
|
|
49
|
+
/** The error message of the issue. */
|
|
50
|
+
readonly message: string;
|
|
51
|
+
/** The path of the issue, if any. */
|
|
52
|
+
readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** The path segment interface of the issue. */
|
|
56
|
+
export interface PathSegment {
|
|
57
|
+
/** The key representing a path segment. */
|
|
58
|
+
readonly key: PropertyKey;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** The Standard Schema types interface. */
|
|
62
|
+
export interface Types<Input = unknown, Output = Input> {
|
|
63
|
+
/** The input type of the schema. */
|
|
64
|
+
readonly input: Input;
|
|
65
|
+
/** The output type of the schema. */
|
|
66
|
+
readonly output: Output;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** Infers the input type of a Standard Schema. */
|
|
70
|
+
export type InferInput<Schema extends StandardSchemaV1> = NonNullable<
|
|
71
|
+
Schema["~standard"]["types"]
|
|
72
|
+
>["input"];
|
|
73
|
+
|
|
74
|
+
/** Infers the output type of a Standard Schema. */
|
|
75
|
+
export type InferOutput<Schema extends StandardSchemaV1> = NonNullable<
|
|
76
|
+
Schema["~standard"]["types"]
|
|
77
|
+
>["output"];
|
|
78
|
+
}
|
package/src/v2.ts
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zarr v2 metadata document types.
|
|
3
|
+
*
|
|
4
|
+
* See https://zarr-specs.readthedocs.io/en/latest/v2/v2.0.html
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { JSONValue } from "./common.js";
|
|
8
|
+
import { exactKeys, type OptionalKeysOf, type RequiredKeysOf } from "./keys.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The v2 dtype representation.
|
|
12
|
+
*
|
|
13
|
+
* Either a numpy-style dtype string (e.g. `"<f8"`, `"|S10"`) or an array of
|
|
14
|
+
* field records describing a structured dtype. Each field record is either a
|
|
15
|
+
* 2-tuple `[name, datatype]` or a 3-tuple `[name, datatype, shape]` (the
|
|
16
|
+
* 3-tuple form indicates a subarray field). A field datatype may itself be
|
|
17
|
+
* another structured dtype.
|
|
18
|
+
*
|
|
19
|
+
* See https://zarr-specs.readthedocs.io/en/latest/v2/v2.0.html#data-type-encoding
|
|
20
|
+
*/
|
|
21
|
+
export type ZarrV2DataTypeMetadata =
|
|
22
|
+
| string
|
|
23
|
+
| Array<[string, ZarrV2DataTypeMetadata] | [string, ZarrV2DataTypeMetadata, number[]]>;
|
|
24
|
+
|
|
25
|
+
/** `"C"` (row-major) or `"F"` (column-major) — the in-chunk byte layout. */
|
|
26
|
+
export const ZARR_V2_ARRAY_ORDER = ["C", "F"] as const;
|
|
27
|
+
export type ZarrV2ArrayOrder = (typeof ZARR_V2_ARRAY_ORDER)[number];
|
|
28
|
+
|
|
29
|
+
/** `"."` (legacy default) or `"/"` (nested directories). */
|
|
30
|
+
export const ZARR_V2_ARRAY_DIMENSION_SEPARATOR = [".", "/"] as const;
|
|
31
|
+
export type ZarrV2ArrayDimensionSeparator = (typeof ZARR_V2_ARRAY_DIMENSION_SEPARATOR)[number];
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* A numcodecs configuration object, used as a v2 compressor or filter.
|
|
35
|
+
*
|
|
36
|
+
* The required `id` field names the codec; codec-specific parameters
|
|
37
|
+
* (e.g. `cname`, `clevel` for blosc) appear as extra fields.
|
|
38
|
+
*/
|
|
39
|
+
export type ZarrV2CodecMetadata = { id: string } & { [key: string]: JSONValue };
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* On-disk `.zarray` file content.
|
|
43
|
+
*
|
|
44
|
+
* User attributes live in a sibling `.zattrs` file and are NOT part of this
|
|
45
|
+
* type; see `ZarrV2ZAttrsJSON`.
|
|
46
|
+
*/
|
|
47
|
+
export type ZarrV2ZArrayJSON = {
|
|
48
|
+
zarr_format: 2;
|
|
49
|
+
shape: number[];
|
|
50
|
+
chunks: number[];
|
|
51
|
+
dtype: ZarrV2DataTypeMetadata;
|
|
52
|
+
compressor: ZarrV2CodecMetadata | null;
|
|
53
|
+
fill_value: JSONValue;
|
|
54
|
+
order: ZarrV2ArrayOrder;
|
|
55
|
+
filters: ZarrV2CodecMetadata[] | null;
|
|
56
|
+
dimension_separator?: ZarrV2ArrayDimensionSeparator;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Zarr v2 array metadata document, in-memory merged form: the `.zarray`
|
|
61
|
+
* fields plus the sibling `.zattrs` attributes folded in as `attributes`.
|
|
62
|
+
*/
|
|
63
|
+
export type ZarrV2ArrayMetadataJSON = ZarrV2ZArrayJSON & {
|
|
64
|
+
attributes?: { [key: string]: JSONValue };
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/** On-disk `.zgroup` file content. The spec defines exactly one field. */
|
|
68
|
+
export type ZarrV2ZGroupJSON = {
|
|
69
|
+
zarr_format: 2;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Zarr v2 group metadata document, in-memory merged form: the `.zgroup`
|
|
74
|
+
* field plus the sibling `.zattrs` attributes folded in as `attributes`.
|
|
75
|
+
*/
|
|
76
|
+
export type ZarrV2GroupMetadataJSON = ZarrV2ZGroupJSON & {
|
|
77
|
+
attributes?: { [key: string]: JSONValue };
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
/** On-disk `.zattrs` file content: a JSON object of user attributes. */
|
|
81
|
+
export type ZarrV2ZAttrsJSON = { [key: string]: JSONValue };
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* `.zmetadata` file contents (v2 consolidated metadata).
|
|
85
|
+
*
|
|
86
|
+
* NOT a spec artifact: a reference-implementation convention. The `metadata`
|
|
87
|
+
* map uses flat path keys (`"foo/bar/.zarray"`, `"foo/.zattrs"`, ...)
|
|
88
|
+
* pointing to the JSON contents of the file at that path.
|
|
89
|
+
*/
|
|
90
|
+
export type ZarrV2ConsolidatedMetadataJSON = {
|
|
91
|
+
zarr_consolidated_format: 1;
|
|
92
|
+
metadata: { [key: string]: JSONValue };
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export const ZARR_V2_ARRAY_METADATA_STORE_KEY = ".zarray";
|
|
96
|
+
export const ZARR_V2_GROUP_METADATA_STORE_KEY = ".zgroup";
|
|
97
|
+
export const ZARR_V2_ATTRIBUTES_STORE_KEY = ".zattrs";
|
|
98
|
+
export const ZARR_V2_CONSOLIDATED_METADATA_STORE_KEY = ".zmetadata";
|
|
99
|
+
|
|
100
|
+
/** The standard top-level keys of a merged v2 array metadata document. */
|
|
101
|
+
export const ARRAY_METADATA_REQUIRED_KEYS_V2 = exactKeys<RequiredKeysOf<ZarrV2ArrayMetadataJSON>>()([
|
|
102
|
+
"zarr_format",
|
|
103
|
+
"shape",
|
|
104
|
+
"chunks",
|
|
105
|
+
"dtype",
|
|
106
|
+
"compressor",
|
|
107
|
+
"fill_value",
|
|
108
|
+
"order",
|
|
109
|
+
"filters",
|
|
110
|
+
]);
|
|
111
|
+
export const ARRAY_METADATA_OPTIONAL_KEYS_V2 = exactKeys<OptionalKeysOf<ZarrV2ArrayMetadataJSON>>()([
|
|
112
|
+
"dimension_separator",
|
|
113
|
+
"attributes",
|
|
114
|
+
]);
|
|
115
|
+
export const ARRAY_METADATA_STANDARD_KEYS_V2 = [
|
|
116
|
+
...ARRAY_METADATA_REQUIRED_KEYS_V2,
|
|
117
|
+
...ARRAY_METADATA_OPTIONAL_KEYS_V2,
|
|
118
|
+
] as const;
|
|
119
|
+
|
|
120
|
+
/** The standard top-level keys of a merged v2 group metadata document. */
|
|
121
|
+
export const GROUP_METADATA_REQUIRED_KEYS_V2 = exactKeys<RequiredKeysOf<ZarrV2GroupMetadataJSON>>()(["zarr_format"]);
|
|
122
|
+
export const GROUP_METADATA_OPTIONAL_KEYS_V2 = exactKeys<OptionalKeysOf<ZarrV2GroupMetadataJSON>>()(["attributes"]);
|
|
123
|
+
export const GROUP_METADATA_STANDARD_KEYS_V2 = [
|
|
124
|
+
...GROUP_METADATA_REQUIRED_KEYS_V2,
|
|
125
|
+
...GROUP_METADATA_OPTIONAL_KEYS_V2,
|
|
126
|
+
] as const;
|