@bjornpagen/bumbledb-log 1.3.0 → 1.3.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 +152 -63
- package/dist/admin.d.ts +1 -1
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +13 -0
- package/dist/bin.js.map +1 -0
- package/dist/codes.d.ts +1 -1
- package/dist/codes.d.ts.map +1 -1
- package/dist/codes.js +1 -8
- package/dist/codes.js.map +1 -1
- package/dist/errors.d.ts +7 -21
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +11 -45
- package/dist/errors.js.map +1 -1
- package/dist/identity.d.ts +0 -8
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +0 -5
- package/dist/identity.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/machine.d.ts +4 -28
- package/dist/machine.d.ts.map +1 -1
- package/dist/machine.js +183 -246
- package/dist/machine.js.map +1 -1
- package/dist/native.d.ts +59 -154
- package/dist/native.d.ts.map +1 -1
- package/dist/native.js.map +1 -1
- package/dist/options.d.ts +2 -11
- package/dist/options.d.ts.map +1 -1
- package/dist/outcome.d.ts +1 -85
- package/dist/outcome.d.ts.map +1 -1
- package/dist/schema-files.d.ts +16 -0
- package/dist/schema-files.d.ts.map +1 -0
- package/dist/schema-files.js +77 -0
- package/dist/schema-files.js.map +1 -0
- package/dist/schema.d.ts +6 -9
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +8 -8
- package/dist/schema.js.map +1 -1
- package/dist/transition.d.ts +75 -0
- package/dist/transition.d.ts.map +1 -0
- package/dist/transition.js +3 -0
- package/dist/transition.js.map +1 -0
- package/pack-provenance.json +4 -4
- package/package.json +4 -8
- package/dist/migration-ops.d.ts +0 -20
- package/dist/migration-ops.d.ts.map +0 -1
- package/dist/migration-ops.js +0 -7
- package/dist/migration-ops.js.map +0 -1
- package/dist/migrations/bin.d.ts.map +0 -1
- package/dist/migrations/bin.js +0 -30
- package/dist/migrations/bin.js.map +0 -1
- package/dist/migrations/canonical.d.ts +0 -40
- package/dist/migrations/canonical.d.ts.map +0 -1
- package/dist/migrations/canonical.js +0 -165
- package/dist/migrations/canonical.js.map +0 -1
- package/dist/migrations/cli.d.ts +0 -29
- package/dist/migrations/cli.d.ts.map +0 -1
- package/dist/migrations/cli.js +0 -124
- package/dist/migrations/cli.js.map +0 -1
- package/dist/migrations/codec.d.ts +0 -74
- package/dist/migrations/codec.d.ts.map +0 -1
- package/dist/migrations/codec.js +0 -2
- package/dist/migrations/codec.js.map +0 -1
- package/dist/migrations/decode.d.ts +0 -16
- package/dist/migrations/decode.d.ts.map +0 -1
- package/dist/migrations/decode.js +0 -302
- package/dist/migrations/decode.js.map +0 -1
- package/dist/migrations/diff.d.ts +0 -39
- package/dist/migrations/diff.d.ts.map +0 -1
- package/dist/migrations/diff.js +0 -385
- package/dist/migrations/diff.js.map +0 -1
- package/dist/migrations/expr.d.ts +0 -22
- package/dist/migrations/expr.d.ts.map +0 -1
- package/dist/migrations/expr.js +0 -257
- package/dist/migrations/expr.js.map +0 -1
- package/dist/migrations/fail.d.ts +0 -22
- package/dist/migrations/fail.d.ts.map +0 -1
- package/dist/migrations/fail.js +0 -52
- package/dist/migrations/fail.js.map +0 -1
- package/dist/migrations/fsops.d.ts +0 -37
- package/dist/migrations/fsops.d.ts.map +0 -1
- package/dist/migrations/fsops.js +0 -222
- package/dist/migrations/fsops.js.map +0 -1
- package/dist/migrations/generate.d.ts +0 -11
- package/dist/migrations/generate.d.ts.map +0 -1
- package/dist/migrations/generate.js +0 -455
- package/dist/migrations/generate.js.map +0 -1
- package/dist/migrations/index.d.ts +0 -23
- package/dist/migrations/index.d.ts.map +0 -1
- package/dist/migrations/index.js +0 -6
- package/dist/migrations/index.js.map +0 -1
- package/dist/migrations/intent.d.ts +0 -86
- package/dist/migrations/intent.d.ts.map +0 -1
- package/dist/migrations/intent.js +0 -97
- package/dist/migrations/intent.js.map +0 -1
- package/dist/migrations/lock.d.ts +0 -27
- package/dist/migrations/lock.d.ts.map +0 -1
- package/dist/migrations/lock.js +0 -14
- package/dist/migrations/lock.js.map +0 -1
- package/dist/migrations/native.d.ts +0 -26
- package/dist/migrations/native.d.ts.map +0 -1
- package/dist/migrations/native.js +0 -124
- package/dist/migrations/native.js.map +0 -1
- package/dist/migrations/repo.d.ts +0 -38
- package/dist/migrations/repo.d.ts.map +0 -1
- package/dist/migrations/repo.js +0 -191
- package/dist/migrations/repo.js.map +0 -1
- package/dist/migrations/theory.d.ts +0 -21
- package/dist/migrations/theory.d.ts.map +0 -1
- package/dist/migrations/theory.js +0 -107
- package/dist/migrations/theory.js.map +0 -1
- package/dist/migrations/types.d.ts +0 -251
- package/dist/migrations/types.d.ts.map +0 -1
- package/dist/migrations/types.js +0 -2
- package/dist/migrations/types.js.map +0 -1
- package/dist/migrations/workflow.d.ts +0 -11
- package/dist/migrations/workflow.d.ts.map +0 -1
- package/dist/migrations/workflow.js +0 -14
- package/dist/migrations/workflow.js.map +0 -1
- /package/dist/{migrations/bin.d.ts → bin.d.ts} +0 -0
package/dist/migrations/expr.js
DELETED
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core `ScalarExpr` → canonical migration-plan expression data.
|
|
3
|
-
* The generator SERIALIZES the core's typed scalar AST; it never evaluates
|
|
4
|
-
* it — the native executor lowers the plan onto `bumbledb::ScalarExpr` and
|
|
5
|
-
* the core `ScalarEvaluator` executes it with the core's exact numeric
|
|
6
|
-
* semantics, and native plan compilation re-judges every node and type. The
|
|
7
|
-
* walk below is a bounded structural check with the same depth fence as the
|
|
8
|
-
* native codec (`MAX_EXPR_DEPTH = 128`); any node outside the frozen core
|
|
9
|
-
* roster (closure, module path, unknown kind) is an unsupported-transform
|
|
10
|
-
* refusal, never a fallback.
|
|
11
|
-
* Literal payloads accept canonical wire values and the bigint, number,
|
|
12
|
-
* and Uint8Array values retained by core SDK constructors. The serialized
|
|
13
|
-
* form is checked again by the native migration-plan decoder.
|
|
14
|
-
*/
|
|
15
|
-
import { Uuid } from "@bjornpagen/bumbledb";
|
|
16
|
-
import { bytesHex, f64Bits } from "#migrations/canonical.ts";
|
|
17
|
-
const MAX_DEPTH = 128;
|
|
18
|
-
const MAX_NODES = 4096;
|
|
19
|
-
const MAX_TEXT = 65536;
|
|
20
|
-
function refuse(detail) {
|
|
21
|
-
return { ok: false, detail };
|
|
22
|
-
}
|
|
23
|
-
function isRecord(value) {
|
|
24
|
-
return typeof value === "object" && value !== null;
|
|
25
|
-
}
|
|
26
|
-
function isCanonicalHex(text, length) {
|
|
27
|
-
if (text.length !== length) {
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
for (let index = 0; index < text.length; index += 1) {
|
|
31
|
-
const code = text.charCodeAt(index);
|
|
32
|
-
if (!((code >= 48 && code <= 57) || (code >= 97 && code <= 102))) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return true;
|
|
37
|
-
}
|
|
38
|
-
const U64_MAX = 0xffffffffffffffffn;
|
|
39
|
-
const I64_MIN = -0x8000000000000000n;
|
|
40
|
-
const I64_MAX = 0x7fffffffffffffffn;
|
|
41
|
-
function decimalU64(value) {
|
|
42
|
-
if (typeof value === "bigint" && value >= 0n && value <= U64_MAX) {
|
|
43
|
-
return value.toString(10);
|
|
44
|
-
}
|
|
45
|
-
if (typeof value === "string" && value.length > 0 && value.length <= 20 && /^(0|[1-9][0-9]*)$/.test(value)) {
|
|
46
|
-
return BigInt(value) <= U64_MAX ? value : null;
|
|
47
|
-
}
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
function decimalI64(value) {
|
|
51
|
-
if (typeof value === "bigint" && value >= I64_MIN && value <= I64_MAX) {
|
|
52
|
-
return value.toString(10);
|
|
53
|
-
}
|
|
54
|
-
if (typeof value === "string" && value.length > 0 && value.length <= 21 && /^(0|-?[1-9][0-9]*)$/.test(value)) {
|
|
55
|
-
const parsed = BigInt(value);
|
|
56
|
-
return parsed >= I64_MIN && parsed <= I64_MAX ? value : null;
|
|
57
|
-
}
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
function bitsOf(value) {
|
|
61
|
-
if (typeof value === "number") {
|
|
62
|
-
return f64Bits(value);
|
|
63
|
-
}
|
|
64
|
-
if (typeof value === "string" && isCanonicalHex(value, 16)) {
|
|
65
|
-
return value;
|
|
66
|
-
}
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
function pairOf(value, one) {
|
|
70
|
-
if (!Array.isArray(value) || value.length !== 2) {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
const start = one(value[0]);
|
|
74
|
-
const end = one(value[1]);
|
|
75
|
-
return start === null || end === null ? null : [start, end];
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Bounded structural check of one literal payload into the canonical
|
|
79
|
-
* one-arm value spelling.
|
|
80
|
-
*/
|
|
81
|
-
export function planValueOf(value) {
|
|
82
|
-
if (!isRecord(value)) {
|
|
83
|
-
return "a literal payload must be a one-arm tagged core value";
|
|
84
|
-
}
|
|
85
|
-
const keys = Object.keys(value);
|
|
86
|
-
if (keys.length !== 1) {
|
|
87
|
-
return "a literal payload must have exactly one value arm";
|
|
88
|
-
}
|
|
89
|
-
const arm = keys[0];
|
|
90
|
-
const body = value[arm];
|
|
91
|
-
switch (arm) {
|
|
92
|
-
case "bool":
|
|
93
|
-
return typeof body === "boolean" ? { bool: body } : "bool literal needs a boolean";
|
|
94
|
-
case "u64": {
|
|
95
|
-
const decimal = decimalU64(body);
|
|
96
|
-
return decimal === null ? "u64 literal needs a canonical in-range integer" : { u64: decimal };
|
|
97
|
-
}
|
|
98
|
-
case "i64": {
|
|
99
|
-
const decimal = decimalI64(body);
|
|
100
|
-
return decimal === null ? "i64 literal needs a canonical in-range integer" : { i64: decimal };
|
|
101
|
-
}
|
|
102
|
-
case "$f64":
|
|
103
|
-
case "f64": {
|
|
104
|
-
const bits = bitsOf(body);
|
|
105
|
-
return bits === null ? "f64 literal needs a number or 16 lowercase hex bits" : { $f64: bits };
|
|
106
|
-
}
|
|
107
|
-
case "uuid":
|
|
108
|
-
return Uuid.isUuid(body) ? { uuid: body } : "uuid literal needs a canonical UUID";
|
|
109
|
-
case "string":
|
|
110
|
-
return typeof body === "string" && body.length <= MAX_TEXT && body.isWellFormed()
|
|
111
|
-
? { string: body }
|
|
112
|
-
: "string literal needs bounded well-formed text";
|
|
113
|
-
case "fixedBytes": {
|
|
114
|
-
if (body instanceof Uint8Array && body.length <= MAX_TEXT) {
|
|
115
|
-
return { fixedBytes: bytesHex(body) };
|
|
116
|
-
}
|
|
117
|
-
if (typeof body === "string" &&
|
|
118
|
-
body.length <= 2 * MAX_TEXT &&
|
|
119
|
-
body.length % 2 === 0 &&
|
|
120
|
-
isCanonicalHex(body, body.length)) {
|
|
121
|
-
return { fixedBytes: body };
|
|
122
|
-
}
|
|
123
|
-
return "fixedBytes literal needs a bounded Uint8Array or lowercase hex";
|
|
124
|
-
}
|
|
125
|
-
case "intervalU64": {
|
|
126
|
-
const pair = pairOf(body, decimalU64);
|
|
127
|
-
return pair === null ? "intervalU64 literal needs two canonical integers" : { intervalU64: pair };
|
|
128
|
-
}
|
|
129
|
-
case "intervalI64": {
|
|
130
|
-
const pair = pairOf(body, decimalI64);
|
|
131
|
-
return pair === null ? "intervalI64 literal needs two canonical integers" : { intervalI64: pair };
|
|
132
|
-
}
|
|
133
|
-
case "intervalF64": {
|
|
134
|
-
const pair = pairOf(body, bitsOf);
|
|
135
|
-
return pair === null ? "intervalF64 literal needs two float endpoints" : { intervalF64: pair };
|
|
136
|
-
}
|
|
137
|
-
default:
|
|
138
|
-
return `unknown literal arm ${arm}`;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
const CASTS = ["toF64", "toF64Exact", "toI64Exact", "toU64Exact"];
|
|
142
|
-
function walk(node, depth, budget, fields) {
|
|
143
|
-
if (depth > MAX_DEPTH) {
|
|
144
|
-
return `expression deeper than ${MAX_DEPTH}`;
|
|
145
|
-
}
|
|
146
|
-
budget.nodes += 1;
|
|
147
|
-
if (budget.nodes > MAX_NODES) {
|
|
148
|
-
return `expression larger than ${MAX_NODES} nodes`;
|
|
149
|
-
}
|
|
150
|
-
if (!isRecord(node) || typeof node.kind !== "string") {
|
|
151
|
-
return "an expression node must be a tagged core ScalarExpr value — functions, promises and plain hosts are not plan data";
|
|
152
|
-
}
|
|
153
|
-
const arms = {
|
|
154
|
-
field: ["name"],
|
|
155
|
-
literal: ["value"],
|
|
156
|
-
measure: ["expr"],
|
|
157
|
-
negate: ["expr"],
|
|
158
|
-
isNaN: ["expr"],
|
|
159
|
-
isFinite: ["expr"],
|
|
160
|
-
cast: ["cast", "expr"],
|
|
161
|
-
mulDiv: ["a", "b", "divisor", "rounding"],
|
|
162
|
-
add: ["left", "right"],
|
|
163
|
-
subtract: ["left", "right"],
|
|
164
|
-
multiply: ["left", "right"],
|
|
165
|
-
divide: ["left", "right"]
|
|
166
|
-
};
|
|
167
|
-
const required = Object.hasOwn(arms, node.kind) ? arms[node.kind] : undefined;
|
|
168
|
-
if (required === undefined)
|
|
169
|
-
return `unsupported expression node ${node.kind} — the finite supported grammar is ${Object.keys(arms).join("/")}`;
|
|
170
|
-
if (required.some((key) => !Object.hasOwn(node, key)) ||
|
|
171
|
-
Object.keys(node).some((key) => !["kind", "scope", "result", "depth", ...required].includes(key)))
|
|
172
|
-
return "unknown or missing expression field";
|
|
173
|
-
if (Object.hasOwn(node, "scope") && node.scope !== "source-field")
|
|
174
|
-
return "migration expressions read source fields";
|
|
175
|
-
switch (node.kind) {
|
|
176
|
-
case "field": {
|
|
177
|
-
if (typeof node.name !== "string" || node.name.length === 0 || node.name.length > 255) {
|
|
178
|
-
return "a field reference needs a bounded source field name";
|
|
179
|
-
}
|
|
180
|
-
fields.add(node.name);
|
|
181
|
-
return { kind: "field", name: node.name };
|
|
182
|
-
}
|
|
183
|
-
case "literal": {
|
|
184
|
-
const value = planValueOf(node.value);
|
|
185
|
-
return typeof value === "string" ? value : { kind: "literal", value };
|
|
186
|
-
}
|
|
187
|
-
case "measure":
|
|
188
|
-
case "negate":
|
|
189
|
-
case "isNaN":
|
|
190
|
-
case "isFinite": {
|
|
191
|
-
const inner = walk(node.expr, depth + 1, budget, fields);
|
|
192
|
-
if (typeof inner === "string") {
|
|
193
|
-
return inner;
|
|
194
|
-
}
|
|
195
|
-
return { kind: node.kind, expr: inner };
|
|
196
|
-
}
|
|
197
|
-
case "add":
|
|
198
|
-
case "subtract":
|
|
199
|
-
case "multiply":
|
|
200
|
-
case "divide": {
|
|
201
|
-
const left = walk(node.left, depth + 1, budget, fields);
|
|
202
|
-
if (typeof left === "string") {
|
|
203
|
-
return left;
|
|
204
|
-
}
|
|
205
|
-
const right = walk(node.right, depth + 1, budget, fields);
|
|
206
|
-
if (typeof right === "string") {
|
|
207
|
-
return right;
|
|
208
|
-
}
|
|
209
|
-
return { kind: node.kind, left, right };
|
|
210
|
-
}
|
|
211
|
-
case "mulDiv": {
|
|
212
|
-
const { rounding } = node;
|
|
213
|
-
if (rounding !== "towardZero" && rounding !== "nearestTiesAwayFromZero" && rounding !== "nearestTiesToEven")
|
|
214
|
-
return "unknown integer rounding mode";
|
|
215
|
-
const a = walk(node.a, depth + 1, budget, fields);
|
|
216
|
-
if (typeof a === "string")
|
|
217
|
-
return a;
|
|
218
|
-
const b = walk(node.b, depth + 1, budget, fields);
|
|
219
|
-
if (typeof b === "string")
|
|
220
|
-
return b;
|
|
221
|
-
const divisor = walk(node.divisor, depth + 1, budget, fields);
|
|
222
|
-
if (typeof divisor === "string")
|
|
223
|
-
return divisor;
|
|
224
|
-
return { kind: node.kind, a, b, divisor, rounding };
|
|
225
|
-
}
|
|
226
|
-
case "cast": {
|
|
227
|
-
const cast = CASTS.find((name) => name === node.cast);
|
|
228
|
-
if (cast === undefined) {
|
|
229
|
-
return `unknown cast ${String(node.cast)} — the checked roster is toF64/toF64Exact/toI64Exact/toU64Exact`;
|
|
230
|
-
}
|
|
231
|
-
const inner = walk(node.expr, depth + 1, budget, fields);
|
|
232
|
-
if (typeof inner === "string") {
|
|
233
|
-
return inner;
|
|
234
|
-
}
|
|
235
|
-
return { kind: "cast", cast, expr: inner };
|
|
236
|
-
}
|
|
237
|
-
default:
|
|
238
|
-
return `unsupported expression node ${node.kind}`;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Serialize one core scalar expression into canonical plan data, collecting
|
|
243
|
-
* the referenced source field names for loss accounting.
|
|
244
|
-
*/
|
|
245
|
-
export function planExpressionOf(expression) {
|
|
246
|
-
const fields = new Set();
|
|
247
|
-
const outcome = walk(expression, 0, { nodes: 0 }, fields);
|
|
248
|
-
if (typeof outcome === "string") {
|
|
249
|
-
return refuse(outcome);
|
|
250
|
-
}
|
|
251
|
-
return { ok: true, expression: outcome, fields: [...fields] };
|
|
252
|
-
}
|
|
253
|
-
/** The identity projection every carried field lowers to. */
|
|
254
|
-
export function fieldExpression(name) {
|
|
255
|
-
return { kind: "field", name };
|
|
256
|
-
}
|
|
257
|
-
//# sourceMappingURL=expr.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"expr.js","sourceRoot":"","sources":["../../src/migrations/expr.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Migration failures use the shared `DbError | ProtocolError` vocabulary.
|
|
3
|
-
* Reasons carry bounded structured detail; consumers never parse messages.
|
|
4
|
-
*/
|
|
5
|
-
import { ProtocolError } from "../errors.js";
|
|
6
|
-
/** One actionable generation refusal: what is required, about which subject. */
|
|
7
|
-
export interface IntentRequirement {
|
|
8
|
-
readonly code: "ambiguous" | "destructive" | "missing-backfill" | "type-change" | "unsupported" | "stale-intent" | "conflicting-intent";
|
|
9
|
-
readonly relation: string;
|
|
10
|
-
readonly field: string | null;
|
|
11
|
-
readonly detail: string;
|
|
12
|
-
}
|
|
13
|
-
export declare function boundedDetail(detail: string): string;
|
|
14
|
-
/** Generation refuses with the complete finite list of required typed intent. */
|
|
15
|
-
export declare function intentRequired(operation: string, requirements: readonly IntentRequirement[]): ProtocolError;
|
|
16
|
-
/** A recorded plan/manifest/snapshot no longer matches its recorded identity. */
|
|
17
|
-
export declare function drift(operation: string, detail: string): ProtocolError;
|
|
18
|
-
/** The finite supported grammar cannot express the authored input. */
|
|
19
|
-
export declare function unsupported(operation: string, detail: string): ProtocolError;
|
|
20
|
-
/** A malformed or unreadable repository artifact/layout. */
|
|
21
|
-
export declare function repository(operation: string, path: string, detail: string): ProtocolError;
|
|
22
|
-
//# sourceMappingURL=fail.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fail.d.ts","sourceRoot":"","sources":["../../src/migrations/fail.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C,gFAAgF;AAChF,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,IAAI,EACV,WAAW,GACX,aAAa,GACb,kBAAkB,GAClB,aAAa,GACb,aAAa,GACb,cAAc,GACd,oBAAoB,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACvB;AAKD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD;AAWD,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,iBAAiB,EAAE,GAAG,aAAa,CAU3G;AAED,iFAAiF;AACjF,wBAAgB,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAKtE;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAK5E;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAKzF"}
|
package/dist/migrations/fail.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Migration failures use the shared `DbError | ProtocolError` vocabulary.
|
|
3
|
-
* Reasons carry bounded structured detail; consumers never parse messages.
|
|
4
|
-
*/
|
|
5
|
-
import { ProtocolError } from "#errors.ts";
|
|
6
|
-
const MAX_REQUIREMENTS = 32;
|
|
7
|
-
const MAX_DETAIL = 512;
|
|
8
|
-
export function boundedDetail(detail) {
|
|
9
|
-
return detail.length > MAX_DETAIL ? `${detail.slice(0, MAX_DETAIL - 1)}…` : detail;
|
|
10
|
-
}
|
|
11
|
-
function boundedRequirement(requirement) {
|
|
12
|
-
return {
|
|
13
|
-
code: requirement.code,
|
|
14
|
-
relation: requirement.relation,
|
|
15
|
-
field: requirement.field,
|
|
16
|
-
detail: boundedDetail(requirement.detail)
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
/** Generation refuses with the complete finite list of required typed intent. */
|
|
20
|
-
export function intentRequired(operation, requirements) {
|
|
21
|
-
const truncated = requirements.length > MAX_REQUIREMENTS;
|
|
22
|
-
return new ProtocolError({
|
|
23
|
-
operation,
|
|
24
|
-
reason: {
|
|
25
|
-
_tag: "MigrationIntentRequired",
|
|
26
|
-
requirements: requirements.slice(0, MAX_REQUIREMENTS).map(boundedRequirement),
|
|
27
|
-
truncated
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
/** A recorded plan/manifest/snapshot no longer matches its recorded identity. */
|
|
32
|
-
export function drift(operation, detail) {
|
|
33
|
-
return new ProtocolError({
|
|
34
|
-
operation,
|
|
35
|
-
reason: { _tag: "MigrationDrift", detail: boundedDetail(detail) }
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
/** The finite supported grammar cannot express the authored input. */
|
|
39
|
-
export function unsupported(operation, detail) {
|
|
40
|
-
return new ProtocolError({
|
|
41
|
-
operation,
|
|
42
|
-
reason: { _tag: "MigrationUnsupported", detail: boundedDetail(detail) }
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
/** A malformed or unreadable repository artifact/layout. */
|
|
46
|
-
export function repository(operation, path, detail) {
|
|
47
|
-
return new ProtocolError({
|
|
48
|
-
operation,
|
|
49
|
-
reason: { _tag: "MigrationRepository", path: boundedDetail(path), detail: boundedDetail(detail) }
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=fail.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fail.js","sourceRoot":"","sources":["../../src/migrations/fail.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAiB1C,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAC3B,MAAM,UAAU,GAAG,GAAG,CAAA;AAEtB,MAAM,UAAU,aAAa,CAAC,MAAc;IAC3C,OAAO,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAA;AACnF,CAAC;AAED,SAAS,kBAAkB,CAAC,WAA8B;IACzD,OAAO;QACN,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC;KACzC,CAAA;AACF,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,YAA0C;IAC3F,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,GAAG,gBAAgB,CAAA;IACxD,OAAO,IAAI,aAAa,CAAC;QACxB,SAAS;QACT,MAAM,EAAE;YACP,IAAI,EAAE,yBAAyB;YAC/B,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC;YAC7E,SAAS;SACT;KACD,CAAC,CAAA;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,KAAK,CAAC,SAAiB,EAAE,MAAc;IACtD,OAAO,IAAI,aAAa,CAAC;QACxB,SAAS;QACT,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE;KACjE,CAAC,CAAA;AACH,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,MAAc;IAC5D,OAAO,IAAI,aAAa,CAAC;QACxB,SAAS;QACT,MAAM,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE;KACvE,CAAC,CAAA;AACH,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,SAAiB,EAAE,IAAY,EAAE,MAAc;IACzE,OAAO,IAAI,aAAa,CAAC;QACxB,SAAS;QACT,MAAM,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE;KACjG,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Effect } from "effect";
|
|
2
|
-
import type { LogError } from "../errors.js";
|
|
3
|
-
/**
|
|
4
|
-
* Join every in-flight filesystem promise. Uninterruptible: the repository
|
|
5
|
-
* lock must outlive canceled I/O.
|
|
6
|
-
*/
|
|
7
|
-
export declare const joinPendingIo: Effect.Effect<void>;
|
|
8
|
-
/**
|
|
9
|
-
* Read one UTF-8 file through a single descriptor in bounded chunks.
|
|
10
|
-
* Invalid UTF-8 is fatal. A growing file stops at the aggregate cap.
|
|
11
|
-
* Absent files are `null`, never an invented empty artifact. Yields between
|
|
12
|
-
* chunks so concurrent growth is observable.
|
|
13
|
-
*/
|
|
14
|
-
export declare function readBounded(operation: string, filePath: string, maxBytes: number): Effect.Effect<string | null, LogError>;
|
|
15
|
-
/** Create the directory (and parents). Idempotent. */
|
|
16
|
-
export declare function ensureDirectory(operation: string, directory: string): Effect.Effect<void, LogError>;
|
|
17
|
-
/**
|
|
18
|
-
* Publish one uniquely owned immutable artifact. No-clobber: an existing
|
|
19
|
-
* file is accepted only when its bytes are identical. Uninterruptible.
|
|
20
|
-
*/
|
|
21
|
-
export declare function writeImmutable(operation: string, filePath: string, text: string): Effect.Effect<void, LogError>;
|
|
22
|
-
/**
|
|
23
|
-
* Atomically durably replace the sole authoritative manifest. Last commit
|
|
24
|
-
* of a generation. Uninterruptible.
|
|
25
|
-
*/
|
|
26
|
-
export declare function writeManifest(operation: string, filePath: string, text: string): Effect.Effect<void, LogError>;
|
|
27
|
-
/**
|
|
28
|
-
* Repair a derived index/contract file idempotently (temp + fsync + rename).
|
|
29
|
-
* Uninterruptible.
|
|
30
|
-
*/
|
|
31
|
-
export declare function writeDerived(operation: string, filePath: string, text: string): Effect.Effect<void, LogError>;
|
|
32
|
-
/**
|
|
33
|
-
* Remove one file (idempotent). Used ONLY for unrecorded interrupted-
|
|
34
|
-
* generation leftovers; recorded history files are never removed.
|
|
35
|
-
*/
|
|
36
|
-
export declare function removeFile(operation: string, filePath: string): Effect.Effect<void, LogError>;
|
|
37
|
-
//# sourceMappingURL=fsops.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fsops.d.ts","sourceRoot":"","sources":["../../src/migrations/fsops.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAqC1C;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAG7C,CAAA;AA2BD;;;;;GAKG;AACH,wBAAgB,WAAW,CAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,QAAQ,CAAC,CAqCxC;AAED,sDAAsD;AACtD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAInG;AAyDD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAI/G;AAoBD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAE9G;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAE7G;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAI7F"}
|
package/dist/migrations/fsops.js
DELETED
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bounded, interruption-safe repository filesystem work. Generation holds
|
|
3
|
-
* the native kernel lock (see `#migrations/lock.ts`) before any read or
|
|
4
|
-
* cleanup. Reads use one open file descriptor, bounded chunks, fatal UTF-8
|
|
5
|
-
* and an aggregate byte cap — never stat then whole-file read. Immutable
|
|
6
|
-
* plan/snapshot artifacts are uniquely owned (O_EXCL / no-clobber); matching
|
|
7
|
-
* existing content is verified, never overwritten. The sole authoritative
|
|
8
|
-
* manifest is replaced last by a uniquely named temp + fsync + rename +
|
|
9
|
-
* directory sync. Derived index/contract files are repairable the same way.
|
|
10
|
-
*
|
|
11
|
-
* Every promise I/O is tracked. Cancellation joins pending work before the
|
|
12
|
-
* caller releases the repository lock. No PID liveness, stale-file unlink,
|
|
13
|
-
* or lock-token guessing lives here.
|
|
14
|
-
*/
|
|
15
|
-
import { randomUUID } from "node:crypto";
|
|
16
|
-
import { mkdir, open, rename, rm } from "node:fs/promises";
|
|
17
|
-
import * as path from "node:path";
|
|
18
|
-
import { Effect } from "effect";
|
|
19
|
-
import { repository } from "#migrations/fail.ts";
|
|
20
|
-
const CHUNK = 64 * 1024;
|
|
21
|
-
const decoder = new TextDecoder("utf-8", { fatal: true });
|
|
22
|
-
const pending = new Set();
|
|
23
|
-
function track(work) {
|
|
24
|
-
pending.add(work);
|
|
25
|
-
return work.finally(() => {
|
|
26
|
-
pending.delete(work);
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
function ioDetail(cause) {
|
|
30
|
-
if (typeof cause === "object" && cause !== null && "code" in cause && typeof cause.code === "string") {
|
|
31
|
-
return cause.code;
|
|
32
|
-
}
|
|
33
|
-
if (cause instanceof TypeError) {
|
|
34
|
-
return "invalid UTF-8";
|
|
35
|
-
}
|
|
36
|
-
return "io failure";
|
|
37
|
-
}
|
|
38
|
-
function ioError(operation, filePath, cause) {
|
|
39
|
-
return repository(operation, filePath, ioDetail(cause));
|
|
40
|
-
}
|
|
41
|
-
function isMissing(cause) {
|
|
42
|
-
return typeof cause === "object" && cause !== null && "code" in cause && cause.code === "ENOENT";
|
|
43
|
-
}
|
|
44
|
-
function isExists(cause) {
|
|
45
|
-
return typeof cause === "object" && cause !== null && "code" in cause && cause.code === "EEXIST";
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Join every in-flight filesystem promise. Uninterruptible: the repository
|
|
49
|
-
* lock must outlive canceled I/O.
|
|
50
|
-
*/
|
|
51
|
-
export const joinPendingIo = Effect.promise(() => Promise.allSettled([...pending])).pipe(Effect.asVoid, Effect.uninterruptible);
|
|
52
|
-
function tryIo(operation, filePath, work) {
|
|
53
|
-
return Effect.tryPromise({
|
|
54
|
-
try: () => track(work()),
|
|
55
|
-
catch: (cause) => ioError(operation, filePath, cause)
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
async function openExisting(filePath) {
|
|
59
|
-
try {
|
|
60
|
-
return await open(filePath, "r");
|
|
61
|
-
}
|
|
62
|
-
catch (cause) {
|
|
63
|
-
if (isMissing(cause)) {
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
throw cause;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
function decodeBytes(operation, filePath, pieces) {
|
|
70
|
-
return Effect.try({
|
|
71
|
-
try: () => decoder.decode(pieces.length === 0 ? new Uint8Array() : Buffer.concat(pieces)),
|
|
72
|
-
catch: (cause) => ioError(operation, filePath, cause)
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Read one UTF-8 file through a single descriptor in bounded chunks.
|
|
77
|
-
* Invalid UTF-8 is fatal. A growing file stops at the aggregate cap.
|
|
78
|
-
* Absent files are `null`, never an invented empty artifact. Yields between
|
|
79
|
-
* chunks so concurrent growth is observable.
|
|
80
|
-
*/
|
|
81
|
-
export function readBounded(operation, filePath, maxBytes) {
|
|
82
|
-
return Effect.gen(function* () {
|
|
83
|
-
const opened = yield* tryIo(operation, filePath, () => openExisting(filePath));
|
|
84
|
-
if (opened === null) {
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
87
|
-
return yield* Effect.acquireUseRelease(Effect.succeed(opened), (handle) => Effect.gen(function* () {
|
|
88
|
-
const pieces = [];
|
|
89
|
-
let total = 0;
|
|
90
|
-
const buffer = Buffer.alloc(CHUNK);
|
|
91
|
-
for (;;) {
|
|
92
|
-
const bytesRead = yield* tryIo(operation, filePath, async () => {
|
|
93
|
-
const result = await handle.read(buffer, 0, buffer.length, null);
|
|
94
|
-
return result.bytesRead;
|
|
95
|
-
});
|
|
96
|
-
if (bytesRead === 0) {
|
|
97
|
-
break;
|
|
98
|
-
}
|
|
99
|
-
total += bytesRead;
|
|
100
|
-
if (total > maxBytes) {
|
|
101
|
-
return yield* Effect.fail(repository(operation, filePath, `file exceeds the ${maxBytes}-byte bound`));
|
|
102
|
-
}
|
|
103
|
-
pieces.push(Buffer.from(buffer.subarray(0, bytesRead)));
|
|
104
|
-
yield* Effect.yieldNow;
|
|
105
|
-
}
|
|
106
|
-
return yield* decodeBytes(operation, filePath, pieces);
|
|
107
|
-
}), (handle) => tryIo(operation, filePath, () => handle.close()).pipe(Effect.catch(() => Effect.void), Effect.asVoid));
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
/** Create the directory (and parents). Idempotent. */
|
|
111
|
-
export function ensureDirectory(operation, directory) {
|
|
112
|
-
return tryIo(operation, directory, async () => {
|
|
113
|
-
await mkdir(directory, { recursive: true });
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
async function syncDirectory(directory) {
|
|
117
|
-
const dir = await open(directory, "r");
|
|
118
|
-
try {
|
|
119
|
-
await dir.sync();
|
|
120
|
-
}
|
|
121
|
-
finally {
|
|
122
|
-
await dir.close();
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
async function writeExclusive(filePath, text) {
|
|
126
|
-
try {
|
|
127
|
-
const handle = await open(filePath, "wx");
|
|
128
|
-
try {
|
|
129
|
-
await handle.writeFile(text, "utf8");
|
|
130
|
-
await handle.sync();
|
|
131
|
-
}
|
|
132
|
-
finally {
|
|
133
|
-
await handle.close();
|
|
134
|
-
}
|
|
135
|
-
await syncDirectory(path.dirname(filePath));
|
|
136
|
-
return "created";
|
|
137
|
-
}
|
|
138
|
-
catch (cause) {
|
|
139
|
-
if (!isExists(cause)) {
|
|
140
|
-
throw cause;
|
|
141
|
-
}
|
|
142
|
-
const existingHandle = await openExisting(filePath);
|
|
143
|
-
if (existingHandle === null) {
|
|
144
|
-
throw { code: "immutable artifact vanished during identical-content check" };
|
|
145
|
-
}
|
|
146
|
-
try {
|
|
147
|
-
const pieces = [];
|
|
148
|
-
let total = 0;
|
|
149
|
-
const cap = Math.max(Buffer.byteLength(text, "utf8"), 1);
|
|
150
|
-
const buffer = Buffer.alloc(CHUNK);
|
|
151
|
-
for (;;) {
|
|
152
|
-
const { bytesRead } = await existingHandle.read(buffer, 0, buffer.length, null);
|
|
153
|
-
if (bytesRead === 0) {
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
total += bytesRead;
|
|
157
|
-
if (total > cap) {
|
|
158
|
-
throw { code: "immutable artifact exists with different content" };
|
|
159
|
-
}
|
|
160
|
-
pieces.push(Buffer.from(buffer.subarray(0, bytesRead)));
|
|
161
|
-
}
|
|
162
|
-
const existing = decoder.decode(pieces.length === 0 ? new Uint8Array() : Buffer.concat(pieces));
|
|
163
|
-
if (existing === text) {
|
|
164
|
-
return "identical";
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
finally {
|
|
168
|
-
await existingHandle.close();
|
|
169
|
-
}
|
|
170
|
-
throw { code: "immutable artifact exists with different content" };
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Publish one uniquely owned immutable artifact. No-clobber: an existing
|
|
175
|
-
* file is accepted only when its bytes are identical. Uninterruptible.
|
|
176
|
-
*/
|
|
177
|
-
export function writeImmutable(operation, filePath, text) {
|
|
178
|
-
return tryIo(operation, filePath, () => writeExclusive(filePath, text).then(() => undefined)).pipe(Effect.uninterruptible);
|
|
179
|
-
}
|
|
180
|
-
async function replaceFile(filePath, text) {
|
|
181
|
-
const temporary = `${filePath}.tmp-${randomUUID()}`;
|
|
182
|
-
try {
|
|
183
|
-
const handle = await open(temporary, "wx");
|
|
184
|
-
try {
|
|
185
|
-
await handle.writeFile(text, "utf8");
|
|
186
|
-
await handle.sync();
|
|
187
|
-
}
|
|
188
|
-
finally {
|
|
189
|
-
await handle.close();
|
|
190
|
-
}
|
|
191
|
-
await rename(temporary, filePath);
|
|
192
|
-
}
|
|
193
|
-
catch (cause) {
|
|
194
|
-
await rm(temporary, { force: true }).catch(() => undefined);
|
|
195
|
-
throw cause;
|
|
196
|
-
}
|
|
197
|
-
await syncDirectory(path.dirname(filePath));
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Atomically durably replace the sole authoritative manifest. Last commit
|
|
201
|
-
* of a generation. Uninterruptible.
|
|
202
|
-
*/
|
|
203
|
-
export function writeManifest(operation, filePath, text) {
|
|
204
|
-
return tryIo(operation, filePath, () => replaceFile(filePath, text)).pipe(Effect.uninterruptible);
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Repair a derived index/contract file idempotently (temp + fsync + rename).
|
|
208
|
-
* Uninterruptible.
|
|
209
|
-
*/
|
|
210
|
-
export function writeDerived(operation, filePath, text) {
|
|
211
|
-
return tryIo(operation, filePath, () => replaceFile(filePath, text)).pipe(Effect.uninterruptible);
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Remove one file (idempotent). Used ONLY for unrecorded interrupted-
|
|
215
|
-
* generation leftovers; recorded history files are never removed.
|
|
216
|
-
*/
|
|
217
|
-
export function removeFile(operation, filePath) {
|
|
218
|
-
return tryIo(operation, filePath, async () => {
|
|
219
|
-
await rm(filePath, { force: true });
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
//# sourceMappingURL=fsops.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fsops.js","sourceRoot":"","sources":["../../src/migrations/fsops.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { NativeRuntime, SchemaRelations } from "@bjornpagen/bumbledb";
|
|
2
|
-
import { Effect } from "effect";
|
|
3
|
-
import type { LogError } from "../errors.js";
|
|
4
|
-
import type { MigrationCodec } from "./codec.js";
|
|
5
|
-
import type { RepositoryExclusion } from "./lock.js";
|
|
6
|
-
import type { CheckOptions, CheckReport, GenerateOptions, GenerationReport } from "./types.js";
|
|
7
|
-
export declare function makeGenerator(codec: MigrationCodec, exclusion: RepositoryExclusion): {
|
|
8
|
-
generateMigrations: <Rels extends SchemaRelations>(options: GenerateOptions<Rels>) => Effect.Effect<GenerationReport, LogError, NativeRuntime>;
|
|
9
|
-
checkMigrations: <Rels extends SchemaRelations>(options: CheckOptions<Rels>) => Effect.Effect<CheckReport, LogError, NativeRuntime>;
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/migrations/generate.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAY,aAAa,EAAE,eAAe,EAAc,MAAM,sBAAsB,CAAA;AAIhG,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG1C,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAcxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAc9D,OAAO,KAAK,EACX,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,EAMhB,MAAM,sBAAsB,CAAA;AAiL7B,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,mBAAmB;yBAqIC,IAAI,SAAS,eAAe;sBA8IlC,IAAI,SAAS,eAAe;EAgEzG"}
|