@f0rbit/corpus 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.
@@ -0,0 +1,173 @@
1
+ export type CorpusError = {
2
+ kind: 'not_found';
3
+ store_id: string;
4
+ version: string;
5
+ } | {
6
+ kind: 'already_exists';
7
+ store_id: string;
8
+ version: string;
9
+ } | {
10
+ kind: 'storage_error';
11
+ cause: Error;
12
+ operation: string;
13
+ } | {
14
+ kind: 'decode_error';
15
+ cause: Error;
16
+ } | {
17
+ kind: 'encode_error';
18
+ cause: Error;
19
+ } | {
20
+ kind: 'hash_mismatch';
21
+ expected: string;
22
+ actual: string;
23
+ } | {
24
+ kind: 'invalid_config';
25
+ message: string;
26
+ };
27
+ export type Result<T, E = CorpusError> = {
28
+ ok: true;
29
+ value: T;
30
+ } | {
31
+ ok: false;
32
+ error: E;
33
+ };
34
+ export declare const ok: <T>(value: T) => Result<T, never>;
35
+ export declare const err: <E>(error: E) => Result<never, E>;
36
+ export type CorpusEvent = {
37
+ type: 'meta_get';
38
+ store_id: string;
39
+ version: string;
40
+ found: boolean;
41
+ } | {
42
+ type: 'meta_put';
43
+ store_id: string;
44
+ version: string;
45
+ } | {
46
+ type: 'meta_delete';
47
+ store_id: string;
48
+ version: string;
49
+ } | {
50
+ type: 'meta_list';
51
+ store_id: string;
52
+ count: number;
53
+ } | {
54
+ type: 'data_get';
55
+ store_id: string;
56
+ version: string;
57
+ found: boolean;
58
+ } | {
59
+ type: 'data_put';
60
+ store_id: string;
61
+ version: string;
62
+ size_bytes: number;
63
+ deduplicated: boolean;
64
+ } | {
65
+ type: 'data_delete';
66
+ store_id: string;
67
+ version: string;
68
+ } | {
69
+ type: 'snapshot_put';
70
+ store_id: string;
71
+ version: string;
72
+ content_hash: string;
73
+ deduplicated: boolean;
74
+ } | {
75
+ type: 'snapshot_get';
76
+ store_id: string;
77
+ version: string;
78
+ found: boolean;
79
+ } | {
80
+ type: 'error';
81
+ error: CorpusError;
82
+ };
83
+ export type EventHandler = (event: CorpusEvent) => void;
84
+ export type ContentType = "application/json" | "text/plain" | "text/xml" | "image/png" | "image/jpeg" | "application/octet-stream" | (string & {});
85
+ export type ParentRef = {
86
+ store_id: string;
87
+ version: string;
88
+ role?: string;
89
+ };
90
+ export type SnapshotMeta = {
91
+ store_id: string;
92
+ version: string;
93
+ parents: ParentRef[];
94
+ created_at: Date;
95
+ invoked_at?: Date;
96
+ content_hash: string;
97
+ content_type: ContentType;
98
+ size_bytes: number;
99
+ data_key: string;
100
+ tags?: string[];
101
+ };
102
+ export type Snapshot<T = unknown> = {
103
+ meta: SnapshotMeta;
104
+ data: T;
105
+ };
106
+ export type DataHandle = {
107
+ stream: () => ReadableStream<Uint8Array>;
108
+ bytes: () => Promise<Uint8Array>;
109
+ };
110
+ export type MetadataClient = {
111
+ get: (store_id: string, version: string) => Promise<Result<SnapshotMeta, CorpusError>>;
112
+ put: (meta: SnapshotMeta) => Promise<Result<void, CorpusError>>;
113
+ delete: (store_id: string, version: string) => Promise<Result<void, CorpusError>>;
114
+ list: (store_id: string, opts?: ListOpts) => AsyncIterable<SnapshotMeta>;
115
+ get_latest: (store_id: string) => Promise<Result<SnapshotMeta, CorpusError>>;
116
+ get_children: (parent_store_id: string, parent_version: string) => AsyncIterable<SnapshotMeta>;
117
+ find_by_hash: (store_id: string, content_hash: string) => Promise<SnapshotMeta | null>;
118
+ };
119
+ export type DataClient = {
120
+ get: (data_key: string) => Promise<Result<DataHandle, CorpusError>>;
121
+ put: (data_key: string, data: ReadableStream<Uint8Array> | Uint8Array) => Promise<Result<void, CorpusError>>;
122
+ delete: (data_key: string) => Promise<Result<void, CorpusError>>;
123
+ exists: (data_key: string) => Promise<boolean>;
124
+ };
125
+ export type ListOpts = {
126
+ limit?: number;
127
+ cursor?: string;
128
+ before?: Date;
129
+ after?: Date;
130
+ tags?: string[];
131
+ };
132
+ export type Backend = {
133
+ metadata: MetadataClient;
134
+ data: DataClient;
135
+ on_event?: EventHandler;
136
+ };
137
+ export type Codec<T> = {
138
+ content_type: ContentType;
139
+ encode: (value: T) => Uint8Array;
140
+ decode: (bytes: Uint8Array) => T;
141
+ };
142
+ export type Store<T> = {
143
+ readonly id: string;
144
+ readonly codec: Codec<T>;
145
+ put: (data: T, opts?: PutOpts) => Promise<Result<SnapshotMeta, CorpusError>>;
146
+ get: (version: string) => Promise<Result<Snapshot<T>, CorpusError>>;
147
+ get_latest: () => Promise<Result<Snapshot<T>, CorpusError>>;
148
+ get_meta: (version: string) => Promise<Result<SnapshotMeta, CorpusError>>;
149
+ list: (opts?: ListOpts) => AsyncIterable<SnapshotMeta>;
150
+ delete: (version: string) => Promise<Result<void, CorpusError>>;
151
+ };
152
+ export type PutOpts = {
153
+ parents?: ParentRef[];
154
+ invoked_at?: Date;
155
+ tags?: string[];
156
+ };
157
+ export type StoreDefinition<Id extends string, T> = {
158
+ id: Id;
159
+ codec: Codec<T>;
160
+ description?: string;
161
+ };
162
+ export declare function define_store<Id extends string, T>(id: Id, codec: Codec<T>, description?: string): StoreDefinition<Id, T>;
163
+ export type CorpusBuilder<Stores extends Record<string, Store<any>> = {}> = {
164
+ with_backend: (backend: Backend) => CorpusBuilder<Stores>;
165
+ with_store: <Id extends string, T>(definition: StoreDefinition<Id, T>) => CorpusBuilder<Stores & Record<Id, Store<T>>>;
166
+ build: () => Corpus<Stores>;
167
+ };
168
+ export type Corpus<Stores extends Record<string, Store<any>> = Record<string, Store<any>>> = {
169
+ stores: Stores;
170
+ metadata: MetadataClient;
171
+ data: DataClient;
172
+ };
173
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ export const ok = (value) => ({ ok: true, value });
2
+ export const err = (error) => ({ ok: false, error });
3
+ export function define_store(id, codec, description) {
4
+ return { id, codec, description };
5
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Generates a unique, sortable version string.
3
+ * Format: base64url-encoded timestamp with optional sequence suffix for same-millisecond calls.
4
+ * Versions sort lexicographically in chronological order.
5
+ */
6
+ export declare function generate_version(): string;
7
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../version.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CA0BzC"}
@@ -0,0 +1,31 @@
1
+ let last_timestamp = 0;
2
+ let sequence = 0;
3
+ /**
4
+ * Generates a unique, sortable version string.
5
+ * Format: base64url-encoded timestamp with optional sequence suffix for same-millisecond calls.
6
+ * Versions sort lexicographically in chronological order.
7
+ */
8
+ export function generate_version() {
9
+ const now = Date.now();
10
+ if (now === last_timestamp) {
11
+ sequence++;
12
+ }
13
+ else {
14
+ last_timestamp = now;
15
+ sequence = 0;
16
+ }
17
+ // base64url encode the timestamp (no padding, url-safe)
18
+ const timestamp_bytes = new Uint8Array(8);
19
+ const view = new DataView(timestamp_bytes.buffer);
20
+ view.setBigUint64(0, BigInt(now), false); // big-endian for lexicographic sorting
21
+ // trim leading zeros for compactness
22
+ let start = 0;
23
+ while (start < 7 && timestamp_bytes[start] === 0)
24
+ start++;
25
+ const trimmed = timestamp_bytes.slice(start);
26
+ const base64 = btoa(String.fromCharCode(...trimmed))
27
+ .replace(/\+/g, '-')
28
+ .replace(/\//g, '_')
29
+ .replace(/=/g, '');
30
+ return sequence > 0 ? `${base64}.${sequence}` : base64;
31
+ }
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@f0rbit/corpus",
3
+ "version": "0.1.0",
4
+ "description": "A functional snapshotting library for TypeScript with versioned data storage, lineage tracking, and multiple backend support",
5
+ "module": "dist/index.js",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "type": "module",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ },
14
+ "./types": {
15
+ "import": "./dist/types.js",
16
+ "types": "./dist/types.d.ts"
17
+ },
18
+ "./schema": {
19
+ "import": "./dist/schema.js",
20
+ "types": "./dist/schema.d.ts"
21
+ }
22
+ },
23
+ "files": [
24
+ "dist"
25
+ ],
26
+ "scripts": {
27
+ "build": "tsc -p tsconfig.build.json",
28
+ "test": "bun test",
29
+ "typecheck": "tsc --noEmit",
30
+ "prepublishOnly": "npm run build"
31
+ },
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "git+https://github.com/f0rbit/corpus.git"
35
+ },
36
+ "keywords": [
37
+ "snapshot",
38
+ "versioning",
39
+ "data-store",
40
+ "lineage",
41
+ "typescript"
42
+ ],
43
+ "author": "f0rbit",
44
+ "license": "MIT",
45
+ "bugs": {
46
+ "url": "https://github.com/f0rbit/corpus/issues"
47
+ },
48
+ "homepage": "https://github.com/f0rbit/corpus#readme",
49
+ "publishConfig": {
50
+ "access": "public"
51
+ },
52
+ "devDependencies": {
53
+ "@types/bun": "latest"
54
+ },
55
+ "peerDependencies": {
56
+ "typescript": "^5",
57
+ "zod": "^3"
58
+ },
59
+ "dependencies": {
60
+ "drizzle-orm": "^0.44.7"
61
+ }
62
+ }