videobook-engine 2.0.1 → 5.0.1
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 +99 -68
- package/dist/artifacts.d.ts +4 -9
- package/dist/artifacts.d.ts.map +1 -1
- package/dist/artifacts.js +78 -138
- package/dist/artifacts.js.map +1 -1
- package/dist/books.d.ts +1 -1
- package/dist/books.d.ts.map +1 -1
- package/dist/books.js +18 -10
- package/dist/books.js.map +1 -1
- package/dist/cas.d.ts +27 -1
- package/dist/cas.d.ts.map +1 -1
- package/dist/cas.js +78 -6
- package/dist/cas.js.map +1 -1
- package/dist/catalog-metadata.d.ts +56 -0
- package/dist/catalog-metadata.d.ts.map +1 -0
- package/dist/catalog-metadata.js +42 -0
- package/dist/catalog-metadata.js.map +1 -0
- package/dist/communications.js +4 -2
- package/dist/communications.js.map +1 -1
- package/dist/context.d.ts +9 -6
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +42 -51
- package/dist/context.js.map +1 -1
- package/dist/domain.d.ts +39 -2
- package/dist/domain.d.ts.map +1 -1
- package/dist/domain.js +846 -64
- package/dist/domain.js.map +1 -1
- package/dist/edit-policy.d.ts +3 -0
- package/dist/edit-policy.d.ts.map +1 -0
- package/dist/edit-policy.js +6 -0
- package/dist/edit-policy.js.map +1 -0
- package/dist/edits.d.ts +10 -0
- package/dist/edits.d.ts.map +1 -0
- package/dist/edits.js +1392 -0
- package/dist/edits.js.map +1 -0
- package/dist/engine-types.d.ts +171 -86
- package/dist/engine-types.d.ts.map +1 -1
- package/dist/engine-types.js +32 -0
- package/dist/engine-types.js.map +1 -1
- package/dist/engine.d.ts +89 -26
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +27 -21
- package/dist/engine.js.map +1 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +32 -28
- package/dist/files.js.map +1 -1
- package/dist/fork.d.ts +148 -0
- package/dist/fork.d.ts.map +1 -0
- package/dist/fork.js +602 -0
- package/dist/fork.js.map +1 -0
- package/dist/generations.d.ts +9 -0
- package/dist/generations.d.ts.map +1 -0
- package/dist/generations.js +175 -0
- package/dist/generations.js.map +1 -0
- package/dist/history.d.ts +2 -5
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js +183 -640
- package/dist/history.js.map +1 -1
- package/dist/index.d.ts +21 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -5
- package/dist/index.js.map +1 -1
- package/dist/job-queue.d.ts +2 -0
- package/dist/job-queue.d.ts.map +1 -1
- package/dist/job-queue.js +29 -2
- package/dist/job-queue.js.map +1 -1
- package/dist/media.d.ts +3 -3
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +6 -5
- package/dist/media.js.map +1 -1
- package/dist/merge-policy.d.ts +83 -0
- package/dist/merge-policy.d.ts.map +1 -0
- package/dist/merge-policy.js +203 -0
- package/dist/merge-policy.js.map +1 -0
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +17 -23
- package/dist/metadata.js.map +1 -1
- package/dist/migration.d.ts +9 -0
- package/dist/migration.d.ts.map +1 -0
- package/dist/migration.js +564 -0
- package/dist/migration.js.map +1 -0
- package/dist/mvp-contract-fixtures.d.ts +244 -0
- package/dist/mvp-contract-fixtures.d.ts.map +1 -0
- package/dist/mvp-contract-fixtures.js +556 -0
- package/dist/mvp-contract-fixtures.js.map +1 -0
- package/dist/mvp-contracts.d.ts +761 -0
- package/dist/mvp-contracts.d.ts.map +1 -0
- package/dist/mvp-contracts.js +59 -0
- package/dist/mvp-contracts.js.map +1 -0
- package/dist/mvp-time.d.ts +54 -0
- package/dist/mvp-time.d.ts.map +1 -0
- package/dist/mvp-time.js +148 -0
- package/dist/mvp-time.js.map +1 -0
- package/dist/notebook/types.d.ts +85 -8
- package/dist/notebook/types.d.ts.map +1 -1
- package/dist/notebook-grid.d.ts +37 -0
- package/dist/notebook-grid.d.ts.map +1 -0
- package/dist/notebook-grid.js +160 -0
- package/dist/notebook-grid.js.map +1 -0
- package/dist/notebook-media-artifact.d.ts +23 -0
- package/dist/notebook-media-artifact.d.ts.map +1 -0
- package/dist/notebook-media-artifact.js +67 -0
- package/dist/notebook-media-artifact.js.map +1 -0
- package/dist/notebook-mentions.d.ts +20 -0
- package/dist/notebook-mentions.d.ts.map +1 -0
- package/dist/notebook-mentions.js +53 -0
- package/dist/notebook-mentions.js.map +1 -0
- package/dist/order-keys.d.ts +22 -0
- package/dist/order-keys.d.ts.map +1 -0
- package/dist/order-keys.js +262 -0
- package/dist/order-keys.js.map +1 -0
- package/dist/runtime-services.js +8 -11
- package/dist/runtime-services.js.map +1 -1
- package/dist/schema.d.ts +8 -5
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +624 -141
- package/dist/schema.js.map +1 -1
- package/dist/search-benchmark.d.ts +4 -0
- package/dist/search-benchmark.d.ts.map +1 -0
- package/dist/search-benchmark.js +144 -0
- package/dist/search-benchmark.js.map +1 -0
- package/dist/sequences.d.ts +20 -0
- package/dist/sequences.d.ts.map +1 -0
- package/dist/sequences.js +825 -0
- package/dist/sequences.js.map +1 -0
- package/dist/similarity.js +10 -10
- package/dist/similarity.js.map +1 -1
- package/dist/status.js +8 -10
- package/dist/status.js.map +1 -1
- package/dist/storage.d.ts +3 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +388 -7
- package/dist/storage.js.map +1 -1
- package/dist/store.d.ts +64 -3
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +354 -68
- package/dist/store.js.map +1 -1
- package/dist/streams.d.ts +10 -0
- package/dist/streams.d.ts.map +1 -0
- package/dist/streams.js +183 -0
- package/dist/streams.js.map +1 -0
- package/dist/temporal-models.d.ts +48 -0
- package/dist/temporal-models.d.ts.map +1 -0
- package/dist/temporal-models.js +278 -0
- package/dist/temporal-models.js.map +1 -0
- package/dist/temporal-search.d.ts +29 -0
- package/dist/temporal-search.d.ts.map +1 -0
- package/dist/temporal-search.js +1551 -0
- package/dist/temporal-search.js.map +1 -0
- package/dist/transcripts.d.ts +16 -0
- package/dist/transcripts.d.ts.map +1 -0
- package/dist/transcripts.js +519 -0
- package/dist/transcripts.js.map +1 -0
- package/docs/engine-layout.md +345 -110
- package/docs/mvp-prd.md +918 -0
- package/fixtures/media/vancat.mp4 +0 -0
- package/fixtures/media/vancat_profile.jpg +0 -0
- package/fixtures/v5/contract-fixtures.json +1532 -0
- package/package.json +42 -5
- package/dist/history-types.d.ts +0 -74
- package/dist/history-types.d.ts.map +0 -1
- package/dist/history-types.js +0 -2
- package/dist/history-types.js.map +0 -1
- package/dist/resolver.d.ts +0 -15
- package/dist/resolver.d.ts.map +0 -1
- package/dist/resolver.js +0 -81
- package/dist/resolver.js.map +0 -1
- package/dist/timeline.d.ts +0 -9
- package/dist/timeline.d.ts.map +0 -1
- package/dist/timeline.js +0 -236
- package/dist/timeline.js.map +0 -1
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { EngineFault } from "./store.js";
|
|
2
|
+
const CONSTRAINT_VIOLATION_REFUSAL = /working set with constraint violations/;
|
|
3
|
+
// Policy scans are table-tolerant so the same code runs against a full
|
|
4
|
+
// engine catalog and against purpose-built merge databases that carry only
|
|
5
|
+
// the semantic tables their scenario needs (see ve-wsu).
|
|
6
|
+
function tableExists(db, table) {
|
|
7
|
+
return (db
|
|
8
|
+
.prepare("SELECT 1 AS present FROM sqlite_master WHERE type='table' AND name=?")
|
|
9
|
+
.get(table) !== undefined);
|
|
10
|
+
}
|
|
11
|
+
function schemaVersionAt(db, ref) {
|
|
12
|
+
const row = db
|
|
13
|
+
.prepare("SELECT version FROM dolt_at_engine_schema(?) WHERE singleton=1")
|
|
14
|
+
.get(ref);
|
|
15
|
+
if (!row) {
|
|
16
|
+
throw new EngineFault({
|
|
17
|
+
code: "SCHEMA_INCOMPATIBLE",
|
|
18
|
+
message: `Ref ${ref} has no engine_schema version row`,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return row.version;
|
|
22
|
+
}
|
|
23
|
+
/** Merge precondition: both sides must carry the same schema version. */
|
|
24
|
+
export function assertSameSchemaVersion(db, oursRef, theirsRef) {
|
|
25
|
+
const ours = schemaVersionAt(db, oursRef);
|
|
26
|
+
const theirs = schemaVersionAt(db, theirsRef);
|
|
27
|
+
if (ours !== theirs) {
|
|
28
|
+
throw new EngineFault({
|
|
29
|
+
code: "SCHEMA_INCOMPATIBLE",
|
|
30
|
+
message: `Merge refused: schema version ${theirs} on ${theirsRef} does not ` +
|
|
31
|
+
`match version ${ours} on ${oursRef}`,
|
|
32
|
+
details: { oursRef, theirsRef, oursVersion: ours, theirsVersion: theirs },
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Rewrites merged duplicate singleton flags to a single deterministic
|
|
38
|
+
* winner per group. Returns the number of demoted rows.
|
|
39
|
+
*/
|
|
40
|
+
export function reconcileSingletonFlags(db) {
|
|
41
|
+
let transcripts = 0;
|
|
42
|
+
if (tableExists(db, "transcripts")) {
|
|
43
|
+
const transcriptGroups = db
|
|
44
|
+
.prepare(`SELECT artifact_id, stream_id, object_hash
|
|
45
|
+
FROM transcripts
|
|
46
|
+
WHERE state='current'
|
|
47
|
+
GROUP BY artifact_id, stream_id, object_hash
|
|
48
|
+
HAVING COUNT(*) > 1`)
|
|
49
|
+
.all();
|
|
50
|
+
const demoteTranscripts = db.prepare(`UPDATE transcripts SET state='derived'
|
|
51
|
+
WHERE state='current'
|
|
52
|
+
AND artifact_id=? AND stream_id=? AND object_hash=?
|
|
53
|
+
AND transcript_id NOT IN (
|
|
54
|
+
SELECT transcript_id FROM transcripts
|
|
55
|
+
WHERE state='current'
|
|
56
|
+
AND artifact_id=? AND stream_id=? AND object_hash=?
|
|
57
|
+
ORDER BY created_at DESC, transcript_id ASC
|
|
58
|
+
LIMIT 1
|
|
59
|
+
)`);
|
|
60
|
+
for (const group of transcriptGroups) {
|
|
61
|
+
transcripts += demoteTranscripts.run(group.artifact_id, group.stream_id, group.object_hash, group.artifact_id, group.stream_id, group.object_hash).changes;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
let sequences = 0;
|
|
65
|
+
if (tableExists(db, "sequences")) {
|
|
66
|
+
const sequenceGroups = db
|
|
67
|
+
.prepare(`SELECT book_id
|
|
68
|
+
FROM sequences
|
|
69
|
+
WHERE is_primary=1
|
|
70
|
+
GROUP BY book_id
|
|
71
|
+
HAVING COUNT(*) > 1`)
|
|
72
|
+
.all();
|
|
73
|
+
const demoteSequences = db.prepare(`UPDATE sequences SET is_primary=0
|
|
74
|
+
WHERE is_primary=1
|
|
75
|
+
AND book_id=?
|
|
76
|
+
AND sequence_id NOT IN (
|
|
77
|
+
SELECT sequence_id FROM sequences
|
|
78
|
+
WHERE is_primary=1 AND book_id=?
|
|
79
|
+
ORDER BY created_at ASC, sequence_id ASC
|
|
80
|
+
LIMIT 1
|
|
81
|
+
)`);
|
|
82
|
+
for (const group of sequenceGroups) {
|
|
83
|
+
sequences += demoteSequences.run(group.book_id, group.book_id).changes;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return { transcripts, sequences };
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Post-merge verification: referential integrity plus the invariants the
|
|
90
|
+
* merge policy owns (single current transcript per source, single primary
|
|
91
|
+
* sequence per book). Throws MERGE_VIOLATION on any breach.
|
|
92
|
+
*/
|
|
93
|
+
export function verifyConstraintHealth(db) {
|
|
94
|
+
const foreignKeyRows = db.prepare("PRAGMA foreign_key_check").all();
|
|
95
|
+
const multipleCurrent = tableExists(db, "transcripts")
|
|
96
|
+
? db
|
|
97
|
+
.prepare(`SELECT artifact_id, stream_id, object_hash, COUNT(*) AS currents
|
|
98
|
+
FROM transcripts
|
|
99
|
+
WHERE state='current'
|
|
100
|
+
GROUP BY artifact_id, stream_id, object_hash
|
|
101
|
+
HAVING currents > 1`)
|
|
102
|
+
.all()
|
|
103
|
+
: [];
|
|
104
|
+
const multiplePrimary = tableExists(db, "sequences")
|
|
105
|
+
? db
|
|
106
|
+
.prepare(`SELECT book_id, COUNT(*) AS primaries
|
|
107
|
+
FROM sequences
|
|
108
|
+
WHERE is_primary=1
|
|
109
|
+
GROUP BY book_id
|
|
110
|
+
HAVING primaries > 1`)
|
|
111
|
+
.all()
|
|
112
|
+
: [];
|
|
113
|
+
if (foreignKeyRows.length > 0 ||
|
|
114
|
+
multipleCurrent.length > 0 ||
|
|
115
|
+
multiplePrimary.length > 0) {
|
|
116
|
+
throw new EngineFault({
|
|
117
|
+
code: "MERGE_VIOLATION",
|
|
118
|
+
message: "Merged working set violates semantic constraints",
|
|
119
|
+
details: {
|
|
120
|
+
foreignKeyViolations: foreignKeyRows,
|
|
121
|
+
multipleCurrentTranscripts: multipleCurrent,
|
|
122
|
+
multiplePrimarySequences: multiplePrimary,
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function mapMergeError(branch, error) {
|
|
128
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
129
|
+
if (CONSTRAINT_VIOLATION_REFUSAL.test(message)) {
|
|
130
|
+
// doltlite's merge-time verification refused and rolled back, so both
|
|
131
|
+
// refs are still intact; surface the refusal as a typed violation.
|
|
132
|
+
throw new EngineFault({
|
|
133
|
+
code: "MERGE_VIOLATION",
|
|
134
|
+
message: `Merge of ${branch} refused by Dolt constraint verification: ` +
|
|
135
|
+
"the merged working set would violate UNIQUE, CHECK, or " +
|
|
136
|
+
"foreign-key constraints (for example a RESTRICT reference to a " +
|
|
137
|
+
"row deleted on the other side)",
|
|
138
|
+
details: { branch, cause: message },
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
if (/merge conflict/i.test(message)) {
|
|
142
|
+
throw new EngineFault({
|
|
143
|
+
code: "MERGE_CONFLICT",
|
|
144
|
+
message: `Merge of ${branch} has row-level conflicts: ${message}`,
|
|
145
|
+
details: { branch, cause: message },
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
throw error;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Dolt-commits the singleton-flag reconcile, when it changed anything, so
|
|
152
|
+
* the working set is clean for the next merge. Kept separate from the
|
|
153
|
+
* merge commit because `dolt_merge()` finalizes its own commit before the
|
|
154
|
+
* merged working set can be inspected.
|
|
155
|
+
*/
|
|
156
|
+
function commitReconcile(db, reconciled) {
|
|
157
|
+
const tables = [];
|
|
158
|
+
if (reconciled.transcripts > 0)
|
|
159
|
+
tables.push("transcripts");
|
|
160
|
+
if (reconciled.sequences > 0)
|
|
161
|
+
tables.push("sequences");
|
|
162
|
+
if (tables.length === 0)
|
|
163
|
+
return;
|
|
164
|
+
for (const table of tables) {
|
|
165
|
+
db.prepare("SELECT dolt_add(?) AS result").get(table);
|
|
166
|
+
}
|
|
167
|
+
db.prepare("SELECT dolt_commit('-m', ?) AS hash").get(`Reconcile merged singleton flags: ${tables.join(", ")}`);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Merges `branch` into HEAD under the engine merge policy: same-schema
|
|
171
|
+
* precondition, Dolt constraint verification with typed errors,
|
|
172
|
+
* deterministic singleton-flag reconcile, and a post-merge constraint
|
|
173
|
+
* health check.
|
|
174
|
+
*
|
|
175
|
+
* NOTE (ve-wsu): doltlite corrupts full engine catalogs on checkout and
|
|
176
|
+
* clone, misfires its "uncommitted changes" merge guard on the full
|
|
177
|
+
* 28-table working set, and — when the guard is bypassed — fails true
|
|
178
|
+
* merges of engine history in schema loading. The dedicated merge-back
|
|
179
|
+
* flow in src/fork.ts therefore applies this policy's primitives around a
|
|
180
|
+
* projection-level three-way merge instead of calling this function;
|
|
181
|
+
* `mergeWithPolicy` remains the drop-in mechanism once the upstream bugs
|
|
182
|
+
* are fixed, and it is exercised against the real semantic schema in
|
|
183
|
+
* tests/merge-policy.test.ts.
|
|
184
|
+
*/
|
|
185
|
+
export function mergeWithPolicy(db, branch) {
|
|
186
|
+
assertSameSchemaVersion(db, "HEAD", branch);
|
|
187
|
+
let result;
|
|
188
|
+
try {
|
|
189
|
+
result = db.doltMerge(branch);
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
mapMergeError(branch, error);
|
|
193
|
+
}
|
|
194
|
+
const reconciled = reconcileSingletonFlags(db);
|
|
195
|
+
verifyConstraintHealth(db);
|
|
196
|
+
commitReconcile(db, reconciled);
|
|
197
|
+
return {
|
|
198
|
+
fastForward: result.fast_forward === 1,
|
|
199
|
+
reconciledTranscripts: reconciled.transcripts,
|
|
200
|
+
reconciledSequences: reconciled.sequences,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=merge-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-policy.js","sourceRoot":"","sources":["../src/merge-policy.ts"],"names":[],"mappings":"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"}
|
package/dist/metadata.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,MAAM,EACP,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,aAAa,EAEd,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,MAAM,EACP,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,aAAa,EAEd,MAAM,cAAc,CAAC;AAOtB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa;;0BAItC,MAAM,OACX,MAAM,SACJ,OAAO,KACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;eAEhC,CAAC,YACI,MAAM,OACX,MAAM,KACV,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;yBAEjB,CAAC,YACN,MAAM,OACX,MAAM,YACD,MAAM,KACf,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;2BAGtB,MAAM,OACX,MAAM,KACV,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;;;qBAKjC,MAAM,SACJ,OAAO,KACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;eAEhC,CAAC,OAAO,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;sBAEzC,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;;;0BAKhD,MAAM,SACT,MAAM,EAAE,KACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;yBAG3B,MAAM,KACf,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;2BAEjC,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;;EAItE"}
|
package/dist/metadata.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ok } from "./engine-types.js";
|
|
2
2
|
import { resultOf, } from "./context.js";
|
|
3
3
|
import { canonicalJson, parseJson } from "./store.js";
|
|
4
|
-
import { EngineFault } from "./store.js";
|
|
5
4
|
export function createMetadataApi(context) {
|
|
6
5
|
return {
|
|
7
6
|
artifacts: {
|
|
@@ -34,10 +33,11 @@ async function deleteArtifactMetadata(context, artifactReference, key) {
|
|
|
34
33
|
return false;
|
|
35
34
|
await context.store.semantic({
|
|
36
35
|
operation: "delete_artifact_metadata",
|
|
36
|
+
tables: ["artifact_metadata"],
|
|
37
37
|
artifactId: artifact.artifact_id,
|
|
38
38
|
details: { key: normalizedKey },
|
|
39
39
|
writeSet: [`artifact-metadata:${artifact.artifact_id}:${normalizedKey}`],
|
|
40
|
-
},
|
|
40
|
+
}, () => {
|
|
41
41
|
context.store.db
|
|
42
42
|
.prepare("DELETE FROM artifact_metadata WHERE artifact_id=? AND key=?")
|
|
43
43
|
.run(artifact.artifact_id, normalizedKey);
|
|
@@ -47,7 +47,7 @@ async function deleteArtifactMetadata(context, artifactReference, key) {
|
|
|
47
47
|
}
|
|
48
48
|
async function deleteBookMetadata(context, key) {
|
|
49
49
|
return resultOf(async () => {
|
|
50
|
-
const normalizedKey =
|
|
50
|
+
const normalizedKey = metadataKey(key);
|
|
51
51
|
const exists = context.store.db
|
|
52
52
|
.prepare("SELECT 1 AS present FROM book_metadata WHERE key=?")
|
|
53
53
|
.get(normalizedKey);
|
|
@@ -55,9 +55,10 @@ async function deleteBookMetadata(context, key) {
|
|
|
55
55
|
return false;
|
|
56
56
|
await context.store.semantic({
|
|
57
57
|
operation: "delete_book_metadata",
|
|
58
|
+
tables: ["book_metadata"],
|
|
58
59
|
details: { key: normalizedKey },
|
|
59
60
|
writeSet: [`book-metadata:${normalizedKey}`],
|
|
60
|
-
},
|
|
61
|
+
}, () => {
|
|
61
62
|
context.store.db
|
|
62
63
|
.prepare("DELETE FROM book_metadata WHERE key=?")
|
|
63
64
|
.run(normalizedKey);
|
|
@@ -75,9 +76,10 @@ async function deleteWaveform(context, artifactReference) {
|
|
|
75
76
|
return false;
|
|
76
77
|
await context.store.semantic({
|
|
77
78
|
operation: "delete_audio_waveform",
|
|
79
|
+
tables: ["audio_waveforms"],
|
|
78
80
|
artifactId: artifact.artifact_id,
|
|
79
81
|
writeSet: [`waveform:${artifact.artifact_id}`],
|
|
80
|
-
},
|
|
82
|
+
}, () => {
|
|
81
83
|
context.store.db
|
|
82
84
|
.prepare("DELETE FROM audio_waveforms WHERE artifact_id=?")
|
|
83
85
|
.run(artifact.artifact_id);
|
|
@@ -91,10 +93,11 @@ async function writeArtifactMetadata(context, artifactReference, key, value) {
|
|
|
91
93
|
const normalizedKey = metadataKey(key);
|
|
92
94
|
const mutation = await context.store.semantic({
|
|
93
95
|
operation: "write_artifact_metadata",
|
|
96
|
+
tables: ["artifact_metadata"],
|
|
94
97
|
artifactId: artifact.artifact_id,
|
|
95
98
|
details: { key: normalizedKey },
|
|
96
99
|
writeSet: [`artifact-metadata:${artifact.artifact_id}:${normalizedKey}`],
|
|
97
|
-
},
|
|
100
|
+
}, () => {
|
|
98
101
|
context.store.db
|
|
99
102
|
.prepare(`INSERT INTO artifact_metadata(artifact_id, key, value_json)
|
|
100
103
|
VALUES (?, ?, ?)
|
|
@@ -121,9 +124,8 @@ async function readArtifactMetadataAtRevision(context, artifactReference, key, r
|
|
|
121
124
|
return resultOf(async () => {
|
|
122
125
|
const artifact = context.store.db
|
|
123
126
|
.prepare(`SELECT artifact_id FROM dolt_at_artifacts(?)
|
|
124
|
-
WHERE artifact_id=?
|
|
125
|
-
|
|
126
|
-
.get(revision, artifactReference, artifactReference, artifactReference);
|
|
127
|
+
WHERE artifact_id=? LIMIT 1`)
|
|
128
|
+
.get(revision, artifactReference);
|
|
127
129
|
if (!artifact) {
|
|
128
130
|
throw new Error(`Artifact not found: ${artifactReference} at ${revision}`);
|
|
129
131
|
}
|
|
@@ -140,12 +142,13 @@ async function readArtifactMetadataAtRevision(context, artifactReference, key, r
|
|
|
140
142
|
}
|
|
141
143
|
async function writeBookMetadata(context, key, value) {
|
|
142
144
|
return resultOf(async () => {
|
|
143
|
-
const normalizedKey =
|
|
145
|
+
const normalizedKey = metadataKey(key);
|
|
144
146
|
const mutation = await context.store.semantic({
|
|
145
147
|
operation: "write_book_metadata",
|
|
148
|
+
tables: ["book_metadata"],
|
|
146
149
|
details: { key: normalizedKey },
|
|
147
150
|
writeSet: [`book-metadata:${normalizedKey}`],
|
|
148
|
-
},
|
|
151
|
+
}, () => {
|
|
149
152
|
context.store.db
|
|
150
153
|
.prepare(`INSERT INTO book_metadata(key, value_json)
|
|
151
154
|
VALUES (?, ?)
|
|
@@ -158,7 +161,7 @@ async function writeBookMetadata(context, key, value) {
|
|
|
158
161
|
}
|
|
159
162
|
async function readBookMetadata(context, key) {
|
|
160
163
|
return resultOf(async () => {
|
|
161
|
-
const normalizedKey =
|
|
164
|
+
const normalizedKey = metadataKey(key);
|
|
162
165
|
const row = context.store.db
|
|
163
166
|
.prepare("SELECT value_json FROM book_metadata WHERE key=?")
|
|
164
167
|
.get(normalizedKey);
|
|
@@ -175,9 +178,10 @@ async function writeWaveform(context, artifactReference, peaks) {
|
|
|
175
178
|
const artifact = context.artifactRow(artifactReference);
|
|
176
179
|
const mutation = await context.store.semantic({
|
|
177
180
|
operation: "write_audio_waveform",
|
|
181
|
+
tables: ["audio_waveforms"],
|
|
178
182
|
artifactId: artifact.artifact_id,
|
|
179
183
|
writeSet: [`waveform:${artifact.artifact_id}`],
|
|
180
|
-
},
|
|
184
|
+
}, () => {
|
|
181
185
|
context.store.db
|
|
182
186
|
.prepare(`INSERT INTO audio_waveforms(artifact_id, peaks_json)
|
|
183
187
|
VALUES (?, ?)
|
|
@@ -202,16 +206,6 @@ async function readWaveform(context, artifactReference) {
|
|
|
202
206
|
};
|
|
203
207
|
});
|
|
204
208
|
}
|
|
205
|
-
function bookMetadataKey(input) {
|
|
206
|
-
const key = metadataKey(input);
|
|
207
|
-
if (key === "timeline") {
|
|
208
|
-
throw new EngineFault({
|
|
209
|
-
code: "INVALID_INPUT",
|
|
210
|
-
message: 'Book metadata key "timeline" is reserved; use engine.timeline instead',
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
return key;
|
|
214
|
-
}
|
|
215
209
|
function metadataKey(input) {
|
|
216
210
|
const key = input.trim();
|
|
217
211
|
if (!/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,127}$/.test(key)) {
|
package/dist/metadata.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAEL,QAAQ,GACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAEL,QAAQ,GACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAMtD,MAAM,UAAU,iBAAiB,CAAC,OAAsB;IACtD,OAAO;QACL,SAAS,EAAE;YACT,KAAK,EAAE,CACL,QAAgB,EAChB,GAAW,EACX,KAAc,EACwB,EAAE,CACxC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC;YACtD,IAAI,EAAE,CACJ,QAAgB,EAChB,GAAW,EACsB,EAAE,CACnC,oBAAoB,CAAI,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC;YACjD,cAAc,EAAE,CACd,QAAgB,EAChB,GAAW,EACX,QAAgB,EACiB,EAAE,CACnC,8BAA8B,CAAI,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC;YACrE,MAAM,EAAE,CACN,QAAgB,EAChB,GAAW,EAC4B,EAAE,CACzC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC;SACjD;QACD,IAAI,EAAE;YACJ,KAAK,EAAE,CACL,GAAW,EACX,KAAc,EACwB,EAAE,CACxC,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC;YACxC,IAAI,EAAE,CAAI,GAAW,EAAmC,EAAE,CACxD,gBAAgB,CAAI,OAAO,EAAE,GAAG,CAAC;YACnC,MAAM,EAAE,CAAC,GAAW,EAAyC,EAAE,CAC7D,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC;SACnC;QACD,SAAS,EAAE;YACT,KAAK,EAAE,CACL,QAAgB,EAChB,KAAe,EACuB,EAAE,CACxC,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;YACzC,IAAI,EAAE,CACJ,QAAgB,EACmC,EAAE,CACrD,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC;YACjC,MAAM,EAAE,CAAC,QAAgB,EAAyC,EAAE,CAClE,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC;SACpC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,OAAsB,EACtB,iBAAyB,EACzB,GAAW;IAEX,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE;QACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE;aAC5B,OAAO,CACN;uCAC+B,CAChC;aACA,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAC1B;YACE,SAAS,EAAE,0BAA0B;YACrC,MAAM,EAAE,CAAC,mBAAmB,CAAC;YAC7B,UAAU,EAAE,QAAQ,CAAC,WAAW;YAChC,OAAO,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE;YAC/B,QAAQ,EAAE,CAAC,qBAAqB,QAAQ,CAAC,WAAW,IAAI,aAAa,EAAE,CAAC;SACzE,EACD,GAAG,EAAE;YACH,OAAO,CAAC,KAAK,CAAC,EAAE;iBACb,OAAO,CAAC,6DAA6D,CAAC;iBACtE,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAC9C,CAAC,CACF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,OAAsB,EACtB,GAAW;IAEX,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE;QACzB,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE;aAC5B,OAAO,CAAC,oDAAoD,CAAC;aAC7D,GAAG,CAAC,aAAa,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAC1B;YACE,SAAS,EAAE,sBAAsB;YACjC,MAAM,EAAE,CAAC,eAAe,CAAC;YACzB,OAAO,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE;YAC/B,QAAQ,EAAE,CAAC,iBAAiB,aAAa,EAAE,CAAC;SAC7C,EACD,GAAG,EAAE;YACH,OAAO,CAAC,KAAK,CAAC,EAAE;iBACb,OAAO,CAAC,uCAAuC,CAAC;iBAChD,GAAG,CAAC,aAAa,CAAC,CAAC;QACxB,CAAC,CACF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,OAAsB,EACtB,iBAAyB;IAEzB,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE;QACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE;aAC5B,OAAO,CAAC,8DAA8D,CAAC;aACvE,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAC1B;YACE,SAAS,EAAE,uBAAuB;YAClC,MAAM,EAAE,CAAC,iBAAiB,CAAC;YAC3B,UAAU,EAAE,QAAQ,CAAC,WAAW;YAChC,QAAQ,EAAE,CAAC,YAAY,QAAQ,CAAC,WAAW,EAAE,CAAC;SAC/C,EACD,GAAG,EAAE;YACH,OAAO,CAAC,KAAK,CAAC,EAAE;iBACb,OAAO,CAAC,iDAAiD,CAAC;iBAC1D,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC,CACF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,OAAsB,EACtB,iBAAyB,EACzB,GAAW,EACX,KAAc;IAEd,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE;QACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAC3C;YACE,SAAS,EAAE,yBAAyB;YACpC,MAAM,EAAE,CAAC,mBAAmB,CAAC;YAC7B,UAAU,EAAE,QAAQ,CAAC,WAAW;YAChC,OAAO,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE;YAC/B,QAAQ,EAAE,CAAC,qBAAqB,QAAQ,CAAC,WAAW,IAAI,aAAa,EAAE,CAAC;SACzE,EACD,GAAG,EAAE;YACH,OAAO,CAAC,KAAK,CAAC,EAAE;iBACb,OAAO,CACN;;;8CAGkC,CACnC;iBACA,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACpE,CAAC,CACF,CAAC;QACF,OAAO,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,OAAsB,EACtB,iBAAyB,EACzB,GAAW;IAEX,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE;QACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE;aACzB,OAAO,CACN;uCAC+B,CAChC;aACA,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAEhC,CAAC;QACd,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;QACjE,OAAO,SAAS,CAAI,GAAG,CAAC,UAAU,EAAE,IAAS,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,8BAA8B,CAC3C,OAAsB,EACtB,iBAAyB,EACzB,GAAW,EACX,QAAgB;IAEhB,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE;QACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE;aAC9B,OAAO,CACN;qCAC6B,CAC9B;aACA,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAErB,CAAC;QACd,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,uBAAuB,iBAAiB,OAAO,QAAQ,EAAE,CAC1D,CAAC;QACJ,CAAC;QACD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE;aACzB,OAAO,CACN;uCAC+B,CAChC;aACA,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE,aAAa,CAEvC,CAAC;QACd,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACb,gCAAgC,iBAAiB,IAAI,aAAa,OAAO,QAAQ,EAAE,CACpF,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAI,GAAG,CAAC,UAAU,EAAE,IAAS,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAAsB,EACtB,GAAW,EACX,KAAc;IAEd,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE;QACzB,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAC3C;YACE,SAAS,EAAE,qBAAqB;YAChC,MAAM,EAAE,CAAC,eAAe,CAAC;YACzB,OAAO,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE;YAC/B,QAAQ,EAAE,CAAC,iBAAiB,aAAa,EAAE,CAAC;SAC7C,EACD,GAAG,EAAE;YACH,OAAO,CAAC,KAAK,CAAC,EAAE;iBACb,OAAO,CACN;;;8CAGkC,CACnC;iBACA,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,CAAC,CACF,CAAC;QACF,OAAO,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,OAAsB,EACtB,GAAW;IAEX,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE;QACzB,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE;aACzB,OAAO,CAAC,kDAAkD,CAAC;aAC3D,GAAG,CAAC,aAAa,CAAuC,CAAC;QAC5D,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;QAC7D,OAAO,SAAS,CAAI,GAAG,CAAC,UAAU,EAAE,IAAS,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,OAAsB,EACtB,iBAAyB,EACzB,KAAe;IAEf,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAC3C;YACE,SAAS,EAAE,sBAAsB;YACjC,MAAM,EAAE,CAAC,iBAAiB,CAAC;YAC3B,UAAU,EAAE,QAAQ,CAAC,WAAW;YAChC,QAAQ,EAAE,CAAC,YAAY,QAAQ,CAAC,WAAW,EAAE,CAAC;SAC/C,EACD,GAAG,EAAE;YACH,OAAO,CAAC,KAAK,CAAC,EAAE;iBACb,OAAO,CACN;;;8CAGkC,CACnC;iBACA,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,CAAC,CACF,CAAC;QACF,OAAO,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,OAAsB,EACtB,iBAAyB;IAEzB,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE;QACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE;aACzB,OAAO,CAAC,4DAA4D,CAAC;aACrE,GAAG,CAAC,QAAQ,CAAC,WAAW,CAEd,CAAC;QACd,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACtD,OAAO;YACL,UAAU,EAAE,QAAQ,CAAC,WAAW;YAChC,KAAK,EAAE,SAAS,CAAW,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;SAC/C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { EngineError, Result } from "./engine-types.js";
|
|
2
|
+
import type { V4MigrationDryRun, V4MigrationRequest, V4MigrationResult } from "./mvp-contracts.js";
|
|
3
|
+
export declare function dryRunV4Migration(sourceRoot: string): Result<V4MigrationDryRun, EngineError>;
|
|
4
|
+
export declare function readV4BookIdentity(sourceRoot: string): Result<{
|
|
5
|
+
bookId: string;
|
|
6
|
+
slug: string;
|
|
7
|
+
}, EngineError>;
|
|
8
|
+
export declare function migrateV4(request: V4MigrationRequest): Promise<Result<V4MigrationDryRun | V4MigrationResult, EngineError>>;
|
|
9
|
+
//# sourceMappingURL=migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../src/migration.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACP,MAAM,mBAAmB,CAAC;AAK3B,OAAO,KAAK,EAEV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAgD5B,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,CA2DxC;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,WAAW,CAAC,CAuBvD;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,iBAAiB,GAAG,iBAAiB,EAAE,WAAW,CAAC,CAAC,CA0KrE"}
|