@syncular/migrations 0.0.6-244 → 0.0.6-245

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @syncular/migrations
2
2
 
3
- Versioned migration utilities for Syncular apps. Provides `defineMigrations()` and `runMigrations()` with migration tracking and checksum validation (plus an optional reset strategy for client DBs).
3
+ Versioned migration utilities for Syncular apps. Provides `defineMigrations()` and `runMigrations()` with migration tracking and deterministic checksum validation (plus an optional reset strategy for client DBs).
4
4
 
5
5
  ## Install
6
6
 
@@ -18,11 +18,26 @@ import {
18
18
  } from '@syncular/migrations';
19
19
 
20
20
  export const migrations = defineMigrations({
21
- v1: async (db) => {
22
- await db.schema.createTable('tasks').addColumn('id', 'text').execute();
21
+ v1: {
22
+ checksum: 'deterministic',
23
+ up: async (db) => {
24
+ await db.schema.createTable('tasks').addColumn('id', 'text').execute();
25
+ },
26
+ down: async (db) => {
27
+ await db.schema.dropTable('tasks').ifExists().execute();
28
+ },
23
29
  },
24
- v2: async (db) => {
25
- await db.schema.alterTable('tasks').addColumn('done', 'integer').execute();
30
+ v2: {
31
+ checksum: 'deterministic',
32
+ up: async (db) => {
33
+ await db.schema
34
+ .alterTable('tasks')
35
+ .addColumn('done', 'integer')
36
+ .execute();
37
+ },
38
+ down: async (db) => {
39
+ await db.schema.alterTable('tasks').dropColumn('done').execute();
40
+ },
26
41
  },
27
42
  });
28
43
 
@@ -37,6 +52,15 @@ Use `createMigrationTrackingTableName(...)` whenever you want a custom table.
37
52
  It keeps names lowercase, predictable, and consistently suffixed with
38
53
  `migration_state`.
39
54
 
55
+ Use `checksum: 'deterministic'` for migrations that can be replayed into a
56
+ scratch in-memory database. Syncular hashes the actual SQL trace emitted by the
57
+ migration instead of the JavaScript source, which avoids bundle/minifier drift.
58
+
59
+ Use `checksum: 'disabled'` for browser/service-worker or otherwise
60
+ runtime-specific migrations where Syncular cannot safely create the matching
61
+ scratch database. Disabled migrations still track version/application state, but
62
+ they skip checksum creation and mismatch checks.
63
+
40
64
  ## Documentation
41
65
 
42
66
  - Schema migrations: https://syncular.dev/docs/build/migrations
@@ -0,0 +1,11 @@
1
+ import { type Kysely as KyselyInstance } from 'kysely';
2
+ import type { DefinedMigrations, MigrationChecksumAlgorithm, MigrationChecksumDialect, ParsedMigration } from './types';
3
+ export declare const DISABLED_MIGRATION_CHECKSUM = "__syncular_checksum_disabled__";
4
+ export declare const LEGACY_SOURCE_MIGRATION_CHECKSUM_ALGORITHM = "legacy_source_v1";
5
+ export declare const SQL_TRACE_MIGRATION_CHECKSUM_ALGORITHM = "sql_trace_v1";
6
+ export declare const DISABLED_MIGRATION_CHECKSUM_ALGORITHM = "disabled";
7
+ export declare function inferMigrationChecksumDialect<DB>(db: KyselyInstance<DB>): MigrationChecksumDialect | null;
8
+ export declare function getMigrationChecksum<DB>(migrations: DefinedMigrations<DB>, migration: ParsedMigration<DB>, dialect: MigrationChecksumDialect): Promise<string | null>;
9
+ export declare function getLegacyMigrationChecksum<DB>(migration: ParsedMigration<DB>): string;
10
+ export declare function getMigrationChecksumAlgorithm<DB>(migration: ParsedMigration<DB>): MigrationChecksumAlgorithm;
11
+ //# sourceMappingURL=checksum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../src/checksum.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,MAAM,IAAI,cAAc,EAM9B,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,EACV,iBAAiB,EACjB,0BAA0B,EAC1B,wBAAwB,EACxB,eAAe,EAChB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,2BAA2B,mCAAmC,CAAC;AAC5E,eAAO,MAAM,0CAA0C,qBAAqB,CAAC;AAC7E,eAAO,MAAM,sCAAsC,iBAAiB,CAAC;AACrE,eAAO,MAAM,qCAAqC,aAAa,CAAC;AA0bhE,wBAAgB,6BAA6B,CAAC,EAAE,EAC9C,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,GACrB,wBAAwB,GAAG,IAAI,CAajC;AAED,wBAAsB,oBAAoB,CAAC,EAAE,EAC3C,UAAU,EAAE,iBAAiB,CAAC,EAAE,CAAC,EACjC,SAAS,EAAE,eAAe,CAAC,EAAE,CAAC,EAC9B,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuBxB;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAC3C,SAAS,EAAE,eAAe,CAAC,EAAE,CAAC,GAC7B,MAAM,CAER;AAED,wBAAgB,6BAA6B,CAAC,EAAE,EAC9C,SAAS,EAAE,eAAe,CAAC,EAAE,CAAC,GAC7B,0BAA0B,CAM5B"}
@@ -0,0 +1,355 @@
1
+ import { PGlite } from '@electric-sql/pglite';
2
+ import { Kysely, PostgresAdapter, SqliteAdapter, SqliteDialect, } from 'kysely';
3
+ import { PGliteDialect } from 'kysely-pglite-dialect';
4
+ export const DISABLED_MIGRATION_CHECKSUM = '__syncular_checksum_disabled__';
5
+ export const LEGACY_SOURCE_MIGRATION_CHECKSUM_ALGORITHM = 'legacy_source_v1';
6
+ export const SQL_TRACE_MIGRATION_CHECKSUM_ALGORITHM = 'sql_trace_v1';
7
+ export const DISABLED_MIGRATION_CHECKSUM_ALGORITHM = 'disabled';
8
+ const checksumCache = new WeakMap();
9
+ function stripCommentsPreservingStrings(source) {
10
+ let out = '';
11
+ let index = 0;
12
+ let mode = 'code';
13
+ while (index < source.length) {
14
+ const char = source[index];
15
+ const next = source[index + 1];
16
+ if (mode === 'lineComment') {
17
+ if (char === '\n') {
18
+ out += '\n';
19
+ mode = 'code';
20
+ }
21
+ index += 1;
22
+ continue;
23
+ }
24
+ if (mode === 'blockComment') {
25
+ if (char === '*' && next === '/') {
26
+ index += 2;
27
+ mode = 'code';
28
+ continue;
29
+ }
30
+ if (char === '\n') {
31
+ out += '\n';
32
+ }
33
+ index += 1;
34
+ continue;
35
+ }
36
+ if (mode === 'singleQuote') {
37
+ out += char;
38
+ if (char === '\\' && next !== undefined) {
39
+ out += next;
40
+ index += 2;
41
+ continue;
42
+ }
43
+ if (char === "'") {
44
+ mode = 'code';
45
+ }
46
+ index += 1;
47
+ continue;
48
+ }
49
+ if (mode === 'doubleQuote') {
50
+ out += char;
51
+ if (char === '\\' && next !== undefined) {
52
+ out += next;
53
+ index += 2;
54
+ continue;
55
+ }
56
+ if (char === '"') {
57
+ mode = 'code';
58
+ }
59
+ index += 1;
60
+ continue;
61
+ }
62
+ if (mode === 'template') {
63
+ out += char;
64
+ if (char === '\\' && next !== undefined) {
65
+ out += next;
66
+ index += 2;
67
+ continue;
68
+ }
69
+ if (char === '`') {
70
+ mode = 'code';
71
+ }
72
+ index += 1;
73
+ continue;
74
+ }
75
+ if (char === '/' && next === '/') {
76
+ mode = 'lineComment';
77
+ index += 2;
78
+ continue;
79
+ }
80
+ if (char === '/' && next === '*') {
81
+ mode = 'blockComment';
82
+ index += 2;
83
+ continue;
84
+ }
85
+ if (char === "'") {
86
+ mode = 'singleQuote';
87
+ out += char;
88
+ index += 1;
89
+ continue;
90
+ }
91
+ if (char === '"') {
92
+ mode = 'doubleQuote';
93
+ out += char;
94
+ index += 1;
95
+ continue;
96
+ }
97
+ if (char === '`') {
98
+ mode = 'template';
99
+ out += char;
100
+ index += 1;
101
+ continue;
102
+ }
103
+ out += char;
104
+ index += 1;
105
+ }
106
+ return out;
107
+ }
108
+ function hashString(value) {
109
+ let hash = 0;
110
+ for (let index = 0; index < value.length; index += 1) {
111
+ hash = (hash * 31 + value.charCodeAt(index)) >>> 0;
112
+ }
113
+ return hash.toString(16).padStart(8, '0');
114
+ }
115
+ function normalizeLegacySource(source) {
116
+ return stripCommentsPreservingStrings(source).replace(/\s+/g, ' ').trim();
117
+ }
118
+ class TracingConnection {
119
+ #inner;
120
+ #sink;
121
+ constructor(inner, sink) {
122
+ this.#inner = inner;
123
+ this.#sink = sink;
124
+ }
125
+ unwrap() {
126
+ return this.#inner;
127
+ }
128
+ async executeQuery(compiledQuery) {
129
+ if (this.#sink.enabled) {
130
+ this.#sink.entries.push(serializeCompiledQuery(compiledQuery));
131
+ }
132
+ return await this.#inner.executeQuery(compiledQuery);
133
+ }
134
+ async *streamQuery(compiledQuery, chunkSize) {
135
+ if (this.#sink.enabled) {
136
+ this.#sink.entries.push(serializeCompiledQuery(compiledQuery));
137
+ }
138
+ for await (const result of this.#inner.streamQuery(compiledQuery, chunkSize)) {
139
+ yield result;
140
+ }
141
+ }
142
+ }
143
+ class TracingDriver {
144
+ #inner;
145
+ #sink;
146
+ #innerToWrapped = new Map();
147
+ constructor(inner, sink) {
148
+ this.#inner = inner;
149
+ this.#sink = sink;
150
+ }
151
+ async init() {
152
+ await this.#inner.init();
153
+ }
154
+ async acquireConnection() {
155
+ return this.#wrapConnection(await this.#inner.acquireConnection());
156
+ }
157
+ async beginTransaction(connection, settings) {
158
+ await this.#inner.beginTransaction(this.#unwrapConnection(connection), settings);
159
+ }
160
+ async commitTransaction(connection) {
161
+ await this.#inner.commitTransaction(this.#unwrapConnection(connection));
162
+ }
163
+ async rollbackTransaction(connection) {
164
+ await this.#inner.rollbackTransaction(this.#unwrapConnection(connection));
165
+ }
166
+ async savepoint(connection, savepointName, compileQuery) {
167
+ if (!this.#inner.savepoint) {
168
+ return;
169
+ }
170
+ await this.#inner.savepoint(this.#unwrapConnection(connection), savepointName, compileQuery);
171
+ }
172
+ async rollbackToSavepoint(connection, savepointName, compileQuery) {
173
+ if (!this.#inner.rollbackToSavepoint) {
174
+ return;
175
+ }
176
+ await this.#inner.rollbackToSavepoint(this.#unwrapConnection(connection), savepointName, compileQuery);
177
+ }
178
+ async releaseSavepoint(connection, savepointName, compileQuery) {
179
+ if (!this.#inner.releaseSavepoint) {
180
+ return;
181
+ }
182
+ await this.#inner.releaseSavepoint(this.#unwrapConnection(connection), savepointName, compileQuery);
183
+ }
184
+ async releaseConnection(connection) {
185
+ const unwrapped = this.#unwrapConnection(connection);
186
+ if (connection instanceof TracingConnection) {
187
+ this.#innerToWrapped.delete(unwrapped);
188
+ }
189
+ await this.#inner.releaseConnection(unwrapped);
190
+ }
191
+ async destroy() {
192
+ this.#innerToWrapped.clear();
193
+ await this.#inner.destroy();
194
+ }
195
+ #wrapConnection(connection) {
196
+ const existing = this.#innerToWrapped.get(connection);
197
+ if (existing) {
198
+ return existing;
199
+ }
200
+ const wrapped = new TracingConnection(connection, this.#sink);
201
+ this.#innerToWrapped.set(connection, wrapped);
202
+ return wrapped;
203
+ }
204
+ #unwrapConnection(connection) {
205
+ if (connection instanceof TracingConnection) {
206
+ return connection.unwrap();
207
+ }
208
+ return connection;
209
+ }
210
+ }
211
+ function createTracingDialect(baseDialect, sink) {
212
+ return {
213
+ createDriver: () => new TracingDriver(baseDialect.createDriver(), sink),
214
+ createAdapter: () => baseDialect.createAdapter(),
215
+ createQueryCompiler: () => baseDialect.createQueryCompiler(),
216
+ createIntrospector: (db) => baseDialect.createIntrospector(db),
217
+ };
218
+ }
219
+ function serializeCompiledQuery(compiledQuery) {
220
+ return JSON.stringify({
221
+ sql: compiledQuery.sql,
222
+ parameters: compiledQuery.parameters.map((value) => normalizeParameterValue(value)),
223
+ });
224
+ }
225
+ function normalizeParameterValue(value) {
226
+ if (typeof value === 'bigint') {
227
+ return { type: 'bigint', value: value.toString() };
228
+ }
229
+ if (value instanceof Date) {
230
+ return { type: 'date', value: value.toISOString() };
231
+ }
232
+ if (value instanceof Uint8Array) {
233
+ return { type: 'bytes', value: Array.from(value) };
234
+ }
235
+ if (Array.isArray(value)) {
236
+ return value.map((entry) => normalizeParameterValue(entry));
237
+ }
238
+ if (value && typeof value === 'object') {
239
+ return Object.fromEntries(Object.entries(value)
240
+ .sort(([left], [right]) => left.localeCompare(right))
241
+ .map(([key, entry]) => [key, normalizeParameterValue(entry)]));
242
+ }
243
+ return value;
244
+ }
245
+ function hashTrace(entries) {
246
+ return hashString(entries.join('\n'));
247
+ }
248
+ async function createSqliteChecksumDb(sink) {
249
+ try {
250
+ const bunSqliteSpecifier = 'bun:sqlite';
251
+ const sqliteModule = await import(bunSqliteSpecifier);
252
+ const dialectModule = await import('kysely-bun-sqlite');
253
+ const sqliteDb = new sqliteModule.Database(':memory:');
254
+ const dialect = createTracingDialect(new dialectModule.BunSqliteDialect({ database: sqliteDb }), sink);
255
+ return {
256
+ db: new Kysely({ dialect }),
257
+ dispose: async () => {
258
+ sqliteDb.close();
259
+ },
260
+ };
261
+ }
262
+ catch {
263
+ // Fall back to better-sqlite3 outside Bun.
264
+ }
265
+ try {
266
+ const sqliteModule = await import('better-sqlite3');
267
+ const sqliteDb = new sqliteModule.default(':memory:');
268
+ const dialect = createTracingDialect(new SqliteDialect({ database: sqliteDb }), sink);
269
+ return {
270
+ db: new Kysely({ dialect }),
271
+ dispose: async () => {
272
+ sqliteDb.close();
273
+ },
274
+ };
275
+ }
276
+ catch (error) {
277
+ const message = error instanceof Error ? error.message : String(error);
278
+ throw new Error(`Deterministic migration checksums for sqlite require an in-memory sqlite runtime in this environment. ${message}`);
279
+ }
280
+ }
281
+ async function createPostgresChecksumDb(sink) {
282
+ const pglite = await PGlite.create();
283
+ const dialect = createTracingDialect(new PGliteDialect(pglite), sink);
284
+ return {
285
+ db: new Kysely({ dialect }),
286
+ dispose: async () => {
287
+ await pglite.close();
288
+ },
289
+ };
290
+ }
291
+ async function createChecksumDb(dialect, sink) {
292
+ if (dialect === 'postgres') {
293
+ return await createPostgresChecksumDb(sink);
294
+ }
295
+ return await createSqliteChecksumDb(sink);
296
+ }
297
+ async function computeDeterministicChecksum(migrations, migration, dialect) {
298
+ const sink = { enabled: false, entries: [] };
299
+ const { db, dispose } = await createChecksumDb(dialect, sink);
300
+ try {
301
+ for (const current of migrations.migrations) {
302
+ if (current.version > migration.version) {
303
+ break;
304
+ }
305
+ sink.enabled = current.version === migration.version;
306
+ await current.up(db);
307
+ sink.enabled = false;
308
+ if (current.version === migration.version) {
309
+ break;
310
+ }
311
+ }
312
+ return hashTrace(sink.entries);
313
+ }
314
+ finally {
315
+ await db.destroy();
316
+ await dispose();
317
+ }
318
+ }
319
+ export function inferMigrationChecksumDialect(db) {
320
+ const adapter = db.getExecutor().adapter;
321
+ const adapterName = adapter.constructor.name;
322
+ if (adapter instanceof SqliteAdapter || adapterName === 'SqliteAdapter') {
323
+ return 'sqlite';
324
+ }
325
+ if (adapter instanceof PostgresAdapter || adapterName === 'PostgresAdapter') {
326
+ return 'postgres';
327
+ }
328
+ return null;
329
+ }
330
+ export async function getMigrationChecksum(migrations, migration, dialect) {
331
+ if (migration.checksum === 'disabled') {
332
+ return null;
333
+ }
334
+ let dialectCache = checksumCache.get(migration);
335
+ if (!dialectCache) {
336
+ dialectCache = new Map();
337
+ checksumCache.set(migration, dialectCache);
338
+ }
339
+ if (dialectCache.has(dialect)) {
340
+ return dialectCache.get(dialect) ?? null;
341
+ }
342
+ const checksum = await computeDeterministicChecksum(migrations, migration, dialect);
343
+ dialectCache.set(dialect, checksum);
344
+ return checksum;
345
+ }
346
+ export function getLegacyMigrationChecksum(migration) {
347
+ return hashString(normalizeLegacySource(migration.up.toString()));
348
+ }
349
+ export function getMigrationChecksumAlgorithm(migration) {
350
+ if (migration.checksum === 'disabled') {
351
+ return DISABLED_MIGRATION_CHECKSUM_ALGORITHM;
352
+ }
353
+ return SQL_TRACE_MIGRATION_CHECKSUM_ALGORITHM;
354
+ }
355
+ //# sourceMappingURL=checksum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checksum.js","sourceRoot":"","sources":["../src/checksum.ts"],"names":[],"mappings":"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"}
package/dist/define.d.ts CHANGED
@@ -1,34 +1,38 @@
1
1
  /**
2
2
  * @syncular/migrations - Migration definition
3
3
  */
4
- import type { DefinedMigrations, MigrationRecord, ParsedMigration } from './types';
4
+ import type { DefinedMigrations, MigrationRecord } from './types';
5
5
  /**
6
6
  * Define versioned migrations with automatic version parsing and sorting.
7
7
  *
8
8
  * @example
9
9
  * ```typescript
10
10
  * export const migrations = defineMigrations({
11
- * v1: async (db) => {
12
- * await db.schema.createTable('tasks')
13
- * .addColumn('id', 'text', col => col.primaryKey())
14
- * .addColumn('title', 'text', col => col.notNull())
15
- * .execute();
11
+ * v1: {
12
+ * up: async (db) => {
13
+ * await db.schema.createTable('tasks')
14
+ * .addColumn('id', 'text', col => col.primaryKey())
15
+ * .addColumn('title', 'text', col => col.notNull())
16
+ * .execute();
17
+ * },
18
+ * down: async (db) => {
19
+ * await db.schema.dropTable('tasks').ifExists().execute();
20
+ * },
16
21
  * },
17
- * v2: async (db) => {
18
- * await db.schema.alterTable('tasks')
19
- * .addColumn('priority', 'integer', col => col.defaultTo(0))
20
- * .execute();
22
+ * v2: {
23
+ * up: async (db) => {
24
+ * await db.schema.alterTable('tasks')
25
+ * .addColumn('priority', 'integer', col => col.defaultTo(0))
26
+ * .execute();
27
+ * },
28
+ * down: async (db) => {
29
+ * await db.schema.alterTable('tasks')
30
+ * .dropColumn('priority')
31
+ * .execute();
32
+ * },
21
33
  * },
22
34
  * });
23
35
  * ```
24
36
  */
25
37
  export declare function defineMigrations<DB = unknown, T extends MigrationRecord<DB> = MigrationRecord<DB>>(versionedMigrations: T): DefinedMigrations<DB>;
26
- /**
27
- * Get the checksum for a migration.
28
- */
29
- export declare function getMigrationChecksum<DB>(migration: ParsedMigration<DB>): string;
30
- /**
31
- * Get the accepted checksums for a migration, including the current checksum.
32
- */
33
- export declare function getCompatibleMigrationChecksums<DB>(migration: ParsedMigration<DB>): string[];
34
38
  //# sourceMappingURL=define.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,iBAAiB,EAGjB,eAAe,EACf,eAAe,EAChB,MAAM,SAAS,CAAC;AA8JjB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,GAAG,OAAO,EACZ,CAAC,SAAS,eAAe,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,EACnD,mBAAmB,EAAE,CAAC,GAAG,iBAAiB,CAAC,EAAE,CAAC,CA8E/C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EACrC,SAAS,EAAE,eAAe,CAAC,EAAE,CAAC,GAC7B,MAAM,CAER;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,EAAE,EAChD,SAAS,EAAE,eAAe,CAAC,EAAE,CAAC,GAC7B,MAAM,EAAE,CAOV"}
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,iBAAiB,EAGjB,eAAe,EAEhB,MAAM,SAAS,CAAC;AAmCjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,GAAG,OAAO,EACZ,CAAC,SAAS,eAAe,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,EACnD,mBAAmB,EAAE,CAAC,GAAG,iBAAiB,CAAC,EAAE,CAAC,CA4D/C"}