@proteinjs/db-driver-spanner 1.20.0 → 1.20.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"SpannerSchemaOperations.js","sourceRoot":"","sources":["../../src/SpannerSchemaOperations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA2C;AAC3C,oCAOuB;AAEvB,uEAAsE;AAEtE,IAAM,SAAS,GAAG,UAAC,GAAW;IAC5B,OAAA,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;AAA5E,CAA4E,CAAC;AAE/E;IAGE,iCAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAFxC,WAAM,GAAG,IAAI,eAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,cAAc,CAAQ,EAAE,CAAC,CAAC;IAEtD,CAAC;IAEpD;;;;;;OAMG;IACG,8CAAY,GAAlB,UAAmB,MAAoB;;;;;;wBAC/B,UAAU,GAAa,EAAE,CAAC;wBAChC,WAA0B,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,EAAE;4BAAjB,KAAK;4BACd,UAAU,CAAC,IAAI,OAAf,UAAU,EAAS,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE;yBACvD;wBAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;4BAC3B,sBAAO;yBACR;wBAED,qBAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,EAAA;;wBAApD,SAAoD,CAAC;;;;;KACtD;IAEK,4CAAU,GAAhB,UAAiB,KAAiB,EAAE,YAA0B;;;;;;;wBACtD,WAAW,GAAqB;4BACpC,SAAS,EAAE,KAAK,CAAC,IAAI;4BACrB,YAAY,EAAE,EAAE;4BAChB,iBAAiB,EAAE,EAAE;4BACrB,gBAAgB,EAAE,EAAE;4BACpB,aAAa,EAAE,EAAE;yBAClB,CAAC;wBACI,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;wBAC3C,YAAY,GAAG,YAAY,CAAC,eAAe,CAAC;wBAClD,WAA6D,EAA5B,KAAA,YAAY,CAAC,eAAe,EAA5B,cAA4B,EAA5B,IAA4B,EAAE;4BAApD,kBAAkB;4BACrB,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;4BAC3C,UAAU,GAAG,IAAI,mDAAwB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;4BAClE,MAAA,WAAW,CAAC,YAAY,0CAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAA,MAAM,CAAC,OAAO,0CAAE,QAAQ,EAAE,CAAC,CAAC;4BAC5G,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,gCAAsB,MAAM,CAAC,IAAI,eAAK,MAAM,CAAC,WAAW,CAAC,IAAI,MAAG,EAAE,CAAC,CAAC;4BAC9G,IAAI,CAAA,MAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,0CAAE,MAAM,KAAI,YAAY,CAAC,oCAAoC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gCAC7G,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gCACjG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,cAAI,MAAM,CAAC,IAAI,+BAA4B,EAAE,CAAC,CAAC;6BAC1F;4BAED,IAAI,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,UAAU,KAAI,YAAY,CAAC,8BAA8B,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gCACnG,MAAA,WAAW,CAAC,gBAAgB,0CAAE,IAAI,CAAC;oCACjC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;oCACtC,MAAM,EAAE,IAAI;oCACZ,kBAAkB,EAAE,MAAM,CAAC,IAAI;iCAChC,CAAC,CAAC;gCACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oCACf,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,cAAI,MAAM,CAAC,IAAI,qCAA2B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,QAAK;iCACtG,CAAC,CAAC;6BACJ;yBACF;wBAED,WAAwE,EAA/C,KAAA,YAAY,CAAC,kCAAkC,EAA/C,cAA+C,EAA/C,IAA+C,EAAE;4BAA/D,UAAU;4BACnB,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,cAAI,UAAU,iCAA8B,EAAE,CAAC,CAAC;yBAC3F;wBAED,WAAuD,EAA9B,KAAA,YAAY,CAAC,iBAAiB,EAA9B,cAA8B,EAA9B,IAA8B,EAAE;4BAA9C,UAAU;4BACnB,MAAA,WAAW,CAAC,iBAAiB,0CAAE,IAAI,CAAC,UAAU,CAAC,CAAC;4BAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gCACf,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,cAAI,UAAU,CAAC,kBAAkB,uCAA6B,UAAU,CAAC,KAAK,cAAI,UAAU,CAAC,MAAM,CAAE;6BAC7H,CAAC,CAAC;yBACJ;wBAEK,kBAAkB,GAAa,EAAE,CAAC;wBACxC,WAA6D,EAA9B,KAAA,YAAY,CAAC,iBAAiB,EAA9B,cAA8B,EAA9B,IAA8B,EAAE;4BAApD,gBAAgB;4BACnB,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;4BAChF,IAAI,CAAC,iBAAiB,EAAE;gCAChB,YAAY,GAAG,WAAI,KAAK,CAAC,IAAI,cAAI,gBAAgB,CAAC,IAAI,qIAA2H,gBAAgB,CAAC,OAAO,kBAAQ,gBAAgB,CAAC,OAAO,CAAE,CAAC;gCAClP,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;gCAC7C,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;6BAC/B;4BACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gCACf,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,cAAI,gBAAgB,CAAC,IAAI,gCAAsB,gBAAgB,CAAC,OAAO,iBAAO,gBAAgB,CAAC,OAAO,CAAE;6BAChI,CAAC,CAAC;4BACH,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;yBAC5C;wBAED,WAAqE,EAAlC,KAAA,YAAY,CAAC,qBAAqB,EAAlC,cAAkC,EAAlC,IAAkC,EAAE;4BAA5D,oBAAoB;4BACvB,YAAY,GAAG,WAAI,KAAK,CAAC,IAAI,cAAI,oBAAoB,CAAC,IAAI,+HAAqH,oBAAoB,CAAC,QAAQ,KAAK,IAAI,CAAE,CAAC;4BAC9N,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;4BAC7C,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;yBAC/B;wBAED,WAA6D,EAA5B,KAAA,YAAY,CAAC,eAAe,EAA5B,cAA4B,EAA5B,IAA4B,EAAE;4BAApD,kBAAkB;4BACrB,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;4BAC3C,YAAY,GAAG,WAAI,KAAK,CAAC,IAAI,cAAI,MAAM,CAAC,OAAO,iFAAuE,MAAM,CAAC,OAAO,iBAAO,MAAM,CAAC,IAAI,CAAE,CAAC;4BAC/J,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;4BAC7C,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;yBAC/B;wBAKK,UAAU,GAAa,IAAI,qBAAgB,EAAE;6BAChD,UAAU,CAAC,WAAW,CAAC;6BACvB,GAAG,CAAC,UAAC,cAAc,IAAK,OAAA,cAAc,CAAC,GAAG,EAAlB,CAAkB,CAAC,CAAC;wBAC/C,UAAU,CAAC,IAAI,OAAf,UAAU,EAAS,kBAAkB,EAAE;wBAEvC,WAA8C,EAA1B,KAAA,YAAY,CAAC,aAAa,EAA1B,cAA0B,EAA1B,IAA0B,EAAE;4BAArC,KAAK;4BACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gCACf,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,+BAAqB,KAAK,CAAC,IAAI,eAAK,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAG;6BAC3I,CAAC,CAAC;4BACH,UAAU,CAAC,IAAI,CAAC,IAAI,qBAAgB,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;yBAC1E;wBAED,WAAgD,EAA5B,KAAA,YAAY,CAAC,eAAe,EAA5B,cAA4B,EAA5B,IAA4B,EAAE;4BAAvC,KAAK;4BACR,SAAS,GAAG,kBAAa,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;4BAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gCACf,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,+BAAqB,SAAS,eAAK,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAG;6BAC1I,CAAC,CAAC;4BACH,UAAU,CAAC,IAAI,CAAC,IAAI,qBAAgB,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;yBAC5E;wBAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;4BAC3B,sBAAO;yBACR;wBAED,qBAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,EAAA;;wBAApD,SAAoD,CAAC;;;;;KACtD;IAEO,uDAAqB,GAA7B,UAA8B,KAAiB;;QAC7C,IAAM,OAAO,GAA6D,EAAE,CAAC;QAC7E,KAAwC,UAAa,EAAb,KAAA,KAAK,CAAC,OAAO,EAAb,cAAa,EAAb,IAAa,EAAE;YAA5C,IAAA,WAAyB,EAAvB,MAAI,UAAA,EAAE,OAAO,aAAA,EAAE,MAAM,YAAA;YAChC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,QAAA,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,KAAK,CAAC,OAAO,CAAC,CAAW,CAAE,CAAC,IAAI,EAAhC,CAAgC,CAAC,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;SAC/F;QAED,IAAM,iBAAiB,GAAyD,EAAE,CAAC;QACnF,IAAM,WAAW,GAAoE,EAAE,CAAC;QACxF,KAAK,IAAM,kBAAkB,IAAI,KAAK,CAAC,OAAO,EAAE;YAC9C,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACjD,IAAM,UAAU,GAAG,IAAI,mDAAwB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAClE,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAA,MAAM,CAAC,OAAO,0CAAE,QAAQ,EAAE,CAAC,CAAC;YACpG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,gCAAsB,MAAM,CAAC,IAAI,eAAK,MAAM,CAAC,WAAW,CAAC,IAAI,MAAG,EAAE,CAAC,CAAC;YAC9G,IAAI,MAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,0CAAE,MAAM,EAAE;gBAClC,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS;oBACrC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC;oBAC3C,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,cAAI,MAAM,CAAC,IAAI,+BAA4B,EAAE,CAAC,CAAC;aAC1F;YAED,IAAI,MAAA,MAAM,CAAC,OAAO,0CAAE,UAAU,EAAE;gBAC9B,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC5G,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,cAAI,MAAM,CAAC,IAAI,qCAA2B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,QAAK;iBACtG,CAAC,CAAC;aACJ;SACF;QAED,IAAM,UAAU,GAAG,CAAC,IAAI,qBAAgB,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9G,KAAoB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE;YAAxB,IAAM,KAAK,gBAAA;YACd,IAAM,SAAS,GAAG,kBAAa,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,OAAO,EAAE,WAAI,KAAK,CAAC,IAAI,+BAAqB,SAAS,eAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAG;aACtF,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,IAAI,qBAAgB,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;SAC5E;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACK,yDAAuB,GAA/B,UACE,KAAiB,EACjB,MAA0D;;QAE1D,IAAM,iBAAiB,GAAG,UAAC,IAAY;YACrC,IAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,EAAE;gBACV,OAAO,IAAI,CAAC;aACb;YACD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC;QACF,IAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,IAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,IAAM,UAAU,GACd,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,KAAK,IAAI,CAAC,SAAS,KAAK,KAAK,IAAI,SAAS,GAAG,SAAS,CAAC,CAAC;QACpH,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,IAAI,CAAC;SACb;QAED,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAC,WAAW,IAAK,OAAA,WAAW,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAhC,CAAgC,CAAC,CAAC;QACpG,IAAM,OAAO,GAAG,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,0CAAE,QAAQ,MAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,uBAAiB,KAAK,CAAC,IAAI,6BAAqB,MAAM,CAAC,IAAI,eAAM,MAAM,CAAC,OAAO,SAAG,OAAO,CAAE,CAAC;IACrG,CAAC;IACH,8BAAC;AAAD,CAAC,AAtMD,IAsMC;AAtMY,0DAAuB"}
1
+ {"version":3,"file":"SpannerSchemaOperations.js","sourceRoot":"","sources":["../../src/SpannerSchemaOperations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import '../generated/test/index';
2
+ //# sourceMappingURL=ConcurrentSchemaReconcile.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConcurrentSchemaReconcile.test.d.ts","sourceRoot":"","sources":["../../test/ConcurrentSchemaReconcile.test.ts"],"names":[],"mappings":"AAIA,OAAO,yBAAyB,CAAC"}
@@ -0,0 +1,381 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ var db_1 = require("@proteinjs/db");
55
+ var db_driver_spanner_1 = require("@proteinjs/db-driver-spanner");
56
+ var getDropTestTable_1 = require("./util/getDropTestTable");
57
+ var SpannerEmulatorProvisioner_1 = require("./util/SpannerEmulatorProvisioner");
58
+ require("../generated/test/index");
59
+ /**
60
+ * The concurrent-schema-reconcile race (closed by TableManager.reconcileConcurrentSchemaChange +
61
+ * SpannerSchemaOperations.isAlreadyExistsError).
62
+ *
63
+ * On a schema-changing release the migration Job, booting pods, and multiple replicas all run
64
+ * Db.init -> loadTables at once. loadTable/loadTables is check-then-act: two actors both observe a
65
+ * column/table as absent and both issue the CREATE/ALTER; Spanner serializes the DDL so the object
66
+ * lands EXACTLY once, and the loser's operation fails with a duplicate-name / duplicate-column
67
+ * error. Before the fix the loser rethrew — a booting pod exited (CrashLoopBackOff) and the
68
+ * migration Job exited 1 (a spurious migration-gate failure).
69
+ *
70
+ * The tolerance is not a blanket swallow: it fires only for the already-exists error CLASS and only
71
+ * after RE-READING the live schema and confirming it matches the INTENDED definition.
72
+ */
73
+ var spannerConfig = {
74
+ projectId: 'proteinjs-test',
75
+ instanceName: 'proteinjs-test',
76
+ databaseName: 'test',
77
+ };
78
+ var spannerDriver = new db_driver_spanner_1.SpannerDriver(spannerConfig);
79
+ /** Base table, `name` only — the pre-change schema. */
80
+ var baseTable = function () {
81
+ return new (/** @class */ (function (_super) {
82
+ __extends(class_1, _super);
83
+ function class_1() {
84
+ var _this = _super !== null && _super.apply(this, arguments) || this;
85
+ _this.name = 'db_test_reconcile';
86
+ _this.columns = (0, db_1.withRecordColumns)({
87
+ name: new db_1.StringColumn('name'),
88
+ });
89
+ return _this;
90
+ }
91
+ return class_1;
92
+ }(db_1.Table)))();
93
+ };
94
+ /** Same table redeclared with an added `nickname` column — the alter under contention. */
95
+ var grownTable = function () {
96
+ return new (/** @class */ (function (_super) {
97
+ __extends(class_2, _super);
98
+ function class_2() {
99
+ var _this = _super !== null && _super.apply(this, arguments) || this;
100
+ _this.name = 'db_test_reconcile';
101
+ _this.columns = (0, db_1.withRecordColumns)({
102
+ name: new db_1.StringColumn('name'),
103
+ nickname: new db_1.StringColumn('nickname'),
104
+ });
105
+ return _this;
106
+ }
107
+ return class_2;
108
+ }(db_1.Table)))();
109
+ };
110
+ /** `qty` declared as a STRING — the definition the "winner" lands. */
111
+ var conflictStringTable = function () {
112
+ return new (/** @class */ (function (_super) {
113
+ __extends(class_3, _super);
114
+ function class_3() {
115
+ var _this = _super !== null && _super.apply(this, arguments) || this;
116
+ _this.name = 'db_test_reconcile_conflict';
117
+ _this.columns = (0, db_1.withRecordColumns)({
118
+ qty: new db_1.StringColumn('qty'),
119
+ });
120
+ return _this;
121
+ }
122
+ return class_3;
123
+ }(db_1.Table)))();
124
+ };
125
+ /** Same table+column redeclared as INT64 — a GENUINE conflict with what landed. */
126
+ var conflictIntegerTable = function () {
127
+ return new (/** @class */ (function (_super) {
128
+ __extends(class_4, _super);
129
+ function class_4() {
130
+ var _this = _super !== null && _super.apply(this, arguments) || this;
131
+ _this.name = 'db_test_reconcile_conflict';
132
+ _this.columns = (0, db_1.withRecordColumns)({
133
+ qty: new db_1.IntegerColumn('qty'),
134
+ });
135
+ return _this;
136
+ }
137
+ return class_4;
138
+ }(db_1.Table)))();
139
+ };
140
+ /** House-style access to reconcile internals: a typed cast on the instance, not a public method. */
141
+ var internals = function (tableManager) { return tableManager; };
142
+ /** House-style access to the driver-specific classifier. */
143
+ var classifier = function (tableManager) {
144
+ return tableManager.schemaOperations;
145
+ };
146
+ /**
147
+ * Spy on THIS TableManager instance's own logger.warn. TableManager (@proteinjs/db) and this test
148
+ * (@proteinjs/db-driver-spanner) resolve separate physical @proteinjs/logger copies, so a
149
+ * Logger.prototype spy here would never intercept the reconcile's warns — spying the instance's
150
+ * method does, regardless of module identity.
151
+ */
152
+ var spyOnReconcileWarn = function (tableManager) {
153
+ return jest.spyOn(tableManager.logger, 'warn');
154
+ };
155
+ describe('Concurrent schema reconcile', function () {
156
+ var dropTable = (0, getDropTestTable_1.getDropTestTable)(spannerDriver);
157
+ var tableManager = spannerDriver.getTableManager();
158
+ beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
159
+ return __generator(this, function (_a) {
160
+ switch (_a.label) {
161
+ case 0: return [4 /*yield*/, SpannerEmulatorProvisioner_1.SpannerEmulatorProvisioner.ensureProvisioned(spannerConfig)];
162
+ case 1:
163
+ _a.sent();
164
+ return [2 /*return*/];
165
+ }
166
+ });
167
+ }); }, 60000);
168
+ beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () {
169
+ return __generator(this, function (_a) {
170
+ switch (_a.label) {
171
+ case 0: return [4 /*yield*/, dropTable(baseTable())];
172
+ case 1:
173
+ _a.sent();
174
+ return [4 /*yield*/, dropTable(conflictStringTable())];
175
+ case 2:
176
+ _a.sent();
177
+ return [2 /*return*/];
178
+ }
179
+ });
180
+ }); }, 60000);
181
+ afterAll(function () { return __awaiter(void 0, void 0, void 0, function () {
182
+ return __generator(this, function (_a) {
183
+ switch (_a.label) {
184
+ case 0: return [4 /*yield*/, dropTable(baseTable())];
185
+ case 1:
186
+ _a.sent();
187
+ return [4 /*yield*/, dropTable(conflictStringTable())];
188
+ case 2:
189
+ _a.sent();
190
+ SpannerEmulatorProvisioner_1.SpannerEmulatorProvisioner.release();
191
+ return [2 /*return*/];
192
+ }
193
+ });
194
+ }); }, 60000);
195
+ afterEach(function () {
196
+ jest.restoreAllMocks();
197
+ });
198
+ test('two actors adding the SAME new column both succeed; the column lands once with the intended type', function () { return __awaiter(void 0, void 0, void 0, function () {
199
+ var loserTm, realGetColumnMetadata, loserWarnSpy, toleratedWarn, columnMetadata, cleanWarnSpy, runUpdateSchemaSpy;
200
+ return __generator(this, function (_a) {
201
+ switch (_a.label) {
202
+ case 0:
203
+ // Winner: create the base table, then add `nickname` for real.
204
+ return [4 /*yield*/, tableManager.loadTable(baseTable())];
205
+ case 1:
206
+ // Winner: create the base table, then add `nickname` for real.
207
+ _a.sent();
208
+ return [4 /*yield*/, tableManager.loadTable(grownTable())];
209
+ case 2:
210
+ _a.sent();
211
+ loserTm = spannerDriver.getTableManager();
212
+ realGetColumnMetadata = loserTm.schemaMetadata.getColumnMetadata.bind(loserTm.schemaMetadata);
213
+ jest.spyOn(loserTm.schemaMetadata, 'getColumnMetadata').mockImplementationOnce(function (table) { return __awaiter(void 0, void 0, void 0, function () {
214
+ var columnMetadata;
215
+ return __generator(this, function (_a) {
216
+ switch (_a.label) {
217
+ case 0: return [4 /*yield*/, realGetColumnMetadata(table)];
218
+ case 1:
219
+ columnMetadata = _a.sent();
220
+ delete columnMetadata['nickname'];
221
+ return [2 /*return*/, columnMetadata];
222
+ }
223
+ });
224
+ }); });
225
+ loserWarnSpy = spyOnReconcileWarn(loserTm);
226
+ // OUTCOME: the loser's Db.init-equivalent does NOT reject — the duplicate DDL error is
227
+ // reconciled to success. (Pre-fix, this rejects with "Duplicate column name" — the red run.)
228
+ return [4 /*yield*/, expect(loserTm.loadTable(grownTable())).resolves.toBeUndefined()];
229
+ case 3:
230
+ // OUTCOME: the loser's Db.init-equivalent does NOT reject — the duplicate DDL error is
231
+ // reconciled to success. (Pre-fix, this rejects with "Duplicate column name" — the red run.)
232
+ _a.sent();
233
+ toleratedWarn = loserWarnSpy.mock.calls.find(function (_a) {
234
+ var entry = _a[0];
235
+ return /\[schema reconcile\] tolerated concurrent ALREADY_EXISTS/.test(String(entry.message));
236
+ });
237
+ expect(toleratedWarn).toBeDefined();
238
+ expect(String(toleratedWarn[0].message)).toContain('db_test_reconcile');
239
+ return [4 /*yield*/, tableManager.schemaMetadata.getColumnMetadata(grownTable())];
240
+ case 4:
241
+ columnMetadata = _a.sent();
242
+ expect(columnMetadata['nickname']).toBeDefined();
243
+ expect(columnMetadata['nickname'].type).toBe('STRING(255)');
244
+ cleanWarnSpy = spyOnReconcileWarn(tableManager);
245
+ runUpdateSchemaSpy = jest.spyOn(spannerDriver, 'runUpdateSchema');
246
+ return [4 /*yield*/, tableManager.loadTable(grownTable())];
247
+ case 5:
248
+ _a.sent();
249
+ expect(runUpdateSchemaSpy).not.toHaveBeenCalled();
250
+ expect(cleanWarnSpy.mock.calls.filter(function (_a) {
251
+ var entry = _a[0];
252
+ return /\[schema reconcile\]/.test(String(entry.message));
253
+ })).toHaveLength(0);
254
+ return [2 /*return*/];
255
+ }
256
+ });
257
+ }); }, 60000);
258
+ test('two actors creating the SAME absent table both succeed; the table lands once', function () { return __awaiter(void 0, void 0, void 0, function () {
259
+ var loserTm, _a;
260
+ return __generator(this, function (_b) {
261
+ switch (_b.label) {
262
+ case 0:
263
+ // Winner: create the table for real.
264
+ return [4 /*yield*/, tableManager.loadTable(baseTable())];
265
+ case 1:
266
+ // Winner: create the table for real.
267
+ _b.sent();
268
+ loserTm = spannerDriver.getTableManager();
269
+ jest.spyOn(loserTm.schemaMetadata, 'tableExists').mockImplementationOnce(function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
270
+ return [2 /*return*/, false];
271
+ }); }); });
272
+ // OUTCOME: the loser's create does NOT reject. (Pre-fix, this rejects with "Duplicate name in
273
+ // schema" — the red run.)
274
+ return [4 /*yield*/, expect(loserTm.loadTable(baseTable())).resolves.toBeUndefined()];
275
+ case 2:
276
+ // OUTCOME: the loser's create does NOT reject. (Pre-fix, this rejects with "Duplicate name in
277
+ // schema" — the red run.)
278
+ _b.sent();
279
+ _a = expect;
280
+ return [4 /*yield*/, tableManager.tableExists(baseTable())];
281
+ case 3:
282
+ _a.apply(void 0, [_b.sent()]).toBe(true);
283
+ return [2 /*return*/];
284
+ }
285
+ });
286
+ }); }, 60000);
287
+ test('GENUINE CONFLICT: an already-exists error whose live definition differs from intent STILL throws', function () { return __awaiter(void 0, void 0, void 0, function () {
288
+ var duplicateError, error_1, warnSpy, conflictWarn;
289
+ return __generator(this, function (_a) {
290
+ switch (_a.label) {
291
+ case 0:
292
+ // Winner landed `qty` as STRING(MAX).
293
+ return [4 /*yield*/, tableManager.loadTable(conflictStringTable())];
294
+ case 1:
295
+ // Winner landed `qty` as STRING(MAX).
296
+ _a.sent();
297
+ _a.label = 2;
298
+ case 2:
299
+ _a.trys.push([2, 4, , 5]);
300
+ return [4 /*yield*/, spannerDriver.runUpdateSchema('ALTER TABLE `db_test_reconcile_conflict` ADD COLUMN `qty` INT64')];
301
+ case 3:
302
+ _a.sent();
303
+ return [3 /*break*/, 5];
304
+ case 4:
305
+ error_1 = _a.sent();
306
+ duplicateError = error_1;
307
+ return [3 /*break*/, 5];
308
+ case 5:
309
+ expect(duplicateError).toBeDefined();
310
+ expect(classifier(tableManager).isAlreadyExistsError(duplicateError)).toBe(true);
311
+ warnSpy = spyOnReconcileWarn(tableManager);
312
+ return [4 /*yield*/, expect(internals(tableManager).reconcileConcurrentSchemaChange([conflictIntegerTable()], duplicateError)).rejects.toBe(duplicateError)];
313
+ case 6:
314
+ _a.sent();
315
+ conflictWarn = warnSpy.mock.calls.find(function (_a) {
316
+ var entry = _a[0];
317
+ return /\[schema reconcile\].*genuine conflict/.test(String(entry.message));
318
+ });
319
+ expect(conflictWarn).toBeDefined();
320
+ expect(String(conflictWarn[0].message)).toContain('db_test_reconcile_conflict');
321
+ return [2 /*return*/];
322
+ }
323
+ });
324
+ }); }, 60000);
325
+ test('UNRELATED ERROR CLASS: a non-already-exists DDL error propagates unchanged', function () { return __awaiter(void 0, void 0, void 0, function () {
326
+ var unrelatedError, error_2;
327
+ return __generator(this, function (_a) {
328
+ switch (_a.label) {
329
+ case 0:
330
+ // A table that already matches the live schema — verification alone would find nothing to do.
331
+ return [4 /*yield*/, tableManager.loadTable(baseTable())];
332
+ case 1:
333
+ // A table that already matches the live schema — verification alone would find nothing to do.
334
+ _a.sent();
335
+ _a.label = 2;
336
+ case 2:
337
+ _a.trys.push([2, 4, , 5]);
338
+ return [4 /*yield*/, spannerDriver.runUpdateSchema('CREATE INDEX db_test_reconcile_bad ON db_test_reconcile(no_such_col)')];
339
+ case 3:
340
+ _a.sent();
341
+ return [3 /*break*/, 5];
342
+ case 4:
343
+ error_2 = _a.sent();
344
+ unrelatedError = error_2;
345
+ return [3 /*break*/, 5];
346
+ case 5:
347
+ expect(unrelatedError).toBeDefined();
348
+ expect(classifier(tableManager).isAlreadyExistsError(unrelatedError)).toBe(false);
349
+ // reconcile must NOT touch this — it is not the already-exists class, so it propagates
350
+ // unchanged. (Bite: broaden the classifier to match every error and this rejection disappears,
351
+ // because verification finds no pending changes on the up-to-date table and would swallow it.)
352
+ return [4 /*yield*/, expect(internals(tableManager).reconcileConcurrentSchemaChange([baseTable()], unrelatedError)).rejects.toBe(unrelatedError)];
353
+ case 6:
354
+ // reconcile must NOT touch this — it is not the already-exists class, so it propagates
355
+ // unchanged. (Bite: broaden the classifier to match every error and this rejection disappears,
356
+ // because verification finds no pending changes on the up-to-date table and would swallow it.)
357
+ _a.sent();
358
+ return [2 /*return*/];
359
+ }
360
+ });
361
+ }); }, 60000);
362
+ test('classifier matches ONLY the already-exists class — by code family AND message class', function () {
363
+ var isAlreadyExists = function (code, message) {
364
+ return classifier(tableManager).isAlreadyExistsError({ code: code, message: message });
365
+ };
366
+ // Matched: the duplicate/already-exists phrasings under the ALREADY_EXISTS code family {6, 9}.
367
+ expect(isAlreadyExists(9, '9 FAILED_PRECONDITION: Duplicate column name db_test.qty.')).toBe(true);
368
+ expect(isAlreadyExists(9, '9 FAILED_PRECONDITION: Duplicate name in schema: db_test.')).toBe(true);
369
+ expect(isAlreadyExists(6, '6 ALREADY_EXISTS: Table db_test already exists')).toBe(true);
370
+ // NOT matched — other code-9 (FAILED_PRECONDITION) errors that must never be swallowed.
371
+ expect(isAlreadyExists(9, '9 FAILED_PRECONDITION: a concurrent schema change operation or read-write transaction is already in progress')).toBe(false);
372
+ expect(isAlreadyExists(9, '9 FAILED_PRECONDITION: Index backfill failed: uniqueness violation')).toBe(false);
373
+ // NOT matched — right message, wrong code family.
374
+ expect(isAlreadyExists(3, '3 INVALID_ARGUMENT: Duplicate column name db_test.qty.')).toBe(false);
375
+ expect(isAlreadyExists(5, '5 NOT_FOUND: Table not found: db_test')).toBe(false);
376
+ // NOT matched — reconcile-layer errors are plain Errors with no `code`.
377
+ expect(classifier(tableManager).isAlreadyExistsError(new Error('Unable to change column types in Spanner'))).toBe(false);
378
+ expect(classifier(tableManager).isAlreadyExistsError(undefined)).toBe(false);
379
+ });
380
+ });
381
+ //# sourceMappingURL=ConcurrentSchemaReconcile.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConcurrentSchemaReconcile.test.js","sourceRoot":"","sources":["../../test/ConcurrentSchemaReconcile.test.ts"],"names":[],"mappings":"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"}