@f0rbit/corpus 0.1.9 → 0.2.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 @@
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../result.ts"],"names":[],"mappings":"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"}
package/dist/result.js ADDED
@@ -0,0 +1,319 @@
1
+ /**
2
+ * @module Result
3
+ * @description Extended utilities for working with Result types.
4
+ *
5
+ * Provides functional utilities for error handling without exceptions:
6
+ * - Pattern matching with `match`
7
+ * - Safe unwrapping with `unwrap_or`, `unwrap`, `unwrap_err`
8
+ * - Exception-to-Result conversion with `try_catch`, `try_catch_async`
9
+ * - Fetch wrapper with `fetch_result`
10
+ * - Composable pipelines with `pipe`
11
+ */
12
+ import { ok, err } from "./types";
13
+ /**
14
+ * Pattern match on a Result, extracting the value with appropriate handler.
15
+ *
16
+ * @param result - The Result to match on
17
+ * @param on_ok - Handler for success case
18
+ * @param on_err - Handler for error case
19
+ * @returns The return value of the matching handler
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * const result = await fetchUser(id)
24
+ * const message = match(
25
+ * result,
26
+ * user => `Hello, ${user.name}!`,
27
+ * error => `Failed: ${error.message}`
28
+ * )
29
+ * ```
30
+ */
31
+ export const match = (result, on_ok, on_err) => {
32
+ if (result.ok)
33
+ return on_ok(result.value);
34
+ return on_err(result.error);
35
+ };
36
+ /**
37
+ * Extract value from Result, returning default if error.
38
+ *
39
+ * @param result - The Result to unwrap
40
+ * @param default_value - Value to return if Result is an error
41
+ * @returns The success value or default
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * const users = unwrap_or(await fetchUsers(), [])
46
+ * ```
47
+ */
48
+ export const unwrap_or = (result, default_value) => (result.ok ? result.value : default_value);
49
+ /**
50
+ * Extract value from Result, throwing if error.
51
+ * Use only when you're certain the Result is Ok, or in tests.
52
+ *
53
+ * @param result - The Result to unwrap
54
+ * @returns The success value
55
+ * @throws Error if Result is an error
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * // In tests
60
+ * const user = unwrap(await createUser(data))
61
+ * expect(user.name).toBe('Alice')
62
+ * ```
63
+ */
64
+ export const unwrap = (result) => {
65
+ if (!result.ok)
66
+ throw new Error(`unwrap called on error result: ${JSON.stringify(result.error)}`);
67
+ return result.value;
68
+ };
69
+ /**
70
+ * Extract error from Result, throwing if Ok.
71
+ * Use only when you're certain the Result is Err, or in tests.
72
+ *
73
+ * @param result - The Result to unwrap
74
+ * @returns The error value
75
+ * @throws Error if Result is Ok
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * // In tests
80
+ * const error = unwrap_err(await createUser(invalidData))
81
+ * expect(error.kind).toBe('validation_error')
82
+ * ```
83
+ */
84
+ export const unwrap_err = (result) => {
85
+ if (result.ok)
86
+ throw new Error(`unwrap_err called on ok result: ${JSON.stringify(result.value)}`);
87
+ return result.error;
88
+ };
89
+ /**
90
+ * Execute a function and convert exceptions to Result.
91
+ *
92
+ * @param fn - Function to execute
93
+ * @param on_error - Transform caught exception to error type
94
+ * @returns Result containing success value or transformed error
95
+ *
96
+ * @example
97
+ * ```ts
98
+ * const result = try_catch(
99
+ * () => JSON.parse(input),
100
+ * e => ({ kind: 'parse_error', message: format_error(e) })
101
+ * )
102
+ * ```
103
+ */
104
+ export const try_catch = (fn, on_error) => {
105
+ try {
106
+ return ok(fn());
107
+ }
108
+ catch (e) {
109
+ return err(on_error(e));
110
+ }
111
+ };
112
+ /**
113
+ * Execute an async function and convert exceptions to Result.
114
+ *
115
+ * @param fn - Async function to execute
116
+ * @param on_error - Transform caught exception to error type
117
+ * @returns Promise of Result containing success value or transformed error
118
+ *
119
+ * @example
120
+ * ```ts
121
+ * const result = await try_catch_async(
122
+ * () => db.query('SELECT * FROM users'),
123
+ * e => ({ kind: 'database_error', cause: e })
124
+ * )
125
+ * ```
126
+ */
127
+ export const try_catch_async = async (fn, on_error) => {
128
+ try {
129
+ return ok(await fn());
130
+ }
131
+ catch (e) {
132
+ return err(on_error(e));
133
+ }
134
+ };
135
+ /**
136
+ * Fetch wrapper that returns Result instead of throwing.
137
+ *
138
+ * @param input - URL or Request to fetch
139
+ * @param init - Fetch options
140
+ * @param on_error - Transform FetchError to your error type
141
+ * @param parse_body - Custom body parser (defaults to JSON)
142
+ * @returns Promise of Result with parsed response or error
143
+ *
144
+ * @example
145
+ * ```ts
146
+ * const result = await fetch_result(
147
+ * 'https://api.example.com/users',
148
+ * { headers: { Authorization: `Bearer ${token}` } },
149
+ * e => e.type === 'http' ? `HTTP ${e.status}` : 'Network error'
150
+ * )
151
+ * ```
152
+ */
153
+ export const fetch_result = async (input, init, on_error, parse_body = r => r.json()) => {
154
+ try {
155
+ const response = await fetch(input, init);
156
+ if (!response.ok) {
157
+ return err(on_error({ type: "http", status: response.status, status_text: response.statusText }));
158
+ }
159
+ return ok(await parse_body(response));
160
+ }
161
+ catch (e) {
162
+ return err(on_error({ type: "network", cause: e }));
163
+ }
164
+ };
165
+ const create_pipe = (promised) => ({
166
+ map: (fn) => create_pipe(promised.then((r) => {
167
+ if (r.ok)
168
+ return ok(fn(r.value));
169
+ return err(r.error);
170
+ })),
171
+ map_async: (fn) => create_pipe(promised.then(async (r) => {
172
+ if (r.ok)
173
+ return ok(await fn(r.value));
174
+ return err(r.error);
175
+ })),
176
+ flat_map: (fn) => create_pipe(promised.then((r) => {
177
+ if (r.ok)
178
+ return fn(r.value);
179
+ return err(r.error);
180
+ })),
181
+ map_err: (fn) => create_pipe(promised.then((r) => {
182
+ if (r.ok)
183
+ return ok(r.value);
184
+ return err(fn(r.error));
185
+ })),
186
+ tap: (fn) => create_pipe(promised.then(async (r) => {
187
+ if (r.ok)
188
+ await fn(r.value);
189
+ return r;
190
+ })),
191
+ tap_err: (fn) => create_pipe(promised.then(async (r) => {
192
+ if (!r.ok)
193
+ await fn(r.error);
194
+ return r;
195
+ })),
196
+ unwrap_or: (default_value) => promised.then(r => (r.ok ? r.value : default_value)),
197
+ result: () => promised,
198
+ });
199
+ /**
200
+ * Create a composable pipeline from a Result or Promise<Result>.
201
+ *
202
+ * @param initial - Starting Result value (sync or async)
203
+ * @returns A Pipe for chaining operations
204
+ *
205
+ * @example
206
+ * ```ts
207
+ * // From existing Result
208
+ * const result = await pipe(ok(42))
209
+ * .map(n => n * 2)
210
+ * .result()
211
+ *
212
+ * // From async operation
213
+ * const user = await pipe(fetchUser(id))
214
+ * .flat_map(u => fetchProfile(u.id))
215
+ * .result()
216
+ * ```
217
+ */
218
+ export const pipe = (initial) => create_pipe(Promise.resolve(initial));
219
+ /** Create a pipe starting with an Ok value */
220
+ pipe.ok = (value) => pipe(ok(value));
221
+ /** Create a pipe starting with an Err value */
222
+ pipe.err = (error) => pipe(err(error));
223
+ /** Create a pipe from a function that may throw */
224
+ pipe.try = (fn, on_error) => pipe(try_catch_async(fn, on_error));
225
+ /** Create a pipe from a fetch operation */
226
+ pipe.fetch = (input, init, on_error, parse_body) => pipe(fetch_result(input, init, on_error, parse_body));
227
+ /**
228
+ * Extract value from Result, returning null for any error.
229
+ * Use for "fetch single resource" patterns where not-found is expected.
230
+ *
231
+ * @param result - The Result to convert
232
+ * @returns The value or null
233
+ *
234
+ * @example
235
+ * ```ts
236
+ * const user = to_nullable(await store.get(userId))
237
+ * if (!user) return <NotFound />
238
+ * ```
239
+ */
240
+ export const to_nullable = (result) => (result.ok ? result.value : null);
241
+ /**
242
+ * Extract value from Result, returning fallback for any error.
243
+ * Use for list endpoints where empty array is acceptable.
244
+ *
245
+ * @param result - The Result to convert
246
+ * @param fallback - Value to return on error
247
+ * @returns The value or fallback
248
+ *
249
+ * @example
250
+ * ```ts
251
+ * const items = to_fallback(await store.list(), [])
252
+ * ```
253
+ */
254
+ export const to_fallback = (result, fallback) => (result.ok ? result.value : fallback);
255
+ /**
256
+ * Return null if error matches predicate, otherwise throw the error.
257
+ * Use for 404-as-null pattern specifically.
258
+ *
259
+ * @param result - The Result to check
260
+ * @param predicate - Returns true for expected errors (e.g., not_found)
261
+ * @returns The value or null for expected errors
262
+ * @throws The error if predicate returns false
263
+ *
264
+ * @example
265
+ * ```ts
266
+ * const user = null_on(
267
+ * await store.get(id),
268
+ * e => e.kind === 'not_found'
269
+ * )
270
+ * ```
271
+ */
272
+ export const null_on = (result, predicate) => {
273
+ if (result.ok)
274
+ return result.value;
275
+ if (predicate(result.error))
276
+ return null;
277
+ throw result.error;
278
+ };
279
+ /**
280
+ * Return fallback if error matches predicate, otherwise throw.
281
+ *
282
+ * @param result - The Result to check
283
+ * @param predicate - Returns true for expected errors
284
+ * @param fallback - Value to return for expected errors
285
+ * @returns The value or fallback for expected errors
286
+ * @throws The error if predicate returns false
287
+ *
288
+ * @example
289
+ * ```ts
290
+ * const count = fallback_on(
291
+ * await store.count(),
292
+ * e => e.kind === 'not_found',
293
+ * 0
294
+ * )
295
+ * ```
296
+ */
297
+ export const fallback_on = (result, predicate, fallback) => {
298
+ if (result.ok)
299
+ return result.value;
300
+ if (predicate(result.error))
301
+ return fallback;
302
+ throw result.error;
303
+ };
304
+ /**
305
+ * Format an unknown error to a string message.
306
+ *
307
+ * @param e - Any error value
308
+ * @returns A string representation
309
+ *
310
+ * @example
311
+ * ```ts
312
+ * try {
313
+ * riskyOperation()
314
+ * } catch (e) {
315
+ * console.error(format_error(e)) // Handles Error, string, or anything
316
+ * }
317
+ * ```
318
+ */
319
+ export const format_error = (e) => (e instanceof Error ? e.message : String(e));
package/dist/types.d.ts CHANGED
@@ -214,10 +214,12 @@ export type Snapshot<T = unknown> = {
214
214
  meta: SnapshotMeta;
215
215
  data: T;
216
216
  };
