@decohere/flux 0.0.1-dev.7 → 0.0.1-dev.70

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 (36) hide show
  1. package/commonjs/src/flux.command.js +27 -0
  2. package/commonjs/src/flux.module.js +32 -0
  3. package/commonjs/src/hot-reload-server.js +316 -121
  4. package/commonjs/src/index.js +9 -35
  5. package/commonjs/src/rewrite-serve-specifier.js +46 -0
  6. package/commonjs/src/serve.action.js +23 -11
  7. package/commonjs/src/serve.command.js +8 -4
  8. package/es6/src/flux.command.js +17 -0
  9. package/es6/src/flux.module.js +22 -0
  10. package/es6/src/hot-reload-server.js +303 -119
  11. package/es6/src/index.js +3 -7
  12. package/es6/src/rewrite-serve-specifier.js +40 -0
  13. package/es6/src/serve.action.js +25 -11
  14. package/es6/src/serve.command.js +9 -5
  15. package/package.json +7 -12
  16. package/types/src/{ember.command.d.ts → flux.command.d.ts} +1 -1
  17. package/types/src/flux.module.d.ts +14 -0
  18. package/types/src/hot-reload-server.d.ts +61 -22
  19. package/types/src/index.d.ts +3 -8
  20. package/types/src/rewrite-serve-specifier.d.ts +13 -0
  21. package/types/src/serve.action.d.ts +8 -2
  22. package/types/src/serve.command.d.ts +2 -2
  23. package/commonjs/src/ember.command.js +0 -27
  24. package/commonjs/src/ember.module.js +0 -37
  25. package/commonjs/src/hot-module-hooks.js +0 -47
  26. package/commonjs/src/serve.js +0 -36
  27. package/commonjs/src/workspace-serve.action.js +0 -59
  28. package/es6/src/ember.command.js +0 -17
  29. package/es6/src/ember.module.js +0 -19
  30. package/es6/src/hot-module-hooks.js +0 -26
  31. package/es6/src/serve.js +0 -32
  32. package/es6/src/workspace-serve.action.js +0 -45
  33. package/types/src/ember.module.d.ts +0 -22
  34. package/types/src/hot-module-hooks.d.ts +0 -5
  35. package/types/src/serve.d.ts +0 -1
  36. package/types/src/workspace-serve.action.d.ts +0 -11
