@decohere/flux 0.0.1-dev.8 → 0.0.1-dev.81

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 (51) hide show
  1. package/commonjs/src/deferred-script-runner.js +58 -0
  2. package/commonjs/src/flux.command.js +29 -0
  3. package/commonjs/src/flux.module.js +38 -0
  4. package/commonjs/src/hot-reload-server.js +293 -160
  5. package/commonjs/src/index.js +33 -32
  6. package/commonjs/src/rewrite-serve-specifier.js +46 -0
  7. package/commonjs/src/run.action.js +71 -0
  8. package/commonjs/src/run.command.js +67 -0
  9. package/commonjs/src/serve.action.js +94 -10
  10. package/commonjs/src/serve.command.js +36 -4
  11. package/commonjs/src/slice-serve.js +132 -0
  12. package/commonjs/src/source-module-loader.js +216 -0
  13. package/es6/src/deferred-script-runner.js +48 -0
  14. package/es6/src/flux.command.js +19 -0
  15. package/es6/src/flux.module.js +28 -0
  16. package/es6/src/hot-reload-server.js +280 -117
  17. package/es6/src/index.js +6 -7
  18. package/es6/src/rewrite-serve-specifier.js +40 -0
  19. package/es6/src/run.action.js +58 -0
  20. package/es6/src/run.command.js +57 -0
  21. package/es6/src/serve.action.js +92 -10
  22. package/es6/src/serve.command.js +37 -5
  23. package/es6/src/slice-serve.js +107 -0
  24. package/es6/src/source-module-loader.js +160 -0
  25. package/package.json +8 -12
  26. package/types/src/deferred-script-runner.d.ts +18 -0
  27. package/types/src/{ember.command.d.ts → flux.command.d.ts} +1 -1
  28. package/types/src/flux.module.d.ts +16 -0
  29. package/types/src/hot-reload-server.d.ts +62 -22
  30. package/types/src/index.d.ts +8 -8
  31. package/types/src/rewrite-serve-specifier.d.ts +13 -0
  32. package/types/src/run.action.d.ts +17 -0
  33. package/types/src/run.command.d.ts +11 -0
  34. package/types/src/serve.action.d.ts +17 -2
  35. package/types/src/serve.command.d.ts +7 -2
  36. package/types/src/slice-serve.d.ts +52 -0
  37. package/types/src/source-module-loader.d.ts +49 -0
  38. package/commonjs/src/ember.command.js +0 -27
  39. package/commonjs/src/ember.module.js +0 -37
  40. package/commonjs/src/hot-module-hooks.js +0 -47
  41. package/commonjs/src/serve.js +0 -36
  42. package/commonjs/src/workspace-serve.action.js +0 -59
  43. package/es6/src/ember.command.js +0 -17
  44. package/es6/src/ember.module.js +0 -19
  45. package/es6/src/hot-module-hooks.js +0 -26
  46. package/es6/src/serve.js +0 -32
  47. package/es6/src/workspace-serve.action.js +0 -45
  48. package/types/src/ember.module.d.ts +0 -22
  49. package/types/src/hot-module-hooks.d.ts +0 -5
  50. package/types/src/serve.d.ts +0 -1
  51. package/types/src/workspace-serve.action.d.ts +0 -11
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "DeferredScriptRunner", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return DeferredScriptRunner;
9
+ }
10
+ });
11
+ const _nodechild_process = require("node:child_process");
12
+ const _decorators = require("@decohere/crucible/decorators");
13
+ const _interop = require("@decohere/nexus/interop");
14
+ const _scribe = require("@decohere/scribe");
15
+ function _ts_decorate(decorators, target, key, desc) {
16
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
18
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
19
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
20
+ }
21
+ class DeferredScriptRunner {
22
+ logger = _scribe.scribe.logger(DeferredScriptRunner.name);
23
+ children = [];
24
+ start(options) {
25
+ const pm = (0, _interop.detectPackageManager)(options.workspaceRoot) ?? (0, _interop.packageManagerFromString)("pnpm");
26
+ this.logger.info(`deferred ${options.label} — running ${pm.name} run ${options.script} in ${options.cwd}`);
27
+ const child = (0, _nodechild_process.spawn)(pm.name, [
28
+ "run",
29
+ options.script
30
+ ], {
31
+ cwd: options.cwd,
32
+ stdio: "inherit",
33
+ env: process.env,
34
+ shell: false
35
+ });
36
+ child.on("exit", (code, signal)=>{
37
+ if (signal) return;
38
+ if (code != null && code !== 0) {
39
+ this.logger.warn(`deferred ${options.label} exited with ${code}`);
40
+ }
41
+ });
42
+ this.children.push(child);
43
+ return child;
44
+ }
45
+ async [Symbol.asyncDispose]() {
46
+ for (const child of this.children){
47
+ if (!child.killed) {
48
+ child.kill("SIGTERM");
49
+ }
50
+ }
51
+ this.children.length = 0;
52
+ }
53
+ }
54
+ DeferredScriptRunner = _ts_decorate([
55
+ (0, _decorators.injectable)()
56
+ ], DeferredScriptRunner);
57
+
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2RlZmVycmVkLXNjcmlwdC1ydW5uZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBDaGlsZFByb2Nlc3MsIHNwYXduIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgZGV0ZWN0UGFja2FnZU1hbmFnZXIsIHBhY2thZ2VNYW5hZ2VyRnJvbVN0cmluZyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW50ZXJvcFwiO1xuaW1wb3J0IHsgdHlwZSBMb2dnZXIsIHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5cbmV4cG9ydCB0eXBlIERlZmVycmVkU2NyaXB0U3RhcnQgPSB7XG5cdHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG5cdHJlYWRvbmx5IGN3ZDogc3RyaW5nO1xuXHRyZWFkb25seSBzY3JpcHQ6IHN0cmluZztcblx0LyoqIFdvcmtzcGFjZSByb290IHVzZWQgdG8gZGV0ZWN0IHBucG0vbnBtL3lhcm4uICovXG5cdHJlYWRvbmx5IHdvcmtzcGFjZVJvb3Q6IHN0cmluZztcbn07XG5cbi8qKlxuICogTml4cGFja3Mtc3R5bGUgY2hpbGQgcHJvY2Vzc2VzIGZvciBmb3JlaWduIHBhY2thZ2VzIGluIGEgZmx1eCBzZXJ2ZSBzbGljZS5cbiAqIEtpbGxlZCB3aGVuIHRoZSBGbHV4IGNvbnRhaW5lciBkaXNwb3NlcyAoU0lHSU5UIOKGkiBSb290TW9kdWxlIHRlYXJkb3duKS5cbiAqL1xuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERlZmVycmVkU2NyaXB0UnVubmVyIGltcGxlbWVudHMgQXN5bmNEaXNwb3NhYmxlIHtcblx0cHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IExvZ2dlciA9IHNjcmliZS5sb2dnZXIoRGVmZXJyZWRTY3JpcHRSdW5uZXIubmFtZSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgY2hpbGRyZW46IENoaWxkUHJvY2Vzc1tdID0gW107XG5cblx0cHVibGljIHN0YXJ0KG9wdGlvbnM6IERlZmVycmVkU2NyaXB0U3RhcnQpOiBDaGlsZFByb2Nlc3Mge1xuXHRcdGNvbnN0IHBtID0gZGV0ZWN0UGFja2FnZU1hbmFnZXIob3B0aW9ucy53b3Jrc3BhY2VSb290KSA/PyBwYWNrYWdlTWFuYWdlckZyb21TdHJpbmcoXCJwbnBtXCIpO1xuXHRcdHRoaXMubG9nZ2VyLmluZm8oXG5cdFx0XHRgZGVmZXJyZWQgJHtvcHRpb25zLmxhYmVsfSDigJQgcnVubmluZyAke3BtLm5hbWV9IHJ1biAke29wdGlvbnMuc2NyaXB0fSBpbiAke29wdGlvbnMuY3dkfWAsXG5cdFx0KTtcblx0XHRjb25zdCBjaGlsZCA9IHNwYXduKHBtLm5hbWUsIFtcInJ1blwiLCBvcHRpb25zLnNjcmlwdF0sIHtcblx0XHRcdGN3ZDogb3B0aW9ucy5jd2QsXG5cdFx0XHRzdGRpbzogXCJpbmhlcml0XCIsXG5cdFx0XHRlbnY6IHByb2Nlc3MuZW52LFxuXHRcdFx0c2hlbGw6IGZhbHNlLFxuXHRcdH0pO1xuXHRcdGNoaWxkLm9uKFwiZXhpdFwiLCAoY29kZSwgc2lnbmFsKSA9PiB7XG5cdFx0XHRpZiAoc2lnbmFsKSByZXR1cm47XG5cdFx0XHRpZiAoY29kZSAhPSBudWxsICYmIGNvZGUgIT09IDApIHtcblx0XHRcdFx0dGhpcy5sb2dnZXIud2FybihgZGVmZXJyZWQgJHtvcHRpb25zLmxhYmVsfSBleGl0ZWQgd2l0aCAke2NvZGV9YCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy5jaGlsZHJlbi5wdXNoKGNoaWxkKTtcblx0XHRyZXR1cm4gY2hpbGQ7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgW1N5bWJvbC5hc3luY0Rpc3Bvc2VdKCkge1xuXHRcdGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbikge1xuXHRcdFx0aWYgKCFjaGlsZC5raWxsZWQpIHtcblx0XHRcdFx0Y2hpbGQua2lsbChcIlNJR1RFUk1cIik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMuY2hpbGRyZW4ubGVuZ3RoID0gMDtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkRlZmVycmVkU2NyaXB0UnVubmVyIiwibG9nZ2VyIiwic2NyaWJlIiwibmFtZSIsImNoaWxkcmVuIiwic3RhcnQiLCJvcHRpb25zIiwicG0iLCJkZXRlY3RQYWNrYWdlTWFuYWdlciIsIndvcmtzcGFjZVJvb3QiLCJwYWNrYWdlTWFuYWdlckZyb21TdHJpbmciLCJpbmZvIiwibGFiZWwiLCJzY3JpcHQiLCJjd2QiLCJjaGlsZCIsInNwYXduIiwic3RkaW8iLCJlbnYiLCJwcm9jZXNzIiwic2hlbGwiLCJvbiIsImNvZGUiLCJzaWduYWwiLCJ3YXJuIiwicHVzaCIsIlN5bWJvbCIsImFzeW5jRGlzcG9zZSIsImtpbGxlZCIsImtpbGwiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7K0JBa0JhQTs7O2VBQUFBOzs7bUNBbEI0Qjs0QkFDZDt5QkFDb0M7d0JBQzNCOzs7Ozs7O0FBZTdCLE1BQU1BO0lBQ0tDLFNBQWlCQyxjQUFNLENBQUNELE1BQU0sQ0FBQ0QscUJBQXFCRyxJQUFJLEVBQUU7SUFDMURDLFdBQTJCLEVBQUUsQ0FBQztJQUV4Q0MsTUFBTUMsT0FBNEIsRUFBZ0I7UUFDeEQsTUFBTUMsS0FBS0MsSUFBQUEsNkJBQW9CLEVBQUNGLFFBQVFHLGFBQWEsS0FBS0MsSUFBQUEsaUNBQXdCLEVBQUM7UUFDbkYsSUFBSSxDQUFDVCxNQUFNLENBQUNVLElBQUksQ0FDZixDQUFDLFNBQVMsRUFBRUwsUUFBUU0sS0FBSyxDQUFDLFdBQVcsRUFBRUwsR0FBR0osSUFBSSxDQUFDLEtBQUssRUFBRUcsUUFBUU8sTUFBTSxDQUFDLElBQUksRUFBRVAsUUFBUVEsR0FBRyxFQUFFO1FBRXpGLE1BQU1DLFFBQVFDLElBQUFBLHdCQUFLLEVBQUNULEdBQUdKLElBQUksRUFBRTtZQUFDO1lBQU9HLFFBQVFPLE1BQU07U0FBQyxFQUFFO1lBQ3JEQyxLQUFLUixRQUFRUSxHQUFHO1lBQ2hCRyxPQUFPO1lBQ1BDLEtBQUtDLFFBQVFELEdBQUc7WUFDaEJFLE9BQU87UUFDUjtRQUNBTCxNQUFNTSxFQUFFLENBQUMsUUFBUSxDQUFDQyxNQUFNQztZQUN2QixJQUFJQSxRQUFRO1lBQ1osSUFBSUQsUUFBUSxRQUFRQSxTQUFTLEdBQUc7Z0JBQy9CLElBQUksQ0FBQ3JCLE1BQU0sQ0FBQ3VCLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRWxCLFFBQVFNLEtBQUssQ0FBQyxhQUFhLEVBQUVVLE1BQU07WUFDakU7UUFDRDtRQUNBLElBQUksQ0FBQ2xCLFFBQVEsQ0FBQ3FCLElBQUksQ0FBQ1Y7UUFDbkIsT0FBT0E7SUFDUjtJQUVBLE1BQWEsQ0FBQ1csT0FBT0MsWUFBWSxDQUFDLEdBQUc7UUFDcEMsS0FBSyxNQUFNWixTQUFTLElBQUksQ0FBQ1gsUUFBUSxDQUFFO1lBQ2xDLElBQUksQ0FBQ1csTUFBTWEsTUFBTSxFQUFFO2dCQUNsQmIsTUFBTWMsSUFBSSxDQUFDO1lBQ1o7UUFDRDtRQUNBLElBQUksQ0FBQ3pCLFFBQVEsQ0FBQzBCLE1BQU0sR0FBRztJQUN4QjtBQUNEIn0=
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "FluxCommand", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return FluxCommand;
9
+ }
10
+ });
11
+ const _cli = require("@decohere/nexus/cli");
12
+ const _runcommand = require("./run.command.js");
13
+ const _servecommand = require("./serve.command.js");
14
+ class FluxCommand extends _cli.DecohereCommand {
15
+ constructor(commands, handler){
16
+ super(FluxCommand);
17
+ this.exitOverride();
18
+ this.registerSubcommand({
19
+ serve: _servecommand.ServeCommand,
20
+ run: _runcommand.RunCommand,
21
+ ...commands
22
+ }, handler);
23
+ }
24
+ run(_actions, _options) {
25
+ return this.help();
26
+ }
27
+ }
28
+
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2ZsdXguY29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHtcblx0dHlwZSBDb21tYW5kSGFuZGxlcixcblx0dHlwZSBDb21tYW5kUmVzcG9uc2UsXG5cdHR5cGUgQ29tbWFuZFR5cGUsXG5cdERlY29oZXJlQ29tbWFuZCxcbn0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IFJ1bkNvbW1hbmQgfSBmcm9tIFwiLi9ydW4uY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgU2VydmVDb21tYW5kIH0gZnJvbSBcIi4vc2VydmUuY29tbWFuZC5qc1wiO1xuXG5leHBvcnQgY2xhc3MgRmx1eENvbW1hbmQgZXh0ZW5kcyBEZWNvaGVyZUNvbW1hbmQge1xuXHRwdWJsaWMgY29uc3RydWN0b3IoY29tbWFuZHM6IFJlY29yZDxzdHJpbmcsIENvbW1hbmRUeXBlPiwgaGFuZGxlcjogQ29tbWFuZEhhbmRsZXIpIHtcblx0XHRzdXBlcihGbHV4Q29tbWFuZCk7XG5cdFx0dGhpcy5leGl0T3ZlcnJpZGUoKTtcblx0XHR0aGlzLnJlZ2lzdGVyU3ViY29tbWFuZCh7IHNlcnZlOiBTZXJ2ZUNvbW1hbmQsIHJ1bjogUnVuQ29tbWFuZCwgLi4uY29tbWFuZHMgfSwgaGFuZGxlcik7XG5cdH1cblxuXHRwdWJsaWMgcnVuKF9hY3Rpb25zOiBBY3Rpb25zLCBfb3B0aW9uczogbmV2ZXIpOiBQcm9taXNlPENvbW1hbmRSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLmhlbHAoKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkZsdXhDb21tYW5kIiwiRGVjb2hlcmVDb21tYW5kIiwiY29tbWFuZHMiLCJoYW5kbGVyIiwiZXhpdE92ZXJyaWRlIiwicmVnaXN0ZXJTdWJjb21tYW5kIiwic2VydmUiLCJTZXJ2ZUNvbW1hbmQiLCJydW4iLCJSdW5Db21tYW5kIiwiX2FjdGlvbnMiLCJfb3B0aW9ucyIsImhlbHAiXSwibWFwcGluZ3MiOiI7Ozs7K0JBVWFBOzs7ZUFBQUE7OztxQkFKTjs0QkFDb0I7OEJBQ0U7QUFFdEIsTUFBTUEsb0JBQW9CQyxvQkFBZTtJQUMvQyxZQUFtQkMsUUFBcUMsRUFBRUMsT0FBdUIsQ0FBRTtRQUNsRixLQUFLLENBQUNIO1FBQ04sSUFBSSxDQUFDSSxZQUFZO1FBQ2pCLElBQUksQ0FBQ0Msa0JBQWtCLENBQUM7WUFBRUMsT0FBT0MsMEJBQVk7WUFBRUMsS0FBS0Msc0JBQVU7WUFBRSxHQUFHUCxRQUFRO1FBQUMsR0FBR0M7SUFDaEY7SUFFT0ssSUFBSUUsUUFBaUIsRUFBRUMsUUFBZSxFQUE0QjtRQUN4RSxPQUFPLElBQUksQ0FBQ0MsSUFBSTtJQUNqQjtBQUNEIn0=
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "FluxModule", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return FluxModule;
9
+ }
10
+ });
11
+ const _mesh = require("@decohere/mesh");
12
+ const _cli = require("@decohere/nexus/cli");
13
+ const _deferredscriptrunner = require("./deferred-script-runner.js");
14
+ const _fluxcommand = require("./flux.command.js");
15
+ const _hotreloadserver = require("./hot-reload-server.js");
16
+ const _runaction = require("./run.action.js");
17
+ const _serveaction = require("./serve.action.js");
18
+ const _sourcemoduleloader = require("./source-module-loader.js");
19
+ class FluxModule extends _cli.ModuleManifest {
20
+ id = "flux";
21
+ command = _fluxcommand.FluxCommand;
22
+ actions = {
23
+ serve: _serveaction.ServeAction,
24
+ run: _runaction.RunAction
25
+ };
26
+ registerServices(builder) {
27
+ builder.registerSingleton(_sourcemoduleloader.SourceModuleLoader);
28
+ builder.registerSingleton(_hotreloadserver.HotReloadServer);
29
+ builder.registerSingleton(_deferredscriptrunner.DeferredScriptRunner);
30
+ }
31
+ createWorkspace(options) {
32
+ return _mesh.WorkspaceFactory.create({
33
+ configFile: options.configFile
34
+ });
35
+ }
36
+ }
37
+
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2ZsdXgubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgTW9kdWxlTWFuaWZlc3QgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHR5cGUgeyBDb250YWluZXJCdWlsZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jb21wb3NpdGlvblwiO1xuaW1wb3J0IHsgRGVmZXJyZWRTY3JpcHRSdW5uZXIgfSBmcm9tIFwiLi9kZWZlcnJlZC1zY3JpcHQtcnVubmVyLmpzXCI7XG5pbXBvcnQgeyBGbHV4Q29tbWFuZCB9IGZyb20gXCIuL2ZsdXguY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgSG90UmVsb2FkU2VydmVyIH0gZnJvbSBcIi4vaG90LXJlbG9hZC1zZXJ2ZXIuanNcIjtcbmltcG9ydCB7IFJ1bkFjdGlvbiB9IGZyb20gXCIuL3J1bi5hY3Rpb24uanNcIjtcbmltcG9ydCB7IFNlcnZlQWN0aW9uIH0gZnJvbSBcIi4vc2VydmUuYWN0aW9uLmpzXCI7XG5pbXBvcnQgeyBTb3VyY2VNb2R1bGVMb2FkZXIgfSBmcm9tIFwiLi9zb3VyY2UtbW9kdWxlLWxvYWRlci5qc1wiO1xuXG5leHBvcnQgY2xhc3MgRmx1eE1vZHVsZSBleHRlbmRzIE1vZHVsZU1hbmlmZXN0IHtcblx0cHVibGljIHJlYWRvbmx5IGlkID0gXCJmbHV4XCI7XG5cdHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gRmx1eENvbW1hbmQ7XG5cdHB1YmxpYyByZWFkb25seSBhY3Rpb25zID0ge1xuXHRcdHNlcnZlOiBTZXJ2ZUFjdGlvbixcblx0XHRydW46IFJ1bkFjdGlvbixcblx0fTtcblxuXHRwdWJsaWMgcmVnaXN0ZXJTZXJ2aWNlcyhidWlsZGVyOiBDb250YWluZXJCdWlsZGVyKSB7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihTb3VyY2VNb2R1bGVMb2FkZXIpO1xuXHRcdGJ1aWxkZXIucmVnaXN0ZXJTaW5nbGV0b24oSG90UmVsb2FkU2VydmVyKTtcblx0XHRidWlsZGVyLnJlZ2lzdGVyU2luZ2xldG9uKERlZmVycmVkU2NyaXB0UnVubmVyKTtcblx0fVxuXG5cdHB1YmxpYyBvdmVycmlkZSBjcmVhdGVXb3Jrc3BhY2Uob3B0aW9uczogV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMpIHtcblx0XHRyZXR1cm4gV29ya3NwYWNlRmFjdG9yeS5jcmVhdGUoeyBjb25maWdGaWxlOiBvcHRpb25zLmNvbmZpZ0ZpbGUgfSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJGbHV4TW9kdWxlIiwiTW9kdWxlTWFuaWZlc3QiLCJpZCIsImNvbW1hbmQiLCJGbHV4Q29tbWFuZCIsImFjdGlvbnMiLCJzZXJ2ZSIsIlNlcnZlQWN0aW9uIiwicnVuIiwiUnVuQWN0aW9uIiwicmVnaXN0ZXJTZXJ2aWNlcyIsImJ1aWxkZXIiLCJyZWdpc3RlclNpbmdsZXRvbiIsIlNvdXJjZU1vZHVsZUxvYWRlciIsIkhvdFJlbG9hZFNlcnZlciIsIkRlZmVycmVkU2NyaXB0UnVubmVyIiwiY3JlYXRlV29ya3NwYWNlIiwib3B0aW9ucyIsIldvcmtzcGFjZUZhY3RvcnkiLCJjcmVhdGUiLCJjb25maWdGaWxlIl0sIm1hcHBpbmdzIjoiOzs7OytCQVdhQTs7O2VBQUFBOzs7c0JBWG9CO3FCQUVGO3NDQUVNOzZCQUNUO2lDQUNJOzJCQUNOOzZCQUNFO29DQUNPO0FBRTVCLE1BQU1BLG1CQUFtQkMsbUJBQWM7SUFDN0JDLEtBQUssT0FBTztJQUNaQyxVQUFVQyx3QkFBVyxDQUFDO0lBQ3RCQyxVQUFVO1FBQ3pCQyxPQUFPQyx3QkFBVztRQUNsQkMsS0FBS0Msb0JBQVM7SUFDZixFQUFFO0lBRUtDLGlCQUFpQkMsT0FBeUIsRUFBRTtRQUNsREEsUUFBUUMsaUJBQWlCLENBQUNDLHNDQUFrQjtRQUM1Q0YsUUFBUUMsaUJBQWlCLENBQUNFLGdDQUFlO1FBQ3pDSCxRQUFRQyxpQkFBaUIsQ0FBQ0csMENBQW9CO0lBQy9DO0lBRWdCQyxnQkFBZ0JDLE9BQWdDLEVBQUU7UUFDakUsT0FBT0Msc0JBQWdCLENBQUNDLE1BQU0sQ0FBQztZQUFFQyxZQUFZSCxRQUFRRyxVQUFVO1FBQUM7SUFDakU7QUFDRCJ9