@rudderhq/db 0.7.23-canary.2 → 0.7.23-canary.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"migration-manifest.d.ts","sourceRoot":"","sources":["../src/migration-manifest.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,0BAA0B,EAAG,CAAU,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,OAAO,EAAE,OAAO,0BAA0B,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC3C,SAAS,EAAE,QAAQ,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,SAAS,QAAQ,CAAC;YACzB,GAAG,EAAE,MAAM,CAAC;YACZ,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,EAAE,MAAM,CAAC;YACb,GAAG,EAAE,MAAM,CAAC;YACZ,WAAW,EAAE,OAAO,CAAC;YACrB,cAAc,EAAE,MAAM,CAAC;SACxB,CAAC,EAAE,CAAC;QACL,QAAQ,EAAE,SAAS,QAAQ,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC,EAAE,CAAC;KAC1E,CAAC,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,MAAM,2BAA2B,GAAG,QAAQ,CAAC;IACjD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACjD,CAAC,CAAC;AAcH,MAAM,MAAM,8BAA8B,GAAG;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAyCF,wBAAsB,uBAAuB,CAC3C,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,iBAAiB,CAAC,CAmG5B;AAED,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,iBAAiB,GAC1B,2BAA2B,CAgC7B;AAED,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,iBAAiB,GAC3B,2BAA2B,CAmC7B;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,iBAAiB,GAC3B,IAAI,CAKN"}
1
+ {"version":3,"file":"migration-manifest.d.ts","sourceRoot":"","sources":["../src/migration-manifest.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,0BAA0B,EAAG,CAAU,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,OAAO,EAAE,OAAO,0BAA0B,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC3C,SAAS,EAAE,QAAQ,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,SAAS,QAAQ,CAAC;YACzB,GAAG,EAAE,MAAM,CAAC;YACZ,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,EAAE,MAAM,CAAC;YACb,GAAG,EAAE,MAAM,CAAC;YACZ,WAAW,EAAE,OAAO,CAAC;YACrB,cAAc,EAAE,MAAM,CAAC;SACxB,CAAC,EAAE,CAAC;QACL,QAAQ,EAAE,SAAS,QAAQ,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC,EAAE,CAAC;KAC1E,CAAC,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,MAAM,2BAA2B,GAAG,QAAQ,CAAC;IACjD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACjD,CAAC,CAAC;AAcH,MAAM,MAAM,8BAA8B,GAAG;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAyDF,wBAAsB,uBAAuB,CAC3C,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,iBAAiB,CAAC,CAsG5B;AAED,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,iBAAiB,GAC1B,2BAA2B,CAkL7B;AAED,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,iBAAiB,GAC3B,2BAA2B,CAyE7B;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,iBAAiB,GAC3B,IAAI,CAKN"}
@@ -8,10 +8,26 @@ const LEGACY_UNJOURNALED_MIGRATIONS = new Set([
8
8
  "0055_illegal_sheva_callister.sql",
9
9
  "0128_modern_jetstream.sql",
10
10
  ]);
11
+ const MIGRATION_JOURNAL_VERSION = "7";
12
+ const MIGRATION_DIALECT = "postgresql";
13
+ const SAFE_MIGRATION_TAG = /^[A-Za-z0-9][A-Za-z0-9_-]*$/;
14
+ const SHA256_HEX = /^[0-9a-f]{64}$/;
11
15
  export const MIGRATION_MANIFEST_VERSION = 1;
12
16
  function sha256(content) {
13
17
  return createHash("sha256").update(content).digest("hex");
14
18
  }
19
+ function compareMigrationFileNames(left, right) {
20
+ return left < right ? -1 : left > right ? 1 : 0;
21
+ }
22
+ function isSafeMigrationTag(value) {
23
+ return SAFE_MIGRATION_TAG.test(value);
24
+ }
25
+ function isSafeMigrationFileName(value) {
26
+ return value.endsWith(".sql") && isSafeMigrationTag(value.slice(0, -4));
27
+ }
28
+ function isRecord(value) {
29
+ return typeof value === "object" && value !== null;
30
+ }
15
31
  function buildCanonicalPayload(journal, journalEntries, sqlFiles) {
16
32
  return {
17
33
  version: String(journal.version),
@@ -44,7 +60,10 @@ export async function createMigrationManifest(options = {}) {
44
60
  if (!Array.isArray(parsed.entries)) {
45
61
  throw new Error(`Migration journal has no entries array: ${journalFile}`);
46
62
  }
47
- if (parsed.dialect !== "postgresql") {
63
+ if (String(parsed.version) !== MIGRATION_JOURNAL_VERSION) {
64
+ throw new Error(`Migration journal must use version ${MIGRATION_JOURNAL_VERSION}: ${journalFile}`);
65
+ }
66
+ if (parsed.dialect !== MIGRATION_DIALECT) {
48
67
  throw new Error(`Migration journal must use the postgresql dialect: ${journalFile}`);
49
68
  }
50
69
  const journalMetadata = {
@@ -61,7 +80,7 @@ export async function createMigrationManifest(options = {}) {
61
80
  if (!Number.isInteger(order) || (order ?? -1) < 0) {
62
81
  throw new Error(`Migration journal entry ${journalPosition} has an invalid idx`);
63
82
  }
64
- if (typeof tag !== "string" || !/^[A-Za-z0-9][A-Za-z0-9_-]*$/.test(tag)) {
83
+ if (typeof tag !== "string" || !isSafeMigrationTag(tag)) {
65
84
  throw new Error(`Migration journal entry ${journalPosition} has an invalid tag`);
66
85
  }
67
86
  if (typeof journalEntry.version !== "string" || journalEntry.version.length === 0) {
@@ -86,7 +105,7 @@ export async function createMigrationManifest(options = {}) {
86
105
  const version = journalEntry.version;
87
106
  const when = Number(journalEntry.when);
88
107
  const breakpoints = journalEntry.breakpoints;
89
- const content = await readFile(path.join(migrationsFolder, fileName), "utf8");
108
+ const content = await readFile(path.join(migrationsFolder, fileName));
90
109
  const contentSha256 = sha256(content);
91
110
  entries.push({ order, fileName, sha256: contentSha256 });
92
111
  journalManifestEntries.push({
@@ -101,7 +120,7 @@ export async function createMigrationManifest(options = {}) {
101
120
  const sqlFileNames = (await readdir(migrationsFolder, { withFileTypes: true }))
102
121
  .filter((entry) => entry.isFile() && entry.name.endsWith(".sql"))
103
122
  .map((entry) => entry.name)
104
- .sort((left, right) => left.localeCompare(right));
123
+ .sort(compareMigrationFileNames);
105
124
  const unjournaledFiles = sqlFileNames.filter((fileName) => !seenFiles.has(fileName));
106
125
  const unexpectedUnjournaledFiles = unjournaledFiles.filter((fileName) => !LEGACY_UNJOURNALED_MIGRATIONS.has(fileName));
107
126
  if (unexpectedUnjournaledFiles.length > 0) {
@@ -109,12 +128,12 @@ export async function createMigrationManifest(options = {}) {
109
128
  }
110
129
  const sqlFiles = [];
111
130
  for (const fileName of unjournaledFiles) {
112
- const content = await readFile(path.join(migrationsFolder, fileName), "utf8");
131
+ const content = await readFile(path.join(migrationsFolder, fileName));
113
132
  const contentSha256 = sha256(content);
114
133
  entries.push({ order: entries.length, fileName, sha256: contentSha256 });
115
134
  }
116
135
  for (const fileName of sqlFileNames) {
117
- const content = await readFile(path.join(migrationsFolder, fileName), "utf8");
136
+ const content = await readFile(path.join(migrationsFolder, fileName));
118
137
  sqlFiles.push({ fileName, fingerprint: sha256(content) });
119
138
  }
120
139
  return freezeManifest(entries, buildCanonicalPayload(journalMetadata, journalManifestEntries, sqlFiles));
@@ -122,24 +141,155 @@ export async function createMigrationManifest(options = {}) {
122
141
  export function validateMigrationManifestIntegrity(manifest) {
123
142
  const errors = [];
124
143
  const seenFiles = new Set();
144
+ if (!isRecord(manifest)) {
145
+ return Object.freeze({
146
+ valid: false,
147
+ errors: Object.freeze(["Migration manifest must be an object"]),
148
+ addedEntries: Object.freeze([]),
149
+ });
150
+ }
151
+ const manifestEntries = manifest.entries;
152
+ const canonical = manifest.canonical;
153
+ if (!Array.isArray(manifestEntries)) {
154
+ errors.push("Migration manifest entries must be an array");
155
+ }
156
+ if (!isRecord(canonical)) {
157
+ errors.push("Migration manifest canonical payload must be an object");
158
+ }
159
+ if (!Array.isArray(manifestEntries) || !isRecord(canonical)) {
160
+ return Object.freeze({
161
+ valid: false,
162
+ errors: Object.freeze(errors),
163
+ addedEntries: Object.freeze([]),
164
+ });
165
+ }
166
+ const canonicalEntries = canonical.entries;
167
+ const canonicalSqlFiles = canonical.sqlFiles;
168
+ if (!Array.isArray(canonicalEntries)) {
169
+ errors.push("Migration manifest canonical entries must be an array");
170
+ }
171
+ if (!Array.isArray(canonicalSqlFiles)) {
172
+ errors.push("Migration manifest canonical SQL files must be an array");
173
+ }
174
+ if (!Array.isArray(canonicalEntries) || !Array.isArray(canonicalSqlFiles)) {
175
+ return Object.freeze({
176
+ valid: false,
177
+ errors: Object.freeze(errors),
178
+ addedEntries: Object.freeze([]),
179
+ });
180
+ }
125
181
  if (manifest.version !== MIGRATION_MANIFEST_VERSION) {
126
182
  errors.push(`Unsupported migration manifest version: ${String(manifest.version)}`);
127
183
  }
128
- manifest.entries.forEach((entry, position) => {
129
- if (entry.order !== position) {
130
- errors.push(`Migration manifest entry ${position} has order ${entry.order}`);
184
+ manifestEntries.forEach((entry, position) => {
185
+ if (!isRecord(entry)) {
186
+ errors.push(`Migration manifest entry ${position} must be an object`);
187
+ return;
188
+ }
189
+ const order = entry.order;
190
+ const fileName = entry.fileName;
191
+ const fingerprint = entry.sha256;
192
+ if (order !== position) {
193
+ errors.push(`Migration manifest entry ${position} has order ${String(order)}`);
194
+ }
195
+ if (typeof fileName !== "string"
196
+ || !isSafeMigrationFileName(fileName)
197
+ || seenFiles.has(fileName)) {
198
+ errors.push(`Migration manifest has an invalid or duplicate file: ${String(fileName)}`);
131
199
  }
132
- if (!entry.fileName.endsWith(".sql") || seenFiles.has(entry.fileName)) {
133
- errors.push(`Migration manifest has an invalid or duplicate file: ${entry.fileName}`);
200
+ if (typeof fingerprint !== "string" || !SHA256_HEX.test(fingerprint)) {
201
+ errors.push(`Migration manifest has an invalid SHA256 for ${String(fileName)}`);
134
202
  }
135
- if (!/^[0-9a-f]{64}$/.test(entry.sha256)) {
136
- errors.push(`Migration manifest has an invalid SHA256 for ${entry.fileName}`);
203
+ if (typeof fileName === "string") {
204
+ seenFiles.add(fileName);
137
205
  }
138
- seenFiles.add(entry.fileName);
139
206
  });
140
- const expectedFingerprint = manifestFingerprint(manifest.canonical);
141
- if (manifest.fingerprint !== expectedFingerprint) {
142
- errors.push(`Migration manifest fingerprint mismatch: expected ${expectedFingerprint}, received ${manifest.fingerprint}`);
207
+ if (canonical.version !== MIGRATION_JOURNAL_VERSION) {
208
+ errors.push(`Migration manifest has an unsupported journal version: ${String(canonical.version)}`);
209
+ }
210
+ if (canonical.dialect !== MIGRATION_DIALECT) {
211
+ errors.push(`Migration manifest has an unsupported journal dialect: ${String(canonical.dialect)}`);
212
+ }
213
+ canonicalEntries.forEach((entry, position) => {
214
+ if (!isRecord(entry)) {
215
+ errors.push(`Migration manifest journal entry ${position} must be an object`);
216
+ return;
217
+ }
218
+ const idx = entry.idx;
219
+ const version = entry.version;
220
+ const when = entry.when;
221
+ const tag = entry.tag;
222
+ const breakpoints = entry.breakpoints;
223
+ const sqlFingerprint = entry.sqlFingerprint;
224
+ const expected = manifestEntries[position];
225
+ if (idx !== position) {
226
+ errors.push(`Migration manifest journal entry ${position} has idx ${String(idx)}`);
227
+ }
228
+ if (typeof tag !== "string" || !isSafeMigrationTag(tag)) {
229
+ errors.push(`Migration manifest journal entry ${position} has an invalid tag: ${String(tag)}`);
230
+ }
231
+ if (typeof version !== "string"
232
+ || version.length === 0
233
+ || typeof when !== "number"
234
+ || !Number.isSafeInteger(when)
235
+ || when <= 0) {
236
+ errors.push(`Migration manifest journal entry ${position} has invalid metadata`);
237
+ }
238
+ if (typeof breakpoints !== "boolean" || typeof sqlFingerprint !== "string" || !SHA256_HEX.test(sqlFingerprint)) {
239
+ errors.push(`Migration manifest journal entry ${position} has invalid identity data`);
240
+ }
241
+ const expectedFileName = isRecord(expected) && typeof expected.fileName === "string"
242
+ ? expected.fileName
243
+ : undefined;
244
+ const expectedFingerprint = isRecord(expected) && typeof expected.sha256 === "string"
245
+ ? expected.sha256
246
+ : undefined;
247
+ if (!expected
248
+ || expectedFileName !== `${String(tag)}.sql`
249
+ || expectedFingerprint !== sqlFingerprint
250
+ || (isRecord(expected) && expected.order !== idx)) {
251
+ errors.push(`Migration manifest journal entry ${position} is not bound to its SQL entry`);
252
+ }
253
+ });
254
+ const expectedJournalEntryCount = manifestEntries.filter((entry) => {
255
+ if (!isRecord(entry) || typeof entry.fileName !== "string")
256
+ return false;
257
+ return !LEGACY_UNJOURNALED_MIGRATIONS.has(entry.fileName);
258
+ }).length;
259
+ if (canonicalEntries.length !== expectedJournalEntryCount) {
260
+ errors.push("Migration manifest canonical journal entry list does not match entries");
261
+ }
262
+ if (canonicalEntries.length > manifestEntries.length) {
263
+ errors.push("Migration manifest has more journal entries than SQL entries");
264
+ }
265
+ const expectedSqlFiles = manifestEntries
266
+ .filter((entry) => isRecord(entry)
267
+ && typeof entry.fileName === "string"
268
+ && typeof entry.sha256 === "string")
269
+ .sort((left, right) => compareMigrationFileNames(left.fileName, right.fileName))
270
+ .map((entry) => ({ fileName: entry.fileName, fingerprint: entry.sha256 }));
271
+ if (canonicalSqlFiles.length !== expectedSqlFiles.length) {
272
+ errors.push("Migration manifest canonical SQL file list does not match entries");
273
+ }
274
+ const sharedSqlFileLength = Math.min(canonicalSqlFiles.length, expectedSqlFiles.length);
275
+ for (let index = 0; index < sharedSqlFileLength; index += 1) {
276
+ const actual = canonicalSqlFiles[index];
277
+ const expected = expectedSqlFiles[index];
278
+ if (!isRecord(actual)
279
+ || !expected
280
+ || actual.fileName !== expected.fileName
281
+ || actual.fingerprint !== expected.fingerprint) {
282
+ errors.push(`Migration manifest canonical SQL file ${index} is not bound to entries`);
283
+ }
284
+ }
285
+ try {
286
+ const expectedFingerprint = manifestFingerprint(canonical);
287
+ if (manifest.fingerprint !== expectedFingerprint) {
288
+ errors.push(`Migration manifest fingerprint mismatch: expected ${expectedFingerprint}, received ${String(manifest.fingerprint)}`);
289
+ }
290
+ }
291
+ catch {
292
+ errors.push("Migration manifest canonical payload cannot be fingerprinted");
143
293
  }
144
294
  return Object.freeze({
145
295
  valid: errors.length === 0,
@@ -154,27 +304,58 @@ export function validateMigrationManifestCompatibility(baseline, candidate) {
154
304
  ...baselineIntegrity.errors.map((error) => `Baseline: ${error}`),
155
305
  ...candidateIntegrity.errors.map((error) => `Candidate: ${error}`),
156
306
  ];
157
- if (candidate.entries.length < baseline.entries.length) {
158
- errors.push(`Candidate removed ${baseline.entries.length - candidate.entries.length} published migration(s)`);
307
+ if (!baselineIntegrity.valid || !candidateIntegrity.valid) {
308
+ return Object.freeze({
309
+ valid: false,
310
+ errors: Object.freeze(errors),
311
+ addedEntries: Object.freeze([]),
312
+ });
313
+ }
314
+ const baselineJournalLength = baseline.canonical.entries.length;
315
+ const candidateJournalLength = candidate.canonical.entries.length;
316
+ if (candidateJournalLength < baselineJournalLength) {
317
+ errors.push(`Candidate removed ${baselineJournalLength - candidateJournalLength} published migration(s)`);
159
318
  }
160
- const sharedLength = Math.min(baseline.entries.length, candidate.entries.length);
161
- for (let index = 0; index < sharedLength; index += 1) {
319
+ const sharedJournalLength = Math.min(baselineJournalLength, candidateJournalLength);
320
+ for (let index = 0; index < sharedJournalLength; index += 1) {
321
+ const expectedJournal = baseline.canonical.entries[index];
322
+ const actualJournal = candidate.canonical.entries[index];
162
323
  const expected = baseline.entries[index];
163
324
  const actual = candidate.entries[index];
164
- if (!expected || !actual)
165
- continue;
166
- if (expected.order !== actual.order || expected.fileName !== actual.fileName) {
167
- errors.push(`Candidate changed published migration order ${index}: expected ${expected.fileName}, received ${actual.fileName}`);
325
+ if (!expectedJournal || !actualJournal || !expected || !actual)
168
326
  continue;
327
+ if (expectedJournal.idx !== actualJournal.idx ||
328
+ expectedJournal.version !== actualJournal.version ||
329
+ expectedJournal.when !== actualJournal.when ||
330
+ expectedJournal.tag !== actualJournal.tag ||
331
+ expectedJournal.breakpoints !== actualJournal.breakpoints ||
332
+ expectedJournal.sqlFingerprint !== actualJournal.sqlFingerprint) {
333
+ errors.push(`Candidate changed published journal migration ${expected.fileName}`);
334
+ }
335
+ }
336
+ const baselineLegacy = baseline.entries.slice(baselineJournalLength);
337
+ const candidateLegacy = candidate.entries.slice(candidateJournalLength);
338
+ if (candidateLegacy.length !== baselineLegacy.length) {
339
+ if (candidateLegacy.length < baselineLegacy.length) {
340
+ errors.push(`Candidate removed ${baselineLegacy.length - candidateLegacy.length} published legacy migration(s)`);
341
+ }
342
+ else {
343
+ errors.push(`Candidate added ${candidateLegacy.length - baselineLegacy.length} unpublished legacy migration(s)`);
169
344
  }
170
- if (expected.sha256 !== actual.sha256) {
345
+ }
346
+ for (let index = 0; index < baselineLegacy.length; index += 1) {
347
+ const expected = baselineLegacy[index];
348
+ const actual = candidateLegacy[index];
349
+ if (!expected || !actual)
350
+ continue;
351
+ if (expected.fileName !== actual.fileName || expected.sha256 !== actual.sha256) {
171
352
  errors.push(`Candidate changed published migration ${expected.fileName}`);
172
353
  }
173
354
  }
174
355
  return Object.freeze({
175
356
  valid: errors.length === 0,
176
357
  errors: Object.freeze(errors),
177
- addedEntries: Object.freeze(candidate.entries.slice(baseline.entries.length)),
358
+ addedEntries: Object.freeze(candidate.entries.slice(baselineJournalLength, candidateJournalLength)),
178
359
  });
179
360
  }
180
361
  export function assertMigrationManifestCompatible(baseline, candidate) {
@@ -1 +1 @@
1
- {"version":3,"file":"migration-manifest.js","sourceRoot":"","sources":["../src/migration-manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration-manifest.js","sourceRoot":"","sources":["../src/migration-manifest.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
1
+ import { createHash } from "node:crypto";
2
+ import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
2
3
  import os from "node:os";
3
4
  import path from "node:path";
4
5
  import { afterEach, describe, expect, it } from "vitest";
@@ -49,6 +50,15 @@ describe("migration manifest", () => {
49
50
  expect(Object.isFrozen(firstManifest)).toBe(true);
50
51
  expect(Object.isFrozen(firstManifest.entries)).toBe(true);
51
52
  });
53
+ it("rejects journals from an unsupported version", async () => {
54
+ const fixture = createFixture([
55
+ { tag: "0000_first", sql: "CREATE TABLE first_table (id integer);" },
56
+ ]);
57
+ const journal = JSON.parse(readFileSync(fixture.journalFile, "utf8"));
58
+ journal.version = "6";
59
+ writeFileSync(fixture.journalFile, JSON.stringify(journal), "utf8");
60
+ await expect(createMigrationManifest(fixture)).rejects.toThrow("version 7");
61
+ });
52
62
  it("allows appended migrations and rejects edits to a published prefix", async () => {
53
63
  const baselineFixture = createFixture([
54
64
  { tag: "0000_first", sql: "CREATE TABLE first_table (id integer);" },
@@ -74,7 +84,7 @@ describe("migration manifest", () => {
74
84
  });
75
85
  expect(validateMigrationManifestCompatibility(baseline, edited)).toMatchObject({
76
86
  valid: false,
77
- errors: ["Candidate changed published migration 0000_first.sql"],
87
+ errors: ["Candidate changed published journal migration 0000_first.sql"],
78
88
  });
79
89
  });
80
90
  it("rejects SQL files that are not represented in the journal", async () => {
@@ -84,5 +94,112 @@ describe("migration manifest", () => {
84
94
  writeFileSync(path.join(fixture.migrationsFolder, "0001_unjournaled.sql"), "CREATE TABLE unjournaled (id integer);", "utf8");
85
95
  await expect(createMigrationManifest(fixture)).rejects.toThrow("Migration SQL files are missing from the journal: 0001_unjournaled.sql");
86
96
  });
97
+ it("uses a locale-independent canonical file order", async () => {
98
+ const fixture = createFixture([
99
+ { tag: "a_foo", sql: "SELECT underscore;" },
100
+ { tag: "a-foo", sql: "SELECT hyphen;" },
101
+ ]);
102
+ const manifest = await createMigrationManifest(fixture);
103
+ expect(manifest.canonical.sqlFiles.map((entry) => entry.fileName)).toEqual([
104
+ "a-foo.sql",
105
+ "a_foo.sql",
106
+ ]);
107
+ });
108
+ it("keeps legacy SQL outside the journal prefix for append compatibility", async () => {
109
+ const baselineFixture = createFixture([
110
+ { tag: "0000_first", sql: "CREATE TABLE first_table (id integer);" },
111
+ { tag: "0001_second", sql: "CREATE TABLE second_table (id integer);" },
112
+ ]);
113
+ const appendedFixture = createFixture([
114
+ { tag: "0000_first", sql: "CREATE TABLE first_table (id integer);" },
115
+ { tag: "0001_second", sql: "CREATE TABLE second_table (id integer);" },
116
+ { tag: "0002_third", sql: "CREATE TABLE third_table (id integer);" },
117
+ ]);
118
+ for (const fixture of [baselineFixture, appendedFixture]) {
119
+ writeFileSync(path.join(fixture.migrationsFolder, "0055_illegal_sheva_callister.sql"), "SELECT legacy;", "utf8");
120
+ }
121
+ const baseline = await createMigrationManifest(baselineFixture);
122
+ const appended = await createMigrationManifest(appendedFixture);
123
+ expect(validateMigrationManifestCompatibility(baseline, appended)).toMatchObject({
124
+ valid: true,
125
+ errors: [],
126
+ addedEntries: [{ order: 2, fileName: "0002_third.sql" }],
127
+ });
128
+ });
129
+ it("rejects a newly introduced allowlisted legacy migration", async () => {
130
+ const baselineFixture = createFixture([
131
+ { tag: "0000_first", sql: "CREATE TABLE first_table (id integer);" },
132
+ ]);
133
+ const candidateFixture = createFixture([
134
+ { tag: "0000_first", sql: "CREATE TABLE first_table (id integer);" },
135
+ ]);
136
+ writeFileSync(path.join(candidateFixture.migrationsFolder, "0055_illegal_sheva_callister.sql"), "SELECT legacy;", "utf8");
137
+ const baseline = await createMigrationManifest(baselineFixture);
138
+ const candidate = await createMigrationManifest(candidateFixture);
139
+ const validation = validateMigrationManifestCompatibility(baseline, candidate);
140
+ expect(validation.valid).toBe(false);
141
+ expect(validation.errors).toContain("Candidate added 1 unpublished legacy migration(s)");
142
+ });
143
+ it("binds canonical entries and SQL files to the flattened manifest", async () => {
144
+ const fixture = createFixture([
145
+ { tag: "0000_first", sql: "CREATE TABLE first_table (id integer);" },
146
+ ]);
147
+ const manifest = await createMigrationManifest(fixture);
148
+ const canonical = {
149
+ ...manifest.canonical,
150
+ sqlFiles: manifest.canonical.sqlFiles.map((entry, index) => index === 0 ? { ...entry, fingerprint: "0".repeat(64) } : entry),
151
+ };
152
+ const forged = {
153
+ ...manifest,
154
+ canonical,
155
+ fingerprint: createHash("sha256").update(JSON.stringify(canonical)).digest("hex"),
156
+ };
157
+ const validation = validateMigrationManifestIntegrity(forged);
158
+ expect(validation.valid).toBe(false);
159
+ expect(validation.errors).toContain("Migration manifest canonical SQL file 0 is not bound to entries");
160
+ });
161
+ it("rejects a canonical journal prefix that does not cover flattened entries", async () => {
162
+ const fixture = createFixture([
163
+ { tag: "0000_first", sql: "CREATE TABLE first_table (id integer);" },
164
+ { tag: "0001_second", sql: "CREATE TABLE second_table (id integer);" },
165
+ ]);
166
+ const manifest = await createMigrationManifest(fixture);
167
+ const canonical = {
168
+ ...manifest.canonical,
169
+ entries: manifest.canonical.entries.slice(0, -1),
170
+ };
171
+ const forged = {
172
+ ...manifest,
173
+ canonical,
174
+ fingerprint: createHash("sha256").update(JSON.stringify(canonical)).digest("hex"),
175
+ };
176
+ const validation = validateMigrationManifestIntegrity(forged);
177
+ expect(validation.valid).toBe(false);
178
+ expect(validation.errors).toContain("Migration manifest canonical journal entry list does not match entries");
179
+ });
180
+ it("returns invalid for malformed manifest shapes instead of throwing", async () => {
181
+ const fixture = createFixture([
182
+ { tag: "0000_first", sql: "CREATE TABLE first_table (id integer);" },
183
+ ]);
184
+ const manifest = await createMigrationManifest(fixture);
185
+ const missingCanonical = { ...manifest, canonical: undefined };
186
+ const nullVersion = {
187
+ ...manifest,
188
+ canonical: { ...manifest.canonical, version: null },
189
+ };
190
+ expect(() => validateMigrationManifestIntegrity(missingCanonical)).not.toThrow();
191
+ expect(validateMigrationManifestIntegrity(missingCanonical).valid).toBe(false);
192
+ expect(() => validateMigrationManifestIntegrity(nullVersion)).not.toThrow();
193
+ expect(validateMigrationManifestIntegrity(nullVersion).valid).toBe(false);
194
+ });
195
+ it("returns invalid for malformed compatibility inputs instead of throwing", async () => {
196
+ const fixture = createFixture([
197
+ { tag: "0000_first", sql: "CREATE TABLE first_table (id integer);" },
198
+ ]);
199
+ const manifest = await createMigrationManifest(fixture);
200
+ const malformed = { ...manifest, canonical: undefined };
201
+ expect(() => validateMigrationManifestCompatibility(manifest, malformed)).not.toThrow();
202
+ expect(validateMigrationManifestCompatibility(manifest, malformed).valid).toBe(false);
203
+ });
87
204
  });
88
205
  //# sourceMappingURL=migration-manifest.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"migration-manifest.test.js","sourceRoot":"","sources":["../src/migration-manifest.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration-manifest.test.js","sourceRoot":"","sources":["../src/migration-manifest.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rudderhq/db",
3
- "version": "0.7.23-canary.2",
3
+ "version": "0.7.23-canary.4",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "homepage": "https://github.com/Undertone0809/rudder",
6
6
  "bugs": {
@@ -51,7 +51,7 @@
51
51
  "seed": "tsx src/seed.ts"
52
52
  },
53
53
  "dependencies": {
54
- "@rudderhq/shared": "0.7.23-canary.2",
54
+ "@rudderhq/shared": "0.7.23-canary.4",
55
55
  "drizzle-orm": "^0.45.2",
56
56
  "embedded-postgres": "18.1.0-beta.16",
57
57
  "postgres": "^3.4.8"