@@ -9,43 +9,17 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- get EmberActions () {
13
- return _embermodule.EmberActions;
12
+ get DEFAULT_REBOOT_DEBOUNCE_MS () {
13
+ return _hotreloadserver.DEFAULT_REBOOT_DEBOUNCE_MS;
14
14
  },
15
- get EmberCommand () {
16
- return _embercommand.EmberCommand;
15
+ get FluxModule () {
16
+ return _fluxmodule.FluxModule;
17
17
  },
18
- get EmberModule () {
19
- return _embermodule.EmberModule;
20
- },
21
- get ServeAction () {
22
- return _serveaction.ServeAction;
23
- },
24
- get ServeCommand () {
25
- return _servecommand.ServeCommand;
26
- },
27
- get WorkspaceServeAction () {
28
- return _workspaceserveaction.WorkspaceServeAction;
18
+ get HotReloadServer () {
19
+ return _hotreloadserver.HotReloadServer;
29
20
  }
30
21
  });
31
- const _embercommand = require("./ember.command.js");
32
- const _embermodule = require("./ember.module.js");
33
- _export_star(require("./hot-reload-server.js"), exports);
34
- const _serveaction = require("./serve.action.js");
35
- const _servecommand = require("./serve.command.js");
36
- const _workspaceserveaction = require("./workspace-serve.action.js");
37
- function _export_star(from, to) {
38
- Object.keys(from).forEach(function(k) {
39
- if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
40
- Object.defineProperty(to, k, {
41
- enumerable: true,
42
- get: function() {
43
- return from[k];
44
- }
45
- });
46
- }
47
- });
48
- return from;
49
- }
22
+ const _fluxmodule = require("./flux.module.js");
23
+ const _hotreloadserver = require("./hot-reload-server.js");
50
24
 
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEVtYmVyQ29tbWFuZCB9IGZyb20gXCIuL2VtYmVyLmNvbW1hbmQuanNcIjtcbmV4cG9ydCB0eXBlIHsgRW1iZXJNb2R1bGVDb250ZXh0LCBFbWJlck1vZHVsZVJlc3VsdCB9IGZyb20gXCIuL2VtYmVyLm1vZHVsZS5qc1wiO1xuZXhwb3J0IHsgRW1iZXJBY3Rpb25zLCBFbWJlck1vZHVsZSB9IGZyb20gXCIuL2VtYmVyLm1vZHVsZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaG90LXJlbG9hZC1zZXJ2ZXIuanNcIjtcbmV4cG9ydCB0eXBlIHsgU2VydmVPcHRpb25zIH0gZnJvbSBcIi4vc2VydmUuYWN0aW9uLmpzXCI7XG5leHBvcnQgeyBTZXJ2ZUFjdGlvbiB9IGZyb20gXCIuL3NlcnZlLmFjdGlvbi5qc1wiO1xuZXhwb3J0IHsgU2VydmVDb21tYW5kIH0gZnJvbSBcIi4vc2VydmUuY29tbWFuZC5qc1wiO1xuZXhwb3J0IHR5cGUgeyBXb3Jrc3BhY2VTZXJ2ZU9wdGlvbnMgfSBmcm9tIFwiLi93b3Jrc3BhY2Utc2VydmUuYWN0aW9uLmpzXCI7XG5leHBvcnQgeyBXb3Jrc3BhY2VTZXJ2ZUFjdGlvbiB9IGZyb20gXCIuL3dvcmtzcGFjZS1zZXJ2ZS5hY3Rpb24uanNcIjtcbiJdLCJuYW1lcyI6WyJFbWJlckFjdGlvbnMiLCJFbWJlckNvbW1hbmQiLCJFbWJlck1vZHVsZSIsIlNlcnZlQWN0aW9uIiwiU2VydmVDb21tYW5kIiwiV29ya3NwYWNlU2VydmVBY3Rpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBRVNBO2VBQUFBLHlCQUFZOztRQUZaQztlQUFBQSwwQkFBWTs7UUFFRUM7ZUFBQUEsd0JBQVc7O1FBR3pCQztlQUFBQSx3QkFBVzs7UUFDWEM7ZUFBQUEsMEJBQVk7O1FBRVpDO2VBQUFBLDBDQUFvQjs7OzhCQVJBOzZCQUVhO3FCQUM1Qjs2QkFFYzs4QkFDQztzQ0FFUSJ9
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEZsdXhNb2R1bGUgfSBmcm9tIFwiLi9mbHV4Lm1vZHVsZS5qc1wiO1xuZXhwb3J0IHR5cGUgeyBIb3RSZWxvYWRTZXJ2ZXJPcHRpb25zIH0gZnJvbSBcIi4vaG90LXJlbG9hZC1zZXJ2ZXIuanNcIjtcbmV4cG9ydCB7IERFRkFVTFRfUkVCT09UX0RFQk9VTkNFX01TLCBIb3RSZWxvYWRTZXJ2ZXIgfSBmcm9tIFwiLi9ob3QtcmVsb2FkLXNlcnZlci5qc1wiO1xuZXhwb3J0IHR5cGUgeyBTZXJ2ZU9wdGlvbnMgfSBmcm9tIFwiLi9zZXJ2ZS5hY3Rpb24uanNcIjtcbiJdLCJuYW1lcyI6WyJERUZBVUxUX1JFQk9PVF9ERUJPVU5DRV9NUyIsIkZsdXhNb2R1bGUiLCJIb3RSZWxvYWRTZXJ2ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBRVNBO2VBQUFBLDJDQUEwQjs7UUFGMUJDO2VBQUFBLHNCQUFVOztRQUVrQkM7ZUFBQUEsZ0NBQWU7Ozs0QkFGekI7aUNBRWlDIn0=
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "rewriteServeSpecifier", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return rewriteServeSpecifier;
9
+ }
10
+ });
11
+ const _nodeurl = require("node:url");
12
+ const _mesh = require("@decohere/mesh");
13
+ function rewriteServeSpecifier(options) {
14
+ const { specifier, parentUrl, isWatchedTs, resolveBare, versionFileUrl } = options;
15
+ const relativeTs = resolveRelativeWatchedTs(specifier, parentUrl, isWatchedTs);
16
+ if (relativeTs != null) {
17
+ return versionFileUrl((0, _nodeurl.pathToFileURL)(relativeTs).toString());
18
+ }
19
+ const bareTarget = resolveBare(specifier);
20
+ if (bareTarget != null && isWatchedTs(bareTarget)) {
21
+ return versionFileUrl((0, _nodeurl.pathToFileURL)(bareTarget).toString());
22
+ }
23
+ return null;
24
+ }
25
+ function resolveRelativeWatchedTs(specifier, parentUrl, isWatchedTs) {
26
+ if (_mesh.packageAliases.isBareSpecifier(specifier)) return null;
27
+ if (!(specifier.startsWith(".") || specifier.startsWith("/"))) return null;
28
+ const parentClean = parentUrl.split("?")[0];
29
+ if (parentClean == null || parentClean === "") return null;
30
+ let resolved;
31
+ try {
32
+ resolved = new URL(specifier, parentClean);
33
+ } catch {
34
+ return null;
35
+ }
36
+ if (resolved.protocol !== "file:") return null;
37
+ let filePath = (0, _nodeurl.fileURLToPath)(resolved);
38
+ if (filePath.endsWith(".js")) {
39
+ filePath = `${filePath.slice(0, -3)}.ts`;
40
+ } else if (!filePath.endsWith(".ts")) {
41
+ filePath = `${filePath}.ts`;
42
+ }
43
+ return isWatchedTs(filePath) ? filePath : null;
44
+ }
45
+
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3Jld3JpdGUtc2VydmUtc3BlY2lmaWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbGVVUkxUb1BhdGgsIHBhdGhUb0ZpbGVVUkwgfSBmcm9tIFwibm9kZTp1cmxcIjtcbmltcG9ydCB7IHBhY2thZ2VBbGlhc2VzIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5cbmV4cG9ydCB0eXBlIFJld3JpdGVTZXJ2ZVNwZWNpZmllck9wdGlvbnMgPSB7XG5cdHNwZWNpZmllcjogc3RyaW5nO1xuXHRwYXJlbnRVcmw6IHN0cmluZztcblx0aXNXYXRjaGVkVHM6IChhYnNvbHV0ZVBhdGg6IHN0cmluZykgPT4gYm9vbGVhbjtcblx0cmVzb2x2ZUJhcmU6IChzcGVjaWZpZXI6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbDtcblx0dmVyc2lvbkZpbGVVcmw6IChmaWxlVXJsOiBzdHJpbmcpID0+IHN0cmluZztcbn07XG5cbi8qKlxuICogTWFwIGEgcmVzb2x2ZS1ob29rIHNwZWNpZmllciB0byBhIHZlcnNpb25lZCB3YXRjaGVkIGAudHNgIGZpbGUgVVJMLlxuICogQ292ZXJzIHJlbGF0aXZlIGAuanNgIC8gYC50c2AgLyBleHRlbnNpb25sZXNzIGltcG9ydHMgYW5kIGJhcmUgd29ya3NwYWNlXG4gKiBwYWNrYWdlIG5hbWVzIChkeW5hbWljIGBpbXBvcnQoKWAgbmV2ZXIgZ29lcyB0aHJvdWdoIFNXQyBwYXRoIHJld3JpdGUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmV3cml0ZVNlcnZlU3BlY2lmaWVyKG9wdGlvbnM6IFJld3JpdGVTZXJ2ZVNwZWNpZmllck9wdGlvbnMpOiBzdHJpbmcgfCBudWxsIHtcblx0Y29uc3QgeyBzcGVjaWZpZXIsIHBhcmVudFVybCwgaXNXYXRjaGVkVHMsIHJlc29sdmVCYXJlLCB2ZXJzaW9uRmlsZVVybCB9ID0gb3B0aW9ucztcblxuXHRjb25zdCByZWxhdGl2ZVRzID0gcmVzb2x2ZVJlbGF0aXZlV2F0Y2hlZFRzKHNwZWNpZmllciwgcGFyZW50VXJsLCBpc1dhdGNoZWRUcyk7XG5cdGlmIChyZWxhdGl2ZVRzICE9IG51bGwpIHtcblx0XHRyZXR1cm4gdmVyc2lvbkZpbGVVcmwocGF0aFRvRmlsZVVSTChyZWxhdGl2ZVRzKS50b1N0cmluZygpKTtcblx0fVxuXG5cdGNvbnN0IGJhcmVUYXJnZXQgPSByZXNvbHZlQmFyZShzcGVjaWZpZXIpO1xuXHRpZiAoYmFyZVRhcmdldCAhPSBudWxsICYmIGlzV2F0Y2hlZFRzKGJhcmVUYXJnZXQpKSB7XG5cdFx0cmV0dXJuIHZlcnNpb25GaWxlVXJsKHBhdGhUb0ZpbGVVUkwoYmFyZVRhcmdldCkudG9TdHJpbmcoKSk7XG5cdH1cblxuXHRyZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVJlbGF0aXZlV2F0Y2hlZFRzKFxuXHRzcGVjaWZpZXI6IHN0cmluZyxcblx0cGFyZW50VXJsOiBzdHJpbmcsXG5cdGlzV2F0Y2hlZFRzOiAoYWJzb2x1dGVQYXRoOiBzdHJpbmcpID0+IGJvb2xlYW4sXG4pOiBzdHJpbmcgfCBudWxsIHtcblx0aWYgKHBhY2thZ2VBbGlhc2VzLmlzQmFyZVNwZWNpZmllcihzcGVjaWZpZXIpKSByZXR1cm4gbnVsbDtcblx0aWYgKCEoc3BlY2lmaWVyLnN0YXJ0c1dpdGgoXCIuXCIpIHx8IHNwZWNpZmllci5zdGFydHNXaXRoKFwiL1wiKSkpIHJldHVybiBudWxsO1xuXG5cdGNvbnN0IHBhcmVudENsZWFuID0gcGFyZW50VXJsLnNwbGl0KFwiP1wiKVswXTtcblx0aWYgKHBhcmVudENsZWFuID09IG51bGwgfHwgcGFyZW50Q2xlYW4gPT09IFwiXCIpIHJldHVybiBudWxsO1xuXG5cdGxldCByZXNvbHZlZDogVVJMO1xuXHR0cnkge1xuXHRcdHJlc29sdmVkID0gbmV3IFVSTChzcGVjaWZpZXIsIHBhcmVudENsZWFuKTtcblx0fSBjYXRjaCB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblx0aWYgKHJlc29sdmVkLnByb3RvY29sICE9PSBcImZpbGU6XCIpIHJldHVybiBudWxsO1xuXG5cdGxldCBmaWxlUGF0aCA9IGZpbGVVUkxUb1BhdGgocmVzb2x2ZWQpO1xuXHRpZiAoZmlsZVBhdGguZW5kc1dpdGgoXCIuanNcIikpIHtcblx0XHRmaWxlUGF0aCA9IGAke2ZpbGVQYXRoLnNsaWNlKDAsIC0zKX0udHNgO1xuXHR9IGVsc2UgaWYgKCFmaWxlUGF0aC5lbmRzV2l0aChcIi50c1wiKSkge1xuXHRcdGZpbGVQYXRoID0gYCR7ZmlsZVBhdGh9LnRzYDtcblx0fVxuXG5cdHJldHVybiBpc1dhdGNoZWRUcyhmaWxlUGF0aCkgPyBmaWxlUGF0aCA6IG51bGw7XG59XG4iXSwibmFtZXMiOlsicmV3cml0ZVNlcnZlU3BlY2lmaWVyIiwib3B0aW9ucyIsInNwZWNpZmllciIsInBhcmVudFVybCIsImlzV2F0Y2hlZFRzIiwicmVzb2x2ZUJhcmUiLCJ2ZXJzaW9uRmlsZVVybCIsInJlbGF0aXZlVHMiLCJyZXNvbHZlUmVsYXRpdmVXYXRjaGVkVHMiLCJwYXRoVG9GaWxlVVJMIiwidG9TdHJpbmciLCJiYXJlVGFyZ2V0IiwicGFja2FnZUFsaWFzZXMiLCJpc0JhcmVTcGVjaWZpZXIiLCJzdGFydHNXaXRoIiwicGFyZW50Q2xlYW4iLCJzcGxpdCIsInJlc29sdmVkIiwiVVJMIiwicHJvdG9jb2wiLCJmaWxlUGF0aCIsImZpbGVVUkxUb1BhdGgiLCJlbmRzV2l0aCIsInNsaWNlIl0sIm1hcHBpbmdzIjoiOzs7OytCQWdCZ0JBOzs7ZUFBQUE7Ozt5QkFoQjZCO3NCQUNkO0FBZXhCLFNBQVNBLHNCQUFzQkMsT0FBcUM7SUFDMUUsTUFBTSxFQUFFQyxTQUFTLEVBQUVDLFNBQVMsRUFBRUMsV0FBVyxFQUFFQyxXQUFXLEVBQUVDLGNBQWMsRUFBRSxHQUFHTDtJQUUzRSxNQUFNTSxhQUFhQyx5QkFBeUJOLFdBQVdDLFdBQVdDO0lBQ2xFLElBQUlHLGNBQWMsTUFBTTtRQUN2QixPQUFPRCxlQUFlRyxJQUFBQSxzQkFBYSxFQUFDRixZQUFZRyxRQUFRO0lBQ3pEO0lBRUEsTUFBTUMsYUFBYU4sWUFBWUg7SUFDL0IsSUFBSVMsY0FBYyxRQUFRUCxZQUFZTyxhQUFhO1FBQ2xELE9BQU9MLGVBQWVHLElBQUFBLHNCQUFhLEVBQUNFLFlBQVlELFFBQVE7SUFDekQ7SUFFQSxPQUFPO0FBQ1I7QUFFQSxTQUFTRix5QkFDUk4sU0FBaUIsRUFDakJDLFNBQWlCLEVBQ2pCQyxXQUE4QztJQUU5QyxJQUFJUSxvQkFBYyxDQUFDQyxlQUFlLENBQUNYLFlBQVksT0FBTztJQUN0RCxJQUFJLENBQUVBLENBQUFBLFVBQVVZLFVBQVUsQ0FBQyxRQUFRWixVQUFVWSxVQUFVLENBQUMsSUFBRyxHQUFJLE9BQU87SUFFdEUsTUFBTUMsY0FBY1osVUFBVWEsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQzNDLElBQUlELGVBQWUsUUFBUUEsZ0JBQWdCLElBQUksT0FBTztJQUV0RCxJQUFJRTtJQUNKLElBQUk7UUFDSEEsV0FBVyxJQUFJQyxJQUFJaEIsV0FBV2E7SUFDL0IsRUFBRSxPQUFNO1FBQ1AsT0FBTztJQUNSO0lBQ0EsSUFBSUUsU0FBU0UsUUFBUSxLQUFLLFNBQVMsT0FBTztJQUUxQyxJQUFJQyxXQUFXQyxJQUFBQSxzQkFBYSxFQUFDSjtJQUM3QixJQUFJRyxTQUFTRSxRQUFRLENBQUMsUUFBUTtRQUM3QkYsV0FBVyxHQUFHQSxTQUFTRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3pDLE9BQU8sSUFBSSxDQUFDSCxTQUFTRSxRQUFRLENBQUMsUUFBUTtRQUNyQ0YsV0FBVyxHQUFHQSxTQUFTLEdBQUcsQ0FBQztJQUM1QjtJQUVBLE9BQU9oQixZQUFZZ0IsWUFBWUEsV0FBVztBQUMzQyJ9
@@ -9,8 +9,8 @@ Object.defineProperty(exports, "ServeAction", {
9
9
  }
10
10
  });