217
+ /** @internal */
217
218
  export type DataHandle = {
218
219
  stream: () => ReadableStream<Uint8Array>;
219
220
  bytes: () => Promise<Uint8Array>;
220
221
  };
222
+ /** @internal */
221
223
  export type MetadataClient = {
222
224
  get: (store_id: string, version: string) => Promise<Result<SnapshotMeta, CorpusError>>;
223
225
  put: (meta: SnapshotMeta) => Promise<Result<void, CorpusError>>;
@@ -227,6 +229,7 @@ export type MetadataClient = {
227
229
  get_children: (parent_store_id: string, parent_version: string) => AsyncIterable<SnapshotMeta>;
228
230
  find_by_hash: (store_id: string, content_hash: string) => Promise<SnapshotMeta | null>;
229
231
  };
232
+ /** @internal */
230
233
  export type DataClient = {
231
234
  get: (data_key: string) => Promise<Result<DataHandle, CorpusError>>;
232
235
  put: (data_key: string, data: ReadableStream<Uint8Array> | Uint8Array) => Promise<Result<void, CorpusError>>;
@@ -301,6 +304,34 @@ export type Codec<T> = {
301
304
  encode: (value: T) => Uint8Array;
302
305
  decode: (bytes: Uint8Array) => T;
303
306
  };
307
+ /**
308
+ * Structural type for schema validators (Zod, Valibot, or custom).
309
+ *
310
+ * Any object with a `parse(data: unknown) => T` method satisfies this interface.
311
+ * Used by `json_codec()` to validate data on decode without importing a specific library.
312
+ *
313
+ * @category Types
314
+ * @group Codec Types
315
+ * @example
316
+ * ```ts
317
+ * import { z } from 'zod'
318
+ *
319
+ * // Zod schemas satisfy Parser<T>
320
+ * const UserSchema = z.object({ name: z.string() })
321
+ * const codec = json_codec(UserSchema) // works!
322
+ *
323
+ * // Custom parsers work too
324
+ * const myParser: Parser<number> = {
325
+ * parse: (data) => {
326
+ * if (typeof data !== 'number') throw new Error('Expected number')
327
+ * return data
328
+ * }
329
+ * }
330
+ * ```
331
+ */
332
+ export type Parser<T> = {
333
+ parse: (data: unknown) => T;
334
+ };
304
335
  /**
305
336
  * A typed store for managing versioned data snapshots.
306
337
  *
@@ -335,6 +366,7 @@ export type PutOpts = {
335
366
  };
336
367
  /**
337
368
  * Context passed to data_key_fn for generating custom storage paths.
369
+ * @internal
338
370
  */
339
371
  export type DataKeyContext = {
340
372
  store_id: string;
@@ -397,6 +429,7 @@ export type DefineStoreOpts = {
397
429
  * ```
398
430
  */
399
431
  export declare function define_store<Id extends string, T>(id: Id, codec: Codec<T>, opts?: DefineStoreOpts | string): StoreDefinition<Id, T>;
432
+ /** @internal */
400
433
  export type CorpusBuilder<Stores extends Record<string, Store<any>> = {}> = {
401
434
  with_backend: (backend: Backend) => CorpusBuilder<Stores>;
402
435
  with_store: <Id extends string, T>(definition: StoreDefinition<Id, T>) => CorpusBuilder<Stores & Record<Id, Store<T>>>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,sBAAsB,CAAA;AAE7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAEjD;;;;GAIG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,IACjC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAA;AAE3B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,EAAE,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAA0B,CAAA;AAE1E;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAA2B,CAAA;AAE5E,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,GAClG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,GACxG;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAA;AAEzC,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;AAEvD,MAAM,MAAM,WAAW,GACnB,kBAAkB,GAClB,YAAY,GACZ,UAAU,GACV,WAAW,GACX,YAAY,GACZ,0BAA0B,GAC1B,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEjB,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB,UAAU,EAAE,IAAI,CAAA;IAChB,UAAU,CAAC,EAAE,IAAI,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,WAAW,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,OAAO,IAAI;IAClC,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,EAAE,CAAC,CAAA;CACR,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,cAAc,CAAC,UAAU,CAAC,CAAA;IACxC,KAAK,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAA;IACtF,GAAG,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;IAC/D,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;IACjF,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,KAAK,aAAa,CAAC,YAAY,CAAC,CAAA;IACxE,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAA;IAC5E,YAAY,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,aAAa,CAAC,YAAY,CAAC,CAAA;IAC9F,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAA;CACvF,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;IACnE,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;IAC5G,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;IAChE,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC/C,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,IAAI,CAAA;IACb,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,cAAc,CAAA;IACxB,IAAI,EAAE,UAAU,CAAA;IAChB,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,QAAQ,CAAC,EAAE,YAAY,CAAA;CACxB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACrB,YAAY,EAAE,WAAW,CAAA;IACzB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAA;IAChC,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,CAAC,CAAA;CACjC,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IACxB,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAA;IAC5E,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAA;IACnE,UAAU,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAA;IAC3D,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAA;IACzE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,KAAK,aAAa,CAAC,YAAY,CAAC,CAAA;IACtD,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;CAChE,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAA;IACrB,UAAU,CAAC,EAAE,IAAI,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC,IAAI;IAClD,EAAE,EAAE,EAAE,CAAA;IACN,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0GAA0G;IAC1G,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,MAAM,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0GAA0G;IAC1G,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,MAAM,CAAA;CAC9C,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC,EAC/C,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,CAAC,EAAE,eAAe,GAAG,MAAM,GAC9B,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,CAMxB;AAED,MAAM,MAAM,aAAa,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI;IAC1E,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,aAAa,CAAC,MAAM,CAAC,CAAA;IACzD,UAAU,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC,EAC/B,UAAU,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,KAC/B,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjD,iBAAiB,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,KAAK,aAAa,CAAC,MAAM,CAAC,CAAA;IAClF,KAAK,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI;IAC3F,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,cAAc,CAAA;IACxB,IAAI,EAAE,UAAU,CAAA;IAChB,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,eAAe,CAAA;IAC5H,eAAe,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAA;IACjF,aAAa,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9D,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAA;IAClH,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAA;IAC9D,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,oBAAoB,KAAK,aAAa,CAAC,WAAW,CAAC,CAAA;IAClE,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,oBAAoB,KAAK,aAAa,CAAC,eAAe,CAAC,CAAA;IAC3E,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;IAC1D,gBAAgB,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;IACnF,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACzD,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * @module Utilities
3
3
  * @description Utility functions for hashing, versioning, and codecs.
4
4
  */
5
- import type { Codec, CorpusEvent, EventHandler, SnapshotMeta, ListOpts, ParentRef } from "./types";
5
+ import type { Codec, CorpusEvent, EventHandler, SnapshotMeta, ListOpts, ParentRef, Parser } from "./types";
6
6
  /**
7
7
  * Computes the SHA-256 hash of binary data.
8
8
  * @category Utilities
@@ -46,9 +46,6 @@ export declare function compute_hash(data: Uint8Array): Promise<string>;
46
46
  * ```
47
47
  */
48
48
  export declare function generate_version(): string;
49
- type ZodLike<T> = {
50
- parse: (data: unknown) => T;
51
- };
52
49
  /**
53
50
  * Creates a JSON codec with schema validation.
54
51
  *
@@ -81,7 +78,7 @@ type ZodLike<T> = {
81
78
  * const user = codec.decode(bytes) // createdAt is now a Date object
82
79
  * ```
83
80
  */
84
- export declare function json_codec<T>(schema: ZodLike<T>): Codec<T>;
81
+ export declare function json_codec<T>(schema: Parser<T>): Codec<T>;
85
82
  /**
86
83
  * Creates a plain text codec using UTF-8 encoding.
87
84
  *
@@ -145,6 +142,43 @@ export declare function to_bytes(data: ReadableStream<Uint8Array> | Uint8Array):
145
142
  * Create an event emitter function from an optional handler.
146
143
  */
147
144
  export declare function create_emitter(handler?: EventHandler): (event: CorpusEvent) => void;
145
+ /**
146
+ * Configuration for a filter pipeline.
147
+ * @typeParam T - The type of items being filtered
148
+ * @typeParam Opts - The options type containing filter criteria
149
+ */
150
+ export type FilterPipelineConfig<T, Opts> = {
151
+ filters: Array<{
152
+ key: keyof Opts;
153
+ predicate: (item: T, optValue: NonNullable<Opts[keyof Opts]>) => boolean;
154
+ }>;
155
+ sort: (a: T, b: T) => number;
156
+ };
157
+ /**
158
+ * Creates a reusable filter pipeline function.
159
+ * Applies filters based on options, sorts results, and applies optional limit.
160
+ *
161
+ * @typeParam T - The type of items being filtered
162
+ * @typeParam Opts - The options type (must include optional limit)
163
+ * @param config - Filter definitions and sort function
164
+ * @returns A function that filters, sorts, and limits items
165
+ *
166
+ * @example
167
+ * ```ts
168
+ * const filter_users = create_filter_pipeline<User, UserQueryOpts>({
169
+ * filters: [
170
+ * { key: 'role', predicate: (u, role) => u.role === role },
171
+ * { key: 'active', predicate: (u, active) => u.active === active }
172
+ * ],
173
+ * sort: (a, b) => b.created_at.getTime() - a.created_at.getTime()
174
+ * })
175
+ *
176
+ * const results = filter_users(users, { role: 'admin', limit: 10 })
177
+ * ```
178
+ */
179
+ export declare function create_filter_pipeline<T, Opts extends {
180
+ limit?: number;
181
+ }>(config: FilterPipelineConfig<T, Opts>): (items: T[], opts: Opts) => T[];
148
182
  /**
149
183
  * Filter and sort snapshot metadata based on list options.
150
184
  * Used by in-memory storage implementations (memory backend, file backend).
@@ -166,5 +200,4 @@ export declare function parse_snapshot_meta(raw: {
166
200
  content_type?: string;
167
201
  size_bytes?: number;
168
202
  }): SnapshotMeta;
169
- export {};
170
203
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAe,MAAM,SAAS,CAAC;AAEhH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAIpE;AAKD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CA0BzC;AAGD,KAAK,OAAO,CAAC,CAAC,IAAI;IAAE,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,CAAC,CAAA;CAAE,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAM1D;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,CAM1C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,YAAY,IAAI,KAAK,CAAC,UAAU,CAAC,CAMhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAS7D;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAS7F;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAEjG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAEnF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,YAAY,EAAE,EACrB,IAAI,GAAE,QAAa,GACjB,YAAY,EAAE,CAuBhB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,IAAI,CAAA;IACrC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,GAAG,YAAY,CAmBf"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"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"}
package/dist/utils.js CHANGED
@@ -211,26 +211,58 @@ export async function to_bytes(data) {
211
211
  export function create_emitter(handler) {
212
212
  return (event) => handler?.(event);
213
213
  }
214
+ /**
215
+ * Creates a reusable filter pipeline function.
216
+ * Applies filters based on options, sorts results, and applies optional limit.
217
+ *
218
+ * @typeParam T - The type of items being filtered
219
+ * @typeParam Opts - The options type (must include optional limit)
220
+ * @param config - Filter definitions and sort function
221
+ * @returns A function that filters, sorts, and limits items
222
+ *
223
+ * @example
224
+ * ```ts
225
+ * const filter_users = create_filter_pipeline<User, UserQueryOpts>({
226
+ * filters: [
227
+ * { key: 'role', predicate: (u, role) => u.role === role },
228
+ * { key: 'active', predicate: (u, active) => u.active === active }
229
+ * ],
230
+ * sort: (a, b) => b.created_at.getTime() - a.created_at.getTime()
231
+ * })
232
+ *
233
+ * const results = filter_users(users, { role: 'admin', limit: 10 })
234
+ * ```
235
+ */
236
+ export function create_filter_pipeline(config) {
237
+ return (items, opts) => {
238
+ let filtered = items;
239
+ for (const { key, predicate } of config.filters) {
240
+ const optValue = opts[key];
241
+ if (optValue !== undefined && optValue !== null) {
242
+ filtered = filtered.filter(item => predicate(item, optValue));
243
+ }
244
+ }
245
+ filtered.sort(config.sort);
246
+ if (opts.limit) {
247
+ filtered = filtered.slice(0, opts.limit);
248
+ }
249
+ return filtered;
250
+ };
251
+ }
252
+ const snapshot_filter_pipeline = create_filter_pipeline({
253
+ filters: [
254
+ { key: 'before', predicate: (m, before) => m.created_at < before },
255
+ { key: 'after', predicate: (m, after) => m.created_at > after },
256
+ { key: 'tags', predicate: (m, tags) => tags.length === 0 || tags.every(tag => m.tags?.includes(tag)) }
257
+ ],
258
+ sort: (a, b) => b.created_at.getTime() - a.created_at.getTime()
259
+ });
214
260
  /**
215
261
  * Filter and sort snapshot metadata based on list options.
216
262
  * Used by in-memory storage implementations (memory backend, file backend).
217
263
  */
218
264
  export function filter_snapshots(metas, opts = {}) {
219
- let filtered = metas;
220
- if (opts.before) {
221
- filtered = filtered.filter(m => m.created_at < opts.before);
222
- }
223
- if (opts.after) {
224
- filtered = filtered.filter(m => m.created_at > opts.after);
225
- }
226
- if (opts.tags && opts.tags.length > 0) {
227
- filtered = filtered.filter(m => opts.tags.every(tag => m.tags?.includes(tag)));
228
- }
229
- filtered.sort((a, b) => b.created_at.getTime() - a.created_at.getTime());
230
- if (opts.limit) {
231
- filtered = filtered.slice(0, opts.limit);
232
- }
233
- return filtered;
265
+ return snapshot_filter_pipeline(metas, opts);
234
266
  }
235
267
  /**
236
268
  * Parse a raw snapshot object (from JSON or database row) into a proper SnapshotMeta.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@f0rbit/corpus",
3
- "version": "0.1.9",
3
+ "version": "0.2.0",
4
4
  "description": "A functional snapshotting library for TypeScript with versioned data storage, lineage tracking, and multiple backend support",
5
5
  "module": "dist/index.js",
6
6
  "main": "dist/index.js",