velocious 1.0.174 → 1.0.175

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 (52) hide show
  1. package/build/src/application.d.ts.map +1 -1
  2. package/build/src/application.js +2 -1
  3. package/build/src/configuration-types.d.ts +5 -0
  4. package/build/src/configuration-types.d.ts.map +1 -1
  5. package/build/src/configuration-types.js +2 -1
  6. package/build/src/configuration.d.ts +12 -1
  7. package/build/src/configuration.d.ts.map +1 -1
  8. package/build/src/configuration.js +60 -5
  9. package/build/src/database/drivers/base.d.ts +10 -0
  10. package/build/src/database/drivers/base.d.ts.map +1 -1
  11. package/build/src/database/drivers/base.js +15 -1
  12. package/build/src/database/drivers/mssql/index.d.ts +1 -2
  13. package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
  14. package/build/src/database/drivers/mssql/index.js +26 -12
  15. package/build/src/database/drivers/mysql/index.d.ts +0 -4
  16. package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
  17. package/build/src/database/drivers/mysql/index.js +9 -8
  18. package/build/src/database/drivers/pgsql/index.d.ts +0 -2
  19. package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
  20. package/build/src/database/drivers/pgsql/index.js +5 -2
  21. package/build/src/database/drivers/sqlite/index.d.ts +0 -1
  22. package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
  23. package/build/src/database/drivers/sqlite/index.native.d.ts +0 -2
  24. package/build/src/database/drivers/sqlite/index.native.d.ts.map +1 -1
  25. package/build/src/database/drivers/sqlite/index.web.d.ts +0 -1
  26. package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
  27. package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
  28. package/build/src/database/pool/async-tracked-multi-connection.js +26 -1
  29. package/build/src/database/pool/base.d.ts +10 -0
  30. package/build/src/database/pool/base.d.ts.map +1 -1
  31. package/build/src/database/pool/base.js +11 -1
  32. package/build/src/database/pool/single-multi-use.d.ts.map +1 -1
  33. package/build/src/database/pool/single-multi-use.js +17 -1
  34. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts.map +1 -1
  35. package/build/src/environment-handlers/node/cli/commands/generate/base-models.js +179 -177
  36. package/build/src/http-server/client/request-runner.d.ts.map +1 -1
  37. package/build/src/http-server/client/request-runner.js +52 -2
  38. package/build/src/http-server/client/response.d.ts +16 -0
  39. package/build/src/http-server/client/response.d.ts.map +1 -1
  40. package/build/src/http-server/client/response.js +31 -1
  41. package/build/src/http-server/index.d.ts.map +1 -1
  42. package/build/src/http-server/index.js +8 -3
  43. package/build/src/http-server/worker-handler/index.d.ts +11 -0
  44. package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
  45. package/build/src/http-server/worker-handler/index.js +41 -2
  46. package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
  47. package/build/src/http-server/worker-handler/worker-thread.js +8 -1
  48. package/build/src/testing/format-value.d.ts.map +1 -1
  49. package/build/src/testing/format-value.js +7 -1
  50. package/build/src/testing/test.d.ts.map +1 -1
  51. package/build/src/testing/test.js +31 -1
  52. package/package.json +1 -1
@@ -43,7 +43,57 @@ export default class VelociousHttpServerClientRequestRunner {
43
43
  else {
44
44
  await this.logger.debug("Run request");
45
45
  const routesResolver = new RoutesResolver({ configuration, request, response });
46
- await routesResolver.resolve();
46
+ const startTimeMs = Date.now();
47
+ let timeoutId;
48
+ let timeoutReject;
49
+ let timedOut = false;
50
+ const setRequestTimeoutSeconds = (timeoutSeconds) => {
51
+ if (timeoutId) {
52
+ clearTimeout(timeoutId);
53
+ timeoutId = undefined;
54
+ }
55
+ if (typeof timeoutSeconds !== "number" || !Number.isFinite(timeoutSeconds) || timeoutSeconds <= 0) {
56
+ return;
57
+ }
58
+ const timeoutMs = timeoutSeconds * 1000;
59
+ const elapsedMs = Date.now() - startTimeMs;
60
+ const remainingMs = timeoutMs - elapsedMs;
61
+ if (remainingMs <= 0) {
62
+ timeoutReject?.(new Error(`Request timed out after ${timeoutSeconds}s`));
63
+ return;
64
+ }
65
+ timeoutId = setTimeout(() => {
66
+ timeoutReject?.(new Error(`Request timed out after ${timeoutSeconds}s`));
67
+ }, remainingMs);
68
+ };
69
+ const timeoutPromise = new Promise((_, reject) => {
70
+ timeoutReject = (error) => {
71
+ timedOut = true;
72
+ reject(error);
73
+ };
74
+ });
75
+ response.setRequestTimeoutMsChangeHandler((timeoutSeconds) => {
76
+ setRequestTimeoutSeconds(timeoutSeconds);
77
+ });
78
+ setRequestTimeoutSeconds(configuration.getRequestTimeoutMs?.());
79
+ let resolvePromise;
80
+ try {
81
+ resolvePromise = routesResolver.resolve();
82
+ // Keep Promise.race here to allow dynamic timeout updates.
83
+ await Promise.race([resolvePromise, timeoutPromise]);
84
+ }
85
+ catch (error) {
86
+ if (timedOut && resolvePromise) {
87
+ void resolvePromise.catch((resolveError) => {
88
+ this.logger.warn(() => ["Request finished after timeout", resolveError]);
89
+ });
90
+ }
91
+ throw error;
92
+ }
93
+ finally {
94
+ if (timeoutId)
95
+ clearTimeout(timeoutId);
96
+ }
47
97
  }
48
98
  }
