velocious 1.0.698 → 1.0.700

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.
Files changed (95) hide show
  1. package/README.md +2 -2
  2. package/build/configuration-types.js +23 -0
  3. package/build/configuration.js +136 -1
  4. package/build/database/advisory-lock-backend-policy.js +204 -0
  5. package/build/database/advisory-lock-file-backend.js +348 -0
  6. package/build/database/advisory-lock-runner.js +239 -16
  7. package/build/database/drivers/base.js +318 -15
  8. package/build/database/drivers/mssql/index.js +1 -1
  9. package/build/database/drivers/mysql/index.js +4 -2
  10. package/build/database/drivers/pgsql/index.js +4 -2
  11. package/build/database/drivers/sqlite/base.js +13 -129
  12. package/build/database/drivers/sqlite/index.js +41 -62
  13. package/build/database/migrator.js +120 -50
  14. package/build/database/record/attachments/store.js +84 -1
  15. package/build/environment-handlers/base.js +13 -0
  16. package/build/environment-handlers/node.js +11 -0
  17. package/build/http-server/server-lock.js +21 -115
  18. package/build/src/configuration-types.d.ts +68 -0
  19. package/build/src/configuration-types.d.ts.map +1 -1
  20. package/build/src/configuration-types.js +21 -1
  21. package/build/src/configuration.d.ts +100 -1
  22. package/build/src/configuration.d.ts.map +1 -1
  23. package/build/src/configuration.js +124 -2
  24. package/build/src/database/advisory-lock-backend-policy.d.ts +145 -0
  25. package/build/src/database/advisory-lock-backend-policy.d.ts.map +1 -0
  26. package/build/src/database/advisory-lock-backend-policy.js +184 -0
  27. package/build/src/database/advisory-lock-file-backend.d.ts +194 -0
  28. package/build/src/database/advisory-lock-file-backend.d.ts.map +1 -0
  29. package/build/src/database/advisory-lock-file-backend.js +313 -0
  30. package/build/src/database/advisory-lock-runner.d.ts +116 -15
  31. package/build/src/database/advisory-lock-runner.d.ts.map +1 -1
  32. package/build/src/database/advisory-lock-runner.js +190 -17
  33. package/build/src/database/drivers/base.d.ts +125 -4
  34. package/build/src/database/drivers/base.d.ts.map +1 -1
  35. package/build/src/database/drivers/base.js +282 -17
  36. package/build/src/database/drivers/mssql/index.d.ts +1 -1
  37. package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
  38. package/build/src/database/drivers/mssql/index.js +2 -2
  39. package/build/src/database/drivers/mysql/index.d.ts +4 -2
  40. package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
  41. package/build/src/database/drivers/mysql/index.js +5 -3
  42. package/build/src/database/drivers/pgsql/index.d.ts +4 -2
  43. package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
  44. package/build/src/database/drivers/pgsql/index.js +5 -3
  45. package/build/src/database/drivers/sqlite/base.d.ts +11 -49
  46. package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
  47. package/build/src/database/drivers/sqlite/base.js +14 -114
  48. package/build/src/database/drivers/sqlite/index.d.ts +28 -19
  49. package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
  50. package/build/src/database/drivers/sqlite/index.js +41 -59
  51. package/build/src/database/migrator.d.ts.map +1 -1
  52. package/build/src/database/migrator.js +110 -56
  53. package/build/src/database/record/attachments/store.d.ts +0 -3
  54. package/build/src/database/record/attachments/store.d.ts.map +1 -1
  55. package/build/src/database/record/attachments/store.js +71 -2
  56. package/build/src/environment-handlers/base.d.ts +14 -0
  57. package/build/src/environment-handlers/base.d.ts.map +1 -1
  58. package/build/src/environment-handlers/base.js +13 -1
  59. package/build/src/environment-handlers/node.d.ts +11 -0
  60. package/build/src/environment-handlers/node.d.ts.map +1 -1
  61. package/build/src/environment-handlers/node.js +11 -1
  62. package/build/src/http-server/server-lock.d.ts +13 -37
  63. package/build/src/http-server/server-lock.d.ts.map +1 -1
  64. package/build/src/http-server/server-lock.js +22 -109
  65. package/build/src/testing/test-runner.d.ts +74 -0
  66. package/build/src/testing/test-runner.d.ts.map +1 -1
  67. package/build/src/testing/test-runner.js +140 -1
  68. package/build/src/testing/test-tenant-database-pool.d.ts +183 -0
  69. package/build/src/testing/test-tenant-database-pool.d.ts.map +1 -0
  70. package/build/src/testing/test-tenant-database-pool.js +388 -0
  71. package/build/src/testing/velocious-attempt-executor.d.ts.map +1 -1
  72. package/build/src/testing/velocious-attempt-executor.js +43 -1
  73. package/build/testing/test-runner.js +152 -0
  74. package/build/testing/test-tenant-database-pool.js +438 -0
  75. package/build/testing/velocious-attempt-executor.js +44 -0
  76. package/package.json +1 -1
  77. package/src/configuration-types.js +23 -0
  78. package/src/configuration.js +136 -1
  79. package/src/database/advisory-lock-backend-policy.js +204 -0
  80. package/src/database/advisory-lock-file-backend.js +348 -0
  81. package/src/database/advisory-lock-runner.js +239 -16
  82. package/src/database/drivers/base.js +318 -15
  83. package/src/database/drivers/mssql/index.js +1 -1
  84. package/src/database/drivers/mysql/index.js +4 -2
  85. package/src/database/drivers/pgsql/index.js +4 -2
  86. package/src/database/drivers/sqlite/base.js +13 -129
  87. package/src/database/drivers/sqlite/index.js +41 -62
  88. package/src/database/migrator.js +120 -50
  89. package/src/database/record/attachments/store.js +84 -1
  90. package/src/environment-handlers/base.js +13 -0
  91. package/src/environment-handlers/node.js +11 -0
  92. package/src/http-server/server-lock.js +21 -115
  93. package/src/testing/test-runner.js +152 -0
  94. package/src/testing/test-tenant-database-pool.js +438 -0
  95. package/src/testing/velocious-attempt-executor.js +44 -0
