@f0rbit/corpus 0.3.3 → 0.3.4

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 CHANGED
@@ -5,14 +5,14 @@ a functional snapshotting library for typescript. store versioned data with line
5
5
  ## install
6
6
 
7
7
  ```bash
8
- bun add corpus
8
+ bun add @f0rbit/corpus
9
9
  ```
10
10
 
11
11
  ## usage
12
12
 
13
13
  ```typescript
14
14
  import { z } from 'zod'
15
- import { create_corpus, create_memory_backend, define_store, json_codec } from 'corpus'
15
+ import { create_corpus, create_memory_backend, define_store, json_codec } from '@f0rbit/corpus'
16
16
 
17
17
  const TimelineSchema = z.object({
18
18
  items: z.array(z.object({ id: z.string(), text: z.string() })),
@@ -28,7 +28,8 @@ export type CloudflareBackendConfig = {
28
28
  * @group Storage Backends
29
29
  *
30
30
  * Uses D1 (SQLite) for metadata storage and R2 (object storage) for binary data.
31
- * Requires running `CORPUS_MIGRATION_SQL` on the D1 database before first use.
31
+ * Database migrations should be managed via Drizzle Kit using the exported
32
+ * `corpus_snapshots` and `corpus_observations` schemas.
32
33
  *
33
34
  * This backend is designed for production use in Cloudflare Workers environments,
34
35
  * providing durable, globally distributed storage.
@@ -56,7 +57,8 @@ export type CloudflareBackendConfig = {
56
57
  * }
57
58
  * ```
58
59
  *
59
- * @see CORPUS_MIGRATION_SQL for required database setup
60
+ * @see corpus_snapshots - Drizzle schema for snapshot metadata
61
+ * @see corpus_observations - Drizzle schema for observations
60
62
  */
61
63
  export declare function create_cloudflare_backend(config: CloudflareBackendConfig): Backend;