49
99
  catch (e) {
@@ -69,4 +119,4 @@ export default class VelociousHttpServerClientRequestRunner {
69
119
  this.events.emit("done", this);
70
120
  }
71
121
  }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaHR0cC1zZXJ2ZXIvY2xpZW50L3JlcXVlc3QtcnVubmVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGdCQUFnQixNQUFNLGtDQUFrQyxDQUFBO0FBQy9ELE9BQU8sV0FBVyxNQUFNLDZCQUE2QixDQUFBO0FBQ3JELE9BQU8sWUFBWSxNQUFNLDhCQUE4QixDQUFBO0FBQ3ZELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0QyxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUE7QUFDcEMsT0FBTyxjQUFjLE1BQU0sMEJBQTBCLENBQUE7QUFFckQsTUFBTSxDQUFDLE9BQU8sT0FBTyxzQ0FBc0M7SUFDekQsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7SUFFM0I7Ozs7T0FJRztJQUNILFlBQVksRUFBQyxhQUFhLEVBQUUsT0FBTyxFQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBQzdELElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBRWpELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxFQUFDLGFBQWEsRUFBQyxDQUFDLENBQUE7UUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUE7SUFDeEIsQ0FBQztJQUVELFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUEsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBRWhDLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDLEdBQUcsSUFBSSxDQUFBO1FBRS9DLElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUU1QyxJQUFJLENBQUM7WUFDSCwyR0FBMkc7WUFDM0csTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQTtZQUUvSCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUE7WUFFcEMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxNQUFNLElBQUksQ0FBQyxFQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFBO1lBQ2pDLENBQUM7WUFFRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxTQUFTLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNwRixRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUN2QixRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQ3RCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFBO2dCQUN0QyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxFQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQTtnQkFFN0UsTUFBTSxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUE7WUFDaEMsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzVCLE1BQU0sZ0JBQWdCLEdBQUcsMENBQTBDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUMzRSxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBQyxDQUFBO1lBRW5GLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsZ0NBQWdDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7WUFFeEcsTUFBTSxZQUFZLEdBQUc7Z0JBQ25CLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixLQUFLO2dCQUNMLE9BQU87Z0JBQ1AsUUFBUTthQUNULENBQUE7WUFFRCxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxDQUFBO1lBQ3BFLGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUMvQyxHQUFHLFlBQVk7Z0JBQ2YsU0FBUyxFQUFFLGlCQUFpQjthQUM3QixDQUFDLENBQUE7WUFFRixRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3ZCLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDOUIsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFBO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEJhY2t0cmFjZUNsZWFuZXIgZnJvbSBcIi4uLy4uL3V0aWxzL2JhY2t0cmFjZS1jbGVhbmVyLmpzXCJcbmltcG9ydCBlbnN1cmVFcnJvciBmcm9tIFwiLi4vLi4vdXRpbHMvZW5zdXJlLWVycm9yLmpzXCJcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSBcIi4uLy4uL3V0aWxzL2V2ZW50LWVtaXR0ZXIuanNcIlxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gXCIuLi8uLi9sb2dnZXIuanNcIlxuaW1wb3J0IFJlc3BvbnNlIGZyb20gXCIuL3Jlc3BvbnNlLmpzXCJcbmltcG9ydCBSb3V0ZXNSZXNvbHZlciBmcm9tIFwiLi4vLi4vcm91dGVzL3Jlc29sdmVyLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzSHR0cFNlcnZlckNsaWVudFJlcXVlc3RSdW5uZXIge1xuICBldmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24gaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9yZXF1ZXN0LmpzXCIpLmRlZmF1bHQgfCBpbXBvcnQoXCIuL3dlYnNvY2tldC1yZXF1ZXN0LmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVxdWVzdCAtIFJlcXVlc3Qgb2JqZWN0LlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZ3VyYXRpb24sIHJlcXVlc3R9KSB7XG4gICAgaWYgKCFjb25maWd1cmF0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb25maWd1cmF0aW9uIGdpdmVuXCIpXG4gICAgaWYgKCFyZXF1ZXN0KSB0aHJvdyBuZXcgRXJyb3IoXCJObyByZXF1ZXN0IGdpdmVuXCIpXG5cbiAgICB0aGlzLmxvZ2dlciA9IG5ldyBMb2dnZXIodGhpcylcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5yZXF1ZXN0ID0gcmVxdWVzdFxuICAgIHRoaXMucmVzcG9uc2UgPSBuZXcgUmVzcG9uc2Uoe2NvbmZpZ3VyYXRpb259KVxuICAgIHRoaXMuc3RhdGUgPSBcInJ1bm5pbmdcIlxuICB9XG5cbiAgZ2V0UmVxdWVzdCgpIHsgcmV0dXJuIHRoaXMucmVxdWVzdCB9XG4gIGdldFN0YXRlKCkgeyByZXR1cm4gdGhpcy5zdGF0ZSB9XG5cbiAgYXN5bmMgcnVuKCkge1xuICAgIGNvbnN0IHtjb25maWd1cmF0aW9uLCByZXF1ZXN0LCByZXNwb25zZX0gPSB0aGlzXG5cbiAgICBpZiAoIXJlcXVlc3QpIHRocm93IG5ldyBFcnJvcihcIk5vIHJlcXVlc3Q/XCIpXG5cbiAgICB0cnkge1xuICAgICAgLy8gQmVmb3JlIHdlIGNoZWNrZWQgaWYgdGhlIHNlYy1mZXRjaC1tb2RlIHdhcyBcImNvcnNcIiwgYnV0IGl0IHNlZW1zIHRoZSBzZWMtZmV0Y2gtbW9kZSBpc24ndCBhbHdheXMgcHJlc2VudFxuICAgICAgYXdhaXQgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wiUnVuIENPUlNcIiwge2h0dHBNZXRob2Q6IHJlcXVlc3QuaHR0cE1ldGhvZCgpLCBzZWNGZXRjaE1vZGU6IHJlcXVlc3QuaGVhZGVyKFwic2VjLWZldGNoLW1vZGVcIil9XSlcblxuICAgICAgY29uc3QgY29ycyA9IGNvbmZpZ3VyYXRpb24uZ2V0Q29ycygpXG5cbiAgICAgIGlmIChjb3JzKSB7XG4gICAgICAgIGF3YWl0IGNvcnMoe3JlcXVlc3QsIHJlc3BvbnNlfSlcbiAgICAgIH1cblxuICAgICAgaWYgKHJlcXVlc3QuaHR0cE1ldGhvZCgpID09IFwiT1BUSU9OU1wiICYmIHJlcXVlc3QuaGVhZGVyKFwic2VjLWZldGNoLW1vZGVcIikgPT0gXCJjb3JzXCIpIHtcbiAgICAgICAgcmVzcG9uc2Uuc2V0U3RhdHVzKDIwMClcbiAgICAgICAgcmVzcG9uc2Uuc2V0Qm9keShcIlwiKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2dnZXIuZGVidWcoXCJSdW4gcmVxdWVzdFwiKVxuICAgICAgICBjb25zdCByb3V0ZXNSZXNvbHZlciA9IG5ldyBSb3V0ZXNSZXNvbHZlcih7Y29uZmlndXJhdGlvbiwgcmVxdWVzdCwgcmVzcG9uc2V9KVxuXG4gICAgICAgIGF3YWl0IHJvdXRlc1Jlc29sdmVyLnJlc29sdmUoKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gZW5zdXJlRXJyb3IoZSlcbiAgICAgIGNvbnN0IGVycm9yV2l0aENvbnRleHQgPSAvKiogQHR5cGUge3t2ZWxvY2lvdXNDb250ZXh0Pzogb2JqZWN0fX0gKi8gKGVycm9yKVxuICAgICAgY29uc3QgZXJyb3JDb250ZXh0ID0gZXJyb3JXaXRoQ29udGV4dC52ZWxvY2lvdXNDb250ZXh0IHx8IHtzdGFnZTogXCJyZXF1ZXN0LXJ1bm5lclwifVxuXG4gICAgICBhd2FpdCB0aGlzLmxvZ2dlci5lcnJvcigoKSA9PiBgRXJyb3Igd2hpbGUgcnVubmluZyByZXF1ZXN0OiAke0JhY2t0cmFjZUNsZWFuZXIuZ2V0Q2xlYW5lZFN0YWNrKGVycm9yKX1gKVxuXG4gICAgICBjb25zdCBlcnJvclBheWxvYWQgPSB7XG4gICAgICAgIGNvbnRleHQ6IGVycm9yQ29udGV4dCxcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlXG4gICAgICB9XG5cbiAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0RXJyb3JFdmVudHMoKS5lbWl0KFwiZnJhbWV3b3JrLWVycm9yXCIsIGVycm9yUGF5bG9hZClcbiAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0RXJyb3JFdmVudHMoKS5lbWl0KFwiYWxsLWVycm9yXCIsIHtcbiAgICAgICAgLi4uZXJyb3JQYXlsb2FkLFxuICAgICAgICBlcnJvclR5cGU6IFwiZnJhbWV3b3JrLWVycm9yXCJcbiAgICAgIH0pXG5cbiAgICAgIHJlc3BvbnNlLnNldFN0YXR1cyg1MDApXG4gICAgICByZXNwb25zZS5zZXRFcnJvckJvZHkoZXJyb3IpXG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9IFwiZG9uZVwiXG4gICAgdGhpcy5ldmVudHMuZW1pdChcImRvbmVcIiwgdGhpcylcbiAgfVxufVxuIl19
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaHR0cC1zZXJ2ZXIvY2xpZW50L3JlcXVlc3QtcnVubmVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGdCQUFnQixNQUFNLGtDQUFrQyxDQUFBO0FBQy9ELE9BQU8sV0FBVyxNQUFNLDZCQUE2QixDQUFBO0FBQ3JELE9BQU8sWUFBWSxNQUFNLDhCQUE4QixDQUFBO0FBQ3ZELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0QyxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUE7QUFDcEMsT0FBTyxjQUFjLE1BQU0sMEJBQTBCLENBQUE7QUFFckQsTUFBTSxDQUFDLE9BQU8sT0FBTyxzQ0FBc0M7SUFDekQsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7SUFFM0I7Ozs7T0FJRztJQUNILFlBQVksRUFBQyxhQUFhLEVBQUUsT0FBTyxFQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBQzdELElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBRWpELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxFQUFDLGFBQWEsRUFBQyxDQUFDLENBQUE7UUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUE7SUFDeEIsQ0FBQztJQUVELFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUEsQ0FBQyxDQUFDO0lB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LE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixJQUFJLEVBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFDLENBQUE7WUFFbkYsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQ0FBZ0MsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUV4RyxNQUFNLFlBQVksR0FBRztnQkFDbkIsT0FBTyxFQUFFLFlBQVk7Z0JBQ3JCLEtBQUs7Z0JBQ0wsT0FBTztnQkFDUCxRQUFRO2FBQ1QsQ0FBQTtZQUVELGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLENBQUE7WUFDcEUsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQy9DLEdBQUcsWUFBWTtnQkFDZixTQUFTLEVBQUUsaUJBQWlCO2FBQzdCLENBQUMsQ0FBQTtZQUVGLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDdkIsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM5QixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUE7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ2hDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmFja3RyYWNlQ2xlYW5lciBmcm9tIFwiLi4vLi4vdXRpbHMvYmFja3RyYWNlLWNsZWFuZXIuanNcIlxuaW1wb3J0IGVuc3VyZUVycm9yIGZyb20gXCIuLi8uLi91dGlscy9lbnN1cmUtZXJyb3IuanNcIlxuaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tIFwiLi4vLi4vdXRpbHMvZXZlbnQtZW1pdHRlci5qc1wiXG5pbXBvcnQge0xvZ2dlcn0gZnJvbSBcIi4uLy4uL2xvZ2dlci5qc1wiXG5pbXBvcnQgUmVzcG9uc2UgZnJvbSBcIi4vcmVzcG9uc2UuanNcIlxuaW1wb3J0IFJvdXRlc1Jlc29sdmVyIGZyb20gXCIuLi8uLi9yb3V0ZXMvcmVzb2x2ZXIuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNIdHRwU2VydmVyQ2xpZW50UmVxdWVzdFJ1bm5lciB7XG4gIGV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gYXJncy5jb25maWd1cmF0aW9uIC0gQ29uZmlndXJhdGlvbiBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3JlcXVlc3QuanNcIikuZGVmYXVsdCB8IGltcG9ydChcIi4vd2Vic29ja2V0LXJlcXVlc3QuanNcIikuZGVmYXVsdH0gYXJncy5yZXF1ZXN0IC0gUmVxdWVzdCBvYmplY3QuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7Y29uZmlndXJhdGlvbiwgcmVxdWVzdH0pIHtcbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24pIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbmZpZ3VyYXRpb24gZ2l2ZW5cIilcbiAgICBpZiAoIXJlcXVlc3QpIHRocm93IG5ldyBFcnJvcihcIk5vIHJlcXVlc3QgZ2l2ZW5cIilcblxuICAgIHRoaXMubG9nZ2VyID0gbmV3IExvZ2dlcih0aGlzKVxuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0XG4gICAgdGhpcy5yZXNwb25zZSA9IG5ldyBSZXNwb25zZSh7Y29uZmlndXJhdGlvbn0pXG4gICAgdGhpcy5zdGF0ZSA9IFwicnVubmluZ1wiXG4gIH1cblxuICBnZXRSZXF1ZXN0KCkgeyByZXR1cm4gdGhpcy5yZXF1ZXN0IH1cbiAgZ2V0U3RhdGUoKSB7IHJldHVybiB0aGlzLnN0YXRlIH1cblxuICBhc3luYyBydW4oKSB7XG4gICAgY29uc3Qge2NvbmZpZ3VyYXRpb24sIHJlcXVlc3QsIHJlc3BvbnNlfSA9IHRoaXNcblxuICAgIGlmICghcmVxdWVzdCkgdGhyb3cgbmV3IEVycm9yKFwiTm8gcmVxdWVzdD9cIilcblxuICAgIHRyeSB7XG4gICAgICAvLyBCZWZvcmUgd2UgY2hlY2tlZCBpZiB0aGUgc2VjLWZldGNoLW1vZGUgd2FzIFwiY29yc1wiLCBidXQgaXQgc2VlbXMgdGhlIHNlYy1mZXRjaC1tb2RlIGlzbid0IGFsd2F5cyBwcmVzZW50XG4gICAgICBhd2FpdCB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJSdW4gQ09SU1wiLCB7aHR0cE1ldGhvZDogcmVxdWVzdC5odHRwTWV0aG9kKCksIHNlY0ZldGNoTW9kZTogcmVxdWVzdC5oZWFkZXIoXCJzZWMtZmV0Y2gtbW9kZVwiKX1dKVxuXG4gICAgICBjb25zdCBjb3JzID0gY29uZmlndXJhdGlvbi5nZXRDb3JzKClcblxuICAgICAgaWYgKGNvcnMpIHtcbiAgICAgICAgYXdhaXQgY29ycyh7cmVxdWVzdCwgcmVzcG9uc2V9KVxuICAgICAgfVxuXG4gICAgICBpZiAocmVxdWVzdC5odHRwTWV0aG9kKCkgPT0gXCJPUFRJT05TXCIgJiYgcmVxdWVzdC5oZWFkZXIoXCJzZWMtZmV0Y2gtbW9kZVwiKSA9PSBcImNvcnNcIikge1xuICAgICAgICByZXNwb25zZS5zZXRTdGF0dXMoMjAwKVxuICAgICAgICByZXNwb25zZS5zZXRCb2R5KFwiXCIpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLmxvZ2dlci5kZWJ1ZyhcIlJ1biByZXF1ZXN0XCIpXG4gICAgICAgIGNvbnN0IHJvdXRlc1Jlc29sdmVyID0gbmV3IFJvdXRlc1Jlc29sdmVyKHtjb25maWd1cmF0aW9uLCByZXF1ZXN0LCByZXNwb25zZX0pXG4gICAgICAgIGNvbnN0IHN0YXJ0VGltZU1zID0gRGF0ZS5ub3coKVxuICAgICAgICBsZXQgdGltZW91dElkXG4gICAgICAgIGxldCB0aW1lb3V0UmVqZWN0XG4gICAgICAgIGxldCB0aW1lZE91dCA9IGZhbHNlXG5cbiAgICAgICAgY29uc3Qgc2V0UmVxdWVzdFRpbWVvdXRTZWNvbmRzID0gKHRpbWVvdXRTZWNvbmRzKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXRJZCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgICAgICAgICAgIHRpbWVvdXRJZCA9IHVuZGVmaW5lZFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0eXBlb2YgdGltZW91dFNlY29uZHMgIT09IFwibnVtYmVyXCIgfHwgIU51bWJlci5pc0Zpbml0ZSh0aW1lb3V0U2Vjb25kcykgfHwgdGltZW91dFNlY29uZHMgPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdGltZW91dE1zID0gdGltZW91dFNlY29uZHMgKiAxMDAwXG4gICAgICAgICAgY29uc3QgZWxhcHNlZE1zID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZU1zXG4gICAgICAgICAgY29uc3QgcmVtYWluaW5nTXMgPSB0aW1lb3V0TXMgLSBlbGFwc2VkTXNcblxuICAgICAgICAgIGlmIChyZW1haW5pbmdNcyA8PSAwKSB7XG4gICAgICAgICAgICB0aW1lb3V0UmVqZWN0Py4obmV3IEVycm9yKGBSZXF1ZXN0IHRpbWVkIG91dCBhZnRlciAke3RpbWVvdXRTZWNvbmRzfXNgKSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGltZW91dFJlamVjdD8uKG5ldyBFcnJvcihgUmVxdWVzdCB0aW1lZCBvdXQgYWZ0ZXIgJHt0aW1lb3V0U2Vjb25kc31zYCkpXG4gICAgICAgICAgfSwgcmVtYWluaW5nTXMpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lb3V0UHJvbWlzZSA9IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgICAgICB0aW1lb3V0UmVqZWN0ID0gKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aW1lZE91dCA9IHRydWVcbiAgICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgcmVzcG9uc2Uuc2V0UmVxdWVzdFRpbWVvdXRNc0NoYW5nZUhhbmRsZXIoKHRpbWVvdXRTZWNvbmRzKSA9PiB7XG4gICAgICAgICAgc2V0UmVxdWVzdFRpbWVvdXRTZWNvbmRzKHRpbWVvdXRTZWNvbmRzKVxuICAgICAgICB9KVxuXG4gICAgICAgIHNldFJlcXVlc3RUaW1lb3V0U2Vjb25kcyhjb25maWd1cmF0aW9uLmdldFJlcXVlc3RUaW1lb3V0TXM/LigpKVxuXG4gICAgICAgIGxldCByZXNvbHZlUHJvbWlzZVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVzb2x2ZVByb21pc2UgPSByb3V0ZXNSZXNvbHZlci5yZXNvbHZlKClcbiAgICAgICAgICAvLyBLZWVwIFByb21pc2UucmFjZSBoZXJlIHRvIGFsbG93IGR5bmFtaWMgdGltZW91dCB1cGRhdGVzLlxuICAgICAgICAgIGF3YWl0IFByb21pc2UucmFjZShbcmVzb2x2ZVByb21pc2UsIHRpbWVvdXRQcm9taXNlXSlcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAodGltZWRPdXQgJiYgcmVzb2x2ZVByb21pc2UpIHtcbiAgICAgICAgICAgIHZvaWQgcmVzb2x2ZVByb21pc2UuY2F0Y2goKHJlc29sdmVFcnJvcikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCgpID0+IFtcIlJlcXVlc3QgZmluaXNoZWQgYWZ0ZXIgdGltZW91dFwiLCByZXNvbHZlRXJyb3JdKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAodGltZW91dElkKSBjbGVhclRpbWVvdXQodGltZW91dElkKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3QgZXJyb3IgPSBlbnN1cmVFcnJvcihlKVxuICAgICAgY29uc3QgZXJyb3JXaXRoQ29udGV4dCA9IC8qKiBAdHlwZSB7e3ZlbG9jaW91c0NvbnRleHQ/OiBvYmplY3R9fSAqLyAoZXJyb3IpXG4gICAgICBjb25zdCBlcnJvckNvbnRleHQgPSBlcnJvcldpdGhDb250ZXh0LnZlbG9jaW91c0NvbnRleHQgfHwge3N0YWdlOiBcInJlcXVlc3QtcnVubmVyXCJ9XG5cbiAgICAgIGF3YWl0IHRoaXMubG9nZ2VyLmVycm9yKCgpID0+IGBFcnJvciB3aGlsZSBydW5uaW5nIHJlcXVlc3Q6ICR7QmFja3RyYWNlQ2xlYW5lci5nZXRDbGVhbmVkU3RhY2soZXJyb3IpfWApXG5cbiAgICAgIGNvbnN0IGVycm9yUGF5bG9hZCA9IHtcbiAgICAgICAgY29udGV4dDogZXJyb3JDb250ZXh0LFxuICAgICAgICBlcnJvcixcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VcbiAgICAgIH1cblxuICAgICAgY29uZmlndXJhdGlvbi5nZXRFcnJvckV2ZW50cygpLmVtaXQoXCJmcmFtZXdvcmstZXJyb3JcIiwgZXJyb3JQYXlsb2FkKVxuICAgICAgY29uZmlndXJhdGlvbi5nZXRFcnJvckV2ZW50cygpLmVtaXQoXCJhbGwtZXJyb3JcIiwge1xuICAgICAgICAuLi5lcnJvclBheWxvYWQsXG4gICAgICAgIGVycm9yVHlwZTogXCJmcmFtZXdvcmstZXJyb3JcIlxuICAgICAgfSlcblxuICAgICAgcmVzcG9uc2Uuc2V0U3RhdHVzKDUwMClcbiAgICAgIHJlc3BvbnNlLnNldEVycm9yQm9keShlcnJvcilcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlID0gXCJkb25lXCJcbiAgICB0aGlzLmV2ZW50cy5lbWl0KFwiZG9uZVwiLCB0aGlzKVxuICB9XG59XG4iXX0=
@@ -11,6 +11,8 @@ export default class VelociousHttpServerClientResponse {
11
11
  /** @type {Record<string, string[]>} */
12
12
  headers: Record<string, string[]>;
13
13
  configuration: import("../../configuration.js").default;
14
+ _requestTimeoutMs: number;
15
+ _requestTimeoutMsChangeHandler: (timeoutSeconds: number | undefined) => void;
14
16
  /**
15
17
  * @param {string} key - Key.
16
18
  * @param {string} value - Value to use.
@@ -52,5 +54,19 @@ export default class VelociousHttpServerClientResponse {
52
54
  setStatus(status: number | string): void;
53
55
  statusCode: number;
54
56
  statusMessage: string;
57
+ /**
58
+ * @returns {number | undefined} - Request timeout in seconds.
59
+ */
60
+ getRequestTimeoutMs(): number | undefined;
61
+ /**
62
+ * @param {number | undefined | null} timeoutSeconds - Timeout in seconds.
63
+ * @returns {void} - No return value.
64
+ */
65
+ setRequestTimeoutMs(timeoutSeconds: number | undefined | null): void;
66
+ /**
67
+ * @param {(timeoutSeconds: number | undefined) => void} handler - Change handler.
68
+ * @returns {void} - No return value.
69
+ */
70
+ setRequestTimeoutMsChangeHandler(handler: (timeoutSeconds: number | undefined) => void): void;
55
71
  }
