@dbx-tools/cli-service 0.9.71 → 0.9.72
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/index.ts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -2
- package/lib/src/_package.js +40 -10
- package/package.json +3 -3
- package/src/_package.ts +34 -7
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.72";
|
|
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.72";
|
|
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.72";
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx3QkFBd0IsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxVQUFVLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLDZCQUE2QixFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbkosT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9jbGktc2VydmljZVwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjcyXCI7XG5leHBvcnQgKiBhcyBjbGkgZnJvbSBcIi4vc3JjL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgZGVmaW5pdGlvbiBmcm9tIFwiLi9zcmMvZGVmaW5pdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgaWNvbiBmcm9tIFwiLi9zcmMvaWNvbi50c1wiO1xuZXhwb3J0ICogYXMgc2VydmljZSBmcm9tIFwiLi9zcmMvc2VydmljZS50c1wiO1xuZXhwb3J0IHsgQ2xpU2VydmljZUluc3RhbGxPcHRpb25zU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2NsaS50c1wiO1xuZXhwb3J0IHR5cGUgeyBDbGlTZXJ2aWNlRGVmaW5pdGlvblNvdXJjZSwgQ2xpU2VydmljZUNsaURlcGVuZGVuY2llcyB9IGZyb20gXCIuL3NyYy9jbGkudHNcIjtcbmV4cG9ydCB7IENsaVNlcnZpY2VDb21tYW5kU2NoZW1hLCBDbGlTZXJ2aWNlTWVudUl0ZW1TY2hlbWEsIENsaVNlcnZpY2VQeXRob25QYWNrYWdlU2NoZW1hLCBDbGlTZXJ2aWNlRGVmaW5pdGlvblNjaGVtYSB9IGZyb20gXCIuL3NyYy9kZWZpbml0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IENsaVNlcnZpY2VDb21tYW5kLCBDbGlTZXJ2aWNlQ29tbWFuZElucHV0LCBDbGlTZXJ2aWNlTWVudUl0ZW0sIENsaVNlcnZpY2VQeXRob25QYWNrYWdlLCBDbGlTZXJ2aWNlUHl0aG9uUGFja2FnZUlucHV0LCBDbGlTZXJ2aWNlRGVmaW5pdGlvbiwgQ2xpU2VydmljZURlZmluaXRpb25PcHRpb25zIH0gZnJvbSBcIi4vc3JjL2RlZmluaXRpb24udHNcIjtcbmV4cG9ydCB7IENsaVNlcnZpY2UgfSBmcm9tIFwiLi9zcmMvc2VydmljZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBDbGlTZXJ2aWNlQ29tcGlsZXIsIENsaVNlcnZpY2VSdW50aW1lSW5zdGFsbGVyLCBDbGlTZXJ2aWNlUHl0aG9uSW5zdGFsbGVyLCBDbGlTZXJ2aWNlUnVudGltZU9wdGlvbnMsIENsaVNlcnZpY2VTdGF0dXMsIENsaVNlcnZpY2VMaWZlY3ljbGUgfSBmcm9tIFwiLi9zcmMvc2VydmljZS50c1wiO1xuIl19
|
package/lib/src/_package.js
CHANGED
|
@@ -65,14 +65,7 @@ function localManifest(reference) {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
function installedManifest(name) {
|
|
68
|
-
|
|
69
|
-
return createRequire(import.meta.url).resolve(`${name}/package.json`);
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
if (error.code === "MODULE_NOT_FOUND")
|
|
73
|
-
return undefined;
|
|
74
|
-
throw error;
|
|
75
|
-
}
|
|
68
|
+
return packageManifest(createRequire(import.meta.url), name);
|
|
76
69
|
}
|
|
77
70
|
function servicePackage(manifestPath, expectedName) {
|
|
78
71
|
const manifest = readRecord(manifestPath);
|
|
@@ -99,7 +92,9 @@ function servicePackage(manifestPath, expectedName) {
|
|
|
99
92
|
: [];
|
|
100
93
|
const require = createRequire(manifestPath);
|
|
101
94
|
return Object.fromEntries(dependencies.map((dependency) => {
|
|
102
|
-
const path = require
|
|
95
|
+
const path = packageManifest(require, dependency);
|
|
96
|
+
if (!path)
|
|
97
|
+
throw new Error(`could not resolve dependency package: ${dependency}`);
|
|
103
98
|
const resolved = readRecord(path);
|
|
104
99
|
if (typeof resolved.version !== "string" || !resolved.version) {
|
|
105
100
|
throw new Error(`dependency has no version: ${path}`);
|
|
@@ -109,6 +104,41 @@ function servicePackage(manifestPath, expectedName) {
|
|
|
109
104
|
},
|
|
110
105
|
};
|
|
111
106
|
}
|
|
107
|
+
/** Resolve a package manifest without requiring its unexported `package.json` subpath. */
|
|
108
|
+
function packageManifest(require, name) {
|
|
109
|
+
for (const specifier of [name, `${name}/package.json`]) {
|
|
110
|
+
try {
|
|
111
|
+
const entry = require.resolve(specifier);
|
|
112
|
+
const manifest = namedManifest(entry, name);
|
|
113
|
+
if (manifest)
|
|
114
|
+
return manifest;
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
const code = error.code;
|
|
118
|
+
if (code !== "MODULE_NOT_FOUND" && code !== "ERR_PACKAGE_PATH_NOT_EXPORTED")
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
for (const directory of require.resolve.paths(name) ?? []) {
|
|
123
|
+
const manifest = join(directory, name, "package.json");
|
|
124
|
+
if (existsSync(manifest) && readRecord(manifest).name === name)
|
|
125
|
+
return manifest;
|
|
126
|
+
}
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
/** Walk from a resolved package entry to the nearest manifest with the expected name. */
|
|
130
|
+
function namedManifest(path, name) {
|
|
131
|
+
let current = dirname(path);
|
|
132
|
+
while (true) {
|
|
133
|
+
const manifest = join(current, "package.json");
|
|
134
|
+
if (existsSync(manifest) && readRecord(manifest).name === name)
|
|
135
|
+
return manifest;
|
|
136
|
+
const parent = dirname(current);
|
|
137
|
+
if (parent === current)
|
|
138
|
+
return undefined;
|
|
139
|
+
current = parent;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
112
142
|
function resolveBin(directory, value, name) {
|
|
113
143
|
if (typeof value === "string") {
|
|
114
144
|
if (name)
|
|
@@ -135,4 +165,4 @@ function readRecord(path) {
|
|
|
135
165
|
throw new Error(`package manifest is not an object: ${path}`);
|
|
136
166
|
return value;
|
|
137
167
|
}
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3BhY2thZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX3BhY2thZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFekMsT0FBTyxLQUFLLFlBQVksTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFVaEQsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxTQUFpQixFQUNqQixNQUFjLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFFM0IsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksS0FBSztRQUFFLE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXhDLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQztJQUN2QixNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxJQUFJLFNBQVM7UUFBRSxPQUFPLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFdEQsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxJQUFJLENBQUMsSUFBSTtRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakUsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUN4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Q0FBQyxDQUFDO0lBQzNGLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBpc0Fic29sdXRlLCBqb2luLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gXCJub2RlOnVybFwiO1xuXG5pbXBvcnQgKiBhcyBwcm9qZWN0VXRpbHMgZnJvbSBcIkBkYngtdG9vbHMvY29yZS9wcm9qZWN0LXV0aWxzXCI7XG5pbXBvcnQgeyBvYmplY3QgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VQYWNrYWdlIHtcbiAgcmVhZG9ubHkgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICBiaW4obmFtZT86IHN0cmluZyk6IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzKCk6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNlcnZpY2VQYWNrYWdlKFxuICByZWZlcmVuY2U6IHN0cmluZyxcbiAgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpLFxuKTogU2VydmljZVBhY2thZ2Uge1xuICBjb25zdCBsb2NhbCA9IGxvY2FsTWFuaWZlc3QocmVmZXJlbmNlKTtcbiAgaWYgKGxvY2FsKSByZXR1cm4gc2VydmljZVBhY2thZ2UobG9jYWwpO1xuXG4gIGNvbnN0IG5hbWUgPSByZWZlcmVuY2U7XG4gIGNvbnN0IGluc3RhbGxlZCA9IGluc3RhbGxlZE1hbmlmZXN0KG5hbWUpO1xuICBpZiAoaW5zdGFsbGVkKSByZXR1cm4gc2VydmljZVBhY2thZ2UoaW5zdGFsbGVkLCBuYW1lKTtcblxuICBjb25zdCByb290ID0gcHJvamVjdFV0aWxzLnJvb3QoY3dkKTtcbiAgaWYgKCFyb290KSB0aHJvdyBuZXcgRXJyb3IoYGNvdWxkIG5vdCByZXNvbHZlIHBhY2thZ2U6ICR7bmFtZX1gKTtcbiAgY29uc3QgbWFuaWZlc3QgPSByZWFkUmVjb3JkKGpvaW4ocm9vdCwgXCJwYWNrYWdlLmpzb25cIikpO1xuICBjb25zdCB3b3Jrc3BhY2VzID0gQXJyYXkuaXNBcnJheShtYW5pZmVzdC53b3Jrc3BhY2VzKSA/IG1hbmlmZXN0LndvcmtzcGFjZXMgOiBbXTtcbiAgZm9yIChjb25zdCBtZW1iZXIgb2Ygd29ya3NwYWNlcykge1xuICAgIGlmICh0eXBlb2YgbWVtYmVyICE9PSBcInN0cmluZ1wiIHx8IC9bKj9bXFxde31dLy50ZXN0KG1lbWJlcikpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHBhdGggPSBqb2luKHJvb3QsIG1lbWJlciwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgaWYgKCFleGlzdHNTeW5jKHBhdGgpKSBjb250aW51ZTtcbiAgICBjb25zdCBjYW5kaWRhdGUgPSByZWFkUmVjb3JkKHBhdGgpO1xuICAgIGlmIChjYW5kaWRhdGUubmFtZSA9PT0gbmFtZSkgcmV0dXJuIHNlcnZpY2VQYWNrYWdlKHBhdGgsIG5hbWUpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgY291bGQgbm90IHJlc29sdmUgaW5zdGFsbGVkIG9yIHdvcmtzcGFjZSBwYWNrYWdlOiAke25hbWV9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2aWNlUGFja2FnZURlZmF1bHRzKHBrZzogU2VydmljZVBhY2thZ2UpOiB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn0ge1xuICBjb25zdCBzZWdtZW50cyA9IHBrZy5uYW1lLnJlcGxhY2UoL15ALywgXCJcIikuc3BsaXQoXCIvXCIpO1xuICBjb25zdCByYXdOYW1lID0gc2VnbWVudHMuYXQoLTEpITtcbiAgY29uc3QgcmF3U2NvcGUgPSBzZWdtZW50cy5sZW5ndGggPiAxID8gc2VnbWVudHNbMF0hLnNwbGl0KFwiLVwiKVswXSEgOiBcIlwiO1xuICBjb25zdCBuYW1lID0gcmF3TmFtZS5yZXBsYWNlKC9eY2xpLS8sIFwiXCIpLnJlcGxhY2VBbGwoXCItXCIsIFwiIFwiKTtcbiAgcmV0dXJuIHtcbiAgICBpZDogcGtnLm5hbWVcbiAgICAgIC5yZXBsYWNlKC9eQC8sIFwiXCIpXG4gICAgICAucmVwbGFjZUFsbChcIi9cIiwgXCIuXCIpXG4gICAgICAucmVwbGFjZSgvW15hLXowLTkuXy1dKy9naSwgXCItXCIpLFxuICAgIG5hbWU6IFtyYXdTY29wZSwgbmFtZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBsb2NhbE1hbmlmZXN0KHJlZmVyZW5jZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgbGV0IHBhdGg6IHN0cmluZztcbiAgaWYgKHJlZmVyZW5jZS5zdGFydHNXaXRoKFwiZmlsZTpcIikpIHtcbiAgICBwYXRoID0gZmlsZVVSTFRvUGF0aChyZWZlcmVuY2UpO1xuICB9IGVsc2UgaWYgKGlzQWJzb2x1dGUocmVmZXJlbmNlKSkge1xuICAgIHBhdGggPSByZWZlcmVuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBsZXQgY3VycmVudCA9IGV4aXN0c1N5bmMocGF0aCkgPyBkaXJuYW1lKHBhdGgpIDogcGF0aDtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBtYW5pZmVzdCA9IGpvaW4oY3VycmVudCwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgaWYgKGV4aXN0c1N5bmMobWFuaWZlc3QpKSByZXR1cm4gbWFuaWZlc3Q7XG4gICAgY29uc3QgcGFyZW50ID0gZGlybmFtZShjdXJyZW50KTtcbiAgICBpZiAocGFyZW50ID09PSBjdXJyZW50KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGN1cnJlbnQgPSBwYXJlbnQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5zdGFsbGVkTWFuaWZlc3QobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpLnJlc29sdmUoYCR7bmFtZX0vcGFja2FnZS5qc29uYCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKChlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgPT09IFwiTU9EVUxFX05PVF9GT1VORFwiKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNlcnZpY2VQYWNrYWdlKG1hbmlmZXN0UGF0aDogc3RyaW5nLCBleHBlY3RlZE5hbWU/OiBzdHJpbmcpOiBTZXJ2aWNlUGFja2FnZSB7XG4gIGNvbnN0IG1hbmlmZXN0ID0gcmVhZFJlY29yZChtYW5pZmVzdFBhdGgpO1xuICBpZiAodHlwZW9mIG1hbmlmZXN0Lm5hbWUgIT09IFwic3RyaW5nXCIgfHwgIW1hbmlmZXN0Lm5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHBhY2thZ2UgaGFzIG5vIG5hbWU6ICR7bWFuaWZlc3RQYXRofWApO1xuICB9XG4gIGlmIChleHBlY3RlZE5hbWUgJiYgbWFuaWZlc3QubmFtZSAhPT0gZXhwZWN0ZWROYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGByZXNvbHZlZCBwYWNrYWdlIG5hbWUgZG9lcyBub3QgbWF0Y2ggJHtleHBlY3RlZE5hbWV9OiAke21hbmlmZXN0UGF0aH1gKTtcbiAgfVxuICBpZiAodHlwZW9mIG1hbmlmZXN0LnZlcnNpb24gIT09IFwic3RyaW5nXCIgfHwgIW1hbmlmZXN0LnZlcnNpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHBhY2thZ2UgaGFzIG5vIHZlcnNpb246ICR7bWFuaWZlc3RQYXRofWApO1xuICB9XG4gIGNvbnN0IGRpcmVjdG9yeSA9IGRpcm5hbWUobWFuaWZlc3RQYXRoKTtcbiAgcmV0dXJuIHtcbiAgICBkaXJlY3RvcnksXG4gICAgbmFtZTogbWFuaWZlc3QubmFtZSxcbiAgICB2ZXJzaW9uOiBtYW5pZmVzdC52ZXJzaW9uLFxuICAgIGJpbihuYW1lKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZUJpbihkaXJlY3RvcnksIG1hbmlmZXN0LmJpbiwgbmFtZSk7XG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXMoKSB7XG4gICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSBvYmplY3QuaXNSZWNvcmQobWFuaWZlc3QuZGVwZW5kZW5jaWVzKVxuICAgICAgICA/IE9iamVjdC5rZXlzKG1hbmlmZXN0LmRlcGVuZGVuY2llcylcbiAgICAgICAgOiBbXTtcbiAgICAgIGNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKG1hbmlmZXN0UGF0aCk7XG4gICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBkZXBlbmRlbmNpZXMubWFwKChkZXBlbmRlbmN5KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGF0aCA9IHJlcXVpcmUucmVzb2x2ZShgJHtkZXBlbmRlbmN5fS9wYWNrYWdlLmpzb25gKTtcbiAgICAgICAgICBjb25zdCByZXNvbHZlZCA9IHJlYWRSZWNvcmQocGF0aCk7XG4gICAgICAgICAgaWYgKHR5cGVvZiByZXNvbHZlZC52ZXJzaW9uICE9PSBcInN0cmluZ1wiIHx8ICFyZXNvbHZlZC52ZXJzaW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGRlcGVuZGVuY3kgaGFzIG5vIHZlcnNpb246ICR7cGF0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFtkZXBlbmRlbmN5LCByZXNvbHZlZC52ZXJzaW9uXTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVCaW4oZGlyZWN0b3J5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCBuYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGlmIChuYW1lKSB0aHJvdyBuZXcgRXJyb3IoYHBhY2thZ2UgZXhwb3NlcyBvbmUgdW5uYW1lZCBiaW4sIG5vdCAke25hbWV9YCk7XG4gICAgcmV0dXJuIHJlc29sdmUoZGlyZWN0b3J5LCB2YWx1ZSk7XG4gIH1cbiAgaWYgKCFvYmplY3QuaXNSZWNvcmQodmFsdWUpKSB0aHJvdyBuZXcgRXJyb3IoXCJwYWNrYWdlIGhhcyBubyBiaW5cIik7XG4gIGlmIChuYW1lKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gdmFsdWVbbmFtZV07XG4gICAgaWYgKHR5cGVvZiB0YXJnZXQgIT09IFwic3RyaW5nXCIpIHRocm93IG5ldyBFcnJvcihgcGFja2FnZSBoYXMgbm8gYmluIG5hbWVkICR7bmFtZX1gKTtcbiAgICByZXR1cm4gcmVzb2x2ZShkaXJlY3RvcnksIHRhcmdldCk7XG4gIH1cbiAgY29uc3QgdGFyZ2V0cyA9IE9iamVjdC52YWx1ZXModmFsdWUpLmZpbHRlcihcbiAgICAodGFyZ2V0KTogdGFyZ2V0IGlzIHN0cmluZyA9PiB0eXBlb2YgdGFyZ2V0ID09PSBcInN0cmluZ1wiLFxuICApO1xuICBpZiAodGFyZ2V0cy5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJwYWNrYWdlIGhhcyBtdWx0aXBsZSBiaW5zOyBjb21tYW5kLmJpbk5hbWUgaXMgcmVxdWlyZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJlc29sdmUoZGlyZWN0b3J5LCB0YXJnZXRzWzBdISk7XG59XG5cbmZ1bmN0aW9uIHJlYWRSZWNvcmQocGF0aDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCB2YWx1ZTogdW5rbm93biA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhdGgsIFwidXRmOFwiKSk7XG4gIGlmICghb2JqZWN0LmlzUmVjb3JkKHZhbHVlKSkgdGhyb3cgbmV3IEVycm9yKGBwYWNrYWdlIG1hbmlmZXN0IGlzIG5vdCBhbiBvYmplY3Q6ICR7cGF0aH1gKTtcbiAgcmV0dXJuIHZhbHVlO1xufVxuIl19
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3BhY2thZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX3BhY2thZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFekMsT0FBTyxLQUFLLFlBQVksTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFVaEQsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxTQUFpQixFQUNqQixNQUFjLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFFM0IsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksS0FBSztRQUFFLE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXhDLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQztJQUN2QixNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxJQUFJLFNBQVM7UUFBRSxPQUFPLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFdEQsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxJQUFJLENBQUMsSUFBSTtRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakUsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUN4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QUM5QixNQUFNLEtBQUssR0FBWSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM5RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBpc0Fic29sdXRlLCBqb2luLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gXCJub2RlOnVybFwiO1xuXG5pbXBvcnQgKiBhcyBwcm9qZWN0VXRpbHMgZnJvbSBcIkBkYngtdG9vbHMvY29yZS9wcm9qZWN0LXV0aWxzXCI7XG5pbXBvcnQgeyBvYmplY3QgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VQYWNrYWdlIHtcbiAgcmVhZG9ubHkgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICBiaW4obmFtZT86IHN0cmluZyk6IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzKCk6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNlcnZpY2VQYWNrYWdlKFxuICByZWZlcmVuY2U6IHN0cmluZyxcbiAgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpLFxuKTogU2VydmljZVBhY2thZ2Uge1xuICBjb25zdCBsb2NhbCA9IGxvY2FsTWFuaWZlc3QocmVmZXJlbmNlKTtcbiAgaWYgKGxvY2FsKSByZXR1cm4gc2VydmljZVBhY2thZ2UobG9jYWwpO1xuXG4gIGNvbnN0IG5hbWUgPSByZWZlcmVuY2U7XG4gIGNvbnN0IGluc3RhbGxlZCA9IGluc3RhbGxlZE1hbmlmZXN0KG5hbWUpO1xuICBpZiAoaW5zdGFsbGVkKSByZXR1cm4gc2VydmljZVBhY2thZ2UoaW5zdGFsbGVkLCBuYW1lKTtcblxuICBjb25zdCByb290ID0gcHJvamVjdFV0aWxzLnJvb3QoY3dkKTtcbiAgaWYgKCFyb290KSB0aHJvdyBuZXcgRXJyb3IoYGNvdWxkIG5vdCByZXNvbHZlIHBhY2thZ2U6ICR7bmFtZX1gKTtcbiAgY29uc3QgbWFuaWZlc3QgPSByZWFkUmVjb3JkKGpvaW4ocm9vdCwgXCJwYWNrYWdlLmpzb25cIikpO1xuICBjb25zdCB3b3Jrc3BhY2VzID0gQXJyYXkuaXNBcnJheShtYW5pZmVzdC53b3Jrc3BhY2VzKSA/IG1hbmlmZXN0LndvcmtzcGFjZXMgOiBbXTtcbiAgZm9yIChjb25zdCBtZW1iZXIgb2Ygd29ya3NwYWNlcykge1xuICAgIGlmICh0eXBlb2YgbWVtYmVyICE9PSBcInN0cmluZ1wiIHx8IC9bKj9bXFxde31dLy50ZXN0KG1lbWJlcikpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHBhdGggPSBqb2luKHJvb3QsIG1lbWJlciwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgaWYgKCFleGlzdHNTeW5jKHBhdGgpKSBjb250aW51ZTtcbiAgICBjb25zdCBjYW5kaWRhdGUgPSByZWFkUmVjb3JkKHBhdGgpO1xuICAgIGlmIChjYW5kaWRhdGUubmFtZSA9PT0gbmFtZSkgcmV0dXJuIHNlcnZpY2VQYWNrYWdlKHBhdGgsIG5hbWUpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgY291bGQgbm90IHJlc29sdmUgaW5zdGFsbGVkIG9yIHdvcmtzcGFjZSBwYWNrYWdlOiAke25hbWV9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2aWNlUGFja2FnZURlZmF1bHRzKHBrZzogU2VydmljZVBhY2thZ2UpOiB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn0ge1xuICBjb25zdCBzZWdtZW50cyA9IHBrZy5uYW1lLnJlcGxhY2UoL15ALywgXCJcIikuc3BsaXQoXCIvXCIpO1xuICBjb25zdCByYXdOYW1lID0gc2VnbWVudHMuYXQoLTEpITtcbiAgY29uc3QgcmF3U2NvcGUgPSBzZWdtZW50cy5sZW5ndGggPiAxID8gc2VnbWVudHNbMF0hLnNwbGl0KFwiLVwiKVswXSEgOiBcIlwiO1xuICBjb25zdCBuYW1lID0gcmF3TmFtZS5yZXBsYWNlKC9eY2xpLS8sIFwiXCIpLnJlcGxhY2VBbGwoXCItXCIsIFwiIFwiKTtcbiAgcmV0dXJuIHtcbiAgICBpZDogcGtnLm5hbWVcbiAgICAgIC5yZXBsYWNlKC9eQC8sIFwiXCIpXG4gICAgICAucmVwbGFjZUFsbChcIi9cIiwgXCIuXCIpXG4gICAgICAucmVwbGFjZSgvW15hLXowLTkuXy1dKy9naSwgXCItXCIpLFxuICAgIG5hbWU6IFtyYXdTY29wZSwgbmFtZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBsb2NhbE1hbmlmZXN0KHJlZmVyZW5jZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgbGV0IHBhdGg6IHN0cmluZztcbiAgaWYgKHJlZmVyZW5jZS5zdGFydHNXaXRoKFwiZmlsZTpcIikpIHtcbiAgICBwYXRoID0gZmlsZVVSTFRvUGF0aChyZWZlcmVuY2UpO1xuICB9IGVsc2UgaWYgKGlzQWJzb2x1dGUocmVmZXJlbmNlKSkge1xuICAgIHBhdGggPSByZWZlcmVuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBsZXQgY3VycmVudCA9IGV4aXN0c1N5bmMocGF0aCkgPyBkaXJuYW1lKHBhdGgpIDogcGF0aDtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBtYW5pZmVzdCA9IGpvaW4oY3VycmVudCwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgaWYgKGV4aXN0c1N5bmMobWFuaWZlc3QpKSByZXR1cm4gbWFuaWZlc3Q7XG4gICAgY29uc3QgcGFyZW50ID0gZGlybmFtZShjdXJyZW50KTtcbiAgICBpZiAocGFyZW50ID09PSBjdXJyZW50KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGN1cnJlbnQgPSBwYXJlbnQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5zdGFsbGVkTWFuaWZlc3QobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHBhY2thZ2VNYW5pZmVzdChjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCksIG5hbWUpO1xufVxuXG5mdW5jdGlvbiBzZXJ2aWNlUGFja2FnZShtYW5pZmVzdFBhdGg6IHN0cmluZywgZXhwZWN0ZWROYW1lPzogc3RyaW5nKTogU2VydmljZVBhY2thZ2Uge1xuICBjb25zdCBtYW5pZmVzdCA9IHJlYWRSZWNvcmQobWFuaWZlc3RQYXRoKTtcbiAgaWYgKHR5cGVvZiBtYW5pZmVzdC5uYW1lICE9PSBcInN0cmluZ1wiIHx8ICFtYW5pZmVzdC5uYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwYWNrYWdlIGhhcyBubyBuYW1lOiAke21hbmlmZXN0UGF0aH1gKTtcbiAgfVxuICBpZiAoZXhwZWN0ZWROYW1lICYmIG1hbmlmZXN0Lm5hbWUgIT09IGV4cGVjdGVkTmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgcmVzb2x2ZWQgcGFja2FnZSBuYW1lIGRvZXMgbm90IG1hdGNoICR7ZXhwZWN0ZWROYW1lfTogJHttYW5pZmVzdFBhdGh9YCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBtYW5pZmVzdC52ZXJzaW9uICE9PSBcInN0cmluZ1wiIHx8ICFtYW5pZmVzdC52ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwYWNrYWdlIGhhcyBubyB2ZXJzaW9uOiAke21hbmlmZXN0UGF0aH1gKTtcbiAgfVxuICBjb25zdCBkaXJlY3RvcnkgPSBkaXJuYW1lKG1hbmlmZXN0UGF0aCk7XG4gIHJldHVybiB7XG4gICAgZGlyZWN0b3J5LFxuICAgIG5hbWU6IG1hbmlmZXN0Lm5hbWUsXG4gICAgdmVyc2lvbjogbWFuaWZlc3QudmVyc2lvbixcbiAgICBiaW4obmFtZSkge1xuICAgICAgcmV0dXJuIHJlc29sdmVCaW4oZGlyZWN0b3J5LCBtYW5pZmVzdC5iaW4sIG5hbWUpO1xuICAgIH0sXG4gICAgZGVwZW5kZW5jaWVzKCkge1xuICAgICAgY29uc3QgZGVwZW5kZW5jaWVzID0gb2JqZWN0LmlzUmVjb3JkKG1hbmlmZXN0LmRlcGVuZGVuY2llcylcbiAgICAgICAgPyBPYmplY3Qua2V5cyhtYW5pZmVzdC5kZXBlbmRlbmNpZXMpXG4gICAgICAgIDogW107XG4gICAgICBjb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShtYW5pZmVzdFBhdGgpO1xuICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgZGVwZW5kZW5jaWVzLm1hcCgoZGVwZW5kZW5jeSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBhdGggPSBwYWNrYWdlTWFuaWZlc3QocmVxdWlyZSwgZGVwZW5kZW5jeSk7XG4gICAgICAgICAgaWYgKCFwYXRoKSB0aHJvdyBuZXcgRXJyb3IoYGNvdWxkIG5vdCByZXNvbHZlIGRlcGVuZGVuY3kgcGFja2FnZTogJHtkZXBlbmRlbmN5fWApO1xuICAgICAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVhZFJlY29yZChwYXRoKTtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlc29sdmVkLnZlcnNpb24gIT09IFwic3RyaW5nXCIgfHwgIXJlc29sdmVkLnZlcnNpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgZGVwZW5kZW5jeSBoYXMgbm8gdmVyc2lvbjogJHtwYXRofWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gW2RlcGVuZGVuY3ksIHJlc29sdmVkLnZlcnNpb25dO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqIFJlc29sdmUgYSBwYWNrYWdlIG1hbmlmZXN0IHdpdGhvdXQgcmVxdWlyaW5nIGl0cyB1bmV4cG9ydGVkIGBwYWNrYWdlLmpzb25gIHN1YnBhdGguICovXG5mdW5jdGlvbiBwYWNrYWdlTWFuaWZlc3QocmVxdWlyZTogTm9kZUpTLlJlcXVpcmUsIG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3Qgc3BlY2lmaWVyIG9mIFtuYW1lLCBgJHtuYW1lfS9wYWNrYWdlLmpzb25gXSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbnRyeSA9IHJlcXVpcmUucmVzb2x2ZShzcGVjaWZpZXIpO1xuICAgICAgY29uc3QgbWFuaWZlc3QgPSBuYW1lZE1hbmlmZXN0KGVudHJ5LCBuYW1lKTtcbiAgICAgIGlmIChtYW5pZmVzdCkgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBjb2RlID0gKGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZTtcbiAgICAgIGlmIChjb2RlICE9PSBcIk1PRFVMRV9OT1RfRk9VTkRcIiAmJiBjb2RlICE9PSBcIkVSUl9QQUNLQUdFX1BBVEhfTk9UX0VYUE9SVEVEXCIpIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuICBmb3IgKGNvbnN0IGRpcmVjdG9yeSBvZiByZXF1aXJlLnJlc29sdmUucGF0aHMobmFtZSkgPz8gW10pIHtcbiAgICBjb25zdCBtYW5pZmVzdCA9IGpvaW4oZGlyZWN0b3J5LCBuYW1lLCBcInBhY2thZ2UuanNvblwiKTtcbiAgICBpZiAoZXhpc3RzU3luYyhtYW5pZmVzdCkgJiYgcmVhZFJlY29yZChtYW5pZmVzdCkubmFtZSA9PT0gbmFtZSkgcmV0dXJuIG1hbmlmZXN0O1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiBXYWxrIGZyb20gYSByZXNvbHZlZCBwYWNrYWdlIGVudHJ5IHRvIHRoZSBuZWFyZXN0IG1hbmlmZXN0IHdpdGggdGhlIGV4cGVjdGVkIG5hbWUuICovXG5mdW5jdGlvbiBuYW1lZE1hbmlmZXN0KHBhdGg6IHN0cmluZywgbmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgbGV0IGN1cnJlbnQgPSBkaXJuYW1lKHBhdGgpO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gam9pbihjdXJyZW50LCBcInBhY2thZ2UuanNvblwiKTtcbiAgICBpZiAoZXhpc3RzU3luYyhtYW5pZmVzdCkgJiYgcmVhZFJlY29yZChtYW5pZmVzdCkubmFtZSA9PT0gbmFtZSkgcmV0dXJuIG1hbmlmZXN0O1xuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoY3VycmVudCk7XG4gICAgaWYgKHBhcmVudCA9PT0gY3VycmVudCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjdXJyZW50ID0gcGFyZW50O1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVCaW4oZGlyZWN0b3J5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCBuYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGlmIChuYW1lKSB0aHJvdyBuZXcgRXJyb3IoYHBhY2thZ2UgZXhwb3NlcyBvbmUgdW5uYW1lZCBiaW4sIG5vdCAke25hbWV9YCk7XG4gICAgcmV0dXJuIHJlc29sdmUoZGlyZWN0b3J5LCB2YWx1ZSk7XG4gIH1cbiAgaWYgKCFvYmplY3QuaXNSZWNvcmQodmFsdWUpKSB0aHJvdyBuZXcgRXJyb3IoXCJwYWNrYWdlIGhhcyBubyBiaW5cIik7XG4gIGlmIChuYW1lKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gdmFsdWVbbmFtZV07XG4gICAgaWYgKHR5cGVvZiB0YXJnZXQgIT09IFwic3RyaW5nXCIpIHRocm93IG5ldyBFcnJvcihgcGFja2FnZSBoYXMgbm8gYmluIG5hbWVkICR7bmFtZX1gKTtcbiAgICByZXR1cm4gcmVzb2x2ZShkaXJlY3RvcnksIHRhcmdldCk7XG4gIH1cbiAgY29uc3QgdGFyZ2V0cyA9IE9iamVjdC52YWx1ZXModmFsdWUpLmZpbHRlcihcbiAgICAodGFyZ2V0KTogdGFyZ2V0IGlzIHN0cmluZyA9PiB0eXBlb2YgdGFyZ2V0ID09PSBcInN0cmluZ1wiLFxuICApO1xuICBpZiAodGFyZ2V0cy5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJwYWNrYWdlIGhhcyBtdWx0aXBsZSBiaW5zOyBjb21tYW5kLmJpbk5hbWUgaXMgcmVxdWlyZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJlc29sdmUoZGlyZWN0b3J5LCB0YXJnZXRzWzBdISk7XG59XG5cbmZ1bmN0aW9uIHJlYWRSZWNvcmQocGF0aDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCB2YWx1ZTogdW5rbm93biA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhdGgsIFwidXRmOFwiKSk7XG4gIGlmICghb2JqZWN0LmlzUmVjb3JkKHZhbHVlKSkgdGhyb3cgbmV3IEVycm9yKGBwYWNrYWdlIG1hbmlmZXN0IGlzIG5vdCBhbiBvYmplY3Q6ICR7cGF0aH1gKTtcbiAgcmV0dXJuIHZhbHVlO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"typescript": "^5.9.3"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@dbx-tools/core": "^0.9.
|
|
27
|
-
"@dbx-tools/shared-core": "^0.9.
|
|
26
|
+
"@dbx-tools/core": "^0.9.72",
|
|
27
|
+
"@dbx-tools/shared-core": "^0.9.72",
|
|
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.72",
|
|
64
64
|
"types": "./lib/index.d.ts",
|
|
65
65
|
"dbxToolsConfig": {
|
|
66
66
|
"tags": [
|
package/src/_package.ts
CHANGED
|
@@ -76,12 +76,7 @@ function localManifest(reference: string): string | undefined {
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
function installedManifest(name: string): string | undefined {
|
|
79
|
-
|
|
80
|
-
return createRequire(import.meta.url).resolve(`${name}/package.json`);
|
|
81
|
-
} catch (error) {
|
|
82
|
-
if ((error as NodeJS.ErrnoException).code === "MODULE_NOT_FOUND") return undefined;
|
|
83
|
-
throw error;
|
|
84
|
-
}
|
|
79
|
+
return packageManifest(createRequire(import.meta.url), name);
|
|
85
80
|
}
|
|
86
81
|
|
|
87
82
|
function servicePackage(manifestPath: string, expectedName?: string): ServicePackage {
|
|
@@ -110,7 +105,8 @@ function servicePackage(manifestPath: string, expectedName?: string): ServicePac
|
|
|
110
105
|
const require = createRequire(manifestPath);
|
|
111
106
|
return Object.fromEntries(
|
|
112
107
|
dependencies.map((dependency) => {
|
|
113
|
-
const path = require
|
|
108
|
+
const path = packageManifest(require, dependency);
|
|
109
|
+
if (!path) throw new Error(`could not resolve dependency package: ${dependency}`);
|
|
114
110
|
const resolved = readRecord(path);
|
|
115
111
|
if (typeof resolved.version !== "string" || !resolved.version) {
|
|
116
112
|
throw new Error(`dependency has no version: ${path}`);
|
|
@@ -122,6 +118,37 @@ function servicePackage(manifestPath: string, expectedName?: string): ServicePac
|
|
|
122
118
|
};
|
|
123
119
|
}
|
|
124
120
|
|
|
121
|
+
/** Resolve a package manifest without requiring its unexported `package.json` subpath. */
|
|
122
|
+
function packageManifest(require: NodeJS.Require, name: string): string | undefined {
|
|
123
|
+
for (const specifier of [name, `${name}/package.json`]) {
|
|
124
|
+
try {
|
|
125
|
+
const entry = require.resolve(specifier);
|
|
126
|
+
const manifest = namedManifest(entry, name);
|
|
127
|
+
if (manifest) return manifest;
|
|
128
|
+
} catch (error) {
|
|
129
|
+
const code = (error as NodeJS.ErrnoException).code;
|
|
130
|
+
if (code !== "MODULE_NOT_FOUND" && code !== "ERR_PACKAGE_PATH_NOT_EXPORTED") throw error;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
for (const directory of require.resolve.paths(name) ?? []) {
|
|
134
|
+
const manifest = join(directory, name, "package.json");
|
|
135
|
+
if (existsSync(manifest) && readRecord(manifest).name === name) return manifest;
|
|
136
|
+
}
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/** Walk from a resolved package entry to the nearest manifest with the expected name. */
|
|
141
|
+
function namedManifest(path: string, name: string): string | undefined {
|
|
142
|
+
let current = dirname(path);
|
|
143
|
+
while (true) {
|
|
144
|
+
const manifest = join(current, "package.json");
|
|
145
|
+
if (existsSync(manifest) && readRecord(manifest).name === name) return manifest;
|
|
146
|
+
const parent = dirname(current);
|
|
147
|
+
if (parent === current) return undefined;
|
|
148
|
+
current = parent;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
125
152
|
function resolveBin(directory: string, value: unknown, name?: string): string {
|
|
126
153
|
if (typeof value === "string") {
|
|
127
154
|
if (name) throw new Error(`package exposes one unnamed bin, not ${name}`);
|