@zintrust/d1-migrator 1.8.8 → 1.9.0
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 +6 -0
- package/dist/cli/DataMigrator.d.ts +4 -0
- package/dist/cli/DataMigrator.d.ts.map +1 -1
- package/dist/cli/DataMigrator.js +31 -2
- package/dist/cli/MigrateToD1Command.d.ts.map +1 -1
- package/dist/cli/MigrateToD1Command.js +19 -3
- package/dist/cli/SchemaAnalyzer.d.ts.map +1 -1
- package/dist/cli/SchemaAnalyzer.js +1 -0
- package/package.json +6 -6
- package/dist/build-manifest.json +0 -179
package/README.md
CHANGED
|
@@ -86,6 +86,12 @@ export D1_TARGET_DB=zintrust-live-test
|
|
|
86
86
|
zin migrate-to-d1
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
+
If your source MySQL or MariaDB server requires SSL/TLS, run:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
DB_SSL=true MIGRATE_TO_D1_SOURCE_SSL=true zin migrate-to-d1
|
|
93
|
+
```
|
|
94
|
+
|
|
89
95
|
The command resolves values in this order: **CLI flag → environment variable → built-in default**.
|
|
90
96
|
|
|
91
97
|
#### Explicit flags
|
|
@@ -66,6 +66,10 @@ export declare const DataMigrator: Readonly<{
|
|
|
66
66
|
getSchemaInfo(_connection: SourceConnection): Promise<{
|
|
67
67
|
tables: TableInfo[];
|
|
68
68
|
}>;
|
|
69
|
+
/**
|
|
70
|
+
* Get target table row count for resumability
|
|
71
|
+
*/
|
|
72
|
+
getTargetRowCount(targetConnection: TargetConnection, tableName: string): Promise<number>;
|
|
69
73
|
/**
|
|
70
74
|
* Migrate single table
|
|
71
75
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataMigrator.d.ts","sourceRoot":"","sources":["../../src/cli/DataMigrator.ts"],"names":[],"mappings":"AACA;;;GAGG;AAWH,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,CAAC,EAAE,eAAe,CAAC,wBAAwB,CAAC,CAAC;IACnE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,GAAG,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACxE,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAgPF;;;GAGG;AACH,eAAO,MAAM,YAAY;IACvB;;OAEG;wBACuB,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsFtE;;OAEG;4BAC2B,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA+BzE;;OAEG;4BAC2B,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyCzE;;OAEG;0CAEiB,gBAAgB,oBAChB,gBAAgB,UAC1B,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC;IAuChB;;OAEG;+BAC8B,gBAAgB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC;IAmBpF;;OAEG;wBAEM,SAAS,oBACE,gBAAgB,oBAChB,gBAAgB,UAC1B,eAAe,GACtB,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"DataMigrator.d.ts","sourceRoot":"","sources":["../../src/cli/DataMigrator.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/DataMigrator.js
CHANGED
|
@@ -364,6 +364,22 @@ export const DataMigrator = Object.freeze({
|
|
|
364
364
|
Logger.info(`Found ${tables.length} tables`);
|
|
365
365
|
return { tables };
|
|
366
366
|
},
|
|
367
|
+
/**
|
|
368
|
+
* Get target table row count for resumability
|
|
369
|
+
*/
|
|
370
|
+
async getTargetRowCount(targetConnection, tableName) {
|
|
371
|
+
if (!targetConnection.adapter)
|
|
372
|
+
return 0;
|
|
373
|
+
try {
|
|
374
|
+
const result = await targetConnection.adapter.query(`SELECT COUNT(*) as count FROM \`${tableName}\``, []);
|
|
375
|
+
const count = result.rows[0]?.['count'];
|
|
376
|
+
return typeof count === 'number' ? count : 0;
|
|
377
|
+
}
|
|
378
|
+
catch {
|
|
379
|
+
// Table might not exist or query failed
|
|
380
|
+
return 0;
|
|
381
|
+
}
|
|
382
|
+
},
|
|
367
383
|
/**
|
|
368
384
|
* Migrate single table
|
|
369
385
|
*/
|
|
@@ -374,9 +390,22 @@ export const DataMigrator = Object.freeze({
|
|
|
374
390
|
try {
|
|
375
391
|
const totalRows = table.rowCount || 0;
|
|
376
392
|
const batchSize = config.batchSize || 1000;
|
|
377
|
-
|
|
393
|
+
// Check if table is already synced for resumability
|
|
394
|
+
const targetRowCount = await DataMigrator.getTargetRowCount(targetConnection, table.name);
|
|
395
|
+
if (targetRowCount >= totalRows) {
|
|
396
|
+
Logger.info(`Table ${table.name} already synced: ${targetRowCount}/${totalRows} rows, skipping`);
|
|
397
|
+
return { rowsMigrated: 0, errors: [] };
|
|
398
|
+
}
|
|
399
|
+
if (targetRowCount > 0) {
|
|
400
|
+
Logger.info(`Table ${table.name} partially synced: ${targetRowCount}/${totalRows} rows, resuming from offset ${targetRowCount}`);
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
Logger.info(`Processing ${totalRows} rows in batches of ${batchSize}`);
|
|
404
|
+
}
|
|
378
405
|
// Process data in chunks sequentially for data integrity
|
|
379
|
-
|
|
406
|
+
// Start from the last synced offset for resumability
|
|
407
|
+
const startOffset = targetRowCount;
|
|
408
|
+
for (let offset = startOffset; offset < totalRows; offset += batchSize) {
|
|
380
409
|
try {
|
|
381
410
|
const chunk = await DataMigrator.readDataChunk(sourceConnection, table.name, offset, batchSize);
|
|
382
411
|
if (chunk.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrateToD1Command.d.ts","sourceRoot":"","sources":["../../src/cli/MigrateToD1Command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,KAAK,EAAE,eAAe,EAA0B,MAAM,UAAU,CAAC;AAOxE,KAAK,iBAAiB,GAAG;IACvB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,IAAI,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B,CAAC;
|
|
1
|
+
{"version":3,"file":"MigrateToD1Command.d.ts","sourceRoot":"","sources":["../../src/cli/MigrateToD1Command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,KAAK,EAAE,eAAe,EAA0B,MAAM,UAAU,CAAC;AAOxE,KAAK,iBAAiB,GAAG;IACvB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,IAAI,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B,CAAC;AAgxBF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,iBA+G/B,CAAC;AAEH;;GAEG;AACH,iBAAe,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAetE;AAED;;GAEG;AACH,iBAAe,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAmGxE;AAED;;GAEG;AACH,iBAAe,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAkGtE;AAED;;GAEG;AACH,iBAAS,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA2BrF;AAGD,eAAO,MAAM,iBAAiB;;;;;EAK5B,CAAC"}
|
|
@@ -166,7 +166,11 @@ const resolveFlag = (options, optionKeys, envKeys) => {
|
|
|
166
166
|
};
|
|
167
167
|
const encodeConnectionSegment = (value) => {
|
|
168
168
|
return encodeURIComponent(value).replace(/[!'()*]/g, (match) => {
|
|
169
|
-
|
|
169
|
+
const codePoint = match.codePointAt(0);
|
|
170
|
+
if (codePoint === undefined) {
|
|
171
|
+
return match;
|
|
172
|
+
}
|
|
173
|
+
return `%${codePoint.toString(16).toUpperCase()}`;
|
|
170
174
|
});
|
|
171
175
|
};
|
|
172
176
|
const decodeConnectionSegment = (value) => {
|
|
@@ -466,7 +470,18 @@ const resolveTargetType = (options) => {
|
|
|
466
470
|
}
|
|
467
471
|
return targetType ?? 'd1';
|
|
468
472
|
};
|
|
469
|
-
const resolveSourceSsl = () => {
|
|
473
|
+
const resolveSourceSsl = (options) => {
|
|
474
|
+
if (readOptionFlag(options, ['source-ssl', 'sourceSsl'])) {
|
|
475
|
+
return true;
|
|
476
|
+
}
|
|
477
|
+
// Directly read from process.env to bypass env loader cache
|
|
478
|
+
const envValue = process.env['MIGRATE_TO_D1_SOURCE_SSL'] ??
|
|
479
|
+
process.env['D1_MIGRATOR_SOURCE_SSL'] ??
|
|
480
|
+
process.env['DB_SSL'];
|
|
481
|
+
if (envValue === 'true' || envValue === '1' || envValue === 'yes' || envValue === 'on') {
|
|
482
|
+
return true;
|
|
483
|
+
}
|
|
484
|
+
// Fallback to env loader for consistency
|
|
470
485
|
return readEnvBool(['MIGRATE_TO_D1_SOURCE_SSL', 'D1_MIGRATOR_SOURCE_SSL', 'DB_SSL']) === true;
|
|
471
486
|
};
|
|
472
487
|
const resolveTargetDatabase = (options) => {
|
|
@@ -490,7 +505,7 @@ const resolveTargetDatabase = (options) => {
|
|
|
490
505
|
const resolveMigrationConfig = (options) => {
|
|
491
506
|
const sourceDriver = resolveSourceDriver(options);
|
|
492
507
|
const sourceConnectionResolution = resolveSourceConnection(options, sourceDriver);
|
|
493
|
-
const sourceSsl = resolveSourceSsl();
|
|
508
|
+
const sourceSsl = resolveSourceSsl(options);
|
|
494
509
|
const targetDatabase = resolveTargetDatabase(options);
|
|
495
510
|
const targetType = resolveTargetType(options);
|
|
496
511
|
const dryRun = resolveFlag(options, ['dry-run', 'dryRun'], ['MIGRATE_TO_D1_DRY_RUN', 'D1_MIGRATOR_DRY_RUN']);
|
|
@@ -534,6 +549,7 @@ export const MigrateToD1Command = BaseCommand.create({
|
|
|
534
549
|
.option('-f, --from <type>', 'Source database type (mysql, postgresql, sqlite, sqlserver)')
|
|
535
550
|
.option('-t, --to <type>', 'Target D1 type (d1, d1-remote)')
|
|
536
551
|
.option('-s, --source-connection <string>', 'Source database connection string')
|
|
552
|
+
.option('--source-ssl', 'Force SSL/TLS for source database connection')
|
|
537
553
|
.option('-d, --target-database <string>', 'Target D1 database name')
|
|
538
554
|
.option('-b, --batch-size <number>', 'Batch size for data migration')
|
|
539
555
|
.option('-c, --checkpoint-interval <number>', 'Checkpoint interval in rows')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaAnalyzer.d.ts","sourceRoot":"","sources":["../../src/cli/SchemaAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,WAAW,EACZ,MAAM,UAAU,CAAC;AAoHlB,MAAM,WAAW,gBAAgB;IAC/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,CACH,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,OAAO,EAAE,GACpB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACtF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAChF,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACzE,qBAAqB,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,IAAI,MAAM,CAAC;IAClB,WAAW,IAAI,OAAO,CAAC;IACvB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACvC;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;8BAC6B;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,EAAE,MAAM,CAAC;QACzB,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;QAChD,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,OAAO,CAAC,cAAc,CAAC;IA4B3B;;OAEG;8BAC6B;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,EAAE,MAAM,CAAC;QACzB,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;QAChD,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"SchemaAnalyzer.d.ts","sourceRoot":"","sources":["../../src/cli/SchemaAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -123,6 +123,7 @@ export const SchemaAnalyzer = Object.freeze({
|
|
|
123
123
|
async extractTables(connection) {
|
|
124
124
|
Logger.info(`Extracting tables from ${connection.driver} database...`);
|
|
125
125
|
Logger.info(`[SchemaAnalyzer] Source connection (redacted): ${redactConnectionString(connection.connectionString)}`);
|
|
126
|
+
Logger.info(`[SchemaAnalyzer] Source SSL enabled: ${connection.sourceSsl === true}`);
|
|
126
127
|
try {
|
|
127
128
|
// Create appropriate adapter based on driver
|
|
128
129
|
let adapter;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zintrust/d1-migrator",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "Resumable database migration toolkit for moving data to Cloudflare D1 with ZinTrust.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
"prepublishOnly": "npm run build"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@zintrust/db-
|
|
44
|
-
"@zintrust/db-
|
|
45
|
-
"@zintrust/db-
|
|
46
|
-
"@zintrust/db-
|
|
47
|
-
"@zintrust/db-
|
|
43
|
+
"@zintrust/db-d1": "^1.8.0",
|
|
44
|
+
"@zintrust/db-mysql": "^1.8.9",
|
|
45
|
+
"@zintrust/db-postgres": "^1.8.0",
|
|
46
|
+
"@zintrust/db-sqlite": "^1.8.0",
|
|
47
|
+
"@zintrust/db-sqlserver": "^1.8.0"
|
|
48
48
|
}
|
|
49
49
|
}
|
package/dist/build-manifest.json
DELETED
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@zintrust/d1-migrator",
|
|
3
|
-
"version": "1.7.1",
|
|
4
|
-
"buildDate": "2026-05-01T05:26:52.011Z",
|
|
5
|
-
"buildEnvironment": {
|
|
6
|
-
"node": "v22.22.1",
|
|
7
|
-
"platform": "darwin",
|
|
8
|
-
"arch": "arm64"
|
|
9
|
-
},
|
|
10
|
-
"git": {
|
|
11
|
-
"commit": "ef4e9bec",
|
|
12
|
-
"branch": "release"
|
|
13
|
-
},
|
|
14
|
-
"package": {
|
|
15
|
-
"engines": {
|
|
16
|
-
"node": ">=20.0.0"
|
|
17
|
-
},
|
|
18
|
-
"dependencies": [
|
|
19
|
-
"@zintrust/db-mysql",
|
|
20
|
-
"@zintrust/db-postgres",
|
|
21
|
-
"@zintrust/db-sqlite",
|
|
22
|
-
"@zintrust/db-sqlserver",
|
|
23
|
-
"@zintrust/db-d1"
|
|
24
|
-
],
|
|
25
|
-
"peerDependencies": [
|
|
26
|
-
"@zintrust/core"
|
|
27
|
-
]
|
|
28
|
-
},
|
|
29
|
-
"files": {
|
|
30
|
-
"build-manifest.json": {
|
|
31
|
-
"size": 5807,
|
|
32
|
-
"sha256": "eef551e3974318b0181db8f77c5abd60957797f792babcd8e365bd37f89b366a"
|
|
33
|
-
},
|
|
34
|
-
"cli/DataMigrator.d.ts": {
|
|
35
|
-
"size": 3355,
|
|
36
|
-
"sha256": "f7ce0a06282ab0d08a90cca9b0d2cc4ec5a8df91c9e65425aaf342ef005b5af6"
|
|
37
|
-
},
|
|
38
|
-
"cli/DataMigrator.d.ts.map": {
|
|
39
|
-
"size": 2120,
|
|
40
|
-
"sha256": "be301eb96726a2611e9f739c5f57b536b24243413ad100effc7afce905d83e81"
|
|
41
|
-
},
|
|
42
|
-
"cli/DataMigrator.js": {
|
|
43
|
-
"size": 18540,
|
|
44
|
-
"sha256": "8b0d02707f5d14a458b9a666ef8a27051e32396d61067896dcd486cc680506d2"
|
|
45
|
-
},
|
|
46
|
-
"cli/MigrateToD1Command.d.ts": {
|
|
47
|
-
"size": 1589,
|
|
48
|
-
"sha256": "c1bffb405e91cc1ff61507a51bf80baaeb89ce5a1a98ae591ecaa8e35450a8d2"
|
|
49
|
-
},
|
|
50
|
-
"cli/MigrateToD1Command.d.ts.map": {
|
|
51
|
-
"size": 1233,
|
|
52
|
-
"sha256": "884676d4ce94415255ec848e8466efa2d69265c3ad015b4b287fea7f4fc16a37"
|
|
53
|
-
},
|
|
54
|
-
"cli/MigrateToD1Command.js": {
|
|
55
|
-
"size": 28588,
|
|
56
|
-
"sha256": "07dce8e69a7a328bcf058fd002d468998593d46ae09cc00913cbb512486f4cfd"
|
|
57
|
-
},
|
|
58
|
-
"cli/ProgressTracker.d.ts": {
|
|
59
|
-
"size": 942,
|
|
60
|
-
"sha256": "653253439befb42b452a743588253f6156bb8af1953eadc67f27a4a7ab8cff3d"
|
|
61
|
-
},
|
|
62
|
-
"cli/ProgressTracker.d.ts.map": {
|
|
63
|
-
"size": 467,
|
|
64
|
-
"sha256": "7d38bb24d3744f54059534f4d3c935ac21e1e3ed54e2b4d68af6326e5893a3a0"
|
|
65
|
-
},
|
|
66
|
-
"cli/ProgressTracker.js": {
|
|
67
|
-
"size": 3243,
|
|
68
|
-
"sha256": "2bc54ddac7783047dc71b46cdcafabb9b3a8938f35e352328caf2fa32c6ef500"
|
|
69
|
-
},
|
|
70
|
-
"cli/SchemaAnalyzer.d.ts": {
|
|
71
|
-
"size": 4476,
|
|
72
|
-
"sha256": "effe7d9d164ce65815a31b09ab63a3e376a1fd5bdbc0fd6e7598e8895acc08de"
|
|
73
|
-
},
|
|
74
|
-
"cli/SchemaAnalyzer.d.ts.map": {
|
|
75
|
-
"size": 2707,
|
|
76
|
-
"sha256": "24236361782ae02bfdb1d12f05ae8c4ad7a0abc27aad23a0ae50e6f05477e4e1"
|
|
77
|
-
},
|
|
78
|
-
"cli/SchemaAnalyzer.js": {
|
|
79
|
-
"size": 24687,
|
|
80
|
-
"sha256": "0155f90ab2490ef4fe590f2ab054dd9579555802d761e8e2f2f426a8efad90cd"
|
|
81
|
-
},
|
|
82
|
-
"index.d.ts": {
|
|
83
|
-
"size": 1913,
|
|
84
|
-
"sha256": "1cc13fa32042969f2f426fb3c2971049df657bdbbda8275562ab72395fd2426b"
|
|
85
|
-
},
|
|
86
|
-
"index.d.ts.map": {
|
|
87
|
-
"size": 1564,
|
|
88
|
-
"sha256": "685c4e8b49c8a86f53feacb7c42e3b8268b9402ae3ae7e47cb46e7b78a9bf78b"
|
|
89
|
-
},
|
|
90
|
-
"index.js": {
|
|
91
|
-
"size": 1262,
|
|
92
|
-
"sha256": "7c4c60fe23d200e4b6eab36670b70d916e96dcd572d09c5ed386a4fc26c7dfab"
|
|
93
|
-
},
|
|
94
|
-
"register.d.ts": {
|
|
95
|
-
"size": 159,
|
|
96
|
-
"sha256": "e60a21d17e51095a4a8a9c4a2fae45c902305635998782b8194eb968d8083cb2"
|
|
97
|
-
},
|
|
98
|
-
"register.d.ts.map": {
|
|
99
|
-
"size": 211,
|
|
100
|
-
"sha256": "6743ba50c90440882096f5eaf09a2fff4c901ba238c604d2240ba072b5754632"
|
|
101
|
-
},
|
|
102
|
-
"register.js": {
|
|
103
|
-
"size": 857,
|
|
104
|
-
"sha256": "949f1d93c92a2b9ec1e7d388b4723f8f7012e57eaded61589d205709f0f7a5fe"
|
|
105
|
-
},
|
|
106
|
-
"schema/SchemaBuilder.d.ts": {
|
|
107
|
-
"size": 1443,
|
|
108
|
-
"sha256": "46c568eef17ab0b0b1a59cfef0bf06f85d06de6e6d5479429e6a566b43ec87a7"
|
|
109
|
-
},
|
|
110
|
-
"schema/SchemaBuilder.d.ts.map": {
|
|
111
|
-
"size": 670,
|
|
112
|
-
"sha256": "6ee501ff68e7d23fbb14f3f24167606346826392c8782153920b5d27cbb3348f"
|
|
113
|
-
},
|
|
114
|
-
"schema/SchemaBuilder.js": {
|
|
115
|
-
"size": 6087,
|
|
116
|
-
"sha256": "fc6ac1668fde7bf5f4d54492d41e7004ccde0a60cc93197ad228d5675248dd01"
|
|
117
|
-
},
|
|
118
|
-
"schema/TypeConverter.d.ts": {
|
|
119
|
-
"size": 989,
|
|
120
|
-
"sha256": "cca9b405c198b91062c4f44bba7acb0a36dedbca0cb3f523ba576eb5fa375efd"
|
|
121
|
-
},
|
|
122
|
-
"schema/TypeConverter.d.ts.map": {
|
|
123
|
-
"size": 431,
|
|
124
|
-
"sha256": "cef867ebdec5573d7199095d074e55d4222de7516eabaff1913ea377abca6a71"
|
|
125
|
-
},
|
|
126
|
-
"schema/TypeConverter.js": {
|
|
127
|
-
"size": 5844,
|
|
128
|
-
"sha256": "fd108420aaa34f06d970a53557f9ddf3942866122bb93053b32fd93836682776"
|
|
129
|
-
},
|
|
130
|
-
"schema/Validator.d.ts": {
|
|
131
|
-
"size": 2129,
|
|
132
|
-
"sha256": "3970191b0e8e2d1e19ae60303d2d549cc7a4cc2c7ec24b1b41878adb68354146"
|
|
133
|
-
},
|
|
134
|
-
"schema/Validator.d.ts.map": {
|
|
135
|
-
"size": 1206,
|
|
136
|
-
"sha256": "f6c526a78303423112e7916093bbeed2d7355ab5db5f74ce2c84e56ca9e82837"
|
|
137
|
-
},
|
|
138
|
-
"schema/Validator.js": {
|
|
139
|
-
"size": 8868,
|
|
140
|
-
"sha256": "e8349ddbbf3c969468d741e634a50422847052f21afa38e63493853273945e6e"
|
|
141
|
-
},
|
|
142
|
-
"types.d.ts": {
|
|
143
|
-
"size": 4098,
|
|
144
|
-
"sha256": "a03fc55513b8d5c7d0cae3f417fad9e5dcaaee511b4868cdae8cd3061af84a6c"
|
|
145
|
-
},
|
|
146
|
-
"types.d.ts.map": {
|
|
147
|
-
"size": 4181,
|
|
148
|
-
"sha256": "4dff98570f92baca6dee52a13a1942e124e3b6a386b0d19381b8e7319a623bae"
|
|
149
|
-
},
|
|
150
|
-
"types.js": {
|
|
151
|
-
"size": 85,
|
|
152
|
-
"sha256": "f3a7356e481968927c5e7e784706d8d88a0fa07a742b72216751d6ef0016eb48"
|
|
153
|
-
},
|
|
154
|
-
"utils/CheckpointManager.d.ts": {
|
|
155
|
-
"size": 1408,
|
|
156
|
-
"sha256": "4b0d63804ff4a4013114903f64b65e17f7f184cfc302bfb50d08a41dc68077bb"
|
|
157
|
-
},
|
|
158
|
-
"utils/CheckpointManager.d.ts.map": {
|
|
159
|
-
"size": 736,
|
|
160
|
-
"sha256": "d47def494117ec256c191d30e60353ec3d8340e471f802ff3e8413d7e62b5625"
|
|
161
|
-
},
|
|
162
|
-
"utils/CheckpointManager.js": {
|
|
163
|
-
"size": 7293,
|
|
164
|
-
"sha256": "630d69a08996eac1e4d6a7606db896807dda467f17875fb1514a51c2386d4896"
|
|
165
|
-
},
|
|
166
|
-
"utils/DataValidator.d.ts": {
|
|
167
|
-
"size": 1512,
|
|
168
|
-
"sha256": "b7d9127f9d12a7705c454173e6b8c7e6aea66a1143399f7eed9708e37dce2aa3"
|
|
169
|
-
},
|
|
170
|
-
"utils/DataValidator.d.ts.map": {
|
|
171
|
-
"size": 781,
|
|
172
|
-
"sha256": "bfbff6541c2232782cd82baa04492949c4420155b187ceb2dbaa6905dc06118b"
|
|
173
|
-
},
|
|
174
|
-
"utils/DataValidator.js": {
|
|
175
|
-
"size": 5337,
|
|
176
|
-
"sha256": "08be6df9d5138697e5d7e76f8adb81e44f380ed4da2fb5bee188b8b18485c9d5"
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|