@gnolith/taproot 0.1.0-rc.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.
Files changed (52) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/COMPATIBILITY.md +42 -0
  3. package/LICENSE +21 -0
  4. package/README.md +128 -0
  5. package/SECURITY.md +19 -0
  6. package/SUPPORT.md +11 -0
  7. package/dist/canonical.d.ts +16 -0
  8. package/dist/canonical.d.ts.map +1 -0
  9. package/dist/canonical.js +519 -0
  10. package/dist/canonical.js.map +1 -0
  11. package/dist/errors.d.ts +35 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +42 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/index.d.ts +57 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +53 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/iri.d.ts +3 -0
  20. package/dist/iri.d.ts.map +1 -0
  21. package/dist/iri.js +8 -0
  22. package/dist/iri.js.map +1 -0
  23. package/dist/rdf.d.ts +6 -0
  24. package/dist/rdf.d.ts.map +1 -0
  25. package/dist/rdf.js +292 -0
  26. package/dist/rdf.js.map +1 -0
  27. package/dist/repository.d.ts +94 -0
  28. package/dist/repository.d.ts.map +1 -0
  29. package/dist/repository.js +1499 -0
  30. package/dist/repository.js.map +1 -0
  31. package/dist/schema.d.ts +19 -0
  32. package/dist/schema.d.ts.map +1 -0
  33. package/dist/schema.js +390 -0
  34. package/dist/schema.js.map +1 -0
  35. package/dist/types.d.ts +299 -0
  36. package/dist/types.d.ts.map +1 -0
  37. package/dist/types.js +21 -0
  38. package/dist/types.js.map +1 -0
  39. package/docs/api.md +47 -0
  40. package/docs/architecture.md +30 -0
  41. package/docs/completion-audit.md +31 -0
  42. package/docs/operations.md +47 -0
  43. package/docs/product-scope.md +20 -0
  44. package/docs/release-policy.md +16 -0
  45. package/docs/testing.md +21 -0
  46. package/docs/threat-model.md +40 -0
  47. package/examples/codex-site/.openai/hosting.json +3 -0
  48. package/examples/codex-site/README.md +13 -0
  49. package/examples/codex-site/demo.ts +152 -0
  50. package/migrations/0001_taproot.sql +64 -0
  51. package/migrations/0002_audit_operations.sql +48 -0
  52. package/package.json +89 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type D1DatabaseLike } from '@gnolith/diamond';
