@enbox/dwn-sql-store 0.0.6 → 0.0.8
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/blockstore-sql.js +117 -0
- package/dist/esm/src/blockstore-sql.js.map +1 -0
- package/dist/esm/src/data-store-s3.js +243 -0
- package/dist/esm/src/data-store-s3.js.map +1 -0
- package/dist/esm/src/data-store-sql.js +175 -59
- package/dist/esm/src/data-store-sql.js.map +1 -1
- package/dist/esm/src/main.js +4 -0
- package/dist/esm/src/main.js.map +1 -1
- package/dist/esm/src/migration-runner.js +99 -0
- package/dist/esm/src/migration-runner.js.map +1 -0
- package/dist/esm/src/migrations/001-initial-schema.js +163 -0
- package/dist/esm/src/migrations/001-initial-schema.js.map +1 -0
- package/dist/esm/src/migrations/002-content-addressed-datastore.js +126 -0
- package/dist/esm/src/migrations/002-content-addressed-datastore.js.map +1 -0
- package/dist/esm/src/migrations/index.js +11 -0
- package/dist/esm/src/migrations/index.js.map +1 -0
- package/dist/esm/src/state-index-sql.js +4 -3
- package/dist/esm/src/state-index-sql.js.map +1 -1
- package/dist/types/src/blockstore-sql.d.ts +36 -0
- package/dist/types/src/blockstore-sql.d.ts.map +1 -0
- package/dist/types/src/data-store-s3.d.ts +53 -0
- package/dist/types/src/data-store-s3.d.ts.map +1 -0
- package/dist/types/src/data-store-sql.d.ts +12 -0
- package/dist/types/src/data-store-sql.d.ts.map +1 -1
- package/dist/types/src/main.d.ts +4 -0
- package/dist/types/src/main.d.ts.map +1 -1
- package/dist/types/src/migration-runner.d.ts +50 -0
- package/dist/types/src/migration-runner.d.ts.map +1 -0
- package/dist/types/src/migrations/001-initial-schema.d.ts +10 -0
- package/dist/types/src/migrations/001-initial-schema.d.ts.map +1 -0
- package/dist/types/src/migrations/002-content-addressed-datastore.d.ts +28 -0
- package/dist/types/src/migrations/002-content-addressed-datastore.d.ts.map +1 -0
- package/dist/types/src/migrations/index.d.ts +7 -0
- package/dist/types/src/migrations/index.d.ts.map +1 -0
- package/dist/types/src/state-index-sql.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +25 -0
- package/dist/types/src/types.d.ts.map +1 -1
- package/package.json +8 -2
- package/src/blockstore-sql.ts +142 -0
- package/src/data-store-s3.ts +338 -0
- package/src/data-store-sql.ts +208 -79
- package/src/main.ts +4 -0
- package/src/migration-runner.ts +137 -0
- package/src/migrations/001-initial-schema.ts +190 -0
- package/src/migrations/002-content-addressed-datastore.ts +140 -0
- package/src/migrations/index.ts +13 -0
- package/src/state-index-sql.ts +4 -3
- package/src/types.ts +29 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-store-sql.js","sourceRoot":"","sources":["../../../src/data-store-sql.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data-store-sql.js","sourceRoot":"","sources":["../../../src/data-store-sql.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/src/main.js
CHANGED
|
@@ -3,9 +3,13 @@ export * from './dialect/bun-sqlite-adapter.js';
|
|
|
3
3
|
export * from './dialect/mysql-dialect.js';
|
|
4
4
|
export * from './dialect/postgres-dialect.js';
|
|
5
5
|
export * from './dialect/sqlite-dialect.js';
|
|
6
|
+
export * from './blockstore-sql.js';
|
|
7
|
+
export * from './data-store-s3.js';
|
|
6
8
|
export * from './data-store-sql.js';
|
|
7
9
|
export * from './state-index-sql.js';
|
|
8
10
|
export * from './message-store-sql.js';
|
|
11
|
+
export * from './migration-runner.js';
|
|
12
|
+
export * from './migrations/index.js';
|
|
9
13
|
export * from './resumable-task-store-sql.js';
|
|
10
14
|
export * from './smt-store-sql.js';
|
|
11
15
|
//# sourceMappingURL=main.js.map
|
package/dist/esm/src/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","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,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"main.js","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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { allMigrations } from './migrations/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Minimal forward-only migration runner for dwn-sql-store.
|
|
4
|
+
*
|
|
5
|
+
* Tracks applied migrations in a `dwn_migrations` table and applies
|
|
6
|
+
* pending migrations in sequential order on each call to `run()`.
|
|
7
|
+
*
|
|
8
|
+
* Design decisions:
|
|
9
|
+
* - Forward-only: no rollback support. Keep migrations simple and additive.
|
|
10
|
+
* - TypeScript migrations: use the Dialect interface for cross-dialect DDL.
|
|
11
|
+
* - Idempotent: calling `run()` on an up-to-date database is a no-op.
|
|
12
|
+
* - Transaction per migration: each migration runs in its own transaction
|
|
13
|
+
* so a failure leaves the database in the last known-good state.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Convenience function to run all DWN store migrations against a database.
|
|
17
|
+
*
|
|
18
|
+
* Creates a `MigrationRunner` with the full set of built-in migrations and
|
|
19
|
+
* runs them. Call this once during application startup, before opening any
|
|
20
|
+
* stores — e.g. in `getDwnConfig()` or equivalent initialization code.
|
|
21
|
+
*
|
|
22
|
+
* @param db - An open Kysely instance connected to the target database.
|
|
23
|
+
* @param dialect - The dialect for the target database.
|
|
24
|
+
* @returns The names of newly applied migrations (empty if already up-to-date).
|
|
25
|
+
*/
|
|
26
|
+
export async function runDwnStoreMigrations(db, dialect) {
|
|
27
|
+
const runner = new MigrationRunner(db, dialect, allMigrations);
|
|
28
|
+
return runner.run();
|
|
29
|
+
}
|
|
30
|
+
export class MigrationRunner {
|
|
31
|
+
#db;
|
|
32
|
+
#dialect;
|
|
33
|
+
#migrations;
|
|
34
|
+
constructor(db, dialect, migrations) {
|
|
35
|
+
this.#db = db;
|
|
36
|
+
this.#dialect = dialect;
|
|
37
|
+
this.#migrations = migrations;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Ensure the `dwn_migrations` tracking table exists, then apply any
|
|
41
|
+
* pending migrations in order. Returns the names of newly applied migrations.
|
|
42
|
+
*/
|
|
43
|
+
async run() {
|
|
44
|
+
await this.#ensureMigrationTable();
|
|
45
|
+
const applied = await this.#getAppliedMigrations();
|
|
46
|
+
const appliedSet = new Set(applied);
|
|
47
|
+
const pending = this.#migrations.filter((m) => !appliedSet.has(m.name));
|
|
48
|
+
const newlyApplied = [];
|
|
49
|
+
for (const migration of pending) {
|
|
50
|
+
await this.#applyMigration(migration);
|
|
51
|
+
newlyApplied.push(migration.name);
|
|
52
|
+
}
|
|
53
|
+
return newlyApplied;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Create the `dwn_migrations` table if it does not already exist.
|
|
57
|
+
*/
|
|
58
|
+
async #ensureMigrationTable() {
|
|
59
|
+
const exists = await this.#dialect.hasTable(this.#db, 'dwn_migrations');
|
|
60
|
+
if (exists) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
await this.#db.schema
|
|
64
|
+
.createTable('dwn_migrations')
|
|
65
|
+
.ifNotExists()
|
|
66
|
+
.addColumn('name', 'varchar(255)', (col) => col.primaryKey().notNull())
|
|
67
|
+
.addColumn('appliedAt', 'varchar(30)', (col) => col.notNull())
|
|
68
|
+
.execute();
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get the list of migration names that have already been applied.
|
|
72
|
+
*/
|
|
73
|
+
async #getAppliedMigrations() {
|
|
74
|
+
const rows = await this.#db
|
|
75
|
+
.selectFrom('dwn_migrations')
|
|
76
|
+
.select('name')
|
|
77
|
+
.orderBy('name', 'asc')
|
|
78
|
+
.execute();
|
|
79
|
+
return rows.map((r) => r.name);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Apply a single migration within a transaction and record it.
|
|
83
|
+
*/
|
|
84
|
+
async #applyMigration(migration) {
|
|
85
|
+
await this.#db.transaction().execute(async (trx) => {
|
|
86
|
+
// Run the migration
|
|
87
|
+
await migration.up(trx, this.#dialect);
|
|
88
|
+
// Record it as applied
|
|
89
|
+
await trx
|
|
90
|
+
.insertInto('dwn_migrations')
|
|
91
|
+
.values({
|
|
92
|
+
name: migration.name,
|
|
93
|
+
appliedAt: new Date().toISOString(),
|
|
94
|
+
})
|
|
95
|
+
.execute();
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=migration-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-runner.js","sourceRoot":"","sources":["../../../src/migration-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { sql } from 'kysely';
|
|
2
|
+
/**
|
|
3
|
+
* Baseline migration: captures the schema as of the pre-migration era.
|
|
4
|
+
*
|
|
5
|
+
* For existing databases that already have these tables, this migration is
|
|
6
|
+
* detected as "already applied" during the adoption bootstrap (see MigrationRunner).
|
|
7
|
+
* For new databases, this creates the full initial schema.
|
|
8
|
+
*/
|
|
9
|
+
export const migration001InitialSchema = {
|
|
10
|
+
name: '001-initial-schema',
|
|
11
|
+
async up(db, dialect) {
|
|
12
|
+
// ─── messageStoreMessages ───────────────────────────────────────────
|
|
13
|
+
if (!(await dialect.hasTable(db, 'messageStoreMessages'))) {
|
|
14
|
+
let table = db.schema
|
|
15
|
+
.createTable('messageStoreMessages')
|
|
16
|
+
.ifNotExists()
|
|
17
|
+
.addColumn('tenant', 'varchar(255)', (col) => col.notNull())
|
|
18
|
+
.addColumn('messageCid', 'varchar(60)', (col) => col.notNull())
|
|
19
|
+
.addColumn('interface', 'varchar(20)')
|
|
20
|
+
.addColumn('method', 'varchar(20)')
|
|
21
|
+
.addColumn('recordId', 'varchar(60)')
|
|
22
|
+
.addColumn('entryId', 'varchar(60)')
|
|
23
|
+
.addColumn('parentId', 'varchar(60)')
|
|
24
|
+
.addColumn('protocol', 'varchar(200)')
|
|
25
|
+
.addColumn('protocolPath', 'varchar(200)')
|
|
26
|
+
.addColumn('contextId', 'varchar(600)')
|
|
27
|
+
.addColumn('schema', 'varchar(200)')
|
|
28
|
+
.addColumn('author', 'varchar(255)')
|
|
29
|
+
.addColumn('recipient', 'varchar(255)')
|
|
30
|
+
.addColumn('messageTimestamp', 'varchar(30)')
|
|
31
|
+
.addColumn('dateCreated', 'varchar(30)')
|
|
32
|
+
.addColumn('datePublished', 'varchar(30)')
|
|
33
|
+
.addColumn('isLatestBaseState', 'boolean')
|
|
34
|
+
.addColumn('published', 'boolean')
|
|
35
|
+
.addColumn('prune', 'boolean')
|
|
36
|
+
.addColumn('dataFormat', 'varchar(30)')
|
|
37
|
+
.addColumn('dataCid', 'varchar(60)')
|
|
38
|
+
.addColumn('dataSize', 'integer')
|
|
39
|
+
.addColumn('encodedData', 'text')
|
|
40
|
+
.addColumn('attester', 'text')
|
|
41
|
+
.addColumn('permissionGrantId', 'varchar(60)');
|
|
42
|
+
table = dialect.addAutoIncrementingColumn(table, 'id', (col) => col.primaryKey());
|
|
43
|
+
table = dialect.addBlobColumn(table, 'encodedMessageBytes', (col) => col.notNull());
|
|
44
|
+
await table.execute();
|
|
45
|
+
await db.schema.createIndex('index_tenant_messageCid')
|
|
46
|
+
.on('messageStoreMessages').columns(['tenant', 'messageCid']).unique().execute();
|
|
47
|
+
const indexes = [
|
|
48
|
+
['tenant', 'recordId'],
|
|
49
|
+
['tenant', 'entryId'],
|
|
50
|
+
['tenant', 'parentId'],
|
|
51
|
+
['tenant', 'protocol', 'published', 'messageTimestamp'],
|
|
52
|
+
['tenant', 'interface'],
|
|
53
|
+
['tenant', 'permissionGrantId'],
|
|
54
|
+
['tenant', 'dateCreated'],
|
|
55
|
+
['tenant', 'datePublished'],
|
|
56
|
+
];
|
|
57
|
+
for (const cols of indexes) {
|
|
58
|
+
await db.schema.createIndex('index_' + cols.join('_'))
|
|
59
|
+
.on('messageStoreMessages').columns(cols).execute();
|
|
60
|
+
}
|
|
61
|
+
// MySQL needs prefix length for contextId
|
|
62
|
+
if (dialect.name === 'MySQL') {
|
|
63
|
+
await sql `CREATE INDEX index_tenant_contextId_messageTimestamp
|
|
64
|
+
ON ${sql.table('messageStoreMessages')} (tenant, contextId(480), messageTimestamp)`
|
|
65
|
+
.execute(db);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
await db.schema.createIndex('index_tenant_contextId_messageTimestamp')
|
|
69
|
+
.on('messageStoreMessages').columns(['tenant', 'contextId', 'messageTimestamp']).execute();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// ─── messageStoreRecordsTags ─────────────────────────────────────────
|
|
73
|
+
if (!(await dialect.hasTable(db, 'messageStoreRecordsTags'))) {
|
|
74
|
+
let table = db.schema
|
|
75
|
+
.createTable('messageStoreRecordsTags')
|
|
76
|
+
.ifNotExists()
|
|
77
|
+
.addColumn('tag', 'varchar(30)', (col) => col.notNull())
|
|
78
|
+
.addColumn('valueString', 'varchar(200)')
|
|
79
|
+
.addColumn('valueNumber', 'decimal');
|
|
80
|
+
table = dialect.addAutoIncrementingColumn(table, 'id', (col) => col.primaryKey());
|
|
81
|
+
table = dialect.addReferencedColumn(table, 'messageStoreRecordsTags', 'messageInsertId', 'integer', 'messageStoreMessages', 'id', 'cascade');
|
|
82
|
+
await table.execute();
|
|
83
|
+
const tagIndexes = [
|
|
84
|
+
['messageInsertId'],
|
|
85
|
+
['tag', 'valueString'],
|
|
86
|
+
['tag', 'valueNumber'],
|
|
87
|
+
];
|
|
88
|
+
for (const cols of tagIndexes) {
|
|
89
|
+
await db.schema.createIndex('index_' + cols.join('_'))
|
|
90
|
+
.on('messageStoreRecordsTags').columns(cols).execute();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// ─── dataStore ──────────────────────────────────────────────────────
|
|
94
|
+
if (!(await dialect.hasTable(db, 'dataStore'))) {
|
|
95
|
+
let table = db.schema
|
|
96
|
+
.createTable('dataStore')
|
|
97
|
+
.ifNotExists()
|
|
98
|
+
.addColumn('tenant', 'varchar(255)', (col) => col.notNull())
|
|
99
|
+
.addColumn('recordId', 'varchar(60)', (col) => col.notNull())
|
|
100
|
+
.addColumn('dataCid', 'varchar(60)', (col) => col.notNull());
|
|
101
|
+
table = dialect.addAutoIncrementingColumn(table, 'id', (col) => col.primaryKey());
|
|
102
|
+
table = dialect.addBlobColumn(table, 'data', (col) => col.notNull());
|
|
103
|
+
await table.execute();
|
|
104
|
+
await db.schema.createIndex('tenant_recordId_dataCid')
|
|
105
|
+
.on('dataStore').columns(['tenant', 'recordId', 'dataCid']).unique().execute();
|
|
106
|
+
}
|
|
107
|
+
// ─── resumableTasks ─────────────────────────────────────────────────
|
|
108
|
+
if (!(await dialect.hasTable(db, 'resumableTasks'))) {
|
|
109
|
+
await db.schema
|
|
110
|
+
.createTable('resumableTasks')
|
|
111
|
+
.ifNotExists()
|
|
112
|
+
.addColumn('id', 'varchar(255)', (col) => col.primaryKey())
|
|
113
|
+
.addColumn('task', 'text')
|
|
114
|
+
.addColumn('timeout', 'bigint')
|
|
115
|
+
.addColumn('retryCount', 'integer')
|
|
116
|
+
.execute();
|
|
117
|
+
await db.schema.createIndex('index_timeout')
|
|
118
|
+
.on('resumableTasks').column('timeout').execute();
|
|
119
|
+
}
|
|
120
|
+
// ─── stateIndexNodes ────────────────────────────────────────────────
|
|
121
|
+
if (!(await dialect.hasTable(db, 'stateIndexNodes'))) {
|
|
122
|
+
await db.schema
|
|
123
|
+
.createTable('stateIndexNodes')
|
|
124
|
+
.ifNotExists()
|
|
125
|
+
.addColumn('tenant', 'varchar(255)', (col) => col.notNull())
|
|
126
|
+
.addColumn('scope', 'varchar(200)', (col) => col.notNull())
|
|
127
|
+
.addColumn('nodeHash', 'varchar(64)', (col) => col.notNull())
|
|
128
|
+
.addColumn('nodeType', 'varchar(10)', (col) => col.notNull())
|
|
129
|
+
.addColumn('leftHash', 'varchar(64)')
|
|
130
|
+
.addColumn('rightHash', 'varchar(64)')
|
|
131
|
+
.addColumn('leafKeyHash', 'varchar(64)')
|
|
132
|
+
.addColumn('leafValueCid', 'varchar(60)')
|
|
133
|
+
.execute();
|
|
134
|
+
await db.schema.createIndex('index_stateIndexNodes_tenant_scope_nodeHash')
|
|
135
|
+
.on('stateIndexNodes').columns(['tenant', 'scope', 'nodeHash']).execute();
|
|
136
|
+
}
|
|
137
|
+
// ─── stateIndexRoots ────────────────────────────────────────────────
|
|
138
|
+
if (!(await dialect.hasTable(db, 'stateIndexRoots'))) {
|
|
139
|
+
await db.schema
|
|
140
|
+
.createTable('stateIndexRoots')
|
|
141
|
+
.ifNotExists()
|
|
142
|
+
.addColumn('tenant', 'varchar(255)', (col) => col.notNull())
|
|
143
|
+
.addColumn('scope', 'varchar(200)', (col) => col.notNull())
|
|
144
|
+
.addColumn('rootHash', 'varchar(64)', (col) => col.notNull())
|
|
145
|
+
.execute();
|
|
146
|
+
await db.schema.createIndex('index_stateIndexRoots_tenant_scope')
|
|
147
|
+
.on('stateIndexRoots').columns(['tenant', 'scope']).execute();
|
|
148
|
+
}
|
|
149
|
+
// ─── stateIndexMeta ─────────────────────────────────────────────────
|
|
150
|
+
if (!(await dialect.hasTable(db, 'stateIndexMeta'))) {
|
|
151
|
+
await db.schema
|
|
152
|
+
.createTable('stateIndexMeta')
|
|
153
|
+
.ifNotExists()
|
|
154
|
+
.addColumn('tenant', 'varchar(255)', (col) => col.notNull())
|
|
155
|
+
.addColumn('messageCid', 'varchar(60)', (col) => col.notNull())
|
|
156
|
+
.addColumn('protocol', 'varchar(200)')
|
|
157
|
+
.execute();
|
|
158
|
+
await db.schema.createIndex('index_stateIndexMeta_tenant_messageCid')
|
|
159
|
+
.on('stateIndexMeta').columns(['tenant', 'messageCid']).execute();
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=001-initial-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"001-initial-schema.js","sourceRoot":"","sources":["../../../../src/migrations/001-initial-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { sql } from 'kysely';
|
|
2
|
+
/**
|
|
3
|
+
* Migration 002: Content-addressed DataStore with deduplication.
|
|
4
|
+
*
|
|
5
|
+
* Replaces the monolithic `dataStore` table (which stores entire blobs per
|
|
6
|
+
* tenant+recordId+dataCid) with two tables that enable whole-file dedup:
|
|
7
|
+
*
|
|
8
|
+
* - `dataRefs`: reference table linking (tenant, recordId) to a dataCid.
|
|
9
|
+
* Multiple tenant/record pairs can reference the same dataCid. Includes
|
|
10
|
+
* `dataSize` for efficient size queries (fixes the existing admin store bug).
|
|
11
|
+
*
|
|
12
|
+
* - `dataBlocks`: content storage table keyed by (rootDataCid, blockCid).
|
|
13
|
+
* Stores individual ~256KB DAG-PB blocks produced by ipfs-unixfs-importer.
|
|
14
|
+
* Content is shared across all references to the same dataCid.
|
|
15
|
+
*
|
|
16
|
+
* Data migration strategy:
|
|
17
|
+
* - For each row in the old `dataStore`, insert a ref into `dataRefs` and a
|
|
18
|
+
* single block into `dataBlocks` with blockCid = dataCid (treating the
|
|
19
|
+
* existing assembled blob as one block). This is a safe migration because
|
|
20
|
+
* the new DataStoreSql code will re-chunk via ipfs-unixfs-importer on the
|
|
21
|
+
* next write. Reads of migrated data use a fast path that detects the
|
|
22
|
+
* single-block case and returns the data directly without the exporter.
|
|
23
|
+
*
|
|
24
|
+
* NOTE: For large databases, the data migration may take significant time.
|
|
25
|
+
* The migration runs in a single transaction for atomicity.
|
|
26
|
+
*/
|
|
27
|
+
export const migration002ContentAddressedDatastore = {
|
|
28
|
+
name: '002-content-addressed-datastore',
|
|
29
|
+
async up(db, dialect) {
|
|
30
|
+
// ─── Create dataRefs table ──────────────────────────────────────────
|
|
31
|
+
if (!(await dialect.hasTable(db, 'dataRefs'))) {
|
|
32
|
+
await db.schema
|
|
33
|
+
.createTable('dataRefs')
|
|
34
|
+
.ifNotExists()
|
|
35
|
+
.addColumn('tenant', 'varchar(255)', (col) => col.notNull())
|
|
36
|
+
.addColumn('recordId', 'varchar(60)', (col) => col.notNull())
|
|
37
|
+
.addColumn('dataCid', 'varchar(60)', (col) => col.notNull())
|
|
38
|
+
.addColumn('dataSize', 'bigint', (col) => col.notNull())
|
|
39
|
+
.execute();
|
|
40
|
+
// Unique constraint: one ref per (tenant, recordId, dataCid)
|
|
41
|
+
await db.schema.createIndex('index_dataRefs_tenant_recordId_dataCid')
|
|
42
|
+
.on('dataRefs').columns(['tenant', 'recordId', 'dataCid']).unique().execute();
|
|
43
|
+
// Index for dataCid lookups (refcount queries, GC)
|
|
44
|
+
await db.schema.createIndex('index_dataRefs_dataCid')
|
|
45
|
+
.on('dataRefs').column('dataCid').execute();
|
|
46
|
+
// Index for tenant-scoped size aggregation (admin queries)
|
|
47
|
+
await db.schema.createIndex('index_dataRefs_tenant')
|
|
48
|
+
.on('dataRefs').column('tenant').execute();
|
|
49
|
+
}
|
|
50
|
+
// ─── Create dataBlocks table ────────────────────────────────────────
|
|
51
|
+
if (!(await dialect.hasTable(db, 'dataBlocks'))) {
|
|
52
|
+
let table = db.schema
|
|
53
|
+
.createTable('dataBlocks')
|
|
54
|
+
.ifNotExists()
|
|
55
|
+
.addColumn('rootDataCid', 'varchar(60)', (col) => col.notNull())
|
|
56
|
+
.addColumn('blockCid', 'varchar(60)', (col) => col.notNull());
|
|
57
|
+
table = dialect.addBlobColumn(table, 'data', (col) => col.notNull());
|
|
58
|
+
await table.execute();
|
|
59
|
+
// Primary-like unique index on (rootDataCid, blockCid)
|
|
60
|
+
await db.schema.createIndex('index_dataBlocks_rootDataCid_blockCid')
|
|
61
|
+
.on('dataBlocks').columns(['rootDataCid', 'blockCid']).unique().execute();
|
|
62
|
+
}
|
|
63
|
+
// ─── Migrate data from old dataStore table ──────────────────────────
|
|
64
|
+
const oldTableExists = await dialect.hasTable(db, 'dataStore');
|
|
65
|
+
if (oldTableExists) {
|
|
66
|
+
// Check if old table has any data to migrate
|
|
67
|
+
const countResult = await sql `SELECT COUNT(*) as cnt FROM ${sql.table('dataStore')}`
|
|
68
|
+
.execute(db);
|
|
69
|
+
const count = Number(countResult.rows[0]?.cnt ?? 0);
|
|
70
|
+
if (count > 0) {
|
|
71
|
+
// Column references must be quoted to preserve camelCase in PostgreSQL.
|
|
72
|
+
const recordId = sql.ref('recordId');
|
|
73
|
+
const dataCid = sql.ref('dataCid');
|
|
74
|
+
const dataSize = sql.ref('dataSize');
|
|
75
|
+
const rootDataCid = sql.ref('rootDataCid');
|
|
76
|
+
const blockCid = sql.ref('blockCid');
|
|
77
|
+
// Migrate refs: insert into dataRefs from dataStore
|
|
78
|
+
// Use LENGTH/OCTET_LENGTH depending on dialect for blob size
|
|
79
|
+
if (dialect.name === 'SQLite') {
|
|
80
|
+
await sql `
|
|
81
|
+
INSERT INTO ${sql.table('dataRefs')} (tenant, ${recordId}, ${dataCid}, ${dataSize})
|
|
82
|
+
SELECT tenant, ${recordId}, ${dataCid}, LENGTH(data)
|
|
83
|
+
FROM ${sql.table('dataStore')}
|
|
84
|
+
`.execute(db);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// PostgreSQL uses OCTET_LENGTH for bytea, MySQL uses LENGTH for blob
|
|
88
|
+
await sql `
|
|
89
|
+
INSERT INTO ${sql.table('dataRefs')} (tenant, ${recordId}, ${dataCid}, ${dataSize})
|
|
90
|
+
SELECT tenant, ${recordId}, ${dataCid}, OCTET_LENGTH(data)
|
|
91
|
+
FROM ${sql.table('dataStore')}
|
|
92
|
+
`.execute(db);
|
|
93
|
+
}
|
|
94
|
+
// Migrate blocks: treat each existing blob as a single block
|
|
95
|
+
// where blockCid = dataCid (the root CID is the only block)
|
|
96
|
+
// Skip duplicates: only insert blocks for dataCids not already in dataBlocks
|
|
97
|
+
if (dialect.name === 'MySQL') {
|
|
98
|
+
await sql `
|
|
99
|
+
INSERT IGNORE INTO ${sql.table('dataBlocks')} (${rootDataCid}, ${blockCid}, data)
|
|
100
|
+
SELECT ${dataCid}, ${dataCid}, data
|
|
101
|
+
FROM ${sql.table('dataStore')}
|
|
102
|
+
`.execute(db);
|
|
103
|
+
}
|
|
104
|
+
else if (dialect.name === 'SQLite') {
|
|
105
|
+
await sql `
|
|
106
|
+
INSERT OR IGNORE INTO ${sql.table('dataBlocks')} (${rootDataCid}, ${blockCid}, data)
|
|
107
|
+
SELECT ${dataCid}, ${dataCid}, data
|
|
108
|
+
FROM ${sql.table('dataStore')}
|
|
109
|
+
`.execute(db);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// PostgreSQL
|
|
113
|
+
await sql `
|
|
114
|
+
INSERT INTO ${sql.table('dataBlocks')} (${rootDataCid}, ${blockCid}, data)
|
|
115
|
+
SELECT ${dataCid}, ${dataCid}, data
|
|
116
|
+
FROM ${sql.table('dataStore')}
|
|
117
|
+
ON CONFLICT (${rootDataCid}, ${blockCid}) DO NOTHING
|
|
118
|
+
`.execute(db);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Drop the old table after migration
|
|
122
|
+
await db.schema.dropTable('dataStore').execute();
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=002-content-addressed-datastore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"002-content-addressed-datastore.js","sourceRoot":"","sources":["../../../../src/migrations/002-content-addressed-datastore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { migration001InitialSchema } from './001-initial-schema.js';
|
|
2
|
+
import { migration002ContentAddressedDatastore } from './002-content-addressed-datastore.js';
|
|
3
|
+
/**
|
|
4
|
+
* All migrations in sequential order. The MigrationRunner applies them
|
|
5
|
+
* in array order, skipping any that have already been recorded.
|
|
6
|
+
*/
|
|
7
|
+
export const allMigrations = [
|
|
8
|
+
migration001InitialSchema,
|
|
9
|
+
migration002ContentAddressedDatastore,
|
|
10
|
+
];
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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;AAE7F;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAgB;IACxC,yBAAyB;IACzB,qCAAqC;CACtC,CAAC"}
|
|
@@ -118,7 +118,8 @@ export class StateIndexSql {
|
|
|
118
118
|
// Insert into the global tree
|
|
119
119
|
const globalSmt = await this.getGlobalTree(tenant);
|
|
120
120
|
await globalSmt.insert(messageCid);
|
|
121
|
-
//
|
|
121
|
+
// Insert into the protocol-scoped tree if the message has a protocol (e.g. RecordsWrite).
|
|
122
|
+
// Non-record messages like ProtocolsConfigure do not have a protocol.
|
|
122
123
|
const protocol = indexes.protocol;
|
|
123
124
|
if (protocol !== undefined) {
|
|
124
125
|
const protoSmt = await this.getProtocolTree(tenant, protocol);
|
|
@@ -152,8 +153,8 @@ export class StateIndexSql {
|
|
|
152
153
|
.executeTakeFirst();
|
|
153
154
|
// Delete from global tree
|
|
154
155
|
await globalSmt.delete(messageCid);
|
|
155
|
-
// Delete from protocol tree if
|
|
156
|
-
if (meta
|
|
156
|
+
// Delete from protocol tree if the message had a protocol
|
|
157
|
+
if (meta && meta.protocol !== null) {
|
|
157
158
|
const protoSmt = await this.getProtocolTree(tenant, meta.protocol);
|
|
158
159
|
await protoSmt.delete(messageCid);
|
|
159
160
|
}
|
|
@@ -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,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,OAAO,aAAa;IACxB,QAAQ,CAAU;IAClB,GAAG,GAAmC,IAAI,CAAC;IAE3C;;;;OAIG;IACH,YAAY,GAA2C,IAAI,GAAG,EAAE,CAAC;IAEjE;;;OAGG;IACH,cAAc,GAA2C,IAAI,GAAG,EAAE,CAAC;IAEnE,YAAY,OAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,IAAI,MAAM,CAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEnE,oDAAoD;QACpD,MAAM,iBAAiB,EAAE,CAAC;QAE1B,yEAAyE;QACzE,MAAM,cAAc,GAAG,iBAAiB,CAAC;QACzC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAChF,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM;iBAClB,WAAW,CAAC,cAAc,CAAC;iBAC3B,WAAW,EAAE;iBACb,SAAS,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;iBAC3D,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;iBAC1D,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;iBAC5D,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;iBAC5D,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC;iBACpC,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC;iBACrC,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;iBACvC,SAAS,CAAC,cAAc,EAAE,aAAa,CAAC;iBACxC,OAAO,EAAE,CAAC;YAEb,0EAA0E;YAC1E,sEAAsE;YACtE,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM;iBAClB,WAAW,CAAC,6CAA6C,CAAC;iBAC1D,EAAE,CAAC,cAAc,CAAC;iBAClB,OAAO,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;iBACxC,OAAO,EAAE,CAAC;QACf,CAAC;QAED,yEAAyE;QACzE,MAAM,cAAc,GAAG,iBAAiB,CAAC;QACzC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAChF,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM;iBAClB,WAAW,CAAC,cAAc,CAAC;iBAC3B,WAAW,EAAE;iBACb,SAAS,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;iBAC3D,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;iBAC1D,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;iBAC5D,OAAO,EAAE,CAAC;YAEb,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM;iBAClB,WAAW,CAAC,oCAAoC,CAAC;iBACjD,EAAE,CAAC,cAAc,CAAC;iBAClB,OAAO,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;iBAC5B,OAAO,EAAE,CAAC;QACf,CAAC;QAED,yEAAyE;QACzE,MAAM,aAAa,GAAG,gBAAgB,CAAC;QACvC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC9E,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM;iBAClB,WAAW,CAAC,aAAa,CAAC;iBAC1B,WAAW,EAAE;iBACb,SAAS,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;iBAC3D,SAAS,CAAC,YAAY,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;iBAC9D,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC;iBACrC,OAAO,EAAE,CAAC;YAEb,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM;iBAClB,WAAW,CAAC,wCAAwC,CAAC;iBACrD,EAAE,CAAC,aAAa,CAAC;iBACjB,OAAO,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;iBACjC,OAAO,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACxF,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAE5B,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC;QACvD,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC;QACvD,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,UAAkB,EAAE,OAAkB;QACjE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACzF,CAAC;QAED,8BAA8B;QAC9B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEnC,
|
|
1
|
+
{"version":3,"file":"state-index-sql.js","sourceRoot":"","sources":["../../../src/state-index-sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { DwnDatabaseType } from './types.js';
|
|
2
|
+
import type { Kysely } from 'kysely';
|
|
3
|
+
import type { AbortOptions, AwaitIterable } from 'interface-store';
|
|
4
|
+
import type { Blockstore, Pair } from 'interface-blockstore';
|
|
5
|
+
import { CID } from 'multiformats';
|
|
6
|
+
/**
|
|
7
|
+
* SQL-backed implementation of the `Blockstore` v5 interface, scoped to a
|
|
8
|
+
* single `rootDataCid`. All block operations are constrained to the blocks
|
|
9
|
+
* belonging to this root CID in the `dataBlocks` table.
|
|
10
|
+
*
|
|
11
|
+
* Used by `ipfs-unixfs-importer` (during `put()`) and `ipfs-unixfs-exporter`
|
|
12
|
+
* (during `get()`) to store and retrieve individual DAG-PB blocks.
|
|
13
|
+
*
|
|
14
|
+
* The Kysely instance and database connection are managed externally by
|
|
15
|
+
* `DataStoreSql`. This class does not own the connection lifecycle.
|
|
16
|
+
*/
|
|
17
|
+
export declare class BlockstoreSql implements Blockstore {
|
|
18
|
+
#private;
|
|
19
|
+
constructor(db: Kysely<DwnDatabaseType>, rootDataCid: string);
|
|
20
|
+
open(): Promise<void>;
|
|
21
|
+
close(): Promise<void>;
|
|
22
|
+
put(key: CID, val: Uint8Array, _options?: AbortOptions): Promise<CID>;
|
|
23
|
+
get(key: CID, _options?: AbortOptions): Promise<Uint8Array>;
|
|
24
|
+
has(key: CID, _options?: AbortOptions): Promise<boolean>;
|
|
25
|
+
delete(key: CID, _options?: AbortOptions): Promise<void>;
|
|
26
|
+
isEmpty(_options?: AbortOptions): Promise<boolean>;
|
|
27
|
+
putMany(source: AwaitIterable<Pair>, options?: AbortOptions): AsyncIterable<CID>;
|
|
28
|
+
getMany(source: AwaitIterable<CID>, options?: AbortOptions): AsyncIterable<Pair>;
|
|
29
|
+
getAll(_options?: AbortOptions): AsyncIterable<Pair>;
|
|
30
|
+
deleteMany(source: AwaitIterable<CID>, options?: AbortOptions): AsyncIterable<CID>;
|
|
31
|
+
/**
|
|
32
|
+
* Deletes all blocks for this rootDataCid.
|
|
33
|
+
*/
|
|
34
|
+
clear(): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=blockstore-sql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blockstore-sql.d.ts","sourceRoot":"","sources":["../../../src/blockstore-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC;;;;;;;;;;GAUG;AACH,qBAAa,aAAc,YAAW,UAAU;;gBAIlC,EAAE,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,MAAM;IAK/C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;IAerE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAe3D,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAWxD,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxD,OAAO,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAUhD,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC;IAOhF,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC;IAShF,MAAM,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC;IAepD,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC;IAOjG;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAMpC"}
|