@dbx-tools/cli-service 0.9.58 → 0.9.60
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.
- package/README.md +3 -4
- package/index.ts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -2
- package/lib/src/_package.js +5 -7
- package/lib/src/_runtime.js +4 -6
- package/lib/src/cli.js +8 -4
- package/lib/src/definition.d.ts +2 -8
- package/lib/src/definition.js +3 -10
- package/lib/src/service.js +3 -2
- package/package.json +3 -3
- package/src/_package.ts +4 -7
- package/src/_runtime.ts +3 -6
- package/src/cli.ts +7 -6
- package/src/definition.ts +4 -16
- package/src/service.ts +2 -1
package/README.md
CHANGED
|
@@ -132,10 +132,9 @@ Install the service for the current user and start it
|
|
|
132
132
|
|
|
133
133
|
#### Options
|
|
134
134
|
|
|
135
|
-
| Option | Description
|
|
136
|
-
| ------------ |
|
|
137
|
-
| `--start`
|
|
138
|
-
| `--no-start` | Disable start the service after installation. |
|
|
135
|
+
| Option | Description |
|
|
136
|
+
| ------------ | ------------------------------------------- |
|
|
137
|
+
| `--no-start` | Do not start the service after installation |
|
|
139
138
|
|
|
140
139
|
### `<cli> service start`
|
|
141
140
|
|
package/index.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/cli-service";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.60";
|
|
7
7
|
export * as cli from "./src/cli.ts";
|
|
8
8
|
export * as definition from "./src/definition.ts";
|
|
9
9
|
export * as icon from "./src/icon.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/cli-service";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.60";
|
|
3
3
|
export * as cli from "./src/cli.ts";
|
|
4
4
|
export * as definition from "./src/definition.ts";
|
|
5
5
|
export * as icon from "./src/icon.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Regenerated from the exporting modules in ./src.
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/cli-service";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.60";
|
|
6
6
|
export * as cli from "./src/cli.js";
|
|
7
7
|
export * as definition from "./src/definition.js";
|
|
8
8
|
export * as icon from "./src/icon.js";
|
|
@@ -10,4 +10,4 @@ export * as service from "./src/service.js";
|
|
|
10
10
|
export { CliServiceInstallOptionsSchema } from "./src/cli.js";
|
|
11
11
|
export { CliServiceCommandSchema, CliServiceMenuItemSchema, CliServicePythonPackageSchema, CliServiceDefinitionSchema } from "./src/definition.js";
|
|
12
12
|
export { CliService } from "./src/service.js";
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx3QkFBd0IsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxVQUFVLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLDZCQUE2QixFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbkosT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9jbGktc2VydmljZVwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjYwXCI7XG5leHBvcnQgKiBhcyBjbGkgZnJvbSBcIi4vc3JjL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgZGVmaW5pdGlvbiBmcm9tIFwiLi9zcmMvZGVmaW5pdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgaWNvbiBmcm9tIFwiLi9zcmMvaWNvbi50c1wiO1xuZXhwb3J0ICogYXMgc2VydmljZSBmcm9tIFwiLi9zcmMvc2VydmljZS50c1wiO1xuZXhwb3J0IHsgQ2xpU2VydmljZUluc3RhbGxPcHRpb25zU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2NsaS50c1wiO1xuZXhwb3J0IHR5cGUgeyBDbGlTZXJ2aWNlRGVmaW5pdGlvblNvdXJjZSwgQ2xpU2VydmljZUNsaURlcGVuZGVuY2llcyB9IGZyb20gXCIuL3NyYy9jbGkudHNcIjtcbmV4cG9ydCB7IENsaVNlcnZpY2VDb21tYW5kU2NoZW1hLCBDbGlTZXJ2aWNlTWVudUl0ZW1TY2hlbWEsIENsaVNlcnZpY2VQeXRob25QYWNrYWdlU2NoZW1hLCBDbGlTZXJ2aWNlRGVmaW5pdGlvblNjaGVtYSB9IGZyb20gXCIuL3NyYy9kZWZpbml0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IENsaVNlcnZpY2VDb21tYW5kLCBDbGlTZXJ2aWNlQ29tbWFuZElucHV0LCBDbGlTZXJ2aWNlTWVudUl0ZW0sIENsaVNlcnZpY2VQeXRob25QYWNrYWdlLCBDbGlTZXJ2aWNlUHl0aG9uUGFja2FnZUlucHV0LCBDbGlTZXJ2aWNlRGVmaW5pdGlvbiwgQ2xpU2VydmljZURlZmluaXRpb25PcHRpb25zIH0gZnJvbSBcIi4vc3JjL2RlZmluaXRpb24udHNcIjtcbmV4cG9ydCB7IENsaVNlcnZpY2UgfSBmcm9tIFwiLi9zcmMvc2VydmljZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBDbGlTZXJ2aWNlQ29tcGlsZXIsIENsaVNlcnZpY2VSdW50aW1lSW5zdGFsbGVyLCBDbGlTZXJ2aWNlUHl0aG9uSW5zdGFsbGVyLCBDbGlTZXJ2aWNlUnVudGltZU9wdGlvbnMsIENsaVNlcnZpY2VTdGF0dXMsIENsaVNlcnZpY2VMaWZlY3ljbGUgfSBmcm9tIFwiLi9zcmMvc2VydmljZS50c1wiO1xuIl19
|
package/lib/src/_package.js
CHANGED
|
@@ -3,6 +3,7 @@ import { createRequire } from "node:module";
|
|
|
3
3
|
import { dirname, isAbsolute, join, resolve } from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
import * as projectUtils from "@dbx-tools/core/project-utils";
|
|
6
|
+
import { object } from "@dbx-tools/shared-core";
|
|
6
7
|
export function resolveServicePackage(reference, cwd = process.cwd()) {
|
|
7
8
|
const local = localManifest(reference);
|
|
8
9
|
if (local)
|
|
@@ -93,7 +94,7 @@ function servicePackage(manifestPath, expectedName) {
|
|
|
93
94
|
return resolveBin(directory, manifest.bin, name);
|
|
94
95
|
},
|
|
95
96
|
dependencies() {
|
|
96
|
-
const dependencies = isRecord(manifest.dependencies)
|
|
97
|
+
const dependencies = object.isRecord(manifest.dependencies)
|
|
97
98
|
? Object.keys(manifest.dependencies)
|
|
98
99
|
: [];
|
|
99
100
|
const require = createRequire(manifestPath);
|
|
@@ -114,7 +115,7 @@ function resolveBin(directory, value, name) {
|
|
|
114
115
|
throw new Error(`package exposes one unnamed bin, not ${name}`);
|
|
115
116
|
return resolve(directory, value);
|
|
116
117
|
}
|
|
117
|
-
if (!isRecord(value))
|
|
118
|
+
if (!object.isRecord(value))
|
|
118
119
|
throw new Error("package has no bin");
|
|
119
120
|
if (name) {
|
|
120
121
|
const target = value[name];
|
|
@@ -130,11 +131,8 @@ function resolveBin(directory, value, name) {
|
|
|
130
131
|
}
|
|
131
132
|
function readRecord(path) {
|
|
132
133
|
const value = JSON.parse(readFileSync(path, "utf8"));
|
|
133
|
-
if (!isRecord(value))
|
|
134
|
+
if (!object.isRecord(value))
|
|
134
135
|
throw new Error(`package manifest is not an object: ${path}`);
|
|
135
136
|
return value;
|
|
136
137
|
}
|
|
137
|
-
function isRecord(value) {
|
|
138
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
139
|
-
}
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3BhY2thZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX3BhY2thZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFekMsT0FBTyxLQUFLLFlBQVksTUFBTSwrQkFBK0IsQ0FBQztBQVU5RCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLFNBQWlCLEVBQ2pCLE1BQWMsT0FBTyxDQUFDLEdBQUcsRUFBRTtJQUUzQixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkMsSUFBSSxLQUFLO1FBQUUsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFeEMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDO0lBQ3ZCLE1BQU0sU0FBUyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLElBQUksU0FBUztRQUFFLE9BQU8sY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV0RCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLElBQUksQ0FBQyxJQUFJO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRSxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxD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QUFPLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGlzQWJzb2x1dGUsIGpvaW4sIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5cbmltcG9ydCAqIGFzIHByb2plY3RVdGlscyBmcm9tIFwiQGRieC10b29scy9jb3JlL3Byb2plY3QtdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlUGFja2FnZSB7XG4gIHJlYWRvbmx5IGRpcmVjdG9yeTogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbiAgYmluKG5hbWU/OiBzdHJpbmcpOiBzdHJpbmc7XG4gIGRlcGVuZGVuY2llcygpOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTZXJ2aWNlUGFja2FnZShcbiAgcmVmZXJlbmNlOiBzdHJpbmcsXG4gIGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKSxcbik6IFNlcnZpY2VQYWNrYWdlIHtcbiAgY29uc3QgbG9jYWwgPSBsb2NhbE1hbmlmZXN0KHJlZmVyZW5jZSk7XG4gIGlmIChsb2NhbCkgcmV0dXJuIHNlcnZpY2VQYWNrYWdlKGxvY2FsKTtcblxuICBjb25zdCBuYW1lID0gcmVmZXJlbmNlO1xuICBjb25zdCBpbnN0YWxsZWQgPSBpbnN0YWxsZWRNYW5pZmVzdChuYW1lKTtcbiAgaWYgKGluc3RhbGxlZCkgcmV0dXJuIHNlcnZpY2VQYWNrYWdlKGluc3RhbGxlZCwgbmFtZSk7XG5cbiAgY29uc3Qgcm9vdCA9IHByb2plY3RVdGlscy5yb290KGN3ZCk7XG4gIGlmICghcm9vdCkgdGhyb3cgbmV3IEVycm9yKGBjb3VsZCBub3QgcmVzb2x2ZSBwYWNrYWdlOiAke25hbWV9YCk7XG4gIGNvbnN0IG1hbmlmZXN0ID0gcmVhZFJlY29yZChqb2luKHJvb3QsIFwicGFja2FnZS5qc29uXCIpKTtcbiAgY29uc3Qgd29ya3NwYWNlcyA9IEFycmF5LmlzQXJyYXkobWFuaWZlc3Qud29ya3NwYWNlcykgPyBtYW5pZmVzdC53b3Jrc3BhY2VzIDogW107XG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIHdvcmtzcGFjZXMpIHtcbiAgICBpZiAodHlwZW9mIG1lbWJlciAhPT0gXCJzdHJpbmdcIiB8fCAvWyo/W1xcXXt9XS8udGVzdChtZW1iZXIpKSBjb250aW51ZTtcbiAgICBjb25zdCBwYXRoID0gam9pbihyb290LCBtZW1iZXIsIFwicGFja2FnZS5qc29uXCIpO1xuICAgIGlmICghZXhpc3RzU3luYyhwYXRoKSkgY29udGludWU7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gcmVhZFJlY29yZChwYXRoKTtcbiAgICBpZiAoY2FuZGlkYXRlLm5hbWUgPT09IG5hbWUpIHJldHVybiBzZXJ2aWNlUGFja2FnZShwYXRoLCBuYW1lKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYGNvdWxkIG5vdCByZXNvbHZlIGluc3RhbGxlZCBvciB3b3Jrc3BhY2UgcGFja2FnZTogJHtuYW1lfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VydmljZVBhY2thZ2VEZWZhdWx0cyhwa2c6IFNlcnZpY2VQYWNrYWdlKToge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59IHtcbiAgY29uc3Qgc2VnbWVudHMgPSBwa2cubmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpLnNwbGl0KFwiL1wiKTtcbiAgY29uc3QgcmF3TmFtZSA9IHNlZ21lbnRzLmF0KC0xKSE7XG4gIGNvbnN0IHJhd1Njb3BlID0gc2VnbWVudHMubGVuZ3RoID4gMSA/IHNlZ21lbnRzWzBdIS5zcGxpdChcIi1cIilbMF0hIDogXCJcIjtcbiAgY29uc3QgbmFtZSA9IHJhd05hbWUucmVwbGFjZSgvXmNsaS0vLCBcIlwiKS5yZXBsYWNlQWxsKFwiLVwiLCBcIiBcIik7XG4gIHJldHVybiB7XG4gICAgaWQ6IHBrZy5uYW1lXG4gICAgICAucmVwbGFjZSgvXkAvLCBcIlwiKVxuICAgICAgLnJlcGxhY2VBbGwoXCIvXCIsIFwiLlwiKVxuICAgICAgLnJlcGxhY2UoL1teYS16MC05Ll8tXSsvZ2ksIFwiLVwiKSxcbiAgICBuYW1lOiBbcmF3U2NvcGUsIG5hbWVdLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbG9jYWxNYW5pZmVzdChyZWZlcmVuY2U6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGxldCBwYXRoOiBzdHJpbmc7XG4gIGlmIChyZWZlcmVuY2Uuc3RhcnRzV2l0aChcImZpbGU6XCIpKSB7XG4gICAgcGF0aCA9IGZpbGVVUkxUb1BhdGgocmVmZXJlbmNlKTtcbiAgfSBlbHNlIGlmIChpc0Fic29sdXRlKHJlZmVyZW5jZSkpIHtcbiAgICBwYXRoID0gcmVmZXJlbmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgbGV0IGN1cnJlbnQgPSBleGlzdHNTeW5jKHBhdGgpID8gZGlybmFtZShwYXRoKSA6IHBhdGg7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBqb2luKGN1cnJlbnQsIFwicGFja2FnZS5qc29uXCIpO1xuICAgIGlmIChleGlzdHNTeW5jKG1hbmlmZXN0KSkgcmV0dXJuIG1hbmlmZXN0O1xuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoY3VycmVudCk7XG4gICAgaWYgKHBhcmVudCA9PT0gY3VycmVudCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjdXJyZW50ID0gcGFyZW50O1xuICB9XG59XG5cbmZ1bmN0aW9uIGluc3RhbGxlZE1hbmlmZXN0KG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKS5yZXNvbHZlKGAke25hbWV9L3BhY2thZ2UuanNvbmApO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICgoZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlID09PSBcIk1PRFVMRV9OT1RfRk9VTkRcIikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXJ2aWNlUGFja2FnZShtYW5pZmVzdFBhdGg6IHN0cmluZywgZXhwZWN0ZWROYW1lPzogc3RyaW5nKTogU2VydmljZVBhY2thZ2Uge1xuICBjb25zdCBtYW5pZmVzdCA9IHJlYWRSZWNvcmQobWFuaWZlc3RQYXRoKTtcbiAgaWYgKHR5cGVvZiBtYW5pZmVzdC5uYW1lICE9PSBcInN0cmluZ1wiIHx8ICFtYW5pZmVzdC5uYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwYWNrYWdlIGhhcyBubyBuYW1lOiAke21hbmlmZXN0UGF0aH1gKTtcbiAgfVxuICBpZiAoZXhwZWN0ZWROYW1lICYmIG1hbmlmZXN0Lm5hbWUgIT09IGV4cGVjdGVkTmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgcmVzb2x2ZWQgcGFja2FnZSBuYW1lIGRvZXMgbm90IG1hdGNoICR7ZXhwZWN0ZWROYW1lfTogJHttYW5pZmVzdFBhdGh9YCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBtYW5pZmVzdC52ZXJzaW9uICE9PSBcInN0cmluZ1wiIHx8ICFtYW5pZmVzdC52ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwYWNrYWdlIGhhcyBubyB2ZXJzaW9uOiAke21hbmlmZXN0UGF0aH1gKTtcbiAgfVxuICBjb25zdCBkaXJlY3RvcnkgPSBkaXJuYW1lKG1hbmlmZXN0UGF0aCk7XG4gIHJldHVybiB7XG4gICAgZGlyZWN0b3J5LFxuICAgIG5hbWU6IG1hbmlmZXN0Lm5hbWUsXG4gICAgdmVyc2lvbjogbWFuaWZlc3QudmVyc2lvbixcbiAgICBiaW4obmFtZSkge1xuICAgICAgcmV0dXJuIHJlc29sdmVCaW4oZGlyZWN0b3J5LCBtYW5pZmVzdC5iaW4sIG5hbWUpO1xuICAgIH0sXG4gICAgZGVwZW5kZW5jaWVzKCkge1xuICAgICAgY29uc3QgZGVwZW5kZW5jaWVzID0gaXNSZWNvcmQobWFuaWZlc3QuZGVwZW5kZW5jaWVzKVxuICAgICAgICA/IE9iamVjdC5rZXlzKG1hbmlmZXN0LmRlcGVuZGVuY2llcylcbiAgICAgICAgOiBbXTtcbiAgICAgIGNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKG1hbmlmZXN0UGF0aCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBkZXBlbmRlbmNpZXMubWFwKChkZXBlbmRlbmN5KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGF0aCA9IHJlcXVpcmUucmVzb2x2ZShgJHtkZXBlbmRlbmN5fS9wYWNrYWdlLmpzb25gKTtcbiAgICAgICAgICBjb25zdCByZXNvbHZlZCA9IHJlYWRSZWNvcmQocGF0aCk7XG4gICAgICAgICAgaWYgKHR5cGVvZiByZXNvbHZlZC52ZXJzaW9uICE9PSBcInN0cmluZ1wiIHx8ICFyZXNvbHZlZC52ZXJzaW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGRlcGVuZGVuY3kgaGFzIG5vIHZlcnNpb246ICR7cGF0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFtkZXBlbmRlbmN5LCByZXNvbHZlZC52ZXJzaW9uXTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVCaW4oZGlyZWN0b3J5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCBuYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGlmIChuYW1lKSB0aHJvdyBuZXcgRXJyb3IoYHBhY2thZ2UgZXhwb3NlcyBvbmUgdW5uYW1lZCBiaW4sIG5vdCAke25hbWV9YCk7XG4gICAgcmV0dXJuIHJlc29sdmUoZGlyZWN0b3J5LCB2YWx1ZSk7XG4gIH1cbiAgaWYgKCFpc1JlY29yZCh2YWx1ZSkpIHRocm93IG5ldyBFcnJvcihcInBhY2thZ2UgaGFzIG5vIGJpblwiKTtcbiAgaWYgKG5hbWUpIHtcbiAgICBjb25zdCB0YXJnZXQgPSB2YWx1ZVtuYW1lXTtcbiAgICBpZiAodHlwZW9mIHRhcmdldCAhPT0gXCJzdHJpbmdcIikgdGhyb3cgbmV3IEVycm9yKGBwYWNrYWdlIGhhcyBubyBiaW4gbmFtZWQgJHtuYW1lfWApO1xuICAgIHJldHVybiByZXNvbHZlKGRpcmVjdG9yeSwgdGFyZ2V0KTtcbiAgfVxuICBjb25zdCB0YXJnZXRzID0gT2JqZWN0LnZhbHVlcyh2YWx1ZSkuZmlsdGVyKFxuICAgICh0YXJnZXQpOiB0YXJnZXQgaXMgc3RyaW5nID0+IHR5cGVvZiB0YXJnZXQgPT09IFwic3RyaW5nXCIsXG4gICk7XG4gIGlmICh0YXJnZXRzLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInBhY2thZ2UgaGFzIG11bHRpcGxlIGJpbnM7IGNvbW1hbmQuYmluTmFtZSBpcyByZXF1aXJlZFwiKTtcbiAgfVxuICByZXR1cm4gcmVzb2x2ZShkaXJlY3RvcnksIHRhcmdldHNbMF0hKTtcbn1cblxuZnVuY3Rpb24gcmVhZFJlY29yZChwYXRoOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGNvbnN0IHZhbHVlOiB1bmtub3duID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMocGF0aCwgXCJ1dGY4XCIpKTtcbiAgaWYgKCFpc1JlY29yZCh2YWx1ZSkpIHRocm93IG5ldyBFcnJvcihgcGFja2FnZSBtYW5pZmVzdCBpcyBub3QgYW4gb2JqZWN0OiAke3BhdGh9YCk7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gaXNSZWNvcmQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuIl19
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3BhY2thZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX3BhY2thZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFekMsT0FBTyxLQUFLLFlBQVksTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFVaEQsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxTQUFpQixFQUNqQixNQUFjLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFFM0IsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksS0FBSztRQUFFLE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXhDLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQztJQUN2QixNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxJQUFJLFNBQVM7UUFBRSxPQUFPLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFdEQsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxJQUFJLENBQUMsSUFBSTtRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakUsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUN4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Q0FBQyxDQUFDO0lBQzNGLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBpc0Fic29sdXRlLCBqb2luLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gXCJub2RlOnVybFwiO1xuXG5pbXBvcnQgKiBhcyBwcm9qZWN0VXRpbHMgZnJvbSBcIkBkYngtdG9vbHMvY29yZS9wcm9qZWN0LXV0aWxzXCI7XG5pbXBvcnQgeyBvYmplY3QgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VQYWNrYWdlIHtcbiAgcmVhZG9ubHkgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICBiaW4obmFtZT86IHN0cmluZyk6IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzKCk6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNlcnZpY2VQYWNrYWdlKFxuICByZWZlcmVuY2U6IHN0cmluZyxcbiAgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpLFxuKTogU2VydmljZVBhY2thZ2Uge1xuICBjb25zdCBsb2NhbCA9IGxvY2FsTWFuaWZlc3QocmVmZXJlbmNlKTtcbiAgaWYgKGxvY2FsKSByZXR1cm4gc2VydmljZVBhY2thZ2UobG9jYWwpO1xuXG4gIGNvbnN0IG5hbWUgPSByZWZlcmVuY2U7XG4gIGNvbnN0IGluc3RhbGxlZCA9IGluc3RhbGxlZE1hbmlmZXN0KG5hbWUpO1xuICBpZiAoaW5zdGFsbGVkKSByZXR1cm4gc2VydmljZVBhY2thZ2UoaW5zdGFsbGVkLCBuYW1lKTtcblxuICBjb25zdCByb290ID0gcHJvamVjdFV0aWxzLnJvb3QoY3dkKTtcbiAgaWYgKCFyb290KSB0aHJvdyBuZXcgRXJyb3IoYGNvdWxkIG5vdCByZXNvbHZlIHBhY2thZ2U6ICR7bmFtZX1gKTtcbiAgY29uc3QgbWFuaWZlc3QgPSByZWFkUmVjb3JkKGpvaW4ocm9vdCwgXCJwYWNrYWdlLmpzb25cIikpO1xuICBjb25zdCB3b3Jrc3BhY2VzID0gQXJyYXkuaXNBcnJheShtYW5pZmVzdC53b3Jrc3BhY2VzKSA/IG1hbmlmZXN0LndvcmtzcGFjZXMgOiBbXTtcbiAgZm9yIChjb25zdCBtZW1iZXIgb2Ygd29ya3NwYWNlcykge1xuICAgIGlmICh0eXBlb2YgbWVtYmVyICE9PSBcInN0cmluZ1wiIHx8IC9bKj9bXFxde31dLy50ZXN0KG1lbWJlcikpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHBhdGggPSBqb2luKHJvb3QsIG1lbWJlciwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgaWYgKCFleGlzdHNTeW5jKHBhdGgpKSBjb250aW51ZTtcbiAgICBjb25zdCBjYW5kaWRhdGUgPSByZWFkUmVjb3JkKHBhdGgpO1xuICAgIGlmIChjYW5kaWRhdGUubmFtZSA9PT0gbmFtZSkgcmV0dXJuIHNlcnZpY2VQYWNrYWdlKHBhdGgsIG5hbWUpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgY291bGQgbm90IHJlc29sdmUgaW5zdGFsbGVkIG9yIHdvcmtzcGFjZSBwYWNrYWdlOiAke25hbWV9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2aWNlUGFja2FnZURlZmF1bHRzKHBrZzogU2VydmljZVBhY2thZ2UpOiB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn0ge1xuICBjb25zdCBzZWdtZW50cyA9IHBrZy5uYW1lLnJlcGxhY2UoL15ALywgXCJcIikuc3BsaXQoXCIvXCIpO1xuICBjb25zdCByYXdOYW1lID0gc2VnbWVudHMuYXQoLTEpITtcbiAgY29uc3QgcmF3U2NvcGUgPSBzZWdtZW50cy5sZW5ndGggPiAxID8gc2VnbWVudHNbMF0hLnNwbGl0KFwiLVwiKVswXSEgOiBcIlwiO1xuICBjb25zdCBuYW1lID0gcmF3TmFtZS5yZXBsYWNlKC9eY2xpLS8sIFwiXCIpLnJlcGxhY2VBbGwoXCItXCIsIFwiIFwiKTtcbiAgcmV0dXJuIHtcbiAgICBpZDogcGtnLm5hbWVcbiAgICAgIC5yZXBsYWNlKC9eQC8sIFwiXCIpXG4gICAgICAucmVwbGFjZUFsbChcIi9cIiwgXCIuXCIpXG4gICAgICAucmVwbGFjZSgvW15hLXowLTkuXy1dKy9naSwgXCItXCIpLFxuICAgIG5hbWU6IFtyYXdTY29wZSwgbmFtZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBsb2NhbE1hbmlmZXN0KHJlZmVyZW5jZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgbGV0IHBhdGg6IHN0cmluZztcbiAgaWYgKHJlZmVyZW5jZS5zdGFydHNXaXRoKFwiZmlsZTpcIikpIHtcbiAgICBwYXRoID0gZmlsZVVSTFRvUGF0aChyZWZlcmVuY2UpO1xuICB9IGVsc2UgaWYgKGlzQWJzb2x1dGUocmVmZXJlbmNlKSkge1xuICAgIHBhdGggPSByZWZlcmVuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBsZXQgY3VycmVudCA9IGV4aXN0c1N5bmMocGF0aCkgPyBkaXJuYW1lKHBhdGgpIDogcGF0aDtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBtYW5pZmVzdCA9IGpvaW4oY3VycmVudCwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgaWYgKGV4aXN0c1N5bmMobWFuaWZlc3QpKSByZXR1cm4gbWFuaWZlc3Q7XG4gICAgY29uc3QgcGFyZW50ID0gZGlybmFtZShjdXJyZW50KTtcbiAgICBpZiAocGFyZW50ID09PSBjdXJyZW50KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGN1cnJlbnQgPSBwYXJlbnQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5zdGFsbGVkTWFuaWZlc3QobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpLnJlc29sdmUoYCR7bmFtZX0vcGFja2FnZS5qc29uYCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKChlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgPT09IFwiTU9EVUxFX05PVF9GT1VORFwiKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNlcnZpY2VQYWNrYWdlKG1hbmlmZXN0UGF0aDogc3RyaW5nLCBleHBlY3RlZE5hbWU/OiBzdHJpbmcpOiBTZXJ2aWNlUGFja2FnZSB7XG4gIGNvbnN0IG1hbmlmZXN0ID0gcmVhZFJlY29yZChtYW5pZmVzdFBhdGgpO1xuICBpZiAodHlwZW9mIG1hbmlmZXN0Lm5hbWUgIT09IFwic3RyaW5nXCIgfHwgIW1hbmlmZXN0Lm5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHBhY2thZ2UgaGFzIG5vIG5hbWU6ICR7bWFuaWZlc3RQYXRofWApO1xuICB9XG4gIGlmIChleHBlY3RlZE5hbWUgJiYgbWFuaWZlc3QubmFtZSAhPT0gZXhwZWN0ZWROYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGByZXNvbHZlZCBwYWNrYWdlIG5hbWUgZG9lcyBub3QgbWF0Y2ggJHtleHBlY3RlZE5hbWV9OiAke21hbmlmZXN0UGF0aH1gKTtcbiAgfVxuICBpZiAodHlwZW9mIG1hbmlmZXN0LnZlcnNpb24gIT09IFwic3RyaW5nXCIgfHwgIW1hbmlmZXN0LnZlcnNpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHBhY2thZ2UgaGFzIG5vIHZlcnNpb246ICR7bWFuaWZlc3RQYXRofWApO1xuICB9XG4gIGNvbnN0IGRpcmVjdG9yeSA9IGRpcm5hbWUobWFuaWZlc3RQYXRoKTtcbiAgcmV0dXJuIHtcbiAgICBkaXJlY3RvcnksXG4gICAgbmFtZTogbWFuaWZlc3QubmFtZSxcbiAgICB2ZXJzaW9uOiBtYW5pZmVzdC52ZXJzaW9uLFxuICAgIGJpbihuYW1lKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZUJpbihkaXJlY3RvcnksIG1hbmlmZXN0LmJpbiwgbmFtZSk7XG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXMoKSB7XG4gICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSBvYmplY3QuaXNSZWNvcmQobWFuaWZlc3QuZGVwZW5kZW5jaWVzKVxuICAgICAgICA/IE9iamVjdC5rZXlzKG1hbmlmZXN0LmRlcGVuZGVuY2llcylcbiAgICAgICAgOiBbXTtcbiAgICAgIGNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKG1hbmlmZXN0UGF0aCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBkZXBlbmRlbmNpZXMubWFwKChkZXBlbmRlbmN5KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGF0aCA9IHJlcXVpcmUucmVzb2x2ZShgJHtkZXBlbmRlbmN5fS9wYWNrYWdlLmpzb25gKTtcbiAgICAgICAgICBjb25zdCByZXNvbHZlZCA9IHJlYWRSZWNvcmQocGF0aCk7XG4gICAgICAgICAgaWYgKHR5cGVvZiByZXNvbHZlZC52ZXJzaW9uICE9PSBcInN0cmluZ1wiIHx8ICFyZXNvbHZlZC52ZXJzaW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGRlcGVuZGVuY3kgaGFzIG5vIHZlcnNpb246ICR7cGF0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFtkZXBlbmRlbmN5LCByZXNvbHZlZC52ZXJzaW9uXTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVCaW4oZGlyZWN0b3J5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCBuYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGlmIChuYW1lKSB0aHJvdyBuZXcgRXJyb3IoYHBhY2thZ2UgZXhwb3NlcyBvbmUgdW5uYW1lZCBiaW4sIG5vdCAke25hbWV9YCk7XG4gICAgcmV0dXJuIHJlc29sdmUoZGlyZWN0b3J5LCB2YWx1ZSk7XG4gIH1cbiAgaWYgKCFvYmplY3QuaXNSZWNvcmQodmFsdWUpKSB0aHJvdyBuZXcgRXJyb3IoXCJwYWNrYWdlIGhhcyBubyBiaW5cIik7XG4gIGlmIChuYW1lKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gdmFsdWVbbmFtZV07XG4gICAgaWYgKHR5cGVvZiB0YXJnZXQgIT09IFwic3RyaW5nXCIpIHRocm93IG5ldyBFcnJvcihgcGFja2FnZSBoYXMgbm8gYmluIG5hbWVkICR7bmFtZX1gKTtcbiAgICByZXR1cm4gcmVzb2x2ZShkaXJlY3RvcnksIHRhcmdldCk7XG4gIH1cbiAgY29uc3QgdGFyZ2V0cyA9IE9iamVjdC52YWx1ZXModmFsdWUpLmZpbHRlcihcbiAgICAodGFyZ2V0KTogdGFyZ2V0IGlzIHN0cmluZyA9PiB0eXBlb2YgdGFyZ2V0ID09PSBcInN0cmluZ1wiLFxuICApO1xuICBpZiAodGFyZ2V0cy5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJwYWNrYWdlIGhhcyBtdWx0aXBsZSBiaW5zOyBjb21tYW5kLmJpbk5hbWUgaXMgcmVxdWlyZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJlc29sdmUoZGlyZWN0b3J5LCB0YXJnZXRzWzBdISk7XG59XG5cbmZ1bmN0aW9uIHJlYWRSZWNvcmQocGF0aDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCB2YWx1ZTogdW5rbm93biA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhdGgsIFwidXRmOFwiKSk7XG4gIGlmICghb2JqZWN0LmlzUmVjb3JkKHZhbHVlKSkgdGhyb3cgbmV3IEVycm9yKGBwYWNrYWdlIG1hbmlmZXN0IGlzIG5vdCBhbiBvYmplY3Q6ICR7cGF0aH1gKTtcbiAgcmV0dXJuIHZhbHVlO1xufVxuIl19
|
package/lib/src/_runtime.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import * as exec from "@dbx-tools/core/exec";
|
|
4
|
+
import { object } from "@dbx-tools/shared-core";
|
|
4
5
|
export function externalRuntimePackages(dependencies) {
|
|
5
6
|
return Object.keys(dependencies).filter((name) => !name.startsWith("@dbx-tools/"));
|
|
6
7
|
}
|
|
@@ -46,7 +47,7 @@ export async function installServicePythonPackage(uvExecutable, directory, packa
|
|
|
46
47
|
async function readOptionalRecord(path) {
|
|
47
48
|
try {
|
|
48
49
|
const value = JSON.parse(await readFile(path, "utf8"));
|
|
49
|
-
if (!isRecord(value))
|
|
50
|
+
if (!object.isRecord(value))
|
|
50
51
|
throw new Error(`JSON file is not an object: ${path}`);
|
|
51
52
|
return value;
|
|
52
53
|
}
|
|
@@ -57,11 +58,8 @@ async function readOptionalRecord(path) {
|
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
60
|
function stringRecord(value) {
|
|
60
|
-
if (!isRecord(value))
|
|
61
|
+
if (!object.isRecord(value))
|
|
61
62
|
return {};
|
|
62
63
|
return Object.fromEntries(Object.entries(value).filter((entry) => typeof entry[1] === "string"));
|
|
63
64
|
}
|
|
64
|
-
|
|
65
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3J1bnRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX3J1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakMsT0FBTyxLQUFLLElBQUksTUFBTSxzQkFBc0IsQ0FBQztBQUU3QyxNQUFNLFVBQVUsdUJBQXVCLENBQUMsWUFBOEM7SUFDcEYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFDckYsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUscUJBQXFCLENBQ3pDLGFBQXFCLEVBQ3JCLFNBQWlCLEVBQ2pCLFlBQThDO0lBRTlDLE1BQU0sS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDckQsTUFBTSxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2RCxNQUFNLFNBQVMsQ0FDYixZQUFZLEVBQ1osR0FBRyxJQUFJLENBQUMsU0FBUyxDQUNmO1FBQ0UsR0FBRyxPQUFPO1FBQ1YsSUFBSSxFQUFFLDRCQUE0QjtRQUNsQyxPQUFPLEVBQUUsSUFBSTtRQUNiLFlBQVksRUFBRTtZQUNaLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDckMsR0FBRyxZQUFZO1NBQ2hCO0tBQ0YsRUFDRCxJQUFJLEVBQ0osQ0FBQyxDQUNGLElBQUksRUFDTCxNQUFNLENBQ1AsQ0FBQztJQUNGLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRTtRQUMvRSxLQUFLLEVBQUUsSUFBSTtRQUNYLEdBQUcsRUFBRSxTQUFTO1FBQ2QsS0FBSyxFQUFFLFFBQVE7UUFDZixNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsMkZBQTJGO0FBQzNGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsMkJBQTJCLENBQy9DLFlBQW9CLEVBQ3BCLFNBQWlCLEVBQ2pCLGlCQUFvQyxFQUNwQyxNQUFjLEVBQ2QsUUFBeUI7SUFFekIsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RCxNQUFNLElBQUksQ0FBQyxLQUFLLENBQ2QsWUFBWSxFQUNaLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxFQUMzRTtRQUNFLEtBQUssRUFBRSxJQUFJO1FBQ1gsS0FBSyxFQUFFLFFBQVE7UUFDZixNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsU0FBUztLQUNsQixDQUNGLENBQUM7SUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMvRixNQUFNLElBQUksQ0FBQyxLQUFLLENBQ2QsWUFBWSxFQUNaLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxHQUFHLGlCQUFpQixDQUFDLEVBQzdFO1FBQ0UsS0FBSyxFQUFFLElBQUk7UUFDWCxLQUFLLEVBQUUsUUFBUTtRQUNmLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLE1BQU0sRUFBRSxTQUFTO0tBQ2xCLENBQ0YsQ0FBQztJQUNGLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxLQUFLLFVBQVUsa0JBQWtCLENBQUMsSUFBWTtJQUM1QyxJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBWSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3RSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSyxLQUErQixDQUFDLElBQUksS0FBSyxRQUFRO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDbEUsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEtBQWM7SUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNoQyxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQ3ZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUMxQixDQUFDLEtBQUssRUFBNkIsRUFBRSxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FDbkUsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLEtBQWM7SUFDOUIsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1rZGlyLCByZWFkRmlsZSwgcm0sIHdyaXRlRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuXG5pbXBvcnQgKiBhcyBleGVjIGZyb20gXCJAZGJ4LXRvb2xzL2NvcmUvZXhlY1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZXJuYWxSdW50aW1lUGFja2FnZXMoZGVwZW5kZW5jaWVzOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pik6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGRlcGVuZGVuY2llcykuZmlsdGVyKChuYW1lKSA9PiAhbmFtZS5zdGFydHNXaXRoKFwiQGRieC10b29scy9cIikpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5zdGFsbFNlcnZpY2VSdW50aW1lKFxuICBidW5FeGVjdXRhYmxlOiBzdHJpbmcsXG4gIGRpcmVjdG9yeTogc3RyaW5nLFxuICBkZXBlbmRlbmNpZXM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IG1rZGlyKGRpcmVjdG9yeSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGNvbnN0IG1hbmlmZXN0UGF0aCA9IGpvaW4oZGlyZWN0b3J5LCBcInBhY2thZ2UuanNvblwiKTtcbiAgY29uc3QgY3VycmVudCA9IGF3YWl0IHJlYWRPcHRpb25hbFJlY29yZChtYW5pZmVzdFBhdGgpO1xuICBhd2FpdCB3cml0ZUZpbGUoXG4gICAgbWFuaWZlc3RQYXRoLFxuICAgIGAke0pTT04uc3RyaW5naWZ5KFxuICAgICAge1xuICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICBuYW1lOiBcIkBkYngtdG9vbHMvc2VydmljZS1ydW50aW1lXCIsXG4gICAgICAgIHByaXZhdGU6IHRydWUsXG4gICAgICAgIGRlcGVuZGVuY2llczoge1xuICAgICAgICAgIC4uLnN0cmluZ1JlY29yZChjdXJyZW50LmRlcGVuZGVuY2llcyksXG4gICAgICAgICAgLi4uZGVwZW5kZW5jaWVzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG51bGwsXG4gICAgICAyLFxuICAgICl9XFxuYCxcbiAgICBcInV0ZjhcIixcbiAgKTtcbiAgYXdhaXQgZXhlYy5zcGF3bihidW5FeGVjdXRhYmxlLCBbXCJpbnN0YWxsXCIsIFwiLS1wcm9kdWN0aW9uXCIsIFwiLS1jd2RcIiwgZGlyZWN0b3J5XSwge1xuICAgIGNoZWNrOiB0cnVlLFxuICAgIGN3ZDogZGlyZWN0b3J5LFxuICAgIHN0ZGluOiBcImlnbm9yZVwiLFxuICAgIHN0ZG91dDogXCJjYXB0dXJlXCIsXG4gICAgc3RkZXJyOiBcImNhcHR1cmVcIixcbiAgfSk7XG59XG5cbi8qKiBDcmVhdGUgYSBjbGVhbiB1diBlbnZpcm9ubWVudCBhbmQgaW5zdGFsbCB0aGUgcHJpbWFyeSBhbmQgY29tcGFuaW9uIFB5dGhvbiBwYWNrYWdlcy4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnN0YWxsU2VydmljZVB5dGhvblBhY2thZ2UoXG4gIHV2RXhlY3V0YWJsZTogc3RyaW5nLFxuICBkaXJlY3Rvcnk6IHN0cmluZyxcbiAgcGFja2FnZVNwZWNpZmllcnM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBweXRob246IHN0cmluZyxcbiAgcGxhdGZvcm06IE5vZGVKUy5QbGF0Zm9ybSxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGF3YWl0IHJtKGRpcmVjdG9yeSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICBhd2FpdCBleGVjLnNwYXduKFxuICAgIHV2RXhlY3V0YWJsZSxcbiAgICBbXCJ2ZW52XCIsIFwiLS1tYW5hZ2VkLXB5dGhvblwiLCBcIi0tbm8tcHJvamVjdFwiLCBcIi0tcHl0aG9uXCIsIHB5dGhvbiwgZGlyZWN0b3J5XSxcbiAgICB7XG4gICAgICBjaGVjazogdHJ1ZSxcbiAgICAgIHN0ZGluOiBcImlnbm9yZVwiLFxuICAgICAgc3Rkb3V0OiBcImNhcHR1cmVcIixcbiAgICAgIHN0ZGVycjogXCJjYXB0dXJlXCIsXG4gICAgfSxcbiAgKTtcbiAgY29uc3QgZXhlY3V0YWJsZSA9IGpvaW4oZGlyZWN0b3J5LCBwbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiID8gXCJTY3JpcHRzL3B5dGhvbi5leGVcIiA6IFwiYmluL3B5dGhvblwiKTtcbiAgYXdhaXQgZXhlYy5zcGF3bihcbiAgICB1dkV4ZWN1dGFibGUsXG4gICAgW1wicGlwXCIsIFwiaW5zdGFsbFwiLCBcIi0tcHl0aG9uXCIsIGV4ZWN1dGFibGUsIFwiLS11cGdyYWRlXCIsIC4uLnBhY2thZ2VTcGVjaWZpZXJzXSxcbiAgICB7XG4gICAgICBjaGVjazogdHJ1ZSxcbiAgICAgIHN0ZGluOiBcImlnbm9yZVwiLFxuICAgICAgc3Rkb3V0OiBcImNhcHR1cmVcIixcbiAgICAgIHN0ZGVycjogXCJjYXB0dXJlXCIsXG4gICAgfSxcbiAgKTtcbiAgcmV0dXJuIGV4ZWN1dGFibGU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRPcHRpb25hbFJlY29yZChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdmFsdWU6IHVua25vd24gPSBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKHBhdGgsIFwidXRmOFwiKSk7XG4gICAgaWYgKCFpc1JlY29yZCh2YWx1ZSkpIHRocm93IG5ldyBFcnJvcihgSlNPTiBmaWxlIGlzIG5vdCBhbiBvYmplY3Q6ICR7cGF0aH1gKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKChlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgPT09IFwiRU5PRU5UXCIpIHJldHVybiB7fTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG5mdW5jdGlvbiBzdHJpbmdSZWNvcmQodmFsdWU6IHVua25vd24pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgaWYgKCFpc1JlY29yZCh2YWx1ZSkpIHJldHVybiB7fTtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyh2YWx1ZSkuZmlsdGVyKFxuICAgICAgKGVudHJ5KTogZW50cnkgaXMgW3N0cmluZywgc3RyaW5nXSA9PiB0eXBlb2YgZW50cnlbMV0gPT09IFwic3RyaW5nXCIsXG4gICAgKSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gaXNSZWNvcmQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuIl19
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3J1bnRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX3J1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakMsT0FBTyxLQUFLLElBQUksTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFaEQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLFlBQThDO0lBQ3BGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ3JGLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLHFCQUFxQixDQUN6QyxhQUFxQixFQUNyQixTQUFpQixFQUNqQixZQUE4QztJQUU5QyxNQUFNLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM1QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sT0FBTyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkQsTUFBTSxTQUFTLENBQ2IsWUFBWSxFQUNaLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FDZjtRQUNFLEdBQUcsT0FBTztRQUNWLElBQUksRUFBRSw0QkFBNEI7UUFDbEMsT0FBTyxFQUFFLElBQUk7UUFDYixZQUFZLEVBQUU7WUFDWixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQ3JDLEdBQUcsWUFBWTtTQUNoQjtLQUNGLEVBQ0QsSUFBSSxFQUNKLENBQUMsQ0FDRixJQUFJLEVBQ0wsTUFBTSxDQUNQLENBQUM7SUFDRixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUU7UUFDL0UsS0FBSyxFQUFFLElBQUk7UUFDWCxHQUFHLEVBQUUsU0FBUztRQUNkLEtBQUssRUFBRSxRQUFRO1FBQ2YsTUFBTSxFQUFFLFNBQVM7UUFDakIsTUFBTSxFQUFFLFNBQVM7S0FDbEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELDJGQUEyRjtBQUMzRixNQUFNLENBQUMsS0FBSyxVQUFVLDJCQUEyQixDQUMvQyxZQUFvQixFQUNwQixTQUFpQixFQUNqQixpQkFBb0MsRUFDcEMsTUFBYyxFQUNkLFFBQXlCO0lBRXpCLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEQsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUNkLFlBQVksRUFDWixDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFDM0U7UUFDRSxLQUFLLEVBQUUsSUFBSTtRQUNYLEtBQUssRUFBRSxRQUFRO1FBQ2YsTUFBTSxFQUFFLFNBQVM7UUFDakIsTUFBTSxFQUFFLFNBQVM7S0FDbEIsQ0FDRixDQUFDO0lBQ0YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0YsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUNkLFlBQVksRUFDWixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxFQUM3RTtRQUNFLEtBQUssRUFBRSxJQUFJO1FBQ1gsS0FBSyxFQUFFLFFBQVE7UUFDZixNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsU0FBUztLQUNsQixDQUNGLENBQUM7SUFDRixPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQsS0FBSyxVQUFVLGtCQUFrQixDQUFDLElBQVk7SUFDNUMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFLLEtBQStCLENBQUMsSUFBSSxLQUFLLFFBQVE7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNsRSxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsS0FBYztJQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN2QyxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQ3ZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUMxQixDQUFDLEtBQUssRUFBNkIsRUFBRSxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FDbkUsQ0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1rZGlyLCByZWFkRmlsZSwgcm0sIHdyaXRlRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuXG5pbXBvcnQgKiBhcyBleGVjIGZyb20gXCJAZGJ4LXRvb2xzL2NvcmUvZXhlY1wiO1xuaW1wb3J0IHsgb2JqZWN0IH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVybmFsUnVudGltZVBhY2thZ2VzKGRlcGVuZGVuY2llczogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhkZXBlbmRlbmNpZXMpLmZpbHRlcigobmFtZSkgPT4gIW5hbWUuc3RhcnRzV2l0aChcIkBkYngtdG9vbHMvXCIpKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc3RhbGxTZXJ2aWNlUnVudGltZShcbiAgYnVuRXhlY3V0YWJsZTogc3RyaW5nLFxuICBkaXJlY3Rvcnk6IHN0cmluZyxcbiAgZGVwZW5kZW5jaWVzOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pixcbik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBta2RpcihkaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBjb25zdCBtYW5pZmVzdFBhdGggPSBqb2luKGRpcmVjdG9yeSwgXCJwYWNrYWdlLmpzb25cIik7XG4gIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCByZWFkT3B0aW9uYWxSZWNvcmQobWFuaWZlc3RQYXRoKTtcbiAgYXdhaXQgd3JpdGVGaWxlKFxuICAgIG1hbmlmZXN0UGF0aCxcbiAgICBgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgIHtcbiAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgbmFtZTogXCJAZGJ4LXRvb2xzL3NlcnZpY2UtcnVudGltZVwiLFxuICAgICAgICBwcml2YXRlOiB0cnVlLFxuICAgICAgICBkZXBlbmRlbmNpZXM6IHtcbiAgICAgICAgICAuLi5zdHJpbmdSZWNvcmQoY3VycmVudC5kZXBlbmRlbmNpZXMpLFxuICAgICAgICAgIC4uLmRlcGVuZGVuY2llcyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBudWxsLFxuICAgICAgMixcbiAgICApfVxcbmAsXG4gICAgXCJ1dGY4XCIsXG4gICk7XG4gIGF3YWl0IGV4ZWMuc3Bhd24oYnVuRXhlY3V0YWJsZSwgW1wiaW5zdGFsbFwiLCBcIi0tcHJvZHVjdGlvblwiLCBcIi0tY3dkXCIsIGRpcmVjdG9yeV0sIHtcbiAgICBjaGVjazogdHJ1ZSxcbiAgICBjd2Q6IGRpcmVjdG9yeSxcbiAgICBzdGRpbjogXCJpZ25vcmVcIixcbiAgICBzdGRvdXQ6IFwiY2FwdHVyZVwiLFxuICAgIHN0ZGVycjogXCJjYXB0dXJlXCIsXG4gIH0pO1xufVxuXG4vKiogQ3JlYXRlIGEgY2xlYW4gdXYgZW52aXJvbm1lbnQgYW5kIGluc3RhbGwgdGhlIHByaW1hcnkgYW5kIGNvbXBhbmlvbiBQeXRob24gcGFja2FnZXMuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5zdGFsbFNlcnZpY2VQeXRob25QYWNrYWdlKFxuICB1dkV4ZWN1dGFibGU6IHN0cmluZyxcbiAgZGlyZWN0b3J5OiBzdHJpbmcsXG4gIHBhY2thZ2VTcGVjaWZpZXJzOiByZWFkb25seSBzdHJpbmdbXSxcbiAgcHl0aG9uOiBzdHJpbmcsXG4gIHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm0sXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBhd2FpdCBybShkaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgYXdhaXQgZXhlYy5zcGF3bihcbiAgICB1dkV4ZWN1dGFibGUsXG4gICAgW1widmVudlwiLCBcIi0tbWFuYWdlZC1weXRob25cIiwgXCItLW5vLXByb2plY3RcIiwgXCItLXB5dGhvblwiLCBweXRob24sIGRpcmVjdG9yeV0sXG4gICAge1xuICAgICAgY2hlY2s6IHRydWUsXG4gICAgICBzdGRpbjogXCJpZ25vcmVcIixcbiAgICAgIHN0ZG91dDogXCJjYXB0dXJlXCIsXG4gICAgICBzdGRlcnI6IFwiY2FwdHVyZVwiLFxuICAgIH0sXG4gICk7XG4gIGNvbnN0IGV4ZWN1dGFibGUgPSBqb2luKGRpcmVjdG9yeSwgcGxhdGZvcm0gPT09IFwid2luMzJcIiA/IFwiU2NyaXB0cy9weXRob24uZXhlXCIgOiBcImJpbi9weXRob25cIik7XG4gIGF3YWl0IGV4ZWMuc3Bhd24oXG4gICAgdXZFeGVjdXRhYmxlLFxuICAgIFtcInBpcFwiLCBcImluc3RhbGxcIiwgXCItLXB5dGhvblwiLCBleGVjdXRhYmxlLCBcIi0tdXBncmFkZVwiLCAuLi5wYWNrYWdlU3BlY2lmaWVyc10sXG4gICAge1xuICAgICAgY2hlY2s6IHRydWUsXG4gICAgICBzdGRpbjogXCJpZ25vcmVcIixcbiAgICAgIHN0ZG91dDogXCJjYXB0dXJlXCIsXG4gICAgICBzdGRlcnI6IFwiY2FwdHVyZVwiLFxuICAgIH0sXG4gICk7XG4gIHJldHVybiBleGVjdXRhYmxlO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkT3B0aW9uYWxSZWNvcmQocGF0aDogc3RyaW5nKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICB0cnkge1xuICAgIGNvbnN0IHZhbHVlOiB1bmtub3duID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShwYXRoLCBcInV0ZjhcIikpO1xuICAgIGlmICghb2JqZWN0LmlzUmVjb3JkKHZhbHVlKSkgdGhyb3cgbmV3IEVycm9yKGBKU09OIGZpbGUgaXMgbm90IGFuIG9iamVjdDogJHtwYXRofWApO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoKGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSA9PT0gXCJFTk9FTlRcIikgcmV0dXJuIHt9O1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN0cmluZ1JlY29yZCh2YWx1ZTogdW5rbm93bik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBpZiAoIW9iamVjdC5pc1JlY29yZCh2YWx1ZSkpIHJldHVybiB7fTtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyh2YWx1ZSkuZmlsdGVyKFxuICAgICAgKGVudHJ5KTogZW50cnkgaXMgW3N0cmluZywgc3RyaW5nXSA9PiB0eXBlb2YgZW50cnlbMV0gPT09IFwic3RyaW5nXCIsXG4gICAgKSxcbiAgKTtcbn1cbiJdfQ==
|
package/lib/src/cli.js
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
|
-
import { addArgs, parseArgs } from "@dbx-tools/cli-args/args";
|
|
10
9
|
import { Command } from "commander";
|
|
11
10
|
import { z } from "zod";
|
|
12
11
|
import { CliService } from "./service.js";
|
|
@@ -27,9 +26,14 @@ export function buildServiceCommand(source, dependencies = DEFAULT_DEPENDENCIES)
|
|
|
27
26
|
const command = new Command("service").description(typeof source === "function"
|
|
28
27
|
? "Install and manage the desktop service"
|
|
29
28
|
: `Install and manage the ${source.name} desktop service`);
|
|
30
|
-
const install =
|
|
29
|
+
const install = command
|
|
30
|
+
.command("install")
|
|
31
|
+
.description("Install the service for the current user and start it")
|
|
32
|
+
.option("--no-start", "Do not start the service after installation");
|
|
31
33
|
install.action(async () => {
|
|
32
|
-
const options =
|
|
34
|
+
const options = CliServiceInstallOptionsSchema.parse({
|
|
35
|
+
start: install.getOptionValue("start"),
|
|
36
|
+
});
|
|
33
37
|
await service().install({ start: options.start });
|
|
34
38
|
});
|
|
35
39
|
command
|
|
@@ -67,4 +71,4 @@ export function buildServiceCommand(source, dependencies = DEFAULT_DEPENDENCIES)
|
|
|
67
71
|
function resolveDefinition(source) {
|
|
68
72
|
return typeof source === "function" ? source : () => source;
|
|
69
73
|
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBR3hCLE9BQU8sRUFBRSxVQUFVLEVBQTRCLE1BQU0sY0FBYyxDQUFDO0FBYXBFLE1BQU0sb0JBQW9CLEdBQThCO0lBQ3RELE1BQU0sRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQ2xELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0NBQzlDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUFDO0tBQzVDLE1BQU0sQ0FBQztJQUNOLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyx1Q0FBdUMsQ0FBQztDQUNuRixDQUFDO0tBQ0QsTUFBTSxFQUFFO0tBQ1IsUUFBUSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7QUFJbEUseUZBQXlGO0FBQ3pGLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsTUFBa0MsRUFDbEMsZUFBMEMsb0JBQW9CO0lBRTlELE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUN4RCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQ2hELE9BQU8sTUFBTSxLQUFLLFVBQVU7UUFDMUIsQ0FBQyxDQUFDLHdDQUF3QztRQUMxQyxDQUFDLENBQUMsMEJBQTBCLE1BQU0sQ0FBQyxJQUFJLGtCQUFrQixDQUM1RCxDQUFDO0lBRUYsTUFBTSxPQUFPLEdBQUcsT0FBTztTQUNwQixPQUFPLENBQUMsU0FBUyxDQUFDO1NBQ2xCLFdBQVcsQ0FBQyx1REFBdUQsQ0FBQztTQUNwRSxNQUFNLENBQUMsWUFBWSxFQUFFLDZDQUE2QyxDQUFDLENBQUM7SUFDdkUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtRQUN4QixNQUFNLE9BQU8sR0FBRyw4QkFBOEIsQ0FBQyxLQUFLLENBQUM7WUFDbkQsS0FBSyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztRQUNILE1BQU0sT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTztTQUNKLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDaEIsV0FBVyxDQUFDLDZCQUE2QixDQUFDO1NBQzFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNqQixNQUFNLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUFDO0lBRUwsT0FBTztTQUNKLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDZixXQUFXLENBQUMsMEJBQTBCLENBQUM7U0FDdkMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ2pCLE1BQU0sT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7SUFFTCxPQUFPO1NBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQztTQUNsQixXQUFXLENBQUMsK0JBQStCLENBQUM7U0FDNUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ2pCLE1BQU0sT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFFTCxPQUFPO1NBQ0osT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNqQixXQUFXLENBQUMsc0RBQXNELENBQUM7U0FDbkUsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ2pCLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvRSxDQUFDLENBQUMsQ0FBQztJQUVMLE9BQU87U0FDSixPQUFPLENBQUMsV0FBVyxDQUFDO1NBQ3BCLFdBQVcsQ0FBQyxrREFBa0QsQ0FBQztTQUMvRCxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDakIsTUFBTSxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM5QixDQUFDLENBQUMsQ0FBQztJQUVMLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLE1BQWtDO0lBQzNELE9BQU8sT0FBTyxNQUFNLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUM5RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tYW5kZXIgY29tbWFuZCBncm91cCBmb3IgdGhlIHNoYXJlZCBzeXN0ZW0tdHJheSBzZXJ2aWNlIGxpZmVjeWNsZS5cbiAqXG4gKiBDb25zdW1pbmcgQ0xJcyBzaG91bGQgbW91bnQge0BsaW5rIGJ1aWxkU2VydmljZUNvbW1hbmR9IGluc3RlYWQgb2YgZGVmaW5pbmdcbiAqIHBhY2thZ2UtbG9jYWwgaW5zdGFsbC9zdGFydC9zdG9wL3N0YXR1cyBjb21tYW5kcyB3aXRoIGRpdmVyZ2VudCBiZWhhdmlvci5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB0eXBlIHsgQ2xpU2VydmljZURlZmluaXRpb24gfSBmcm9tIFwiLi9kZWZpbml0aW9uLnRzXCI7XG5pbXBvcnQgeyBDbGlTZXJ2aWNlLCB0eXBlIENsaVNlcnZpY2VMaWZlY3ljbGUgfSBmcm9tIFwiLi9zZXJ2aWNlLnRzXCI7XG5cbi8qKiBTdGF0aWMgZGVmaW5pdGlvbiBvciBhY3Rpb24tdGltZSBmYWN0b3J5IHVzZWQgYnkgYSBzZXJ2aWNlIGNvbW1hbmQgZ3JvdXAuICovXG5leHBvcnQgdHlwZSBDbGlTZXJ2aWNlRGVmaW5pdGlvblNvdXJjZSA9IENsaVNlcnZpY2VEZWZpbml0aW9uIHwgKCgpID0+IENsaVNlcnZpY2VEZWZpbml0aW9uKTtcblxuLyoqIEluamVjdGFibGUgbGlmZWN5Y2xlIGFuZCBvdXRwdXQgYm91bmRhcnkgZm9yIHNlcnZpY2UgQ0xJIHRlc3RzIGFuZCBjb21wb3NpdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpU2VydmljZUNsaURlcGVuZGVuY2llcyB7XG4gIC8qKiBDb25zdHJ1Y3QgdGhlIGxpZmVjeWNsZSBtYW5hZ2VyIHVzZWQgYnkgY29tbWFuZCBhY3Rpb25zLiAqL1xuICBjcmVhdGUoZGVmaW5pdGlvbjogQ2xpU2VydmljZURlZmluaXRpb24pOiBDbGlTZXJ2aWNlTGlmZWN5Y2xlO1xuICAvKiogV3JpdGUgdGhlIEpTT04gcmVzdWx0IG9mIHRoZSBzdGF0dXMgY29tbWFuZC4gKi9cbiAgd3JpdGUodmFsdWU6IHN0cmluZyk6IHZvaWQ7XG59XG5cbmNvbnN0IERFRkFVTFRfREVQRU5ERU5DSUVTOiBDbGlTZXJ2aWNlQ2xpRGVwZW5kZW5jaWVzID0ge1xuICBjcmVhdGU6IChkZWZpbml0aW9uKSA9PiBuZXcgQ2xpU2VydmljZShkZWZpbml0aW9uKSxcbiAgd3JpdGU6ICh2YWx1ZSkgPT4gcHJvY2Vzcy5zdGRvdXQud3JpdGUodmFsdWUpLFxufTtcblxuZXhwb3J0IGNvbnN0IENsaVNlcnZpY2VJbnN0YWxsT3B0aW9uc1NjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgc3RhcnQ6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSkuZGVzY3JpYmUoXCJTdGFydCB0aGUgc2VydmljZSBhZnRlciBpbnN0YWxsYXRpb24uXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiT3B0aW9ucyBmb3IgaW5zdGFsbGluZyBhIGN1cnJlbnQtdXNlciBDTEkgc2VydmljZS5cIik7XG5cbmV4cG9ydCB0eXBlIENsaVNlcnZpY2VJbnN0YWxsT3B0aW9ucyA9IHoub3V0cHV0PHR5cGVvZiBDbGlTZXJ2aWNlSW5zdGFsbE9wdGlvbnNTY2hlbWE+O1xuXG4vKiogQnVpbGQgaW5zdGFsbCwgc3RhcnQsIHN0b3AsIHJlc3RhcnQsIHN0YXR1cywgYW5kIHVuaW5zdGFsbCBjb21tYW5kcyBmb3IgYSBzZXJ2aWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU2VydmljZUNvbW1hbmQoXG4gIHNvdXJjZTogQ2xpU2VydmljZURlZmluaXRpb25Tb3VyY2UsXG4gIGRlcGVuZGVuY2llczogQ2xpU2VydmljZUNsaURlcGVuZGVuY2llcyA9IERFRkFVTFRfREVQRU5ERU5DSUVTLFxuKTogQ29tbWFuZCB7XG4gIGNvbnN0IGRlZmluaXRpb24gPSByZXNvbHZlRGVmaW5pdGlvbihzb3VyY2UpO1xuICBjb25zdCBzZXJ2aWNlID0gKCkgPT4gZGVwZW5kZW5jaWVzLmNyZWF0ZShkZWZpbml0aW9uKCkpO1xuICBjb25zdCBjb21tYW5kID0gbmV3IENvbW1hbmQoXCJzZXJ2aWNlXCIpLmRlc2NyaXB0aW9uKFxuICAgIHR5cGVvZiBzb3VyY2UgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyBcIkluc3RhbGwgYW5kIG1hbmFnZSB0aGUgZGVza3RvcCBzZXJ2aWNlXCJcbiAgICAgIDogYEluc3RhbGwgYW5kIG1hbmFnZSB0aGUgJHtzb3VyY2UubmFtZX0gZGVza3RvcCBzZXJ2aWNlYCxcbiAgKTtcblxuICBjb25zdCBpbnN0YWxsID0gY29tbWFuZFxuICAgIC5jb21tYW5kKFwiaW5zdGFsbFwiKVxuICAgIC5kZXNjcmlwdGlvbihcIkluc3RhbGwgdGhlIHNlcnZpY2UgZm9yIHRoZSBjdXJyZW50IHVzZXIgYW5kIHN0YXJ0IGl0XCIpXG4gICAgLm9wdGlvbihcIi0tbm8tc3RhcnRcIiwgXCJEbyBub3Qgc3RhcnQgdGhlIHNlcnZpY2UgYWZ0ZXIgaW5zdGFsbGF0aW9uXCIpO1xuICBpbnN0YWxsLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IENsaVNlcnZpY2VJbnN0YWxsT3B0aW9uc1NjaGVtYS5wYXJzZSh7XG4gICAgICBzdGFydDogaW5zdGFsbC5nZXRPcHRpb25WYWx1ZShcInN0YXJ0XCIpLFxuICAgIH0pO1xuICAgIGF3YWl0IHNlcnZpY2UoKS5pbnN0YWxsKHsgc3RhcnQ6IG9wdGlvbnMuc3RhcnQgfSk7XG4gIH0pO1xuXG4gIGNvbW1hbmRcbiAgICAuY29tbWFuZChcInN0YXJ0XCIpXG4gICAgLmRlc2NyaXB0aW9uKFwiU3RhcnQgdGhlIGluc3RhbGxlZCBzZXJ2aWNlXCIpXG4gICAgLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBzZXJ2aWNlKCkuc3RhcnQoKTtcbiAgICB9KTtcblxuICBjb21tYW5kXG4gICAgLmNvbW1hbmQoXCJzdG9wXCIpXG4gICAgLmRlc2NyaXB0aW9uKFwiU3RvcCB0aGUgcnVubmluZyBzZXJ2aWNlXCIpXG4gICAgLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBzZXJ2aWNlKCkuc3RvcCgpO1xuICAgIH0pO1xuXG4gIGNvbW1hbmRcbiAgICAuY29tbWFuZChcInJlc3RhcnRcIilcbiAgICAuZGVzY3JpcHRpb24oXCJSZXN0YXJ0IHRoZSBpbnN0YWxsZWQgc2VydmljZVwiKVxuICAgIC5hY3Rpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgc2VydmljZSgpLnJlc3RhcnQoKTtcbiAgICB9KTtcblxuICBjb21tYW5kXG4gICAgLmNvbW1hbmQoXCJzdGF0dXNcIilcbiAgICAuZGVzY3JpcHRpb24oXCJQcmludCBzZXJ2aWNlIGluc3RhbGxhdGlvbiBhbmQgcHJvY2VzcyBzdGF0ZSBhcyBKU09OXCIpXG4gICAgLmFjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICBkZXBlbmRlbmNpZXMud3JpdGUoYCR7SlNPTi5zdHJpbmdpZnkoYXdhaXQgc2VydmljZSgpLnN0YXR1cygpLCBudWxsLCAyKX1cXG5gKTtcbiAgICB9KTtcblxuICBjb21tYW5kXG4gICAgLmNvbW1hbmQoXCJ1bmluc3RhbGxcIilcbiAgICAuZGVzY3JpcHRpb24oXCJTdG9wIGFuZCByZW1vdmUgdGhlIHNlcnZpY2UgZm9yIHRoZSBjdXJyZW50IHVzZXJcIilcbiAgICAuYWN0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHNlcnZpY2UoKS51bmluc3RhbGwoKTtcbiAgICB9KTtcblxuICByZXR1cm4gY29tbWFuZDtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURlZmluaXRpb24oc291cmNlOiBDbGlTZXJ2aWNlRGVmaW5pdGlvblNvdXJjZSk6ICgpID0+IENsaVNlcnZpY2VEZWZpbml0aW9uIHtcbiAgcmV0dXJuIHR5cGVvZiBzb3VyY2UgPT09IFwiZnVuY3Rpb25cIiA/IHNvdXJjZSA6ICgpID0+IHNvdXJjZTtcbn1cbiJdfQ==
|
package/lib/src/definition.d.ts
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module
|
|
9
9
|
*/
|
|
10
|
-
import { type ArgumentSource } from "@dbx-tools/cli-args/args";
|
|
11
10
|
import { z } from "zod";
|
|
12
11
|
/** A process launched by the system-tray service host. */
|
|
13
12
|
export declare const CliServiceCommandSchema: z.ZodReadonly<z.ZodObject<{
|
|
@@ -20,13 +19,8 @@ export declare const CliServiceCommandSchema: z.ZodReadonly<z.ZodObject<{
|
|
|
20
19
|
}, z.core.$strip>>;
|
|
21
20
|
/** A process launched by the system-tray service host. */
|
|
22
21
|
export type CliServiceCommand = z.infer<typeof CliServiceCommandSchema>;
|
|
23
|
-
/** Command input accepted by {@link defineService}
|
|
24
|
-
export type CliServiceCommandInput =
|
|
25
|
-
/** Positional or pre-serialized arguments placed before generated options. */
|
|
26
|
-
readonly arguments?: readonly string[];
|
|
27
|
-
/** Zod defaults or concrete option values converted into CLI flags. */
|
|
28
|
-
readonly options?: ArgumentSource;
|
|
29
|
-
};
|
|
22
|
+
/** Command input accepted by {@link defineService}. */
|
|
23
|
+
export type CliServiceCommandInput = CliServiceCommand;
|
|
30
24
|
/** A typed custom item inserted between the default service title and Quit item. */
|
|
31
25
|
export declare const CliServiceMenuItemSchema: z.ZodDiscriminatedUnion<[z.ZodReadonly<z.ZodObject<{
|
|
32
26
|
type: z.ZodLiteral<"separator">;
|
package/lib/src/definition.js
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module
|
|
9
9
|
*/
|
|
10
|
-
import { serializeArgs } from "@dbx-tools/cli-args/args";
|
|
11
10
|
import { z } from "zod";
|
|
12
11
|
import { resolveServicePackage, servicePackageDefaults } from "./_package.js";
|
|
13
12
|
import { serviceTrayIcon } from "./icon.js";
|
|
@@ -119,19 +118,13 @@ export function defineService(packageReference, options) {
|
|
|
119
118
|
function resolveServiceCommand(command) {
|
|
120
119
|
if (!command)
|
|
121
120
|
return undefined;
|
|
122
|
-
const { options, ...definition } = command;
|
|
123
|
-
const arguments_ = [
|
|
124
|
-
...(definition.arguments ?? []),
|
|
125
|
-
...(options === undefined ? [] : serializeArgs(options)),
|
|
126
|
-
];
|
|
127
121
|
return CliServiceCommandSchema.parse({
|
|
128
|
-
...
|
|
129
|
-
environment: { NODE_ENV: "production", ...
|
|
130
|
-
...(arguments_.length > 0 ? { arguments: arguments_ } : {}),
|
|
122
|
+
...command,
|
|
123
|
+
environment: { NODE_ENV: "production", ...command.environment },
|
|
131
124
|
});
|
|
132
125
|
}
|
|
133
126
|
/** Resolve a package's single or explicitly named executable entrypoint. */
|
|
134
127
|
export function resolveServicePackageBin(packageReference, binName) {
|
|
135
128
|
return resolveServicePackage(packageReference).bin(binName);
|
|
136
129
|
}
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFFLGFBQWEsRUFBdUIsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTVDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFFbkUsU0FBUyxTQUFTLENBQUMsS0FBYTtJQUM5QixJQUFJLENBQUM7UUFDSCxPQUFPLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVELDBEQUEwRDtBQUMxRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDO0tBQ3JDLE1BQU0sQ0FBQztJQUNOLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUN4QyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDeEMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ3JDLFNBQVMsRUFBRSxDQUFDLENBQUMsS0FB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VSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDNUQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELDRFQUE0RTtBQUM1RSxNQUFNLFVBQVUsd0JBQXdCLENBQUMsZ0JBQXdCLEVBQUUsT0FBZ0I7SUFDakYsT0FBTyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZXJpYWxpemFibGUgY29uZmlndXJhdGlvbiBmb3IgYSBzeXN0ZW0tdHJheSBDTEkgc2VydmljZS5cbiAqXG4gKiBUaGlzIG1vZHVsZSBvd25zIHRoZSBjcm9zcy1wYWNrYWdlIHNlcnZpY2UgZGVmaW5pdGlvbiBjb250cmFjdCwgcGFja2FnZVxuICogaWRlbnRpdHkgZGVmYXVsdHMsIHByb2Nlc3MgY29tbWFuZCwgaWNvbiwgYW5kIG1lbnUgc2NoZW1hLiBSZXVzZVxuICoge0BsaW5rIGRlZmluZVNlcnZpY2V9IGluc3RlYWQgb2YgbWFpbnRhaW5pbmcgYW5vdGhlciBzZXJ2aWNlIG1hbmlmZXN0IHNoYXBlLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBzZXJpYWxpemVBcmdzLCB0eXBlIEFyZ3VtZW50U291cmNlIH0gZnJvbSBcIkBkYngtdG9vbHMvY2xpLWFyZ3MvYXJnc1wiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgcmVzb2x2ZVNlcnZpY2VQYWNrYWdlLCBzZXJ2aWNlUGFja2FnZURlZmF1bHRzIH0gZnJvbSBcIi4vX3BhY2thZ2UudHNcIjtcbmltcG9ydCB7IHNlcnZpY2VUcmF5SWNvbiB9IGZyb20gXCIuL2ljb24udHNcIjtcblxuY29uc3QgU0FGRV9VUkxfUFJPVE9DT0xTID0gbmV3IFNldChbXCJodHRwOlwiLCBcImh0dHBzOlwiLCBcIm1haWx0bzpcIl0pO1xuXG5mdW5jdGlvbiBpc1NhZmVVcmwodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiBTQUZFX1VSTF9QUk9UT0NPTFMuaGFzKG5ldyBVUkwodmFsdWUpLnByb3RvY29sKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKiBBIHByb2Nlc3MgbGF1bmNoZWQgYnkgdGhlIHN5c3RlbS10cmF5IHNlcnZpY2UgaG9zdC4gKi9cbmV4cG9ydCBjb25zdCBDbGlTZXJ2aWNlQ29tbWFuZFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgZXhlY3V0YWJsZTogei5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgICBlbnRyeXBvaW50OiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICAgIGJpbk5hbWU6IHouc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCksXG4gICAgYXJndW1lbnRzOiB6LmFycmF5KHouc3RyaW5nKCkpLnJlYWRvbmx5KCkub3B0aW9uYWwoKSxcbiAgICBlbnZpcm9ubWVudDogei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKSkucmVhZG9ubHkoKS5vcHRpb25hbCgpLFxuICAgIGN3ZDogei5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN1cGVyUmVmaW5lKChjb21tYW5kLCBjb250ZXh0KSA9PiB7XG4gICAgaWYgKFxuICAgICAgTnVtYmVyKGNvbW1hbmQuZXhlY3V0YWJsZSAhPT0gdW5kZWZpbmVkKSArXG4gICAgICAgIE51bWJlcihjb21tYW5kLmVudHJ5cG9pbnQgIT09IHVuZGVmaW5lZCkgK1xuICAgICAgICBOdW1iZXIoY29tbWFuZC5iaW5OYW1lICE9PSB1bmRlZmluZWQpID5cbiAgICAgIDFcbiAgICApIHtcbiAgICAgIGNvbnRleHQuYWRkSXNzdWUoe1xuICAgICAgICBjb2RlOiBcImN1c3RvbVwiLFxuICAgICAgICBtZXNzYWdlOiBcImNvbW1hbmQgYWNjZXB0cyBhdCBtb3N0IG9uZSBvZiBleGVjdXRhYmxlLCBlbnRyeXBvaW50LCBvciBiaW5OYW1lXCIsXG4gICAgICB9KTtcbiAgICB9XG4gIH0pXG4gIC5yZWFkb25seSgpO1xuXG4vKiogQSBwcm9jZXNzIGxhdW5jaGVkIGJ5IHRoZSBzeXN0ZW0tdHJheSBzZXJ2aWNlIGhvc3QuICovXG5leHBvcnQgdHlwZSBDbGlTZXJ2aWNlQ29tbWFuZCA9IHouaW5mZXI8dHlwZW9mIENsaVNlcnZpY2VDb21tYW5kU2NoZW1hPjtcblxuLyoqIENvbW1hbmQgaW5wdXQgYWNjZXB0ZWQgYnkge0BsaW5rIGRlZmluZVNlcnZpY2V9IGJlZm9yZSBvcHRpb24gc2VyaWFsaXphdGlvbi4gKi9cbmV4cG9ydCB0eXBlIENsaVNlcnZpY2VDb21tYW5kSW5wdXQgPSBPbWl0PENsaVNlcnZpY2VDb21tYW5kLCBcImFyZ3VtZW50c1wiPiAmIHtcbiAgLyoqIFBvc2l0aW9uYWwgb3IgcHJlLXNlcmlhbGl6ZWQgYXJndW1lbnRzIHBsYWNlZCBiZWZvcmUgZ2VuZXJhdGVkIG9wdGlvbnMuICovXG4gIHJlYWRvbmx5IGFyZ3VtZW50cz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogWm9kIGRlZmF1bHRzIG9yIGNvbmNyZXRlIG9wdGlvbiB2YWx1ZXMgY29udmVydGVkIGludG8gQ0xJIGZsYWdzLiAqL1xuICByZWFkb25seSBvcHRpb25zPzogQXJndW1lbnRTb3VyY2U7XG59O1xuXG4vKiogQSB0eXBlZCBjdXN0b20gaXRlbSBpbnNlcnRlZCBiZXR3ZWVuIHRoZSBkZWZhdWx0IHNlcnZpY2UgdGl0bGUgYW5kIFF1aXQgaXRlbS4gKi9cbmV4cG9ydCBjb25zdCBDbGlTZXJ2aWNlTWVudUl0ZW1TY2hlbWEgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICB6Lm9iamVjdCh7IHR5cGU6IHoubGl0ZXJhbChcInNlcGFyYXRvclwiKSB9KS5yZWFkb25seSgpLFxuICB6XG4gICAgLm9iamVjdCh7XG4gICAgICB0eXBlOiB6LmxpdGVyYWwoXCJ1cmxcIiksXG4gICAgICBsYWJlbDogei5zdHJpbmcoKS5taW4oMSksXG4gICAgICB1cmw6IHouc3RyaW5nKCkucmVmaW5lKGlzU2FmZVVybCwgXCJVUkwgbXVzdCB1c2UgSFRUUCwgSFRUUFMsIG9yIG1haWx0b1wiKSxcbiAgICB9KVxuICAgIC5yZWFkb25seSgpLFxuICB6XG4gICAgLm9iamVjdCh7XG4gICAgICB0eXBlOiB6LmxpdGVyYWwoXCJjb21tYW5kXCIpLFxuICAgICAgbGFiZWw6IHouc3RyaW5nKCkubWluKDEpLFxuICAgICAgY29tbWFuZDogQ2xpU2VydmljZUNvbW1hbmRTY2hlbWEsXG4gICAgfSlcbiAgICAucmVhZG9ubHkoKSxcbl0pO1xuXG4vKiogQSB0eXBlZCBjdXN0b20gaXRlbSBpbnNlcnRlZCBiZXR3ZWVuIHRoZSBkZWZhdWx0IHNlcnZpY2UgdGl0bGUgYW5kIFF1aXQgaXRlbS4gKi9cbmV4cG9ydCB0eXBlIENsaVNlcnZpY2VNZW51SXRlbSA9IHouaW5mZXI8dHlwZW9mIENsaVNlcnZpY2VNZW51SXRlbVNjaGVtYT47XG5cbi8qKiBQeXRob24gcGFja2FnZSBpbnN0YWxsZWQgaW50byBhIHNlcnZpY2Utb3duZWQgdXYgZW52aXJvbm1lbnQuICovXG5leHBvcnQgY29uc3QgQ2xpU2VydmljZVB5dGhvblBhY2thZ2VTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG5hbWU6IHouc3RyaW5nKCkubWluKDEpLmRlc2NyaWJlKFwiUHl0aG9uIGRpc3RyaWJ1dGlvbiBuYW1lIGluc3RhbGxlZCBieSB1di5cIiksXG4gICAgdmVyc2lvbjogelxuICAgICAgLnN0cmluZygpXG4gICAgICAubWluKDEpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiUHl0aG9uIGRpc3RyaWJ1dGlvbiB2ZXJzaW9uLiBEZWZhdWx0cyB0byB0aGUgc2VydmljZSBwYWNrYWdlIHZlcnNpb24uXCIpLFxuICAgIHB5dGhvbjogelxuICAgICAgLnN0cmluZygpXG4gICAgICAubWluKDEpXG4gICAgICAuZGVmYXVsdChcIjMuMTFcIilcbiAgICAgIC5kZXNjcmliZShcIlB5dGhvbiB2ZXJzaW9uIHJlcXVlc3QgcGFzc2VkIHRvIHV2IHdoZW4gY3JlYXRpbmcgdGhlIGVudmlyb25tZW50LlwiKSxcbiAgICBkZXBlbmRlbmNpZXM6IHpcbiAgICAgIC5hcnJheSh6LnN0cmluZygpLm1pbigxKSlcbiAgICAgIC5kZWZhdWx0KFtdKVxuICAgICAgLmRlc2NyaWJlKFwiQWRkaXRpb25hbCB1diBwYWNrYWdlIHNwZWNzIGluc3RhbGxlZCBiZXNpZGUgdGhlIHByaW1hcnkgZGlzdHJpYnV0aW9uLlwiKSxcbiAgfSlcbiAgLnJlYWRvbmx5KClcbiAgLmRlc2NyaWJlKFwiUHl0aG9uIHJ1bnRpbWUgcGFja2FnZSBpbnN0YWxsZWQgd2l0aCB1diBmb3IgYSBtYW5hZ2VkIHNlcnZpY2UuXCIpO1xuXG4vKiogUHl0aG9uIHBhY2thZ2UgaW5zdGFsbGVkIGludG8gYSBzZXJ2aWNlLW93bmVkIHV2IGVudmlyb25tZW50LiAqL1xuZXhwb3J0IHR5cGUgQ2xpU2VydmljZVB5dGhvblBhY2thZ2UgPSB6LmluZmVyPHR5cGVvZiBDbGlTZXJ2aWNlUHl0aG9uUGFja2FnZVNjaGVtYT47XG5cbi8qKiBQeXRob24gcGFja2FnZSBpbnB1dCBhY2NlcHRlZCBiZWZvcmUgdGhlIGRlZmF1bHQgUHl0aG9uIHZlcnNpb24gaXMgYXBwbGllZC4gKi9cbmV4cG9ydCB0eXBlIENsaVNlcnZpY2VQeXRob25QYWNrYWdlSW5wdXQgPSB6LmlucHV0PHR5cGVvZiBDbGlTZXJ2aWNlUHl0aG9uUGFja2FnZVNjaGVtYT47XG5cbi8qKiBDb21wbGV0ZSBzZXJpYWxpemFibGUgZGVmaW5pdGlvbiBjb25zdW1lZCBieSB0aGUgbGlmZWN5Y2xlIG1hbmFnZXIgYW5kIHRyYXkgaG9zdC4gKi9cbmV4cG9ydCBjb25zdCBDbGlTZXJ2aWNlRGVmaW5pdGlvblNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgaWQ6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLm1pbigxKVxuICAgICAgLm1heCgxMjgpXG4gICAgICAucmVnZXgoL15bYS16MC05XVthLXowLTkuXy1dKiQvLCBcInNlcnZpY2UgaWQgbXVzdCBiZSBmaWxlc3lzdGVtIHNhZmVcIiksXG4gICAgbmFtZTogei5zdHJpbmcoKS5taW4oMSksXG4gICAgcGFja2FnZU5hbWU6IHouc3RyaW5nKCkubWluKDEpLFxuICAgIHZlcnNpb246IHouc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCksXG4gICAgaWNvbjogei5zdHJpbmcoKS5taW4oMSksXG4gICAgaXNUZW1wbGF0ZUljb246IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgZGF0YURpcmVjdG9yeTogei5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgICBweXRob25QYWNrYWdlOiBDbGlTZXJ2aWNlUHl0aG9uUGFja2FnZVNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFxuICAgICAgXCJQeXRob24gcnVudGltZSBwYWNrYWdlIGluc3RhbGxlZCBpbnRvIGEgc2VydmljZS1vd25lZCB1diBlbnZpcm9ubWVudC5cIixcbiAgICApLFxuICAgIGNvbW1hbmQ6IENsaVNlcnZpY2VDb21tYW5kU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgbWVudTogei5hcnJheShDbGlTZXJ2aWNlTWVudUl0ZW1TY2hlbWEpLnJlYWRvbmx5KCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnJlYWRvbmx5KCk7XG5cbi8qKiBDb21wbGV0ZSBzZXJpYWxpemFibGUgZGVmaW5pdGlvbiBjb25zdW1lZCBieSB0aGUgbGlmZWN5Y2xlIG1hbmFnZXIgYW5kIHRyYXkgaG9zdC4gKi9cbmV4cG9ydCB0eXBlIENsaVNlcnZpY2VEZWZpbml0aW9uID0gei5pbmZlcjx0eXBlb2YgQ2xpU2VydmljZURlZmluaXRpb25TY2hlbWE+O1xuXG4vKiogUGFja2FnZS1kZXJpdmVkIHNlcnZpY2UgZmllbGRzIHBsdXMgY2FsbGVyLW93bmVkIGljb24sIHByb2Nlc3MsIGFuZCBtZW51IG9wdGlvbnMuICovXG5leHBvcnQgdHlwZSBDbGlTZXJ2aWNlRGVmaW5pdGlvbk9wdGlvbnMgPSBPbWl0PFxuICBDbGlTZXJ2aWNlRGVmaW5pdGlvbixcbiAgfCBcInBhY2thZ2VOYW1lXCJcbiAgfCBcImlkXCJcbiAgfCBcIm5hbWVcIlxuICB8IFwidmVyc2lvblwiXG4gIHwgXCJpY29uXCJcbiAgfCBcImlzVGVtcGxhdGVJY29uXCJcbiAgfCBcInB5dGhvblBhY2thZ2VcIlxuICB8IFwiY29tbWFuZFwiXG4+ICZcbiAgUGFydGlhbDxQaWNrPENsaVNlcnZpY2VEZWZpbml0aW9uLCBcImlkXCIgfCBcIm5hbWVcIiB8IFwidmVyc2lvblwiIHwgXCJpY29uXCIgfCBcImlzVGVtcGxhdGVJY29uXCI+PiAmIHtcbiAgICAvKiogUHl0aG9uIHBhY2thZ2UgaW5zdGFsbGVkIGludG8gYSBzZXJ2aWNlLW93bmVkIHV2IGVudmlyb25tZW50LiAqL1xuICAgIHJlYWRvbmx5IHB5dGhvblBhY2thZ2U/OiBDbGlTZXJ2aWNlUHl0aG9uUGFja2FnZUlucHV0O1xuICAgIC8qKiBTZXJ2aWNlIHByb2Nlc3MgY29tbWFuZCB3aXRoIG9wdGlvbmFsIHNjaGVtYSBvciBvYmplY3QtYmFja2VkIG9wdGlvbnMuICovXG4gICAgcmVhZG9ubHkgY29tbWFuZD86IENsaVNlcnZpY2VDb21tYW5kSW5wdXQ7XG4gIH07XG5cbi8qKiBEZWZpbmUgYSBzZXJ2aWNlIGZyb20gYW4gb3duaW5nIG1vZHVsZSBVUkwgb3IgaW5zdGFsbGVkIHBhY2thZ2UgbmFtZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVTZXJ2aWNlKFxuICBwYWNrYWdlUmVmZXJlbmNlOiBzdHJpbmcsXG4gIG9wdGlvbnM6IENsaVNlcnZpY2VEZWZpbml0aW9uT3B0aW9ucyxcbik6IENsaVNlcnZpY2VEZWZpbml0aW9uIHtcbiAgY29uc3QgcGtnID0gcmVzb2x2ZVNlcnZpY2VQYWNrYWdlKHBhY2thZ2VSZWZlcmVuY2UpO1xuICBjb25zdCBkZWZhdWx0cyA9IHNlcnZpY2VQYWNrYWdlRGVmYXVsdHMocGtnKTtcbiAgY29uc3QgeyBjb21tYW5kLCAuLi5kZWZpbml0aW9uIH0gPSBvcHRpb25zO1xuICByZXR1cm4gQ2xpU2VydmljZURlZmluaXRpb25TY2hlbWEucGFyc2Uoe1xuICAgIC4uLmRlZmluaXRpb24sXG4gICAgY29tbWFuZDogcmVzb2x2ZVNlcnZpY2VDb21tYW5kKGNvbW1hbmQpLFxuICAgIHBhY2thZ2VOYW1lOiBwa2cubmFtZSxcbiAgICBpZDogZGVmaW5pdGlvbi5pZCA/PyBkZWZhdWx0cy5pZCxcbiAgICBuYW1lOiBkZWZpbml0aW9uLm5hbWUgPz8gZGVmYXVsdHMubmFtZSxcbiAgICB2ZXJzaW9uOiBkZWZpbml0aW9uLnZlcnNpb24gPz8gcGtnLnZlcnNpb24sXG4gICAgaWNvbjogZGVmaW5pdGlvbi5pY29uID8/IHNlcnZpY2VUcmF5SWNvbigpLFxuICAgIGlzVGVtcGxhdGVJY29uOiBkZWZpbml0aW9uLmlzVGVtcGxhdGVJY29uID8/IHByb2Nlc3MucGxhdGZvcm0gPT09IFwiZGFyd2luXCIsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlU2VydmljZUNvbW1hbmQoXG4gIGNvbW1hbmQ6IENsaVNlcnZpY2VDb21tYW5kSW5wdXQgfCB1bmRlZmluZWQsXG4pOiBDbGlTZXJ2aWNlQ29tbWFuZCB8IHVuZGVmaW5lZCB7XG4gIGlmICghY29tbWFuZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgeyBvcHRpb25zLCAuLi5kZWZpbml0aW9uIH0gPSBjb21tYW5kO1xuICBjb25zdCBhcmd1bWVudHNfID0gW1xuICAgIC4uLihkZWZpbml0aW9uLmFyZ3VtZW50cyA/PyBbXSksXG4gICAgLi4uKG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/IFtdIDogc2VyaWFsaXplQXJncyhvcHRpb25zKSksXG4gIF07XG4gIHJldHVybiBDbGlTZXJ2aWNlQ29tbWFuZFNjaGVtYS5wYXJzZSh7XG4gICAgLi4uZGVmaW5pdGlvbixcbiAgICBlbnZpcm9ubWVudDogeyBOT0RFX0VOVjogXCJwcm9kdWN0aW9uXCIsIC4uLmRlZmluaXRpb24uZW52aXJvbm1lbnQgfSxcbiAgICAuLi4oYXJndW1lbnRzXy5sZW5ndGggPiAwID8geyBhcmd1bWVudHM6IGFyZ3VtZW50c18gfSA6IHt9KSxcbiAgfSk7XG59XG5cbi8qKiBSZXNvbHZlIGEgcGFja2FnZSdzIHNpbmdsZSBvciBleHBsaWNpdGx5IG5hbWVkIGV4ZWN1dGFibGUgZW50cnlwb2ludC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlU2VydmljZVBhY2thZ2VCaW4ocGFja2FnZVJlZmVyZW5jZTogc3RyaW5nLCBiaW5OYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlc29sdmVTZXJ2aWNlUGFja2FnZShwYWNrYWdlUmVmZXJlbmNlKS5iaW4oYmluTmFtZSk7XG59XG4iXX0=
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU1QyxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBRW5FLFNBQVMsU0FBUyxDQUFDLEtBQWE7SUFDOUIsSUFBSSxDQUFDO1FBQ0gsT0FBTyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRCwwREFBMEQ7QUFDMUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQztLQUNyQyxNQUFNLENBQUM7SUFDTixVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDeEMsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ3hDLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUNyQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVB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LFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUMzQyxPQUFPLDBCQUEwQixDQUFDLEtBQUssQ0FBQztRQUN0QyxHQUFHLFVBQVU7UUFDYixPQUFPLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDO1FBQ3ZDLFdBQVcsRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNyQixFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRTtRQUNoQyxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSTtRQUN0QyxPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsT0FBTztRQUMxQyxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksSUFBSSxlQUFlLEVBQUU7UUFDMUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxjQUFjLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRO0tBQzNFLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUM1QixPQUEyQztJQUUzQyxJQUFJLENBQUMsT0FBTztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQy9CLE9BQU8sdUJBQXVCLENBQUMsS0FBSyxDQUFDO1FBQ25DLEdBQUcsT0FBTztRQUNWLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFO0tBQ2hFLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCw0RUFBNEU7QUFDNUUsTUFBTSxVQUFVLHdCQUF3QixDQUFDLGdCQUF3QixFQUFFLE9BQWdCO0lBQ2pGLE9BQU8scUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2VyaWFsaXphYmxlIGNvbmZpZ3VyYXRpb24gZm9yIGEgc3lzdGVtLXRyYXkgQ0xJIHNlcnZpY2UuXG4gKlxuICogVGhpcyBtb2R1bGUgb3ducyB0aGUgY3Jvc3MtcGFja2FnZSBzZXJ2aWNlIGRlZmluaXRpb24gY29udHJhY3QsIHBhY2thZ2VcbiAqIGlkZW50aXR5IGRlZmF1bHRzLCBwcm9jZXNzIGNvbW1hbmQsIGljb24sIGFuZCBtZW51IHNjaGVtYS4gUmV1c2VcbiAqIHtAbGluayBkZWZpbmVTZXJ2aWNlfSBpbnN0ZWFkIG9mIG1haW50YWluaW5nIGFub3RoZXIgc2VydmljZSBtYW5pZmVzdCBzaGFwZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgcmVzb2x2ZVNlcnZpY2VQYWNrYWdlLCBzZXJ2aWNlUGFja2FnZURlZmF1bHRzIH0gZnJvbSBcIi4vX3BhY2thZ2UudHNcIjtcbmltcG9ydCB7IHNlcnZpY2VUcmF5SWNvbiB9IGZyb20gXCIuL2ljb24udHNcIjtcblxuY29uc3QgU0FGRV9VUkxfUFJPVE9DT0xTID0gbmV3IFNldChbXCJodHRwOlwiLCBcImh0dHBzOlwiLCBcIm1haWx0bzpcIl0pO1xuXG5mdW5jdGlvbiBpc1NhZmVVcmwodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiBTQUZFX1VSTF9QUk9UT0NPTFMuaGFzKG5ldyBVUkwodmFsdWUpLnByb3RvY29sKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKiBBIHByb2Nlc3MgbGF1bmNoZWQgYnkgdGhlIHN5c3RlbS10cmF5IHNlcnZpY2UgaG9zdC4gKi9cbmV4cG9ydCBjb25zdCBDbGlTZXJ2aWNlQ29tbWFuZFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgZXhlY3V0YWJsZTogei5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgICBlbnRyeXBvaW50OiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICAgIGJpbk5hbWU6IHouc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCksXG4gICAgYXJndW1lbnRzOiB6LmFycmF5KHouc3RyaW5nKCkpLnJlYWRvbmx5KCkub3B0aW9uYWwoKSxcbiAgICBlbnZpcm9ubWVudDogei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKSkucmVhZG9ubHkoKS5vcHRpb25hbCgpLFxuICAgIGN3ZDogei5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN1cGVyUmVmaW5lKChjb21tYW5kLCBjb250ZXh0KSA9PiB7XG4gICAgaWYgKFxuICAgICAgTnVtYmVyKGNvbW1hbmQuZXhlY3V0YWJsZSAhPT0gdW5kZWZpbmVkKSArXG4gICAgICAgIE51bWJlcihjb21tYW5kLmVudHJ5cG9pbnQgIT09IHVuZGVmaW5lZCkgK1xuICAgICAgICBOdW1iZXIoY29tbWFuZC5iaW5OYW1lICE9PSB1bmRlZmluZWQpID5cbiAgICAgIDFcbiAgICApIHtcbiAgICAgIGNvbnRleHQuYWRkSXNzdWUoe1xuICAgICAgICBjb2RlOiBcImN1c3RvbVwiLFxuICAgICAgICBtZXNzYWdlOiBcImNvbW1hbmQgYWNjZXB0cyBhdCBtb3N0IG9uZSBvZiBleGVjdXRhYmxlLCBlbnRyeXBvaW50LCBvciBiaW5OYW1lXCIsXG4gICAgICB9KTtcbiAgICB9XG4gIH0pXG4gIC5yZWFkb25seSgpO1xuXG4vKiogQSBwcm9jZXNzIGxhdW5jaGVkIGJ5IHRoZSBzeXN0ZW0tdHJheSBzZXJ2aWNlIGhvc3QuICovXG5leHBvcnQgdHlwZSBDbGlTZXJ2aWNlQ29tbWFuZCA9IHouaW5mZXI8dHlwZW9mIENsaVNlcnZpY2VDb21tYW5kU2NoZW1hPjtcblxuLyoqIENvbW1hbmQgaW5wdXQgYWNjZXB0ZWQgYnkge0BsaW5rIGRlZmluZVNlcnZpY2V9LiAqL1xuZXhwb3J0IHR5cGUgQ2xpU2VydmljZUNvbW1hbmRJbnB1dCA9IENsaVNlcnZpY2VDb21tYW5kO1xuXG4vKiogQSB0eXBlZCBjdXN0b20gaXRlbSBpbnNlcnRlZCBiZXR3ZWVuIHRoZSBkZWZhdWx0IHNlcnZpY2UgdGl0bGUgYW5kIFF1aXQgaXRlbS4gKi9cbmV4cG9ydCBjb25zdCBDbGlTZXJ2aWNlTWVudUl0ZW1TY2hlbWEgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICB6Lm9iamVjdCh7IHR5cGU6IHoubGl0ZXJhbChcInNlcGFyYXRvclwiKSB9KS5yZWFkb25seSgpLFxuICB6XG4gICAgLm9iamVjdCh7XG4gICAgICB0eXBlOiB6LmxpdGVyYWwoXCJ1cmxcIiksXG4gICAgICBsYWJlbDogei5zdHJpbmcoKS5taW4oMSksXG4gICAgICB1cmw6IHouc3RyaW5nKCkucmVmaW5lKGlzU2FmZVVybCwgXCJVUkwgbXVzdCB1c2UgSFRUUCwgSFRUUFMsIG9yIG1haWx0b1wiKSxcbiAgICB9KVxuICAgIC5yZWFkb25seSgpLFxuICB6XG4gICAgLm9iamVjdCh7XG4gICAgICB0eXBlOiB6LmxpdGVyYWwoXCJjb21tYW5kXCIpLFxuICAgICAgbGFiZWw6IHouc3RyaW5nKCkubWluKDEpLFxuICAgICAgY29tbWFuZDogQ2xpU2VydmljZUNvbW1hbmRTY2hlbWEsXG4gICAgfSlcbiAgICAucmVhZG9ubHkoKSxcbl0pO1xuXG4vKiogQSB0eXBlZCBjdXN0b20gaXRlbSBpbnNlcnRlZCBiZXR3ZWVuIHRoZSBkZWZhdWx0IHNlcnZpY2UgdGl0bGUgYW5kIFF1aXQgaXRlbS4gKi9cbmV4cG9ydCB0eXBlIENsaVNlcnZpY2VNZW51SXRlbSA9IHouaW5mZXI8dHlwZW9mIENsaVNlcnZpY2VNZW51SXRlbVNjaGVtYT47XG5cbi8qKiBQeXRob24gcGFja2FnZSBpbnN0YWxsZWQgaW50byBhIHNlcnZpY2Utb3duZWQgdXYgZW52aXJvbm1lbnQuICovXG5leHBvcnQgY29uc3QgQ2xpU2VydmljZVB5dGhvblBhY2thZ2VTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG5hbWU6IHouc3RyaW5nKCkubWluKDEpLmRlc2NyaWJlKFwiUHl0aG9uIGRpc3RyaWJ1dGlvbiBuYW1lIGluc3RhbGxlZCBieSB1di5cIiksXG4gICAgdmVyc2lvbjogelxuICAgICAgLnN0cmluZygpXG4gICAgICAubWluKDEpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiUHl0aG9uIGRpc3RyaWJ1dGlvbiB2ZXJzaW9uLiBEZWZhdWx0cyB0byB0aGUgc2VydmljZSBwYWNrYWdlIHZlcnNpb24uXCIpLFxuICAgIHB5dGhvbjogelxuICAgICAgLnN0cmluZygpXG4gICAgICAubWluKDEpXG4gICAgICAuZGVmYXVsdChcIjMuMTFcIilcbiAgICAgIC5kZXNjcmliZShcIlB5dGhvbiB2ZXJzaW9uIHJlcXVlc3QgcGFzc2VkIHRvIHV2IHdoZW4gY3JlYXRpbmcgdGhlIGVudmlyb25tZW50LlwiKSxcbiAgICBkZXBlbmRlbmNpZXM6IHpcbiAgICAgIC5hcnJheSh6LnN0cmluZygpLm1pbigxKSlcbiAgICAgIC5kZWZhdWx0KFtdKVxuICAgICAgLmRlc2NyaWJlKFwiQWRkaXRpb25hbCB1diBwYWNrYWdlIHNwZWNzIGluc3RhbGxlZCBiZXNpZGUgdGhlIHByaW1hcnkgZGlzdHJpYnV0aW9uLlwiKSxcbiAgfSlcbiAgLnJlYWRvbmx5KClcbiAgLmRlc2NyaWJlKFwiUHl0aG9uIHJ1bnRpbWUgcGFja2FnZSBpbnN0YWxsZWQgd2l0aCB1diBmb3IgYSBtYW5hZ2VkIHNlcnZpY2UuXCIpO1xuXG4vKiogUHl0aG9uIHBhY2thZ2UgaW5zdGFsbGVkIGludG8gYSBzZXJ2aWNlLW93bmVkIHV2IGVudmlyb25tZW50LiAqL1xuZXhwb3J0IHR5cGUgQ2xpU2VydmljZVB5dGhvblBhY2thZ2UgPSB6LmluZmVyPHR5cGVvZiBDbGlTZXJ2aWNlUHl0aG9uUGFja2FnZVNjaGVtYT47XG5cbi8qKiBQeXRob24gcGFja2FnZSBpbnB1dCBhY2NlcHRlZCBiZWZvcmUgdGhlIGRlZmF1bHQgUHl0aG9uIHZlcnNpb24gaXMgYXBwbGllZC4gKi9cbmV4cG9ydCB0eXBlIENsaVNlcnZpY2VQeXRob25QYWNrYWdlSW5wdXQgPSB6LmlucHV0PHR5cGVvZiBDbGlTZXJ2aWNlUHl0aG9uUGFja2FnZVNjaGVtYT47XG5cbi8qKiBDb21wbGV0ZSBzZXJpYWxpemFibGUgZGVmaW5pdGlvbiBjb25zdW1lZCBieSB0aGUgbGlmZWN5Y2xlIG1hbmFnZXIgYW5kIHRyYXkgaG9zdC4gKi9cbmV4cG9ydCBjb25zdCBDbGlTZXJ2aWNlRGVmaW5pdGlvblNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgaWQ6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLm1pbigxKVxuICAgICAgLm1heCgxMjgpXG4gICAgICAucmVnZXgoL15bYS16MC05XVthLXowLTkuXy1dKiQvLCBcInNlcnZpY2UgaWQgbXVzdCBiZSBmaWxlc3lzdGVtIHNhZmVcIiksXG4gICAgbmFtZTogei5zdHJpbmcoKS5taW4oMSksXG4gICAgcGFja2FnZU5hbWU6IHouc3RyaW5nKCkubWluKDEpLFxuICAgIHZlcnNpb246IHouc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCksXG4gICAgaWNvbjogei5zdHJpbmcoKS5taW4oMSksXG4gICAgaXNUZW1wbGF0ZUljb246IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgZGF0YURpcmVjdG9yeTogei5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgICBweXRob25QYWNrYWdlOiBDbGlTZXJ2aWNlUHl0aG9uUGFja2FnZVNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFxuICAgICAgXCJQeXRob24gcnVudGltZSBwYWNrYWdlIGluc3RhbGxlZCBpbnRvIGEgc2VydmljZS1vd25lZCB1diBlbnZpcm9ubWVudC5cIixcbiAgICApLFxuICAgIGNvbW1hbmQ6IENsaVNlcnZpY2VDb21tYW5kU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgbWVudTogei5hcnJheShDbGlTZXJ2aWNlTWVudUl0ZW1TY2hlbWEpLnJlYWRvbmx5KCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnJlYWRvbmx5KCk7XG5cbi8qKiBDb21wbGV0ZSBzZXJpYWxpemFibGUgZGVmaW5pdGlvbiBjb25zdW1lZCBieSB0aGUgbGlmZWN5Y2xlIG1hbmFnZXIgYW5kIHRyYXkgaG9zdC4gKi9cbmV4cG9ydCB0eXBlIENsaVNlcnZpY2VEZWZpbml0aW9uID0gei5pbmZlcjx0eXBlb2YgQ2xpU2VydmljZURlZmluaXRpb25TY2hlbWE+O1xuXG4vKiogUGFja2FnZS1kZXJpdmVkIHNlcnZpY2UgZmllbGRzIHBsdXMgY2FsbGVyLW93bmVkIGljb24sIHByb2Nlc3MsIGFuZCBtZW51IG9wdGlvbnMuICovXG5leHBvcnQgdHlwZSBDbGlTZXJ2aWNlRGVmaW5pdGlvbk9wdGlvbnMgPSBPbWl0PFxuICBDbGlTZXJ2aWNlRGVmaW5pdGlvbixcbiAgfCBcInBhY2thZ2VOYW1lXCJcbiAgfCBcImlkXCJcbiAgfCBcIm5hbWVcIlxuICB8IFwidmVyc2lvblwiXG4gIHwgXCJpY29uXCJcbiAgfCBcImlzVGVtcGxhdGVJY29uXCJcbiAgfCBcInB5dGhvblBhY2thZ2VcIlxuICB8IFwiY29tbWFuZFwiXG4+ICZcbiAgUGFydGlhbDxQaWNrPENsaVNlcnZpY2VEZWZpbml0aW9uLCBcImlkXCIgfCBcIm5hbWVcIiB8IFwidmVyc2lvblwiIHwgXCJpY29uXCIgfCBcImlzVGVtcGxhdGVJY29uXCI+PiAmIHtcbiAgICAvKiogUHl0aG9uIHBhY2thZ2UgaW5zdGFsbGVkIGludG8gYSBzZXJ2aWNlLW93bmVkIHV2IGVudmlyb25tZW50LiAqL1xuICAgIHJlYWRvbmx5IHB5dGhvblBhY2thZ2U/OiBDbGlTZXJ2aWNlUHl0aG9uUGFja2FnZUlucHV0O1xuICAgIC8qKiBTZXJ2aWNlIHByb2Nlc3MgY29tbWFuZCB3aXRoIG9wdGlvbmFsIHNjaGVtYSBvciBvYmplY3QtYmFja2VkIG9wdGlvbnMuICovXG4gICAgcmVhZG9ubHkgY29tbWFuZD86IENsaVNlcnZpY2VDb21tYW5kSW5wdXQ7XG4gIH07XG5cbi8qKiBEZWZpbmUgYSBzZXJ2aWNlIGZyb20gYW4gb3duaW5nIG1vZHVsZSBVUkwgb3IgaW5zdGFsbGVkIHBhY2thZ2UgbmFtZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVTZXJ2aWNlKFxuICBwYWNrYWdlUmVmZXJlbmNlOiBzdHJpbmcsXG4gIG9wdGlvbnM6IENsaVNlcnZpY2VEZWZpbml0aW9uT3B0aW9ucyxcbik6IENsaVNlcnZpY2VEZWZpbml0aW9uIHtcbiAgY29uc3QgcGtnID0gcmVzb2x2ZVNlcnZpY2VQYWNrYWdlKHBhY2thZ2VSZWZlcmVuY2UpO1xuICBjb25zdCBkZWZhdWx0cyA9IHNlcnZpY2VQYWNrYWdlRGVmYXVsdHMocGtnKTtcbiAgY29uc3QgeyBjb21tYW5kLCAuLi5kZWZpbml0aW9uIH0gPSBvcHRpb25zO1xuICByZXR1cm4gQ2xpU2VydmljZURlZmluaXRpb25TY2hlbWEucGFyc2Uoe1xuICAgIC4uLmRlZmluaXRpb24sXG4gICAgY29tbWFuZDogcmVzb2x2ZVNlcnZpY2VDb21tYW5kKGNvbW1hbmQpLFxuICAgIHBhY2thZ2VOYW1lOiBwa2cubmFtZSxcbiAgICBpZDogZGVmaW5pdGlvbi5pZCA/PyBkZWZhdWx0cy5pZCxcbiAgICBuYW1lOiBkZWZpbml0aW9uLm5hbWUgPz8gZGVmYXVsdHMubmFtZSxcbiAgICB2ZXJzaW9uOiBkZWZpbml0aW9uLnZlcnNpb24gPz8gcGtnLnZlcnNpb24sXG4gICAgaWNvbjogZGVmaW5pdGlvbi5pY29uID8/IHNlcnZpY2VUcmF5SWNvbigpLFxuICAgIGlzVGVtcGxhdGVJY29uOiBkZWZpbml0aW9uLmlzVGVtcGxhdGVJY29uID8/IHByb2Nlc3MucGxhdGZvcm0gPT09IFwiZGFyd2luXCIsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlU2VydmljZUNvbW1hbmQoXG4gIGNvbW1hbmQ6IENsaVNlcnZpY2VDb21tYW5kSW5wdXQgfCB1bmRlZmluZWQsXG4pOiBDbGlTZXJ2aWNlQ29tbWFuZCB8IHVuZGVmaW5lZCB7XG4gIGlmICghY29tbWFuZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIENsaVNlcnZpY2VDb21tYW5kU2NoZW1hLnBhcnNlKHtcbiAgICAuLi5jb21tYW5kLFxuICAgIGVudmlyb25tZW50OiB7IE5PREVfRU5WOiBcInByb2R1Y3Rpb25cIiwgLi4uY29tbWFuZC5lbnZpcm9ubWVudCB9LFxuICB9KTtcbn1cblxuLyoqIFJlc29sdmUgYSBwYWNrYWdlJ3Mgc2luZ2xlIG9yIGV4cGxpY2l0bHkgbmFtZWQgZXhlY3V0YWJsZSBlbnRyeXBvaW50LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTZXJ2aWNlUGFja2FnZUJpbihwYWNrYWdlUmVmZXJlbmNlOiBzdHJpbmcsIGJpbk5hbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVzb2x2ZVNlcnZpY2VQYWNrYWdlKHBhY2thZ2VSZWZlcmVuY2UpLmJpbihiaW5OYW1lKTtcbn1cbiJdfQ==
|
package/lib/src/service.js
CHANGED
|
@@ -15,6 +15,7 @@ import { createRequire } from "node:module";
|
|
|
15
15
|
import { dirname, extname, join, resolve } from "node:path";
|
|
16
16
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
17
17
|
import * as bin from "@dbx-tools/core/bin";
|
|
18
|
+
import { asyncUtils } from "@dbx-tools/shared-core";
|
|
18
19
|
import { compileWithBun } from "./_compile.js";
|
|
19
20
|
import { readServiceDefinition, writeServiceDefinition } from "./_config.js";
|
|
20
21
|
import { requestServiceControl } from "./_control.js";
|
|
@@ -276,8 +277,8 @@ async function waitForState(read, expected, timeoutMilliseconds, message) {
|
|
|
276
277
|
while (Date.now() < deadline) {
|
|
277
278
|
if ((await read()) === expected)
|
|
278
279
|
return;
|
|
279
|
-
await
|
|
280
|
+
await asyncUtils.sleep(POLL_INTERVAL_MILLISECONDS);
|
|
280
281
|
}
|
|
281
282
|
throw new Error(message);
|
|
282
283
|
}
|
|
283
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLG1CQUFtQixHQUVwQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDJCQUEyQixFQUMzQixxQkFBcUIsR0FDdEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFDTCwwQkFBMEIsR0FJM0IsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixNQUFNLGtDQUFrQyxHQUFHLE1BQU0sQ0FBQztBQUNsRCxN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QixJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxLQUFLLFFBQVE7WUFBRSxPQUFPO1FBQ3hDLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEluc3RhbGwsIHN0YXJ0LCBzdG9wLCBhbmQgaW5zcGVjdCBhIHN5c3RlbS10cmF5IHVzZXIgc2VydmljZS5cbiAqXG4gKiBUaGlzIG1vZHVsZSBvd25zIGN1cnJlbnQtdXNlciBzZXJ2aWNlIGNvbXBpbGF0aW9uIGFuZCBsaWZlY3ljbGUgYWNyb3NzXG4gKiBjb25zdW1pbmcgQ0xJcy4gUmV1c2Uge0BsaW5rIENsaVNlcnZpY2V9IHJhdGhlciB0aGFuIGFkZGluZyBwcm9kdWN0LXNwZWNpZmljXG4gKiBpbnN0YWxsZXJzLCB1diBQeXRob24gZW52aXJvbm1lbnRzLCBzdGFydHVwIHJlZ2lzdHJhdGlvbiwgcnVudGltZVxuICogZGlyZWN0b3JpZXMsIG9yIGNvbnRyb2wgc29ja2V0cy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgc3Bhd24gfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IHJtIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGV4dG5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoLCBwYXRoVG9GaWxlVVJMIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5cbmltcG9ydCAqIGFzIGJpbiBmcm9tIFwiQGRieC10b29scy9jb3JlL2JpblwiO1xuaW1wb3J0IHsgY29tcGlsZVdpdGhCdW4gfSBmcm9tIFwiLi9fY29tcGlsZS50c1wiO1xuaW1wb3J0IHsgcmVhZFNlcnZpY2VEZWZpbml0aW9uLCB3cml0ZVNlcnZpY2VEZWZpbml0aW9uIH0gZnJvbSBcIi4vX2NvbmZpZy50c1wiO1xuaW1wb3J0IHsgcmVxdWVzdFNlcnZpY2VDb250cm9sIH0gZnJvbSBcIi4vX2NvbnRyb2wudHNcIjtcbmltcG9ydCB7IHJlc29sdmVTZXJ2aWNlUGFja2FnZSwgdHlwZSBTZXJ2aWNlUGFja2FnZSB9IGZyb20gXCIuL19wYWNrYWdlLnRzXCI7XG5pbXBvcnQge1xuICBkZWZhdWx0UnVudGltZUNvbnRleHQsXG4gIHJlc29sdmVTZXJ2aWNlUGF0aHMsXG4gIHR5cGUgU2VydmljZVJ1bnRpbWVDb250ZXh0LFxufSBmcm9tIFwiLi9fcGF0aHMudHNcIjtcbmltcG9ydCB7XG4gIGV4dGVybmFsUnVudGltZVBhY2thZ2VzLFxuICBpbnN0YWxsU2VydmljZVB5dGhvblBhY2thZ2UsXG4gIGluc3RhbGxTZXJ2aWNlUnVudGltZSxcbn0gZnJvbSBcIi4vX3J1bnRpbWUudHNcIjtcbmltcG9ydCB7IGluc3RhbGxTdGFydHVwLCByZW1vdmVTdGFydHVwLCB0eXBlIFNlcnZpY2VMYXVuY2ggfSBmcm9tIFwiLi9fc3RhcnR1cC50c1wiO1xuaW1wb3J0IHtcbiAgQ2xpU2VydmljZURlZmluaXRpb25TY2hlbWEsXG4gIHR5cGUgQ2xpU2VydmljZUNvbW1hbmQsXG4gIHR5cGUgQ2xpU2VydmljZURlZmluaXRpb24sXG4gIHR5cGUgQ2xpU2VydmljZU1lbnVJdGVtLFxufSBmcm9tIFwiLi9kZWZpbml0aW9uLnRzXCI7XG5cbmNvbnN0IERFRkFVTFRfU1RBUlRfVElNRU9VVF9NSUxMSVNFQ09ORFMgPSAxNV8wMDA7XG5jb25zdCBERUZBVUxUX1NUT1BfVElNRU9VVF9NSUxMSVNFQ09ORFMgPSAxMF8wMDA7XG5jb25zdCBQT0xMX0lOVEVSVkFMX01JTExJU0VDT05EUyA9IDEwMDtcblxuLyoqIENvbXBpbGUgb25lIFR5cGVTY3JpcHQgb3IgSmF2YVNjcmlwdCBlbnRyeXBvaW50IGludG8gYSBzdGFuZGFsb25lIGV4ZWN1dGFibGUuICovXG5leHBvcnQgdHlwZSBDbGlTZXJ2aWNlQ29tcGlsZXIgPSAoXG4gIGVudHJ5cG9pbnQ6IHN0cmluZyxcbiAgb3V0cHV0OiBzdHJpbmcsXG4gIHdvcmtpbmdEaXJlY3Rvcnk6IHN0cmluZyxcbiAgZXh0ZXJuYWw/OiByZWFkb25seSBzdHJpbmdbXSxcbikgPT4gUHJvbWlzZTx2b2lkPjtcblxuLyoqIEluc3RhbGwgZXhhY3QgZXh0ZXJuYWwgcnVudGltZSBkZXBlbmRlbmNpZXMgaW50byB0aGUgZGJ4LXRvb2xzIGhvbWUuICovXG5leHBvcnQgdHlwZSBDbGlTZXJ2aWNlUnVudGltZUluc3RhbGxlciA9IChcbiAgYnVuRXhlY3V0YWJsZTogc3RyaW5nLFxuICBkaXJlY3Rvcnk6IHN0cmluZyxcbiAgZGVwZW5kZW5jaWVzOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PixcbikgPT4gUHJvbWlzZTx2b2lkPjtcblxuLyoqIEluc3RhbGwgYSBQeXRob24gcGFja2FnZSBpbnRvIGEgc2VydmljZS1vd25lZCB1diBlbnZpcm9ubWVudC4gKi9cbmV4cG9ydCB0eXBlIENsaVNlcnZpY2VQeXRob25JbnN0YWxsZXIgPSAoXG4gIHV2RXhlY3V0YWJsZTogc3RyaW5nLFxuICBkaXJlY3Rvcnk6IHN0cmluZyxcbiAgcGFja2FnZVNwZWNpZmllcnM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBweXRob246IHN0cmluZyxcbiAgcGxhdGZvcm06IE5vZGVKUy5QbGF0Zm9ybSxcbikgPT4gUHJvbWlzZTxzdHJpbmc+O1xuXG4vKiogSG9zdCBydW50aW1lIG92ZXJyaWRlcyBmb3IgdGVzdHMsIGVtYmVkZGVkIGRpc3RyaWJ1dGlvbnMsIGFuZCBub25zdGFuZGFyZCBob21lcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpU2VydmljZVJ1bnRpbWVPcHRpb25zIHtcbiAgLyoqIE9wZXJhdGluZyBzeXN0ZW0gdXNlZCBmb3IgY29uZmlndXJhdGlvbiBhbmQgc3RhcnR1cCByZWdpc3RyYXRpb24uICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtPzogTm9kZUpTLlBsYXRmb3JtO1xuICAvKiogRW52aXJvbm1lbnQgdXNlZCB0byBsb2NhdGUgcGxhdGZvcm0gY29uZmlndXJhdGlvbiBkaXJlY3Rvcmllcy4gKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBSZWFkb25seTxOb2RlSlMuUHJvY2Vzc0Vudj47XG4gIC8qKiBIb21lIGRpcmVjdG9yeSB1c2VkIHdoZW4gcGxhdGZvcm0gZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBhYnNlbnQuICovXG4gIHJlYWRvbmx5IGhvbWVEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIC8qKiBUZW1wb3JhcnkgZGlyZWN0b3J5IHVzZWQgZm9yIHRoZSBsb2NhbCBjb250cm9sIHNvY2tldC4gKi9cbiAgcmVhZG9ubHkgdGVtcG9yYXJ5RGlyZWN0b3J5Pzogc3RyaW5nO1xuICAvKiogU2hhcmVkIGRieC10b29scyBob21lIGNvbnRhaW5pbmcgaW5zdGFsbGVkIHNlcnZpY2UgYmluYXJpZXMuICovXG4gIHJlYWRvbmx5IGdsb2JhbEhvbWVEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIC8qKiBQYWNrYWdlLXByb3ZpZGVkIEJ1biBleGVjdXRhYmxlIG92ZXJyaWRlLiAqL1xuICByZWFkb25seSBidW5FeGVjdXRhYmxlPzogc3RyaW5nO1xuICAvKiogdXYgZXhlY3V0YWJsZSB1c2VkIGZvciBtYW5hZ2VkIFB5dGhvbiBwYWNrYWdlIGVudmlyb25tZW50cy4gKi9cbiAgcmVhZG9ubHkgdXZFeGVjdXRhYmxlPzogc3RyaW5nO1xuICAvKiogU3RhbmRhbG9uZSBjb21waWxlciBvdmVycmlkZS4gKi9cbiAgcmVhZG9ubHkgY29tcGlsZT86IENsaVNlcnZpY2VDb21waWxlcjtcbiAgLyoqIEV4dGVybmFsIHJ1bnRpbWUgZGVwZW5kZW5jeSBpbnN0YWxsZXIgb3ZlcnJpZGUuICovXG4gIHJlYWRvbmx5IGluc3RhbGxSdW50aW1lPzogQ2xpU2VydmljZVJ1bnRpbWVJbnN0YWxsZXI7XG4gIC8qKiBQeXRob24gcGFja2FnZSBpbnN0YWxsZXIgb3ZlcnJpZGUuICovXG4gIHJlYWRvbmx5IGluc3RhbGxQeXRob24/OiBDbGlTZXJ2aWNlUHl0aG9uSW5zdGFsbGVyO1xuICAvKiogU3lzdGVtLXRyYXkgaG9zdCBzb3VyY2UgZW50cnlwb2ludCBvdmVycmlkZS4gKi9cbiAgcmVhZG9ubHkgaG9zdEVudHJ5cG9pbnQ/OiBzdHJpbmc7XG4gIC8qKiBzeXN0cmF5MiBuYXRpdmUgZXhlY3V0YWJsZSBvdmVycmlkZS4gKi9cbiAgcmVhZG9ubHkgdHJheUV4ZWN1dGFibGU/OiBzdHJpbmc7XG59XG5cbi8qKiBPcHRpb25zIGNvbnRyb2xsaW5nIHNlcnZpY2UgaW5zdGFsbGF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbGlTZXJ2aWNlSW5zdGFsbE9wdGlvbnMge1xuICAvKiogU3RhcnQgdGhlIHNlcnZpY2UgaW1tZWRpYXRlbHkgYWZ0ZXIgd3JpdGluZyBpdHMgY29uZmlndXJhdGlvbiBhbmQgbG9naW4gZW50cnkuICovXG4gIHJlYWRvbmx5IHN0YXJ0PzogYm9vbGVhbjtcbn1cblxuLyoqIEN1cnJlbnQgaW5zdGFsbGF0aW9uIGFuZCBwcm9jZXNzIHN0YXRlIGZvciBhIHN5c3RlbS10cmF5IHNlcnZpY2UuICovXG5leHBvcnQgaW50ZXJmYWNlIENsaVNlcnZpY2VTdGF0dXMge1xuICAvKiogV2hldGhlciB0aGUgc2VyaWFsaXplZCBzZXJ2aWNlIGRlZmluaXRpb24gZXhpc3RzLiAqL1xuICByZWFkb25seSBpbnN0YWxsZWQ6IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSB0cmF5IGhvc3QgYW5zd2VyZWQgaXRzIGxvY2FsIGNvbnRyb2wgc29ja2V0LiAqL1xuICByZWFkb25seSBydW5uaW5nOiBib29sZWFuO1xuICAvKiogVHJheSBob3N0IHByb2Nlc3MgSUQgd2hlbiBydW5uaW5nLiAqL1xuICByZWFkb25seSBwaWQ/OiBudW1iZXI7XG4gIC8qKiBNYW5hZ2VkIGNoaWxkIHByb2Nlc3MgSUQgd2hlbiB0aGUgZGVmaW5pdGlvbiBpbmNsdWRlcyBhIGNvbW1hbmQuICovXG4gIHJlYWRvbmx5IHNlcnZpY2VQaWQ/OiBudW1iZXI7XG59XG5cbi8qKiBMaWZlY3ljbGUgY29udHJhY3QgY29uc3VtZWQgYnkgQ0xJIGNvbW1hbmQgYnVpbGRlcnMuICovXG5leHBvcnQgaW50ZXJmYWNlIENsaVNlcnZpY2VMaWZlY3ljbGUge1xuICAvKiogSW5zdGFsbCB0aGUgbG9naW4gZW50cnkgYW5kIG9wdGlvbmFsbHkgc3RhcnQgdGhlIHNlcnZpY2UuICovXG4gIGluc3RhbGwob3B0aW9ucz86IENsaVNlcnZpY2VJbnN0YWxsT3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gIC8qKiBTdGFydCB0aGUgaW5zdGFsbGVkIHNlcnZpY2Ugd2hlbiBpdCBpcyBub3QgYWxyZWFkeSBydW5uaW5nLiAqL1xuICBzdGFydCgpOiBQcm9taXNlPHZvaWQ+O1xuICAvKiogU3RvcCB0aGUgcnVubmluZyB0cmF5IGhvc3QgYW5kIGl0cyBtYW5hZ2VkIGNoaWxkIHByb2Nlc3MuICovXG4gIHN0b3AoKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqIFN0b3AgYW5kIHN0YXJ0IHRoZSBpbnN0YWxsZWQgc2VydmljZS4gKi9cbiAgcmVzdGFydCgpOiBQcm9taXNlPHZvaWQ+O1xuICAvKiogU3RvcCB0aGUgc2VydmljZSBhbmQgcmVtb3ZlIGl0cyBsb2dpbiBlbnRyeSBhbmQgcGFja2FnZS1vd25lZCBzdGF0ZS4gKi9cbiAgdW5pbnN0YWxsKCk6IFByb21pc2U8dm9pZD47XG4gIC8qKiBSZWFkIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBhbmQgcHJvY2VzcyBzdGF0ZS4gKi9cbiAgc3RhdHVzKCk6IFByb21pc2U8Q2xpU2VydmljZVN0YXR1cz47XG59XG5cbi8qKiBDcm9zcy1wbGF0Zm9ybSBsaWZlY3ljbGUgbWFuYWdlciBmb3Igb25lIHN5c3RlbS10cmF5IHVzZXIgc2VydmljZS4gKi9cbmV4cG9ydCBjbGFzcyBDbGlTZXJ2aWNlIGltcGxlbWVudHMgQ2xpU2VydmljZUxpZmVjeWNsZSB7XG4gIHJlYWRvbmx5IGRlZmluaXRpb246IENsaVNlcnZpY2VEZWZpbml0aW9uO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcnVudGltZTogU2VydmljZVJ1bnRpbWVDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbEhvbWVEaXJlY3Rvcnk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBidW5FeGVjdXRhYmxlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdXZFeGVjdXRhYmxlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29tcGlsZXI6IENsaVNlcnZpY2VDb21waWxlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBydW50aW1lSW5zdGFsbGVyOiBDbGlTZXJ2aWNlUnVudGltZUluc3RhbGxlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBweXRob25JbnN0YWxsZXI6IENsaVNlcnZpY2VQeXRob25JbnN0YWxsZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgaG9zdEVudHJ5cG9pbnQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSB0cmF5RXhlY3V0YWJsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBsaWZlY3ljbGUgbWFuYWdlciBmcm9tIGEgc2VyaWFsaXphYmxlIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBkZWZpbml0aW9uIFByb2R1Y3Qtb3duZWQgc2VydmljZSBtZXRhZGF0YSwgcHJvY2VzcywgYW5kIG1lbnUuXG4gICAqIEBwYXJhbSBvcHRpb25zIEhvc3QgcnVudGltZSBvdmVycmlkZXMuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihkZWZpbml0aW9uOiBDbGlTZXJ2aWNlRGVmaW5pdGlvbiwgb3B0aW9uczogQ2xpU2VydmljZVJ1bnRpbWVPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLmRlZmluaXRpb24gPSBDbGlTZXJ2aWNlRGVmaW5pdGlvblNjaGVtYS5wYXJzZShkZWZpbml0aW9uKTtcbiAgICBjb25zdCBkZWZhdWx0cyA9IGRlZmF1bHRSdW50aW1lQ29udGV4dCgpO1xuICAgIHRoaXMucnVudGltZSA9IHtcbiAgICAgIHBsYXRmb3JtOiBvcHRpb25zLnBsYXRmb3JtID8/IGRlZmF1bHRzLnBsYXRmb3JtLFxuICAgICAgZW52aXJvbm1lbnQ6IG9wdGlvbnMuZW52aXJvbm1lbnQgPz8gZGVmYXVsdHMuZW52aXJvbm1lbnQsXG4gICAgICBob21lRGlyZWN0b3J5OiBvcHRpb25zLmhvbWVEaXJlY3RvcnkgPz8gZGVmYXVsdHMuaG9tZURpcmVjdG9yeSxcbiAgICAgIHRlbXBvcmFyeURpcmVjdG9yeTogb3B0aW9ucy50ZW1wb3JhcnlEaXJlY3RvcnkgPz8gZGVmYXVsdHMudGVtcG9yYXJ5RGlyZWN0b3J5LFxuICAgIH07XG4gICAgdGhpcy5nbG9iYWxIb21lRGlyZWN0b3J5ID1cbiAgICAgIG9wdGlvbnMuZ2xvYmFsSG9tZURpcmVjdG9yeSA/PyBqb2luKHRoaXMucnVudGltZS5ob21lRGlyZWN0b3J5LCBcIi5kYngtdG9vbHNcIik7XG4gICAgdGhpcy5idW5FeGVjdXRhYmxlID0gb3B0aW9ucy5idW5FeGVjdXRhYmxlID8/IHJlc29sdmVCdW5FeGVjdXRhYmxlKCk7XG4gICAgdGhpcy51dkV4ZWN1dGFibGUgPSBvcHRpb25zLnV2RXhlY3V0YWJsZSA/PyBcInV2XCI7XG4gICAgdGhpcy5jb21waWxlciA9XG4gICAgICBvcHRpb25zLmNvbXBpbGUgPz9cbiAgICAgICgoZW50cnlwb2ludCwgb3V0cHV0LCB3b3JraW5nRGlyZWN0b3J5LCBleHRlcm5hbCkgPT5cbiAgICAgICAgY29tcGlsZVdpdGhCdW4odGhpcy5idW5FeGVjdXRhYmxlLCBlbnRyeXBvaW50LCBvdXRwdXQsIHdvcmtpbmdEaXJlY3RvcnksIGV4dGVybmFsKSk7XG4gICAgdGhpcy5ydW50aW1lSW5zdGFsbGVyID0gb3B0aW9ucy5pbnN0YWxsUnVudGltZSA/PyBpbnN0YWxsU2VydmljZVJ1bnRpbWU7XG4gICAgdGhpcy5weXRob25JbnN0YWxsZXIgPSBvcHRpb25zLmluc3RhbGxQeXRob24gPz8gaW5zdGFsbFNlcnZpY2VQeXRob25QYWNrYWdlO1xuICAgIHRoaXMuaG9zdEVudHJ5cG9pbnQgPSBvcHRpb25zLmhvc3RFbnRyeXBvaW50ID8/IHJlc29sdmVIb3N0RW50cnlwb2ludCgpO1xuICAgIHRoaXMudHJheUV4ZWN1dGFibGUgPSBvcHRpb25zLnRyYXlFeGVjdXRhYmxlID8/IHJlc29sdmVUcmF5RXhlY3V0YWJsZSh0aGlzLnJ1bnRpbWUucGxhdGZvcm0pO1xuICB9XG5cbiAgLyoqIEluc3RhbGwgdGhlIGxvZ2luIGVudHJ5IGFuZCBvcHRpb25hbGx5IHN0YXJ0IHRoZSBzZXJ2aWNlLiAqL1xuICBhc3luYyBpbnN0YWxsKG9wdGlvbnM6IENsaVNlcnZpY2VJbnN0YWxsT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3duZXIgPSByZXNvbHZlU2VydmljZVBhY2thZ2UodGhpcy5kZWZpbml0aW9uLnBhY2thZ2VOYW1lKTtcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSBvd25lci5kZXBlbmRlbmNpZXMoKTtcbiAgICBjb25zdCBleHRlcm5hbCA9IG5ldyBTZXQoZXh0ZXJuYWxSdW50aW1lUGFja2FnZXMoZGVwZW5kZW5jaWVzKSk7XG4gICAgYXdhaXQgdGhpcy5ydW50aW1lSW5zdGFsbGVyKFxuICAgICAgdGhpcy5idW5FeGVjdXRhYmxlLFxuICAgICAgdGhpcy5nbG9iYWxIb21lRGlyZWN0b3J5LFxuICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGRlcGVuZGVuY2llcykuZmlsdGVyKChbbmFtZV0pID0+IGV4dGVybmFsLmhhcyhuYW1lKSkpLFxuICAgICk7XG4gICAgY29uc3QgcGF0aHMgPSByZXNvbHZlU2VydmljZVBhdGhzKHRoaXMuZGVmaW5pdGlvbiwgdGhpcy5ydW50aW1lKTtcbiAgICBjb25zdCBpbnN0YWxsZWREZWZpbml0aW9uID0gYXdhaXQgdGhpcy5pbnN0YWxsRGVmaW5pdGlvbihvd25lciwgcGF0aHMuZGlyZWN0b3J5KTtcbiAgICBjb25zdCBob3N0ID0gYXdhaXQgdGhpcy5lbnN1cmVDb21waWxlZEJpbmFyeShcbiAgICAgIHRoaXMuYmluYXJ5TmFtZShpbnN0YWxsZWREZWZpbml0aW9uLCBcInNlcnZpY2VcIiksXG4gICAgICB0aGlzLmhvc3RFbnRyeXBvaW50LFxuICAgICAgcmVzb2x2ZShkaXJuYW1lKHRoaXMuaG9zdEVudHJ5cG9pbnQpLCBcIi4uXCIpLFxuICAgICk7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVUcmF5QmluYXJ5KCk7XG4gICAgYXdhaXQgdGhpcy5zdG9wKCk7XG4gICAgYXdhaXQgd3JpdGVTZXJ2aWNlRGVmaW5pdGlvbihwYXRocy5jb25maWdGaWxlLCBpbnN0YWxsZWREZWZpbml0aW9uKTtcbiAgICBhd2FpdCBpbnN0YWxsU3RhcnR1cChcbiAgICAgIGluc3RhbGxlZERlZmluaXRpb24sXG4gICAgICBwYXRocyxcbiAgICAgIHRoaXMucnVudGltZSxcbiAgICAgIHRoaXMubGF1bmNoKGhvc3QucGF0aCwgcGF0aHMuY29uZmlnRmlsZSksXG4gICAgKTtcbiAgICBpZiAob3B0aW9ucy5zdGFydCA/PyB0cnVlKSBhd2FpdCB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICAvKiogU3RhcnQgdGhlIGluc3RhbGxlZCBzZXJ2aWNlIHdoZW4gaXQgaXMgbm90IGFscmVhZHkgcnVubmluZy4gKi9cbiAgYXN5bmMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGF0aHMgPSByZXNvbHZlU2VydmljZVBhdGhzKHRoaXMuZGVmaW5pdGlvbiwgdGhpcy5ydW50aW1lKTtcbiAgICBpZiAoIShhd2FpdCB0aGlzLnN0YXR1cygpKS5pbnN0YWxsZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmRlZmluaXRpb24ubmFtZX0gaXMgbm90IGluc3RhbGxlZGApO1xuICAgIH1cbiAgICBpZiAoKGF3YWl0IHJlcXVlc3RTZXJ2aWNlQ29udHJvbChwYXRocy5jb250cm9sQWRkcmVzcywgXCJzdGF0dXNcIikpICE9PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgIGNvbnN0IGluc3RhbGxlZERlZmluaXRpb24gPSBhd2FpdCByZWFkU2VydmljZURlZmluaXRpb24ocGF0aHMuY29uZmlnRmlsZSk7XG4gICAgY29uc3QgbGF1bmNoID0gdGhpcy5sYXVuY2goXG4gICAgICB0aGlzLmJpbmFyeUNvbnRleHQodGhpcy5iaW5hcnlOYW1lKGluc3RhbGxlZERlZmluaXRpb24sIFwic2VydmljZVwiKSkucGF0aCxcbiAgICAgIHBhdGhzLmNvbmZpZ0ZpbGUsXG4gICAgKTtcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKGxhdW5jaC5leGVjdXRhYmxlLCBsYXVuY2guYXJndW1lbnRzLCB7XG4gICAgICBkZXRhY2hlZDogdHJ1ZSxcbiAgICAgIHN0ZGlvOiBcImlnbm9yZVwiLFxuICAgIH0pO1xuICAgIGNoaWxkLnVucmVmKCk7XG5cbiAgICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgd2FpdEZvclN0YXRlKFxuICAgICAgICBhc3luYyAoKSA9PiAoYXdhaXQgcmVxdWVzdFNlcnZpY2VDb250cm9sKHBhdGhzLmNvbnRyb2xBZGRyZXNzLCBcInN0YXR1c1wiKSkgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgREVGQVVMVF9TVEFSVF9USU1FT1VUX01JTExJU0VDT05EUyxcbiAgICAgICAgYCR7dGhpcy5kZWZpbml0aW9uLm5hbWV9IGRpZCBub3Qgc3RhcnRgLFxuICAgICAgKSxcbiAgICAgIG5ldyBQcm9taXNlPG5ldmVyPigoX3Jlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjaGlsZC5vbmNlKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICAgICAgY2hpbGQub25jZShcImV4aXRcIiwgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgYCR7dGhpcy5kZWZpbml0aW9uLm5hbWV9IGhvc3QgZXhpdGVkIGJlZm9yZSBzdGFydHVwICgke3NpZ25hbCA/PyBTdHJpbmcoY29kZSl9KWAsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgXSk7XG4gIH1cblxuICAvKiogU3RvcCB0aGUgcnVubmluZyB0cmF5IGhvc3QgYW5kIGl0cyBtYW5hZ2VkIGNoaWxkIHByb2Nlc3MuICovXG4gIGFzeW5jIHN0b3AoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGF0aHMgPSByZXNvbHZlU2VydmljZVBhdGhzKHRoaXMuZGVmaW5pdGlvbiwgdGhpcy5ydW50aW1lKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RTZXJ2aWNlQ29udHJvbChwYXRocy5jb250cm9sQWRkcmVzcywgXCJzdG9wXCIpO1xuICAgIGlmICghcmVzcG9uc2UpIHJldHVybjtcbiAgICBhd2FpdCB3YWl0Rm9yU3RhdGUoXG4gICAgICBhc3luYyAoKSA9PiAoYXdhaXQgcmVxdWVzdFNlcnZpY2VDb250cm9sKHBhdGhzLmNvbnRyb2xBZGRyZXNzLCBcInN0YXR1c1wiKSkgIT09IHVuZGVmaW5lZCxcbiAgICAgIGZhbHNlLFxuICAgICAgREVGQVVMVF9TVE9QX1RJTUVPVVRfTUlMTElTRUNPTkRTLFxuICAgICAgYCR7dGhpcy5kZWZpbml0aW9uLm5hbWV9IGRpZCBub3Qgc3RvcGAsXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBTdG9wIGFuZCBzdGFydCB0aGUgaW5zdGFsbGVkIHNlcnZpY2UuICovXG4gIGFzeW5jIHJlc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zdG9wKCk7XG4gICAgYXdhaXQgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgLyoqIFN0b3AgdGhlIHNlcnZpY2UgYW5kIHJlbW92ZSBpdHMgbG9naW4gZW50cnkgYW5kIHBhY2thZ2Utb3duZWQgc3RhdGUuICovXG4gIGFzeW5jIHVuaW5zdGFsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwYXRocyA9IHJlc29sdmVTZXJ2aWNlUGF0aHModGhpcy5kZWZpbml0aW9uLCB0aGlzLnJ1bnRpbWUpO1xuICAgIGF3YWl0IHRoaXMuc3RvcCgpO1xuICAgIGF3YWl0IHJlbW92ZVN0YXJ0dXAocGF0aHMpO1xuICAgIGF3YWl0IHJtKHBhdGhzLmRpcmVjdG9yeSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqIFJlYWQgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uIGFuZCBwcm9jZXNzIHN0YXRlLiAqL1xuICBhc3luYyBzdGF0dXMoKTogUHJvbWlzZTxDbGlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgY29uc3QgcGF0aHMgPSByZXNvbHZlU2VydmljZVBhdGhzKHRoaXMuZGVmaW5pdGlvbiwgdGhpcy5ydW50aW1lKTtcbiAgICBjb25zdCBpbnN0YWxsZWQgPSBleGlzdHNTeW5jKHBhdGhzLmNvbmZpZ0ZpbGUpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdFNlcnZpY2VDb250cm9sKHBhdGhzLmNvbnRyb2xBZGRyZXNzLCBcInN0YXR1c1wiKTtcbiAgICByZXR1cm4ge1xuICAgICAgaW5zdGFsbGVkLFxuICAgICAgcnVubmluZzogcmVzcG9uc2UgIT09IHVuZGVmaW5lZCxcbiAgICAgIC4uLihyZXNwb25zZVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHBpZDogcmVzcG9uc2UucGlkLFxuICAgICAgICAgICAgLi4uKHJlc3BvbnNlLnNlcnZpY2VQaWQgPyB7IHNlcnZpY2VQaWQ6IHJlc3BvbnNlLnNlcnZpY2VQaWQgfSA6IHt9KSxcbiAgICAgICAgICB9XG4gICAgICAgIDoge30pLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGxhdW5jaChleGVjdXRhYmxlOiBzdHJpbmcsIGNvbmZpZ0ZpbGU6IHN0cmluZyk6IFNlcnZpY2VMYXVuY2gge1xuICAgIHJldHVybiB7XG4gICAgICBleGVjdXRhYmxlLFxuICAgICAgYXJndW1lbnRzOiBbXCItLXNlcnZpY2UtY29uZmlnXCIsIGNvbmZpZ0ZpbGVdLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluc3RhbGxEZWZpbml0aW9uKFxuICAgIG93bmVyOiBTZXJ2aWNlUGFja2FnZSxcbiAgICBkaXJlY3Rvcnk6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxDbGlTZXJ2aWNlRGVmaW5pdGlvbj4ge1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSBDbGlTZXJ2aWNlRGVmaW5pdGlvblNjaGVtYS5wYXJzZSh7XG4gICAgICAuLi50aGlzLmRlZmluaXRpb24sXG4gICAgICB2ZXJzaW9uOiB0aGlzLmRlZmluaXRpb24udmVyc2lvbiA/PyBvd25lci52ZXJzaW9uLFxuICAgIH0pO1xuICAgIGlmICghZGVmaW5pdGlvbi52ZXJzaW9uKSB0aHJvdyBuZXcgRXJyb3IoYCR7ZGVmaW5pdGlvbi5uYW1lfSBoYXMgbm8gaW5zdGFsbGFibGUgdmVyc2lvbmApO1xuICAgIGNvbnN0IHB5dGhvblBhY2thZ2UgPSBkZWZpbml0aW9uLnB5dGhvblBhY2thZ2VcbiAgICAgID8ge1xuICAgICAgICAgIC4uLmRlZmluaXRpb24ucHl0aG9uUGFja2FnZSxcbiAgICAgICAgICB2ZXJzaW9uOiBkZWZpbml0aW9uLnB5dGhvblBhY2thZ2UudmVyc2lvbiA/PyBkZWZpbml0aW9uLnZlcnNpb24sXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHB5dGhvbkVudmlyb25tZW50OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgaWYgKHB5dGhvblBhY2thZ2UpIHtcbiAgICAgIHB5dGhvbkVudmlyb25tZW50LlBZVEhPTiA9IGF3YWl0IHRoaXMucHl0aG9uSW5zdGFsbGVyKFxuICAgICAgICB0aGlzLnV2RXhlY3V0YWJsZSxcbiAgICAgICAgam9pbihkaXJlY3RvcnksIFwicHl0aG9uXCIpLFxuICAgICAgICBbYCR7cHl0aG9uUGFja2FnZS5uYW1lfT09JHtweXRob25QYWNrYWdlLnZlcnNpb259YCwgLi4ucHl0aG9uUGFja2FnZS5kZXBlbmRlbmNpZXNdLFxuICAgICAgICBweXRob25QYWNrYWdlLnB5dGhvbixcbiAgICAgICAgdGhpcy5ydW50aW1lLnBsYXRmb3JtLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgY29tbWFuZCA9IGRlZmluaXRpb24uY29tbWFuZFxuICAgICAgPyBhd2FpdCB0aGlzLmluc3RhbGxDb21tYW5kKFxuICAgICAgICAgIGRlZmluaXRpb24sXG4gICAgICAgICAgb3duZXIsXG4gICAgICAgICAgZGVmaW5pdGlvbi5jb21tYW5kLFxuICAgICAgICAgIFwiY29tbWFuZFwiLFxuICAgICAgICAgIHB5dGhvbkVudmlyb25tZW50LFxuICAgICAgICApXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtZW51OiBDbGlTZXJ2aWNlTWVudUl0ZW1bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgW2luZGV4LCBpdGVtXSBvZiAoZGVmaW5pdGlvbi5tZW51ID8/IFtdKS5lbnRyaWVzKCkpIHtcbiAgICAgIG1lbnUucHVzaChcbiAgICAgICAgaXRlbS50eXBlID09PSBcImNvbW1hbmRcIlxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICBjb21tYW5kOiBhd2FpdCB0aGlzLmluc3RhbGxDb21tYW5kKFxuICAgICAgICAgICAgICAgIGRlZmluaXRpb24sXG4gICAgICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICAgICAgaXRlbS5jb21tYW5kLFxuICAgICAgICAgICAgICAgIGBtZW51LSR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgcHl0aG9uRW52aXJvbm1lbnQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBpdGVtLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIENsaVNlcnZpY2VEZWZpbml0aW9uU2NoZW1hLnBhcnNlKHtcbiAgICAgIC4uLmRlZmluaXRpb24sXG4gICAgICAuLi4ocHl0aG9uUGFja2FnZSA/IHsgcHl0aG9uUGFja2FnZSB9IDoge30pLFxuICAgICAgLi4uKGNvbW1hbmQgPyB7IGNvbW1hbmQgfSA6IHt9KSxcbiAgICAgIC4uLihtZW51Lmxlbmd0aCA+IDAgPyB7IG1lbnUgfSA6IHt9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaW5zdGFsbENvbW1hbmQoXG4gICAgZGVmaW5pdGlvbjogQ2xpU2VydmljZURlZmluaXRpb24sXG4gICAgb3duZXI6IFNlcnZpY2VQYWNrYWdlLFxuICAgIGNvbW1hbmQ6IENsaVNlcnZpY2VDb21tYW5kLFxuICAgIHB1cnBvc2U6IHN0cmluZyxcbiAgICBydW50aW1lRW52aXJvbm1lbnQ6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+LFxuICApOiBQcm9taXNlPENsaVNlcnZpY2VDb21tYW5kPiB7XG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSB7IC4uLmNvbW1hbmQuZW52aXJvbm1lbnQsIC4uLnJ1bnRpbWVFbnZpcm9ubWVudCB9O1xuICAgIGlmIChjb21tYW5kLmV4ZWN1dGFibGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbW1hbmQsXG4gICAgICAgIC4uLihPYmplY3Qua2V5cyhlbnZpcm9ubWVudCkubGVuZ3RoID4gMCA/IHsgZW52aXJvbm1lbnQgfSA6IHt9KSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGVudHJ5cG9pbnQgPSBjb21tYW5kLmVudHJ5cG9pbnQgPz8gb3duZXIuYmluKGNvbW1hbmQuYmluTmFtZSk7XG4gICAgY29uc3QgaW5zdGFsbGVkID0gYXdhaXQgdGhpcy5lbnN1cmVDb21waWxlZEJpbmFyeShcbiAgICAgIHRoaXMuYmluYXJ5TmFtZShkZWZpbml0aW9uLCBwdXJwb3NlKSxcbiAgICAgIHJlc29sdmUoZW50cnlwb2ludCksXG4gICAgICBvd25lci5kaXJlY3RvcnksXG4gICAgICBleHRlcm5hbFJ1bnRpbWVQYWNrYWdlcyhvd25lci5kZXBlbmRlbmNpZXMoKSksXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgZXhlY3V0YWJsZTogaW5zdGFsbGVkLnBhdGgsXG4gICAgICAuLi4oY29tbWFuZC5hcmd1bWVudHMgPyB7IGFyZ3VtZW50czogY29tbWFuZC5hcmd1bWVudHMgfSA6IHt9KSxcbiAgICAgIC4uLihPYmplY3Qua2V5cyhlbnZpcm9ubWVudCkubGVuZ3RoID4gMCA/IHsgZW52aXJvbm1lbnQgfSA6IHt9KSxcbiAgICAgIGN3ZDogY29tbWFuZC5jd2QgPz8gdGhpcy5nbG9iYWxIb21lRGlyZWN0b3J5LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVuc3VyZUNvbXBpbGVkQmluYXJ5KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBlbnRyeXBvaW50OiBzdHJpbmcsXG4gICAgd29ya2luZ0RpcmVjdG9yeTogc3RyaW5nLFxuICAgIGV4dGVybmFsOiByZWFkb25seSBzdHJpbmdbXSA9IFtdLFxuICApOiBQcm9taXNlPGJpbi5CaW5Db250ZXh0PiB7XG4gICAgcmV0dXJuIGJpbi5lbnN1cmUoXG4gICAgICBuYW1lLFxuICAgICAgYXN5bmMgKHsgdGVtcERpciB9KSA9PiB7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IGpvaW4odGVtcERpciwgZXhlY3V0YWJsZU5hbWUobmFtZSwgdGhpcy5ydW50aW1lLnBsYXRmb3JtKSk7XG4gICAgICAgIGF3YWl0IHRoaXMuY29tcGlsZXIoZW50cnlwb2ludCwgb3V0cHV0LCB3b3JraW5nRGlyZWN0b3J5LCBleHRlcm5hbCk7XG4gICAgICAgIHJldHVybiBwYXRoVG9GaWxlVVJMKG91dHB1dCkuaHJlZjtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRlc3RpbmF0aW9uOiB0aGlzLmJpbmFyeUNvbnRleHQobmFtZSksXG4gICAgICAgIHNraXBWZXJzaW9uQ2hlY2s6IHRydWUsXG4gICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbnN1cmVUcmF5QmluYXJ5KCk6IFByb21pc2U8YmluLkJpbkNvbnRleHQ+IHtcbiAgICBjb25zdCBuYW1lID0gdHJheUV4ZWN1dGFibGVOYW1lKHRoaXMucnVudGltZS5wbGF0Zm9ybSk7XG4gICAgY29uc3QgYmluRGlyID0gam9pbih0aGlzLmdsb2JhbEhvbWVEaXJlY3RvcnksIFwiYmluXCIsIFwidHJheWJpblwiKTtcbiAgICByZXR1cm4gYmluLmVuc3VyZShuYW1lLCBwYXRoVG9GaWxlVVJMKHRoaXMudHJheUV4ZWN1dGFibGUpLmhyZWYsIHtcbiAgICAgIGRlc3RpbmF0aW9uOiB7XG4gICAgICAgIHJvb3Q6IHRoaXMuZ2xvYmFsSG9tZURpcmVjdG9yeSxcbiAgICAgICAgYmluRGlyLFxuICAgICAgICBwYXRoOiBqb2luKGJpbkRpciwgbmFtZSksXG4gICAgICB9LFxuICAgICAgc2tpcFZlcnNpb25DaGVjazogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYmluYXJ5Q29udGV4dChuYW1lOiBzdHJpbmcpOiBiaW4uQmluQ29udGV4dCB7XG4gICAgY29uc3QgYmluRGlyID0gam9pbih0aGlzLmdsb2JhbEhvbWVEaXJlY3RvcnksIFwiYmluXCIpO1xuICAgIHJldHVybiB7XG4gICAgICByb290OiB0aGlzLmdsb2JhbEhvbWVEaXJlY3RvcnksXG4gICAgICBiaW5EaXIsXG4gICAgICBwYXRoOiBqb2luKGJpbkRpciwgZXhlY3V0YWJsZU5hbWUobmFtZSwgdGhpcy5ydW50aW1lLnBsYXRmb3JtKSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYmluYXJ5TmFtZShkZWZpbml0aW9uOiBDbGlTZXJ2aWNlRGVmaW5pdGlvbiwgcHVycG9zZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBuYW1lID0gc2FmZVRva2VuKGRlZmluaXRpb24ubmFtZS50b0xvd2VyQ2FzZSgpKS5yZXBsYWNlKC9bLl9dKy9nLCBcIi1cIik7XG4gICAgcmV0dXJuIHB1cnBvc2UgPT09IFwic2VydmljZVwiID8gbmFtZSA6IGAke25hbWV9LSR7cHVycG9zZX1gO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVIb3N0RW50cnlwb2ludCgpOiBzdHJpbmcge1xuICBjb25zdCBjdXJyZW50ID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpO1xuICBjb25zdCBzb3VyY2UgPVxuICAgIGV4dG5hbWUoY3VycmVudCkgPT09IFwiLnRzXCJcbiAgICAgID8gam9pbihkaXJuYW1lKGN1cnJlbnQpLCBcIl9ob3N0LnRzXCIpXG4gICAgICA6IHJlc29sdmUoZGlybmFtZShjdXJyZW50KSwgXCIuLlwiLCBcIi4uXCIsIFwic3JjXCIsIFwiX2hvc3QudHNcIik7XG4gIGlmIChleGlzdHNTeW5jKHNvdXJjZSkpIHJldHVybiBzb3VyY2U7XG4gIHRocm93IG5ldyBFcnJvcihgY291bGQgbm90IHJlc29sdmUgY2xpLXNlcnZpY2UgaG9zdCBzb3VyY2U6ICR7c291cmNlfWApO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlQnVuRXhlY3V0YWJsZSgpOiBzdHJpbmcge1xuICByZXR1cm4gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpLnJlc29sdmUoXCJidW4vYmluL2J1bi5leGVcIik7XG59XG5cbmZ1bmN0aW9uIHRyYXlFeGVjdXRhYmxlTmFtZShwbGF0Zm9ybTogTm9kZUpTLlBsYXRmb3JtKTogc3RyaW5nIHtcbiAgaWYgKHBsYXRmb3JtID09PSBcImRhcndpblwiKSByZXR1cm4gXCJ0cmF5X2Rhcndpbl9yZWxlYXNlXCI7XG4gIGlmIChwbGF0Zm9ybSA9PT0gXCJsaW51eFwiKSByZXR1cm4gXCJ0cmF5X2xpbnV4X3JlbGVhc2VcIjtcbiAgaWYgKHBsYXRmb3JtID09PSBcIndpbjMyXCIpIHJldHVybiBcInRyYXlfd2luZG93c19yZWxlYXNlLmV4ZVwiO1xuICB0aHJvdyBuZXcgRXJyb3IoYHN5c3RyYXkyIGRvZXMgbm90IHN1cHBvcnQgJHtwbGF0Zm9ybX1gKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVRyYXlFeGVjdXRhYmxlKHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm0pOiBzdHJpbmcge1xuICBjb25zdCBtYW5pZmVzdCA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKS5yZXNvbHZlKFwic3lzdHJheTIvcGFja2FnZS5qc29uXCIpO1xuICByZXR1cm4gam9pbihkaXJuYW1lKG1hbmlmZXN0KSwgXCJ0cmF5YmluXCIsIHRyYXlFeGVjdXRhYmxlTmFtZShwbGF0Zm9ybSkpO1xufVxuXG5mdW5jdGlvbiBleGVjdXRhYmxlTmFtZShuYW1lOiBzdHJpbmcsIHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm0pOiBzdHJpbmcge1xuICByZXR1cm4gcGxhdGZvcm0gPT09IFwid2luMzJcIiA/IGAke25hbWV9LmV4ZWAgOiBuYW1lO1xufVxuXG5mdW5jdGlvbiBzYWZlVG9rZW4odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHRva2VuID0gdmFsdWUucmVwbGFjZSgvW15hLXowLTkuXy1dKy9naSwgXCItXCIpLnJlcGxhY2UoL14tK3wtKyQvZywgXCJcIik7XG4gIGlmICghdG9rZW4pIHRocm93IG5ldyBUeXBlRXJyb3IoYGludmFsaWQgYmluYXJ5IHZlcnNpb246ICR7dmFsdWV9YCk7XG4gIHJldHVybiB0b2tlbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd2FpdEZvclN0YXRlKFxuICByZWFkOiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+LFxuICBleHBlY3RlZDogYm9vbGVhbixcbiAgdGltZW91dE1pbGxpc2Vjb25kczogbnVtYmVyLFxuICBtZXNzYWdlOiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZGVhZGxpbmUgPSBEYXRlLm5vdygpICsgdGltZW91dE1pbGxpc2Vjb25kcztcbiAgd2hpbGUgKERhdGUubm93KCkgPCBkZWFkbGluZSkge1xuICAgIGlmICgoYXdhaXQgcmVhZCgpKSA9PT0gZXhwZWN0ZWQpIHJldHVybjtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBQT0xMX0lOVEVSVkFMX01JTExJU0VDT05EUykpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbn1cbiJdfQ==
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixtQkFBbUIsR0FFcEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QiwyQkFBMkIsRUFDM0IscUJBQXFCLEdBQ3RCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFzQixNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQ0wsMEJBQTBCLEdBSTNCLE1BQU0saUJBQWlCLENB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QUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsS0FBSyxRQUFRO1lBQUUsT0FBTztRQUN4QyxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBJbnN0YWxsLCBzdGFydCwgc3RvcCwgYW5kIGluc3BlY3QgYSBzeXN0ZW0tdHJheSB1c2VyIHNlcnZpY2UuXG4gKlxuICogVGhpcyBtb2R1bGUgb3ducyBjdXJyZW50LXVzZXIgc2VydmljZSBjb21waWxhdGlvbiBhbmQgbGlmZWN5Y2xlIGFjcm9zc1xuICogY29uc3VtaW5nIENMSXMuIFJldXNlIHtAbGluayBDbGlTZXJ2aWNlfSByYXRoZXIgdGhhbiBhZGRpbmcgcHJvZHVjdC1zcGVjaWZpY1xuICogaW5zdGFsbGVycywgdXYgUHl0aG9uIGVudmlyb25tZW50cywgc3RhcnR1cCByZWdpc3RyYXRpb24sIHJ1bnRpbWVcbiAqIGRpcmVjdG9yaWVzLCBvciBjb250cm9sIHNvY2tldHMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IHNwYXduIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBybSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBleHRuYW1lLCBqb2luLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCwgcGF0aFRvRmlsZVVSTCB9IGZyb20gXCJub2RlOnVybFwiO1xuXG5pbXBvcnQgKiBhcyBiaW4gZnJvbSBcIkBkYngtdG9vbHMvY29yZS9iaW5cIjtcbmltcG9ydCB7IGFzeW5jVXRpbHMgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgY29tcGlsZVdpdGhCdW4gfSBmcm9tIFwiLi9fY29tcGlsZS50c1wiO1xuaW1wb3J0IHsgcmVhZFNlcnZpY2VEZWZpbml0aW9uLCB3cml0ZVNlcnZpY2VEZWZpbml0aW9uIH0gZnJvbSBcIi4vX2NvbmZpZy50c1wiO1xuaW1wb3J0IHsgcmVxdWVzdFNlcnZpY2VDb250cm9sIH0gZnJvbSBcIi4vX2NvbnRyb2wudHNcIjtcbmltcG9ydCB7IHJlc29sdmVTZXJ2aWNlUGFja2FnZSwgdHlwZSBTZXJ2aWNlUGFja2FnZSB9IGZyb20gXCIuL19wYWNrYWdlLnRzXCI7XG5pbXBvcnQge1xuICBkZWZhdWx0UnVudGltZUNvbnRleHQsXG4gIHJlc29sdmVTZXJ2aWNlUGF0aHMsXG4gIHR5cGUgU2VydmljZVJ1bnRpbWVDb250ZXh0LFxufSBmcm9tIFwiLi9fcGF0aHMudHNcIjtcbmltcG9ydCB7XG4gIGV4dGVybmFsUnVudGltZVBhY2thZ2VzLFxuICBpbnN0YWxsU2VydmljZVB5dGhvblBhY2thZ2UsXG4gIGluc3RhbGxTZXJ2aWNlUnVudGltZSxcbn0gZnJvbSBcIi4vX3J1bnRpbWUudHNcIjtcbmltcG9ydCB7IGluc3RhbGxTdGFydHVwLCByZW1vdmVTdGFydHVwLCB0eXBlIFNlcnZpY2VMYXVuY2ggfSBmcm9tIFwiLi9fc3RhcnR1cC50c1wiO1xuaW1wb3J0IHtcbiAgQ2xpU2VydmljZURlZmluaXRpb25TY2hlbWEsXG4gIHR5cGUgQ2xpU2VydmljZUNvbW1hbmQsXG4gIHR5cGUgQ2xpU2VydmljZURlZmluaXRpb24sXG4gIHR5cGUgQ2xpU2VydmljZU1lbnVJdGVtLFxufSBmcm9tIFwiLi9kZWZpbml0aW9uLnRzXCI7XG5cbmNvbnN0IERFRkFVTFRfU1RBUlRfVElNRU9VVF9NSUxMSVNFQ09ORFMgPSAxNV8wMDA7XG5jb25zdCBERUZBVUxUX1NUT1BfVElNRU9VVF9NSUxMSVNFQ09ORFMgPSAxMF8wMDA7XG5jb25zdCBQT0xMX0lOVEVSVkFMX01JTExJU0VDT05EUyA9IDEwMDtcblxuLyoqIENvbXBpbGUgb25lIFR5cGVTY3JpcHQgb3IgSmF2YVNjcmlwdCBlbnRyeXBvaW50IGludG8gYSBzdGFuZGFsb25lIGV4ZWN1dGFibGUuICovXG5leHBvcnQgdHlwZSBDbGlTZXJ2aWNlQ29tcGlsZXIgPSAoXG4gIGVudHJ5cG9pbnQ6IHN0cmluZyxcbiAgb3V0cHV0OiBzdHJpbmcsXG4gIHdvcmtpbmdEaXJlY3Rvcnk6IHN0cmluZyxcbiAgZXh0ZXJuYWw/OiByZWFkb25seSBzdHJpbmdbXSxcbikgPT4gUHJvbWlzZTx2b2lkPjtcblxuLyoqIEluc3RhbGwgZXhhY3QgZXh0ZXJuYWwgcnVudGltZSBkZXBlbmRlbmNpZXMgaW50byB0aGUgZGJ4LXRvb2xzIGhvbWUuICovXG5leHBvcnQgdHlwZSBDbGlTZXJ2aWNlUnVudGltZUluc3RhbGxlciA9IChcbiAgYnVuRXhlY3V0YWJsZTogc3RyaW5nLFxuICBkaXJlY3Rvcnk6IHN0cmluZyxcbiAgZGVwZW5kZW5jaWVzOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PixcbikgPT4gUHJvbWlzZTx2b2lkPjtcblxuLyoqIEluc3RhbGwgYSBQeXRob24gcGFja2FnZSBpbnRvIGEgc2VydmljZS1vd25lZCB1diBlbnZpcm9ubWVudC4gKi9cbmV4cG9ydCB0eXBlIENsaVNlcnZpY2VQeXRob25JbnN0YWxsZXIgPSAoXG4gIHV2RXhlY3V0YWJsZTogc3RyaW5nLFxuICBkaXJlY3Rvcnk6IHN0cmluZyxcbiAgcGFja2FnZVNwZWNpZmllcnM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBweXRob246IHN0cmluZyxcbiAgcGxhdGZvcm06IE5vZGVKUy5QbGF0Zm9ybSxcbikgPT4gUHJvbWlzZTxzdHJpbmc+O1xuXG4vKiogSG9zdCBydW50aW1lIG92ZXJyaWRlcyBmb3IgdGVzdHMsIGVtYmVkZGVkIGRpc3RyaWJ1dGlvbnMsIGFuZCBub25zdGFuZGFyZCBob21lcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpU2VydmljZVJ1bnRpbWVPcHRpb25zIHtcbiAgLyoqIE9wZXJhdGluZyBzeXN0ZW0gdXNlZCBmb3IgY29uZmlndXJhdGlvbiBhbmQgc3RhcnR1cCByZWdpc3RyYXRpb24uICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtPzogTm9kZUpTLlBsYXRmb3JtO1xuICAvKiogRW52aXJvbm1lbnQgdXNlZCB0byBsb2NhdGUgcGxhdGZvcm0gY29uZmlndXJhdGlvbiBkaXJlY3Rvcmllcy4gKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBSZWFkb25seTxOb2RlSlMuUHJvY2Vzc0Vudj47XG4gIC8qKiBIb21lIGRpcmVjdG9yeSB1c2VkIHdoZW4gcGxhdGZvcm0gZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBhYnNlbnQuICovXG4gIHJlYWRvbmx5IGhvbWVEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIC8qKiBUZW1wb3JhcnkgZGlyZWN0b3J5IHVzZWQgZm9yIHRoZSBsb2NhbCBjb250cm9sIHNvY2tldC4gKi9cbiAgcmVhZG9ubHkgdGVtcG9yYXJ5RGlyZWN0b3J5Pzogc3RyaW5nO1xuICAvKiogU2hhcmVkIGRieC10b29scyBob21lIGNvbnRhaW5pbmcgaW5zdGFsbGVkIHNlcnZpY2UgYmluYXJpZXMuICovXG4gIHJlYWRvbmx5IGdsb2JhbEhvbWVEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIC8qKiBQYWNrYWdlLXByb3ZpZGVkIEJ1biBleGVjdXRhYmxlIG92ZXJyaWRlLiAqL1xuICByZWFkb25seSBidW5FeGVjdXRhYmxlPzogc3RyaW5nO1xuICAvKiogdXYgZXhlY3V0YWJsZSB1c2VkIGZvciBtYW5hZ2VkIFB5dGhvbiBwYWNrYWdlIGVudmlyb25tZW50cy4gKi9cbiAgcmVhZG9ubHkgdXZFeGVjdXRhYmxlPzogc3RyaW5nO1xuICAvKiogU3RhbmRhbG9uZSBjb21waWxlciBvdmVycmlkZS4gKi9cbiAgcmVhZG9ubHkgY29tcGlsZT86IENsaVNlcnZpY2VDb21waWxlcjtcbiAgLyoqIEV4dGVybmFsIHJ1bnRpbWUgZGVwZW5kZW5jeSBpbnN0YWxsZXIgb3ZlcnJpZGUuICovXG4gIHJlYWRvbmx5IGluc3RhbGxSdW50aW1lPzogQ2xpU2VydmljZVJ1bnRpbWVJbnN0YWxsZXI7XG4gIC8qKiBQeXRob24gcGFja2FnZSBpbnN0YWxsZXIgb3ZlcnJpZGUuICovXG4gIHJlYWRvbmx5IGluc3RhbGxQeXRob24/OiBDbGlTZXJ2aWNlUHl0aG9uSW5zdGFsbGVyO1xuICAvKiogU3lzdGVtLXRyYXkgaG9zdCBzb3VyY2UgZW50cnlwb2ludCBvdmVycmlkZS4gKi9cbiAgcmVhZG9ubHkgaG9zdEVudHJ5cG9pbnQ/OiBzdHJpbmc7XG4gIC8qKiBzeXN0cmF5MiBuYXRpdmUgZXhlY3V0YWJsZSBvdmVycmlkZS4gKi9cbiAgcmVhZG9ubHkgdHJheUV4ZWN1dGFibGU/OiBzdHJpbmc7XG59XG5cbi8qKiBPcHRpb25zIGNvbnRyb2xsaW5nIHNlcnZpY2UgaW5zdGFsbGF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbGlTZXJ2aWNlSW5zdGFsbE9wdGlvbnMge1xuICAvKiogU3RhcnQgdGhlIHNlcnZpY2UgaW1tZWRpYXRlbHkgYWZ0ZXIgd3JpdGluZyBpdHMgY29uZmlndXJhdGlvbiBhbmQgbG9naW4gZW50cnkuICovXG4gIHJlYWRvbmx5IHN0YXJ0PzogYm9vbGVhbjtcbn1cblxuLyoqIEN1cnJlbnQgaW5zdGFsbGF0aW9uIGFuZCBwcm9jZXNzIHN0YXRlIGZvciBhIHN5c3RlbS10cmF5IHNlcnZpY2UuICovXG5leHBvcnQgaW50ZXJmYWNlIENsaVNlcnZpY2VTdGF0dXMge1xuICAvKiogV2hldGhlciB0aGUgc2VyaWFsaXplZCBzZXJ2aWNlIGRlZmluaXRpb24gZXhpc3RzLiAqL1xuICByZWFkb25seSBpbnN0YWxsZWQ6IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSB0cmF5IGhvc3QgYW5zd2VyZWQgaXRzIGxvY2FsIGNvbnRyb2wgc29ja2V0LiAqL1xuICByZWFkb25seSBydW5uaW5nOiBib29sZWFuO1xuICAvKiogVHJheSBob3N0IHByb2Nlc3MgSUQgd2hlbiBydW5uaW5nLiAqL1xuICByZWFkb25seSBwaWQ/OiBudW1iZXI7XG4gIC8qKiBNYW5hZ2VkIGNoaWxkIHByb2Nlc3MgSUQgd2hlbiB0aGUgZGVmaW5pdGlvbiBpbmNsdWRlcyBhIGNvbW1hbmQuICovXG4gIHJlYWRvbmx5IHNlcnZpY2VQaWQ/OiBudW1iZXI7XG59XG5cbi8qKiBMaWZlY3ljbGUgY29udHJhY3QgY29uc3VtZWQgYnkgQ0xJIGNvbW1hbmQgYnVpbGRlcnMuICovXG5leHBvcnQgaW50ZXJmYWNlIENsaVNlcnZpY2VMaWZlY3ljbGUge1xuICAvKiogSW5zdGFsbCB0aGUgbG9naW4gZW50cnkgYW5kIG9wdGlvbmFsbHkgc3RhcnQgdGhlIHNlcnZpY2UuICovXG4gIGluc3RhbGwob3B0aW9ucz86IENsaVNlcnZpY2VJbnN0YWxsT3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gIC8qKiBTdGFydCB0aGUgaW5zdGFsbGVkIHNlcnZpY2Ugd2hlbiBpdCBpcyBub3QgYWxyZWFkeSBydW5uaW5nLiAqL1xuICBzdGFydCgpOiBQcm9taXNlPHZvaWQ+O1xuICAvKiogU3RvcCB0aGUgcnVubmluZyB0cmF5IGhvc3QgYW5kIGl0cyBtYW5hZ2VkIGNoaWxkIHByb2Nlc3MuICovXG4gIHN0b3AoKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqIFN0b3AgYW5kIHN0YXJ0IHRoZSBpbnN0YWxsZWQgc2VydmljZS4gKi9cbiAgcmVzdGFydCgpOiBQcm9taXNlPHZvaWQ+O1xuICAvKiogU3RvcCB0aGUgc2VydmljZSBhbmQgcmVtb3ZlIGl0cyBsb2dpbiBlbnRyeSBhbmQgcGFja2FnZS1vd25lZCBzdGF0ZS4gKi9cbiAgdW5pbnN0YWxsKCk6IFByb21pc2U8dm9pZD47XG4gIC8qKiBSZWFkIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBhbmQgcHJvY2VzcyBzdGF0ZS4gKi9cbiAgc3RhdHVzKCk6IFByb21pc2U8Q2xpU2VydmljZVN0YXR1cz47XG59XG5cbi8qKiBDcm9zcy1wbGF0Zm9ybSBsaWZlY3ljbGUgbWFuYWdlciBmb3Igb25lIHN5c3RlbS10cmF5IHVzZXIgc2VydmljZS4gKi9cbmV4cG9ydCBjbGFzcyBDbGlTZXJ2aWNlIGltcGxlbWVudHMgQ2xpU2VydmljZUxpZmVjeWNsZSB7XG4gIHJlYWRvbmx5IGRlZmluaXRpb246IENsaVNlcnZpY2VEZWZpbml0aW9uO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcnVudGltZTogU2VydmljZVJ1bnRpbWVDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbEhvbWVEaXJlY3Rvcnk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBidW5FeGVjdXRhYmxlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdXZFeGVjdXRhYmxlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29tcGlsZXI6IENsaVNlcnZpY2VDb21waWxlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBydW50aW1lSW5zdGFsbGVyOiBDbGlTZXJ2aWNlUnVudGltZUluc3RhbGxlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBweXRob25JbnN0YWxsZXI6IENsaVNlcnZpY2VQeXRob25JbnN0YWxsZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgaG9zdEVudHJ5cG9pbnQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSB0cmF5RXhlY3V0YWJsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBsaWZlY3ljbGUgbWFuYWdlciBmcm9tIGEgc2VyaWFsaXphYmxlIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBkZWZpbml0aW9uIFByb2R1Y3Qtb3duZWQgc2VydmljZSBtZXRhZGF0YSwgcHJvY2VzcywgYW5kIG1lbnUuXG4gICAqIEBwYXJhbSBvcHRpb25zIEhvc3QgcnVudGltZSBvdmVycmlkZXMuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihkZWZpbml0aW9uOiBDbGlTZXJ2aWNlRGVmaW5pdGlvbiwgb3B0aW9uczogQ2xpU2VydmljZVJ1bnRpbWVPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLmRlZmluaXRpb24gPSBDbGlTZXJ2aWNlRGVmaW5pdGlvblNjaGVtYS5wYXJzZShkZWZpbml0aW9uKTtcbiAgICBjb25zdCBkZWZhdWx0cyA9IGRlZmF1bHRSdW50aW1lQ29udGV4dCgpO1xuICAgIHRoaXMucnVudGltZSA9IHtcbiAgICAgIHBsYXRmb3JtOiBvcHRpb25zLnBsYXRmb3JtID8/IGRlZmF1bHRzLnBsYXRmb3JtLFxuICAgICAgZW52aXJvbm1lbnQ6IG9wdGlvbnMuZW52aXJvbm1lbnQgPz8gZGVmYXVsdHMuZW52aXJvbm1lbnQsXG4gICAgICBob21lRGlyZWN0b3J5OiBvcHRpb25zLmhvbWVEaXJlY3RvcnkgPz8gZGVmYXVsdHMuaG9tZURpcmVjdG9yeSxcbiAgICAgIHRlbXBvcmFyeURpcmVjdG9yeTogb3B0aW9ucy50ZW1wb3JhcnlEaXJlY3RvcnkgPz8gZGVmYXVsdHMudGVtcG9yYXJ5RGlyZWN0b3J5LFxuICAgIH07XG4gICAgdGhpcy5nbG9iYWxIb21lRGlyZWN0b3J5ID1cbiAgICAgIG9wdGlvbnMuZ2xvYmFsSG9tZURpcmVjdG9yeSA/PyBqb2luKHRoaXMucnVudGltZS5ob21lRGlyZWN0b3J5LCBcIi5kYngtdG9vbHNcIik7XG4gICAgdGhpcy5idW5FeGVjdXRhYmxlID0gb3B0aW9ucy5idW5FeGVjdXRhYmxlID8/IHJlc29sdmVCdW5FeGVjdXRhYmxlKCk7XG4gICAgdGhpcy51dkV4ZWN1dGFibGUgPSBvcHRpb25zLnV2RXhlY3V0YWJsZSA/PyBcInV2XCI7XG4gICAgdGhpcy5jb21waWxlciA9XG4gICAgICBvcHRpb25zLmNvbXBpbGUgPz9cbiAgICAgICgoZW50cnlwb2ludCwgb3V0cHV0LCB3b3JraW5nRGlyZWN0b3J5LCBleHRlcm5hbCkgPT5cbiAgICAgICAgY29tcGlsZVdpdGhCdW4odGhpcy5idW5FeGVjdXRhYmxlLCBlbnRyeXBvaW50LCBvdXRwdXQsIHdvcmtpbmdEaXJlY3RvcnksIGV4dGVybmFsKSk7XG4gICAgdGhpcy5ydW50aW1lSW5zdGFsbGVyID0gb3B0aW9ucy5pbnN0YWxsUnVudGltZSA/PyBpbnN0YWxsU2VydmljZVJ1bnRpbWU7XG4gICAgdGhpcy5weXRob25JbnN0YWxsZXIgPSBvcHRpb25zLmluc3RhbGxQeXRob24gPz8gaW5zdGFsbFNlcnZpY2VQeXRob25QYWNrYWdlO1xuICAgIHRoaXMuaG9zdEVudHJ5cG9pbnQgPSBvcHRpb25zLmhvc3RFbnRyeXBvaW50ID8/IHJlc29sdmVIb3N0RW50cnlwb2ludCgpO1xuICAgIHRoaXMudHJheUV4ZWN1dGFibGUgPSBvcHRpb25zLnRyYXlFeGVjdXRhYmxlID8/IHJlc29sdmVUcmF5RXhlY3V0YWJsZSh0aGlzLnJ1bnRpbWUucGxhdGZvcm0pO1xuICB9XG5cbiAgLyoqIEluc3RhbGwgdGhlIGxvZ2luIGVudHJ5IGFuZCBvcHRpb25hbGx5IHN0YXJ0IHRoZSBzZXJ2aWNlLiAqL1xuICBhc3luYyBpbnN0YWxsKG9wdGlvbnM6IENsaVNlcnZpY2VJbnN0YWxsT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3duZXIgPSByZXNvbHZlU2VydmljZVBhY2thZ2UodGhpcy5kZWZpbml0aW9uLnBhY2thZ2VOYW1lKTtcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSBvd25lci5kZXBlbmRlbmNpZXMoKTtcbiAgICBjb25zdCBleHRlcm5hbCA9IG5ldyBTZXQoZXh0ZXJuYWxSdW50aW1lUGFja2FnZXMoZGVwZW5kZW5jaWVzKSk7XG4gICAgYXdhaXQgdGhpcy5ydW50aW1lSW5zdGFsbGVyKFxuICAgICAgdGhpcy5idW5FeGVjdXRhYmxlLFxuICAgICAgdGhpcy5nbG9iYWxIb21lRGlyZWN0b3J5LFxuICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGRlcGVuZGVuY2llcykuZmlsdGVyKChbbmFtZV0pID0+IGV4dGVybmFsLmhhcyhuYW1lKSkpLFxuICAgICk7XG4gICAgY29uc3QgcGF0aHMgPSByZXNvbHZlU2VydmljZVBhdGhzKHRoaXMuZGVmaW5pdGlvbiwgdGhpcy5ydW50aW1lKTtcbiAgICBjb25zdCBpbnN0YWxsZWREZWZpbml0aW9uID0gYXdhaXQgdGhpcy5pbnN0YWxsRGVmaW5pdGlvbihvd25lciwgcGF0aHMuZGlyZWN0b3J5KTtcbiAgICBjb25zdCBob3N0ID0gYXdhaXQgdGhpcy5lbnN1cmVDb21waWxlZEJpbmFyeShcbiAgICAgIHRoaXMuYmluYXJ5TmFtZShpbnN0YWxsZWREZWZpbml0aW9uLCBcInNlcnZpY2VcIiksXG4gICAgICB0aGlzLmhvc3RFbnRyeXBvaW50LFxuICAgICAgcmVzb2x2ZShkaXJuYW1lKHRoaXMuaG9zdEVudHJ5cG9pbnQpLCBcIi4uXCIpLFxuICAgICk7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVUcmF5QmluYXJ5KCk7XG4gICAgYXdhaXQgdGhpcy5zdG9wKCk7XG4gICAgYXdhaXQgd3JpdGVTZXJ2aWNlRGVmaW5pdGlvbihwYXRocy5jb25maWdGaWxlLCBpbnN0YWxsZWREZWZpbml0aW9uKTtcbiAgICBhd2FpdCBpbnN0YWxsU3RhcnR1cChcbiAgICAgIGluc3RhbGxlZERlZmluaXRpb24sXG4gICAgICBwYXRocyxcbiAgICAgIHRoaXMucnVudGltZSxcbiAgICAgIHRoaXMubGF1bmNoKGhvc3QucGF0aCwgcGF0aHMuY29uZmlnRmlsZSksXG4gICAgKTtcbiAgICBpZiAob3B0aW9ucy5zdGFydCA/PyB0cnVlKSBhd2FpdCB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICAvKiogU3RhcnQgdGhlIGluc3RhbGxlZCBzZXJ2aWNlIHdoZW4gaXQgaXMgbm90IGFscmVhZHkgcnVubmluZy4gKi9cbiAgYXN5bmMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGF0aHMgPSByZXNvbHZlU2VydmljZVBhdGhzKHRoaXMuZGVmaW5pdGlvbiwgdGhpcy5ydW50aW1lKTtcbiAgICBpZiAoIShhd2FpdCB0aGlzLnN0YXR1cygpKS5pbnN0YWxsZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmRlZmluaXRpb24ubmFtZX0gaXMgbm90IGluc3RhbGxlZGApO1xuICAgIH1cbiAgICBpZiAoKGF3YWl0IHJlcXVlc3RTZXJ2aWNlQ29udHJvbChwYXRocy5jb250cm9sQWRkcmVzcywgXCJzdGF0dXNcIikpICE9PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgIGNvbnN0IGluc3RhbGxlZERlZmluaXRpb24gPSBhd2FpdCByZWFkU2VydmljZURlZmluaXRpb24ocGF0aHMuY29uZmlnRmlsZSk7XG4gICAgY29uc3QgbGF1bmNoID0gdGhpcy5sYXVuY2goXG4gICAgICB0aGlzLmJpbmFyeUNvbnRleHQodGhpcy5iaW5hcnlOYW1lKGluc3RhbGxlZERlZmluaXRpb24sIFwic2VydmljZVwiKSkucGF0aCxcbiAgICAgIHBhdGhzLmNvbmZpZ0ZpbGUsXG4gICAgKTtcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKGxhdW5jaC5leGVjdXRhYmxlLCBsYXVuY2guYXJndW1lbnRzLCB7XG4gICAgICBkZXRhY2hlZDogdHJ1ZSxcbiAgICAgIHN0ZGlvOiBcImlnbm9yZVwiLFxuICAgIH0pO1xuICAgIGNoaWxkLnVucmVmKCk7XG5cbiAgICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgd2FpdEZvclN0YXRlKFxuICAgICAgICBhc3luYyAoKSA9PiAoYXdhaXQgcmVxdWVzdFNlcnZpY2VDb250cm9sKHBhdGhzLmNvbnRyb2xBZGRyZXNzLCBcInN0YXR1c1wiKSkgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgREVGQVVMVF9TVEFSVF9USU1FT1VUX01JTExJU0VDT05EUyxcbiAgICAgICAgYCR7dGhpcy5kZWZpbml0aW9uLm5hbWV9IGRpZCBub3Qgc3RhcnRgLFxuICAgICAgKSxcbiAgICAgIG5ldyBQcm9taXNlPG5ldmVyPigoX3Jlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjaGlsZC5vbmNlKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICAgICAgY2hpbGQub25jZShcImV4aXRcIiwgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgYCR7dGhpcy5kZWZpbml0aW9uLm5hbWV9IGhvc3QgZXhpdGVkIGJlZm9yZSBzdGFydHVwICgke3NpZ25hbCA/PyBTdHJpbmcoY29kZSl9KWAsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgXSk7XG4gIH1cblxuICAvKiogU3RvcCB0aGUgcnVubmluZyB0cmF5IGhvc3QgYW5kIGl0cyBtYW5hZ2VkIGNoaWxkIHByb2Nlc3MuICovXG4gIGFzeW5jIHN0b3AoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGF0aHMgPSByZXNvbHZlU2VydmljZVBhdGhzKHRoaXMuZGVmaW5pdGlvbiwgdGhpcy5ydW50aW1lKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RTZXJ2aWNlQ29udHJvbChwYXRocy5jb250cm9sQWRkcmVzcywgXCJzdG9wXCIpO1xuICAgIGlmICghcmVzcG9uc2UpIHJldHVybjtcbiAgICBhd2FpdCB3YWl0Rm9yU3RhdGUoXG4gICAgICBhc3luYyAoKSA9PiAoYXdhaXQgcmVxdWVzdFNlcnZpY2VDb250cm9sKHBhdGhzLmNvbnRyb2xBZGRyZXNzLCBcInN0YXR1c1wiKSkgIT09IHVuZGVmaW5lZCxcbiAgICAgIGZhbHNlLFxuICAgICAgREVGQVVMVF9TVE9QX1RJTUVPVVRfTUlMTElTRUNPTkRTLFxuICAgICAgYCR7dGhpcy5kZWZpbml0aW9uLm5hbWV9IGRpZCBub3Qgc3RvcGAsXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBTdG9wIGFuZCBzdGFydCB0aGUgaW5zdGFsbGVkIHNlcnZpY2UuICovXG4gIGFzeW5jIHJlc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zdG9wKCk7XG4gICAgYXdhaXQgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgLyoqIFN0b3AgdGhlIHNlcnZpY2UgYW5kIHJlbW92ZSBpdHMgbG9naW4gZW50cnkgYW5kIHBhY2thZ2Utb3duZWQgc3RhdGUuICovXG4gIGFzeW5jIHVuaW5zdGFsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwYXRocyA9IHJlc29sdmVTZXJ2aWNlUGF0aHModGhpcy5kZWZpbml0aW9uLCB0aGlzLnJ1bnRpbWUpO1xuICAgIGF3YWl0IHRoaXMuc3RvcCgpO1xuICAgIGF3YWl0IHJlbW92ZVN0YXJ0dXAocGF0aHMpO1xuICAgIGF3YWl0IHJtKHBhdGhzLmRpcmVjdG9yeSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqIFJlYWQgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uIGFuZCBwcm9jZXNzIHN0YXRlLiAqL1xuICBhc3luYyBzdGF0dXMoKTogUHJvbWlzZTxDbGlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgY29uc3QgcGF0aHMgPSByZXNvbHZlU2VydmljZVBhdGhzKHRoaXMuZGVmaW5pdGlvbiwgdGhpcy5ydW50aW1lKTtcbiAgICBjb25zdCBpbnN0YWxsZWQgPSBleGlzdHNTeW5jKHBhdGhzLmNvbmZpZ0ZpbGUpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdFNlcnZpY2VDb250cm9sKHBhdGhzLmNvbnRyb2xBZGRyZXNzLCBcInN0YXR1c1wiKTtcbiAgICByZXR1cm4ge1xuICAgICAgaW5zdGFsbGVkLFxuICAgICAgcnVubmluZzogcmVzcG9uc2UgIT09IHVuZGVmaW5lZCxcbiAgICAgIC4uLihyZXNwb25zZVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHBpZDogcmVzcG9uc2UucGlkLFxuICAgICAgICAgICAgLi4uKHJlc3BvbnNlLnNlcnZpY2VQaWQgPyB7IHNlcnZpY2VQaWQ6IHJlc3BvbnNlLnNlcnZpY2VQaWQgfSA6IHt9KSxcbiAgICAgICAgICB9XG4gICAgICAgIDoge30pLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGxhdW5jaChleGVjdXRhYmxlOiBzdHJpbmcsIGNvbmZpZ0ZpbGU6IHN0cmluZyk6IFNlcnZpY2VMYXVuY2gge1xuICAgIHJldHVybiB7XG4gICAgICBleGVjdXRhYmxlLFxuICAgICAgYXJndW1lbnRzOiBbXCItLXNlcnZpY2UtY29uZmlnXCIsIGNvbmZpZ0ZpbGVdLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluc3RhbGxEZWZpbml0aW9uKFxuICAgIG93bmVyOiBTZXJ2aWNlUGFja2FnZSxcbiAgICBkaXJlY3Rvcnk6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxDbGlTZXJ2aWNlRGVmaW5pdGlvbj4ge1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSBDbGlTZXJ2aWNlRGVmaW5pdGlvblNjaGVtYS5wYXJzZSh7XG4gICAgICAuLi50aGlzLmRlZmluaXRpb24sXG4gICAgICB2ZXJzaW9uOiB0aGlzLmRlZmluaXRpb24udmVyc2lvbiA/PyBvd25lci52ZXJzaW9uLFxuICAgIH0pO1xuICAgIGlmICghZGVmaW5pdGlvbi52ZXJzaW9uKSB0aHJvdyBuZXcgRXJyb3IoYCR7ZGVmaW5pdGlvbi5uYW1lfSBoYXMgbm8gaW5zdGFsbGFibGUgdmVyc2lvbmApO1xuICAgIGNvbnN0IHB5dGhvblBhY2thZ2UgPSBkZWZpbml0aW9uLnB5dGhvblBhY2thZ2VcbiAgICAgID8ge1xuICAgICAgICAgIC4uLmRlZmluaXRpb24ucHl0aG9uUGFja2FnZSxcbiAgICAgICAgICB2ZXJzaW9uOiBkZWZpbml0aW9uLnB5dGhvblBhY2thZ2UudmVyc2lvbiA/PyBkZWZpbml0aW9uLnZlcnNpb24sXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHB5dGhvbkVudmlyb25tZW50OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgaWYgKHB5dGhvblBhY2thZ2UpIHtcbiAgICAgIHB5dGhvbkVudmlyb25tZW50LlBZVEhPTiA9IGF3YWl0IHRoaXMucHl0aG9uSW5zdGFsbGVyKFxuICAgICAgICB0aGlzLnV2RXhlY3V0YWJsZSxcbiAgICAgICAgam9pbihkaXJlY3RvcnksIFwicHl0aG9uXCIpLFxuICAgICAgICBbYCR7cHl0aG9uUGFja2FnZS5uYW1lfT09JHtweXRob25QYWNrYWdlLnZlcnNpb259YCwgLi4ucHl0aG9uUGFja2FnZS5kZXBlbmRlbmNpZXNdLFxuICAgICAgICBweXRob25QYWNrYWdlLnB5dGhvbixcbiAgICAgICAgdGhpcy5ydW50aW1lLnBsYXRmb3JtLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgY29tbWFuZCA9IGRlZmluaXRpb24uY29tbWFuZFxuICAgICAgPyBhd2FpdCB0aGlzLmluc3RhbGxDb21tYW5kKFxuICAgICAgICAgIGRlZmluaXRpb24sXG4gICAgICAgICAgb3duZXIsXG4gICAgICAgICAgZGVmaW5pdGlvbi5jb21tYW5kLFxuICAgICAgICAgIFwiY29tbWFuZFwiLFxuICAgICAgICAgIHB5dGhvbkVudmlyb25tZW50LFxuICAgICAgICApXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtZW51OiBDbGlTZXJ2aWNlTWVudUl0ZW1bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgW2luZGV4LCBpdGVtXSBvZiAoZGVmaW5pdGlvbi5tZW51ID8/IFtdKS5lbnRyaWVzKCkpIHtcbiAgICAgIG1lbnUucHVzaChcbiAgICAgICAgaXRlbS50eXBlID09PSBcImNvbW1hbmRcIlxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICBjb21tYW5kOiBhd2FpdCB0aGlzLmluc3RhbGxDb21tYW5kKFxuICAgICAgICAgICAgICAgIGRlZmluaXRpb24sXG4gICAgICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICAgICAgaXRlbS5jb21tYW5kLFxuICAgICAgICAgICAgICAgIGBtZW51LSR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgcHl0aG9uRW52aXJvbm1lbnQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBpdGVtLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIENsaVNlcnZpY2VEZWZpbml0aW9uU2NoZW1hLnBhcnNlKHtcbiAgICAgIC4uLmRlZmluaXRpb24sXG4gICAgICAuLi4ocHl0aG9uUGFja2FnZSA/IHsgcHl0aG9uUGFja2FnZSB9IDoge30pLFxuICAgICAgLi4uKGNvbW1hbmQgPyB7IGNvbW1hbmQgfSA6IHt9KSxcbiAgICAgIC4uLihtZW51Lmxlbmd0aCA+IDAgPyB7IG1lbnUgfSA6IHt9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaW5zdGFsbENvbW1hbmQoXG4gICAgZGVmaW5pdGlvbjogQ2xpU2VydmljZURlZmluaXRpb24sXG4gICAgb3duZXI6IFNlcnZpY2VQYWNrYWdlLFxuICAgIGNvbW1hbmQ6IENsaVNlcnZpY2VDb21tYW5kLFxuICAgIHB1cnBvc2U6IHN0cmluZyxcbiAgICBydW50aW1lRW52aXJvbm1lbnQ6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+LFxuICApOiBQcm9taXNlPENsaVNlcnZpY2VDb21tYW5kPiB7XG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSB7IC4uLmNvbW1hbmQuZW52aXJvbm1lbnQsIC4uLnJ1bnRpbWVFbnZpcm9ubWVudCB9O1xuICAgIGlmIChjb21tYW5kLmV4ZWN1dGFibGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbW1hbmQsXG4gICAgICAgIC4uLihPYmplY3Qua2V5cyhlbnZpcm9ubWVudCkubGVuZ3RoID4gMCA/IHsgZW52aXJvbm1lbnQgfSA6IHt9KSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGVudHJ5cG9pbnQgPSBjb21tYW5kLmVudHJ5cG9pbnQgPz8gb3duZXIuYmluKGNvbW1hbmQuYmluTmFtZSk7XG4gICAgY29uc3QgaW5zdGFsbGVkID0gYXdhaXQgdGhpcy5lbnN1cmVDb21waWxlZEJpbmFyeShcbiAgICAgIHRoaXMuYmluYXJ5TmFtZShkZWZpbml0aW9uLCBwdXJwb3NlKSxcbiAgICAgIHJlc29sdmUoZW50cnlwb2ludCksXG4gICAgICBvd25lci5kaXJlY3RvcnksXG4gICAgICBleHRlcm5hbFJ1bnRpbWVQYWNrYWdlcyhvd25lci5kZXBlbmRlbmNpZXMoKSksXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgZXhlY3V0YWJsZTogaW5zdGFsbGVkLnBhdGgsXG4gICAgICAuLi4oY29tbWFuZC5hcmd1bWVudHMgPyB7IGFyZ3VtZW50czogY29tbWFuZC5hcmd1bWVudHMgfSA6IHt9KSxcbiAgICAgIC4uLihPYmplY3Qua2V5cyhlbnZpcm9ubWVudCkubGVuZ3RoID4gMCA/IHsgZW52aXJvbm1lbnQgfSA6IHt9KSxcbiAgICAgIGN3ZDogY29tbWFuZC5jd2QgPz8gdGhpcy5nbG9iYWxIb21lRGlyZWN0b3J5LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVuc3VyZUNvbXBpbGVkQmluYXJ5KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBlbnRyeXBvaW50OiBzdHJpbmcsXG4gICAgd29ya2luZ0RpcmVjdG9yeTogc3RyaW5nLFxuICAgIGV4dGVybmFsOiByZWFkb25seSBzdHJpbmdbXSA9IFtdLFxuICApOiBQcm9taXNlPGJpbi5CaW5Db250ZXh0PiB7XG4gICAgcmV0dXJuIGJpbi5lbnN1cmUoXG4gICAgICBuYW1lLFxuICAgICAgYXN5bmMgKHsgdGVtcERpciB9KSA9PiB7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IGpvaW4odGVtcERpciwgZXhlY3V0YWJsZU5hbWUobmFtZSwgdGhpcy5ydW50aW1lLnBsYXRmb3JtKSk7XG4gICAgICAgIGF3YWl0IHRoaXMuY29tcGlsZXIoZW50cnlwb2ludCwgb3V0cHV0LCB3b3JraW5nRGlyZWN0b3J5LCBleHRlcm5hbCk7XG4gICAgICAgIHJldHVybiBwYXRoVG9GaWxlVVJMKG91dHB1dCkuaHJlZjtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRlc3RpbmF0aW9uOiB0aGlzLmJpbmFyeUNvbnRleHQobmFtZSksXG4gICAgICAgIHNraXBWZXJzaW9uQ2hlY2s6IHRydWUsXG4gICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbnN1cmVUcmF5QmluYXJ5KCk6IFByb21pc2U8YmluLkJpbkNvbnRleHQ+IHtcbiAgICBjb25zdCBuYW1lID0gdHJheUV4ZWN1dGFibGVOYW1lKHRoaXMucnVudGltZS5wbGF0Zm9ybSk7XG4gICAgY29uc3QgYmluRGlyID0gam9pbih0aGlzLmdsb2JhbEhvbWVEaXJlY3RvcnksIFwiYmluXCIsIFwidHJheWJpblwiKTtcbiAgICByZXR1cm4gYmluLmVuc3VyZShuYW1lLCBwYXRoVG9GaWxlVVJMKHRoaXMudHJheUV4ZWN1dGFibGUpLmhyZWYsIHtcbiAgICAgIGRlc3RpbmF0aW9uOiB7XG4gICAgICAgIHJvb3Q6IHRoaXMuZ2xvYmFsSG9tZURpcmVjdG9yeSxcbiAgICAgICAgYmluRGlyLFxuICAgICAgICBwYXRoOiBqb2luKGJpbkRpciwgbmFtZSksXG4gICAgICB9LFxuICAgICAgc2tpcFZlcnNpb25DaGVjazogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYmluYXJ5Q29udGV4dChuYW1lOiBzdHJpbmcpOiBiaW4uQmluQ29udGV4dCB7XG4gICAgY29uc3QgYmluRGlyID0gam9pbih0aGlzLmdsb2JhbEhvbWVEaXJlY3RvcnksIFwiYmluXCIpO1xuICAgIHJldHVybiB7XG4gICAgICByb290OiB0aGlzLmdsb2JhbEhvbWVEaXJlY3RvcnksXG4gICAgICBiaW5EaXIsXG4gICAgICBwYXRoOiBqb2luKGJpbkRpciwgZXhlY3V0YWJsZU5hbWUobmFtZSwgdGhpcy5ydW50aW1lLnBsYXRmb3JtKSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYmluYXJ5TmFtZShkZWZpbml0aW9uOiBDbGlTZXJ2aWNlRGVmaW5pdGlvbiwgcHVycG9zZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBuYW1lID0gc2FmZVRva2VuKGRlZmluaXRpb24ubmFtZS50b0xvd2VyQ2FzZSgpKS5yZXBsYWNlKC9bLl9dKy9nLCBcIi1cIik7XG4gICAgcmV0dXJuIHB1cnBvc2UgPT09IFwic2VydmljZVwiID8gbmFtZSA6IGAke25hbWV9LSR7cHVycG9zZX1gO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVIb3N0RW50cnlwb2ludCgpOiBzdHJpbmcge1xuICBjb25zdCBjdXJyZW50ID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpO1xuICBjb25zdCBzb3VyY2UgPVxuICAgIGV4dG5hbWUoY3VycmVudCkgPT09IFwiLnRzXCJcbiAgICAgID8gam9pbihkaXJuYW1lKGN1cnJlbnQpLCBcIl9ob3N0LnRzXCIpXG4gICAgICA6IHJlc29sdmUoZGlybmFtZShjdXJyZW50KSwgXCIuLlwiLCBcIi4uXCIsIFwic3JjXCIsIFwiX2hvc3QudHNcIik7XG4gIGlmIChleGlzdHNTeW5jKHNvdXJjZSkpIHJldHVybiBzb3VyY2U7XG4gIHRocm93IG5ldyBFcnJvcihgY291bGQgbm90IHJlc29sdmUgY2xpLXNlcnZpY2UgaG9zdCBzb3VyY2U6ICR7c291cmNlfWApO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlQnVuRXhlY3V0YWJsZSgpOiBzdHJpbmcge1xuICByZXR1cm4gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpLnJlc29sdmUoXCJidW4vYmluL2J1bi5leGVcIik7XG59XG5cbmZ1bmN0aW9uIHRyYXlFeGVjdXRhYmxlTmFtZShwbGF0Zm9ybTogTm9kZUpTLlBsYXRmb3JtKTogc3RyaW5nIHtcbiAgaWYgKHBsYXRmb3JtID09PSBcImRhcndpblwiKSByZXR1cm4gXCJ0cmF5X2Rhcndpbl9yZWxlYXNlXCI7XG4gIGlmIChwbGF0Zm9ybSA9PT0gXCJsaW51eFwiKSByZXR1cm4gXCJ0cmF5X2xpbnV4X3JlbGVhc2VcIjtcbiAgaWYgKHBsYXRmb3JtID09PSBcIndpbjMyXCIpIHJldHVybiBcInRyYXlfd2luZG93c19yZWxlYXNlLmV4ZVwiO1xuICB0aHJvdyBuZXcgRXJyb3IoYHN5c3RyYXkyIGRvZXMgbm90IHN1cHBvcnQgJHtwbGF0Zm9ybX1gKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVRyYXlFeGVjdXRhYmxlKHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm0pOiBzdHJpbmcge1xuICBjb25zdCBtYW5pZmVzdCA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKS5yZXNvbHZlKFwic3lzdHJheTIvcGFja2FnZS5qc29uXCIpO1xuICByZXR1cm4gam9pbihkaXJuYW1lKG1hbmlmZXN0KSwgXCJ0cmF5YmluXCIsIHRyYXlFeGVjdXRhYmxlTmFtZShwbGF0Zm9ybSkpO1xufVxuXG5mdW5jdGlvbiBleGVjdXRhYmxlTmFtZShuYW1lOiBzdHJpbmcsIHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm0pOiBzdHJpbmcge1xuICByZXR1cm4gcGxhdGZvcm0gPT09IFwid2luMzJcIiA/IGAke25hbWV9LmV4ZWAgOiBuYW1lO1xufVxuXG5mdW5jdGlvbiBzYWZlVG9rZW4odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHRva2VuID0gdmFsdWUucmVwbGFjZSgvW15hLXowLTkuXy1dKy9naSwgXCItXCIpLnJlcGxhY2UoL14tK3wtKyQvZywgXCJcIik7XG4gIGlmICghdG9rZW4pIHRocm93IG5ldyBUeXBlRXJyb3IoYGludmFsaWQgYmluYXJ5IHZlcnNpb246ICR7dmFsdWV9YCk7XG4gIHJldHVybiB0b2tlbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd2FpdEZvclN0YXRlKFxuICByZWFkOiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+LFxuICBleHBlY3RlZDogYm9vbGVhbixcbiAgdGltZW91dE1pbGxpc2Vjb25kczogbnVtYmVyLFxuICBtZXNzYWdlOiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZGVhZGxpbmUgPSBEYXRlLm5vdygpICsgdGltZW91dE1pbGxpc2Vjb25kcztcbiAgd2hpbGUgKERhdGUubm93KCkgPCBkZWFkbGluZSkge1xuICAgIGlmICgoYXdhaXQgcmVhZCgpKSA9PT0gZXhwZWN0ZWQpIHJldHVybjtcbiAgICBhd2FpdCBhc3luY1V0aWxzLnNsZWVwKFBPTExfSU5URVJWQUxfTUlMTElTRUNPTkRTKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"typescript": "^5.9.3"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@dbx-tools/
|
|
27
|
-
"@dbx-tools/core": "^0.9.
|
|
26
|
+
"@dbx-tools/core": "^0.9.60",
|
|
27
|
+
"@dbx-tools/shared-core": "^0.9.60",
|
|
28
28
|
"bun": "1.3.14",
|
|
29
29
|
"commander": "^15.0.0",
|
|
30
30
|
"systray2": "^2.1.4",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"./package.json": "./package.json"
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
|
-
"version": "0.9.
|
|
63
|
+
"version": "0.9.60",
|
|
64
64
|
"types": "./lib/index.d.ts",
|
|
65
65
|
"dbxToolsConfig": {
|
|
66
66
|
"tags": [
|
package/src/_package.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { dirname, isAbsolute, join, resolve } from "node:path";
|
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
|
|
6
6
|
import * as projectUtils from "@dbx-tools/core/project-utils";
|
|
7
|
+
import { object } from "@dbx-tools/shared-core";
|
|
7
8
|
|
|
8
9
|
export interface ServicePackage {
|
|
9
10
|
readonly directory: string;
|
|
@@ -103,7 +104,7 @@ function servicePackage(manifestPath: string, expectedName?: string): ServicePac
|
|
|
103
104
|
return resolveBin(directory, manifest.bin, name);
|
|
104
105
|
},
|
|
105
106
|
dependencies() {
|
|
106
|
-
const dependencies = isRecord(manifest.dependencies)
|
|
107
|
+
const dependencies = object.isRecord(manifest.dependencies)
|
|
107
108
|
? Object.keys(manifest.dependencies)
|
|
108
109
|
: [];
|
|
109
110
|
const require = createRequire(manifestPath);
|
|
@@ -126,7 +127,7 @@ function resolveBin(directory: string, value: unknown, name?: string): string {
|
|
|
126
127
|
if (name) throw new Error(`package exposes one unnamed bin, not ${name}`);
|
|
127
128
|
return resolve(directory, value);
|
|
128
129
|
}
|
|
129
|
-
if (!isRecord(value)) throw new Error("package has no bin");
|
|
130
|
+
if (!object.isRecord(value)) throw new Error("package has no bin");
|
|
130
131
|
if (name) {
|
|
131
132
|
const target = value[name];
|
|
132
133
|
if (typeof target !== "string") throw new Error(`package has no bin named ${name}`);
|
|
@@ -143,10 +144,6 @@ function resolveBin(directory: string, value: unknown, name?: string): string {
|
|
|
143
144
|
|
|
144
145
|
function readRecord(path: string): Record<string, unknown> {
|
|
145
146
|
const value: unknown = JSON.parse(readFileSync(path, "utf8"));
|
|
146
|
-
if (!isRecord(value)) throw new Error(`package manifest is not an object: ${path}`);
|
|
147
|
+
if (!object.isRecord(value)) throw new Error(`package manifest is not an object: ${path}`);
|
|
147
148
|
return value;
|
|
148
149
|
}
|
|
149
|
-
|
|
150
|
-
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
151
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
152
|
-
}
|
package/src/_runtime.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
|
|
4
4
|
import * as exec from "@dbx-tools/core/exec";
|
|
5
|
+
import { object } from "@dbx-tools/shared-core";
|
|
5
6
|
|
|
6
7
|
export function externalRuntimePackages(dependencies: Readonly<Record<string, string>>): string[] {
|
|
7
8
|
return Object.keys(dependencies).filter((name) => !name.startsWith("@dbx-tools/"));
|
|
@@ -77,7 +78,7 @@ export async function installServicePythonPackage(
|
|
|
77
78
|
async function readOptionalRecord(path: string): Promise<Record<string, unknown>> {
|
|
78
79
|
try {
|
|
79
80
|
const value: unknown = JSON.parse(await readFile(path, "utf8"));
|
|
80
|
-
if (!isRecord(value)) throw new Error(`JSON file is not an object: ${path}`);
|
|
81
|
+
if (!object.isRecord(value)) throw new Error(`JSON file is not an object: ${path}`);
|
|
81
82
|
return value;
|
|
82
83
|
} catch (error) {
|
|
83
84
|
if ((error as NodeJS.ErrnoException).code === "ENOENT") return {};
|
|
@@ -86,14 +87,10 @@ async function readOptionalRecord(path: string): Promise<Record<string, unknown>
|
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
function stringRecord(value: unknown): Record<string, string> {
|
|
89
|
-
if (!isRecord(value)) return {};
|
|
90
|
+
if (!object.isRecord(value)) return {};
|
|
90
91
|
return Object.fromEntries(
|
|
91
92
|
Object.entries(value).filter(
|
|
92
93
|
(entry): entry is [string, string] => typeof entry[1] === "string",
|
|
93
94
|
),
|
|
94
95
|
);
|
|
95
96
|
}
|
|
96
|
-
|
|
97
|
-
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
98
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
99
|
-
}
|
package/src/cli.ts
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { addArgs, parseArgs } from "@dbx-tools/cli-args/args";
|
|
11
10
|
import { Command } from "commander";
|
|
12
11
|
import { z } from "zod";
|
|
13
12
|
|
|
@@ -52,12 +51,14 @@ export function buildServiceCommand(
|
|
|
52
51
|
: `Install and manage the ${source.name} desktop service`,
|
|
53
52
|
);
|
|
54
53
|
|
|
55
|
-
const install =
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
const install = command
|
|
55
|
+
.command("install")
|
|
56
|
+
.description("Install the service for the current user and start it")
|
|
57
|
+
.option("--no-start", "Do not start the service after installation");
|
|
59
58
|
install.action(async () => {
|
|
60
|
-
const options =
|
|
59
|
+
const options = CliServiceInstallOptionsSchema.parse({
|
|
60
|
+
start: install.getOptionValue("start"),
|
|
61
|
+
});
|
|
61
62
|
await service().install({ start: options.start });
|
|
62
63
|
});
|
|
63
64
|
|
package/src/definition.ts
CHANGED
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
* @module
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import { serializeArgs, type ArgumentSource } from "@dbx-tools/cli-args/args";
|
|
12
11
|
import { z } from "zod";
|
|
13
12
|
|
|
14
13
|
import { resolveServicePackage, servicePackageDefaults } from "./_package.ts";
|
|
@@ -52,13 +51,8 @@ export const CliServiceCommandSchema = z
|
|
|
52
51
|
/** A process launched by the system-tray service host. */
|
|
53
52
|
export type CliServiceCommand = z.infer<typeof CliServiceCommandSchema>;
|
|
54
53
|
|
|
55
|
-
/** Command input accepted by {@link defineService}
|
|
56
|
-
export type CliServiceCommandInput =
|
|
57
|
-
/** Positional or pre-serialized arguments placed before generated options. */
|
|
58
|
-
readonly arguments?: readonly string[];
|
|
59
|
-
/** Zod defaults or concrete option values converted into CLI flags. */
|
|
60
|
-
readonly options?: ArgumentSource;
|
|
61
|
-
};
|
|
54
|
+
/** Command input accepted by {@link defineService}. */
|
|
55
|
+
export type CliServiceCommandInput = CliServiceCommand;
|
|
62
56
|
|
|
63
57
|
/** A typed custom item inserted between the default service title and Quit item. */
|
|
64
58
|
export const CliServiceMenuItemSchema = z.discriminatedUnion("type", [
|
|
@@ -178,15 +172,9 @@ function resolveServiceCommand(
|
|
|
178
172
|
command: CliServiceCommandInput | undefined,
|
|
179
173
|
): CliServiceCommand | undefined {
|
|
180
174
|
if (!command) return undefined;
|
|
181
|
-
const { options, ...definition } = command;
|
|
182
|
-
const arguments_ = [
|
|
183
|
-
...(definition.arguments ?? []),
|
|
184
|
-
...(options === undefined ? [] : serializeArgs(options)),
|
|
185
|
-
];
|
|
186
175
|
return CliServiceCommandSchema.parse({
|
|
187
|
-
...
|
|
188
|
-
environment: { NODE_ENV: "production", ...
|
|
189
|
-
...(arguments_.length > 0 ? { arguments: arguments_ } : {}),
|
|
176
|
+
...command,
|
|
177
|
+
environment: { NODE_ENV: "production", ...command.environment },
|
|
190
178
|
});
|
|
191
179
|
}
|
|
192
180
|
|
package/src/service.ts
CHANGED
|
@@ -17,6 +17,7 @@ import { dirname, extname, join, resolve } from "node:path";
|
|
|
17
17
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
18
18
|
|
|
19
19
|
import * as bin from "@dbx-tools/core/bin";
|
|
20
|
+
import { asyncUtils } from "@dbx-tools/shared-core";
|
|
20
21
|
import { compileWithBun } from "./_compile.ts";
|
|
21
22
|
import { readServiceDefinition, writeServiceDefinition } from "./_config.ts";
|
|
22
23
|
import { requestServiceControl } from "./_control.ts";
|
|
@@ -473,7 +474,7 @@ async function waitForState(
|
|
|
473
474
|
const deadline = Date.now() + timeoutMilliseconds;
|
|
474
475
|
while (Date.now() < deadline) {
|
|
475
476
|
if ((await read()) === expected) return;
|
|
476
|
-
await
|
|
477
|
+
await asyncUtils.sleep(POLL_INTERVAL_MILLISECONDS);
|
|
477
478
|
}
|
|
478
479
|
throw new Error(message);
|
|
479
480
|
}
|