2
+ export declare const TAPROOT_SCHEMA_VERSION = "2";
3
+ export declare const TAPROOT_JSON_VERSION = "1";
4
+ export declare const TAPROOT_RDF_VERSION = "2";
5
+ export declare const taprootSchemaStatements: readonly ["CREATE TABLE IF NOT EXISTS taproot_entities (\n entity_id TEXT PRIMARY KEY,\n entity_type TEXT NOT NULL CHECK (entity_type IN ('item', 'property')),\n datatype TEXT,\n revision INTEGER NOT NULL,\n entity_json TEXT NOT NULL CHECK (json_valid(entity_json)),\n created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,\n modified_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,\n deleted_at TEXT,\n redirect_to TEXT,\n CHECK ((entity_type = 'item' AND datatype IS NULL)\n OR (entity_type = 'property' AND datatype IS NOT NULL))\n ) STRICT", "CREATE TABLE IF NOT EXISTS taproot_entity_revisions (\n entity_id TEXT NOT NULL,\n revision INTEGER NOT NULL,\n entity_json TEXT NOT NULL CHECK (json_valid(entity_json)),\n actor TEXT,\n attribution_json TEXT CHECK (attribution_json IS NULL OR json_valid(attribution_json)),\n edit_summary TEXT,\n tags_json TEXT NOT NULL DEFAULT '[]' CHECK (json_valid(tags_json)),\n event_id TEXT NOT NULL,\n content_hash TEXT NOT NULL,\n parent_hash TEXT,\n deleted_at TEXT,\n redirect_to TEXT,\n created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (entity_id, revision),\n FOREIGN KEY (entity_id) REFERENCES taproot_entities(entity_id)\n ) STRICT", "CREATE TABLE IF NOT EXISTS taproot_audit_events (\n event_id TEXT PRIMARY KEY,\n entity_id TEXT NOT NULL,\n revision INTEGER NOT NULL,\n event_type TEXT NOT NULL CHECK (event_type IN ('create', 'update', 'revert', 'delete', 'restore', 'redirect', 'import', 'repair')),\n attribution_json TEXT CHECK (attribution_json IS NULL OR json_valid(attribution_json)),\n edit_summary TEXT,\n tags_json TEXT NOT NULL DEFAULT '[]' CHECK (json_valid(tags_json)),\n request_id TEXT,\n content_hash TEXT NOT NULL,\n parent_hash TEXT,\n details_json TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(details_json)),\n created_at TEXT NOT NULL,\n FOREIGN KEY (entity_id, revision) REFERENCES taproot_entity_revisions(entity_id, revision)\n ) STRICT", "CREATE TABLE IF NOT EXISTS taproot_migrations (\n version INTEGER PRIMARY KEY,\n name TEXT NOT NULL,\n applied_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP\n ) STRICT", "CREATE TABLE IF NOT EXISTS taproot_rdf_ownership (\n entity_id TEXT NOT NULL,\n subject_key TEXT NOT NULL,\n predicate_key TEXT NOT NULL,\n object_key TEXT NOT NULL,\n graph_key TEXT NOT NULL,\n PRIMARY KEY (entity_id, subject_key, predicate_key, object_key, graph_key),\n FOREIGN KEY (entity_id) REFERENCES taproot_entities(entity_id)\n ) STRICT", "CREATE TABLE IF NOT EXISTS taproot_id_counters (\n entity_type TEXT PRIMARY KEY CHECK (entity_type IN ('item', 'property')),\n next_numeric_id INTEGER NOT NULL CHECK (next_numeric_id > 0)\n ) STRICT", "CREATE TABLE IF NOT EXISTS taproot_terms (\n entity_id TEXT NOT NULL,\n language TEXT NOT NULL,\n term_type TEXT NOT NULL CHECK (term_type IN ('label', 'description', 'alias')),\n value TEXT NOT NULL,\n ordinal INTEGER NOT NULL DEFAULT 0,\n PRIMARY KEY (entity_id, language, term_type, ordinal),\n FOREIGN KEY (entity_id) REFERENCES taproot_entities(entity_id)\n ) STRICT", "CREATE TABLE IF NOT EXISTS taproot_metadata (\n metadata_key TEXT PRIMARY KEY,\n metadata_value TEXT NOT NULL\n ) STRICT", "CREATE TABLE IF NOT EXISTS taproot_assertions (\n assertion_key TEXT PRIMARY KEY\n ) STRICT", "CREATE INDEX IF NOT EXISTS taproot_entities_type_idx\n ON taproot_entities(entity_type, entity_id)", "CREATE INDEX IF NOT EXISTS taproot_entities_modified_idx\n ON taproot_entities(modified_at, entity_id)", "CREATE INDEX IF NOT EXISTS taproot_revisions_entity_idx\n ON taproot_entity_revisions(entity_id, revision DESC)", "CREATE INDEX IF NOT EXISTS taproot_terms_lookup_idx\n ON taproot_terms(language, value COLLATE NOCASE, entity_id)", "CREATE INDEX IF NOT EXISTS taproot_audit_entity_idx\n ON taproot_audit_events(entity_id, revision DESC, event_id)", "CREATE INDEX IF NOT EXISTS taproot_audit_request_idx\n ON taproot_audit_events(request_id) WHERE request_id IS NOT NULL", "CREATE INDEX IF NOT EXISTS taproot_rdf_ownership_quad_idx\n ON taproot_rdf_ownership(subject_key, predicate_key, object_key, graph_key, entity_id)", "CREATE TRIGGER IF NOT EXISTS taproot_revisions_no_update\n BEFORE UPDATE ON taproot_entity_revisions BEGIN SELECT RAISE(ABORT, 'taproot revisions are immutable'); END", "CREATE TRIGGER IF NOT EXISTS taproot_revisions_no_delete\n BEFORE DELETE ON taproot_entity_revisions BEGIN SELECT RAISE(ABORT, 'taproot revisions are immutable'); END", "CREATE TRIGGER IF NOT EXISTS taproot_audit_no_update\n BEFORE UPDATE ON taproot_audit_events BEGIN SELECT RAISE(ABORT, 'taproot audit events are immutable'); END", "CREATE TRIGGER IF NOT EXISTS taproot_audit_no_delete\n BEFORE DELETE ON taproot_audit_events BEGIN SELECT RAISE(ABORT, 'taproot audit events are immutable'); END", "INSERT INTO taproot_id_counters(entity_type, next_numeric_id)\n VALUES ('item', 1), ('property', 1)\n ON CONFLICT(entity_type) DO NOTHING", "INSERT INTO taproot_metadata(metadata_key, metadata_value)\n VALUES\n ('schema_version', '2'),\n ('canonical_json_version', '1'),\n ('rdf_mapping_version', '2')\n ON CONFLICT(metadata_key) DO UPDATE SET metadata_value = excluded.metadata_value", "INSERT INTO taproot_migrations(version, name) VALUES (1, 'initial'), (2, 'audit-and-operations')\n ON CONFLICT(version) DO NOTHING"];
6
+ export interface TaprootSchemaInspection {
7
+ valid: boolean;
8
+ versions: Record<string, string>;
9
+ missingTables: string[];
10
+ nonStrictTables: string[];
11
+ missingColumns: string[];
12
+ missingIndexes: string[];
13
+ missingTriggers: string[];
14
+ errors: string[];
15
+ }
16
+ export declare function initializeTaproot(db: D1DatabaseLike): Promise<void>;
17
+ export declare function inspectTaprootSchema(db: D1DatabaseLike): Promise<TaprootSchemaInspection>;
18
+ export declare function assertTaprootSchema(db: D1DatabaseLike): Promise<void>;
19
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAO1B,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,eAAO,MAAM,uBAAuB,04KAiH1B,CAAC;AAEX,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCzE;AA4OD,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,GACjB,OAAO,CAAC,uBAAuB,CAAC,CAuHlC;AAED,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3E"}
package/dist/schema.js ADDED
@@ -0,0 +1,390 @@
1
+ import { encodeTerm, initializeStore, prepareQuadPatch, } from '@gnolith/diamond';
2
+ import { DataFactory } from 'rdf-data-factory';
3
+ import { parseEntityJson } from './canonical.js';
4
+ import { buildEntityQuads } from './rdf.js';
5
+ import { SchemaMismatchError } from './errors.js';
6
+ export const TAPROOT_SCHEMA_VERSION = '2';
7
+ export const TAPROOT_JSON_VERSION = '1';
8
+ export const TAPROOT_RDF_VERSION = '2';
9
+ export const taprootSchemaStatements = [
10
+ `CREATE TABLE IF NOT EXISTS taproot_entities (
11
+ entity_id TEXT PRIMARY KEY,
12
+ entity_type TEXT NOT NULL CHECK (entity_type IN ('item', 'property')),
13
+ datatype TEXT,
14
+ revision INTEGER NOT NULL,
15
+ entity_json TEXT NOT NULL CHECK (json_valid(entity_json)),
16
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
17
+ modified_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
18
+ deleted_at TEXT,
19
+ redirect_to TEXT,
20
+ CHECK ((entity_type = 'item' AND datatype IS NULL)
21
+ OR (entity_type = 'property' AND datatype IS NOT NULL))
22
+ ) STRICT`,
23
+ `CREATE TABLE IF NOT EXISTS taproot_entity_revisions (
24
+ entity_id TEXT NOT NULL,
25
+ revision INTEGER NOT NULL,
26
+ entity_json TEXT NOT NULL CHECK (json_valid(entity_json)),
27
+ actor TEXT,
28
+ attribution_json TEXT CHECK (attribution_json IS NULL OR json_valid(attribution_json)),
29
+ edit_summary TEXT,
30
+ tags_json TEXT NOT NULL DEFAULT '[]' CHECK (json_valid(tags_json)),
31
+ event_id TEXT NOT NULL,
32
+ content_hash TEXT NOT NULL,
33
+ parent_hash TEXT,
34
+ deleted_at TEXT,
35
+ redirect_to TEXT,
36
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
37
+ PRIMARY KEY (entity_id, revision),
38
+ FOREIGN KEY (entity_id) REFERENCES taproot_entities(entity_id)
39
+ ) STRICT`,
40
+ `CREATE TABLE IF NOT EXISTS taproot_audit_events (
41
+ event_id TEXT PRIMARY KEY,
42
+ entity_id TEXT NOT NULL,
43
+ revision INTEGER NOT NULL,
44
+ event_type TEXT NOT NULL CHECK (event_type IN ('create', 'update', 'revert', 'delete', 'restore', 'redirect', 'import', 'repair')),
45
+ attribution_json TEXT CHECK (attribution_json IS NULL OR json_valid(attribution_json)),
46
+ edit_summary TEXT,
47
+ tags_json TEXT NOT NULL DEFAULT '[]' CHECK (json_valid(tags_json)),
48
+ request_id TEXT,
49
+ content_hash TEXT NOT NULL,
50
+ parent_hash TEXT,
51
+ details_json TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(details_json)),
52
+ created_at TEXT NOT NULL,
53
+ FOREIGN KEY (entity_id, revision) REFERENCES taproot_entity_revisions(entity_id, revision)
54
+ ) STRICT`,
55
+ `CREATE TABLE IF NOT EXISTS taproot_migrations (
56
+ version INTEGER PRIMARY KEY,
57
+ name TEXT NOT NULL,
58
+ applied_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
59
+ ) STRICT`,
60
+ `CREATE TABLE IF NOT EXISTS taproot_rdf_ownership (
61
+ entity_id TEXT NOT NULL,
62
+ subject_key TEXT NOT NULL,
63
+ predicate_key TEXT NOT NULL,
64
+ object_key TEXT NOT NULL,
65
+ graph_key TEXT NOT NULL,
66
+ PRIMARY KEY (entity_id, subject_key, predicate_key, object_key, graph_key),
67
+ FOREIGN KEY (entity_id) REFERENCES taproot_entities(entity_id)
68
+ ) STRICT`,
69
+ `CREATE TABLE IF NOT EXISTS taproot_id_counters (
70
+ entity_type TEXT PRIMARY KEY CHECK (entity_type IN ('item', 'property')),
71
+ next_numeric_id INTEGER NOT NULL CHECK (next_numeric_id > 0)
72
+ ) STRICT`,
73
+ `CREATE TABLE IF NOT EXISTS taproot_terms (
74
+ entity_id TEXT NOT NULL,
75
+ language TEXT NOT NULL,
76
+ term_type TEXT NOT NULL CHECK (term_type IN ('label', 'description', 'alias')),
77
+ value TEXT NOT NULL,
78
+ ordinal INTEGER NOT NULL DEFAULT 0,
79
+ PRIMARY KEY (entity_id, language, term_type, ordinal),
80
+ FOREIGN KEY (entity_id) REFERENCES taproot_entities(entity_id)
81
+ ) STRICT`,
82
+ `CREATE TABLE IF NOT EXISTS taproot_metadata (
83
+ metadata_key TEXT PRIMARY KEY,
84
+ metadata_value TEXT NOT NULL
85
+ ) STRICT`,
86
+ `CREATE TABLE IF NOT EXISTS taproot_assertions (
87
+ assertion_key TEXT PRIMARY KEY
88
+ ) STRICT`,
89
+ `CREATE INDEX IF NOT EXISTS taproot_entities_type_idx
90
+ ON taproot_entities(entity_type, entity_id)`,
91
+ `CREATE INDEX IF NOT EXISTS taproot_entities_modified_idx
92
+ ON taproot_entities(modified_at, entity_id)`,
93
+ `CREATE INDEX IF NOT EXISTS taproot_revisions_entity_idx
94
+ ON taproot_entity_revisions(entity_id, revision DESC)`,
95
+ `CREATE INDEX IF NOT EXISTS taproot_terms_lookup_idx
96
+ ON taproot_terms(language, value COLLATE NOCASE, entity_id)`,
97
+ `CREATE INDEX IF NOT EXISTS taproot_audit_entity_idx
98
+ ON taproot_audit_events(entity_id, revision DESC, event_id)`,
99
+ `CREATE INDEX IF NOT EXISTS taproot_audit_request_idx
100
+ ON taproot_audit_events(request_id) WHERE request_id IS NOT NULL`,
101
+ `CREATE INDEX IF NOT EXISTS taproot_rdf_ownership_quad_idx
102
+ ON taproot_rdf_ownership(subject_key, predicate_key, object_key, graph_key, entity_id)`,
103
+ `CREATE TRIGGER IF NOT EXISTS taproot_revisions_no_update
104
+ BEFORE UPDATE ON taproot_entity_revisions BEGIN SELECT RAISE(ABORT, 'taproot revisions are immutable'); END`,
105
+ `CREATE TRIGGER IF NOT EXISTS taproot_revisions_no_delete
106
+ BEFORE DELETE ON taproot_entity_revisions BEGIN SELECT RAISE(ABORT, 'taproot revisions are immutable'); END`,
107
+ `CREATE TRIGGER IF NOT EXISTS taproot_audit_no_update
108
+ BEFORE UPDATE ON taproot_audit_events BEGIN SELECT RAISE(ABORT, 'taproot audit events are immutable'); END`,
109
+ `CREATE TRIGGER IF NOT EXISTS taproot_audit_no_delete
110
+ BEFORE DELETE ON taproot_audit_events BEGIN SELECT RAISE(ABORT, 'taproot audit events are immutable'); END`,
111
+ `INSERT INTO taproot_id_counters(entity_type, next_numeric_id)
112
+ VALUES ('item', 1), ('property', 1)
113
+ ON CONFLICT(entity_type) DO NOTHING`,
114
+ `INSERT INTO taproot_metadata(metadata_key, metadata_value)
115
+ VALUES
116
+ ('schema_version', '${TAPROOT_SCHEMA_VERSION}'),
117
+ ('canonical_json_version', '${TAPROOT_JSON_VERSION}'),
118
+ ('rdf_mapping_version', '${TAPROOT_RDF_VERSION}')
119
+ ON CONFLICT(metadata_key) DO UPDATE SET metadata_value = excluded.metadata_value`,
120
+ `INSERT INTO taproot_migrations(version, name) VALUES (1, 'initial'), (2, 'audit-and-operations')
121
+ ON CONFLICT(version) DO NOTHING`,
122
+ ];
123
+ export async function initializeTaproot(db) {
124
+ const previousRdfVersion = (await readMetadata(db, 'rdf_migration_from')) ??
125
+ (await readMetadata(db, 'rdf_mapping_version'));
126
+ if (previousRdfVersion && previousRdfVersion !== TAPROOT_RDF_VERSION) {
127
+ await db
128
+ .prepare(`INSERT INTO taproot_metadata(metadata_key, metadata_value) VALUES ('rdf_migration_from', ?)
129
+ ON CONFLICT(metadata_key) DO NOTHING`)
130
+ .bind(previousRdfVersion)
131
+ .run();
132
+ }
133
+ await initializeStore(db);
134
+ await upgradeLegacySchema(db);
135
+ await db.batch(taprootSchemaStatements.map((sql) => db.prepare(sql)));
136
+ await db
137
+ .prepare(`INSERT INTO taproot_audit_events(
138
+ event_id, entity_id, revision, event_type, attribution_json, edit_summary,
139
+ tags_json, request_id, content_hash, parent_hash, details_json, created_at
140
+ ) SELECT event_id, entity_id, revision,
141
+ CASE WHEN revision = 1 THEN 'import' ELSE 'update' END,
142
+ attribution_json, edit_summary, tags_json, NULL, content_hash, parent_hash,
143
+ json_object('deletedAt', deleted_at, 'redirectTo', redirect_to), created_at
144
+ FROM taproot_entity_revisions WHERE event_id IS NOT NULL AND content_hash IS NOT NULL
145
+ ON CONFLICT(event_id) DO NOTHING`)
146
+ .run();
147
+ await backfillRdfOwnership(db, previousRdfVersion);
148
+ await db
149
+ .prepare(`DELETE FROM taproot_metadata WHERE metadata_key = 'rdf_migration_from'`)
150
+ .run();
151
+ }
152
+ async function readMetadata(db, key) {
153
+ const table = await db
154
+ .prepare(`SELECT 1 AS found FROM sqlite_schema WHERE type = 'table' AND name = 'taproot_metadata'`)
155
+ .all();
156
+ if (!table.results.length)
157
+ return undefined;
158
+ const result = await db
159
+ .prepare(`SELECT metadata_value FROM taproot_metadata WHERE metadata_key = ?`)
160
+ .bind(key)
161
+ .all();
162
+ return result.results[0]?.metadata_value;
163
+ }
164
+ async function backfillRdfOwnership(db, previousVersion) {
165
+ const rows = await db
166
+ .prepare(`SELECT entity_id, entity_json, deleted_at, redirect_to FROM taproot_entities ORDER BY entity_id`)
167
+ .all();
168
+ if (!rows.results.length)
169
+ return;
170
+ const baseIri = await readMetadata(db, 'base_iri');
171
+ if (!baseIri)
172
+ return;
173
+ const factory = new DataFactory();
174
+ for (const row of rows.results) {
175
+ const entity = parseEntityJson(row.entity_json);
176
+ const current = lifecycleQuads(entity, row.deleted_at, row.redirect_to, baseIri, TAPROOT_RDF_VERSION, factory);
177
+ const existingOwnership = await db
178
+ .prepare(`SELECT COUNT(*) AS count FROM taproot_rdf_ownership WHERE entity_id = ?`)
179
+ .bind(row.entity_id)
180
+ .all();
181
+ if (previousVersion === TAPROOT_RDF_VERSION &&
182
+ Number(existingOwnership.results[0]?.count ?? 0) > 0)
183
+ continue;
184
+ const old = previousVersion && previousVersion !== TAPROOT_RDF_VERSION
185
+ ? lifecycleQuads(entity, row.deleted_at, row.redirect_to, baseIri, previousVersion, factory)
186
+ : [];
187
+ const patch = prepareQuadPatch(db, { delete: old, insert: current });
188
+ const ownershipRows = current.map((quad) => ({
189
+ subjectKey: encodeTerm(quad.subject).key,
190
+ predicateKey: encodeTerm(quad.predicate).key,
191
+ objectKey: encodeTerm(quad.object).key,
192
+ graphKey: encodeTerm(quad.graph).key,
193
+ }));
194
+ await db.batch([
195
+ ...patch.statements,
196
+ db
197
+ .prepare(`DELETE FROM taproot_rdf_ownership WHERE entity_id = ?`)
198
+ .bind(row.entity_id),
199
+ db
200
+ .prepare(`INSERT INTO taproot_rdf_ownership(entity_id, subject_key, predicate_key, object_key, graph_key)
201
+ SELECT ?, json_extract(value, '$.subjectKey'), json_extract(value, '$.predicateKey'),
202
+ json_extract(value, '$.objectKey'), json_extract(value, '$.graphKey') FROM json_each(?)`)
203
+ .bind(row.entity_id, JSON.stringify(ownershipRows)),
204
+ ]);
205
+ }
206
+ }
207
+ function lifecycleQuads(entity, deletedAt, redirectTo, baseIri, mappingVersion, factory) {
208
+ if (!deletedAt && !redirectTo)
209
+ return buildEntityQuads(entity, { baseIri, mappingVersion, factory });
210
+ const base = baseIri.replace(/\/+$/u, '');
211
+ const subject = factory.namedNode(`${base}/entity/${entity.id}`);
212
+ const quads = [
213
+ factory.quad(subject, factory.namedNode(`${base}/vocab/revision`), factory.literal(String(entity.lastrevid), factory.namedNode('http://www.w3.org/2001/XMLSchema#integer'))),
214
+ ];
215
+ if (deletedAt)
216
+ quads.push(factory.quad(subject, factory.namedNode(`${base}/vocab/deletedAt`), factory.literal(deletedAt, factory.namedNode('http://www.w3.org/2001/XMLSchema#dateTime'))));
217
+ if (redirectTo)
218
+ quads.push(factory.quad(subject, factory.namedNode('http://www.w3.org/2002/07/owl#sameAs'), factory.namedNode(`${base}/entity/${redirectTo}`)));
219
+ return quads;
220
+ }
221
+ async function upgradeLegacySchema(db) {
222
+ const tables = await db
223
+ .prepare(`SELECT name FROM sqlite_schema WHERE type = 'table' AND name = 'taproot_entity_revisions'`)
224
+ .all();
225
+ if (!tables.results.length)
226
+ return;
227
+ const columns = await db
228
+ .prepare(`PRAGMA table_info(taproot_entity_revisions)`)
229
+ .all();
230
+ const names = new Set(columns.results.map(({ name }) => name));
231
+ const additions = [
232
+ [
233
+ 'attribution_json',
234
+ `TEXT CHECK (attribution_json IS NULL OR json_valid(attribution_json))`,
235
+ ],
236
+ ['tags_json', `TEXT NOT NULL DEFAULT '[]' CHECK (json_valid(tags_json))`],
237
+ ['event_id', `TEXT`],
238
+ ['content_hash', `TEXT`],
239
+ ['parent_hash', `TEXT`],
240
+ ['deleted_at', `TEXT`],
241
+ ['redirect_to', `TEXT`],
242
+ ];
243
+ for (const [name, definition] of additions) {
244
+ if (!names.has(name)) {
245
+ await db
246
+ .prepare(`ALTER TABLE taproot_entity_revisions ADD COLUMN ${name} ${definition}`)
247
+ .run();
248
+ }
249
+ }
250
+ const revisions = await db
251
+ .prepare(`SELECT r.entity_id, r.revision, r.entity_json, r.actor, r.event_id, r.content_hash,
252
+ CASE WHEN r.revision = e.revision THEN e.deleted_at ELSE r.deleted_at END AS deleted_at,
253
+ CASE WHEN r.revision = e.revision THEN e.redirect_to ELSE r.redirect_to END AS redirect_to
254
+ FROM taproot_entity_revisions r JOIN taproot_entities e ON e.entity_id = r.entity_id
255
+ ORDER BY r.entity_id, r.revision`)
256
+ .all();
257
+ let previousEntity = '';
258
+ let parentHash = null;
259
+ for (const revision of revisions.results) {
260
+ if (revision.entity_id !== previousEntity)
261
+ parentHash = null;
262
+ const contentHash = revision.content_hash ??
263
+ (await hash(`${revision.entity_json}\n${JSON.stringify({ deletedAt: revision.deleted_at, redirectTo: revision.redirect_to })}`));
264
+ if (!revision.event_id || !revision.content_hash) {
265
+ const attribution = revision.actor
266
+ ? JSON.stringify({ id: revision.actor, kind: 'human' })
267
+ : null;
268
+ await db
269
+ .prepare(`UPDATE taproot_entity_revisions SET event_id = ?, content_hash = ?,
270
+ parent_hash = ?, attribution_json = COALESCE(attribution_json, ?),
271
+ tags_json = COALESCE(tags_json, '[]'), deleted_at = ?, redirect_to = ?
272
+ WHERE entity_id = ? AND revision = ?`)
273
+ .bind(revision.event_id ??
274
+ `legacy-${revision.entity_id}-${revision.revision}`, contentHash, parentHash, attribution, revision.deleted_at, revision.redirect_to, revision.entity_id, revision.revision)
275
+ .run();
276
+ }
277
+ previousEntity = revision.entity_id;
278
+ parentHash = contentHash;
279
+ }
280
+ }
281
+ async function hash(value) {
282
+ const digest = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(value));
283
+ return [...new Uint8Array(digest)]
284
+ .map((byte) => byte.toString(16).padStart(2, '0'))
285
+ .join('');
286
+ }
287
+ export async function inspectTaprootSchema(db) {
288
+ const required = [
289
+ 'taproot_entities',
290
+ 'taproot_entity_revisions',
291
+ 'taproot_id_counters',
292
+ 'taproot_terms',
293
+ 'taproot_metadata',
294
+ 'taproot_assertions',
295
+ 'taproot_audit_events',
296
+ 'taproot_migrations',
297
+ 'taproot_rdf_ownership',
298
+ ];
299
+ const tables = await db
300
+ .prepare(`SELECT name, sql FROM sqlite_schema
301
+ WHERE type = 'table' AND name LIKE 'taproot_%'`)
302
+ .all();
303
+ const names = new Set(tables.results.map(({ name }) => name));
304
+ const missingTables = required.filter((name) => !names.has(name));
305
+ const nonStrictTables = tables.results
306
+ .filter(({ name, sql }) => required.includes(name) && !/\)\s*STRICT\s*$/iu.test(sql ?? ''))
307
+ .map(({ name }) => name);
308
+ const metadata = names.has('taproot_metadata')
309
+ ? await db
310
+ .prepare('SELECT metadata_key, metadata_value FROM taproot_metadata')
311
+ .all()
312
+ : { results: [] };
313
+ const versions = Object.fromEntries(metadata.results.map(({ metadata_key, metadata_value }) => [
314
+ metadata_key,
315
+ metadata_value,
316
+ ]));
317
+ const expected = {
318
+ schema_version: TAPROOT_SCHEMA_VERSION,
319
+ canonical_json_version: TAPROOT_JSON_VERSION,
320
+ rdf_mapping_version: TAPROOT_RDF_VERSION,
321
+ };
322
+ const errors = missingTables.map((name) => `${name} is missing`);
323
+ errors.push(...nonStrictTables.map((name) => `${name} is not STRICT`));
324
+ const requiredRevisionColumns = [
325
+ 'attribution_json',
326
+ 'tags_json',
327
+ 'event_id',
328
+ 'content_hash',
329
+ 'parent_hash',
330
+ 'deleted_at',
331
+ 'redirect_to',
332
+ ];
333
+ const revisionColumns = names.has('taproot_entity_revisions')
334
+ ? await db
335
+ .prepare(`PRAGMA table_info(taproot_entity_revisions)`)
336
+ .all()
337
+ : { results: [] };
338
+ const presentColumns = new Set(revisionColumns.results.map(({ name }) => name));
339
+ const missingColumns = requiredRevisionColumns.filter((name) => !presentColumns.has(name));
340
+ const requiredIndexes = [
341
+ 'taproot_entities_type_idx',
342
+ 'taproot_entities_modified_idx',
343
+ 'taproot_revisions_entity_idx',
344
+ 'taproot_terms_lookup_idx',
345
+ 'taproot_audit_entity_idx',
346
+ 'taproot_audit_request_idx',
347
+ 'taproot_rdf_ownership_quad_idx',
348
+ ];
349
+ const indexRows = await db
350
+ .prepare(`SELECT name FROM sqlite_schema WHERE type = 'index' AND name LIKE 'taproot_%'`)
351
+ .all();
352
+ const presentIndexes = new Set(indexRows.results.map(({ name }) => name));
353
+ const missingIndexes = requiredIndexes.filter((name) => !presentIndexes.has(name));
354
+ const requiredTriggers = [
355
+ 'taproot_revisions_no_update',
356
+ 'taproot_revisions_no_delete',
357
+ 'taproot_audit_no_update',
358
+ 'taproot_audit_no_delete',
359
+ ];
360
+ const triggerRows = await db
361
+ .prepare(`SELECT name FROM sqlite_schema WHERE type = 'trigger' AND name LIKE 'taproot_%'`)
362
+ .all();
363
+ const presentTriggers = new Set(triggerRows.results.map(({ name }) => name));
364
+ const missingTriggers = requiredTriggers.filter((name) => !presentTriggers.has(name));
365
+ errors.push(...missingColumns.map((name) => `taproot_entity_revisions.${name} is missing`));
366
+ errors.push(...missingIndexes.map((name) => `${name} is missing`));
367
+ errors.push(...missingTriggers.map((name) => `${name} is missing`));
368
+ for (const [key, value] of Object.entries(expected)) {
369
+ if (versions[key] !== value) {
370
+ errors.push(`${key} is ${versions[key] ?? 'missing'}, expected ${value}`);
371
+ }
372
+ }
373
+ return {
374
+ valid: errors.length === 0,
375
+ versions,
376
+ missingTables,
377
+ nonStrictTables,
378
+ missingColumns,
379
+ missingIndexes,
380
+ missingTriggers,
381
+ errors,
382
+ };
383
+ }
384
+ export async function assertTaprootSchema(db) {
385
+ const inspection = await inspectTaprootSchema(db);
386
+ if (!inspection.valid) {
387
+ throw new SchemaMismatchError(inspection.errors.join('; '));
388
+ }
389
+ }
390
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}