11
11
  const _decorators = require("@decohere/crucible/decorators");
12
+ const _mesh = require("@decohere/mesh");
12
13
  const _cli = require("@decohere/nexus/cli");
13
- const _scribe = require("@decohere/scribe");
14
14
  const _hotreloadserver = require("./hot-reload-server.js");
15
15
  function _ts_decorate(decorators, target, key, desc) {
16
16
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -18,21 +18,33 @@ function _ts_decorate(decorators, target, key, desc) {
18
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
19
  return c > 3 && r && Object.defineProperty(target, key, r), r;
20
20
  }
21
+ function _ts_metadata(k, v) {
22
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
23
+ }
21
24
  class ServeAction {
25
+ server;
26
+ workspace;
27
+ constructor(server, workspace){
28
+ this.server = server;
29
+ this.workspace = workspace;
30
+ }
22
31
  async run(options) {
23
- const { entry, watchDir } = options;
24
- const logger = _scribe.scribe.logger("ServeAction");
25
- const server = new _hotreloadserver.HotReloadServer(logger);
26
- process.on("SIGINT", async ()=>{
27
- await server.dispose();
28
- process.exit(0);
32
+ await this.server.start({
33
+ workspace: this.workspace,
34
+ buildConfig: options.configuration,
35
+ project: options.project,
36
+ rebootDebounceMs: options.rebootDebounceMs
29
37
  });
30
- await server.start(entry, watchDir);
31
- return _cli.ActionResponse.Success(ServeAction.name);
38
+ return _cli.ActionResponse.Blocking(ServeAction.name);
32
39
  }
33
40
  }
34
41
  ServeAction = _ts_decorate([
35
- (0, _decorators.injectable)()
42
+ (0, _decorators.injectable)(),
43
+ _ts_metadata("design:type", Function),
44
+ _ts_metadata("design:paramtypes", [
45
+ typeof _hotreloadserver.HotReloadServer === "undefined" ? Object : _hotreloadserver.HotReloadServer,
46
+ typeof _mesh.Workspace === "undefined" ? Object : _mesh.Workspace
47
+ ])
36
48
  ], ServeAction);
37
49
 
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NlcnZlLmFjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyB0eXBlIEFjdGlvbiwgQWN0aW9uUmVzcG9uc2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB7IEhvdFJlbG9hZFNlcnZlciB9IGZyb20gXCIuL2hvdC1yZWxvYWQtc2VydmVyLmpzXCI7XG5cbmV4cG9ydCB0eXBlIFNlcnZlT3B0aW9ucyA9IHtcblx0ZW50cnk6IHN0cmluZztcblx0d2F0Y2hEaXI6IHN0cmluZztcbn07XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZXJ2ZUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbjxTZXJ2ZU9wdGlvbnM+IHtcblx0cHVibGljIGFzeW5jIHJ1bihvcHRpb25zOiBTZXJ2ZU9wdGlvbnMpOiBQcm9taXNlPEFjdGlvblJlc3BvbnNlPiB7XG5cdFx0Y29uc3QgeyBlbnRyeSwgd2F0Y2hEaXIgfSA9IG9wdGlvbnM7XG5cdFx0Y29uc3QgbG9nZ2VyID0gc2NyaWJlLmxvZ2dlcihcIlNlcnZlQWN0aW9uXCIpO1xuXHRcdGNvbnN0IHNlcnZlciA9IG5ldyBIb3RSZWxvYWRTZXJ2ZXIobG9nZ2VyKTtcblxuXHRcdHByb2Nlc3Mub24oXCJTSUdJTlRcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0YXdhaXQgc2VydmVyLmRpc3Bvc2UoKTtcblx0XHRcdHByb2Nlc3MuZXhpdCgwKTtcblx0XHR9KTtcblxuXHRcdGF3YWl0IHNlcnZlci5zdGFydChlbnRyeSwgd2F0Y2hEaXIpO1xuXHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5TdWNjZXNzKFNlcnZlQWN0aW9uLm5hbWUpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiU2VydmVBY3Rpb24iLCJydW4iLCJvcHRpb25zIiwiZW50cnkiLCJ3YXRjaERpciIsImxvZ2dlciIsInNjcmliZSIsInNlcnZlciIsIkhvdFJlbG9hZFNlcnZlciIsInByb2Nlc3MiLCJvbiIsImRpc3Bvc2UiLCJleGl0Iiwic3RhcnQiLCJBY3Rpb25SZXNwb25zZSIsIlN1Y2Nlc3MiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7OytCQVdhQTs7O2VBQUFBOzs7NEJBWGM7cUJBQ2lCO3dCQUNyQjtpQ0FDUzs7Ozs7OztBQVF6QixNQUFNQTtJQUNaLE1BQWFDLElBQUlDLE9BQXFCLEVBQTJCO1FBQ2hFLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxRQUFRLEVBQUUsR0FBR0Y7UUFDNUIsTUFBTUcsU0FBU0MsY0FBTSxDQUFDRCxNQUFNLENBQUM7UUFDN0IsTUFBTUUsU0FBUyxJQUFJQyxnQ0FBZSxDQUFDSDtRQUVuQ0ksUUFBUUMsRUFBRSxDQUFDLFVBQVU7WUFDcEIsTUFBTUgsT0FBT0ksT0FBTztZQUNwQkYsUUFBUUcsSUFBSSxDQUFDO1FBQ2Q7UUFFQSxNQUFNTCxPQUFPTSxLQUFLLENBQUNWLE9BQU9DO1FBQzFCLE9BQU9VLG1CQUFjLENBQUNDLE9BQU8sQ0FBQ2YsWUFBWWdCLElBQUk7SUFDL0M7QUFDRCJ9
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NlcnZlLmFjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZS9kZWNvcmF0b3JzXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyBXb3Jrc3BhY2UgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB7IHR5cGUgQWN0aW9uLCBBY3Rpb25SZXNwb25zZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyBIb3RSZWxvYWRTZXJ2ZXIgfSBmcm9tIFwiLi9ob3QtcmVsb2FkLXNlcnZlci5qc1wiO1xuXG5leHBvcnQgdHlwZSBTZXJ2ZU9wdGlvbnMgPSB7XG5cdGNvbmZpZ3VyYXRpb246IHN0cmluZztcblx0cHJvamVjdD86IHN0cmluZztcblx0cmVib290RGVib3VuY2VNcz86IG51bWJlcjtcbn07XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZXJ2ZUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbjxTZXJ2ZU9wdGlvbnM+IHtcblx0cHVibGljIGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgc2VydmVyOiBIb3RSZWxvYWRTZXJ2ZXIsXG5cdFx0cHJpdmF0ZSByZWFkb25seSB3b3Jrc3BhY2U6IFdvcmtzcGFjZSxcblx0KSB7fVxuXG5cdHB1YmxpYyBhc3luYyBydW4ob3B0aW9uczogU2VydmVPcHRpb25zKTogUHJvbWlzZTxBY3Rpb25SZXNwb25zZT4ge1xuXHRcdGF3YWl0IHRoaXMuc2VydmVyLnN0YXJ0KHtcblx0XHRcdHdvcmtzcGFjZTogdGhpcy53b3Jrc3BhY2UsXG5cdFx0XHRidWlsZENvbmZpZzogb3B0aW9ucy5jb25maWd1cmF0aW9uLFxuXHRcdFx0cHJvamVjdDogb3B0aW9ucy5wcm9qZWN0LFxuXHRcdFx0cmVib290RGVib3VuY2VNczogb3B0aW9ucy5yZWJvb3REZWJvdW5jZU1zLFxuXHRcdH0pO1xuXHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5CbG9ja2luZyhTZXJ2ZUFjdGlvbi5uYW1lKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIlNlcnZlQWN0aW9uIiwic2VydmVyIiwid29ya3NwYWNlIiwicnVuIiwib3B0aW9ucyIsInN0YXJ0IiwiYnVpbGRDb25maWciLCJjb25maWd1cmF0aW9uIiwicHJvamVjdCIsInJlYm9vdERlYm91bmNlTXMiLCJBY3Rpb25SZXNwb25zZSIsIkJsb2NraW5nIiwibmFtZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFjYUE7OztlQUFBQTs7OzRCQWRjO3NCQUVEO3FCQUNrQjtpQ0FFWjs7Ozs7Ozs7OztBQVN6QixNQUFNQTs7O0lBQ1osWUFDQyxBQUFpQkMsTUFBdUIsRUFDeEMsQUFBaUJDLFNBQW9CLENBQ3BDO2FBRmdCRCxTQUFBQTthQUNBQyxZQUFBQTtJQUNmO0lBRUgsTUFBYUMsSUFBSUMsT0FBcUIsRUFBMkI7UUFDaEUsTUFBTSxJQUFJLENBQUNILE1BQU0sQ0FBQ0ksS0FBSyxDQUFDO1lBQ3ZCSCxXQUFXLElBQUksQ0FBQ0EsU0FBUztZQUN6QkksYUFBYUYsUUFBUUcsYUFBYTtZQUNsQ0MsU0FBU0osUUFBUUksT0FBTztZQUN4QkMsa0JBQWtCTCxRQUFRSyxnQkFBZ0I7UUFDM0M7UUFDQSxPQUFPQyxtQkFBYyxDQUFDQyxRQUFRLENBQUNYLFlBQVlZLElBQUk7SUFDaEQ7QUFDRCJ9
@@ -9,17 +9,21 @@ Object.defineProperty(exports, "ServeCommand", {
9
9
  }
10
10
  });
11
11
  const _cli = require("@decohere/nexus/cli");
12
- const _workspaceserveaction = require("./workspace-serve.action.js");
12
+ const _hotreloadserver = require("./hot-reload-server.js");
13
+ const _serveaction = require("./serve.action.js");
13
14
  class ServeCommand extends _cli.DecohereCommand {
14
15
  get actions() {
15
16
  return [
16
- _workspaceserveaction.WorkspaceServeAction
17
+ _serveaction.ServeAction
17
18
  ];
18
19
  }
19
20
  constructor(name){
20
21
  super(name);
21
- this.description("Serve the first project in a workspace configuration");
22
+ this.description("Serve a project in a workspace configuration");
23
+ this.addOption(new _cli.ConfigurationOption("debug"));
24
+ this.addOption(new _cli.ProjectOption());
25
+ this.option("--reboot-debounce-ms <ms>", "Quiet window in milliseconds after the last affecting save before a reboot", (value)=>(0, _hotreloadserver.resolveRebootDebounceMs)(Number(value)), _hotreloadserver.DEFAULT_REBOOT_DEBOUNCE_MS);
22
26
  }
23
27
  }
24
28
 
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NlcnZlLmNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVjb2hlcmVDb21tYW5kIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IFdvcmtzcGFjZVNlcnZlQWN0aW9uIH0gZnJvbSBcIi4vd29ya3NwYWNlLXNlcnZlLmFjdGlvbi5qc1wiO1xuXG5leHBvcnQgY2xhc3MgU2VydmVDb21tYW5kIGV4dGVuZHMgRGVjb2hlcmVDb21tYW5kIHtcblx0cHVibGljIG92ZXJyaWRlIGdldCBhY3Rpb25zKCkge1xuXHRcdHJldHVybiBbV29ya3NwYWNlU2VydmVBY3Rpb25dO1xuXHR9XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUpO1xuXHRcdHRoaXMuZGVzY3JpcHRpb24oXCJTZXJ2ZSB0aGUgZmlyc3QgcHJvamVjdCBpbiBhIHdvcmtzcGFjZSBjb25maWd1cmF0aW9uXCIpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiU2VydmVDb21tYW5kIiwiRGVjb2hlcmVDb21tYW5kIiwiYWN0aW9ucyIsIldvcmtzcGFjZVNlcnZlQWN0aW9uIiwibmFtZSIsImRlc2NyaXB0aW9uIl0sIm1hcHBpbmdzIjoiOzs7OytCQUdhQTs7O2VBQUFBOzs7cUJBSG1CO3NDQUNLO0FBRTlCLE1BQU1BLHFCQUFxQkMsb0JBQWU7SUFDaEQsSUFBb0JDLFVBQVU7UUFDN0IsT0FBTztZQUFDQywwQ0FBb0I7U0FBQztJQUM5QjtJQUVBLFlBQW1CQyxJQUFZLENBQUU7UUFDaEMsS0FBSyxDQUFDQTtRQUNOLElBQUksQ0FBQ0MsV0FBVyxDQUFDO0lBQ2xCO0FBQ0QifQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NlcnZlLmNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlndXJhdGlvbk9wdGlvbiwgRGVjb2hlcmVDb21tYW5kLCBQcm9qZWN0T3B0aW9uIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IERFRkFVTFRfUkVCT09UX0RFQk9VTkNFX01TLCByZXNvbHZlUmVib290RGVib3VuY2VNcyB9IGZyb20gXCIuL2hvdC1yZWxvYWQtc2VydmVyLmpzXCI7XG5pbXBvcnQgeyBTZXJ2ZUFjdGlvbiB9IGZyb20gXCIuL3NlcnZlLmFjdGlvbi5qc1wiO1xuXG5leHBvcnQgY2xhc3MgU2VydmVDb21tYW5kIGV4dGVuZHMgRGVjb2hlcmVDb21tYW5kIHtcblx0cHVibGljIG92ZXJyaWRlIGdldCBhY3Rpb25zKCkge1xuXHRcdHJldHVybiBbU2VydmVBY3Rpb25dO1xuXHR9XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUpO1xuXHRcdHRoaXMuZGVzY3JpcHRpb24oXCJTZXJ2ZSBhIHByb2plY3QgaW4gYSB3b3Jrc3BhY2UgY29uZmlndXJhdGlvblwiKTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgQ29uZmlndXJhdGlvbk9wdGlvbihcImRlYnVnXCIpKTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgUHJvamVjdE9wdGlvbigpKTtcblx0XHR0aGlzLm9wdGlvbihcblx0XHRcdFwiLS1yZWJvb3QtZGVib3VuY2UtbXMgPG1zPlwiLFxuXHRcdFx0XCJRdWlldCB3aW5kb3cgaW4gbWlsbGlzZWNvbmRzIGFmdGVyIHRoZSBsYXN0IGFmZmVjdGluZyBzYXZlIGJlZm9yZSBhIHJlYm9vdFwiLFxuXHRcdFx0KHZhbHVlOiBzdHJpbmcpID0+IHJlc29sdmVSZWJvb3REZWJvdW5jZU1zKE51bWJlcih2YWx1ZSkpLFxuXHRcdFx0REVGQVVMVF9SRUJPT1RfREVCT1VOQ0VfTVMsXG5cdFx0KTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIlNlcnZlQ29tbWFuZCIsIkRlY29oZXJlQ29tbWFuZCIsImFjdGlvbnMiLCJTZXJ2ZUFjdGlvbiIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImFkZE9wdGlvbiIsIkNvbmZpZ3VyYXRpb25PcHRpb24iLCJQcm9qZWN0T3B0aW9uIiwib3B0aW9uIiwidmFsdWUiLCJyZXNvbHZlUmVib290RGVib3VuY2VNcyIsIk51bWJlciIsIkRFRkFVTFRfUkVCT09UX0RFQk9VTkNFX01TIl0sIm1hcHBpbmdzIjoiOzs7OytCQUlhQTs7O2VBQUFBOzs7cUJBSnVEO2lDQUNBOzZCQUN4QztBQUVyQixNQUFNQSxxQkFBcUJDLG9CQUFlO0lBQ2hELElBQW9CQyxVQUFVO1FBQzdCLE9BQU87WUFBQ0Msd0JBQVc7U0FBQztJQUNyQjtJQUVBLFlBQW1CQyxJQUFZLENBQUU7UUFDaEMsS0FBSyxDQUFDQTtRQUNOLElBQUksQ0FBQ0MsV0FBVyxDQUFDO1FBQ2pCLElBQUksQ0FBQ0MsU0FBUyxDQUFDLElBQUlDLHdCQUFtQixDQUFDO1FBQ3ZDLElBQUksQ0FBQ0QsU0FBUyxDQUFDLElBQUlFLGtCQUFhO1FBQ2hDLElBQUksQ0FBQ0MsTUFBTSxDQUNWLDZCQUNBLDhFQUNBLENBQUNDLFFBQWtCQyxJQUFBQSx3Q0FBdUIsRUFBQ0MsT0FBT0YsU0FDbERHLDJDQUEwQjtJQUU1QjtBQUNEIn0=
@@ -0,0 +1,17 @@
1
+ import { DecohereCommand } from "@decohere/nexus/cli";
2
+ import { ServeCommand } from "./serve.command.js";
3
+ export class FluxCommand extends DecohereCommand {
4
+ constructor(commands, handler){
5
+ super(FluxCommand);
6
+ this.exitOverride();
7
+ this.registerSubcommand({
8
+ serve: ServeCommand,
9
+ ...commands
10
+ }, handler);
11
+ }
12
+ run(_actions, _options) {
13
+ return this.help();
14
+ }
15
+ }
16
+
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2ZsdXguY29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHtcblx0dHlwZSBDb21tYW5kSGFuZGxlcixcblx0dHlwZSBDb21tYW5kUmVzcG9uc2UsXG5cdHR5cGUgQ29tbWFuZFR5cGUsXG5cdERlY29oZXJlQ29tbWFuZCxcbn0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IFNlcnZlQ29tbWFuZCB9IGZyb20gXCIuL3NlcnZlLmNvbW1hbmQuanNcIjtcblxuZXhwb3J0IGNsYXNzIEZsdXhDb21tYW5kIGV4dGVuZHMgRGVjb2hlcmVDb21tYW5kIHtcblx0cHVibGljIGNvbnN0cnVjdG9yKGNvbW1hbmRzOiBSZWNvcmQ8c3RyaW5nLCBDb21tYW5kVHlwZT4sIGhhbmRsZXI6IENvbW1hbmRIYW5kbGVyKSB7XG5cdFx0c3VwZXIoRmx1eENvbW1hbmQpO1xuXHRcdHRoaXMuZXhpdE92ZXJyaWRlKCk7XG5cdFx0dGhpcy5yZWdpc3RlclN1YmNvbW1hbmQoeyBzZXJ2ZTogU2VydmVDb21tYW5kLCAuLi5jb21tYW5kcyB9LCBoYW5kbGVyKTtcblx0fVxuXG5cdHB1YmxpYyBydW4oX2FjdGlvbnM6IEFjdGlvbnMsIF9vcHRpb25zOiBuZXZlcik6IFByb21pc2U8Q29tbWFuZFJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuaGVscCgpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiRGVjb2hlcmVDb21tYW5kIiwiU2VydmVDb21tYW5kIiwiRmx1eENvbW1hbmQiLCJjb21tYW5kcyIsImhhbmRsZXIiLCJleGl0T3ZlcnJpZGUiLCJyZWdpc3RlclN1YmNvbW1hbmQiLCJzZXJ2ZSIsInJ1biIsIl9hY3Rpb25zIiwiX29wdGlvbnMiLCJoZWxwIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUlDQSxlQUFlLFFBQ1Qsc0JBQXNCO0FBQzdCLFNBQVNDLFlBQVksUUFBUSxxQkFBcUI7QUFFbEQsT0FBTyxNQUFNQyxvQkFBb0JGO0lBQ2hDLFlBQW1CRyxRQUFxQyxFQUFFQyxPQUF1QixDQUFFO1FBQ2xGLEtBQUssQ0FBQ0Y7UUFDTixJQUFJLENBQUNHLFlBQVk7UUFDakIsSUFBSSxDQUFDQyxrQkFBa0IsQ0FBQztZQUFFQyxPQUFPTjtZQUFjLEdBQUdFLFFBQVE7UUFBQyxHQUFHQztJQUMvRDtJQUVPSSxJQUFJQyxRQUFpQixFQUFFQyxRQUFlLEVBQTRCO1FBQ3hFLE9BQU8sSUFBSSxDQUFDQyxJQUFJO0lBQ2pCO0FBQ0QifQ==
@@ -0,0 +1,22 @@
1
+ import { WorkspaceFactory } from "@decohere/mesh";
2
+ import { ModuleManifest } from "@decohere/nexus/cli";
3
+ import { FluxCommand } from "./flux.command.js";
4
+ import { HotReloadServer } from "./hot-reload-server.js";
5
+ import { ServeAction } from "./serve.action.js";
6
+ export class FluxModule extends ModuleManifest {
7
+ id = "flux";
8
+ command = FluxCommand;
9
+ actions = {
10
+ serve: ServeAction
11
+ };
12
+ registerServices(builder) {
13
+ builder.registerSingleton(HotReloadServer);
14
+ }
15
+ createWorkspace(options) {
16
+ return WorkspaceFactory.create({
17
+ configFile: options.configFile
18
+ });
19
+ }
20
+ }
21
+
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2ZsdXgubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgTW9kdWxlTWFuaWZlc3QgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHR5cGUgeyBDb250YWluZXJCdWlsZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jb21wb3NpdGlvblwiO1xuaW1wb3J0IHsgRmx1eENvbW1hbmQgfSBmcm9tIFwiLi9mbHV4LmNvbW1hbmQuanNcIjtcbmltcG9ydCB7IEhvdFJlbG9hZFNlcnZlciB9IGZyb20gXCIuL2hvdC1yZWxvYWQtc2VydmVyLmpzXCI7XG5pbXBvcnQgeyBTZXJ2ZUFjdGlvbiB9IGZyb20gXCIuL3NlcnZlLmFjdGlvbi5qc1wiO1xuXG5leHBvcnQgY2xhc3MgRmx1eE1vZHVsZSBleHRlbmRzIE1vZHVsZU1hbmlmZXN0IHtcblx0cHVibGljIHJlYWRvbmx5IGlkID0gXCJmbHV4XCI7XG5cdHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gRmx1eENvbW1hbmQ7XG5cdHB1YmxpYyByZWFkb25seSBhY3Rpb25zID0ge1xuXHRcdHNlcnZlOiBTZXJ2ZUFjdGlvbixcblx0fTtcblxuXHRwdWJsaWMgcmVnaXN0ZXJTZXJ2aWNlcyhidWlsZGVyOiBDb250YWluZXJCdWlsZGVyKSB7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihIb3RSZWxvYWRTZXJ2ZXIpO1xuXHR9XG5cblx0cHVibGljIG92ZXJyaWRlIGNyZWF0ZVdvcmtzcGFjZShvcHRpb25zOiBXb3Jrc3BhY2VGYWN0b3J5T3B0aW9ucykge1xuXHRcdHJldHVybiBXb3Jrc3BhY2VGYWN0b3J5LmNyZWF0ZSh7IGNvbmZpZ0ZpbGU6IG9wdGlvbnMuY29uZmlnRmlsZSB9KTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIldvcmtzcGFjZUZhY3RvcnkiLCJNb2R1bGVNYW5pZmVzdCIsIkZsdXhDb21tYW5kIiwiSG90UmVsb2FkU2VydmVyIiwiU2VydmVBY3Rpb24iLCJGbHV4TW9kdWxlIiwiaWQiLCJjb21tYW5kIiwiYWN0aW9ucyIsInNlcnZlIiwicmVnaXN0ZXJTZXJ2aWNlcyIsImJ1aWxkZXIiLCJyZWdpc3RlclNpbmdsZXRvbiIsImNyZWF0ZVdvcmtzcGFjZSIsIm9wdGlvbnMiLCJjcmVhdGUiLCJjb25maWdGaWxlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxnQkFBZ0IsUUFBUSxpQkFBaUI7QUFFbEQsU0FBU0MsY0FBYyxRQUFRLHNCQUFzQjtBQUVyRCxTQUFTQyxXQUFXLFFBQVEsb0JBQW9CO0FBQ2hELFNBQVNDLGVBQWUsUUFBUSx5QkFBeUI7QUFDekQsU0FBU0MsV0FBVyxRQUFRLG9CQUFvQjtBQUVoRCxPQUFPLE1BQU1DLG1CQUFtQko7SUFDZkssS0FBSyxPQUFPO0lBQ1pDLFVBQVVMLFlBQVk7SUFDdEJNLFVBQVU7UUFDekJDLE9BQU9MO0lBQ1IsRUFBRTtJQUVLTSxpQkFBaUJDLE9BQXlCLEVBQUU7UUFDbERBLFFBQVFDLGlCQUFpQixDQUFDVDtJQUMzQjtJQUVnQlUsZ0JBQWdCQyxPQUFnQyxFQUFFO1FBQ2pFLE9BQU9kLGlCQUFpQmUsTUFBTSxDQUFDO1lBQUVDLFlBQVlGLFFBQVFFLFVBQVU7UUFBQztJQUNqRTtBQUNEIn0=