56
72
  //# sourceMappingURL=response.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../../src/http-server/client/response.js"],"names":[],"mappings":"AAEA;IAOE;;;OAGG;IACH,+BAFG;QAAuD,aAAa,EAA5D,OAAO,wBAAwB,EAAE,OAAO;KAClD,EAGA;IAZD,4BAA4B;IAC5B,MADW,MAAM,GAAG,IAAI,CACb;IAEX,uCAAuC;IACvC,SADW,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CACvB;IAOV,wDAAkC;IAGpC;;;;OAIG;IACH,eAJW,MAAM,SACN,MAAM,GACJ,IAAI,CAQhB;IAED;;;;OAIG;IACH,eAJW,MAAM,SACN,MAAM,GACJ,IAAI,CAIhB;IAED;;OAEG;IACH,WAFa,MAAM,GAAG,IAAI,CAQzB;IAED;;OAEG;IACH,iBAFa,MAAM,CAIlB;IAED;;OAEG;IACH,oBAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,eAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;OAGG;IACH,oBAHW,KAAK,GACH,IAAI,CAKhB;IAED;;;OAGG;IACH,kBAHW,MAAM,GAAG,MAAM,GACb,IAAI,CAehB;IAXG,mBAAqB;IACrB,sBAAyB;CAW9B"}
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../../src/http-server/client/response.js"],"names":[],"mappings":"AAEA;IAOE;;;OAGG;IACH,+BAFG;QAAuD,aAAa,EAA5D,OAAO,wBAAwB,EAAE,OAAO;KAClD,EAKA;IAdD,4BAA4B;IAC5B,MADW,MAAM,GAAG,IAAI,CACb;IAEX,uCAAuC;IACvC,SADW,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CACvB;IAOV,wDAAkC;IAClC,0BAAkC;IAClC,iDA8G0B,MAAM,GAAG,SAAS,KAAK,IAAI,CA9GN;IAGjD;;;;OAIG;IACH,eAJW,MAAM,SACN,MAAM,GACJ,IAAI,CAQhB;IAED;;;;OAIG;IACH,eAJW,MAAM,SACN,MAAM,GACJ,IAAI,CAIhB;IAED;;OAEG;IACH,WAFa,MAAM,GAAG,IAAI,CAQzB;IAED;;OAEG;IACH,iBAFa,MAAM,CAIlB;IAED;;OAEG;IACH,oBAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,eAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;OAGG;IACH,oBAHW,KAAK,GACH,IAAI,CAKhB;IAED;;;OAGG;IACH,kBAHW,MAAM,GAAG,MAAM,GACb,IAAI,CAehB;IAXG,mBAAqB;IACrB,sBAAyB;IAY7B;;OAEG;IACH,uBAFa,MAAM,GAAG,SAAS,CAI9B;IAED;;;OAGG;IACH,oCAHW,MAAM,GAAG,SAAS,GAAG,IAAI,GACvB,IAAI,CAYhB;IAED;;;OAGG;IACH,0CAHW,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,GAC1C,IAAI,CAIhB;CACF"}
@@ -10,6 +10,8 @@ export default class VelociousHttpServerClientResponse {
10
10
  */
11
11
  constructor({ configuration }) {
12
12
  this.configuration = configuration;
13
+ this._requestTimeoutMs = undefined;
14
+ this._requestTimeoutMsChangeHandler = undefined;
13
15
  }
14
16
  /**
15
17
  * @param {string} key - Key.
@@ -87,5 +89,33 @@ export default class VelociousHttpServerClientResponse {
87
89
  throw new Error(`Unhandled status: ${status}`);
88
90
  }
89
91
  }
92
+ /**
93
+ * @returns {number | undefined} - Request timeout in seconds.
94
+ */
95
+ getRequestTimeoutMs() {
96
+ return this._requestTimeoutMs;
97
+ }
98
+ /**
99
+ * @param {number | undefined | null} timeoutSeconds - Timeout in seconds.
100
+ * @returns {void} - No return value.
101
+ */
102
+ setRequestTimeoutMs(timeoutSeconds) {
103
+ if (typeof timeoutSeconds === "number" && Number.isFinite(timeoutSeconds)) {
104
+ this._requestTimeoutMs = timeoutSeconds;
105
+ }
106
+ else {
107
+ this._requestTimeoutMs = undefined;
108
+ }
109
+ if (this._requestTimeoutMsChangeHandler) {
110
+ this._requestTimeoutMsChangeHandler(this._requestTimeoutMs);
111
+ }
112
+ }
113
+ /**
114
+ * @param {(timeoutSeconds: number | undefined) => void} handler - Change handler.
115
+ * @returns {void} - No return value.
116
+ */
117
+ setRequestTimeoutMsChangeHandler(handler) {
118
+ this._requestTimeoutMsChangeHandler = handler;
119
+ }
90
120
  }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaHR0cC1zZXJ2ZXIvY2xpZW50L3Jlc3BvbnNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixNQUFNLENBQUMsT0FBTyxPQUFPLGlDQUFpQztJQUNwRCw0QkFBNEI7SUFDNUIsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUVYLHVDQUF1QztJQUN2QyxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBRVo7OztPQUdHO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBQztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQTtJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxHQUFHLEVBQUUsS0FBSztRQUNsQixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUE7UUFDeEIsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQTtRQUNsQixDQUFDO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFBO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUE7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxLQUFLO1FBQ1gsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUE7SUFDbkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksQ0FBQyxLQUFLO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLDJCQUEyQixDQUFDLENBQUE7UUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLE9BQU8sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDcEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxNQUFNO1FBQ2QsSUFBSSxNQUFNLElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQTtZQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtRQUMzQixDQUFDO2FBQU0sSUFBSSxNQUFNLElBQUksV0FBVyxJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQTtZQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQTtRQUNsQyxDQUFDO2FBQU0sSUFBSSxNQUFNLElBQUksdUJBQXVCLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFBO1lBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsdUJBQXVCLENBQUE7UUFDOUMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ2hELENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzSHR0cFNlcnZlckNsaWVudFJlc3BvbnNlIHtcbiAgLyoqIEB0eXBlIHtzdHJpbmcgfCBudWxsfSAqL1xuICBib2R5ID0gbnVsbFxuXG4gIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSAqL1xuICBoZWFkZXJzID0ge31cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7Y29uZmlndXJhdGlvbn0pIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIEtleS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsdWUgdG8gdXNlLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBhZGRIZWFkZXIoa2V5LCB2YWx1ZSkge1xuICAgIGlmICghKGtleSBpbiB0aGlzLmhlYWRlcnMpKSB7XG4gICAgICB0aGlzLmhlYWRlcnNba2V5XSA9IFtdXG4gICAgfVxuXG4gICAgdGhpcy5oZWFkZXJzW2tleV0ucHVzaCh2YWx1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gS2V5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBWYWx1ZSB0byB1c2UuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIHNldEhlYWRlcihrZXksIHZhbHVlKSB7XG4gICAgdGhpcy5oZWFkZXJzW2tleV0gPSBbdmFsdWVdXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZyB8IG51bGx9IC0gVGhlIGJvZHkuXG4gICAqL1xuICBnZXRCb2R5KCkge1xuICAgIGlmICh0aGlzLmJvZHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuYm9keVxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGJvZHkgaGFzIGJlZW4gc2V0XCIpXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge251bWJlcn0gLSBUaGUgc3RhdHVzIGNvZGUuXG4gICAqL1xuICBnZXRTdGF0dXNDb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXR1c0NvZGUgfHwgMjAwXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgc3RhdHVzIG1lc3NhZ2UuXG4gICAqL1xuICBnZXRTdGF0dXNNZXNzYWdlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXR1c01lc3NhZ2UgfHwgXCJPS1wiXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsdWUgdG8gdXNlLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBzZXRCb2R5KHZhbHVlKSB7XG4gICAgdGhpcy5ib2R5ID0gdmFsdWVcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0Vycm9yfSBlcnJvciAtIEVycm9yIGluc3RhbmNlLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBzZXRFcnJvckJvZHkoZXJyb3IpIHtcbiAgICB0aGlzLnNldEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcInRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcIilcbiAgICB0aGlzLnNldEJvZHkoYCR7ZXJyb3IubWVzc2FnZX1cXG5cXG4ke2Vycm9yLnN0YWNrfWApXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXIgfCBzdHJpbmd9IHN0YXR1cyAtIFN0YXR1cy5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgc2V0U3RhdHVzKHN0YXR1cykge1xuICAgIGlmIChzdGF0dXMgPT0gXCJzdWNjZXNzXCIgfHwgc3RhdHVzID09IDIwMCkge1xuICAgICAgdGhpcy5zdGF0dXNDb2RlID0gMjAwXG4gICAgICB0aGlzLnN0YXR1c01lc3NhZ2UgPSBcIk9LXCJcbiAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PSBcIm5vdC1mb3VuZFwiIHx8IHN0YXR1cyA9PSA0MDQpIHtcbiAgICAgIHRoaXMuc3RhdHVzQ29kZSA9IDQwNFxuICAgICAgdGhpcy5zdGF0dXNNZXNzYWdlID0gXCJOb3QgRm91bmRcIlxuICAgIH0gZWxzZSBpZiAoc3RhdHVzID09IFwiaW50ZXJuYWwtc2VydmVyLWVycm9yXCIgfHwgc3RhdHVzID09IDUwMCkge1xuICAgICAgdGhpcy5zdGF0dXNDb2RlID0gNTAwXG4gICAgICB0aGlzLnN0YXR1c01lc3NhZ2UgPSBcIkludGVybmFsIHNlcnZlciBlcnJvclwiXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5oYW5kbGVkIHN0YXR1czogJHtzdGF0dXN9YClcbiAgICB9XG4gIH1cbn1cbiJdfQ==
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaHR0cC1zZXJ2ZXIvY2xpZW50L3Jlc3BvbnNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixNQUFNLENBQUMsT0FBTyxPQUFPLGlDQUFpQztJQUNwRCw0QkFBNEI7SUFDNUIsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUVYLHVDQUF1QztJQUN2QyxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBRVo7OztPQUdHO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBQztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQTtRQUNsQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFBO1FBQ2xDLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxTQUFTLENBQUE7SUFDakQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsR0FBRyxFQUFFLEtBQUs7UUFDbEIsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQ3hCLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxHQUFHLEVBQUUsS0FBSztRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUE7UUFDbEIsQ0FBQztRQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQTtJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFBO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsS0FBSztRQUNYLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFBO0lBQ25CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsS0FBSztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSwyQkFBMkIsQ0FBQyxDQUFBO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxPQUFPLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsTUFBTTtRQUNkLElBQUksTUFBTSxJQUFJLFNBQVMsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUE7WUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUE7UUFDM0IsQ0FBQzthQUFNLElBQUksTUFBTSxJQUFJLFdBQVcsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUE7WUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUE7UUFDbEMsQ0FBQzthQUFNLElBQUksTUFBTSxJQUFJLHVCQUF1QixJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUM5RCxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQTtZQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLHVCQUF1QixDQUFBO1FBQzlDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFBO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxtQkFBbUIsQ0FBQyxjQUFjO1FBQ2hDLElBQUksT0FBTyxjQUFjLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUMxRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsY0FBYyxDQUFBO1FBQ3pDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQTtRQUNwQyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDN0QsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQ0FBZ0MsQ0FBQyxPQUFPO1FBQ3RDLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxPQUFPLENBQUE7SUFDL0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0h0dHBTZXJ2ZXJDbGllbnRSZXNwb25zZSB7XG4gIC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVsbH0gKi9cbiAgYm9keSA9IG51bGxcblxuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gKi9cbiAgaGVhZGVycyA9IHt9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBhcmdzLmNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZ3VyYXRpb259KSB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvblxuICAgIHRoaXMuX3JlcXVlc3RUaW1lb3V0TXMgPSB1bmRlZmluZWRcbiAgICB0aGlzLl9yZXF1ZXN0VGltZW91dE1zQ2hhbmdlSGFuZGxlciA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBLZXkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFZhbHVlIHRvIHVzZS5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgYWRkSGVhZGVyKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoIShrZXkgaW4gdGhpcy5oZWFkZXJzKSkge1xuICAgICAgdGhpcy5oZWFkZXJzW2tleV0gPSBbXVxuICAgIH1cblxuICAgIHRoaXMuaGVhZGVyc1trZXldLnB1c2godmFsdWUpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIEtleS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsdWUgdG8gdXNlLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBzZXRIZWFkZXIoa2V5LCB2YWx1ZSkge1xuICAgIHRoaXMuaGVhZGVyc1trZXldID0gW3ZhbHVlXVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmcgfCBudWxsfSAtIFRoZSBib2R5LlxuICAgKi9cbiAgZ2V0Qm9keSgpIHtcbiAgICBpZiAodGhpcy5ib2R5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmJvZHlcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBib2R5IGhhcyBiZWVuIHNldFwiKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IC0gVGhlIHN0YXR1cyBjb2RlLlxuICAgKi9cbiAgZ2V0U3RhdHVzQ29kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXNDb2RlIHx8IDIwMFxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHN0YXR1cyBtZXNzYWdlLlxuICAgKi9cbiAgZ2V0U3RhdHVzTWVzc2FnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXNNZXNzYWdlIHx8IFwiT0tcIlxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFZhbHVlIHRvIHVzZS5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgc2V0Qm9keSh2YWx1ZSkge1xuICAgIHRoaXMuYm9keSA9IHZhbHVlXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgLSBFcnJvciBpbnN0YW5jZS5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgc2V0RXJyb3JCb2R5KGVycm9yKSB7XG4gICAgdGhpcy5zZXRIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJ0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XCIpXG4gICAgdGhpcy5zZXRCb2R5KGAke2Vycm9yLm1lc3NhZ2V9XFxuXFxuJHtlcnJvci5zdGFja31gKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgc3RyaW5nfSBzdGF0dXMgLSBTdGF0dXMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIHNldFN0YXR1cyhzdGF0dXMpIHtcbiAgICBpZiAoc3RhdHVzID09IFwic3VjY2Vzc1wiIHx8IHN0YXR1cyA9PSAyMDApIHtcbiAgICAgIHRoaXMuc3RhdHVzQ29kZSA9IDIwMFxuICAgICAgdGhpcy5zdGF0dXNNZXNzYWdlID0gXCJPS1wiXG4gICAgfSBlbHNlIGlmIChzdGF0dXMgPT0gXCJub3QtZm91bmRcIiB8fCBzdGF0dXMgPT0gNDA0KSB7XG4gICAgICB0aGlzLnN0YXR1c0NvZGUgPSA0MDRcbiAgICAgIHRoaXMuc3RhdHVzTWVzc2FnZSA9IFwiTm90IEZvdW5kXCJcbiAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PSBcImludGVybmFsLXNlcnZlci1lcnJvclwiIHx8IHN0YXR1cyA9PSA1MDApIHtcbiAgICAgIHRoaXMuc3RhdHVzQ29kZSA9IDUwMFxuICAgICAgdGhpcy5zdGF0dXNNZXNzYWdlID0gXCJJbnRlcm5hbCBzZXJ2ZXIgZXJyb3JcIlxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCBzdGF0dXM6ICR7c3RhdHVzfWApXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtudW1iZXIgfCB1bmRlZmluZWR9IC0gUmVxdWVzdCB0aW1lb3V0IGluIHNlY29uZHMuXG4gICAqL1xuICBnZXRSZXF1ZXN0VGltZW91dE1zKCkge1xuICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0VGltZW91dE1zXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsfSB0aW1lb3V0U2Vjb25kcyAtIFRpbWVvdXQgaW4gc2Vjb25kcy5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgc2V0UmVxdWVzdFRpbWVvdXRNcyh0aW1lb3V0U2Vjb25kcykge1xuICAgIGlmICh0eXBlb2YgdGltZW91dFNlY29uZHMgPT09IFwibnVtYmVyXCIgJiYgTnVtYmVyLmlzRmluaXRlKHRpbWVvdXRTZWNvbmRzKSkge1xuICAgICAgdGhpcy5fcmVxdWVzdFRpbWVvdXRNcyA9IHRpbWVvdXRTZWNvbmRzXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3JlcXVlc3RUaW1lb3V0TXMgPSB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcmVxdWVzdFRpbWVvdXRNc0NoYW5nZUhhbmRsZXIpIHtcbiAgICAgIHRoaXMuX3JlcXVlc3RUaW1lb3V0TXNDaGFuZ2VIYW5kbGVyKHRoaXMuX3JlcXVlc3RUaW1lb3V0TXMpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7KHRpbWVvdXRTZWNvbmRzOiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHZvaWR9IGhhbmRsZXIgLSBDaGFuZ2UgaGFuZGxlci5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgc2V0UmVxdWVzdFRpbWVvdXRNc0NoYW5nZUhhbmRsZXIoaGFuZGxlcikge1xuICAgIHRoaXMuX3JlcXVlc3RUaW1lb3V0TXNDaGFuZ2VIYW5kbGVyID0gaGFuZGxlclxuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http-server/index.js"],"names":[],"mappings":"AASA;IAYE;;;;;;OAMG;IACH,uDALG;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;QACvB,IAAI,GAAlB,MAAM;QACQ,IAAI,GAAlB,MAAM;QACQ,UAAU,GAAxB,MAAM;KAChB,EAOA;IAxBD,oBAAe;IAEf,4CAA4C;IAC5C,SADW,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAC3B;IAEZ,mEAA2B;IAC3B,oBAAe;IAEf,8BAA8B;IAC9B,gBADW,aAAa,EAAE,CACP;IAUjB,qDAAkC;IAClC,eAA8B;IAC9B,aAA6B;IAC7B,aAAwB;IACxB,mBAAkC;IAGpC,0DAA0D;IAC1D,SADc,OAAO,CAAC,IAAI,CAAC,CAO1B;IAJC,sBAAiC;IAMnC,0DAA0D;IAC1D,oBADc,OAAO,CAAC,IAAI,CAAC,CAc1B;IAED,0DAA0D;IAC1D,2BADc,OAAO,CAAC,IAAI,CAAC,CAK1B;IAED,4CAA4C;IAC5C,YADc,OAAO,CAOpB;IAED,0DAA0D;IAC1D,eADc,OAAO,CAAC,IAAI,CAAC,CAW1B;IAED,0DAA0D;IAC1D,cADc,OAAO,CAAC,IAAI,CAAC,CAa1B;IAED,0DAA0D;IAC1D,QADc,OAAO,CAAC,IAAI,CAAC,CAI1B;IAED,0CAA0C;IAC1C,eADc,IAAI,CAGjB;IAED;;;OAGG;IACH,eAAgB,QAHL,OAAO,KAAK,EAAE,MAGH,KAFT,IAAI,CAoBhB;IAED;;;OAGG;IACH,gBAAiB,QAHN,YAGY,KAFV,IAAI,CAahB;IAED,0DAA0D;IAC1D,eADc,OAAO,CAAC,IAAI,CAAC,CAa1B;IAED,6DAA6D;IAC7D,sBADc,aAAa,CAY1B;CACF;yBAnLwB,oBAAoB;0BACnB,2BAA2B;uBAHhC,cAAc;gBACnB,KAAK"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http-server/index.js"],"names":[],"mappings":"AASA;IAYE;;;;;;OAMG;IACH,uDALG;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;QACvB,IAAI,GAAlB,MAAM;QACQ,IAAI,GAAlB,MAAM;QACQ,UAAU,GAAxB,MAAM;KAChB,EAOA;IAxBD,oBAAe;IAEf,4CAA4C;IAC5C,SADW,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAC3B;IAEZ,mEAA2B;IAC3B,oBAAe;IAEf,8BAA8B;IAC9B,gBADW,aAAa,EAAE,CACP;IAUjB,qDAAkC;IAClC,eAA8B;IAC9B,aAA6B;IAC7B,aAAwB;IACxB,mBAAkC;IAGpC,0DAA0D;IAC1D,SADc,OAAO,CAAC,IAAI,CAAC,CAO1B;IAJC,sBAAiC;IAMnC,0DAA0D;IAC1D,oBADc,OAAO,CAAC,IAAI,CAAC,CAc1B;IAED,0DAA0D;IAC1D,2BADc,OAAO,CAAC,IAAI,CAAC,CAK1B;IAED,4CAA4C;IAC5C,YADc,OAAO,CAOpB;IAED,0DAA0D;IAC1D,eADc,OAAO,CAAC,IAAI,CAAC,CAW1B;IAED,0DAA0D;IAC1D,cADc,OAAO,CAAC,IAAI,CAAC,CAgB1B;IAED,0DAA0D;IAC1D,QADc,OAAO,CAAC,IAAI,CAAC,CAQ1B;IAED,0CAA0C;IAC1C,eADc,IAAI,CAGjB;IAED;;;OAGG;IACH,eAAgB,QAHL,OAAO,KAAK,EAAE,MAGH,KAFT,IAAI,CAoBhB;IAED;;;OAGG;IACH,gBAAiB,QAHN,YAGY,KAFV,IAAI,CAahB;IAED,0DAA0D;IAC1D,eADc,OAAO,CAAC,IAAI,CAAC,CAa1B;IAED,6DAA6D;IAC7D,sBADc,aAAa,CAY1B;CACF;yBA1LwB,oBAAoB;0BACnB,2BAA2B;uBAHhC,cAAc;gBACnB,KAAK"}
@@ -76,8 +76,10 @@ export default class VelociousHttpServer {
76
76
  /** @returns {Promise<void>} - Resolves when complete. */
77
77
  stopServer() {
78
78
  return new Promise((resolve, reject) => {
79
- if (!this.netServer)
80
- throw new Error("No netServer to stop");
79
+ if (!this.netServer || !this.netServer.listening) {
80
+ resolve(null);
81
+ return;
82
+ }
81
83
  this.netServer.close((error) => {
82
84
  if (error) {
83
85
  reject(error);
@@ -92,6 +94,9 @@ export default class VelociousHttpServer {
92
94
  async stop() {
93
95
  await this.stopClients();
94
96
  await this.stopServer();
97
+ const stopTasks = this.workerHandlers.map((handler) => handler.stop());
98
+ await Promise.all(stopTasks);
99
+ this.workerHandlers = [];
95
100
  }
96
101
  /** @returns {void} - No return value. */
97
102
  onClose = () => {
@@ -151,4 +156,4 @@ export default class VelociousHttpServer {
151
156
  return workerHandler;
152
157
  }
153
158
  }
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaHR0cC1zZXJ2ZXIvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDOUIsT0FBTyxZQUFZLE1BQU0sMkJBQTJCLENBQUE7QUFDcEQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUNuQyxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUE7QUFDckIsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUE7QUFDN0MsT0FBTyxhQUFhLE1BQU0sMkJBQTJCLENBQUE7QUFFckQsTUFBTSxDQUFDLE9BQU8sT0FBTyxtQkFBbUI7SUFDdEMsV0FBVyxHQUFHLENBQUMsQ0FBQTtJQUVmLDRDQUE0QztJQUM1QyxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBRVosTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7SUFDM0IsV0FBVyxHQUFHLENBQUMsQ0FBQTtJQUVmLDhCQUE4QjtJQUM5QixjQUFjLEdBQUcsRUFBRSxDQUFBO0lBRW5COzs7Ozs7T0FNRztJQUNILFlBQVksRUFBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUM7UUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxTQUFTLENBQUE7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsMERBQTBEO0lBQzFELEtBQUssQ0FBQyxLQUFLO1FBQ1QsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQTtRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNsRCxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO0lBQy9CLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQTtZQUVwRCxJQUFJLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtvQkFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7b0JBQ3JFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDZixDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNmLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsS0FBSyxDQUFDLHVCQUF1QjtRQUMzQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFBO1FBQ2pDLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsS0FBSyxDQUFDLFdBQVc7UUFDZixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFFbkIsS0FBSyxNQUFNLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUV4QyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO1FBQzdCLENBQUM7UUFFRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1lBRTVELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQzdCLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ1YsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUNmLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ2YsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsMERBQTBEO0lBQzFELEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDeEIsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDekIsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxPQUFPLEdBQUcsR0FBRyxFQUFFO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDM0IsQ0FBQyxDQUFBO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUVwQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLFdBQVcsRUFBRSxDQUFDLENBQUE7UUFDOUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBRWxCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO1FBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDO1lBQzlCLFdBQVc7WUFDWCxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsTUFBTTtTQUNQLENBQUMsQ0FBQTtRQUVGLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7UUFFN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxXQUFXLGNBQWMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7UUFDdEYsYUFBYSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsTUFBTSxDQUFBO0lBQ3BDLENBQUMsQ0FBQTtJQUVEOzs7T0FHRztJQUNILGFBQWEsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUE7UUFDL0MsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFFekQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBRWhDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFBO1FBRXpELElBQUksZ0JBQWdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9DLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0VBQXNFLGdCQUFnQixPQUFPLGdCQUFnQixHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDcEksQ0FBQztJQUNILENBQUMsQ0FBQTtJQUVELDBEQUEwRDtJQUMxRCxLQUFLLENBQUMsV0FBVztRQUNmLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUE7UUFFcEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBRWxCLE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDO1lBQ3RDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxXQUFXO1NBQ1osQ0FBQyxDQUFBO1FBRUYsTUFBTSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUUxRSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDakYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBRTdELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxrQkFBa0IsRUFBRSxDQUFDLENBQUE7UUFDM0UsQ0FBQztRQUVELE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tIFwiLi4vdXRpbHMvZXZlbnQtZW1pdHRlci5qc1wiXG5pbXBvcnQge0xvZ2dlcn0gZnJvbSBcIi4uL2xvZ2dlci5qc1wiXG5pbXBvcnQgTmV0IGZyb20gXCJuZXRcIlxuaW1wb3J0IFNlcnZlckNsaWVudCBmcm9tIFwiLi9zZXJ2ZXItY2xpZW50LmpzXCJcbmltcG9ydCBXb3JrZXJIYW5kbGVyIGZyb20gXCIuL3dvcmtlci1oYW5kbGVyL2luZGV4LmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzSHR0cFNlcnZlciB7XG4gIGNsaWVudENvdW50ID0gMFxuXG4gIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgU2VydmVyQ2xpZW50Pn0gICovXG4gIGNsaWVudHMgPSB7fVxuXG4gIGV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICB3b3JrZXJDb3VudCA9IDBcblxuICAvKiogQHR5cGUge1dvcmtlckhhbmRsZXJbXX0gKi9cbiAgd29ya2VySGFuZGxlcnMgPSBbXVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gYXJncy5jb25maWd1cmF0aW9uIC0gQ29uZmlndXJhdGlvbiBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmhvc3RdIC0gSG9zdC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFthcmdzLnBvcnRdIC0gUG9ydC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFthcmdzLm1heFdvcmtlcnNdIC0gTWF4IHdvcmtlcnMuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7Y29uZmlndXJhdGlvbiwgaG9zdCwgbWF4V29ya2VycywgcG9ydH0pIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMpXG4gICAgdGhpcy5ob3N0ID0gaG9zdCB8fCBcIjAuMC4wLjBcIlxuICAgIHRoaXMucG9ydCA9IHBvcnQgfHwgMzAwNlxuICAgIHRoaXMubWF4V29ya2VycyA9IG1heFdvcmtlcnMgfHwgMTZcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLiAgKi9cbiAgYXN5bmMgc3RhcnQoKSB7XG4gICAgYXdhaXQgdGhpcy5fZW5zdXJlQXRMZWFzdE9uZVdvcmtlcigpXG4gICAgdGhpcy5uZXRTZXJ2ZXIgPSBuZXcgTmV0LlNlcnZlcigpXG4gICAgdGhpcy5uZXRTZXJ2ZXIub24oXCJjbG9zZVwiLCB0aGlzLm9uQ2xvc2UpXG4gICAgdGhpcy5uZXRTZXJ2ZXIub24oXCJjb25uZWN0aW9uXCIsIHRoaXMub25Db25uZWN0aW9uKVxuICAgIGF3YWl0IHRoaXMuX25ldFNlcnZlckxpc3RlbigpXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS4gICovXG4gIF9uZXRTZXJ2ZXJMaXN0ZW4oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghdGhpcy5uZXRTZXJ2ZXIpIHRocm93IG5ldyBFcnJvcihcIk5vIG5ldFNlcnZlclwiKVxuXG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLm5ldFNlcnZlci5saXN0ZW4odGhpcy5wb3J0LCB0aGlzLmhvc3QsICgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgVmVsb2Npb3VzIGxpc3RlbmluZyBvbiAke3RoaXMuaG9zdH06JHt0aGlzLnBvcnR9YClcbiAgICAgICAgICByZXNvbHZlKG51bGwpXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLiAgKi9cbiAgYXN5bmMgX2Vuc3VyZUF0TGVhc3RPbmVXb3JrZXIoKSB7XG4gICAgaWYgKHRoaXMud29ya2VySGFuZGxlcnMubGVuZ3RoID09IDApIHtcbiAgICAgIGF3YWl0IHRoaXMuc3Bhd25Xb3JrZXIoKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIGFjdGl2ZS4gICovXG4gIGlzQWN0aXZlKCkge1xuICAgIGlmICh0aGlzLm5ldFNlcnZlcikge1xuICAgICAgcmV0dXJuIHRoaXMubmV0U2VydmVyLmxpc3RlbmluZ1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuICAqL1xuICBhc3luYyBzdG9wQ2xpZW50cygpIHtcbiAgICBjb25zdCBwcm9taXNlcyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGNsaWVudENvdW50IGluIHRoaXMuY2xpZW50cykge1xuICAgICAgY29uc3QgY2xpZW50ID0gdGhpcy5jbGllbnRzW2NsaWVudENvdW50XVxuXG4gICAgICBwcm9taXNlcy5wdXNoKGNsaWVudC5lbmQoKSlcbiAgICB9XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLiAgKi9cbiAgc3RvcFNlcnZlcigpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLm5ldFNlcnZlcikgdGhyb3cgbmV3IEVycm9yKFwiTm8gbmV0U2VydmVyIHRvIHN0b3BcIilcblxuICAgICAgdGhpcy5uZXRTZXJ2ZXIuY2xvc2UoKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLiAgKi9cbiAgYXN5bmMgc3RvcCgpIHtcbiAgICBhd2FpdCB0aGlzLnN0b3BDbGllbnRzKClcbiAgICBhd2FpdCB0aGlzLnN0b3BTZXJ2ZXIoKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS4gICovXG4gIG9uQ2xvc2UgPSAoKSA9PiB7XG4gICAgdGhpcy5ldmVudHMuZW1pdChcImNsb3NlXCIpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCJuZXRcIikuU29ja2V0fSBzb2NrZXQgLSBTb2NrZXQgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIG9uQ29ubmVjdGlvbiA9IChzb2NrZXQpID0+IHtcbiAgICBjb25zdCBjbGllbnRDb3VudCA9IHRoaXMuY2xpZW50Q291bnRcblxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBOZXcgY2xpZW50ICR7Y2xpZW50Q291bnR9YClcbiAgICB0aGlzLmNsaWVudENvdW50KytcblxuICAgIGNvbnN0IHdvcmtlckhhbmRsZXIgPSB0aGlzLndvcmtlckhhbmRsZXJUb1VzZSgpXG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFNlcnZlckNsaWVudCh7XG4gICAgICBjbGllbnRDb3VudCxcbiAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuY29uZmlndXJhdGlvbixcbiAgICAgIHNvY2tldFxuICAgIH0pXG5cbiAgICBjbGllbnQuZXZlbnRzLm9uKFwiY2xvc2VcIiwgdGhpcy5vbkNsaWVudENsb3NlKVxuXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoYEdhdmUgY2xpZW50ICR7Y2xpZW50Q291bnR9IHRvIHdvcmtlciAke3dvcmtlckhhbmRsZXIud29ya2VyQ291bnR9YClcbiAgICB3b3JrZXJIYW5kbGVyLmFkZFNvY2tldENvbm5lY3Rpb24oY2xpZW50KVxuICAgIHRoaXMuY2xpZW50c1tjbGllbnRDb3VudF0gPSBjbGllbnRcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1NlcnZlckNsaWVudH0gY2xpZW50IC0gQ2xpZW50IGluc3RhbmNlLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBvbkNsaWVudENsb3NlID0gKGNsaWVudCkgPT4ge1xuICAgIGNvbnN0IGNsaWVudENvdW50ID0gZGlnZyhjbGllbnQsIFwiY2xpZW50Q291bnRcIilcbiAgICBjb25zdCBvbGRDbGllbnRzTGVuZ3RoID0gT2JqZWN0LmtleXModGhpcy5jbGllbnRzKS5sZW5ndGhcblxuICAgIGRlbGV0ZSB0aGlzLmNsaWVudHNbY2xpZW50Q291bnRdXG5cbiAgICBjb25zdCBuZXdDbGllbnRzTGVuZ3RoID0gT2JqZWN0LmtleXModGhpcy5jbGllbnRzKS5sZW5ndGhcblxuICAgIGlmIChuZXdDbGllbnRzTGVuZ3RoICE9IChvbGRDbGllbnRzTGVuZ3RoIC0gMSkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEV4cGVjdGVkIGNsaWVudCB0byBoYXZlIGJlZW4gcmVtb3ZlZCBidXQgbGVuZ3RoIGRpZG4ndCBjaGFuZ2UgZnJvbSAke29sZENsaWVudHNMZW5ndGh9IHRvICR7b2xkQ2xpZW50c0xlbmd0aCAtIDF9YClcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS4gICovXG4gIGFzeW5jIHNwYXduV29ya2VyKCkge1xuICAgIGNvbnN0IHdvcmtlckNvdW50ID0gdGhpcy53b3JrZXJDb3VudFxuXG4gICAgdGhpcy53b3JrZXJDb3VudCsrXG5cbiAgICBjb25zdCB3b3JrZXJIYW5kbGVyID0gbmV3IFdvcmtlckhhbmRsZXIoe1xuICAgICAgY29uZmlndXJhdGlvbjogdGhpcy5jb25maWd1cmF0aW9uLFxuICAgICAgd29ya2VyQ291bnRcbiAgICB9KVxuXG4gICAgYXdhaXQgd29ya2VySGFuZGxlci5zdGFydCgpXG4gICAgdGhpcy53b3JrZXJIYW5kbGVycy5wdXNoKHdvcmtlckhhbmRsZXIpXG4gIH1cblxuICAvKiogQHJldHVybnMge1dvcmtlckhhbmRsZXJ9IC0gVGhlIHdvcmtlciBoYW5kbGVyIHRvIHVzZS4gICovXG4gIHdvcmtlckhhbmRsZXJUb1VzZSgpIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgV29ya2VyIGhhbmRsZXJzIGxlbmd0aDogJHt0aGlzLndvcmtlckhhbmRsZXJzLmxlbmd0aH1gKVxuXG4gICAgY29uc3QgcmFuZG9tV29ya2VyTnVtYmVyID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogdGhpcy53b3JrZXJIYW5kbGVycy5sZW5ndGgpXG4gICAgY29uc3Qgd29ya2VySGFuZGxlciA9IHRoaXMud29ya2VySGFuZGxlcnNbcmFuZG9tV29ya2VyTnVtYmVyXVxuXG4gICAgaWYgKCF3b3JrZXJIYW5kbGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHdvcmtlckhhbmRsZXIgYnkgdGhhdCBudW1iZXI6ICR7cmFuZG9tV29ya2VyTnVtYmVyfWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHdvcmtlckhhbmRsZXJcbiAgfVxufVxuIl19
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaHR0cC1zZXJ2ZXIvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDOUIsT0FBTyxZQUFZLE1BQU0sMkJBQTJCLENBQUE7QUFDcEQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUNuQyxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUE7QUFDckIsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUE7QUFDN0MsT0FBTyxhQUFhLE1BQU0sMkJBQTJCLENBQUE7QUFFckQsTUFBTSxDQUFDLE9BQU8sT0FBTyxtQkFBbUI7SUFDdEMsV0FBVyxHQUFHLENBQUMsQ0FBQTtJQUVmLDRDQUE0QztJQUM1QyxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBRVosTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7SUFDM0IsV0FBVyxHQUFHLENBQUMsQ0FBQTtJQUVmLDhCQUE4QjtJQUM5QixjQUFjLEdBQUcsRUFBRSxDQUFBO0lBRW5COzs7Ozs7T0FNRztJQUNILFlBQVksRUFBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUM7UUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxTQUFTLENBQUE7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsMERBQTBEO0lBQzFELEtBQUssQ0FBQyxLQUFLO1FBQ1QsTUFBTSxJQUFJLENBQUMs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QUssQ0FBQywyQkFBMkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBRTFFLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNqRixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFFN0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLGtCQUFrQixFQUFFLENBQUMsQ0FBQTtRQUMzRSxDQUFDO1FBRUQsT0FBTyxhQUFhLENBQUE7SUFDdEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gXCIuLi91dGlscy9ldmVudC1lbWl0dGVyLmpzXCJcbmltcG9ydCB7TG9nZ2VyfSBmcm9tIFwiLi4vbG9nZ2VyLmpzXCJcbmltcG9ydCBOZXQgZnJvbSBcIm5ldFwiXG5pbXBvcnQgU2VydmVyQ2xpZW50IGZyb20gXCIuL3NlcnZlci1jbGllbnQuanNcIlxuaW1wb3J0IFdvcmtlckhhbmRsZXIgZnJvbSBcIi4vd29ya2VyLWhhbmRsZXIvaW5kZXguanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNIdHRwU2VydmVyIHtcbiAgY2xpZW50Q291bnQgPSAwXG5cbiAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBTZXJ2ZXJDbGllbnQ+fSAgKi9cbiAgY2xpZW50cyA9IHt9XG5cbiAgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIHdvcmtlckNvdW50ID0gMFxuXG4gIC8qKiBAdHlwZSB7V29ya2VySGFuZGxlcltdfSAqL1xuICB3b3JrZXJIYW5kbGVycyA9IFtdXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBhcmdzLmNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuaG9zdF0gLSBIb3N0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MucG9ydF0gLSBQb3J0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MubWF4V29ya2Vyc10gLSBNYXggd29ya2Vycy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWd1cmF0aW9uLCBob3N0LCBtYXhXb3JrZXJzLCBwb3J0fSkge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLmxvZ2dlciA9IG5ldyBMb2dnZXIodGhpcylcbiAgICB0aGlzLmhvc3QgPSBob3N0IHx8IFwiMC4wLjAuMFwiXG4gICAgdGhpcy5wb3J0ID0gcG9ydCB8fCAzMDA2XG4gICAgdGhpcy5tYXhXb3JrZXJzID0gbWF4V29ya2VycyB8fCAxNlxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuICAqL1xuICBhc3luYyBzdGFydCgpIHtcbiAgICBhd2FpdCB0aGlzLl9lbnN1cmVBdExlYXN0T25lV29ya2VyKClcbiAgICB0aGlzLm5ldFNlcnZlciA9IG5ldyBOZXQuU2VydmVyKClcbiAgICB0aGlzLm5ldFNlcnZlci5vbihcImNsb3NlXCIsIHRoaXMub25DbG9zZSlcbiAgICB0aGlzLm5ldFNlcnZlci5vbihcImNvbm5lY3Rpb25cIiwgdGhpcy5vbkNvbm5lY3Rpb24pXG4gICAgYXdhaXQgdGhpcy5fbmV0U2VydmVyTGlzdGVuKClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLiAgKi9cbiAgX25ldFNlcnZlckxpc3RlbigpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLm5ldFNlcnZlcikgdGhyb3cgbmV3IEVycm9yKFwiTm8gbmV0U2VydmVyXCIpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMubmV0U2VydmVyLmxpc3Rlbih0aGlzLnBvcnQsIHRoaXMuaG9zdCwgKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBWZWxvY2lvdXMgbGlzdGVuaW5nIG9uICR7dGhpcy5ob3N0fToke3RoaXMucG9ydH1gKVxuICAgICAgICAgIHJlc29sdmUobnVsbClcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuICAqL1xuICBhc3luYyBfZW5zdXJlQXRMZWFzdE9uZVdvcmtlcigpIHtcbiAgICBpZiAodGhpcy53b3JrZXJIYW5kbGVycy5sZW5ndGggPT0gMCkge1xuICAgICAgYXdhaXQgdGhpcy5zcGF3bldvcmtlcigpXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgYWN0aXZlLiAgKi9cbiAgaXNBY3RpdmUoKSB7XG4gICAgaWYgKHRoaXMubmV0U2VydmVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5uZXRTZXJ2ZXIubGlzdGVuaW5nXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS4gICovXG4gIGFzeW5jIHN0b3BDbGllbnRzKCkge1xuICAgIGNvbnN0IHByb21pc2VzID0gW11cblxuICAgIGZvciAoY29uc3QgY2xpZW50Q291bnQgaW4gdGhpcy5jbGllbnRzKSB7XG4gICAgICBjb25zdCBjbGllbnQgPSB0aGlzLmNsaWVudHNbY2xpZW50Q291bnRdXG5cbiAgICAgIHByb21pc2VzLnB1c2goY2xpZW50LmVuZCgpKVxuICAgIH1cblxuICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuICAqL1xuICBzdG9wU2VydmVyKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMubmV0U2VydmVyIHx8ICF0aGlzLm5ldFNlcnZlci5saXN0ZW5pbmcpIHtcbiAgICAgICAgcmVzb2x2ZShudWxsKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgdGhpcy5uZXRTZXJ2ZXIuY2xvc2UoKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLiAgKi9cbiAgYXN5bmMgc3RvcCgpIHtcbiAgICBhd2FpdCB0aGlzLnN0b3BDbGllbnRzKClcbiAgICBhd2FpdCB0aGlzLnN0b3BTZXJ2ZXIoKVxuXG4gICAgY29uc3Qgc3RvcFRhc2tzID0gdGhpcy53b3JrZXJIYW5kbGVycy5tYXAoKGhhbmRsZXIpID0+IGhhbmRsZXIuc3RvcCgpKVxuICAgIGF3YWl0IFByb21pc2UuYWxsKHN0b3BUYXNrcylcbiAgICB0aGlzLndvcmtlckhhbmRsZXJzID0gW11cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuICAqL1xuICBvbkNsb3NlID0gKCkgPT4ge1xuICAgIHRoaXMuZXZlbnRzLmVtaXQoXCJjbG9zZVwiKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwibmV0XCIpLlNvY2tldH0gc29ja2V0IC0gU29ja2V0IGluc3RhbmNlLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBvbkNvbm5lY3Rpb24gPSAoc29ja2V0KSA9PiB7XG4gICAgY29uc3QgY2xpZW50Q291bnQgPSB0aGlzLmNsaWVudENvdW50XG5cbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgTmV3IGNsaWVudCAke2NsaWVudENvdW50fWApXG4gICAgdGhpcy5jbGllbnRDb3VudCsrXG5cbiAgICBjb25zdCB3b3JrZXJIYW5kbGVyID0gdGhpcy53b3JrZXJIYW5kbGVyVG9Vc2UoKVxuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTZXJ2ZXJDbGllbnQoe1xuICAgICAgY2xpZW50Q291bnQsXG4gICAgICBjb25maWd1cmF0aW9uOiB0aGlzLmNvbmZpZ3VyYXRpb24sXG4gICAgICBzb2NrZXRcbiAgICB9KVxuXG4gICAgY2xpZW50LmV2ZW50cy5vbihcImNsb3NlXCIsIHRoaXMub25DbGllbnRDbG9zZSlcblxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBHYXZlIGNsaWVudCAke2NsaWVudENvdW50fSB0byB3b3JrZXIgJHt3b3JrZXJIYW5kbGVyLndvcmtlckNvdW50fWApXG4gICAgd29ya2VySGFuZGxlci5hZGRTb2NrZXRDb25uZWN0aW9uKGNsaWVudClcbiAgICB0aGlzLmNsaWVudHNbY2xpZW50Q291bnRdID0gY2xpZW50XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtTZXJ2ZXJDbGllbnR9IGNsaWVudCAtIENsaWVudCBpbnN0YW5jZS5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgb25DbGllbnRDbG9zZSA9IChjbGllbnQpID0+IHtcbiAgICBjb25zdCBjbGllbnRDb3VudCA9IGRpZ2coY2xpZW50LCBcImNsaWVudENvdW50XCIpXG4gICAgY29uc3Qgb2xkQ2xpZW50c0xlbmd0aCA9IE9iamVjdC5rZXlzKHRoaXMuY2xpZW50cykubGVuZ3RoXG5cbiAgICBkZWxldGUgdGhpcy5jbGllbnRzW2NsaWVudENvdW50XVxuXG4gICAgY29uc3QgbmV3Q2xpZW50c0xlbmd0aCA9IE9iamVjdC5rZXlzKHRoaXMuY2xpZW50cykubGVuZ3RoXG5cbiAgICBpZiAobmV3Q2xpZW50c0xlbmd0aCAhPSAob2xkQ2xpZW50c0xlbmd0aCAtIDEpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBFeHBlY3RlZCBjbGllbnQgdG8gaGF2ZSBiZWVuIHJlbW92ZWQgYnV0IGxlbmd0aCBkaWRuJ3QgY2hhbmdlIGZyb20gJHtvbGRDbGllbnRzTGVuZ3RofSB0byAke29sZENsaWVudHNMZW5ndGggLSAxfWApXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuICAqL1xuICBhc3luYyBzcGF3bldvcmtlcigpIHtcbiAgICBjb25zdCB3b3JrZXJDb3VudCA9IHRoaXMud29ya2VyQ291bnRcblxuICAgIHRoaXMud29ya2VyQ291bnQrK1xuXG4gICAgY29uc3Qgd29ya2VySGFuZGxlciA9IG5ldyBXb3JrZXJIYW5kbGVyKHtcbiAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuY29uZmlndXJhdGlvbixcbiAgICAgIHdvcmtlckNvdW50XG4gICAgfSlcblxuICAgIGF3YWl0IHdvcmtlckhhbmRsZXIuc3RhcnQoKVxuICAgIHRoaXMud29ya2VySGFuZGxlcnMucHVzaCh3b3JrZXJIYW5kbGVyKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtXb3JrZXJIYW5kbGVyfSAtIFRoZSB3b3JrZXIgaGFuZGxlciB0byB1c2UuICAqL1xuICB3b3JrZXJIYW5kbGVyVG9Vc2UoKSB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoYFdvcmtlciBoYW5kbGVycyBsZW5ndGg6ICR7dGhpcy53b3JrZXJIYW5kbGVycy5sZW5ndGh9YClcblxuICAgIGNvbnN0IHJhbmRvbVdvcmtlck51bWJlciA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHRoaXMud29ya2VySGFuZGxlcnMubGVuZ3RoKVxuICAgIGNvbnN0IHdvcmtlckhhbmRsZXIgPSB0aGlzLndvcmtlckhhbmRsZXJzW3JhbmRvbVdvcmtlck51bWJlcl1cblxuICAgIGlmICghd29ya2VySGFuZGxlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyB3b3JrZXJIYW5kbGVyIGJ5IHRoYXQgbnVtYmVyOiAke3JhbmRvbVdvcmtlck51bWJlcn1gKVxuICAgIH1cblxuICAgIHJldHVybiB3b3JrZXJIYW5kbGVyXG4gIH1cbn1cbiJdfQ==
@@ -14,6 +14,7 @@ export default class VelociousHttpServerWorker {
14
14
  logger: Logger;
15
15
  workerCount: number;
16
16
  unregisterFromEventsHost: () => void;
17
+ _stopping: boolean;
17
18
  start(): Promise<any>;
18
19
  onStartCallback: (value: any) => void;
19
20
  _spawnWorker(): Promise<void>;
@@ -32,6 +33,12 @@ export default class VelociousHttpServerWorker {
32
33
  * @returns {void} - No return value.
33
34
  */
34
35
  onWorkerExit: (code: number) => void;
36
+ _hasExited: boolean;
37
+ _stopResolve: (value: void | PromiseLike<void>) => void;
38
+ /**
39
+ * @returns {void} - No return value.
40
+ */
41
+ _closeAllClients(): void;
35
42
  /**
36
43
  * @param {object} data - Data payload.
37
44
  * @param {string} data.command - Command.
@@ -48,6 +55,10 @@ export default class VelociousHttpServerWorker {
48
55
  channel?: string;
49
56
  payload?: any;
50
57
  }) => void;
58
+ /**
59
+ * @returns {Promise<void>} - Resolves when stopped.
60
+ */
61
+ stop(): Promise<void>;
51
62
  /**
52
63
  * @param {object} args - Options object.
53
64
  * @param {string} args.channel - Channel name.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/http-server/worker-handler/index.js"],"names":[],"mappings":"AAOA;IACE;;;;OAIG;IACH,4CAHG;QAAuD,aAAa,EAA5D,OAAO,wBAAwB,EAAE,OAAO;QAC3B,WAAW,EAAxB,MAAM;KAChB,EAUA;IARC,wDAAkC;IAElC,oEAAoE;IACpE,SADW,MAAM,CAAC,MAAM,EAAE,OAAO,qBAAqB,EAAE,OAAO,CAAC,CAC/C;IAEjB,eAA8B;IAC9B,oBAA8B;IAC9B,qCAAkE;IAGpE,sBAKC;IAHG,sCAA8B;IAKlC,8BAgBC;IAXC,eAOE;IAMJ;;;OAGG;IACH,4BAHW,OAAO,qBAAqB,EAAE,OAAO,GACnC,IAAI,CAiBhB;IAED;;OAEG;IACH,gBAAiB,OAFN,GAEW,WAErB;IAED;;;OAGG;IACH,eAAgB,MAHL,MAGS,KAFP,IAAI,CAUhB;IAED;;;;;;;;OAQG;IACH,kBAAmB,MAPhB;QAAqB,OAAO,EAApB,MAAM;QACQ,WAAW,GAAzB,MAAM;QACQ,MAAM,GAApB,MAAM;QACQ,OAAO,GAArB,MAAM;QACK,OAAO,GAAlB,GAAG;KAGS,KAFV,IAAI,CAkChB;IAED;;;;;OAKG;IACH,6CAJG;QAAqB,OAAO,EAApB,MAAM;QACI,OAAO,EAAjB,GAAG;KACX,GAAU,IAAI,CAMhB;CACF;uBA/IoB,iBAAiB;uBACjB,gBAAgB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/http-server/worker-handler/index.js"],"names":[],"mappings":"AAOA;IACE;;;;OAIG;IACH,4CAHG;QAAuD,aAAa,EAA5D,OAAO,wBAAwB,EAAE,OAAO;QAC3B,WAAW,EAAxB,MAAM;KAChB,EAWA;IATC,wDAAkC;IAElC,oEAAoE;IACpE,SADW,MAAM,CAAC,MAAM,EAAE,OAAO,qBAAqB,EAAE,OAAO,CAAC,CAC/C;IAEjB,eAA8B;IAC9B,oBAA8B;IAC9B,qCAAkE;IAClE,mBAAsB;IAGxB,sBAKC;IAHG,sCAA8B;IAKlC,8BAgBC;IAXC,eAOE;IAMJ;;;OAGG;IACH,4BAHW,OAAO,qBAAqB,EAAE,OAAO,GACnC,IAAI,CAiBhB;IAED;;OAEG;IACH,gBAAiB,OAFN,GAEW,WAGrB;IAED;;;OAGG;IACH,eAAgB,MAHL,MAGS,KAFP,IAAI,CAehB;IAZC,oBAAsB;IAWtB,wDAAwB;IAG1B;;OAEG;IACH,oBAFa,IAAI,CAahB;IAED;;;;;;;;OAQG;IACH,kBAAmB,MAPhB;QAAqB,OAAO,EAApB,MAAM;QACQ,WAAW,GAAzB,MAAM;QACQ,MAAM,GAApB,MAAM;QACQ,OAAO,GAArB,MAAM;QACK,OAAO,GAAlB,GAAG;KAGS,KAFV,IAAI,CAqChB;IAED;;OAEG;IACH,QAFa,OAAO,CAAC,IAAI,CAAC,CAYzB;IAED;;;;;OAKG;IACH,6CAJG;QAAqB,OAAO,EAApB,MAAM;QACI,OAAO,EAAjB,GAAG;KACX,GAAU,IAAI,CAMhB;CACF;uBAxLoB,iBAAiB;uBACjB,gBAAgB"}
@@ -16,6 +16,7 @@ export default class VelociousHttpServerWorker {
16
16
  this.logger = new Logger(this);
17
17
  this.workerCount = workerCount;
18
18
  this.unregisterFromEventsHost = websocketEventsHost.register(this);
19
+ this._stopping = false;
19
20
  }
20
21
  start() {
21
22
  return new Promise((resolve) => {
@@ -60,6 +61,7 @@ export default class VelociousHttpServerWorker {
60
61
  * @param {any} error - Error instance.
61
62
  */
62
63
  onWorkerError = (error) => {
64
+ void this._closeAllClients();
63
65
  throw ensureError(error); // Throws original error with backtrace and everything into the console
64
66
  };
65
67
  /**
@@ -67,14 +69,33 @@ export default class VelociousHttpServerWorker {
67
69
  * @returns {void} - No return value.
68
70
  */
69
71
  onWorkerExit = (code) => {
70
- if (code !== 0) {
72
+ this._hasExited = true;
73
+ if (code !== 0 && !this._stopping) {
74
+ void this._closeAllClients();
71
75
  throw new Error(`Client worker stopped with exit code ${code}`);
72
76
  }
73
77
  else {
74
78
  this.logger.info(() => `Client worker stopped with exit code ${code}`);
75
79
  }
76
80
  this.unregisterFromEventsHost?.();
81
+ this._stopResolve?.();
82
+ this._stopResolve = null;
77
83
  };
84
+ /**
85
+ * @returns {void} - No return value.
86
+ */
87
+ _closeAllClients() {
88
+ const clients = Object.values(this.clients);
89
+ this.clients = {};
90
+ for (const client of clients) {
91
+ try {
92
+ void client.end();
93
+ }
94
+ catch (error) {
95
+ this.logger.warn("Failed to close client after worker exit", error);
96
+ }
97
+ }
98
+ }
78
99
  /**
79
100
  * @param {object} data - Data payload.
80
101
  * @param {string} data.command - Command.
@@ -105,6 +126,10 @@ export default class VelociousHttpServerWorker {
105
126
  this.clients[clientCount]?.end();
106
127
  delete this.clients[clientCount];
107
128
  }
129
+ else if (command == "shutdownComplete") {
130
+ this._stopResolve?.();
131
+ this._stopResolve = null;
132
+ }
108
133
  else if (command == "websocketPublish") {
109
134
  const { channel, payload } = data;
110
135
  websocketEventsHost.publish({ channel, payload });
@@ -113,6 +138,20 @@ export default class VelociousHttpServerWorker {
113
138
  throw new Error(`Unknown command: ${command}`);
114
139
  }
115
140
  };
141
+ /**
142
+ * @returns {Promise<void>} - Resolves when stopped.
143
+ */
144
+ stop() {
145
+ if (!this.worker)
146
+ return Promise.resolve();
147
+ if (this._hasExited)
148
+ return Promise.resolve();
149
+ this._stopping = true;
150
+ return new Promise((resolve) => {
151
+ this._stopResolve = resolve;
152
+ this.worker.postMessage({ command: "shutdown" });
153
+ });
154
+ }
116
155
  /**
117
156
  * @param {object} args - Options object.
118
157
  * @param {string} args.channel - Channel name.
@@ -125,4 +164,4 @@ export default class VelociousHttpServerWorker {
125
164
  this.worker.postMessage({ channel, command: "websocketEvent", payload });
126
165
  }
127
166
  }
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaHR0cC1zZXJ2ZXIvd29ya2VyLWhhbmRsZXIvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUE7QUFDckMsT0FBTyxXQUFXLE1BQU0sNkJBQTZCLENBQUE7QUFDckQsT0FBTyxtQkFBbUIsTUFBTSw2QkFBNkIsQ0FBQTtBQUU3RCxNQUFNLENBQUMsT0FBTyxPQUFPLHlCQUF5QjtJQUM1Qzs7OztPQUlHO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFFbEMsb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFBO1FBRWpCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDOUIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQTtZQUM5QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDckIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVk7UUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUE7UUFDdEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZ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QUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUE7SUFDeEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7TG9nZ2VyfSBmcm9tIFwiLi4vLi4vbG9nZ2VyLmpzXCJcbmltcG9ydCB7V29ya2VyfSBmcm9tIFwid29ya2VyX3RocmVhZHNcIlxuaW1wb3J0IGVuc3VyZUVycm9yIGZyb20gXCIuLi8uLi91dGlscy9lbnN1cmUtZXJyb3IuanNcIlxuaW1wb3J0IHdlYnNvY2tldEV2ZW50c0hvc3QgZnJvbSBcIi4uL3dlYnNvY2tldC1ldmVudHMtaG9zdC5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0h0dHBTZXJ2ZXJXb3JrZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24gaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhcmdzLndvcmtlckNvdW50IC0gV29ya2VyIGNvdW50LlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZ3VyYXRpb24sIHdvcmtlckNvdW50fSkge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25cblxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPG51bWJlciwgaW1wb3J0KFwiLi4vc2VydmVyLWNsaWVudC5qc1wiKS5kZWZhdWx0Pn0gKi9cbiAgICB0aGlzLmNsaWVudHMgPSB7fVxuXG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMpXG4gICAgdGhpcy53b3JrZXJDb3VudCA9IHdvcmtlckNvdW50XG4gICAgdGhpcy51bnJlZ2lzdGVyRnJvbUV2ZW50c0hvc3QgPSB3ZWJzb2NrZXRFdmVudHNIb3N0LnJlZ2lzdGVyKHRoaXMpXG4gIH1cblxuICBzdGFydCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMub25TdGFydENhbGxiYWNrID0gcmVzb2x2ZVxuICAgICAgdGhpcy5fc3Bhd25Xb3JrZXIoKVxuICAgIH0pXG4gIH1cblxuICBhc3luYyBfc3Bhd25Xb3JrZXIoKSB7XG4gICAgY29uc3QgZGVidWcgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZGVidWdcbiAgICBjb25zdCBkaXJlY3RvcnkgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0RGlyZWN0b3J5KClcbiAgICBjb25zdCB2ZWxvY2lvdXNQYXRoID0gYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uLmdldEVudmlyb25tZW50SGFuZGxlcigpLmdldFZlbG9jaW91c1BhdGgoKVxuXG4gICAgdGhpcy53b3JrZXIgPSBuZXcgV29ya2VyKGAke3ZlbG9jaW91c1BhdGh9L3NyYy9odHRwLXNlcnZlci93b3JrZXItaGFuZGxlci93b3JrZXItc2NyaXB0LmpzYCwge1xuICAgICAgd29ya2VyRGF0YToge1xuICAgICAgICBkZWJ1ZyxcbiAgICAgICAgZGlyZWN0b3J5LFxuICAgICAgICBlbnZpcm9ubWVudDogdGhpcy5jb25maWd1cmF0aW9uLmdldEVudmlyb25tZW50KCksXG4gICAgICAgIHdvcmtlckNvdW50OiB0aGlzLndvcmtlckNvdW50XG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLndvcmtlci5vbihcImVycm9yXCIsIHRoaXMub25Xb3JrZXJFcnJvcilcbiAgICB0aGlzLndvcmtlci5vbihcImV4aXRcIiwgdGhpcy5vbldvcmtlckV4aXQpXG4gICAgdGhpcy53b3JrZXIub24oXCJtZXNzYWdlXCIsIHRoaXMub25Xb3JrZXJNZXNzYWdlKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VydmVyLWNsaWVudC5qc1wiKS5kZWZhdWx0fSBjbGllbnQgLSBDbGllbnQgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGFkZFNvY2tldENvbm5lY3Rpb24oY2xpZW50KSB7XG4gICAgY29uc3QgY2xpZW50Q291bnQgPSBjbGllbnQuY2xpZW50Q291bnRcblxuICAgIGNsaWVudC5zb2NrZXQub24oXCJlbmRcIiwgKCkgPT4ge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFJlbW92aW5nICR7Y2xpZW50Q291bnR9IGZyb20gY2xpZW50c2ApXG4gICAgICBkZWxldGUgdGhpcy5jbGllbnRzW2NsaWVudENvdW50XVxuICAgIH0pXG5cbiAgICBpZiAoIXRoaXMud29ya2VyKSB0aHJvdyBuZXcgRXJyb3IoXCJXb3JrZXIgbm90IGluaXRpYWxpemVkXCIpXG5cbiAgICBjbGllbnQuc2V0V29ya2VyKHRoaXMud29ya2VyKVxuICAgIGNsaWVudC5saXN0ZW4oKVxuXG4gICAgdGhpcy5jbGllbnRzW2NsaWVudENvdW50XSA9IGNsaWVudFxuICAgIHRoaXMud29ya2VyLnBvc3RNZXNzYWdlKHtjb21tYW5kOiBcIm5ld0NsaWVudFwiLCBjbGllbnRDb3VudCwgcmVtb3RlQWRkcmVzczogY2xpZW50LnJlbW90ZUFkZHJlc3N9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7YW55fSBlcnJvciAtIEVycm9yIGluc3RhbmNlLlxuICAgKi9cbiAgb25Xb3JrZXJFcnJvciA9IChlcnJvcikgPT4ge1xuICAgIHRocm93IGVuc3VyZUVycm9yKGVycm9yKSAvLyBUaHJvd3Mgb3JpZ2luYWwgZXJyb3Igd2l0aCBiYWNrdHJhY2UgYW5kIGV2ZXJ5dGhpbmcgaW50byB0aGUgY29uc29sZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlIC0gQ29kZS5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgb25Xb3JrZXJFeGl0ID0gKGNvZGUpID0+IHtcbiAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDbGllbnQgd29ya2VyIHN0b3BwZWQgd2l0aCBleGl0IGNvZGUgJHtjb2RlfWApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyLmluZm8oKCkgPT4gYENsaWVudCB3b3JrZXIgc3RvcHBlZCB3aXRoIGV4aXQgY29kZSAke2NvZGV9YClcbiAgICB9XG5cbiAgICB0aGlzLnVucmVnaXN0ZXJGcm9tRXZlbnRzSG9zdD8uKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YSAtIERhdGEgcGF5bG9hZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEuY29tbWFuZCAtIENvbW1hbmQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZGF0YS5jbGllbnRDb3VudF0gLSBDbGllbnQgY291bnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZGF0YS5vdXRwdXRdIC0gT3V0cHV0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2RhdGEuY2hhbm5lbF0gLSBDaGFubmVsIG5hbWUuXG4gICAqIEBwYXJhbSB7YW55fSBbZGF0YS5wYXlsb2FkXSAtIFBheWxvYWQgZGF0YS5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgb25Xb3JrZXJNZXNzYWdlID0gKGRhdGEpID0+IHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgV29ya2VyIG1lc3NhZ2VgLCBkYXRhKVxuXG4gICAgY29uc3Qge2NvbW1hbmR9ID0gZGF0YVxuXG5cbiAgICBpZiAoY29tbWFuZCA9PSBcInN0YXJ0ZWRcIikge1xuICAgICAgaWYgKHRoaXMub25TdGFydENhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMub25TdGFydENhbGxiYWNrKG51bGwpXG4gICAgICB9XG5cbiAgICAgIHRoaXMub25TdGFydENhbGxiYWNrID0gbnVsbFxuICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9PSBcImNsaWVudE91dHB1dFwiKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIkNMSUVOVCBPVVRQVVRcIiwgZGF0YSlcblxuICAgICAgY29uc3Qge2NsaWVudENvdW50LCBvdXRwdXR9ID0gZGF0YVxuXG4gICAgICBpZiAob3V0cHV0ICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuY2xpZW50c1tjbGllbnRDb3VudF0/LnNlbmQob3V0cHV0KVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9PSBcImNsaWVudENsb3NlXCIpIHtcbiAgICAgIGNvbnN0IHtjbGllbnRDb3VudH0gPSBkYXRhXG5cbiAgICAgIHRoaXMuY2xpZW50c1tjbGllbnRDb3VudF0/LmVuZCgpXG4gICAgICBkZWxldGUgdGhpcy5jbGllbnRzW2NsaWVudENvdW50XVxuICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9PSBcIndlYnNvY2tldFB1Ymxpc2hcIikge1xuICAgICAgY29uc3Qge2NoYW5uZWwsIHBheWxvYWR9ID0gZGF0YVxuXG4gICAgICB3ZWJzb2NrZXRFdmVudHNIb3N0LnB1Ymxpc2goe2NoYW5uZWwsIHBheWxvYWR9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY29tbWFuZDogJHtjb21tYW5kfWApXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmNoYW5uZWwgLSBDaGFubmVsIG5hbWUuXG4gICAqIEBwYXJhbSB7YW55fSBhcmdzLnBheWxvYWQgLSBQYXlsb2FkIGRhdGEuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGRpc3BhdGNoV2Vic29ja2V0RXZlbnQoe2NoYW5uZWwsIHBheWxvYWR9KSB7XG4gICAgaWYgKCF0aGlzLndvcmtlcikgcmV0dXJuXG5cbiAgICB0aGlzLndvcmtlci5wb3N0TWVzc2FnZSh7Y2hhbm5lbCwgY29tbWFuZDogXCJ3ZWJzb2NrZXRFdmVudFwiLCBwYXlsb2FkfSlcbiAgfVxufVxuXG4iXX0=
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaHR0cC1zZXJ2ZXIvd29ya2VyLWhhbmRsZXIvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUE7QUFDckMsT0FBTyxXQUFXLE1BQU0sNkJBQTZCLENBQUE7QUFDckQsT0FBTyxtQkFBbUIsTUFBTSw2QkFBNkIsQ0FBQTtBQUU3RCxNQUFNLENBQUMsT0FBTyxPQUFPLHlCQUF5QjtJQUM1Qzs7OztPQUlHO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFFbEMsb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFBO1FBRWpCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDOUIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNsRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQTtJQUN4QixDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQTtZQUM5QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDckIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVk7UUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUE7UUFDdEMs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LENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsc0JBQXNCLENBQUMsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU07UUFFeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUE7SUFDeEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7TG9nZ2VyfSBmcm9tIFwiLi4vLi4vbG9nZ2VyLmpzXCJcbmltcG9ydCB7V29ya2VyfSBmcm9tIFwid29ya2VyX3RocmVhZHNcIlxuaW1wb3J0IGVuc3VyZUVycm9yIGZyb20gXCIuLi8uLi91dGlscy9lbnN1cmUtZXJyb3IuanNcIlxuaW1wb3J0IHdlYnNvY2tldEV2ZW50c0hvc3QgZnJvbSBcIi4uL3dlYnNvY2tldC1ldmVudHMtaG9zdC5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0h0dHBTZXJ2ZXJXb3JrZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24gaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhcmdzLndvcmtlckNvdW50IC0gV29ya2VyIGNvdW50LlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZ3VyYXRpb24sIHdvcmtlckNvdW50fSkge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25cblxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPG51bWJlciwgaW1wb3J0KFwiLi4vc2VydmVyLWNsaWVudC5qc1wiKS5kZWZhdWx0Pn0gKi9cbiAgICB0aGlzLmNsaWVudHMgPSB7fVxuXG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMpXG4gICAgdGhpcy53b3JrZXJDb3VudCA9IHdvcmtlckNvdW50XG4gICAgdGhpcy51bnJlZ2lzdGVyRnJvbUV2ZW50c0hvc3QgPSB3ZWJzb2NrZXRFdmVudHNIb3N0LnJlZ2lzdGVyKHRoaXMpXG4gICAgdGhpcy5fc3RvcHBpbmcgPSBmYWxzZVxuICB9XG5cbiAgc3RhcnQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICB0aGlzLm9uU3RhcnRDYWxsYmFjayA9IHJlc29sdmVcbiAgICAgIHRoaXMuX3NwYXduV29ya2VyKClcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgX3NwYXduV29ya2VyKCkge1xuICAgIGNvbnN0IGRlYnVnID0gdGhpcy5jb25maWd1cmF0aW9uLmRlYnVnXG4gICAgY29uc3QgZGlyZWN0b3J5ID0gdGhpcy5jb25maWd1cmF0aW9uLmdldERpcmVjdG9yeSgpXG4gICAgY29uc3QgdmVsb2Npb3VzUGF0aCA9IGF3YWl0IHRoaXMuY29uZmlndXJhdGlvbi5nZXRFbnZpcm9ubWVudEhhbmRsZXIoKS5nZXRWZWxvY2lvdXNQYXRoKClcblxuICAgIHRoaXMud29ya2VyID0gbmV3IFdvcmtlcihgJHt2ZWxvY2lvdXNQYXRofS9zcmMvaHR0cC1zZXJ2ZXIvd29ya2VyLWhhbmRsZXIvd29ya2VyLXNjcmlwdC5qc2AsIHtcbiAgICAgIHdvcmtlckRhdGE6IHtcbiAgICAgICAgZGVidWcsXG4gICAgICAgIGRpcmVjdG9yeSxcbiAgICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuY29uZmlndXJhdGlvbi5nZXRFbnZpcm9ubWVudCgpLFxuICAgICAgICB3b3JrZXJDb3VudDogdGhpcy53b3JrZXJDb3VudFxuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy53b3JrZXIub24oXCJlcnJvclwiLCB0aGlzLm9uV29ya2VyRXJyb3IpXG4gICAgdGhpcy53b3JrZXIub24oXCJleGl0XCIsIHRoaXMub25Xb3JrZXJFeGl0KVxuICAgIHRoaXMud29ya2VyLm9uKFwibWVzc2FnZVwiLCB0aGlzLm9uV29ya2VyTWVzc2FnZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlcnZlci1jbGllbnQuanNcIikuZGVmYXVsdH0gY2xpZW50IC0gQ2xpZW50IGluc3RhbmNlLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBhZGRTb2NrZXRDb25uZWN0aW9uKGNsaWVudCkge1xuICAgIGNvbnN0IGNsaWVudENvdW50ID0gY2xpZW50LmNsaWVudENvdW50XG5cbiAgICBjbGllbnQuc29ja2V0Lm9uKFwiZW5kXCIsICgpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBSZW1vdmluZyAke2NsaWVudENvdW50fSBmcm9tIGNsaWVudHNgKVxuICAgICAgZGVsZXRlIHRoaXMuY2xpZW50c1tjbGllbnRDb3VudF1cbiAgICB9KVxuXG4gICAgaWYgKCF0aGlzLndvcmtlcikgdGhyb3cgbmV3IEVycm9yKFwiV29ya2VyIG5vdCBpbml0aWFsaXplZFwiKVxuXG4gICAgY2xpZW50LnNldFdvcmtlcih0aGlzLndvcmtlcilcbiAgICBjbGllbnQubGlzdGVuKClcblxuICAgIHRoaXMuY2xpZW50c1tjbGllbnRDb3VudF0gPSBjbGllbnRcbiAgICB0aGlzLndvcmtlci5wb3N0TWVzc2FnZSh7Y29tbWFuZDogXCJuZXdDbGllbnRcIiwgY2xpZW50Q291bnQsIHJlbW90ZUFkZHJlc3M6IGNsaWVudC5yZW1vdGVBZGRyZXNzfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2FueX0gZXJyb3IgLSBFcnJvciBpbnN0YW5jZS5cbiAgICovXG4gIG9uV29ya2VyRXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICB2b2lkIHRoaXMuX2Nsb3NlQWxsQ2xpZW50cygpXG4gICAgdGhyb3cgZW5zdXJlRXJyb3IoZXJyb3IpIC8vIFRocm93cyBvcmlnaW5hbCBlcnJvciB3aXRoIGJhY2t0cmFjZSBhbmQgZXZlcnl0aGluZyBpbnRvIHRoZSBjb25zb2xlXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGUgLSBDb2RlLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBvbldvcmtlckV4aXQgPSAoY29kZSkgPT4ge1xuICAgIHRoaXMuX2hhc0V4aXRlZCA9IHRydWVcblxuICAgIGlmIChjb2RlICE9PSAwICYmICF0aGlzLl9zdG9wcGluZykge1xuICAgICAgdm9pZCB0aGlzLl9jbG9zZUFsbENsaWVudHMoKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDbGllbnQgd29ya2VyIHN0b3BwZWQgd2l0aCBleGl0IGNvZGUgJHtjb2RlfWApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyLmluZm8oKCkgPT4gYENsaWVudCB3b3JrZXIgc3RvcHBlZCB3aXRoIGV4aXQgY29kZSAke2NvZGV9YClcbiAgICB9XG5cbiAgICB0aGlzLnVucmVnaXN0ZXJGcm9tRXZlbnRzSG9zdD8uKClcbiAgICB0aGlzLl9zdG9wUmVzb2x2ZT8uKClcbiAgICB0aGlzLl9zdG9wUmVzb2x2ZSA9IG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBfY2xvc2VBbGxDbGllbnRzKCkge1xuICAgIGNvbnN0IGNsaWVudHMgPSBPYmplY3QudmFsdWVzKHRoaXMuY2xpZW50cylcbiAgICB0aGlzLmNsaWVudHMgPSB7fVxuXG4gICAgZm9yIChjb25zdCBjbGllbnQgb2YgY2xpZW50cykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdm9pZCBjbGllbnQuZW5kKClcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oXCJGYWlsZWQgdG8gY2xvc2UgY2xpZW50IGFmdGVyIHdvcmtlciBleGl0XCIsIGVycm9yKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YSAtIERhdGEgcGF5bG9hZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEuY29tbWFuZCAtIENvbW1hbmQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZGF0YS5jbGllbnRDb3VudF0gLSBDbGllbnQgY291bnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZGF0YS5vdXRwdXRdIC0gT3V0cHV0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2RhdGEuY2hhbm5lbF0gLSBDaGFubmVsIG5hbWUuXG4gICAqIEBwYXJhbSB7YW55fSBbZGF0YS5wYXlsb2FkXSAtIFBheWxvYWQgZGF0YS5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgb25Xb3JrZXJNZXNzYWdlID0gKGRhdGEpID0+IHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgV29ya2VyIG1lc3NhZ2VgLCBkYXRhKVxuXG4gICAgY29uc3Qge2NvbW1hbmR9ID0gZGF0YVxuXG5cbiAgICBpZiAoY29tbWFuZCA9PSBcInN0YXJ0ZWRcIikge1xuICAgICAgaWYgKHRoaXMub25TdGFydENhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMub25TdGFydENhbGxiYWNrKG51bGwpXG4gICAgICB9XG5cbiAgICAgIHRoaXMub25TdGFydENhbGxiYWNrID0gbnVsbFxuICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9PSBcImNsaWVudE91dHB1dFwiKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIkNMSUVOVCBPVVRQVVRcIiwgZGF0YSlcblxuICAgICAgY29uc3Qge2NsaWVudENvdW50LCBvdXRwdXR9ID0gZGF0YVxuXG4gICAgICBpZiAob3V0cHV0ICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuY2xpZW50c1tjbGllbnRDb3VudF0/LnNlbmQob3V0cHV0KVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9PSBcImNsaWVudENsb3NlXCIpIHtcbiAgICAgIGNvbnN0IHtjbGllbnRDb3VudH0gPSBkYXRhXG5cbiAgICAgIHRoaXMuY2xpZW50c1tjbGllbnRDb3VudF0/LmVuZCgpXG4gICAgICBkZWxldGUgdGhpcy5jbGllbnRzW2NsaWVudENvdW50XVxuICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9PSBcInNodXRkb3duQ29tcGxldGVcIikge1xuICAgICAgdGhpcy5fc3RvcFJlc29sdmU/LigpXG4gICAgICB0aGlzLl9zdG9wUmVzb2x2ZSA9IG51bGxcbiAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0gXCJ3ZWJzb2NrZXRQdWJsaXNoXCIpIHtcbiAgICAgIGNvbnN0IHtjaGFubmVsLCBwYXlsb2FkfSA9IGRhdGFcblxuICAgICAgd2Vic29ja2V0RXZlbnRzSG9zdC5wdWJsaXNoKHtjaGFubmVsLCBwYXlsb2FkfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNvbW1hbmQ6ICR7Y29tbWFuZH1gKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIHN0b3BwZWQuXG4gICAqL1xuICBzdG9wKCkge1xuICAgIGlmICghdGhpcy53b3JrZXIpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgIGlmICh0aGlzLl9oYXNFeGl0ZWQpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuXG4gICAgdGhpcy5fc3RvcHBpbmcgPSB0cnVlXG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuX3N0b3BSZXNvbHZlID0gcmVzb2x2ZVxuICAgICAgdGhpcy53b3JrZXIucG9zdE1lc3NhZ2Uoe2NvbW1hbmQ6IFwic2h1dGRvd25cIn0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jaGFubmVsIC0gQ2hhbm5lbCBuYW1lLlxuICAgKiBAcGFyYW0ge2FueX0gYXJncy5wYXlsb2FkIC0gUGF5bG9hZCBkYXRhLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBkaXNwYXRjaFdlYnNvY2tldEV2ZW50KHtjaGFubmVsLCBwYXlsb2FkfSkge1xuICAgIGlmICghdGhpcy53b3JrZXIpIHJldHVyblxuXG4gICAgdGhpcy53b3JrZXIucG9zdE1lc3NhZ2Uoe2NoYW5uZWwsIGNvbW1hbmQ6IFwid2Vic29ja2V0RXZlbnRcIiwgcGF5bG9hZH0pXG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"worker-thread.d.ts","sourceRoot":"","sources":["../../../../src/http-server/worker-handler/worker-thread.js"],"names":[],"mappings":"AASA;IACE;;;;OAIG;IACH,wCAHG;QAAkD,UAAU,EAApD,oCAAmC;QACiC,UAAU,EAA9E;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAC;KACvE,EAwBA;IAlBC,qCAAqC;IACrC,SADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAChB;IAEjB,eAA8B;IAC9B,iDAA4B;IAC5B;mBAZqB,MAAM;qBAAe,MAAM;qBAAe,MAAM;MAYzC;IAC5B,oBAA8B;IAchC;;OAEG;IACH,cAFa,OAAO,CAAC,IAAI,CAAC,CAsBzB;IAfC,uDAAuD;IACvD,eADW,OAAO,wBAAwB,EAAE,OAAO,CACH;IAMhD,iCAAwG;IAGxG,yBAA+F;IAOjG;;;;;;;;OAQG;IACH,YAAmB,MAPhB;QAAqB,OAAO,EAApB,MAAM;QACQ,KAAK,GAAnB,MAAM;QACQ,aAAa,GAA3B,MAAM;QACQ,WAAW,GAAzB,MAAM;QACQ,OAAO,GAArB,MAAM;QACK,OAAO,GAAlB,GAAG;KAES,mBAyCtB;IAED;;;;;OAKG;IACH,8CAJG;QAAqB,OAAO,EAApB,MAAM;QACI,OAAO,EAAjB,GAAG;KACX,GAAU,OAAO,CAAC,IAAI,CAAC,CAezB;CACF;mBAtIkB,oBAAoB;uBAGlB,iBAAiB;4BACV,wBAAwB;wBAL5B,sBAAsB"}
1
+ {"version":3,"file":"worker-thread.d.ts","sourceRoot":"","sources":["../../../../src/http-server/worker-handler/worker-thread.js"],"names":[],"mappings":"AASA;IACE;;;;OAIG;IACH,wCAHG;QAAkD,UAAU,EAApD,oCAAmC;QACiC,UAAU,EAA9E;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAC;KACvE,EAwBA;IAlBC,qCAAqC;IACrC,SADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAChB;IAEjB,eAA8B;IAC9B,iDAA4B;IAC5B;mBAZqB,MAAM;qBAAe,MAAM;qBAAe,MAAM;MAYzC;IAC5B,oBAA8B;IAchC;;OAEG;IACH,cAFa,OAAO,CAAC,IAAI,CAAC,CAsBzB;IAfC,uDAAuD;IACvD,eADW,OAAO,wBAAwB,EAAE,OAAO,CACH;IAMhD,iCAAwG;IAGxG,yBAA+F;IAOjG;;;;;;;;OAQG;IACH,YAAmB,MAPhB;QAAqB,OAAO,EAApB,MAAM;QACQ,KAAK,GAAnB,MAAM;QACQ,aAAa,GAA3B,MAAM;QACQ,WAAW,GAAzB,MAAM;QACQ,OAAO,GAArB,MAAM;QACK,OAAO,GAAlB,GAAG;KAES,mBAgDtB;IAED;;;;;OAKG;IACH,8CAJG;QAAqB,OAAO,EAApB,MAAM;QACI,OAAO,EAAjB,GAAG;KACX,GAAU,OAAO,CAAC,IAAI,CAAC,CAezB;CACF;mBA7IkB,oBAAoB;uBAGlB,iBAAiB;4BACV,wBAAwB;wBAL5B,sBAAsB"}
@@ -92,6 +92,13 @@ export default class VelociousHttpServerWorkerHandlerWorkerThread {
92
92
  const { channel, payload } = data;
93
93
  await this.broadcastWebsocketEvent({ channel, payload });
94
94
  }
95
+ else if (command == "shutdown") {
96
+ if (this.configuration?.closeDatabaseConnections) {
97
+ await this.configuration.closeDatabaseConnections();
98
+ }
99
+ this.parentPort.postMessage({ command: "shutdownComplete" });
100
+ process.exit(0);
101
+ }
95
102
  else {
96
103
  throw new Error(`Unknown command: ${command}`);
97
104
  }
@@ -114,4 +121,4 @@ export default class VelociousHttpServerWorkerHandlerWorkerThread {
114
121
  await Promise.all(sendTasks);
115
122
  }
116
123
  }
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLXRocmVhZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9odHRwLXNlcnZlci93b3JrZXItaGFuZGxlci93b3JrZXItdGhyZWFkLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLFdBQVcsTUFBTSxzQkFBc0IsQ0FBQTtBQUM5QyxPQUFPLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQTtBQUN2QyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sV0FBVyxNQUFNLHVCQUF1QixDQUFBO0FBQy9DLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0QyxPQUFPLGVBQWUsTUFBTSx3QkFBd0IsQ0FBQTtBQUVwRCxNQUFNLENBQUMsT0FBTyxPQUFPLDRDQUE0QztJQUMvRDs7OztPQUlHO0lBQ0gsWUFBWSxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFFMUQsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLFVBQVUsQ0FBQTtRQUVoQyxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFFakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQTtRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQTtRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtRQUU5QixVQUFVLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7UUFFckQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVB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QTtRQUNoRCxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsdUJBQXVCLENBQUMsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDO1FBQzlDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQTtRQUVwQixLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUN0QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUE7WUFFdkMsSUFBSSxDQUFDLE9BQU87Z0JBQUUsU0FBUTtZQUV0QixTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDckQsQ0FBQztRQUVELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEFwcGxpY2F0aW9uIGZyb20gXCIuLi8uLi9hcHBsaWNhdGlvbi5qc1wiXG5pbXBvcnQgQ2xpZW50IGZyb20gXCIuLi9jbGllbnQvaW5kZXguanNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBlcnJvckxvZ2dlciBmcm9tIFwiLi4vLi4vZXJyb3ItbG9nZ2VyLmpzXCJcbmltcG9ydCB7TG9nZ2VyfSBmcm9tIFwiLi4vLi4vbG9nZ2VyLmpzXCJcbmltcG9ydCBXZWJzb2NrZXRFdmVudHMgZnJvbSBcIi4uL3dlYnNvY2tldC1ldmVudHMuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNIdHRwU2VydmVyV29ya2VySGFuZGxlcldvcmtlclRocmVhZCB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIndvcmtlcl90aHJlYWRzXCIpLnBhcmVudFBvcnR9IGFyZ3MucGFyZW50UG9ydCAtIFBhcmVudCBwb3J0LlxuICAgKiBAcGFyYW0ge3tkaXJlY3Rvcnk6IHN0cmluZywgZW52aXJvbm1lbnQ6IHN0cmluZywgd29ya2VyQ291bnQ6IG51bWJlcn19IGFyZ3Mud29ya2VyRGF0YSAtIFdvcmtlciBjb25maWd1cmF0aW9uIGRldGFpbHMuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7cGFyZW50UG9ydCwgd29ya2VyRGF0YX0pIHtcbiAgICBpZiAoIXBhcmVudFBvcnQpIHRocm93IG5ldyBFcnJvcihcInBhcmVudFBvcnQgaXMgcmVxdWlyZWRcIilcblxuICAgIGNvbnN0IHt3b3JrZXJDb3VudH0gPSB3b3JrZXJEYXRhXG5cbiAgICAvKiogQHR5cGUge1JlY29yZDxudW1iZXIsIENsaWVudD59ICovXG4gICAgdGhpcy5jbGllbnRzID0ge31cblxuICAgIHRoaXMubG9nZ2VyID0gbmV3IExvZ2dlcih0aGlzKVxuICAgIHRoaXMucGFyZW50UG9ydCA9IHBhcmVudFBvcnRcbiAgICB0aGlzLndvcmtlckRhdGEgPSB3b3JrZXJEYXRhXG4gICAgdGhpcy53b3JrZXJDb3VudCA9IHdvcmtlckNvdW50XG5cbiAgICBwYXJlbnRQb3J0Lm9uKFwibWVzc2FnZVwiLCBlcnJvckxvZ2dlcih0aGlzLm9uQ29tbWFuZCkpXG5cbiAgICB0aGlzLmluaXRpYWxpemUoKS50aGVuKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5hcHBsaWNhdGlvbikgdGhyb3cgbmV3IEVycm9yKFwiQXBwbGljYXRpb24gbm90IGluaXRpYWxpemVkXCIpXG5cbiAgICAgIHRoaXMuYXBwbGljYXRpb24uaW5pdGlhbGl6ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1Z0xvd0xldmVsKCgpID0+IGBXb3JrZXIgJHt3b3JrZXJDb3VudH0gc3RhcnRlZGApXG4gICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2Uoe2NvbW1hbmQ6IFwic3RhcnRlZFwifSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgaW5pdGlhbGl6ZSgpIHtcbiAgICBjb25zdCB7ZGlyZWN0b3J5LCBlbnZpcm9ubWVudH0gPSB0aGlzLndvcmtlckRhdGFcbiAgICBjb25zdCBjb25maWd1cmF0aW9uUGF0aCA9IGAke2RpcmVjdG9yeX0vc3JjL2NvbmZpZy9jb25maWd1cmF0aW9uLmpzYFxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25JbXBvcnQgPSBhd2FpdCBpbXBvcnQoY29uZmlndXJhdGlvblBhdGgpXG5cbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4uLy4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gKi9cbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uSW1wb3J0LmRlZmF1bHRcblxuICAgIGlmICghdGhpcy5jb25maWd1cmF0aW9uKSB0aHJvdyBuZXcgRXJyb3IoYENvbmZpZ3VyYXRpb24gY291bGRuJ3QgYmUgbG9hZGVkIGZyb206ICR7Y29uZmlndXJhdGlvblBhdGh9YClcblxuICAgIHRoaXMuY29uZmlndXJhdGlvbi5zZXRFbnZpcm9ubWVudChlbnZpcm9ubWVudClcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2V0Q3VycmVudCgpXG4gICAgdGhpcy53ZWJzb2NrZXRFdmVudHMgPSBuZXcgV2Vic29ja2V0RXZlbnRzKHtwYXJlbnRQb3J0OiB0aGlzLnBhcmVudFBvcnQsIHdvcmtlckNvdW50OiB0aGlzLndvcmtlckNvdW50fSlcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2V0V2Vic29ja2V0RXZlbnRzKHRoaXMud2Vic29ja2V0RXZlbnRzKVxuXG4gICAgdGhpcy5hcHBsaWNhdGlvbiA9IG5ldyBBcHBsaWNhdGlvbih7Y29uZmlndXJhdGlvbjogdGhpcy5jb25maWd1cmF0aW9uLCB0eXBlOiBcIndvcmtlci1oYW5kbGVyXCJ9KVxuXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5pc0luaXRpYWxpemVkKCkpIHtcbiAgICAgIGF3YWl0IHRoaXMuY29uZmlndXJhdGlvbi5pbml0aWFsaXplKHt0eXBlOiBcIndvcmtlci1oYW5kbGVyXCJ9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YSAtIERhdGEgcGF5bG9hZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEuY29tbWFuZCAtIENvbW1hbmQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZGF0YS5jaHVua10gLSBDaHVuay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtkYXRhLnJlbW90ZUFkZHJlc3NdIC0gUmVtb3RlIGFkZHJlc3MuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZGF0YS5jbGllbnRDb3VudF0gLSBDbGllbnQgY291bnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZGF0YS5jaGFubmVsXSAtIENoYW5uZWwgbmFtZS5cbiAgICogQHBhcmFtIHthbnl9IFtkYXRhLnBheWxvYWRdIC0gUGF5bG9hZCBkYXRhLlxuICAgKi9cbiAgb25Db21tYW5kID0gYXN5bmMgKGRhdGEpID0+IHtcbiAgICBhd2FpdCB0aGlzLmxvZ2dlci5kZWJ1Z0xvd0xldmVsKCgpID0+IFtgV29ya2VyICR7dGhpcy53b3JrZXJDb3VudH0gcmVjZWl2ZWQgY29tbWFuZGAsIGRhdGFdKVxuXG4gICAgY29uc3QgY29tbWFuZCA9IGRhdGEuY29tbWFuZFxuXG4gICAgaWYgKGNvbW1hbmQgPT0gXCJuZXdDbGllbnRcIikge1xuICAgICAgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb24pIHRocm93IG5ldyBFcnJvcihcIkNvbmZpZ3VyYXRpb24gbm90IGluaXRpYWxpemVkXCIpXG5cbiAgICAgIGNvbnN0IHtjbGllbnRDb3VudCwgcmVtb3RlQWRkcmVzc30gPSBkYXRhXG4gICAgICBjb25zdCBjbGllbnQgPSBuZXcgQ2xpZW50KHtcbiAgICAgICAgY2xpZW50Q291bnQsXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuY29uZmlndXJhdGlvbixcbiAgICAgICAgcmVtb3RlQWRkcmVzc1xuICAgICAgfSlcblxuICAgICAgY2xpZW50LmV2ZW50cy5vbihcIm91dHB1dFwiLCAob3V0cHV0KSA9PiB7XG4gICAgICAgIHRoaXMucGFyZW50UG9ydC5wb3N0TWVzc2FnZSh7Y29tbWFuZDogXCJjbGllbnRPdXRwdXRcIiwgY2xpZW50Q291bnQsIG91dHB1dH0pXG4gICAgICB9KVxuXG4gICAgICBjbGllbnQuZXZlbnRzLm9uKFwiY2xvc2VcIiwgKG91dHB1dCkgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFwiQ2xvc2UgcmVjZWl2ZWQgZnJvbSBjbGllbnQgaW4gd29ya2VyIC0gZm9yd2FyZGluZyB0byB3b3JrZXIgcGFyZW50XCIpXG4gICAgICAgIHRoaXMucGFyZW50UG9ydC5wb3N0TWVzc2FnZSh7Y29tbWFuZDogXCJjbGllbnRDbG9zZVwiLCBjbGllbnRDb3VudCwgb3V0cHV0fSlcbiAgICAgIH0pXG5cbiAgICAgIHRoaXMuY2xpZW50c1tjbGllbnRDb3VudF0gPSBjbGllbnRcbiAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0gXCJjbGllbnRXcml0ZVwiKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvZ2dlci5kZWJ1Z0xvd0xldmVsKFwiTG9va2luZyB1cCBjbGllbnRcIilcblxuICAgICAgY29uc3Qge2NodW5rLCBjbGllbnRDb3VudH0gPSBkYXRhXG4gICAgICBjb25zdCBjbGllbnQgPSBkaWdnKHRoaXMuY2xpZW50cywgY2xpZW50Q291bnQpXG5cbiAgICAgIGF3YWl0IHRoaXMubG9nZ2VyLmRlYnVnTG93TGV2ZWwoYFNlbmRpbmcgdG8gY2xpZW50ICR7Y2xpZW50Q291bnR9YClcblxuICAgICAgY2xpZW50Lm9uV3JpdGUoY2h1bmspXG4gICAgfSBlbHNlIGlmIChjb21tYW5kID09IFwid2Vic29ja2V0RXZlbnRcIikge1xuICAgICAgY29uc3Qge2NoYW5uZWwsIHBheWxvYWR9ID0gZGF0YVxuXG4gICAgICBhd2FpdCB0aGlzLmJyb2FkY2FzdFdlYnNvY2tldEV2ZW50KHtjaGFubmVsLCBwYXlsb2FkfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNvbW1hbmQ6ICR7Y29tbWFuZH1gKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jaGFubmVsIC0gQ2hhbm5lbCBuYW1lLlxuICAgKiBAcGFyYW0ge2FueX0gYXJncy5wYXlsb2FkIC0gUGF5bG9hZCBkYXRhLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgYnJvYWRjYXN0V2Vic29ja2V0RXZlbnQoe2NoYW5uZWwsIHBheWxvYWR9KSB7XG4gICAgY29uc3Qgc2VuZFRhc2tzID0gW11cblxuICAgIGZvciAoY29uc3QgY2xpZW50S2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuY2xpZW50cykpIHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuY2xpZW50c1tjbGllbnRLZXldXG4gICAgICBjb25zdCBzZXNzaW9uID0gY2xpZW50LndlYnNvY2tldFNlc3Npb25cblxuICAgICAgaWYgKCFzZXNzaW9uKSBjb250aW51ZVxuXG4gICAgICBzZW5kVGFza3MucHVzaChzZXNzaW9uLnNlbmRFdmVudChjaGFubmVsLCBwYXlsb2FkKSlcbiAgICB9XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChzZW5kVGFza3MpXG4gIH1cbn1cbiJdfQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLXRocmVhZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9odHRwLXNlcnZlci93b3JrZXItaGFuZGxlci93b3JrZXItdGhyZWFkLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLFdBQVcsTUFBTSxzQkFBc0IsQ0FBQTtBQUM5QyxPQUFPLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQTtBQUN2QyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sV0FBVyxNQUFNLHVCQUF1QixDQUFBO0FBQy9DLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0QyxPQUFPLGVBQWUsTUFBTSx3QkFBd0IsQ0FBQTtBQUVwRCxNQUFNLENBQUMsT0FBTyxPQUFPLDRDQUE0QztJQUMvRDs7OztPQUlHO0lBQ0gsWUFBWSxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFFMUQsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLFVBQVUsQ0FBQTtRQUVoQyxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFFakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQTtRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQTtRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtRQUU5QixVQUFVLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7UUFFckQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVB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LEVBQUUsd0JBQXdCLEVBQUUsQ0FBQztnQkFDakQsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLHdCQUF3QixFQUFFLENBQUE7WUFDckQsQ0FBQztZQUVELElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUMsT0FBTyxFQUFFLGtCQUFrQixFQUFDLENBQUMsQ0FBQTtZQUMxRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2pCLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUNoRCxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsdUJBQXVCLENBQUMsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDO1FBQzlDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQTtRQUVwQixLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUN0QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUE7WUFFdkMsSUFBSSxDQUFDLE9BQU87Z0JBQUUsU0FBUTtZQUV0QixTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDckQsQ0FBQztRQUVELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEFwcGxpY2F0aW9uIGZyb20gXCIuLi8uLi9hcHBsaWNhdGlvbi5qc1wiXG5pbXBvcnQgQ2xpZW50IGZyb20gXCIuLi9jbGllbnQvaW5kZXguanNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBlcnJvckxvZ2dlciBmcm9tIFwiLi4vLi4vZXJyb3ItbG9nZ2VyLmpzXCJcbmltcG9ydCB7TG9nZ2VyfSBmcm9tIFwiLi4vLi4vbG9nZ2VyLmpzXCJcbmltcG9ydCBXZWJzb2NrZXRFdmVudHMgZnJvbSBcIi4uL3dlYnNvY2tldC1ldmVudHMuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNIdHRwU2VydmVyV29ya2VySGFuZGxlcldvcmtlclRocmVhZCB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIndvcmtlcl90aHJlYWRzXCIpLnBhcmVudFBvcnR9IGFyZ3MucGFyZW50UG9ydCAtIFBhcmVudCBwb3J0LlxuICAgKiBAcGFyYW0ge3tkaXJlY3Rvcnk6IHN0cmluZywgZW52aXJvbm1lbnQ6IHN0cmluZywgd29ya2VyQ291bnQ6IG51bWJlcn19IGFyZ3Mud29ya2VyRGF0YSAtIFdvcmtlciBjb25maWd1cmF0aW9uIGRldGFpbHMuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7cGFyZW50UG9ydCwgd29ya2VyRGF0YX0pIHtcbiAgICBpZiAoIXBhcmVudFBvcnQpIHRocm93IG5ldyBFcnJvcihcInBhcmVudFBvcnQgaXMgcmVxdWlyZWRcIilcblxuICAgIGNvbnN0IHt3b3JrZXJDb3VudH0gPSB3b3JrZXJEYXRhXG5cbiAgICAvKiogQHR5cGUge1JlY29yZDxudW1iZXIsIENsaWVudD59ICovXG4gICAgdGhpcy5jbGllbnRzID0ge31cblxuICAgIHRoaXMubG9nZ2VyID0gbmV3IExvZ2dlcih0aGlzKVxuICAgIHRoaXMucGFyZW50UG9ydCA9IHBhcmVudFBvcnRcbiAgICB0aGlzLndvcmtlckRhdGEgPSB3b3JrZXJEYXRhXG4gICAgdGhpcy53b3JrZXJDb3VudCA9IHdvcmtlckNvdW50XG5cbiAgICBwYXJlbnRQb3J0Lm9uKFwibWVzc2FnZVwiLCBlcnJvckxvZ2dlcih0aGlzLm9uQ29tbWFuZCkpXG5cbiAgICB0aGlzLmluaXRpYWxpemUoKS50aGVuKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5hcHBsaWNhdGlvbikgdGhyb3cgbmV3IEVycm9yKFwiQXBwbGljYXRpb24gbm90IGluaXRpYWxpemVkXCIpXG5cbiAgICAgIHRoaXMuYXBwbGljYXRpb24uaW5pdGlhbGl6ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1Z0xvd0xldmVsKCgpID0+IGBXb3JrZXIgJHt3b3JrZXJDb3VudH0gc3RhcnRlZGApXG4gICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2Uoe2NvbW1hbmQ6IFwic3RhcnRlZFwifSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgaW5pdGlhbGl6ZSgpIHtcbiAgICBjb25zdCB7ZGlyZWN0b3J5LCBlbnZpcm9ubWVudH0gPSB0aGlzLndvcmtlckRhdGFcbiAgICBjb25zdCBjb25maWd1cmF0aW9uUGF0aCA9IGAke2RpcmVjdG9yeX0vc3JjL2NvbmZpZy9jb25maWd1cmF0aW9uLmpzYFxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25JbXBvcnQgPSBhd2FpdCBpbXBvcnQoY29uZmlndXJhdGlvblBhdGgpXG5cbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4uLy4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gKi9cbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uSW1wb3J0LmRlZmF1bHRcblxuICAgIGlmICghdGhpcy5jb25maWd1cmF0aW9uKSB0aHJvdyBuZXcgRXJyb3IoYENvbmZpZ3VyYXRpb24gY291bGRuJ3QgYmUgbG9hZGVkIGZyb206ICR7Y29uZmlndXJhdGlvblBhdGh9YClcblxuICAgIHRoaXMuY29uZmlndXJhdGlvbi5zZXRFbnZpcm9ubWVudChlbnZpcm9ubWVudClcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2V0Q3VycmVudCgpXG4gICAgdGhpcy53ZWJzb2NrZXRFdmVudHMgPSBuZXcgV2Vic29ja2V0RXZlbnRzKHtwYXJlbnRQb3J0OiB0aGlzLnBhcmVudFBvcnQsIHdvcmtlckNvdW50OiB0aGlzLndvcmtlckNvdW50fSlcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2V0V2Vic29ja2V0RXZlbnRzKHRoaXMud2Vic29ja2V0RXZlbnRzKVxuXG4gICAgdGhpcy5hcHBsaWNhdGlvbiA9IG5ldyBBcHBsaWNhdGlvbih7Y29uZmlndXJhdGlvbjogdGhpcy5jb25maWd1cmF0aW9uLCB0eXBlOiBcIndvcmtlci1oYW5kbGVyXCJ9KVxuXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5pc0luaXRpYWxpemVkKCkpIHtcbiAgICAgIGF3YWl0IHRoaXMuY29uZmlndXJhdGlvbi5pbml0aWFsaXplKHt0eXBlOiBcIndvcmtlci1oYW5kbGVyXCJ9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YSAtIERhdGEgcGF5bG9hZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEuY29tbWFuZCAtIENvbW1hbmQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZGF0YS5jaHVua10gLSBDaHVuay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtkYXRhLnJlbW90ZUFkZHJlc3NdIC0gUmVtb3RlIGFkZHJlc3MuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZGF0YS5jbGllbnRDb3VudF0gLSBDbGllbnQgY291bnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZGF0YS5jaGFubmVsXSAtIENoYW5uZWwgbmFtZS5cbiAgICogQHBhcmFtIHthbnl9IFtkYXRhLnBheWxvYWRdIC0gUGF5bG9hZCBkYXRhLlxuICAgKi9cbiAgb25Db21tYW5kID0gYXN5bmMgKGRhdGEpID0+IHtcbiAgICBhd2FpdCB0aGlzLmxvZ2dlci5kZWJ1Z0xvd0xldmVsKCgpID0+IFtgV29ya2VyICR7dGhpcy53b3JrZXJDb3VudH0gcmVjZWl2ZWQgY29tbWFuZGAsIGRhdGFdKVxuXG4gICAgY29uc3QgY29tbWFuZCA9IGRhdGEuY29tbWFuZFxuXG4gICAgaWYgKGNvbW1hbmQgPT0gXCJuZXdDbGllbnRcIikge1xuICAgICAgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb24pIHRocm93IG5ldyBFcnJvcihcIkNvbmZpZ3VyYXRpb24gbm90IGluaXRpYWxpemVkXCIpXG5cbiAgICAgIGNvbnN0IHtjbGllbnRDb3VudCwgcmVtb3RlQWRkcmVzc30gPSBkYXRhXG4gICAgICBjb25zdCBjbGllbnQgPSBuZXcgQ2xpZW50KHtcbiAgICAgICAgY2xpZW50Q291bnQsXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuY29uZmlndXJhdGlvbixcbiAgICAgICAgcmVtb3RlQWRkcmVzc1xuICAgICAgfSlcblxuICAgICAgY2xpZW50LmV2ZW50cy5vbihcIm91dHB1dFwiLCAob3V0cHV0KSA9PiB7XG4gICAgICAgIHRoaXMucGFyZW50UG9ydC5wb3N0TWVzc2FnZSh7Y29tbWFuZDogXCJjbGllbnRPdXRwdXRcIiwgY2xpZW50Q291bnQsIG91dHB1dH0pXG4gICAgICB9KVxuXG4gICAgICBjbGllbnQuZXZlbnRzLm9uKFwiY2xvc2VcIiwgKG91dHB1dCkgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFwiQ2xvc2UgcmVjZWl2ZWQgZnJvbSBjbGllbnQgaW4gd29ya2VyIC0gZm9yd2FyZGluZyB0byB3b3JrZXIgcGFyZW50XCIpXG4gICAgICAgIHRoaXMucGFyZW50UG9ydC5wb3N0TWVzc2FnZSh7Y29tbWFuZDogXCJjbGllbnRDbG9zZVwiLCBjbGllbnRDb3VudCwgb3V0cHV0fSlcbiAgICAgIH0pXG5cbiAgICAgIHRoaXMuY2xpZW50c1tjbGllbnRDb3VudF0gPSBjbGllbnRcbiAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0gXCJjbGllbnRXcml0ZVwiKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvZ2dlci5kZWJ1Z0xvd0xldmVsKFwiTG9va2luZyB1cCBjbGllbnRcIilcblxuICAgICAgY29uc3Qge2NodW5rLCBjbGllbnRDb3VudH0gPSBkYXRhXG4gICAgICBjb25zdCBjbGllbnQgPSBkaWdnKHRoaXMuY2xpZW50cywgY2xpZW50Q291bnQpXG5cbiAgICAgIGF3YWl0IHRoaXMubG9nZ2VyLmRlYnVnTG93TGV2ZWwoYFNlbmRpbmcgdG8gY2xpZW50ICR7Y2xpZW50Q291bnR9YClcblxuICAgICAgY2xpZW50Lm9uV3JpdGUoY2h1bmspXG4gICAgfSBlbHNlIGlmIChjb21tYW5kID09IFwid2Vic29ja2V0RXZlbnRcIikge1xuICAgICAgY29uc3Qge2NoYW5uZWwsIHBheWxvYWR9ID0gZGF0YVxuXG4gICAgICBhd2FpdCB0aGlzLmJyb2FkY2FzdFdlYnNvY2tldEV2ZW50KHtjaGFubmVsLCBwYXlsb2FkfSlcbiAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0gXCJzaHV0ZG93blwiKSB7XG4gICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uPy5jbG9zZURhdGFiYXNlQ29ubmVjdGlvbnMpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uLmNsb3NlRGF0YWJhc2VDb25uZWN0aW9ucygpXG4gICAgICB9XG5cbiAgICAgIHRoaXMucGFyZW50UG9ydC5wb3N0TWVzc2FnZSh7Y29tbWFuZDogXCJzaHV0ZG93bkNvbXBsZXRlXCJ9KVxuICAgICAgcHJvY2Vzcy5leGl0KDApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBjb21tYW5kOiAke2NvbW1hbmR9YClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuY2hhbm5lbCAtIENoYW5uZWwgbmFtZS5cbiAgICogQHBhcmFtIHthbnl9IGFyZ3MucGF5bG9hZCAtIFBheWxvYWQgZGF0YS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIGJyb2FkY2FzdFdlYnNvY2tldEV2ZW50KHtjaGFubmVsLCBwYXlsb2FkfSkge1xuICAgIGNvbnN0IHNlbmRUYXNrcyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGNsaWVudEtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmNsaWVudHMpKSB7XG4gICAgICBjb25zdCBjbGllbnQgPSB0aGlzLmNsaWVudHNbY2xpZW50S2V5XVxuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGNsaWVudC53ZWJzb2NrZXRTZXNzaW9uXG5cbiAgICAgIGlmICghc2Vzc2lvbikgY29udGludWVcblxuICAgICAgc2VuZFRhc2tzLnB1c2goc2Vzc2lvbi5zZW5kRXZlbnQoY2hhbm5lbCwgcGF5bG9hZCkpXG4gICAgfVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoc2VuZFRhc2tzKVxuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"format-value.d.ts","sourceRoot":"","sources":["../../../src/testing/format-value.js"],"names":[],"mappings":"AA8DA;;;GAGG;AACH,mCAHW,GAAG,GACD,MAAM,CAqBlB;AArED;;;;GAIG;AACH,yCAHW,GAAG,GACD,MAAM,CAyClB"}
1
+ {"version":3,"file":"format-value.d.ts","sourceRoot":"","sources":["../../../src/testing/format-value.js"],"names":[],"mappings":"AAkEA;;;GAGG;AACH,mCAHW,GAAG,GACD,MAAM,CAyBlB;AA7ED;;;;GAIG;AACH,yCAHW,GAAG,GACD,MAAM,CA6ClB"}