@@ -1,11 +1,18 @@
1
+ import AdvisoryLockFileBackend from "../database/advisory-lock-file-backend.js";
1
2
  /**
2
- * Directory-based lock that allows only one HTTP server process per app directory.
3
+ * Directory-based lock that allows only one HTTP server process per app
4
+ * directory. Thin wrapper over the shared file-lock backend
5
+ * (`src/database/advisory-lock-file-backend.js` — the STC-210 `file` tier
6
+ * primitive generalized from this lock's original hand-rolled directory
7
+ * protocol), so the server lock and the advisory-lock file tier share one
8
+ * acquisition, owner-metadata, lease-renewal, and staleness implementation.
3
9
  */
4
10
  export default class VelociousHttpServerLock {
5
11
  configuration: import("../configuration.js").default;
6
12
  host: string;
7
13
  port: number;
8
14
  lockPath: string;
15
+ backend: AdvisoryLockFileBackend;
9
16
  acquired: boolean;
10
17
  /**
11
18
  * Build a lock for the configured application directory and server endpoint.
@@ -20,53 +27,22 @@ export default class VelociousHttpServerLock {
20
27
  port: number;
21
28
  });
22
29
  /**
23
- * Acquires the app-directory HTTP server lock before startup side effects run.
30
+ * Acquires the app-directory HTTP server lock before startup side effects
31
+ * run. A stale lock (dead local owner or expired lease) is reclaimed by the
32
+ * backend; a live foreign owner fails loudly with the owner details.
24
33
  * @returns {Promise<void>} - Resolves after the lock has been acquired.
25
34
  */
26
35
  acquire(): Promise<void>;
27
- /**
28
- * Tries to create the lock directory and write owner metadata.
29
- * @returns {Promise<boolean>} - Whether the lock was acquired.
30
- */
31
- tryAcquire(): Promise<boolean>;
32
36
  /**
33
37
  * Releases the held HTTP server lock directory.
34
38
  * @returns {Promise<void>} - Resolves after best-effort lock release.
35
39
  */
36
40
  release(): Promise<void>;
37
- /**
38
- * Writes metadata used to explain or reclaim an existing server lock.
39
- * @returns {Promise<void>} - Resolves after owner metadata has been written.
40
- */
41
- writeOwnerMetadata(): Promise<void>;
42
- /**
43
- * Checks whether the current lock owner is a dead process on this host.
44
- * @returns {Promise<boolean>} - Whether the existing lock belongs to a dead process.
45
- */
46
- isStale(): Promise<boolean>;
47
- /**
48
- * Runs is local process owner.
49
- * @param {Record<string, ReturnType<typeof JSON.parse>> | null} owner - Existing lock owner metadata.
50
- * @returns {boolean} - Whether owner metadata names a local process.
51
- */
52
- isLocalProcessOwner(owner: Record<string, ReturnType<typeof JSON.parse>> | null): boolean;
53
- /**
54
- * Runs owner hostname matches.
55
- * @param {Record<string, ReturnType<typeof JSON.parse>>} owner - Existing lock owner metadata.
56
- * @returns {boolean} - Whether the owner hostname is local or absent.
57
- */
58
- ownerHostnameMatches(owner: Record<string, ReturnType<typeof JSON.parse>>): boolean;
59
- /**
60
- * Runs process is dead.
61
- * @param {number} pid - Process id.
62
- * @returns {boolean} - Whether the process no longer exists.
63
- */
64
- processIsDead(pid: number): boolean;
65
41
  /**
66
42
  * Reads owner metadata from an existing server lock directory.
67
- * @returns {Promise<Record<string, ReturnType<typeof JSON.parse>> | null>} - Parsed owner metadata, when readable.
43
+ * @returns {Promise<import("../database/advisory-lock-file-backend.js").AdvisoryLockFileOwner | null>} - Parsed owner metadata, when readable.
68
44
  */
69
- readOwnerMetadata(): Promise<Record<string, ReturnType<typeof JSON.parse>> | null>;
45
+ readOwnerMetadata(): Promise<import("../database/advisory-lock-file-backend.js").AdvisoryLockFileOwner | null>;
70
46
  /**
71
47
  * Builds a duplicate-server error message with owner details when available.
72
48
  * @returns {Promise<string>} - Error message explaining which server owns the lock.
@@ -1 +1 @@
1
- {"version":3,"file":"server-lock.d.ts","sourceRoot":"","sources":["../../../src/http-server/server-lock.js"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAuB;IASnC,aAAa;IACb,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,QAAQ;IAZf;;;;;;OAMG;IACH,YAAY,EAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAC,EAJpC;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO,CAC7C;QAAqB,IAAI,EAAjB,MAAM,CACd;QAAqB,IAAI,EAAjB,MAAM,CAChB;KACsC,EAMtC;IAED;;;OAGG;IACG,OAAO,IAFA,OAAO,CAAC,IAAI,CAAC,CAmBzB;IAED;;;OAGG;IACG,UAAU,IAFH,OAAO,CAAC,OAAO,CAAC,CAmB5B;IAED;;;OAGG;IACG,OAAO,IAFA,OAAO,CAAC,IAAI,CAAC,CAOzB;IAED;;;OAGG;IACG,kBAAkB,IAFX,OAAO,CAAC,IAAI,CAAC,CAUzB;IAED;;;OAGG;IACG,OAAO,IAFA,OAAO,CAAC,OAAO,CAAC,CAQ5B;IAED;;;;OAIG;IACH,mBAAmB,CAAC,KAAK,EAHd,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAGlC,GAFZ,OAAO,CAOnB;IAED;;;;OAIG;IACH,oBAAoB,CAAC,KAAK,EAHf,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAG7B,GAFb,OAAO,CAOnB;IAED;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAHN,MAGM,GAFJ,OAAO,CAUnB;IAED;;;OAGG;IACG,iBAAiB,IAFV,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAUzE;IAED;;;OAGG;IACG,eAAe,IAFR,OAAO,CAAC,MAAM,CAAC,CAS3B;CACF"}
1
+ {"version":3,"file":"server-lock.d.ts","sourceRoot":"","sources":["../../../src/http-server/server-lock.js"],"names":[],"mappings":"AAEA,OAAO,uBAAuB,MAAM,2CAA2C,CAAA;AAG/E;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAuB;IASnC,aAAa;IACb,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,OAAO;IAKP,QAAQ;IAjBf;;;;;;OAMG;IACH,YAAY,EAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAC,EAJpC;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO,CAC7C;QAAqB,IAAI,EAAjB,MAAM,CACd;QAAqB,IAAI,EAAjB,MAAM,CAChB;KACsC,EAWtC;IAED;;;;;OAKG;IACG,OAAO,IAFA,OAAO,CAAC,IAAI,CAAC,CAQzB;IAED;;;OAGG;IACG,OAAO,IAFA,OAAO,CAAC,IAAI,CAAC,CAOzB;IAED;;;OAGG;IACG,iBAAiB,IAFV,OAAO,CAAC,OAAO,2CAA2C,EAAE,qBAAqB,GAAG,IAAI,CAAC,CAIrG;IAED;;;OAGG;IACG,eAAe,IAFR,OAAO,CAAC,MAAM,CAAC,CAS3B;CACF"}
@@ -1,9 +1,13 @@
1
1
  // @ts-check
2
- import fs from "node:fs/promises";
3
- import os from "node:os";
2
+ import AdvisoryLockFileBackend from "../database/advisory-lock-file-backend.js";
4
3
  import path from "node:path";
5
4
  /**
6
- * Directory-based lock that allows only one HTTP server process per app directory.
5
+ * Directory-based lock that allows only one HTTP server process per app
6
+ * directory. Thin wrapper over the shared file-lock backend
7
+ * (`src/database/advisory-lock-file-backend.js` — the STC-210 `file` tier
8
+ * primitive generalized from this lock's original hand-rolled directory
9
+ * protocol), so the server lock and the advisory-lock file tier share one
10
+ * acquisition, owner-metadata, lease-renewal, and staleness implementation.
7
11
  */
8
12
  export default class VelociousHttpServerLock {
9
13
  /**
@@ -18,48 +22,24 @@ export default class VelociousHttpServerLock {
18
22
  this.host = host;
19
23
  this.port = port;
20
24
  this.lockPath = path.join(configuration.getDirectory(), "tmp", "server.lock");
25
+ this.backend = new AdvisoryLockFileBackend({
26
+ directory: path.join(configuration.getDirectory(), "tmp"),
27
+ extraOwnerFields: { host: this.host, port: this.port },
28
+ pathStyle: "plain"
29
+ });
21
30
  this.acquired = false;
22
31
  }
23
32
  /**
24
- * Acquires the app-directory HTTP server lock before startup side effects run.
33
+ * Acquires the app-directory HTTP server lock before startup side effects
34
+ * run. A stale lock (dead local owner or expired lease) is reclaimed by the
35
+ * backend; a live foreign owner fails loudly with the owner details.
25
36
  * @returns {Promise<void>} - Resolves after the lock has been acquired.
26
37
  */
27
38
  async acquire() {
28
- await fs.mkdir(path.dirname(this.lockPath), { recursive: true });
29
- while (true) {
30
- const acquired = await this.tryAcquire();
31
- if (acquired) {
32
- return;
33
- }
34
- if (await this.isStale()) {
35
- await fs.rm(this.lockPath, { recursive: true, force: true });
36
- continue;
37
- }
39
+ const acquired = await this.backend.acquire("server", { timeoutMs: 0 });
40
+ if (!acquired)
38
41
  throw new Error(await this.lockHeldMessage());
39
- }
40
- }
41
- /**
42
- * Tries to create the lock directory and write owner metadata.
43
- * @returns {Promise<boolean>} - Whether the lock was acquired.
44
- */
45
- async tryAcquire() {
46
- try {
47
- await fs.mkdir(this.lockPath);
48
- }
49
- catch (error) {
50
- if ( /** @type {{code?: string}} */(error).code === "EEXIST")
51
- return false;
52
- throw error;
53
- }
54
- try {
55
- await this.writeOwnerMetadata();
56
- this.acquired = true;
57
- return true;
58
- }
59
- catch (error) {
60
- await fs.rm(this.lockPath, { recursive: true, force: true });
61
- throw error;
62
- }
42
+ this.acquired = true;
63
43
  }
64
44
  /**
65
45
  * Releases the held HTTP server lock directory.
@@ -69,81 +49,14 @@ export default class VelociousHttpServerLock {
69
49
  if (!this.acquired)
70
50
  return;
71
51
  this.acquired = false;
72
- await fs.rm(this.lockPath, { recursive: true, force: true });
73
- }
74
- /**
75
- * Writes metadata used to explain or reclaim an existing server lock.
76
- * @returns {Promise<void>} - Resolves after owner metadata has been written.
77
- */
78
- async writeOwnerMetadata() {
79
- await fs.writeFile(path.join(this.lockPath, "owner.json"), JSON.stringify({
80
- acquiredAt: new Date().toISOString(),
81
- host: this.host,
82
- hostname: os.hostname(),
83
- pid: process.pid,
84
- port: this.port
85
- }));
86
- }
87
- /**
88
- * Checks whether the current lock owner is a dead process on this host.
89
- * @returns {Promise<boolean>} - Whether the existing lock belongs to a dead process.
90
- */
91
- async isStale() {
92
- const owner = await this.readOwnerMetadata();
93
- if (!this.isLocalProcessOwner(owner))
94
- return false;
95
- return this.processIsDead(/** @type {{pid: number}} */ (owner).pid);
96
- }
97
- /**
98
- * Runs is local process owner.
99
- * @param {Record<string, ReturnType<typeof JSON.parse>> | null} owner - Existing lock owner metadata.
100
- * @returns {boolean} - Whether owner metadata names a local process.
101
- */
102
- isLocalProcessOwner(owner) {
103
- if (!owner)
104
- return false;
105
- if (typeof owner.pid !== "number")
106
- return false;
107
- return this.ownerHostnameMatches(owner);
108
- }
109
- /**
110
- * Runs owner hostname matches.
111
- * @param {Record<string, ReturnType<typeof JSON.parse>>} owner - Existing lock owner metadata.
112
- * @returns {boolean} - Whether the owner hostname is local or absent.
113
- */
114
- ownerHostnameMatches(owner) {
115
- if (!owner.hostname)
116
- return true;
117
- if (owner.hostname === os.hostname())
118
- return true;
119
- return false;
120
- }
121
- /**
122
- * Runs process is dead.
123
- * @param {number} pid - Process id.
124
- * @returns {boolean} - Whether the process no longer exists.
125
- */
126
- processIsDead(pid) {
127
- try {
128
- process.kill(pid, 0);
129
- return false;
130
- }
131
- catch (error) {
132
- return /** @type {{code?: string}} */ (error).code === "ESRCH";
133
- }
52
+ await this.backend.release("server");
134
53
  }
135
54
  /**
136
55
  * Reads owner metadata from an existing server lock directory.
137
- * @returns {Promise<Record<string, ReturnType<typeof JSON.parse>> | null>} - Parsed owner metadata, when readable.
56
+ * @returns {Promise<import("../database/advisory-lock-file-backend.js").AdvisoryLockFileOwner | null>} - Parsed owner metadata, when readable.
138
57
  */
139
58
  async readOwnerMetadata() {
140
- try {
141
- const rawOwner = await fs.readFile(path.join(this.lockPath, "owner.json"), "utf8");
142
- return /** @type {Record<string, ReturnType<typeof JSON.parse>>} */ (JSON.parse(rawOwner));
143
- }
144
- catch {
145
- return null;
146
- }
59
+ return await this.backend.holderInfo("server");
147
60
  }
148
61
  /**
149
62
  * Builds a duplicate-server error message with owner details when available.
@@ -157,4 +70,4 @@ export default class VelociousHttpServerLock {
157
70
  return `A Velocious HTTP server is already running for this application (${details}). Remove ${this.lockPath} if the server is no longer running.`;
158
71
  }
159
72
  }
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaHR0cC1zZXJ2ZXIvc2VydmVyLWxvY2suanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pDLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN4QixPQUFPLElBQUksTUFBTSxXQUFXLENBQUE7QUFFNUI7O0dBRUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLHVCQUF1QjtJQUMxQzs7Ozs7O09BTUc7SUFDSCxZQUFZLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUE7UUFDN0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7UUFFOUQsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNaLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBRXhDLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsT0FBTTtZQUNSLENBQUM7WUFFRCxJQUFJLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7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Q0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUc7WUFDdkcsQ0FBQyxDQUFDLGtCQUFrQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7UUFFckMsT0FBTyxvRUFBb0UsT0FBTyxhQUFhLElBQUksQ0FBQyxRQUFRLHNDQUFzQyxDQUFBO0lBQ3BKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIlxuaW1wb3J0IG9zIGZyb20gXCJub2RlOm9zXCJcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIlxuXG4vKipcbiAqIERpcmVjdG9yeS1iYXNlZCBsb2NrIHRoYXQgYWxsb3dzIG9ubHkgb25lIEhUVFAgc2VydmVyIHByb2Nlc3MgcGVyIGFwcCBkaXJlY3RvcnkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0h0dHBTZXJ2ZXJMb2NrIHtcbiAgLyoqXG4gICAqIEJ1aWxkIGEgbG9jayBmb3IgdGhlIGNvbmZpZ3VyZWQgYXBwbGljYXRpb24gZGlyZWN0b3J5IGFuZCBzZXJ2ZXIgZW5kcG9pbnQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBhcmdzLmNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uIHRoYXQgb3ducyB0aGUgYXBwbGljYXRpb24gZGlyZWN0b3J5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5ob3N0IC0gQ29uZmlndXJlZCBIVFRQIGhvc3QuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhcmdzLnBvcnQgLSBDb25maWd1cmVkIEhUVFAgcG9ydC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWd1cmF0aW9uLCBob3N0LCBwb3J0fSkge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLmhvc3QgPSBob3N0XG4gICAgdGhpcy5wb3J0ID0gcG9ydFxuICAgIHRoaXMubG9ja1BhdGggPSBwYXRoLmpvaW4oY29uZmlndXJhdGlvbi5nZXREaXJlY3RvcnkoKSwgXCJ0bXBcIiwgXCJzZXJ2ZXIubG9ja1wiKVxuICAgIHRoaXMuYWNxdWlyZWQgPSBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIEFjcXVpcmVzIHRoZSBhcHAtZGlyZWN0b3J5IEhUVFAgc2VydmVyIGxvY2sgYmVmb3JlIHN0YXJ0dXAgc2lkZSBlZmZlY3RzIHJ1bi5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgYWZ0ZXIgdGhlIGxvY2sgaGFzIGJlZW4gYWNxdWlyZWQuXG4gICAqL1xuICBhc3luYyBhY3F1aXJlKCkge1xuICAgIGF3YWl0IGZzLm1rZGlyKHBhdGguZGlybmFtZSh0aGlzLmxvY2tQYXRoKSwge3JlY3Vyc2l2ZTogdHJ1ZX0pXG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgYWNxdWlyZWQgPSBhd2FpdCB0aGlzLnRyeUFjcXVpcmUoKVxuXG4gICAgICBpZiAoYWNxdWlyZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChhd2FpdCB0aGlzLmlzU3RhbGUoKSkge1xuICAgICAgICBhd2FpdCBmcy5ybSh0aGlzLmxvY2tQYXRoLCB7cmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZX0pXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihhd2FpdCB0aGlzLmxvY2tIZWxkTWVzc2FnZSgpKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmllcyB0byBjcmVhdGUgdGhlIGxvY2sgZGlyZWN0b3J5IGFuZCB3cml0ZSBvd25lciBtZXRhZGF0YS5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gV2hldGhlciB0aGUgbG9jayB3YXMgYWNxdWlyZWQuXG4gICAqL1xuICBhc3luYyB0cnlBY3F1aXJlKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy5ta2Rpcih0aGlzLmxvY2tQYXRoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoLyoqIEB0eXBlIHt7Y29kZT86IHN0cmluZ319ICovIChlcnJvcikuY29kZSA9PT0gXCJFRVhJU1RcIikgcmV0dXJuIGZhbHNlXG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLndyaXRlT3duZXJNZXRhZGF0YSgpXG4gICAgICB0aGlzLmFjcXVpcmVkID0gdHJ1ZVxuXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBhd2FpdCBmcy5ybSh0aGlzLmxvY2tQYXRoLCB7cmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZX0pXG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWxlYXNlcyB0aGUgaGVsZCBIVFRQIHNlcnZlciBsb2NrIGRpcmVjdG9yeS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgYWZ0ZXIgYmVzdC1lZmZvcnQgbG9jayByZWxlYXNlLlxuICAgKi9cbiAgYXN5bmMgcmVsZWFzZSgpIHtcbiAgICBpZiAoIXRoaXMuYWNxdWlyZWQpIHJldHVyblxuXG4gICAgdGhpcy5hY3F1aXJlZCA9IGZhbHNlXG4gICAgYXdhaXQgZnMucm0odGhpcy5sb2NrUGF0aCwge3JlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWV9KVxuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlcyBtZXRhZGF0YSB1c2VkIHRvIGV4cGxhaW4gb3IgcmVjbGFpbSBhbiBleGlzdGluZyBzZXJ2ZXIgbG9jay5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgYWZ0ZXIgb3duZXIgbWV0YWRhdGEgaGFzIGJlZW4gd3JpdHRlbi5cbiAgICovXG4gIGFzeW5jIHdyaXRlT3duZXJNZXRhZGF0YSgpIHtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUocGF0aC5qb2luKHRoaXMubG9ja1BhdGgsIFwib3duZXIuanNvblwiKSwgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgYWNxdWlyZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgaG9zdDogdGhpcy5ob3N0LFxuICAgICAgaG9zdG5hbWU6IG9zLmhvc3RuYW1lKCksXG4gICAgICBwaWQ6IHByb2Nlc3MucGlkLFxuICAgICAgcG9ydDogdGhpcy5wb3J0XG4gICAgfSkpXG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgbG9jayBvd25lciBpcyBhIGRlYWQgcHJvY2VzcyBvbiB0aGlzIGhvc3QuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFdoZXRoZXIgdGhlIGV4aXN0aW5nIGxvY2sgYmVsb25ncyB0byBhIGRlYWQgcHJvY2Vzcy5cbiAgICovXG4gIGFzeW5jIGlzU3RhbGUoKSB7XG4gICAgY29uc3Qgb3duZXIgPSBhd2FpdCB0aGlzLnJlYWRPd25lck1ldGFkYXRhKClcblxuICAgIGlmICghdGhpcy5pc0xvY2FsUHJvY2Vzc093bmVyKG93bmVyKSkgcmV0dXJuIGZhbHNlXG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzSXNEZWFkKC8qKiBAdHlwZSB7e3BpZDogbnVtYmVyfX0gKi8gKG93bmVyKS5waWQpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBpcyBsb2NhbCBwcm9jZXNzIG93bmVyLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+PiB8IG51bGx9IG93bmVyIC0gRXhpc3RpbmcgbG9jayBvd25lciBtZXRhZGF0YS5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciBvd25lciBtZXRhZGF0YSBuYW1lcyBhIGxvY2FsIHByb2Nlc3MuXG4gICAqL1xuICBpc0xvY2FsUHJvY2Vzc093bmVyKG93bmVyKSB7XG4gICAgaWYgKCFvd25lcikgcmV0dXJuIGZhbHNlXG4gICAgaWYgKHR5cGVvZiBvd25lci5waWQgIT09IFwibnVtYmVyXCIpIHJldHVybiBmYWxzZVxuXG4gICAgcmV0dXJuIHRoaXMub3duZXJIb3N0bmFtZU1hdGNoZXMob3duZXIpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBvd25lciBob3N0bmFtZSBtYXRjaGVzLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Pn0gb3duZXIgLSBFeGlzdGluZyBsb2NrIG93bmVyIG1ldGFkYXRhLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHRoZSBvd25lciBob3N0bmFtZSBpcyBsb2NhbCBvciBhYnNlbnQuXG4gICAqL1xuICBvd25lckhvc3RuYW1lTWF0Y2hlcyhvd25lcikge1xuICAgIGlmICghb3duZXIuaG9zdG5hbWUpIHJldHVybiB0cnVlXG4gICAgaWYgKG93bmVyLmhvc3RuYW1lID09PSBvcy5ob3N0bmFtZSgpKSByZXR1cm4gdHJ1ZVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogUnVucyBwcm9jZXNzIGlzIGRlYWQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwaWQgLSBQcm9jZXNzIGlkLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHRoZSBwcm9jZXNzIG5vIGxvbmdlciBleGlzdHMuXG4gICAqL1xuICBwcm9jZXNzSXNEZWFkKHBpZCkge1xuICAgIHRyeSB7XG4gICAgICBwcm9jZXNzLmtpbGwocGlkLCAwKVxuXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIC8qKiBAdHlwZSB7e2NvZGU/OiBzdHJpbmd9fSAqLyAoZXJyb3IpLmNvZGUgPT09IFwiRVNSQ0hcIlxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBvd25lciBtZXRhZGF0YSBmcm9tIGFuIGV4aXN0aW5nIHNlcnZlciBsb2NrIGRpcmVjdG9yeS5cbiAgICogQHJldHVybnMge1Byb21pc2U8UmVjb3JkPHN0cmluZywgUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+IHwgbnVsbD59IC0gUGFyc2VkIG93bmVyIG1ldGFkYXRhLCB3aGVuIHJlYWRhYmxlLlxuICAgKi9cbiAgYXN5bmMgcmVhZE93bmVyTWV0YWRhdGEoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhd093bmVyID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aC5qb2luKHRoaXMubG9ja1BhdGgsIFwib3duZXIuanNvblwiKSwgXCJ1dGY4XCIpXG5cbiAgICAgIHJldHVybiAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Pn0gKi8gKEpTT04ucGFyc2UocmF3T3duZXIpKVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgZHVwbGljYXRlLXNlcnZlciBlcnJvciBtZXNzYWdlIHdpdGggb3duZXIgZGV0YWlscyB3aGVuIGF2YWlsYWJsZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gLSBFcnJvciBtZXNzYWdlIGV4cGxhaW5pbmcgd2hpY2ggc2VydmVyIG93bnMgdGhlIGxvY2suXG4gICAqL1xuICBhc3luYyBsb2NrSGVsZE1lc3NhZ2UoKSB7XG4gICAgY29uc3Qgb3duZXIgPSBhd2FpdCB0aGlzLnJlYWRPd25lck1ldGFkYXRhKClcbiAgICBjb25zdCBkZXRhaWxzID0gb3duZXJcbiAgICAgID8gYFBJRCAke1N0cmluZyhvd25lci5waWQpfSBvbiAke1N0cmluZyhvd25lci5ob3N0bmFtZSl9ICgke1N0cmluZyhvd25lci5ob3N0KX06JHtTdHJpbmcob3duZXIucG9ydCl9KWBcbiAgICAgIDogYGxvY2sgZGlyZWN0b3J5ICR7dGhpcy5sb2NrUGF0aH1gXG5cbiAgICByZXR1cm4gYEEgVmVsb2Npb3VzIEhUVFAgc2VydmVyIGlzIGFscmVhZHkgcnVubmluZyBmb3IgdGhpcyBhcHBsaWNhdGlvbiAoJHtkZXRhaWxzfSkuIFJlbW92ZSAke3RoaXMubG9ja1BhdGh9IGlmIHRoZSBzZXJ2ZXIgaXMgbm8gbG9uZ2VyIHJ1bm5pbmcuYFxuICB9XG59XG4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaHR0cC1zZXJ2ZXIvc2VydmVyLWxvY2suanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sdUJBQXVCLE1BQU0sMkNBQTJDLENBQUE7QUFDL0UsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBRTVCOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLHVCQUF1QjtJQUMxQzs7Ozs7O09BTUc7SUFDSCxZQUFZLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUE7UUFDN0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLHVCQUF1QixDQUFDO1lBQ3pDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxLQUFLLENBQUM7WUFDekQsZ0JBQWdCLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBQztZQUNwRCxTQUFTLEVBQUUsT0FBTztTQUNuQixDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtJQUN2QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUMsU0FBUyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUE7UUFFckUsSUFBSSxDQUFDLFFBQVE7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUE7UUFFNUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFPO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTTtRQUUxQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNyQixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsaUJBQWlCO1FBQ3JCLE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGVBQWU7UUFDbkIsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtRQUM1QyxNQUFNLE9BQU8sR0FBRyxLQUFLO1lBQ25CLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUc7WUFDdkcsQ0FBQyxDQUFDLGtCQUFrQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7UUFFckMsT0FBTyxvRUFBb0UsT0FBTyxhQUFhLElBQUksQ0FBQyxRQUFRLHNDQUFzQyxDQUFBO0lBQ3BKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQWR2aXNvcnlMb2NrRmlsZUJhY2tlbmQgZnJvbSBcIi4uL2RhdGFiYXNlL2Fkdmlzb3J5LWxvY2stZmlsZS1iYWNrZW5kLmpzXCJcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIlxuXG4vKipcbiAqIERpcmVjdG9yeS1iYXNlZCBsb2NrIHRoYXQgYWxsb3dzIG9ubHkgb25lIEhUVFAgc2VydmVyIHByb2Nlc3MgcGVyIGFwcFxuICogZGlyZWN0b3J5LiBUaGluIHdyYXBwZXIgb3ZlciB0aGUgc2hhcmVkIGZpbGUtbG9jayBiYWNrZW5kXG4gKiAoYHNyYy9kYXRhYmFzZS9hZHZpc29yeS1sb2NrLWZpbGUtYmFja2VuZC5qc2Ag4oCUIHRoZSBTVEMtMjEwIGBmaWxlYCB0aWVyXG4gKiBwcmltaXRpdmUgZ2VuZXJhbGl6ZWQgZnJvbSB0aGlzIGxvY2sncyBvcmlnaW5hbCBoYW5kLXJvbGxlZCBkaXJlY3RvcnlcbiAqIHByb3RvY29sKSwgc28gdGhlIHNlcnZlciBsb2NrIGFuZCB0aGUgYWR2aXNvcnktbG9jayBmaWxlIHRpZXIgc2hhcmUgb25lXG4gKiBhY3F1aXNpdGlvbiwgb3duZXItbWV0YWRhdGEsIGxlYXNlLXJlbmV3YWwsIGFuZCBzdGFsZW5lc3MgaW1wbGVtZW50YXRpb24uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0h0dHBTZXJ2ZXJMb2NrIHtcbiAgLyoqXG4gICAqIEJ1aWxkIGEgbG9jayBmb3IgdGhlIGNvbmZpZ3VyZWQgYXBwbGljYXRpb24gZGlyZWN0b3J5IGFuZCBzZXJ2ZXIgZW5kcG9pbnQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBhcmdzLmNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uIHRoYXQgb3ducyB0aGUgYXBwbGljYXRpb24gZGlyZWN0b3J5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5ob3N0IC0gQ29uZmlndXJlZCBIVFRQIGhvc3QuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhcmdzLnBvcnQgLSBDb25maWd1cmVkIEhUVFAgcG9ydC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWd1cmF0aW9uLCBob3N0LCBwb3J0fSkge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLmhvc3QgPSBob3N0XG4gICAgdGhpcy5wb3J0ID0gcG9ydFxuICAgIHRoaXMubG9ja1BhdGggPSBwYXRoLmpvaW4oY29uZmlndXJhdGlvbi5nZXREaXJlY3RvcnkoKSwgXCJ0bXBcIiwgXCJzZXJ2ZXIubG9ja1wiKVxuICAgIHRoaXMuYmFja2VuZCA9IG5ldyBBZHZpc29yeUxvY2tGaWxlQmFja2VuZCh7XG4gICAgICBkaXJlY3Rvcnk6IHBhdGguam9pbihjb25maWd1cmF0aW9uLmdldERpcmVjdG9yeSgpLCBcInRtcFwiKSxcbiAgICAgIGV4dHJhT3duZXJGaWVsZHM6IHtob3N0OiB0aGlzLmhvc3QsIHBvcnQ6IHRoaXMucG9ydH0sXG4gICAgICBwYXRoU3R5bGU6IFwicGxhaW5cIlxuICAgIH0pXG4gICAgdGhpcy5hY3F1aXJlZCA9IGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogQWNxdWlyZXMgdGhlIGFwcC1kaXJlY3RvcnkgSFRUUCBzZXJ2ZXIgbG9jayBiZWZvcmUgc3RhcnR1cCBzaWRlIGVmZmVjdHNcbiAgICogcnVuLiBBIHN0YWxlIGxvY2sgKGRlYWQgbG9jYWwgb3duZXIgb3IgZXhwaXJlZCBsZWFzZSkgaXMgcmVjbGFpbWVkIGJ5IHRoZVxuICAgKiBiYWNrZW5kOyBhIGxpdmUgZm9yZWlnbiBvd25lciBmYWlscyBsb3VkbHkgd2l0aCB0aGUgb3duZXIgZGV0YWlscy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgYWZ0ZXIgdGhlIGxvY2sgaGFzIGJlZW4gYWNxdWlyZWQuXG4gICAqL1xuICBhc3luYyBhY3F1aXJlKCkge1xuICAgIGNvbnN0IGFjcXVpcmVkID0gYXdhaXQgdGhpcy5iYWNrZW5kLmFjcXVpcmUoXCJzZXJ2ZXJcIiwge3RpbWVvdXRNczogMH0pXG5cbiAgICBpZiAoIWFjcXVpcmVkKSB0aHJvdyBuZXcgRXJyb3IoYXdhaXQgdGhpcy5sb2NrSGVsZE1lc3NhZ2UoKSlcblxuICAgIHRoaXMuYWNxdWlyZWQgPSB0cnVlXG4gIH1cblxuICAvKipcbiAgICogUmVsZWFzZXMgdGhlIGhlbGQgSFRUUCBzZXJ2ZXIgbG9jayBkaXJlY3RvcnkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIGFmdGVyIGJlc3QtZWZmb3J0IGxvY2sgcmVsZWFzZS5cbiAgICovXG4gIGFzeW5jIHJlbGVhc2UoKSB7XG4gICAgaWYgKCF0aGlzLmFjcXVpcmVkKSByZXR1cm5cblxuICAgIHRoaXMuYWNxdWlyZWQgPSBmYWxzZVxuICAgIGF3YWl0IHRoaXMuYmFja2VuZC5yZWxlYXNlKFwic2VydmVyXCIpXG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgb3duZXIgbWV0YWRhdGEgZnJvbSBhbiBleGlzdGluZyBzZXJ2ZXIgbG9jayBkaXJlY3RvcnkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4uL2RhdGFiYXNlL2Fkdmlzb3J5LWxvY2stZmlsZS1iYWNrZW5kLmpzXCIpLkFkdmlzb3J5TG9ja0ZpbGVPd25lciB8IG51bGw+fSAtIFBhcnNlZCBvd25lciBtZXRhZGF0YSwgd2hlbiByZWFkYWJsZS5cbiAgICovXG4gIGFzeW5jIHJlYWRPd25lck1ldGFkYXRhKCkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJhY2tlbmQuaG9sZGVySW5mbyhcInNlcnZlclwiKVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIGR1cGxpY2F0ZS1zZXJ2ZXIgZXJyb3IgbWVzc2FnZSB3aXRoIG93bmVyIGRldGFpbHMgd2hlbiBhdmFpbGFibGUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IC0gRXJyb3IgbWVzc2FnZSBleHBsYWluaW5nIHdoaWNoIHNlcnZlciBvd25zIHRoZSBsb2NrLlxuICAgKi9cbiAgYXN5bmMgbG9ja0hlbGRNZXNzYWdlKCkge1xuICAgIGNvbnN0IG93bmVyID0gYXdhaXQgdGhpcy5yZWFkT3duZXJNZXRhZGF0YSgpXG4gICAgY29uc3QgZGV0YWlscyA9IG93bmVyXG4gICAgICA/IGBQSUQgJHtTdHJpbmcob3duZXIucGlkKX0gb24gJHtTdHJpbmcob3duZXIuaG9zdG5hbWUpfSAoJHtTdHJpbmcob3duZXIuaG9zdCl9OiR7U3RyaW5nKG93bmVyLnBvcnQpfSlgXG4gICAgICA6IGBsb2NrIGRpcmVjdG9yeSAke3RoaXMubG9ja1BhdGh9YFxuXG4gICAgcmV0dXJuIGBBIFZlbG9jaW91cyBIVFRQIHNlcnZlciBpcyBhbHJlYWR5IHJ1bm5pbmcgZm9yIHRoaXMgYXBwbGljYXRpb24gKCR7ZGV0YWlsc30pLiBSZW1vdmUgJHt0aGlzLmxvY2tQYXRofSBpZiB0aGUgc2VydmVyIGlzIG5vIGxvbmdlciBydW5uaW5nLmBcbiAgfVxufVxuIl19
@@ -7,6 +7,7 @@ import SharedTransactionBroker from "./shared-transaction-broker.js";
7
7
  import VelociousAttemptExecutor from "./velocious-attempt-executor.js";
8
8
  import VelociousRunnerReporter from "./velocious-runner-reporter.js";
9
9
  import VelociousSuiteHookExecutor from "./velocious-suite-hook-executor.js";
10
+ import TestTenantDatabasePool from "./test-tenant-database-pool.js";
10
11
  import VelociousTestArguments from "./velocious-test-arguments.js";
11
12
  export type PackageTestContext = typeof defaultTestContext;
12
13
  export type PackageSuiteDeclaration = (typeof defaultTestContext.registry.suites)[number];
@@ -76,6 +77,31 @@ export type TestArgs = {
76
77
  databaseIdentifier: string;
77
78
  tenant: object;
78
79
  }) => Promise<void>;
80
+ /**
81
+ * - Leases one member of the configured test tenant database pool for this attempt (opt-in `testTenantPools` configuration).
82
+ */
83
+ acquireTestTenant?: (args?: {
84
+ databaseIdentifier?: string;
85
+ tenant?: object;
86
+ }) => Promise<TestTenantPoolLease>;
87
+ /**
88
+ * - Registers one active tenant database for the framework-owned end-of-attempt cleanup (drop + provider hooks) without hand-rolled afterEach bookkeeping.
89
+ */
90
+ registerTenantForCleanup?: (args: {
91
+ databaseIdentifier: string;
92
+ tenant: object;
93
+ }) => void;
94
+ };
95
+ export type TestTenantPoolLease = import("./test-tenant-database-pool.js").TestTenantPoolLease;
96
+ export type TenantCleanupRegistration = {
97
+ /**
98
+ * - Tenant database identifier to drop at attempt end.
99
+ */
100
+ databaseIdentifier: string;
101
+ /**
102
+ * - Tenant descriptor whose database must be dropped.
103
+ */
104
+ tenant: ReturnType<typeof JSON.parse>;
79
105
  };
80
106
  export type BrowserDummyConnectionRegistration = {
81
107
  /**
@@ -313,6 +339,10 @@ export default class TestRunner {
313
339
  _setupFiles: string[];
314
340
  _timeoutMs: number | undefined;
315
341
  _abortRemainingTests: boolean;
342
+ /** @type {Map<string, TestTenantDatabasePool>} */
343
+ _testTenantPools: Map<string, TestTenantDatabasePool>;
344
+ /** @type {Promise<void> | undefined} */
345
+ _testTenantPoolTeardownPromise: Promise<void> | undefined;
316
346
  _failedTests: number;
317
347
  _successfulTests: number;
318
348
  _testsCount: number;
@@ -557,6 +587,28 @@ export default class TestRunner {
557
587
  * @returns {Promise<Application>} - Resolves with the application.
558
588
  */
559
589
  application(): Promise<Application>;
590
+ /**
591
+ * Resolves the pool identifier when exactly one `testTenantPools` entry is
592
+ * configured, so `acquireTestTenant()` can omit it. Ambiguous or missing
593
+ * configuration fails loudly instead of guessing.
594
+ * @returns {string} - The single configured pool identifier.
595
+ */
596
+ singleTestTenantPoolIdentifier(): string;
597
+ /**
598
+ * Returns the test tenant database pool for one configured `testTenantPools`
599
+ * identifier, creating it on first use. Throws when the identifier has no pool
600
+ * configuration — the pool stays strictly opt-in.
601
+ * @param {string} databaseIdentifier - Tenant database identifier.
602
+ * @returns {TestTenantDatabasePool} - The runner-owned pool.
603
+ */
604
+ getTestTenantPool(databaseIdentifier: string): TestTenantDatabasePool;
605
+ /**
606
+ * Tears down every test tenant database pool created during this run, exactly once.
607
+ * Safe to call from afterAll-style teardown and from the runner's own cleanup; the
608
+ * same promise is shared by concurrent callers.
609
+ * @returns {Promise<void>} - Resolves after all pools dropped their databases.
610
+ */
611
+ teardownTestTenantPools(): Promise<void>;
560
612
  /**
561
613
  * Registers each non-tenant per-test connection as a dynamic candidate for in-process
562
614
  * request sharing. The pool evaluates transaction state when each request is dispatched,
@@ -604,6 +656,28 @@ export default class TestRunner {
604
656
  * @returns {Promise<void>} - Resolves after rollback and release or quarantine.
605
657
  */
606
658
  cleanupTransactionalTenantRegistration(registration: TransactionalTenantRegistration): Promise<void>;
659
+ /**
660
+ * Registers one tenant database for framework-owned end-of-attempt cleanup. The
661
+ * registration drops the tenant's database through the provider's `dropDatabase`
662
+ * hook (or the framework default) after the attempt's afterEach hooks and
663
+ * transactional tenant rollbacks finished, so consuming apps do not hand-roll a
664
+ * Map/afterEach bookkeeping layer for DDL that a test transaction cannot roll back.
665
+ * @param {{databaseIdentifier: string, tenant: object}} args - Tenant database identifier and tenant descriptor to drop at attempt end.
666
+ * @param {TenantCleanupRegistration[]} registrations - Current attempt registrations.
667
+ * @returns {void} - No return value.
668
+ */
669
+ registerTenantForCleanup({ databaseIdentifier, tenant, ...restArgs }: {
670
+ databaseIdentifier: string;
671
+ tenant: object;
672
+ }, registrations: TenantCleanupRegistration[]): void;
673
+ /**
674
+ * Drops every tenant database registered for this attempt, in registration order.
675
+ * Each drop is attempted even when an earlier one failed; failures are surfaced
676
+ * (single error or AggregateError), never swallowed.
677
+ * @param {TenantCleanupRegistration[]} registrations - Attempt-owned registrations.
678
+ * @returns {Promise<void>} - Resolves after all registered tenants were dropped.
679
+ */
680
+ cleanupTenantRegistrations(registrations: TenantCleanupRegistration[]): Promise<void>;
607
681
  /**
608
682
  * Selects the current non-tenant connections eligible for shared transaction work.
609
683
  * @param {{transactionsOnly: boolean}} args - Selection options.
@@ -1 +1 @@
1
- {"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../../src/testing/test-runner.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../../src/testing/test-runner.js"],"names":[],"mappings":"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"}