@proteinjs/db-driver-spanner 1.18.0 → 1.20.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/CHANGELOG.md +34 -0
- package/dist/generated/index.js +1 -1
- package/dist/generated/index.js.map +1 -1
- package/dist/generated/test/index.js +1 -1
- package/dist/generated/test/index.js.map +1 -1
- package/dist/src/SpannerDriver.d.ts +52 -3
- package/dist/src/SpannerDriver.d.ts.map +1 -1
- package/dist/src/SpannerDriver.js +141 -33
- package/dist/src/SpannerDriver.js.map +1 -1
- package/dist/src/SpannerSchemaOperations.d.ts +9 -1
- package/dist/src/SpannerSchemaOperations.d.ts.map +1 -1
- package/dist/src/SpannerSchemaOperations.js +88 -124
- package/dist/src/SpannerSchemaOperations.js.map +1 -1
- package/dist/test/BatchedDdl.test.d.ts +2 -0
- package/dist/test/BatchedDdl.test.d.ts.map +1 -0
- package/dist/test/BatchedDdl.test.js +496 -0
- package/dist/test/BatchedDdl.test.js.map +1 -0
- package/dist/test/DmlRetrySafety.test.d.ts +2 -0
- package/dist/test/DmlRetrySafety.test.d.ts.map +1 -0
- package/dist/test/DmlRetrySafety.test.js +472 -0
- package/dist/test/DmlRetrySafety.test.js.map +1 -0
- package/dist/test/RecordIterator.test.d.ts +2 -0
- package/dist/test/RecordIterator.test.d.ts.map +1 -0
- package/dist/test/RecordIterator.test.js +14 -0
- package/dist/test/RecordIterator.test.js.map +1 -0
- package/dist/test/RunPendingMigrations.test.d.ts +2 -0
- package/dist/test/RunPendingMigrations.test.d.ts.map +1 -0
- package/dist/test/RunPendingMigrations.test.js +354 -0
- package/dist/test/RunPendingMigrations.test.js.map +1 -0
- package/dist/test/SpannerOperationDeadline.test.js +1 -1
- package/dist/test/SpannerOperationDeadline.test.js.map +1 -1
- package/generated/index.ts +1 -1
- package/generated/test/index.ts +1 -1
- package/package.json +6 -6
- package/src/SpannerDriver.ts +110 -18
- package/src/SpannerSchemaOperations.ts +69 -55
- package/test/BatchedDdl.test.ts +293 -0
- package/test/DmlRetrySafety.test.ts +305 -0
- package/test/RecordIterator.test.ts +16 -0
- package/test/RunPendingMigrations.test.ts +201 -0
- package/test/SpannerOperationDeadline.test.ts +1 -1
|
@@ -173,7 +173,7 @@ var SpannerDriver = /** @class */ (function () {
|
|
|
173
173
|
if (_a.sent()) {
|
|
174
174
|
return [2 /*return*/];
|
|
175
175
|
}
|
|
176
|
-
return [4 /*yield*/, this.
|
|
176
|
+
return [4 /*yield*/, this.createDb(this.getDbName())];
|
|
177
177
|
case 2:
|
|
178
178
|
_a.sent();
|
|
179
179
|
return [2 /*return*/];
|
|
@@ -181,19 +181,87 @@ var SpannerDriver = /** @class */ (function () {
|
|
|
181
181
|
});
|
|
182
182
|
});
|
|
183
183
|
};
|
|
184
|
+
/**
|
|
185
|
+
* Create the named database in one operation. `ddl` statements ride the create as
|
|
186
|
+
* `CreateDatabase.extra_statements` — applied in order, atomically with the creation (if any
|
|
187
|
+
* statement fails, the database is not created) — so a database can be born with its full
|
|
188
|
+
* schema without a second schema-update operation.
|
|
189
|
+
*/
|
|
190
|
+
SpannerDriver.prototype.createDb = function (name, options) {
|
|
191
|
+
var _a;
|
|
192
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
193
|
+
var _b, database, operation;
|
|
194
|
+
return __generator(this, function (_c) {
|
|
195
|
+
switch (_c.label) {
|
|
196
|
+
case 0: return [4 /*yield*/, this.getSpannerInstance().createDatabase(name, {
|
|
197
|
+
extraStatements: (_a = options === null || options === void 0 ? void 0 : options.ddl) !== null && _a !== void 0 ? _a : [],
|
|
198
|
+
// Admin-handle hygiene (see adminDbHandle): the client constructs the returned handle
|
|
199
|
+
// BEFORE the create operation completes — a default eager pool races the operation and
|
|
200
|
+
// crashes on NOT_FOUND.
|
|
201
|
+
poolOptions: { min: 0 },
|
|
202
|
+
})];
|
|
203
|
+
case 1:
|
|
204
|
+
_b = _c.sent(), database = _b[0], operation = _b[1];
|
|
205
|
+
database.on('error', function () { return undefined; });
|
|
206
|
+
return [4 /*yield*/, operation.promise()];
|
|
207
|
+
case 2:
|
|
208
|
+
_c.sent();
|
|
209
|
+
return [4 /*yield*/, database.close().catch(function () { return undefined; })];
|
|
210
|
+
case 3:
|
|
211
|
+
_c.sent();
|
|
212
|
+
return [2 /*return*/];
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
};
|
|
217
|
+
/** Drop the named database (client `Database.delete()` — closes the handle, then drops). */
|
|
218
|
+
SpannerDriver.prototype.dropDb = function (name) {
|
|
219
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
220
|
+
return __generator(this, function (_a) {
|
|
221
|
+
switch (_a.label) {
|
|
222
|
+
case 0: return [4 /*yield*/, this.adminDbHandle(name).delete()];
|
|
223
|
+
case 1:
|
|
224
|
+
_a.sent();
|
|
225
|
+
return [2 /*return*/];
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
};
|
|
184
230
|
SpannerDriver.prototype.dbExists = function (databaseName) {
|
|
185
231
|
return __awaiter(this, void 0, void 0, function () {
|
|
186
|
-
var exists;
|
|
232
|
+
var database, exists;
|
|
187
233
|
return __generator(this, function (_a) {
|
|
188
234
|
switch (_a.label) {
|
|
189
|
-
case 0:
|
|
235
|
+
case 0:
|
|
236
|
+
database = this.adminDbHandle(databaseName);
|
|
237
|
+
_a.label = 1;
|
|
190
238
|
case 1:
|
|
239
|
+
_a.trys.push([1, , 3, 5]);
|
|
240
|
+
return [4 /*yield*/, database.exists()];
|
|
241
|
+
case 2:
|
|
191
242
|
exists = (_a.sent())[0];
|
|
192
243
|
return [2 /*return*/, exists];
|
|
244
|
+
case 3: return [4 /*yield*/, database.close().catch(function () { return undefined; })];
|
|
245
|
+
case 4:
|
|
246
|
+
_a.sent();
|
|
247
|
+
return [7 /*endfinally*/];
|
|
248
|
+
case 5: return [2 /*return*/];
|
|
193
249
|
}
|
|
194
250
|
});
|
|
195
251
|
});
|
|
196
252
|
};
|
|
253
|
+
/**
|
|
254
|
+
* A Database handle for admin operations (exists/drop): admin RPCs ride the admin client, not
|
|
255
|
+
* sessions, so the pool is configured to hold ZERO sessions — the default pool eagerly fills
|
|
256
|
+
* in the handle's constructor and emits process-crashing unlistened 'error' events when the
|
|
257
|
+
* database does not exist, which is the NORMAL case for these operations. Its error channel is
|
|
258
|
+
* owned for the same reason.
|
|
259
|
+
*/
|
|
260
|
+
SpannerDriver.prototype.adminDbHandle = function (name) {
|
|
261
|
+
var database = this.getSpannerInstance().database(name, { min: 0 });
|
|
262
|
+
database.on('error', function () { return undefined; });
|
|
263
|
+
return database;
|
|
264
|
+
};
|
|
197
265
|
/**
|
|
198
266
|
* Execute a query.
|
|
199
267
|
*/
|
|
@@ -305,32 +373,29 @@ var SpannerDriver = /** @class */ (function () {
|
|
|
305
373
|
});
|
|
306
374
|
};
|
|
307
375
|
SpannerDriver.prototype.executeDml = function (generateStatement, runner) {
|
|
376
|
+
var _a;
|
|
308
377
|
return __awaiter(this, void 0, void 0, function () {
|
|
309
|
-
var
|
|
310
|
-
return __generator(this, function (
|
|
311
|
-
switch (
|
|
378
|
+
var _b, sql, namedParams, startTime, rowCounts, rowCount, durationMs, error_3, durationMs;
|
|
379
|
+
return __generator(this, function (_c) {
|
|
380
|
+
switch (_c.label) {
|
|
312
381
|
case 0:
|
|
313
|
-
|
|
382
|
+
_b = generateStatement({
|
|
314
383
|
useParams: true,
|
|
315
384
|
useNamedParams: true,
|
|
316
385
|
prefixTablesWithDb: false,
|
|
317
386
|
getDriverColumnType: this.getColumnType.bind(this),
|
|
318
|
-
}), sql =
|
|
387
|
+
}), sql = _b.sql, namedParams = _b.namedParams;
|
|
319
388
|
startTime = process.hrtime.bigint();
|
|
320
|
-
|
|
389
|
+
_c.label = 1;
|
|
321
390
|
case 1:
|
|
322
|
-
|
|
391
|
+
_c.trys.push([1, 3, , 4]);
|
|
323
392
|
this.logger.debug({ message: "Executing dml", obj: { sql: sql, params: namedParams } });
|
|
324
|
-
return [4 /*yield*/, this.withDeadline('spanner dml', sql, runner.
|
|
325
|
-
|
|
326
|
-
params: namedParams === null || namedParams === void 0 ? void 0 : namedParams.params,
|
|
327
|
-
types: namedParams === null || namedParams === void 0 ? void 0 : namedParams.types,
|
|
328
|
-
// gRPC deadline: cancels the RPC on a dead channel so the transaction's run function
|
|
329
|
-
// settles and the library releases the session (see runDml).
|
|
330
|
-
gaxOptions: { timeout: this.operationDeadlineMs() },
|
|
393
|
+
return [4 /*yield*/, this.withDeadline('spanner dml', sql, runner.batchUpdate([{ sql: sql, params: namedParams === null || namedParams === void 0 ? void 0 : namedParams.params, types: namedParams === null || namedParams === void 0 ? void 0 : namedParams.types }], {
|
|
394
|
+
gaxOptions: this.dmlGaxOptions(),
|
|
331
395
|
}))];
|
|
332
396
|
case 2:
|
|
333
|
-
|
|
397
|
+
rowCounts = (_c.sent())[0];
|
|
398
|
+
rowCount = (_a = rowCounts[0]) !== null && _a !== void 0 ? _a : 0;
|
|
334
399
|
durationMs = Number(process.hrtime.bigint() - startTime) / 1000000;
|
|
335
400
|
this.logger.debug({
|
|
336
401
|
message: "Dml executed",
|
|
@@ -338,7 +403,7 @@ var SpannerDriver = /** @class */ (function () {
|
|
|
338
403
|
});
|
|
339
404
|
return [2 /*return*/, rowCount];
|
|
340
405
|
case 3:
|
|
341
|
-
error_3 =
|
|
406
|
+
error_3 = _c.sent();
|
|
342
407
|
durationMs = Number(process.hrtime.bigint() - startTime) / 1000000;
|
|
343
408
|
this.logger.error({
|
|
344
409
|
message: "Failed when executing dml",
|
|
@@ -575,6 +640,28 @@ var SpannerDriver = /** @class */ (function () {
|
|
|
575
640
|
// already torn down
|
|
576
641
|
}
|
|
577
642
|
};
|
|
643
|
+
/**
|
|
644
|
+
* Per-call gax options for the DML RPC (ExecuteBatchDml). The gRPC deadline (see runDml)
|
|
645
|
+
* applies everywhere. The transparent-retry policy differs by backend:
|
|
646
|
+
*
|
|
647
|
+
* - Real Spanner: gax's default unary policy (UNAVAILABLE only) stands. A replay re-sends the
|
|
648
|
+
* identical request — same seqno, deduped in the same-transaction geometry — and in the
|
|
649
|
+
* inline-begin geometry only the transaction the client ultimately commits applies durably,
|
|
650
|
+
* so the transient-blip resilience is safe there.
|
|
651
|
+
* - Emulator (SPANNER_EMULATOR_HOST — the same switch the client library keys on): a replayed
|
|
652
|
+
* inline-begin DML begins a fresh transaction per attempt, and the abandoned
|
|
653
|
+
* applied-but-uncommitted siblings are exactly what fed the splice incident's spurious
|
|
654
|
+
* failures under pool pressure. `retry: null` makes the call single-attempt: a lost response
|
|
655
|
+
* surfaces as the loss to the caller, deterministically, instead of invisible multi-
|
|
656
|
+
* transaction churn. Loopback needs no blip resilience.
|
|
657
|
+
*/
|
|
658
|
+
SpannerDriver.prototype.dmlGaxOptions = function () {
|
|
659
|
+
var gaxOptions = { timeout: this.operationDeadlineMs() };
|
|
660
|
+
if (process.env.SPANNER_EMULATOR_HOST) {
|
|
661
|
+
gaxOptions.retry = null;
|
|
662
|
+
}
|
|
663
|
+
return gaxOptions;
|
|
664
|
+
};
|
|
578
665
|
SpannerDriver.prototype.operationDeadlineMs = function () {
|
|
579
666
|
var _a;
|
|
580
667
|
return (_a = this.config.operationDeadlineMs) !== null && _a !== void 0 ? _a : 60000;
|
|
@@ -584,34 +671,55 @@ var SpannerDriver = /** @class */ (function () {
|
|
|
584
671
|
return (_a = this.config.deadlineFailuresBeforeRecycle) !== null && _a !== void 0 ? _a : 3;
|
|
585
672
|
};
|
|
586
673
|
/**
|
|
587
|
-
* Execute a schema write operation
|
|
674
|
+
* Execute a schema write operation — one long-running operation for the WHOLE statement list
|
|
675
|
+
* (`UpdateDatabaseDdl` applies the statements in order). Sequential per-statement operations
|
|
676
|
+
* are what made a 37-statement prod boot take 10m31s; callers batch and pass the list.
|
|
677
|
+
*
|
|
678
|
+
* Partial-failure semantics (verified against the emulator; matches Spanner's documented
|
|
679
|
+
* batch-DDL behavior — both phases are covered in BatchedDdl.test.ts):
|
|
680
|
+
* - VALIDATION failure (schema-shape errors, checked upfront for the whole batch, in order,
|
|
681
|
+
* against the projected schema): the batch is rejected before anything applies — NOTHING
|
|
682
|
+
* lands. Strictly safer than the old serial path, which stranded the earlier statements.
|
|
683
|
+
* - APPLY failure (data-dependent errors, e.g. a unique-index backfill over duplicate rows):
|
|
684
|
+
* statements BEFORE the failing one stay applied; the failing one and everything after are
|
|
685
|
+
* cancelled — the serial path's semantics.
|
|
686
|
+
* Neither phase reports a positional statement index: the backend error names the offending
|
|
687
|
+
* OBJECT (table/index/column). The failure log below carries the full statement list plus
|
|
688
|
+
* that reason, which together locate the statement.
|
|
588
689
|
*/
|
|
589
|
-
SpannerDriver.prototype.runUpdateSchema = function (
|
|
690
|
+
SpannerDriver.prototype.runUpdateSchema = function (statements) {
|
|
691
|
+
var _a;
|
|
590
692
|
return __awaiter(this, void 0, void 0, function () {
|
|
591
|
-
var startTime, operation, durationMs, error_5, durationMs;
|
|
592
|
-
return __generator(this, function (
|
|
593
|
-
switch (
|
|
693
|
+
var statementList, startTime, operation, durationMs, error_5, durationMs;
|
|
694
|
+
return __generator(this, function (_b) {
|
|
695
|
+
switch (_b.label) {
|
|
594
696
|
case 0:
|
|
697
|
+
statementList = Array.isArray(statements) ? statements : [statements];
|
|
595
698
|
startTime = process.hrtime.bigint();
|
|
596
|
-
|
|
699
|
+
_b.label = 1;
|
|
597
700
|
case 1:
|
|
598
|
-
|
|
599
|
-
this.logger.debug({ message: "Executing schema update", obj: {
|
|
600
|
-
return [4 /*yield*/, this.getSpannerDb().updateSchema(
|
|
701
|
+
_b.trys.push([1, 4, , 5]);
|
|
702
|
+
this.logger.debug({ message: "Executing schema update", obj: { statements: statementList } });
|
|
703
|
+
return [4 /*yield*/, this.getSpannerDb().updateSchema(statementList)];
|
|
601
704
|
case 2:
|
|
602
|
-
operation = (
|
|
705
|
+
operation = (_b.sent())[0];
|
|
603
706
|
return [4 /*yield*/, operation.promise()];
|
|
604
707
|
case 3:
|
|
605
|
-
|
|
708
|
+
_b.sent();
|
|
606
709
|
durationMs = Number(process.hrtime.bigint() - startTime) / 1000000;
|
|
607
|
-
this.logger.debug({
|
|
710
|
+
this.logger.debug({
|
|
711
|
+
message: "Schema update executed",
|
|
712
|
+
obj: { statementCount: statementList.length, durationMs: durationMs },
|
|
713
|
+
});
|
|
608
714
|
return [3 /*break*/, 5];
|
|
609
715
|
case 4:
|
|
610
|
-
error_5 =
|
|
716
|
+
error_5 = _b.sent();
|
|
611
717
|
durationMs = Number(process.hrtime.bigint() - startTime) / 1000000;
|
|
612
718
|
this.logger.error({
|
|
613
719
|
message: "Failed when executing schema update",
|
|
614
|
-
|
|
720
|
+
// Apply-phase LRO failures carry their reason only in `message` (`details` is
|
|
721
|
+
// undefined there); validation-phase gRPC errors carry both.
|
|
722
|
+
obj: { statements: statementList, errorDetails: (_a = error_5.details) !== null && _a !== void 0 ? _a : String(error_5), durationMs: durationMs },
|
|
615
723
|
});
|
|
616
724
|
throw error_5;
|
|
617
725
|
case 5: return [2 /*return*/];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpannerDriver.js","sourceRoot":"","sources":["../../src/SpannerDriver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAiF;AACjF,oCAOuB;AAEvB,mEAAgG;AAChG,4CAA2C;AAE3C,qEAAoE;AACpE,uEAAsE;AACtE,iEAAgE;AAEhE;;GAEG;AACH;IAiBE,uBAAY,MAAqB,EAAE,QAAuC;QAJlE,WAAM,GAAG,IAAI,eAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAK3D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACI,iCAAmB,GAA1B;QACE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;YAC7B,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;IACpD,CAAC;IAEO,kCAAU,GAAlB;;QACE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;YAC1B,0FAA0F;YAC1F,0FAA0F;YAC1F,4FAA4F;YAC5F,yFAAyF;YACzF,4FAA4F;YAC5F,0FAA0F;YAC1F,0FAA0F;YAC1F,2FAA2F;YAC3F,4FAA4F;YAC5F,oEAAoE;YACpE,IAAM,eAAe,GAAG,MAAM,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,mCAAI,KAAM,CAAC,CAAC;YACrF,IAAM,SAAS,GACb,eAAe,GAAG,CAAC;gBACjB,CAAC,CAAC;oBACE,wBAAwB,EAAE,eAAe;oBACzC,2BAA2B,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,KAAM,CAAC;oBAC5F,qCAAqC,EAAE,CAAC;iBACzC;gBACH,CAAC,CAAC,EAAE,CAAC;YACT,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;gBAC9B,aAAa,CAAC,OAAO,GAAG,IAAI,iBAAO,CACjC,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAC3F,CAAC;aACH;iBAAM;gBACL,aAAa,CAAC,OAAO,GAAG,IAAI,iBAAO,YAAG,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAK,SAAS,EAAG,CAAC;aACzF;SACF;QAED,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAEO,0CAAkB,GAA1B;QACE,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE;YACnC,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SACvF;QAED,OAAO,aAAa,CAAC,gBAAgB,CAAC;IACxC,CAAC;IAEO,oCAAY,GAApB;QACE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;YAC7B,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAC3D,IAAI,CAAC,MAAM,CAAC,YAAY,EACxB,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAC/B,CAAC;YACF,sFAAsF;YACtF,yFAAyF;YACzF,uFAAuF;YACvF,mDAAmD;YACnD,aAAa,CAAC,gBAAgB,GAAG,IAAI,+CAAsB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;SAC/F;QAED,OAAO,aAAa,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,iCAAS,GAAT;QACE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;IAClC,CAAC;IAED,uCAAe,GAAf;QACE,IAAM,iBAAiB,GAAG,IAAI,mDAAwB,EAAE,CAAC;QACzD,IAAM,gBAAgB,GAAG,IAAI,iDAAuB,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAM,cAAc,GAAG,IAAI,6CAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9D,OAAO,IAAI,iBAAY,CAAC,IAAI,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;IACrF,CAAC;IAED;;;;;OAKG;IACH,qCAAa,GAAb,UAAc,SAAiB,EAAE,UAAkB;QACjD,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAA,gBAAW,EAAC,SAAS,CAAC,CAAC;QAChF,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,IAAI,KAAK,UAAU,EAAvB,CAAuB,CAAC,CAAC;QAEnF,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,iBAAU,UAAU,sCAA4B,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC;SAC/E;QAED,IAAM,IAAI,GAAG,IAAI,mDAAwB,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAElE,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,2CAAoC,UAAU,uBAAa,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC;SAC1F;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,6CAAqB,GAArB,UAAsB,SAAiB,EAAE,UAAkB,EAAE,aAAsB;QACjF,IAAI,aAAa,EAAE;YACjB,OAAO,UAAU,CAAC;SACnB;QAED,IAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,QAAQ,CAAC;QAE/E,IAAI,eAAe,EAAE;YACnB,OAAO,gBAAS,UAAU,MAAG,CAAC;SAC/B;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEK,2CAAmB,GAAzB;;;;4BACM,qBAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAA;;wBAAzC,IAAI,SAAqC,EAAE;4BACzC,sBAAO;yBACR;wBAED,qBAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAA;;wBAAhE,SAAgE,CAAC;;;;;KAClE;IAEa,gCAAQ,GAAtB,UAAuB,YAAoB;;;;;4BACxB,qBAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAA;;wBAAzE,MAAM,GAAI,CAAA,SAA+D,CAAA,GAAnE;wBACb,sBAAO,MAAM,EAAC;;;;KACf;IAED;;OAEG;IACG,gCAAQ,GAAd,UACE,iBAAsE,EACtE,WAAyB;;;;4BAElB,qBAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,EAAA;4BAArF,sBAAO,SAA8E,EAAC;;;;KACvF;IAEa,oCAAY,GAA1B,UACE,iBAAsE,EACtE,MAA8B;;;;;;wBAExB,KAAuB,iBAAiB,CAAC;4BAC7C,SAAS,EAAE,IAAI;4BACf,cAAc,EAAE,IAAI;4BACpB,kBAAkB,EAAE,KAAK;4BACzB,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;4BAClD,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;yBAC7D,CAAC,EANM,GAAG,SAAA,EAAE,WAAW,iBAAA,CAMrB;wBAEG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;;;;wBAGxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,EAAE,GAAG,KAAA,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;wBACtE,qBAAM,IAAI,CAAC,YAAY,CACpC,eAAe,EACf,GAAG,EACH,MAAM,CAAC,GAAG,CAAC;gCACT,GAAG,KAAA;gCACH,MAAM,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM;gCAC3B,KAAK,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK;gCACzB,mFAAmF;gCACnF,iFAAiF;gCACjF,gFAAgF;gCAChF,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE;6BACpD,CAAC,CACH,EAAA;;wBAZM,IAAI,GAAI,CAAA,SAYd,CAAA,GAZU;wBAaL,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,OAAS,CAAC;wBAC3E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;4BAChB,OAAO,EAAE,gBAAgB;4BACzB,GAAG,EAAE,EAAE,GAAG,KAAA,EAAE,UAAU,YAAA,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;yBAChD,CAAC,CAAC;wBACH,sBAAO,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,MAAM,EAAE,EAAZ,CAAY,CAAC,EAAC;;;wBAEjC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,OAAS,CAAC;wBAC3E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;4BAChB,OAAO,EAAE,6BAA6B;4BACtC,GAAG,EAAE,EAAE,GAAG,KAAA,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,OAAK,CAAC,OAAO,EAAE,UAAU,YAAA,EAAE;yBAC3E,CAAC,CAAC;wBACH,aAAa,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAK,CAAC,CAAC;wBAClD,MAAM,OAAK,CAAC;;;;;KAEf;IAED;;;;OAIG;IACG,8BAAM,GAAZ,UACE,iBAAoE,EACpE,WAAyB;;;;;;6BAErB,WAAW,EAAX,wBAAW;wBACN,qBAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,WAAW,CAAC,EAAA;4BAA5D,sBAAO,SAAqD,EAAC;4BAQxD,qBAAM,IAAI,CAAC,YAAY,CAC5B,yBAAyB,EACzB,uBAAuB,EACvB,IAAI,CAAC,YAAY,EAAE,CAAC,mBAAmB,CAAC,UAAO,WAAW;;;;;;wCAErC,qBAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,WAAW,CAAC,EAAA;;wCAAhE,QAAQ,GAAG,SAAqD;wCACtE,qBAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAA;;wCAA9B,SAA8B,CAAC;wCAC/B,sBAAO,QAAQ,EAAC;;;wCAEhB,qBAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAA;;wCAAvC,SAAuC,CAAC;wCACxC,MAAM,OAAK,CAAC;;;;6BAEf,CAAC,CACH,EAAA;;oBAlBD,yFAAyF;oBACzF,2FAA2F;oBAC3F,2FAA2F;oBAC3F,sFAAsF;oBACtF,4DAA4D;oBAC5D,sBAAO,SAaN,EAAC;;;;KACH;IAEa,kCAAU,GAAxB,UACE,iBAAoE,EACpE,MAAmB;;;;;;wBAEb,KAAuB,iBAAiB,CAAC;4BAC7C,SAAS,EAAE,IAAI;4BACf,cAAc,EAAE,IAAI;4BACpB,kBAAkB,EAAE,KAAK;4BACzB,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;yBACnD,CAAC,EALM,GAAG,SAAA,EAAE,WAAW,iBAAA,CAKrB;wBAEG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;;;;wBAGxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,EAAE,GAAG,KAAA,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;wBAChE,qBAAM,IAAI,CAAC,YAAY,CACxC,aAAa,EACb,GAAG,EACH,MAAM,CAAC,SAAS,CAAC;gCACf,GAAG,KAAA;gCACH,MAAM,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM;gCAC3B,KAAK,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK;gCACzB,qFAAqF;gCACrF,6DAA6D;gCAC7D,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE;6BACpD,CAAC,CACH,EAAA;;wBAXM,QAAQ,GAAI,CAAA,SAWlB,CAAA,GAXc;wBAYT,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,OAAS,CAAC;wBAC3E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;4BAChB,OAAO,EAAE,cAAc;4BACvB,GAAG,EAAE,EAAE,GAAG,KAAA,EAAE,UAAU,YAAA,EAAE,QAAQ,UAAA,EAAE;yBACnC,CAAC,CAAC;wBACH,sBAAO,QAAQ,EAAC;;;wBAEV,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,OAAS,CAAC;wBAC3E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;4BAChB,OAAO,EAAE,2BAA2B;4BACpC,GAAG,EAAE,EAAE,GAAG,KAAA,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,OAAK,CAAC,OAAO,EAAE,UAAU,YAAA,EAAE;yBAC3E,CAAC,CAAC;wBACH,aAAa,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAK,CAAC,CAAC;wBAClD,MAAM,OAAK,CAAC;;;;;KAEf;IAED;;;;OAIG;IACG,sCAAc,GAApB,UAAwB,EAA4C;;;;;4BAC3D,qBAAM,IAAI,CAAC,YAAY,CAC5B,qBAAqB,EACrB,uBAAuB,EACvB,IAAI,CAAC,YAAY,EAAE,CAAC,mBAAmB,CAAC,UAAO,WAAW;;;;;;wCAEvC,qBAAM,EAAE,CAAC,WAAW,CAAC,EAAA;;wCAA9B,MAAM,GAAG,SAAqB;wCACpC,qBAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAA;;wCAA9B,SAA8B,CAAC;wCAC/B,sBAAO,MAAM,EAAC;;;wCAEd,qBAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAA;;wCAAvC,SAAuC,CAAC;wCACxC,MAAM,OAAK,CAAC;;;;6BAEf,CAAC,CACH,EAAA;4BAbD,sBAAO,SAaN,EAAC;;;;KACH;IAED;;;;OAIG;IACW,8BAAM,GAApB,UAAqB,WAAwB;;;;4BAC3C,qBAAM,IAAI,CAAC,YAAY,CACrB,gBAAgB,EAChB,UAAU,EACV,WAAW,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,EAAE,CAAC,CAC5E,EAAA;;wBAJD,SAIC,CAAC;;;;;KACH;IAED;;;;;;;;;;;;OAYG;IACW,uCAAe,GAA7B,UAA8B,WAAwB;;;;;;;wBAElD,qBAAM,IAAI,CAAC,YAAY,CACrB,kBAAkB,EAClB,YAAY,EACZ,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAC9D,EAAA;;wBAJD,SAIC,CAAC;;;;wBAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,yCAAyC,EAAE,GAAG,EAAE,EAAE,aAAa,iBAAA,EAAE,EAAE,CAAC,CAAC;;;;;;KAErG;IAED;;;;;;;;;;;;OAYG;IACK,oCAAY,GAApB,UAAwB,EAAU,EAAE,GAAW,EAAE,OAAuB;QAAxE,iBA2EC;;QA1EC,uFAAuF;QACvF,sFAAsF;QACtF,gCAAgC;QAChC,aAAa,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC;QACjD,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC9C,IAAM,UAAU,GAAG,aAAa,CAAC,iBAAiB,CAAC;QACnD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAM,QAAQ,GAAG,UAAC,OAAe;YAC/B,OAAA,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAChB,OAAO,EAAE,8BAAuB,EAAE,CAAE;gBACpC,GAAG,EAAE,EAAE,OAAO,SAAA,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE;aACnG,CAAC;QAHF,CAGE,CAAC;QACL,IAAM,EAAE,GAAG,UAAU,CAAC;YACpB,IAAI,CAAC,OAAO,EAAE;gBACZ,QAAQ,CAAC,KAAM,CAAC,CAAC;aAClB;QACH,CAAC,EAAE,KAAM,CAAC,CAAC;QACX,IAAM,EAAE,GAAG,UAAU,CAAC;YACpB,IAAI,CAAC,OAAO,EAAE;gBACZ,QAAQ,CAAC,MAAO,CAAC,CAAC;aACnB;QACH,CAAC,EAAE,MAAO,CAAC,CAAC;QACZ,MAAA,EAAE,CAAC,KAAK,kDAAI,CAAC;QACb,MAAA,EAAE,CAAC,KAAK,kDAAI,CAAC;QACb,OAAO,IAAI,OAAO,CAAI,UAAC,OAAO,EAAE,MAAM;;YACpC,IAAM,KAAK,GAAG;gBACZ,OAAO,GAAG,IAAI,CAAC;gBACf,YAAY,CAAC,EAAE,CAAC,CAAC;gBACjB,YAAY,CAAC,EAAE,CAAC,CAAC;gBACjB,YAAY,CAAC,aAAa,CAAC,CAAC;YAC9B,CAAC,CAAC;YACF,IAAM,aAAa,GAAG,UAAU,CAAC;gBAC/B,IAAI,OAAO,EAAE;oBACX,OAAO;iBACR;gBACD,KAAK,EAAE,CAAC;gBACR,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC;oBAChB,OAAO,EAAE,kCAA2B,UAAU,0BAAgB,EAAE,2BAAmB;oBACnF,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE;iBAC1F,CAAC,CAAC;gBACH,KAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;gBACvC,+EAA+E;gBAC/E,mFAAmF;gBACnF,mBAAmB;gBACnB,MAAM,CACJ,IAAI,KAAK,CACP,kCAA2B,UAAU,0BAAgB,EAAE,uDAAoD,CAC5G,CACF,CAAC;YACJ,CAAC,EAAE,UAAU,CAAC,CAAC;YACf,MAAA,aAAa,CAAC,KAAK,6DAAI,CAAC;YACxB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAC3B,UAAC,KAAK;gBACJ,IAAI,OAAO,EAAE;oBACX,OAAO,CAAC,0EAA0E;iBACnF;gBACD,KAAK,EAAE,CAAC;gBACR,KAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBACjC,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,EACD,UAAC,KAAK;gBACJ,IAAI,OAAO,EAAE;oBACX,OAAO;iBACR;gBACD,KAAK,EAAE,CAAC;gBACR,qFAAqF;gBACrF,kFAAkF;gBAClF,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,MAAK,CAAC,EAAE;oBACrB,KAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;iBACxC;gBACD,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAErE,uCAAe,GAAvB,UAAwB,UAAkB;QACxC,IAAI,UAAU,KAAK,aAAa,CAAC,iBAAiB,EAAE;YAClD,OAAO,CAAC,sEAAsE;SAC/E;QACD,aAAa,CAAC,6BAA6B,GAAG,CAAC,CAAC;IAClD,CAAC;IAEO,6CAAqB,GAA7B,UAA8B,UAAkB;QAC9C,IAAI,UAAU,KAAK,aAAa,CAAC,iBAAiB,EAAE;YAClD,OAAO;SACR;QACD,aAAa,CAAC,6BAA6B,IAAI,CAAC,CAAC;QACjD,IAAI,aAAa,CAAC,6BAA6B,GAAG,IAAI,CAAC,6BAA6B,EAAE,EAAE;YACtF,OAAO;SACR;QACD,0FAA0F;QAC1F,iFAAiF;QACjF,aAAa,CAAC,6BAA6B,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED;;;;;;;OAOG;IACK,qCAAa,GAArB;QACE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAChB,OAAO,EAAE,yCAAkC,IAAI,CAAC,6BAA6B,EAAE,iIAAyH;SACzM,CAAC,CAAC;QACH,aAAa,CAAC,iBAAiB,IAAI,CAAC,CAAC;QACrC,IAAM,UAAU,GAAG,aAAa,CAAC,gBAAgB,CAAC;QAClD,IAAM,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC;QACvC,IAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC;QACzC,aAAa,CAAC,OAAO,GAAG,SAAS,CAAC;QAClC,aAAa,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAC3C,aAAa,CAAC,UAAU,GAAG,SAAS,CAAC;QACrC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,EAAE,CAAC;QACnB,0FAA0F;QAC1F,+EAA+E;QAC/E,KAAK,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,GAAG,KAAK,CAAC,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC,CAAA,CAAC;QAC3C,IAAI;YACF,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,EAAE,CAAC;SACrB;QAAC,WAAM;YACN,oBAAoB;SACrB;IACH,CAAC;IAEO,2CAAmB,GAA3B;;QACE,OAAO,MAAA,IAAI,CAAC,MAAM,CAAC,mBAAmB,mCAAI,KAAM,CAAC;IACnD,CAAC;IAEO,qDAA6B,GAArC;;QACE,OAAO,MAAA,IAAI,CAAC,MAAM,CAAC,6BAA6B,mCAAI,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACG,uCAAe,GAArB,UAAsB,GAAW;;;;;;wBACzB,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;;;;wBAExC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,GAAG,EAAE,EAAE,GAAG,KAAA,EAAE,EAAE,CAAC,CAAC;wBACpD,qBAAM,IAAI,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAAA;;wBAAxD,SAAS,GAAI,CAAA,SAA2C,CAAA,GAA/C;wBAChB,qBAAM,SAAS,CAAC,OAAO,EAAE,EAAA;;wBAAzB,SAAyB,CAAC;wBACpB,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,OAAS,CAAC;wBAC3E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,GAAG,EAAE,EAAE,GAAG,KAAA,EAAE,UAAU,YAAA,EAAE,EAAE,CAAC,CAAC;;;;wBAE7E,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,OAAS,CAAC;wBAC3E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;4BAChB,OAAO,EAAE,qCAAqC;4BAC9C,GAAG,EAAE,EAAE,GAAG,KAAA,EAAE,YAAY,EAAE,OAAK,CAAC,OAAO,EAAE,UAAU,YAAA,EAAE;yBACtD,CAAC,CAAC;wBACH,MAAM,OAAK,CAAC;;;;;KAEf;IApgBD;;;;;OAKG;IACY,+BAAiB,GAAG,CAAC,AAAJ,CAAK;IACtB,2CAA6B,GAAG,CAAC,AAAJ,CAAK;IA8fnD,oBAAC;CAAA,AA1gBD,IA0gBC;AA1gBY,sCAAa"}
|
|
1
|
+
{"version":3,"file":"SpannerDriver.js","sourceRoot":"","sources":["../../src/SpannerDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,16 @@ export declare class SpannerSchemaOperations implements SchemaOperations {
|
|
|
4
4
|
private spannerDriver;
|
|
5
5
|
private logger;
|
|
6
6
|
constructor(spannerDriver: SpannerDriver);
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Create every table in `tables` — each table's `CREATE TABLE` plus all of its `CREATE INDEX`
|
|
9
|
+
* statements, concatenated across tables in the given order — as ONE schema-update operation.
|
|
10
|
+
* `UpdateDatabaseDdl` applies the batch in order, so a table whose foreign keys reference an
|
|
11
|
+
* earlier table in the list resolves against it, exactly as it did when the statements ran
|
|
12
|
+
* serially.
|
|
13
|
+
*/
|
|
14
|
+
createTables(tables: Table<any>[]): Promise<void>;
|
|
8
15
|
alterTable(table: Table<any>, tableChanges: TableChanges): Promise<void>;
|
|
16
|
+
private createTableStatements;
|
|
9
17
|
/**
|
|
10
18
|
* Spanner supports exactly one in-place column type change: widening a `STRING(n)` to a larger
|
|
11
19
|
* `STRING(m)` or `STRING(MAX)`. Returns the `ALTER COLUMN` statement when `change` is such a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpannerSchemaOperations.d.ts","sourceRoot":"","sources":["../../src/SpannerSchemaOperations.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,gBAAgB,EAChB,YAAY,EAIb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMhD,qBAAa,uBAAwB,YAAW,gBAAgB;IAGlD,OAAO,CAAC,aAAa;IAFjC,OAAO,CAAC,MAAM,CAA2F;gBAErF,aAAa,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"SpannerSchemaOperations.d.ts","sourceRoot":"","sources":["../../src/SpannerSchemaOperations.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,gBAAgB,EAChB,YAAY,EAIb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMhD,qBAAa,uBAAwB,YAAW,gBAAgB;IAGlD,OAAO,CAAC,aAAa;IAFjC,OAAO,CAAC,MAAM,CAA2F;gBAErF,aAAa,EAAE,aAAa;IAEhD;;;;;;OAMG;IACG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;IAajC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,YAAY;IAqG9D,OAAO,CAAC,qBAAqB;IA0C7B;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;CAuBhC"}
|
|
@@ -48,65 +48,31 @@ var SpannerSchemaOperations = /** @class */ (function () {
|
|
|
48
48
|
this.spannerDriver = spannerDriver;
|
|
49
49
|
this.logger = new logger_1.Logger({ name: this.constructor.name, logLevel: getEnvVar('DB_LOG_LEVEL') });
|
|
50
50
|
}
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Create every table in `tables` — each table's `CREATE TABLE` plus all of its `CREATE INDEX`
|
|
53
|
+
* statements, concatenated across tables in the given order — as ONE schema-update operation.
|
|
54
|
+
* `UpdateDatabaseDdl` applies the batch in order, so a table whose foreign keys reference an
|
|
55
|
+
* earlier table in the list resolves against it, exactly as it did when the statements ran
|
|
56
|
+
* serially.
|
|
57
|
+
*/
|
|
58
|
+
SpannerSchemaOperations.prototype.createTables = function (tables) {
|
|
53
59
|
return __awaiter(this, void 0, void 0, function () {
|
|
54
|
-
var
|
|
55
|
-
return __generator(this, function (
|
|
56
|
-
switch (
|
|
60
|
+
var statements, _i, tables_1, table;
|
|
61
|
+
return __generator(this, function (_a) {
|
|
62
|
+
switch (_a.label) {
|
|
57
63
|
case 0:
|
|
58
|
-
|
|
59
|
-
for (_i = 0,
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
statements = [];
|
|
65
|
+
for (_i = 0, tables_1 = tables; _i < tables_1.length; _i++) {
|
|
66
|
+
table = tables_1[_i];
|
|
67
|
+
statements.push.apply(statements, this.createTableStatements(table));
|
|
62
68
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
for (columnPropertyName in table.columns) {
|
|
66
|
-
column = table.columns[columnPropertyName];
|
|
67
|
-
columnType = new SpannerColumnTypeFactory_1.SpannerColumnTypeFactory().getType(column);
|
|
68
|
-
serializedColumns.push({ name: column.name, type: columnType, nullable: (_a = column.options) === null || _a === void 0 ? void 0 : _a.nullable });
|
|
69
|
-
this.logger.info({ message: "[".concat(table.name, "] Creating column: ").concat(column.name, " (").concat(column.constructor.name, ")") });
|
|
70
|
-
if ((_c = (_b = column.options) === null || _b === void 0 ? void 0 : _b.unique) === null || _c === void 0 ? void 0 : _c.unique) {
|
|
71
|
-
indexes.push({
|
|
72
|
-
name: column.options.unique.indexName,
|
|
73
|
-
columns: [table.columns[column.name].name],
|
|
74
|
-
unique: true,
|
|
75
|
-
});
|
|
76
|
-
this.logger.info({ message: "[".concat(table.name, ".").concat(column.name, "] Adding unique constraint") });
|
|
77
|
-
}
|
|
78
|
-
if ((_d = column.options) === null || _d === void 0 ? void 0 : _d.references) {
|
|
79
|
-
foreignKeys.push({ table: column.options.references.table, column: 'id', referencedByColumn: column.name });
|
|
80
|
-
this.logger.info({
|
|
81
|
-
message: "[".concat(table.name, ".").concat(column.name, "] Adding foreign key -> ").concat(column.options.references.table, ".id"),
|
|
82
|
-
});
|
|
83
|
-
}
|
|
69
|
+
if (statements.length === 0) {
|
|
70
|
+
return [2 /*return*/];
|
|
84
71
|
}
|
|
85
|
-
|
|
86
|
-
return [4 /*yield*/, this.spannerDriver.runUpdateSchema(createTableSql)];
|
|
72
|
+
return [4 /*yield*/, this.spannerDriver.runUpdateSchema(statements)];
|
|
87
73
|
case 1:
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
_h.label = 2;
|
|
91
|
-
case 2:
|
|
92
|
-
if (!(_g < indexes_1.length)) return [3 /*break*/, 5];
|
|
93
|
-
index = indexes_1[_g];
|
|
94
|
-
createIndexSql = new db_1.StatementFactory().createIndex(index, table.name).sql;
|
|
95
|
-
indexName = db_1.StatementUtil.getIndexName(table.name, index);
|
|
96
|
-
this.logger.info({
|
|
97
|
-
message: "[".concat(table.name, "] Creating index: ").concat(indexName, " (").concat(index.columns.join(', '), ")"),
|
|
98
|
-
});
|
|
99
|
-
return [4 /*yield*/, this.spannerDriver.runUpdateSchema(createIndexSql)];
|
|
100
|
-
case 3:
|
|
101
|
-
_h.sent();
|
|
102
|
-
this.logger.info({
|
|
103
|
-
message: "[".concat(table.name, "] Created index: ").concat(indexName, " (").concat(index.columns.join(', '), ")"),
|
|
104
|
-
});
|
|
105
|
-
_h.label = 4;
|
|
106
|
-
case 4:
|
|
107
|
-
_g++;
|
|
108
|
-
return [3 /*break*/, 2];
|
|
109
|
-
case 5: return [2 /*return*/];
|
|
74
|
+
_a.sent();
|
|
75
|
+
return [2 /*return*/];
|
|
110
76
|
}
|
|
111
77
|
});
|
|
112
78
|
});
|
|
@@ -114,9 +80,9 @@ var SpannerSchemaOperations = /** @class */ (function () {
|
|
|
114
80
|
SpannerSchemaOperations.prototype.alterTable = function (table, tableChanges) {
|
|
115
81
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
116
82
|
return __awaiter(this, void 0, void 0, function () {
|
|
117
|
-
var alterParams, indexesToDrop, indexesToAdd, _i, _h, columnPropertyName, column, columnType, _j, _k, columnName, _l, _m, foreignKey, wideningStatements, _o, _p, columnTypeChange, wideningStatement, errorMessage, _q, _r, columnNullableChange, errorMessage, _s, _t, columnPropertyName, column, errorMessage,
|
|
118
|
-
return __generator(this, function (
|
|
119
|
-
switch (
|
|
83
|
+
var alterParams, indexesToDrop, indexesToAdd, _i, _h, columnPropertyName, column, columnType, _j, _k, columnName, _l, _m, foreignKey, wideningStatements, _o, _p, columnTypeChange, wideningStatement, errorMessage, _q, _r, columnNullableChange, errorMessage, _s, _t, columnPropertyName, column, errorMessage, statements, _u, _v, index, _w, _x, index, indexName;
|
|
84
|
+
return __generator(this, function (_y) {
|
|
85
|
+
switch (_y.label) {
|
|
120
86
|
case 0:
|
|
121
87
|
alterParams = {
|
|
122
88
|
tableName: table.name,
|
|
@@ -187,78 +153,76 @@ var SpannerSchemaOperations = /** @class */ (function () {
|
|
|
187
153
|
this.logger.error({ message: errorMessage });
|
|
188
154
|
throw new Error(errorMessage);
|
|
189
155
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
156
|
+
statements = new db_1.StatementFactory()
|
|
157
|
+
.alterTable(alterParams)
|
|
158
|
+
.map(function (alterStatement) { return alterStatement.sql; });
|
|
159
|
+
statements.push.apply(statements, wideningStatements);
|
|
160
|
+
for (_u = 0, _v = tableChanges.indexesToDrop; _u < _v.length; _u++) {
|
|
161
|
+
index = _v[_u];
|
|
162
|
+
this.logger.info({
|
|
163
|
+
message: "[".concat(table.name, "] Dropping index: ").concat(index.name, " (").concat(typeof index.columns === 'string' ? index.columns : index.columns.join(', '), ")"),
|
|
164
|
+
});
|
|
165
|
+
statements.push(new db_1.StatementFactory().dropIndex(index, table.name).sql);
|
|
166
|
+
}
|
|
167
|
+
for (_w = 0, _x = tableChanges.indexesToCreate; _w < _x.length; _w++) {
|
|
168
|
+
index = _x[_w];
|
|
169
|
+
indexName = db_1.StatementUtil.getIndexName(table.name, index);
|
|
170
|
+
this.logger.info({
|
|
171
|
+
message: "[".concat(table.name, "] Creating index: ").concat(indexName, " (").concat(typeof index.columns === 'string' ? index.columns : index.columns.join(', '), ")"),
|
|
172
|
+
});
|
|
173
|
+
statements.push(new db_1.StatementFactory().createIndex(index, table.name).sql);
|
|
174
|
+
}
|
|
175
|
+
if (statements.length === 0) {
|
|
176
|
+
return [2 /*return*/];
|
|
177
|
+
}
|
|
178
|
+
return [4 /*yield*/, this.spannerDriver.runUpdateSchema(statements)];
|
|
193
179
|
case 1:
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
return [4 /*yield*/, this.spannerDriver.runUpdateSchema(alterStatement.sql)];
|
|
197
|
-
case 2:
|
|
198
|
-
_0.sent();
|
|
199
|
-
_0.label = 3;
|
|
200
|
-
case 3:
|
|
201
|
-
_u++;
|
|
202
|
-
return [3 /*break*/, 1];
|
|
203
|
-
case 4:
|
|
204
|
-
_v = 0, wideningStatements_1 = wideningStatements;
|
|
205
|
-
_0.label = 5;
|
|
206
|
-
case 5:
|
|
207
|
-
if (!(_v < wideningStatements_1.length)) return [3 /*break*/, 8];
|
|
208
|
-
wideningStatement = wideningStatements_1[_v];
|
|
209
|
-
return [4 /*yield*/, this.spannerDriver.runUpdateSchema(wideningStatement)];
|
|
210
|
-
case 6:
|
|
211
|
-
_0.sent();
|
|
212
|
-
_0.label = 7;
|
|
213
|
-
case 7:
|
|
214
|
-
_v++;
|
|
215
|
-
return [3 /*break*/, 5];
|
|
216
|
-
case 8:
|
|
217
|
-
_w = 0, _x = tableChanges.indexesToDrop;
|
|
218
|
-
_0.label = 9;
|
|
219
|
-
case 9:
|
|
220
|
-
if (!(_w < _x.length)) return [3 /*break*/, 12];
|
|
221
|
-
index = _x[_w];
|
|
222
|
-
dropIndexSql = new db_1.StatementFactory().dropIndex(index, table.name).sql;
|
|
223
|
-
this.logger.info({
|
|
224
|
-
message: "[".concat(table.name, "] Dropping index: ").concat(index.name, " (").concat(typeof index.columns === 'string' ? index.columns : index.columns.join(', '), ")"),
|
|
225
|
-
});
|
|
226
|
-
return [4 /*yield*/, this.spannerDriver.runUpdateSchema(dropIndexSql)];
|
|
227
|
-
case 10:
|
|
228
|
-
_0.sent();
|
|
229
|
-
this.logger.info({
|
|
230
|
-
message: "[".concat(table.name, "] Dropped index: ").concat(index.name, " (").concat(typeof index.columns === 'string' ? index.columns : index.columns.join(', '), ")"),
|
|
231
|
-
});
|
|
232
|
-
_0.label = 11;
|
|
233
|
-
case 11:
|
|
234
|
-
_w++;
|
|
235
|
-
return [3 /*break*/, 9];
|
|
236
|
-
case 12:
|
|
237
|
-
_y = 0, _z = tableChanges.indexesToCreate;
|
|
238
|
-
_0.label = 13;
|
|
239
|
-
case 13:
|
|
240
|
-
if (!(_y < _z.length)) return [3 /*break*/, 16];
|
|
241
|
-
index = _z[_y];
|
|
242
|
-
createIndexSql = new db_1.StatementFactory().createIndex(index, table.name).sql;
|
|
243
|
-
indexName = db_1.StatementUtil.getIndexName(table.name, index);
|
|
244
|
-
this.logger.info({
|
|
245
|
-
message: "[".concat(table.name, "] Creating index: ").concat(indexName, " (").concat(typeof index.columns === 'string' ? index.columns : index.columns.join(', '), ")"),
|
|
246
|
-
});
|
|
247
|
-
return [4 /*yield*/, this.spannerDriver.runUpdateSchema(createIndexSql)];
|
|
248
|
-
case 14:
|
|
249
|
-
_0.sent();
|
|
250
|
-
this.logger.info({
|
|
251
|
-
message: "[".concat(table.name, "] Created index: ").concat(indexName, " (").concat(typeof index.columns === 'string' ? index.columns : index.columns.join(', '), ")"),
|
|
252
|
-
});
|
|
253
|
-
_0.label = 15;
|
|
254
|
-
case 15:
|
|
255
|
-
_y++;
|
|
256
|
-
return [3 /*break*/, 13];
|
|
257
|
-
case 16: return [2 /*return*/];
|
|
180
|
+
_y.sent();
|
|
181
|
+
return [2 /*return*/];
|
|
258
182
|
}
|
|
259
183
|
});
|
|
260
184
|
});
|
|
261
185
|
};
|
|
186
|
+
SpannerSchemaOperations.prototype.createTableStatements = function (table) {
|
|
187
|
+
var _a, _b, _c, _d;
|
|
188
|
+
var indexes = [];
|
|
189
|
+
for (var _i = 0, _e = table.indexes; _i < _e.length; _i++) {
|
|
190
|
+
var _f = _e[_i], name_1 = _f.name, columns = _f.columns, unique = _f.unique;
|
|
191
|
+
indexes.push({ name: name_1, columns: columns.map(function (x) { return table.columns[x].name; }), unique: unique });
|
|
192
|
+
}
|
|
193
|
+
var serializedColumns = [];
|
|
194
|
+
var foreignKeys = [];
|
|
195
|
+
for (var columnPropertyName in table.columns) {
|
|
196
|
+
var column = table.columns[columnPropertyName];
|
|
197
|
+
var columnType = new SpannerColumnTypeFactory_1.SpannerColumnTypeFactory().getType(column);
|
|
198
|
+
serializedColumns.push({ name: column.name, type: columnType, nullable: (_a = column.options) === null || _a === void 0 ? void 0 : _a.nullable });
|
|
199
|
+
this.logger.info({ message: "[".concat(table.name, "] Creating column: ").concat(column.name, " (").concat(column.constructor.name, ")") });
|
|
200
|
+
if ((_c = (_b = column.options) === null || _b === void 0 ? void 0 : _b.unique) === null || _c === void 0 ? void 0 : _c.unique) {
|
|
201
|
+
indexes.push({
|
|
202
|
+
name: column.options.unique.indexName,
|
|
203
|
+
columns: [table.columns[column.name].name],
|
|
204
|
+
unique: true,
|
|
205
|
+
});
|
|
206
|
+
this.logger.info({ message: "[".concat(table.name, ".").concat(column.name, "] Adding unique constraint") });
|
|
207
|
+
}
|
|
208
|
+
if ((_d = column.options) === null || _d === void 0 ? void 0 : _d.references) {
|
|
209
|
+
foreignKeys.push({ table: column.options.references.table, column: 'id', referencedByColumn: column.name });
|
|
210
|
+
this.logger.info({
|
|
211
|
+
message: "[".concat(table.name, ".").concat(column.name, "] Adding foreign key -> ").concat(column.options.references.table, ".id"),
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
var statements = [new db_1.StatementFactory().createTable(table.name, serializedColumns, 'id', foreignKeys).sql];
|
|
216
|
+
for (var _g = 0, indexes_1 = indexes; _g < indexes_1.length; _g++) {
|
|
217
|
+
var index = indexes_1[_g];
|
|
218
|
+
var indexName = db_1.StatementUtil.getIndexName(table.name, index);
|
|
219
|
+
this.logger.info({
|
|
220
|
+
message: "[".concat(table.name, "] Creating index: ").concat(indexName, " (").concat(index.columns.join(', '), ")"),
|
|
221
|
+
});
|
|
222
|
+
statements.push(new db_1.StatementFactory().createIndex(index, table.name).sql);
|
|
223
|
+
}
|
|
224
|
+
return statements;
|
|
225
|
+
};
|
|
262
226
|
/**
|
|
263
227
|
* Spanner supports exactly one in-place column type change: widening a `STRING(n)` to a larger
|
|
264
228
|
* `STRING(m)` or `STRING(MAX)`. Returns the `ALTER COLUMN` statement when `change` is such a
|