@enbox/dwn-sql-store 0.0.10 → 0.0.11
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/dist/esm/src/data-store-s3.js +12 -21
- package/dist/esm/src/data-store-s3.js.map +1 -1
- package/dist/esm/src/data-store-sql.js +14 -37
- package/dist/esm/src/data-store-sql.js.map +1 -1
- package/dist/esm/src/main.js +1 -0
- package/dist/esm/src/main.js.map +1 -1
- package/dist/esm/src/message-store-sql.js +13 -107
- package/dist/esm/src/message-store-sql.js.map +1 -1
- package/dist/esm/src/migration-provider.js +36 -0
- package/dist/esm/src/migration-provider.js.map +1 -0
- package/dist/esm/src/migration-runner.js +26 -88
- package/dist/esm/src/migration-runner.js.map +1 -1
- package/dist/esm/src/migrations/001-initial-schema.js +4 -5
- package/dist/esm/src/migrations/001-initial-schema.js.map +1 -1
- package/dist/esm/src/migrations/002-content-addressed-datastore.js +3 -4
- package/dist/esm/src/migrations/002-content-addressed-datastore.js.map +1 -1
- package/dist/esm/src/migrations/003-add-squash-column.js +3 -4
- package/dist/esm/src/migrations/003-add-squash-column.js.map +1 -1
- package/dist/esm/src/migrations/index.js +14 -6
- package/dist/esm/src/migrations/index.js.map +1 -1
- package/dist/esm/src/resumable-task-store-sql.js +14 -21
- package/dist/esm/src/resumable-task-store-sql.js.map +1 -1
- package/dist/esm/src/state-index-sql.js +17 -58
- package/dist/esm/src/state-index-sql.js.map +1 -1
- package/dist/types/src/data-store-s3.d.ts.map +1 -1
- package/dist/types/src/data-store-sql.d.ts.map +1 -1
- package/dist/types/src/main.d.ts +1 -0
- package/dist/types/src/main.d.ts.map +1 -1
- package/dist/types/src/message-store-sql.d.ts +0 -8
- package/dist/types/src/message-store-sql.d.ts.map +1 -1
- package/dist/types/src/migration-provider.d.ts +36 -0
- package/dist/types/src/migration-provider.d.ts.map +1 -0
- package/dist/types/src/migration-runner.d.ts +13 -39
- package/dist/types/src/migration-runner.d.ts.map +1 -1
- package/dist/types/src/migrations/001-initial-schema.d.ts +3 -3
- package/dist/types/src/migrations/001-initial-schema.d.ts.map +1 -1
- package/dist/types/src/migrations/002-content-addressed-datastore.d.ts +2 -2
- package/dist/types/src/migrations/002-content-addressed-datastore.d.ts.map +1 -1
- package/dist/types/src/migrations/003-add-squash-column.d.ts +2 -2
- package/dist/types/src/migrations/003-add-squash-column.d.ts.map +1 -1
- package/dist/types/src/migrations/index.d.ts +12 -4
- package/dist/types/src/migrations/index.d.ts.map +1 -1
- package/dist/types/src/resumable-task-store-sql.d.ts.map +1 -1
- package/dist/types/src/state-index-sql.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/data-store-s3.ts +14 -25
- package/src/data-store-sql.ts +15 -44
- package/src/main.ts +1 -0
- package/src/message-store-sql.ts +14 -113
- package/src/migration-provider.ts +52 -0
- package/src/migration-runner.ts +33 -123
- package/src/migrations/001-initial-schema.ts +6 -7
- package/src/migrations/002-content-addressed-datastore.ts +5 -6
- package/src/migrations/003-add-squash-column.ts +5 -7
- package/src/migrations/index.ts +15 -7
- package/src/resumable-task-store-sql.ts +16 -25
- package/src/state-index-sql.ts +18 -62
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"001-initial-schema.js","sourceRoot":"","sources":["../../../../src/migrations/001-initial-schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"001-initial-schema.js","sourceRoot":"","sources":["../../../../src/migrations/001-initial-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,9 +24,8 @@ import { sql } from 'kysely';
|
|
|
24
24
|
* NOTE: For large databases, the data migration may take significant time.
|
|
25
25
|
* The migration runs in a single transaction for atomicity.
|
|
26
26
|
*/
|
|
27
|
-
export const migration002ContentAddressedDatastore = {
|
|
28
|
-
|
|
29
|
-
async up(db, dialect) {
|
|
27
|
+
export const migration002ContentAddressedDatastore = (dialect) => ({
|
|
28
|
+
async up(db) {
|
|
30
29
|
// ─── Create dataRefs table ──────────────────────────────────────────
|
|
31
30
|
if (!(await dialect.hasTable(db, 'dataRefs'))) {
|
|
32
31
|
await db.schema
|
|
@@ -122,5 +121,5 @@ export const migration002ContentAddressedDatastore = {
|
|
|
122
121
|
await db.schema.dropTable('dataStore').execute();
|
|
123
122
|
}
|
|
124
123
|
},
|
|
125
|
-
};
|
|
124
|
+
});
|
|
126
125
|
//# sourceMappingURL=002-content-addressed-datastore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"002-content-addressed-datastore.js","sourceRoot":"","sources":["../../../../src/migrations/002-content-addressed-datastore.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,qCAAqC,
|
|
1
|
+
{"version":3,"file":"002-content-addressed-datastore.js","sourceRoot":"","sources":["../../../../src/migrations/002-content-addressed-datastore.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,12 @@
|
|
|
5
5
|
* introduced in the DWN spec. It follows the same pattern as `published`
|
|
6
6
|
* and `prune` — a nullable boolean column used for query filtering.
|
|
7
7
|
*/
|
|
8
|
-
export const migration003AddSquashColumn = {
|
|
9
|
-
|
|
10
|
-
async up(db, _dialect) {
|
|
8
|
+
export const migration003AddSquashColumn = () => ({
|
|
9
|
+
async up(db) {
|
|
11
10
|
await db.schema
|
|
12
11
|
.alterTable('messageStoreMessages')
|
|
13
12
|
.addColumn('squash', 'boolean')
|
|
14
13
|
.execute();
|
|
15
14
|
},
|
|
16
|
-
};
|
|
15
|
+
});
|
|
17
16
|
//# sourceMappingURL=003-add-squash-column.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"003-add-squash-column.js","sourceRoot":"","sources":["../../../../src/migrations/003-add-squash-column.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"003-add-squash-column.js","sourceRoot":"","sources":["../../../../src/migrations/003-add-squash-column.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAwB,GAAc,EAAE,CAAC,CAAC;IAEhF,KAAK,CAAC,EAAE,CAAC,EAAe;QACtB,MAAM,EAAE,CAAC,MAAM;aACZ,UAAU,CAAC,sBAAsB,CAAC;aAClC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC;aAC9B,OAAO,EAAE,CAAC;IACf,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -2,12 +2,20 @@ import { migration001InitialSchema } from './001-initial-schema.js';
|
|
|
2
2
|
import { migration002ContentAddressedDatastore } from './002-content-addressed-datastore.js';
|
|
3
3
|
import { migration003AddSquashColumn } from './003-add-squash-column.js';
|
|
4
4
|
/**
|
|
5
|
-
* All migrations in sequential order.
|
|
6
|
-
*
|
|
5
|
+
* All DWN store migrations in sequential order.
|
|
6
|
+
*
|
|
7
|
+
* Each entry is a `[name, factory]` tuple where the factory is a
|
|
8
|
+
* {@link DwnMigrationFactory} that receives the dialect and returns a
|
|
9
|
+
* standard Kysely `Migration`. The `DwnMigrationProvider` resolves these
|
|
10
|
+
* into the `Record<string, Migration>` that Kysely's `Migrator` expects.
|
|
11
|
+
*
|
|
12
|
+
* **Ordering contract:** Entries MUST be sorted by name (lexicographic).
|
|
13
|
+
* Kysely's `Migrator` sorts by key as well, but maintaining order here
|
|
14
|
+
* makes the source of truth explicit and human-readable.
|
|
7
15
|
*/
|
|
8
|
-
export const
|
|
9
|
-
migration001InitialSchema,
|
|
10
|
-
migration002ContentAddressedDatastore,
|
|
11
|
-
migration003AddSquashColumn,
|
|
16
|
+
export const allDwnMigrations = [
|
|
17
|
+
['001-initial-schema', migration001InitialSchema],
|
|
18
|
+
['002-content-addressed-datastore', migration002ContentAddressedDatastore],
|
|
19
|
+
['003-add-squash-column', migration003AddSquashColumn],
|
|
12
20
|
];
|
|
13
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/migrations/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,qCAAqC,EAAE,MAAM,sCAAsC,CAAC;AAC7F,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/migrations/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,qCAAqC,EAAE,MAAM,sCAAsC,CAAC;AAC7F,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAyE;IACpG,CAAC,oBAAoB,EAAE,yBAAyB,CAAC;IACjD,CAAC,iCAAiC,EAAE,qCAAqC,CAAC;IAC1E,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;CACvD,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Cid } from '@enbox/dwn-sdk-js';
|
|
2
2
|
import { executeWithTransaction } from './utils/transaction.js';
|
|
3
|
-
import { Kysely } from 'kysely';
|
|
3
|
+
import { Kysely, sql } from 'kysely';
|
|
4
4
|
export class ResumableTaskStoreSql {
|
|
5
5
|
static taskTimeoutInSeconds = 60;
|
|
6
6
|
#dialect;
|
|
@@ -13,27 +13,20 @@ export class ResumableTaskStoreSql {
|
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
15
15
|
this.#db = new Kysely({ dialect: this.#dialect });
|
|
16
|
-
// if
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
// Fail fast if migrations have not been run — tables must already exist.
|
|
17
|
+
await this.#assertTablesExist();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Verifies that the required tables exist by executing a zero-row SELECT.
|
|
21
|
+
* Throws a clear error directing the caller to run migrations first.
|
|
22
|
+
*/
|
|
23
|
+
async #assertTablesExist() {
|
|
24
|
+
try {
|
|
25
|
+
await sql `SELECT 1 FROM ${sql.table('resumableTasks')} LIMIT 0`.execute(this.#db);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
throw new Error('ResumableTaskStoreSql: table \'resumableTasks\' does not exist. Run DWN store migrations before opening stores.');
|
|
21
29
|
}
|
|
22
|
-
// else create the table and corresponding indexes
|
|
23
|
-
const table = this.#db.schema
|
|
24
|
-
.createTable(tableName)
|
|
25
|
-
.ifNotExists() // kept to show supported by all dialects in contrast to ifNotExists() below, though not needed due to hasTable() check above
|
|
26
|
-
.addColumn('id', 'varchar(255)', (col) => col.primaryKey())
|
|
27
|
-
.addColumn('task', 'text')
|
|
28
|
-
.addColumn('timeout', 'bigint')
|
|
29
|
-
.addColumn('retryCount', 'integer');
|
|
30
|
-
await table.execute();
|
|
31
|
-
await this.#db.schema
|
|
32
|
-
.createIndex('index_timeout')
|
|
33
|
-
// .ifNotExists() // intentionally kept commented out code to show that it is not supported by all dialects (ie. MySQL)
|
|
34
|
-
.on('resumableTasks')
|
|
35
|
-
.column('timeout')
|
|
36
|
-
.execute();
|
|
37
30
|
}
|
|
38
31
|
async close() {
|
|
39
32
|
await this.#db?.destroy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resumable-task-store-sql.js","sourceRoot":"","sources":["../../../src/resumable-task-store-sql.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"resumable-task-store-sql.js","sourceRoot":"","sources":["../../../src/resumable-task-store-sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
* - `stateIndexMeta`: reverse lookup from messageCid → protocol (for deletion)
|
|
10
10
|
*/
|
|
11
11
|
import { initDefaultHashes } from '@enbox/dwn-sdk-js';
|
|
12
|
-
import { Kysely } from 'kysely';
|
|
13
12
|
import { SMTStoreSql } from './smt-store-sql.js';
|
|
14
13
|
import { SparseMerkleTree } from '@enbox/dwn-sdk-js';
|
|
14
|
+
import { Kysely, sql } from 'kysely';
|
|
15
15
|
export class StateIndexSql {
|
|
16
16
|
#dialect;
|
|
17
17
|
#db = null;
|
|
@@ -36,63 +36,22 @@ export class StateIndexSql {
|
|
|
36
36
|
this.#db = new Kysely({ dialect: this.#dialect });
|
|
37
37
|
// Ensure default hashes are initialized for the SMT
|
|
38
38
|
await initDefaultHashes();
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
// Not UNIQUE because the delete-then-insert upsert pattern in SMTStoreSql
|
|
56
|
-
// can race under concurrent access, causing duplicate key violations.
|
|
57
|
-
await this.#db.schema
|
|
58
|
-
.createIndex('index_stateIndexNodes_tenant_scope_nodeHash')
|
|
59
|
-
.on(nodesTableName)
|
|
60
|
-
.columns(['tenant', 'scope', 'nodeHash'])
|
|
61
|
-
.execute();
|
|
62
|
-
}
|
|
63
|
-
// ─── Create stateIndexRoots table ─────────────────────────────────────
|
|
64
|
-
const rootsTableName = 'stateIndexRoots';
|
|
65
|
-
const rootsTableExists = await this.#dialect.hasTable(this.#db, rootsTableName);
|
|
66
|
-
if (!rootsTableExists) {
|
|
67
|
-
await this.#db.schema
|
|
68
|
-
.createTable(rootsTableName)
|
|
69
|
-
.ifNotExists()
|
|
70
|
-
.addColumn('tenant', 'varchar(255)', (col) => col.notNull())
|
|
71
|
-
.addColumn('scope', 'varchar(200)', (col) => col.notNull())
|
|
72
|
-
.addColumn('rootHash', 'varchar(64)', (col) => col.notNull())
|
|
73
|
-
.execute();
|
|
74
|
-
await this.#db.schema
|
|
75
|
-
.createIndex('index_stateIndexRoots_tenant_scope')
|
|
76
|
-
.on(rootsTableName)
|
|
77
|
-
.columns(['tenant', 'scope'])
|
|
78
|
-
.execute();
|
|
79
|
-
}
|
|
80
|
-
// ─── Create stateIndexMeta table ──────────────────────────────────────
|
|
81
|
-
const metaTableName = 'stateIndexMeta';
|
|
82
|
-
const metaTableExists = await this.#dialect.hasTable(this.#db, metaTableName);
|
|
83
|
-
if (!metaTableExists) {
|
|
84
|
-
await this.#db.schema
|
|
85
|
-
.createTable(metaTableName)
|
|
86
|
-
.ifNotExists()
|
|
87
|
-
.addColumn('tenant', 'varchar(255)', (col) => col.notNull())
|
|
88
|
-
.addColumn('messageCid', 'varchar(60)', (col) => col.notNull())
|
|
89
|
-
.addColumn('protocol', 'varchar(200)')
|
|
90
|
-
.execute();
|
|
91
|
-
await this.#db.schema
|
|
92
|
-
.createIndex('index_stateIndexMeta_tenant_messageCid')
|
|
93
|
-
.on(metaTableName)
|
|
94
|
-
.columns(['tenant', 'messageCid'])
|
|
95
|
-
.execute();
|
|
39
|
+
// Fail fast if migrations have not been run — tables must already exist.
|
|
40
|
+
await this.#assertTablesExist();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Verifies that the required tables exist by executing a zero-row SELECT.
|
|
44
|
+
* Throws a clear error directing the caller to run migrations first.
|
|
45
|
+
*/
|
|
46
|
+
async #assertTablesExist() {
|
|
47
|
+
const tables = ['stateIndexNodes', 'stateIndexRoots', 'stateIndexMeta'];
|
|
48
|
+
for (const table of tables) {
|
|
49
|
+
try {
|
|
50
|
+
await sql `SELECT 1 FROM ${sql.table(table)} LIMIT 0`.execute(this.#db);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
throw new Error(`StateIndexSql: table '${table}' does not exist. Run DWN store migrations before opening stores.`);
|
|
54
|
+
}
|
|
96
55
|
}
|
|
97
56
|
}
|
|
98
57
|
async close() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-index-sql.js","sourceRoot":"","sources":["../../../src/state-index-sql.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"state-index-sql.js","sourceRoot":"","sources":["../../../src/state-index-sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-store-s3.d.ts","sourceRoot":"","sources":["../../../src/data-store-s3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"data-store-s3.d.ts","sourceRoot":"","sources":["../../../src/data-store-s3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAK3F,OAAO,EAML,QAAQ,EACT,MAAM,oBAAoB,CAAC;AAG5B;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAY,YAAW,SAAS;;gBAQ/B,MAAM,EAAE,iBAAiB;IAcxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAWrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,GAAG,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAgC7B,GAAG,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC;IA4CjB,MAAM,CACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IA0BH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA+GpC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,mDAAmD;IACnD,OAAO,EAAE,OAAO,CAAC;IAEjB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IAEf,kGAAkG;IAClG,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,8FAA8F;IAC9F,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,2GAA2G;IAC3G,WAAW,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IAE/D,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-store-sql.d.ts","sourceRoot":"","sources":["../../../src/data-store-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAS3F;;;;;;;;;;;GAWG;AACH,qBAAa,YAAa,YAAW,SAAS;;gBAIhC,OAAO,EAAE,OAAO;IAIf,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"data-store-sql.d.ts","sourceRoot":"","sources":["../../../src/data-store-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAS3F;;;;;;;;;;;GAWG;AACH,qBAAa,YAAa,YAAW,SAAS;;gBAIhC,OAAO,EAAE,OAAO;IAIf,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAWrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,GAAG,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAuC7B,GAAG,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC;IAsEjB,MAAM,CACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IA0BH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAqDpC"}
|
package/dist/types/src/main.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export * from './data-store-s3.js';
|
|
|
8
8
|
export * from './data-store-sql.js';
|
|
9
9
|
export * from './state-index-sql.js';
|
|
10
10
|
export * from './message-store-sql.js';
|
|
11
|
+
export * from './migration-provider.js';
|
|
11
12
|
export * from './migration-runner.js';
|
|
12
13
|
export * from './migrations/index.js';
|
|
13
14
|
export * from './resumable-task-store-sql.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC"}
|
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
import type { Dialect } from './dialect/dialect.js';
|
|
2
2
|
import type { KeyValues } from './types.js';
|
|
3
3
|
import type { Filter, GenericMessage, MessageSort, MessageStore, MessageStoreOptions, Pagination, PaginationCursor } from '@enbox/dwn-sdk-js';
|
|
4
|
-
import { Kysely } from 'kysely';
|
|
5
4
|
export declare class MessageStoreSql implements MessageStore {
|
|
6
5
|
#private;
|
|
7
6
|
constructor(dialect: Dialect);
|
|
8
7
|
open(): Promise<void>;
|
|
9
|
-
/**
|
|
10
|
-
* Creates indexes on the given table.
|
|
11
|
-
* @param tableName The name of the table to create the indexes on.
|
|
12
|
-
* @param indexes Each inner array represents a single index and contains the column names to be indexed as a composite index.
|
|
13
|
-
* If the inner array contains only one element, it will be treated as a single column index.
|
|
14
|
-
*/
|
|
15
|
-
createIndexes<T>(database: Kysely<T>, tableName: string, indexes: string[][]): Promise<void>;
|
|
16
8
|
close(): Promise<void>;
|
|
17
9
|
put(tenant: string, message: GenericMessage, indexes: KeyValues, options?: MessageStoreOptions): Promise<void>;
|
|
18
10
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-store-sql.d.ts","sourceRoot":"","sources":["../../../src/message-store-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAmB,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EACV,MAAM,EACN,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"message-store-sql.d.ts","sourceRoot":"","sources":["../../../src/message-store-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAmB,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EACV,MAAM,EACN,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAkB9C,qBAAa,eAAgB,YAAW,YAAY;;gBAKtC,OAAO,EAAE,OAAO;IAKtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,GAAG,CACP,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,SAAS,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAyChB;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAoC9B,GAAG,CACP,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IA0BhC,KAAK,CACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,CAAC,EAAE,WAAW,EACzB,UAAU,CAAC,EAAE,UAAU,EACvB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC;QAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;KAAC,CAAC;IA6D9D,KAAK,CACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,CAAC,EAAE,WAAW,EACzB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAsBZ,MAAM,CACV,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAmBV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAYd,mBAAmB;IAuBjC;;;;;;;;;OASG;YACW,wBAAwB;IAsBtC;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAa9B"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Dialect } from './dialect/dialect.js';
|
|
2
|
+
import type { Migration, MigrationProvider } from 'kysely';
|
|
3
|
+
/**
|
|
4
|
+
* Factory function type for DWN migrations. Each migration module exports a
|
|
5
|
+
* factory that receives the {@link Dialect} and returns a standard Kysely
|
|
6
|
+
* {@link Migration}. This closure pattern lets migrations use dialect-specific
|
|
7
|
+
* DDL helpers (blob columns, auto-increment, `hasTable()`) without requiring
|
|
8
|
+
* Kysely's `Migration.up()` signature to accept extra parameters.
|
|
9
|
+
*/
|
|
10
|
+
export type DwnMigrationFactory = (dialect: Dialect) => Migration;
|
|
11
|
+
/**
|
|
12
|
+
* Kysely {@link MigrationProvider} for DWN store migrations.
|
|
13
|
+
*
|
|
14
|
+
* Wraps an ordered list of `(name, factory)` pairs. At resolution time each
|
|
15
|
+
* factory is called with the dialect, producing the concrete Kysely
|
|
16
|
+
* {@link Migration} objects that the `Migrator` consumes.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* const provider = new DwnMigrationProvider(dialect, allDwnMigrations);
|
|
21
|
+
* const migrator = new Migrator({ db, provider });
|
|
22
|
+
* await migrator.migrateToLatest();
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare class DwnMigrationProvider implements MigrationProvider {
|
|
26
|
+
#private;
|
|
27
|
+
constructor(dialect: Dialect, factories: ReadonlyArray<readonly [name: string, factory: DwnMigrationFactory]>);
|
|
28
|
+
/**
|
|
29
|
+
* Called by the Kysely `Migrator` to retrieve all available migrations.
|
|
30
|
+
* Keys are migration names (e.g. `'001-initial-schema'`); values are the
|
|
31
|
+
* concrete `Migration` objects produced by invoking each factory with the
|
|
32
|
+
* captured dialect.
|
|
33
|
+
*/
|
|
34
|
+
getMigrations(): Promise<Record<string, Migration>>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=migration-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-provider.d.ts","sourceRoot":"","sources":["../../../src/migration-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC;AAElE;;;;;;;;;;;;;GAaG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;;gBAK1D,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAMjF;;;;;OAKG;IACU,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAOjE"}
|
|
@@ -1,50 +1,24 @@
|
|
|
1
1
|
import type { Dialect } from './dialect/dialect.js';
|
|
2
|
+
import type { DwnMigrationFactory } from './migration-provider.js';
|
|
2
3
|
import type { Kysely } from 'kysely';
|
|
3
|
-
/**
|
|
4
|
-
* A single migration step. Migrations are TypeScript functions (not raw SQL)
|
|
5
|
-
* so they can use the Dialect abstraction for cross-dialect column types.
|
|
6
|
-
*/
|
|
7
|
-
export type Migration = {
|
|
8
|
-
/** Unique sequential name, e.g. '001-initial-schema'. */
|
|
9
|
-
name: string;
|
|
10
|
-
/**
|
|
11
|
-
* Apply this migration. Receives the Kysely instance and dialect for
|
|
12
|
-
* dialect-aware DDL (blob types, auto-increment, etc.).
|
|
13
|
-
*/
|
|
14
|
-
up(db: Kysely<any>, dialect: Dialect): Promise<void>;
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Minimal forward-only migration runner for dwn-sql-store.
|
|
18
|
-
*
|
|
19
|
-
* Tracks applied migrations in a `dwn_migrations` table and applies
|
|
20
|
-
* pending migrations in sequential order on each call to `run()`.
|
|
21
|
-
*
|
|
22
|
-
* Design decisions:
|
|
23
|
-
* - Forward-only: no rollback support. Keep migrations simple and additive.
|
|
24
|
-
* - TypeScript migrations: use the Dialect interface for cross-dialect DDL.
|
|
25
|
-
* - Idempotent: calling `run()` on an up-to-date database is a no-op.
|
|
26
|
-
* - Transaction per migration: each migration runs in its own transaction
|
|
27
|
-
* so a failure leaves the database in the last known-good state.
|
|
28
|
-
*/
|
|
29
4
|
/**
|
|
30
5
|
* Convenience function to run all DWN store migrations against a database.
|
|
31
6
|
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
7
|
+
* Uses Kysely's native {@link Migrator} with the {@link DwnMigrationProvider}
|
|
8
|
+
* to apply pending migrations. The Migrator handles locking (Postgres uses
|
|
9
|
+
* `pg_advisory_xact_lock`, MySQL uses `GET_LOCK`/`RELEASE_LOCK`, SQLite is
|
|
10
|
+
* single-writer) and migration tracking via its own `kysely_migration` /
|
|
11
|
+
* `kysely_migration_lock` tables.
|
|
12
|
+
*
|
|
13
|
+
* Call this once during application startup, before opening any stores —
|
|
14
|
+
* e.g. in `getDwnConfig()` or equivalent initialization code.
|
|
35
15
|
*
|
|
36
16
|
* @param db - An open Kysely instance connected to the target database.
|
|
37
17
|
* @param dialect - The dialect for the target database.
|
|
18
|
+
* @param migrations - Optional custom migration list; defaults to the
|
|
19
|
+
* built-in {@link allDwnMigrations}.
|
|
38
20
|
* @returns The names of newly applied migrations (empty if already up-to-date).
|
|
21
|
+
* @throws If any migration fails (the Migrator rolls back only the failed migration).
|
|
39
22
|
*/
|
|
40
|
-
export declare function runDwnStoreMigrations(db: Kysely<any>, dialect: Dialect): Promise<string[]>;
|
|
41
|
-
export declare class MigrationRunner {
|
|
42
|
-
#private;
|
|
43
|
-
constructor(db: Kysely<any>, dialect: Dialect, migrations: Migration[]);
|
|
44
|
-
/**
|
|
45
|
-
* Ensure the `dwn_migrations` tracking table exists, then apply any
|
|
46
|
-
* pending migrations in order. Returns the names of newly applied migrations.
|
|
47
|
-
*/
|
|
48
|
-
run(): Promise<string[]>;
|
|
49
|
-
}
|
|
23
|
+
export declare function runDwnStoreMigrations(db: Kysely<any>, dialect: Dialect, migrations?: ReadonlyArray<readonly [name: string, factory: DwnMigrationFactory]>): Promise<string[]>;
|
|
50
24
|
//# sourceMappingURL=migration-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-runner.d.ts","sourceRoot":"","sources":["../../../src/migration-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"migration-runner.d.ts","sourceRoot":"","sources":["../../../src/migration-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAsB,MAAM,QAAQ,CAAC;AAMzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EACf,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,GAChF,OAAO,CAAC,MAAM,EAAE,CAAC,CAenB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DwnMigrationFactory } from '../migration-provider.js';
|
|
2
2
|
/**
|
|
3
3
|
* Baseline migration: captures the schema as of the pre-migration era.
|
|
4
4
|
*
|
|
5
5
|
* For existing databases that already have these tables, this migration is
|
|
6
|
-
* detected as "already applied" during the adoption bootstrap (see
|
|
6
|
+
* detected as "already applied" during the adoption bootstrap (see runDwnStoreMigrations).
|
|
7
7
|
* For new databases, this creates the full initial schema.
|
|
8
8
|
*/
|
|
9
|
-
export declare const migration001InitialSchema:
|
|
9
|
+
export declare const migration001InitialSchema: DwnMigrationFactory;
|
|
10
10
|
//# sourceMappingURL=001-initial-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"001-initial-schema.d.ts","sourceRoot":"","sources":["../../../../src/migrations/001-initial-schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"001-initial-schema.d.ts","sourceRoot":"","sources":["../../../../src/migrations/001-initial-schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAKpE;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,mBA+KtC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DwnMigrationFactory } from '../migration-provider.js';
|
|
2
2
|
/**
|
|
3
3
|
* Migration 002: Content-addressed DataStore with deduplication.
|
|
4
4
|
*
|
|
@@ -24,5 +24,5 @@ import type { Migration } from '../migration-runner.js';
|
|
|
24
24
|
* NOTE: For large databases, the data migration may take significant time.
|
|
25
25
|
* The migration runs in a single transaction for atomicity.
|
|
26
26
|
*/
|
|
27
|
-
export declare const migration002ContentAddressedDatastore:
|
|
27
|
+
export declare const migration002ContentAddressedDatastore: DwnMigrationFactory;
|
|
28
28
|
//# sourceMappingURL=002-content-addressed-datastore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"002-content-addressed-datastore.d.ts","sourceRoot":"","sources":["../../../../src/migrations/002-content-addressed-datastore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"002-content-addressed-datastore.d.ts","sourceRoot":"","sources":["../../../../src/migrations/002-content-addressed-datastore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAKpE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,qCAAqC,EAAE,mBA2GlD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DwnMigrationFactory } from '../migration-provider.js';
|
|
2
2
|
/**
|
|
3
3
|
* Migration 003: Add `squash` boolean column to `messageStoreMessages`.
|
|
4
4
|
*
|
|
@@ -6,5 +6,5 @@ import type { Migration } from '../migration-runner.js';
|
|
|
6
6
|
* introduced in the DWN spec. It follows the same pattern as `published`
|
|
7
7
|
* and `prune` — a nullable boolean column used for query filtering.
|
|
8
8
|
*/
|
|
9
|
-
export declare const migration003AddSquashColumn:
|
|
9
|
+
export declare const migration003AddSquashColumn: DwnMigrationFactory;
|
|
10
10
|
//# sourceMappingURL=003-add-squash-column.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"003-add-squash-column.d.ts","sourceRoot":"","sources":["../../../../src/migrations/003-add-squash-column.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"003-add-squash-column.d.ts","sourceRoot":"","sources":["../../../../src/migrations/003-add-squash-column.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpE;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,EAAE,mBAQxC,CAAC"}
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DwnMigrationFactory } from '../migration-provider.js';
|
|
2
2
|
/**
|
|
3
|
-
* All migrations in sequential order.
|
|
4
|
-
*
|
|
3
|
+
* All DWN store migrations in sequential order.
|
|
4
|
+
*
|
|
5
|
+
* Each entry is a `[name, factory]` tuple where the factory is a
|
|
6
|
+
* {@link DwnMigrationFactory} that receives the dialect and returns a
|
|
7
|
+
* standard Kysely `Migration`. The `DwnMigrationProvider` resolves these
|
|
8
|
+
* into the `Record<string, Migration>` that Kysely's `Migrator` expects.
|
|
9
|
+
*
|
|
10
|
+
* **Ordering contract:** Entries MUST be sorted by name (lexicographic).
|
|
11
|
+
* Kysely's `Migrator` sorts by key as well, but maintaining order here
|
|
12
|
+
* makes the source of truth explicit and human-readable.
|
|
5
13
|
*/
|
|
6
|
-
export declare const
|
|
14
|
+
export declare const allDwnMigrations: ReadonlyArray<readonly [name: string, factory: DwnMigrationFactory]>;
|
|
7
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAMpE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAIjG,CAAC"}
|