62
64
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../backend/cloudflare.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAiE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOxH,KAAK,UAAU,GAAG;IAAE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CAAE,CAAC;AACxD,KAAK,QAAQ,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;QAAC,WAAW,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACpH,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACrC,EAAE,EAAE,UAAU,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;IACb,QAAQ,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AA6IF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAmOlF"}
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../backend/cloudflare.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAiE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOxH,KAAK,UAAU,GAAG;IAAE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CAAE,CAAC;AACxD,KAAK,QAAQ,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;QAAC,WAAW,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACpH,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACrC,EAAE,EAAE,UAAU,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;IACb,QAAQ,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AA6IF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAmOlF"}
@@ -141,7 +141,8 @@ function create_cloudflare_storage(db) {
141
141
  * @group Storage Backends
142
142
  *
143
143
  * Uses D1 (SQLite) for metadata storage and R2 (object storage) for binary data.
144
- * Requires running `CORPUS_MIGRATION_SQL` on the D1 database before first use.
144
+ * Database migrations should be managed via Drizzle Kit using the exported
145
+ * `corpus_snapshots` and `corpus_observations` schemas.
145
146
  *
146
147
  * This backend is designed for production use in Cloudflare Workers environments,
147
148
  * providing durable, globally distributed storage.
@@ -169,7 +170,8 @@ function create_cloudflare_storage(db) {
169
170
  * }
170
171
  * ```
171
172
  *
172
- * @see CORPUS_MIGRATION_SQL for required database setup
173
+ * @see corpus_snapshots - Drizzle schema for snapshot metadata
174
+ * @see corpus_observations - Drizzle schema for observations
173
175
  */
174
176
  export function create_cloudflare_backend(config) {
175
177
  const db = drizzle(config.d1);
package/dist/index.d.ts CHANGED
@@ -9,5 +9,5 @@ export { ok, err, define_store } from './types.js';
9
9
  export { match, unwrap_or, unwrap, unwrap_err, try_catch, try_catch_async, fetch_result, pipe, to_nullable, to_fallback, null_on, fallback_on, format_error, at, first, last, merge_deep, type DeepPartial, type FetchError, type Pipe, } from './result.js';
10
10
  export { Semaphore, parallel_map } from './concurrency.js';
11
11
  export * from './observations/index.js';
12
- export { createCorpusInfra, CORPUS_MIGRATION_SQL, type CorpusInfra, type CorpusInfraConfig } from './sst.js';
12
+ export { createCorpusInfra, type CorpusInfra, type CorpusInfraConfig } from './sst.js';
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,yBAAyB,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,EAAE,sBAAsB,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE1F,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAElG,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAElG,YAAY,EACX,WAAW,EACX,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,OAAO,EACP,KAAK,EACL,MAAM,EACN,KAAK,EACL,eAAe,EACf,eAAe,EACf,cAAc,EACd,OAAO,EACP,aAAa,EACb,MAAM,EACN,WAAW,EACX,MAAM,EACN,WAAW,EACX,YAAY,EACZ,kBAAkB,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EACN,KAAK,EACL,SAAS,EACT,MAAM,EACN,UAAU,EACV,SAAS,EACT,eAAe,EACf,YAAY,EACZ,IAAI,EACJ,WAAW,EACX,WAAW,EACX,OAAO,EACP,WAAW,EACX,YAAY,EACZ,EAAE,EACF,KAAK,EACL,IAAI,EACJ,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,IAAI,GACT,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE3D,cAAc,yBAAyB,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,yBAAyB,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,EAAE,sBAAsB,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE1F,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAElG,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAElG,YAAY,EACX,WAAW,EACX,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,OAAO,EACP,KAAK,EACL,MAAM,EACN,KAAK,EACL,eAAe,EACf,eAAe,EACf,cAAc,EACd,OAAO,EACP,aAAa,EACb,MAAM,EACN,WAAW,EACX,MAAM,EACN,WAAW,EACX,YAAY,EACZ,kBAAkB,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EACN,KAAK,EACL,SAAS,EACT,MAAM,EACN,UAAU,EACV,SAAS,EACT,eAAe,EACf,YAAY,EACZ,IAAI,EACJ,WAAW,EACX,WAAW,EACX,OAAO,EACP,WAAW,EACX,YAAY,EACZ,EAAE,EACF,KAAK,EACL,IAAI,EACJ,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,IAAI,GACT,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE3D,cAAc,yBAAyB,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -8,4 +8,4 @@ export { ok, err, define_store } from './types.js';
8
8
  export { match, unwrap_or, unwrap, unwrap_err, try_catch, try_catch_async, fetch_result, pipe, to_nullable, to_fallback, null_on, fallback_on, format_error, at, first, last, merge_deep, } from './result.js';
9
9
  export { Semaphore, parallel_map } from './concurrency.js';
10
10
  export * from './observations/index.js';
11
- export { createCorpusInfra, CORPUS_MIGRATION_SQL } from './sst.js';
11
+ export { createCorpusInfra } from './sst.js';
package/dist/sst.d.ts CHANGED
@@ -35,22 +35,4 @@ export type CorpusInfra = {
35
35
  * ```
36
36
  */
37
37
  export declare function createCorpusInfra(name: string, config?: Partial<CorpusInfraConfig>): CorpusInfra;
38
- /**
39
- * SQL migration script to create required D1 tables for the Cloudflare backend.
40
- *
41
- * Must be executed on the D1 database before using `create_cloudflare_backend()`.
42
- * Creates the `corpus_snapshots` table and required indexes.
43
- *
44
- * Safe to run multiple times (uses IF NOT EXISTS).
45
- *
46
- * @example
47
- * ```ts
48
- * // Run migration via wrangler
49
- * // wrangler d1 execute <database-name> --command "$(cat migration.sql)"
50
- *
51
- * // Or programmatically in a Worker
52
- * await env.CORPUS_DB.exec(CORPUS_MIGRATION_SQL)
53
- * ```
54
- */
55
- export declare const CORPUS_MIGRATION_SQL = "\nCREATE TABLE IF NOT EXISTS corpus_snapshots (\n store_id TEXT NOT NULL,\n version TEXT NOT NULL,\n parents TEXT NOT NULL,\n created_at TEXT NOT NULL,\n invoked_at TEXT,\n content_hash TEXT NOT NULL,\n content_type TEXT NOT NULL,\n size_bytes INTEGER NOT NULL,\n data_key TEXT NOT NULL,\n tags TEXT,\n PRIMARY KEY (store_id, version)\n);\n\nCREATE INDEX IF NOT EXISTS idx_store_created ON corpus_snapshots(store_id, created_at);\nCREATE INDEX IF NOT EXISTS idx_content_hash ON corpus_snapshots(store_id, content_hash);\nCREATE INDEX IF NOT EXISTS idx_data_key ON corpus_snapshots(data_key);\n\nCREATE TABLE IF NOT EXISTS corpus_observations (\n id TEXT PRIMARY KEY,\n type TEXT NOT NULL,\n source_store_id TEXT NOT NULL,\n source_version TEXT NOT NULL,\n source_path TEXT,\n source_span_start TEXT,\n source_span_end TEXT,\n content TEXT NOT NULL,\n confidence REAL,\n observed_at TEXT,\n created_at TEXT NOT NULL,\n derived_from TEXT\n);\n\nCREATE INDEX IF NOT EXISTS idx_obs_type ON corpus_observations(type);\nCREATE INDEX IF NOT EXISTS idx_obs_source ON corpus_observations(source_store_id, source_version);\nCREATE INDEX IF NOT EXISTS idx_obs_type_observed ON corpus_observations(type, observed_at);\nCREATE INDEX IF NOT EXISTS idx_obs_type_source ON corpus_observations(type, source_store_id);\n";
56
38
  //# sourceMappingURL=sst.d.ts.map
package/dist/sst.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sst.d.ts","sourceRoot":"","sources":["../sst.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAClC,WAAW,CAUb;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oBAAoB,kzCAsChC,CAAA"}
1
+ {"version":3,"file":"sst.d.ts","sourceRoot":"","sources":["../sst.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAClC,WAAW,CAUb"}
package/dist/sst.js CHANGED
@@ -29,59 +29,3 @@ export function createCorpusInfra(name, config) {
29
29
  bucket_name,
30
30
  };
31
31
  }
32
- /**
33
- * SQL migration script to create required D1 tables for the Cloudflare backend.
34
- *
35
- * Must be executed on the D1 database before using `create_cloudflare_backend()`.
36
- * Creates the `corpus_snapshots` table and required indexes.
37
- *
38
- * Safe to run multiple times (uses IF NOT EXISTS).
39
- *
40
- * @example
41
- * ```ts
42
- * // Run migration via wrangler
43
- * // wrangler d1 execute <database-name> --command "$(cat migration.sql)"
44
- *
45
- * // Or programmatically in a Worker
46
- * await env.CORPUS_DB.exec(CORPUS_MIGRATION_SQL)
47
- * ```
48
- */
49
- export const CORPUS_MIGRATION_SQL = `
50
- CREATE TABLE IF NOT EXISTS corpus_snapshots (
51
- store_id TEXT NOT NULL,
52
- version TEXT NOT NULL,
53
- parents TEXT NOT NULL,
54
- created_at TEXT NOT NULL,
55
- invoked_at TEXT,
56
- content_hash TEXT NOT NULL,
57
- content_type TEXT NOT NULL,
58
- size_bytes INTEGER NOT NULL,
59
- data_key TEXT NOT NULL,
60
- tags TEXT,
61
- PRIMARY KEY (store_id, version)
62
- );
63
-
64
- CREATE INDEX IF NOT EXISTS idx_store_created ON corpus_snapshots(store_id, created_at);
65
- CREATE INDEX IF NOT EXISTS idx_content_hash ON corpus_snapshots(store_id, content_hash);
66
- CREATE INDEX IF NOT EXISTS idx_data_key ON corpus_snapshots(data_key);
67
-
68
- CREATE TABLE IF NOT EXISTS corpus_observations (
69
- id TEXT PRIMARY KEY,
70
- type TEXT NOT NULL,
71
- source_store_id TEXT NOT NULL,
72
- source_version TEXT NOT NULL,
73
- source_path TEXT,
74
- source_span_start TEXT,
75
- source_span_end TEXT,
76
- content TEXT NOT NULL,
77
- confidence REAL,
78
- observed_at TEXT,
79
- created_at TEXT NOT NULL,
80
- derived_from TEXT
81
- );
82
-
83
- CREATE INDEX IF NOT EXISTS idx_obs_type ON corpus_observations(type);
84
- CREATE INDEX IF NOT EXISTS idx_obs_source ON corpus_observations(source_store_id, source_version);
85
- CREATE INDEX IF NOT EXISTS idx_obs_type_observed ON corpus_observations(type, observed_at);
86
- CREATE INDEX IF NOT EXISTS idx_obs_type_source ON corpus_observations(type, source_store_id);
87
- `;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@f0rbit/corpus",
3
- "version": "0.3.3",
3
+ "version": "0.3.4",
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",
@@ -36,11 +36,12 @@
36
36
  "files": ["dist"],
37
37
  "scripts": {
38
38
  "build": "tsc -p tsconfig.build.json",
39
+ "build:llm": "node scripts/generate-llm-docs.js",
39
40
  "test": "bun test",
40
41
  "typecheck": "tsc --noEmit",
41
42
  "prepublishOnly": "npm run build",
42
43
  "docs:dev": "cd docs && bun run dev",
43
- "docs:build": "cd docs && bun run build",
44
+ "docs:build": "npm run build:llm && cd docs && bun run build",
44
45
  "docs:preview": "cd docs && bun run preview"
45
46
  },
46
47
  "repository": {