@dbx-tools/cli 0.9.4 → 0.9.6

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 CHANGED
@@ -141,7 +141,6 @@ should run the `dbx` bin.
141
141
  - `bootstrap` - empty-workspace bootstrap, toolchain seeding, and the initial synth.
142
142
  - `root` - workspace-root detection and bootstrap/install checks.
143
143
  - `bun` - bun discovery, workspace install, registry forcing, and projen delegation.
144
- - `rust-binary` - compatibility re-export of `@dbx-tools/rust-binary`.
145
144
 
146
145
  The reusable project classes and generators live in
147
146
  [`@dbx-tools/projen`](../../../../projen).
package/index.ts CHANGED
@@ -3,11 +3,10 @@
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";
6
- export const PACKAGE_VERSION = "0.9.4";
6
+ export const PACKAGE_VERSION = "0.9.6";
7
7
  export * as bootstrap from "./src/bootstrap.ts";
8
8
  export * as bun from "./src/bun.ts";
9
9
  export * as cli from "./src/cli.ts";
10
10
  export * as root from "./src/root.ts";
11
- export * as rustBinary from "./src/rust-binary.ts";
12
11
  export { resolveBunArgv } from "./src/bun.ts";
13
12
  export { workspaceRoot } from "./src/root.ts";
package/lib/index.d.ts CHANGED
@@ -1,9 +1,8 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
2
- export declare const PACKAGE_VERSION = "0.9.4";
2
+ export declare const PACKAGE_VERSION = "0.9.6";
3
3
  export * as bootstrap from "./src/bootstrap.ts";
4
4
  export * as bun from "./src/bun.ts";
5
5
  export * as cli from "./src/cli.ts";
6
6
  export * as root from "./src/root.ts";
7
- export * as rustBinary from "./src/rust-binary.ts";
8
7
  export { resolveBunArgv } from "./src/bun.ts";
9
8
  export { workspaceRoot } from "./src/root.ts";
package/lib/index.js CHANGED
@@ -2,12 +2,11 @@
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";
5
- export const PACKAGE_VERSION = "0.9.4";
5
+ export const PACKAGE_VERSION = "0.9.6";
6
6
  export * as bootstrap from "./src/bootstrap.js";
7
7
  export * as bun from "./src/bun.js";
8
8
  export * as cli from "./src/cli.js";
9
9
  export * as root from "./src/root.js";
10
- export * as rustBinary from "./src/rust-binary.js";
11
10
  export { resolveBunArgv } from "./src/bun.js";
12
11
  export { workspaceRoot } from "./src/root.js";
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2NsaVwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjRcIjtcbmV4cG9ydCAqIGFzIGJvb3RzdHJhcCBmcm9tIFwiLi9zcmMvYm9vdHN0cmFwLnRzXCI7XG5leHBvcnQgKiBhcyBidW4gZnJvbSBcIi4vc3JjL2J1bi50c1wiO1xuZXhwb3J0ICogYXMgY2xpIGZyb20gXCIuL3NyYy9jbGkudHNcIjtcbmV4cG9ydCAqIGFzIHJvb3QgZnJvbSBcIi4vc3JjL3Jvb3QudHNcIjtcbmV4cG9ydCAqIGFzIHJ1c3RCaW5hcnkgZnJvbSBcIi4vc3JjL3J1c3QtYmluYXJ5LnRzXCI7XG5leHBvcnQgeyByZXNvbHZlQnVuQXJndiB9IGZyb20gXCIuL3NyYy9idW4udHNcIjtcbmV4cG9ydCB7IHdvcmtzcGFjZVJvb3QgfSBmcm9tIFwiLi9zcmMvcm9vdC50c1wiO1xuIl19
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9jbGlcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS42XCI7XG5leHBvcnQgKiBhcyBib290c3RyYXAgZnJvbSBcIi4vc3JjL2Jvb3RzdHJhcC50c1wiO1xuZXhwb3J0ICogYXMgYnVuIGZyb20gXCIuL3NyYy9idW4udHNcIjtcbmV4cG9ydCAqIGFzIGNsaSBmcm9tIFwiLi9zcmMvY2xpLnRzXCI7XG5leHBvcnQgKiBhcyByb290IGZyb20gXCIuL3NyYy9yb290LnRzXCI7XG5leHBvcnQgeyByZXNvbHZlQnVuQXJndiB9IGZyb20gXCIuL3NyYy9idW4udHNcIjtcbmV4cG9ydCB7IHdvcmtzcGFjZVJvb3QgfSBmcm9tIFwiLi9zcmMvcm9vdC50c1wiO1xuIl19
@@ -7,7 +7,7 @@ import { existsSync, readFileSync, writeFileSync } from "node:fs";
7
7
  import { createRequire } from "node:module";
8
8
  import { join } from "node:path";
9
9
  import { intro, outro } from "@clack/prompts";
10
- import { exec, project } from "@dbx-tools/core";
10
+ import { exec, projectUtils } from "@dbx-tools/core";
11
11
  import { json, log } from "@dbx-tools/shared-core";
12
12
  import { childEnv, resolveBunArgv, runBun } from "./bun.js";
13
13
  import { rootLabel } from "./root.js";
@@ -88,10 +88,10 @@ export function ensureEngineCurrent(root) {
88
88
  // flat, but every engine ever published exports the namespace, and this template
89
89
  // is resolved against `@latest` - a flat import dies on an older one with
90
90
  // "does not provide an export named 'DBXToolsNodeProject'".
91
- const PROJENRC_TEMPLATE = `import { project as projenProject } from "@dbx-tools/projen";
91
+ const PROJENRC_TEMPLATE = `import { project } from "@dbx-tools/projen";
92
92
 
93
- const project = new projenProject.DBXToolsNodeProject();
94
- project.synth();
93
+ const rootProject = new project.DBXToolsNodeProject();
94
+ rootProject.synth();
95
95
  `;
96
96
  /**
97
97
  * Turn a folder into a functioning dbx-tools workspace: `bun init`, seed the
@@ -165,7 +165,9 @@ export function seedToolchain(root, projenSpecifier = defaultProjenSpecifier())
165
165
  * and never overwrites an existing `.npmrc` (the developer's own wins).
166
166
  */
167
167
  function seedRegistry(root) {
168
- const registry = project.npmRegistry(null, { overrideOnly: true, envVars: true })?.toString();
168
+ const registry = projectUtils
169
+ .npmRegistry(null, { overrideOnly: true, envVars: true })
170
+ ?.toString();
169
171
  if (!registry)
170
172
  return;
171
173
  const npmrc = join(root, ".npmrc");
@@ -210,4 +212,4 @@ export function runInitialSynth(root) {
210
212
  check: true,
211
213
  });
212
214
  }
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFFakQsaUZBQWlGO0FBQ2pGLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDO0FBRXJDLHNGQUFzRjtBQUN0RixNQUFNLHlCQUF5QixHQUFHLDBCQUEwQixDQUFDO0FBRTdEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsc0JBQXNCO0lBQzdCLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO0lBQzdCLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDO0FBQy9FLENBQUM7QUFFRCxvRkFBb0Y7QUFDcEYsU0FBUyxVQUFVO0lBQ2pCLElBQUksQ0FBQztRQUNILDRFQUE0RTtRQUM1RSx3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QUFhLENBQUMsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsZ0ZBQWdGO0lBQ2xGLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQVk7SUFDMUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQzlDLDRFQUE0RTtJQUM1RSxzQ0FBc0M7SUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRTtRQUNuRCxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM5QyxLQUFLLEVBQUUsSUFBSTtLQUNaLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJvb3RzdHJhcCBhIGJyYW5kLW5ldyBmb2xkZXIgaW50byBhIHdvcmtpbmcgZGJ4LXRvb2xzIHdvcmtzcGFjZSBiZWZvcmUgcHJvamVuIHJ1bnMuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGludHJvLCBvdXRybyB9IGZyb20gXCJAY2xhY2svcHJvbXB0c1wiO1xuaW1wb3J0IHsgZXhlYywgcHJvamVjdCB9IGZyb20gXCJAZGJ4LXRvb2xzL2NvcmVcIjtcbmltcG9ydCB7IGpzb24sIGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBjaGlsZEVudiwgcmVzb2x2ZUJ1bkFyZ3YsIHJ1bkJ1biB9IGZyb20gXCIuL2J1bi50c1wiO1xuaW1wb3J0IHsgcm9vdExhYmVsIH0gZnJvbSBcIi4vcm9vdC50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiZGJ4LXRvb2xzOmJvb3RzdHJhcFwiKTtcblxuLyoqIFB1Ymxpc2hlZCBwYWNrYWdlIG5hbWUgdXNlZCBmb3IgTm9kZSdzIHNlbGYtcmVmZXJlbmNlIG1hbmlmZXN0IHJlc29sdXRpb24uICovXG5jb25zdCBDTElfUEFDS0FHRSA9IFwiQGRieC10b29scy9jbGlcIjtcblxuLyoqIEZhbGxiYWNrIHdoZW4gdGhpcyBDTEkncyBvd24gdmVyc2lvbiBpc24ndCBhIHJlYWwgcmVsZWFzZSAoYW4gaW4tcmVwbyBgMC4wLjBgKS4gKi9cbmNvbnN0IEZBTExCQUNLX1BST0pFTl9TUEVDSUZJRVIgPSBcIkBkYngtdG9vbHMvcHJvamVuQGxhdGVzdFwiO1xuXG4vKipcbiAqIEluc3RhbGwgdGhlIGVuZ2luZSBhdCBUSElTIENMSSdzIG93biB2ZXJzaW9uLiBUaGUgdHdvIGFyZSByZWxlYXNlZCB0b2dldGhlciBieVxuICogdGhlIHJvb3QgYGJ1bXBgLCBzbyB0aGUgbWF0Y2hpbmcgZW5naW5lIGFsd2F5cyBleGlzdHMgb24gdGhlIHJlZ2lzdHJ5LlxuICpcbiAqIE5vdCBgQGxhdGVzdGAsIGFuZCBub3QgYSBiYXJlIGBAZGJ4LXRvb2xzL3Byb2plbmAuIEEgYmFyZSBzcGVjaWZpZXIgY2FuIGxhbmQgb25cbiAqIGEgc3RyYXkgYDAuMC4wYCwgd2hvc2UgYF4wLjAuMGAgY2FyZXQgdGhlbiByZWFjaGVzIG5vIHJlYWwgcmVsZWFzZS4gQW4gZXhwbGljaXRcbiAqIHJhbmdlIHBpbm5lZCB0byB0aGlzIENMSSdzIG93biB2ZXJzaW9uIGFkbWl0cyBvbmx5IHRoZSBtYXRjaGluZyBlbmdpbmUsIHNvIHRoZVxuICogQ0xJIGFuZCB0aGUgZW5naW5lIGl0IGRyaXZlcyBuZXZlciBkcmlmdCBhY3Jvc3MgYSByZWxlYXNlICh0aGV5IGFyZSBjdXRcbiAqIHRvZ2V0aGVyIGJ5IHRoZSByb290IGBidW1wYCkuXG4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRQcm9qZW5TcGVjaWZpZXIoKTogc3RyaW5nIHtcbiAgY29uc3QgdmVyc2lvbiA9IG93blZlcnNpb24oKTtcbiAgcmV0dXJuIHZlcnNpb24gPyBgQGRieC10b29scy9wcm9qZW5AXiR7dmVyc2lvbn1gIDogRkFMTEJBQ0tfUFJPSkVOX1NQRUNJRklFUjtcbn1cblxuLyoqIFRoaXMgQ0xJJ3Mgb3duIHJlbGVhc2VkIHZlcnNpb24sIG9yIGB1bmRlZmluZWRgIGZvciBhbiBpbi1yZXBvIGAwLjAuMGAgYnVpbGQuICovXG5mdW5jdGlvbiBvd25WZXJzaW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgLy8gUmVzb2x2ZSB0aHJvdWdoIHRoZSBwYWNrYWdlJ3MgZXhwb3J0ZWQgYC4vcGFja2FnZS5qc29uYCwgd2hpY2ggd29ya3MgZnJvbVxuICAgIC8vIGJvdGggc291cmNlIChgc3JjL2Jvb3RzdHJhcC50c2ApIGFuZCBwdWJsaXNoZWQgb3V0cHV0XG4gICAgLy8gKGBsaWIvc3JjL2Jvb3RzdHJhcC5qc2ApLiBBIHJlbGF0aXZlIFVSTCBpcyBvbmUgbGV2ZWwgZnJvbSB0aGUgbWFuaWZlc3RcbiAgICAvLyBpbiBzb3VyY2UgYnV0IHR3byBsZXZlbHMgYXdheSBhZnRlciBjb21waWxhdGlvbiBhbmQgc2lsZW50bHkgZmVsbCBiYWNrIHRvXG4gICAgLy8gYEBsYXRlc3RgIGluIGV2ZXJ5IGluc3RhbGxlZCBDTEkuXG4gICAgY29uc3QgbWFuaWZlc3RQYXRoID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpLnJlc29sdmUoYCR7Q0xJX1BBQ0tBR0V9L3BhY2thZ2UuanNvbmApO1xuICAgIGNvbnN0IHZlcnNpb24gPSBqc29uLnBhcnNlUmVjb3JkKHJlYWRGaWxlU3luYyhtYW5pZmVzdFBhdGgsIFwidXRmOFwiKSk/LnZlcnNpb247XG4gICAgcmV0dXJuIHR5cGVvZiB2ZXJzaW9uID09PSBcInN0cmluZ1wiICYmIHZlcnNpb24gIT09IFwiMC4wLjBcIiA/IHZlcnNpb24gOiB1bmRlZmluZWQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqIENvbXBhcmUgYHgueS56YCB0cmlwbGVzOyByZXR1cm5zIDwwLCAwLCBvciA+MC4gTWlzc2luZyBwYXJ0cyBjb3VudCBhcyAwLiAqL1xuZnVuY3Rpb24gY29tcGFyZVZlcnNpb25zKGE6IHN0cmluZywgYjogc3RyaW5nKTogbnVtYmVyIHtcbiAgY29uc3QgcGFydHMgPSAodjogc3RyaW5nKSA9PiB2LnNwbGl0KFwiLlwiKS5tYXAoKHApID0+IE51bWJlci5wYXJzZUludChwLCAxMCkgfHwgMCk7XG4gIGNvbnN0IFt4LCB5XSA9IFtwYXJ0cyhhKSwgcGFydHMoYildO1xuICByZXR1cm4geFswXSAtIHlbMF0gfHwgeFsxXSAtIHlbMV0gfHwgeFsyXSAtIHlbMl07XG59XG5cbi8qKiBWZXJzaW9uIG9mIHRoZSBlbmdpbmUgY3VycmVudGx5IGluc3RhbGxlZCBhdCBgcm9vdGAsIGlmIGFueS4gKi9cbmZ1bmN0aW9uIGluc3RhbGxlZEVuZ2luZVZlcnNpb24ocm9vdDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBtYW5pZmVzdCA9IGpvaW4ocm9vdCwgXCJub2RlX21vZHVsZXNcIiwgXCJAZGJ4LXRvb2xzXCIsIFwicHJvamVuXCIsIFwicGFja2FnZS5qc29uXCIpO1xuICAgIGNvbnN0IHZlcnNpb24gPSBqc29uLnBhcnNlUmVjb3JkKHJlYWRGaWxlU3luYyhtYW5pZmVzdCwgXCJ1dGY4XCIpKT8udmVyc2lvbjtcbiAgICByZXR1cm4gdHlwZW9mIHZlcnNpb24gPT09IFwic3RyaW5nXCIgPyB2ZXJzaW9uIDogdW5kZWZpbmVkO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogVXBncmFkZSBhbiBlc3RhYmxpc2hlZCB3b3Jrc3BhY2Ugd2hvc2UgaW5zdGFsbGVkIGVuZ2luZSBwcmVkYXRlcyB0aGlzIENMSS5cbiAqXG4gKiBCb290c3RyYXBwaW5nIHBpbnMgdGhlIGVuZ2luZSBvbmNlLCBzbyB3aXRob3V0IHRoaXMgYSB3b3Jrc3BhY2UgY3JlYXRlZCBtb250aHMgYWdvXG4gKiB3b3VsZCBrZWVwIHJlc29sdmluZyBpdHMgb3JpZ2luYWwgZW5naW5lIG5vIG1hdHRlciBob3cgY3VycmVudCB0aGUgQ0xJIGludm9raW5nIGl0XG4gKiBpcywgYW5kIHdvdWxkIGZhaWwgaW5zaWRlIFRIQVQgZW5naW5lJ3MgY29kZSAoYHN5bmMgLS13YXRjaGAgZHlpbmcgb24gYVxuICogYGNvbmN1cnJlbnRseWAgaXQgbmV2ZXIgZGVjbGFyZWQpLiBUaGUgdHdvIGFyZSByZWxlYXNlZCBpbiBsb2Nrc3RlcCwgc28gdGhpcyBDTEknc1xuICogdmVyc2lvbiBpcyBleGFjdGx5IHRoZSBlbmdpbmUgaXQgZXhwZWN0cy5cbiAqXG4gKiBPbmx5IGV2ZXIgbW92ZXMgRk9SV0FSRDogYW4gZW5naW5lIGF0IG9yIGFoZWFkIG9mIHRoaXMgQ0xJIGlzIGxlZnQgYWxvbmUsIHNvXG4gKiBhbiBvbGRlciBDTEkgY2Fubm90IGRvd25ncmFkZSBhIHdvcmtzcGFjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUVuZ2luZUN1cnJlbnQocm9vdDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGV4cGVjdGVkID0gb3duVmVyc2lvbigpO1xuICBpZiAoIWV4cGVjdGVkKSByZXR1cm47XG4gIGNvbnN0IGluc3RhbGxlZCA9IGluc3RhbGxlZEVuZ2luZVZlcnNpb24ocm9vdCk7XG4gIGlmIChpbnN0YWxsZWQgJiYgY29tcGFyZVZlcnNpb25zKGluc3RhbGxlZCwgZXhwZWN0ZWQpID49IDApIHJldHVybjtcbiAgcnVuQnVuKFtcImFkZFwiLCBcIi1EXCIsIGRlZmF1bHRQcm9qZW5TcGVjaWZpZXIoKV0sIHJvb3QpO1xufVxuXG4vLyBSZWFjaCB0aGUgY2xhc3MgdGhyb3VnaCBpdHMgbW9kdWxlIE5BTUVTUEFDRS4gQ3VycmVudCBlbmdpbmVzIGFsc28gaG9pc3QgaXRcbi8vIGZsYXQsIGJ1dCBldmVyeSBlbmdpbmUgZXZlciBwdWJsaXNoZWQgZXhwb3J0cyB0aGUgbmFtZXNwYWNlLCBhbmQgdGhpcyB0ZW1wbGF0ZVxuLy8gaXMgcmVzb2x2ZWQgYWdhaW5zdCBgQGxhdGVzdGAgLSBhIGZsYXQgaW1wb3J0IGRpZXMgb24gYW4gb2xkZXIgb25lIHdpdGhcbi8vIFwiZG9lcyBub3QgcHJvdmlkZSBhbiBleHBvcnQgbmFtZWQgJ0RCWFRvb2xzTm9kZVByb2plY3QnXCIuXG5jb25zdCBQUk9KRU5SQ19URU1QTEFURSA9IGBpbXBvcnQgeyBwcm9qZWN0IGFzIHByb2plblByb2plY3QgfSBmcm9tIFwiQGRieC10b29scy9wcm9qZW5cIjtcblxuY29uc3QgcHJvamVjdCA9IG5ldyBwcm9qZW5Qcm9qZWN0LkRCWFRvb2xzTm9kZVByb2plY3QoKTtcbnByb2plY3Quc3ludGgoKTtcbmA7XG5cbi8qKlxuICogVHVybiBhIGZvbGRlciBpbnRvIGEgZnVuY3Rpb25pbmcgZGJ4LXRvb2xzIHdvcmtzcGFjZTogYGJ1biBpbml0YCwgc2VlZCB0aGVcbiAqIGBwYWNrYWdlLmpzb25gIHdvcmtzcGFjZSBmaWVsZHMgKGJ1biByZWFkcyBgd29ya3NwYWNlc2AvYHRydXN0ZWREZXBlbmRlbmNpZXNgXG4gKiBmcm9tIHRoZSBtYW5pZmVzdCksIGFkZCBgcHJvamVuYC9gdHlwZXNjcmlwdGAgKyB0aGUgZW5naW5lIHBhY2thZ2UsIHdyaXRlIGFcbiAqIG1pbmltYWwgYC5wcm9qZW5yYy50c2AsIHN5bnRoIG9uY2UgKHdpdGggYFBST0pFTl9ESVNBQkxFX1BPU1RgKSwgdGhlbiBpbnN0YWxsLlxuICogRG9lcyBub3QgcnVuIGJhcnJlbHMgLSBydW4gYGJ1biBydW4gYmFycmVsc2Agb3IgYSBmdWxsIHByb2plbiBzeW50aCBwb3N0LWluc3RhbGxcbiAqIHRvIGdlbmVyYXRlIHBhY2thZ2UgYmFycmVscy5cbiAqXG4gKiBFdmVyeSBzdGVwIGlzIGlkZW1wb3RlbnQgYW5kIHNlbGYtZ3VhcmRlZCwgc28gdGhpcyBpcyBzYWZlIHRvIHJ1biBhZ2FpbnN0IGFcbiAqIGZvbGRlciB0aGF0IEFMUkVBRFkgaGFzIGEgaGFuZC1hdXRob3JlZCBgLnByb2plbnJjLnRzYCAoYW5kIGV2ZW4gYSBjb21taXR0ZWRcbiAqIGBwYWNrYWdlLmpzb25gKSBidXQgaXMgbWlzc2luZyB0aGUgaW5zdGFsbGVkIHRvb2xjaGFpbiAtIGUuZy4gYSBmcmVzaGx5IGNvcGllZFxuICogcHJvamVjdCB3aG9zZSBnZW5lcmF0ZWQgZmlsZXMgKGluY2x1ZGluZyBtYW5pZmVzdHMpIGFyZSBnaXRpZ25vcmVkLiBJbiB0aGF0XG4gKiBjYXNlIGBidW4gaW5pdGAgYW5kIHRoZSBgLnByb2plbnJjLnRzYCBzY2FmZm9sZCBhcmUgc2tpcHBlZCwgYnV0IHRoZSBlbmdpbmUgK1xuICogcHJvamVuIGFyZSAocmUpaW5zdGFsbGVkIHNvIHRoZSBzdWJzZXF1ZW50IHN5bnRoIGNhbiByZWdlbmVyYXRlIGV2ZXJ5dGhpbmcuXG4gKiBTZWUge0BsaW5rIHNlZWRUb29sY2hhaW59LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYm9vdHN0cmFwV29ya3NwYWNlKFxuICByb290OiBzdHJpbmcsXG4gIHByb2plblNwZWNpZmllcjogc3RyaW5nID0gZGVmYXVsdFByb2plblNwZWNpZmllcigpLFxuKTogdm9pZCB7XG4gIGludHJvKGBCb290c3RyYXBwaW5nIGRieC10b29scyB3b3Jrc3BhY2UgaW4gJHtyb290TGFiZWwocm9vdCl9YCk7XG5cbiAgc2VlZFRvb2xjaGFpbihyb290LCBwcm9qZW5TcGVjaWZpZXIpO1xuXG4gIGNvbnN0IHByb2plbnJjID0gam9pbihyb290LCBcIi5wcm9qZW5yYy50c1wiKTtcbiAgaWYgKCFleGlzdHNTeW5jKHByb2plbnJjKSkge1xuICAgIHdyaXRlRmlsZVN5bmMocHJvamVucmMsIFBST0pFTlJDX1RFTVBMQVRFKTtcbiAgfVxuXG4gIHJ1bkluaXRpYWxTeW50aChyb290KTtcblxuICBydW5CdW4oW1wiaW5zdGFsbFwiXSwgcm9vdCk7XG4gIG91dHJvKFwiV29ya3NwYWNlIHJlYWR5IC0gcmUtcnVuIGRieC10b29scyBvciBhZGQgcGFja2FnZXMgdW5kZXIgcGFja2FnZXMvXCIpO1xufVxuXG4vKipcbiAqIEluc3RhbGwgdGhlIHRvb2xjaGFpbiBhIHN5bnRoIG5lZWRzIChgcHJvamVuYCwgYHR5cGVzY3JpcHRgLCBhbmQgdGhlIGRieC10b29sc1xuICogZW5naW5lKSwgc2VlZGluZyBhIGBwYWNrYWdlLmpzb25gIGZpcnN0IHdoZW4gYWJzZW50LiBidW4gcmVhZHMgaXRzIHdvcmtzcGFjZVxuICogY29uZmlnIChgd29ya3NwYWNlc2AvYHRydXN0ZWREZXBlbmRlbmNpZXNgKSBmcm9tIHRoZSBtYW5pZmVzdCwgc28gdGhlcmUgaXMgbm9cbiAqIHNlcGFyYXRlIHdvcmtzcGFjZSBmaWxlIHRvIHNlZWQgLSB0aGUgZW5naW5lIHdyaXRlcyBgcG5wbS13b3Jrc3BhY2UueWFtbGAgYXRcbiAqIHN5bnRoIGZvciB0aGUgRGF0YWJyaWNrcyBBcHBzIHBsYXRmb3JtLiBJZGVtcG90ZW50OiBydW4gaXQgd2hlbmV2ZXIgdGhlIGVuZ2luZVxuICogaXMgbWlzc2luZywgc28gYSBjb3BpZWQgcHJvamVjdCB3aXRoIGEgYC5wcm9qZW5yYy50c2AgYnV0IG5vXG4gKiBgbm9kZV9tb2R1bGVzYC9tYW5pZmVzdCBjYW4gYmUgYnJvdWdodCB1cCB0byBhIHN5bnRoLXJlYWR5IHN0YXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VlZFRvb2xjaGFpbihcbiAgcm9vdDogc3RyaW5nLFxuICBwcm9qZW5TcGVjaWZpZXI6IHN0cmluZyA9IGRlZmF1bHRQcm9qZW5TcGVjaWZpZXIoKSxcbik6IHZvaWQge1xuICBjb25zdCBtYW5pZmVzdFBhdGggPSBqb2luKHJvb3QsIFwicGFja2FnZS5qc29uXCIpO1xuICBpZiAoIWV4aXN0c1N5bmMobWFuaWZlc3RQYXRoKSkge1xuICAgIHJ1bkJ1bihbXCJpbml0XCIsIFwiLXlcIl0sIHJvb3QpO1xuICAgIG5vcm1hbGl6ZVNlZWRNYW5pZmVzdChtYW5pZmVzdFBhdGgpO1xuICB9XG5cbiAgc2VlZFJlZ2lzdHJ5KHJvb3QpO1xuXG4gIGNvbnN0IGtlcm5lbEFyY2ggPSBleGVjLnNwYXduU3luYyhcInVuYW1lXCIsIFtcIi1tXCJdLCB7XG4gICAgc3RkaW46IFwiaWdub3JlXCIsXG4gICAgc3Rkb3V0OiBcImNhcHR1cmVcIixcbiAgICBzdGRlcnI6IFwiaWdub3JlXCIsXG4gIH0pLnN0ZG91dDtcbiAgbG9nZ2VyLmluZm8oXCJzZWVkaW5nIHRvb2xjaGFpblwiLCB7XG4gICAgbm9kZTogcHJvY2Vzcy52ZXJzaW9uLFxuICAgIGJ1bjogcHJvY2Vzcy52ZXJzaW9ucy5idW4sXG4gICAgcGxhdGZvcm06IHByb2Nlc3MucGxhdGZvcm0sXG4gICAgYXJjaDogcHJvY2Vzcy5hcmNoLFxuICAgIGtlcm5lbEFyY2g6IGtlcm5lbEFyY2ggfHwgXCJ1bmtub3duXCIsXG4gICAgZW5naW5lOiBwcm9qZW5TcGVjaWZpZXIsXG4gIH0pO1xuICBydW5CdW4oW1wiYWRkXCIsIFwiLURcIiwgXCJwcm9qZW5cIiwgXCJ0eXBlc2NyaXB0QF41LjkuM1wiLCBcIkB0eXBlcy9idW5cIiwgcHJvamVuU3BlY2lmaWVyXSwgcm9vdCk7XG59XG5cbi8qKlxuICogUGluIGEgbm9uLWRlZmF1bHQgcmVnaXN0cnkgaW50byB0aGUgbmV3IHJvb3QncyBgLm5wbXJjYC5cbiAqXG4gKiBUaGUgQ0xJIGFscmVhZHkgZm9yY2VzIGAtLXJlZ2lzdHJ5YCBvbnRvIHRoZSBidW4gaW52b2NhdGlvbnMgaXQgbWFrZXMgaXRzZWxmLFxuICogYnV0IGEgYm9vdHN0cmFwcGVkIHdvcmtzcGFjZSBvdXRsaXZlcyB0aGlzIHByb2Nlc3M6IGV2ZXJ5IGxhdGVyIGBidW4gaW5zdGFsbGBcbiAqIHRoZSBkZXZlbG9wZXIgKG9yIHByb2plbidzIHBvc3Qtc3ludGggc3RlcCkgcnVucyBpcyBvbiBpdHMgb3duLiBidW4gaWdub3Jlc1xuICogYG5wbV9jb25maWdfcmVnaXN0cnlgIGZyb20gdGhlIGVudmlyb25tZW50LCBzbyB3aXRob3V0IGEgZmlsZSBvbiBkaXNrIHRob3NlXG4gKiBydW5zIHJldmVydCB0byBgaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYCAtIHdoaWNoIGlzIGEgaGFyZCBmYWlsdXJlIHdoZXJlXG4gKiB0aGUgY3VzdG9tIHJlZ2lzdHJ5IHdhcyB0aGUgb25seSByZWFjaGFibGUgb25lLlxuICpcbiAqIE9ubHkgd3JpdGVzIGZvciBhbiBhY3R1YWwgb3ZlcnJpZGUsIG5ldmVyIGNyZWF0ZXMgYSBmaWxlIGp1c3QgdG8gbmFtZSBucG1qcyxcbiAqIGFuZCBuZXZlciBvdmVyd3JpdGVzIGFuIGV4aXN0aW5nIGAubnBtcmNgICh0aGUgZGV2ZWxvcGVyJ3Mgb3duIHdpbnMpLlxuICovXG5mdW5jdGlvbiBzZWVkUmVnaXN0cnkocm9vdDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHJlZ2lzdHJ5ID0gcHJvamVjdC5ucG1SZWdpc3RyeShudWxsLCB7IG92ZXJyaWRlT25seTogdHJ1ZSwgZW52VmFyczogdHJ1ZSB9KT8udG9TdHJpbmcoKTtcbiAgaWYgKCFyZWdpc3RyeSkgcmV0dXJuO1xuICBjb25zdCBucG1yYyA9IGpvaW4ocm9vdCwgXCIubnBtcmNcIik7XG4gIGlmIChleGlzdHNTeW5jKG5wbXJjKSkgcmV0dXJuO1xuICB3cml0ZUZpbGVTeW5jKG5wbXJjLCBgcmVnaXN0cnk9JHtyZWdpc3RyeX1cXG5gKTtcbn1cblxuLyoqXG4gKiBNYWtlIHdoYXQgYGJ1biBpbml0YCBwcm9kdWNlZCBzYWZlIHRvIHN5bnRoIGFnYWluc3Q6IGZvcmNlIGB0eXBlOiBcIm1vZHVsZVwiYFxuICogKGJ1biBydW5zIGAucHJvamVucmMudHNgIGZpbmUgZWl0aGVyIHdheSwgYnV0IHByb2plbidzIEVTTSBzb3VyY2VzIGFuZCB0aGVcbiAqIGVtaXR0ZWQgY29uZmlnIGFzc3VtZSBtb2R1bGUgdHlwZSkgYW5kIGRyb3AgYW55IGBwYWNrYWdlTWFuYWdlcmAvYGRldkVuZ2luZXNgXG4gKiBmaWVsZCB0aGF0IHdvdWxkIHBpbiBhIGRpZmZlcmVudCBtYW5hZ2VyLiBwcm9qZW4gcmVnZW5lcmF0ZXMgdGhlIHdob2xlIG1hbmlmZXN0XG4gKiBhdCBzeW50aCwgc28gdGhpcyBvbmx5IGhhcyB0byBob2xkIHRoZSBzZWVkIHRvZ2V0aGVyIGxvbmcgZW5vdWdoIHRvIGdldCB0aGVyZS5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplU2VlZE1hbmlmZXN0KG1hbmlmZXN0UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIHRyeSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBqc29uLnBhcnNlUmVjb3JkKHJlYWRGaWxlU3luYyhtYW5pZmVzdFBhdGgsIFwidXRmOFwiKSk7XG4gICAgaWYgKCFtYW5pZmVzdCkgcmV0dXJuO1xuICAgIGRlbGV0ZSBtYW5pZmVzdC5kZXZFbmdpbmVzO1xuICAgIGRlbGV0ZSBtYW5pZmVzdC5wYWNrYWdlTWFuYWdlcjtcbiAgICBtYW5pZmVzdC50eXBlID0gXCJtb2R1bGVcIjtcbiAgICB3cml0ZUZpbGVTeW5jKG1hbmlmZXN0UGF0aCwgYCR7SlNPTi5zdHJpbmdpZnkobWFuaWZlc3QsIG51bGwsIDIpfVxcbmApO1xuICB9IGNhdGNoIHtcbiAgICAvLyBBIG1hbGZvcm1lZC9hYnNlbnQgbWFuaWZlc3QgaGVyZSBqdXN0IG1lYW5zIHRoZSBsYXRlciBgYnVuIGFkZGAgcmVjcmVhdGVzIGl0LlxuICB9XG59XG5cbi8qKlxuICogUnVuIHRoZSBpbml0aWFsIHN5bnRoIGJ5IGV4ZWN1dGluZyBgLnByb2plbnJjLnRzYCBkaXJlY3RseSB3aXRoIGJ1biAod2l0aFxuICogYFBST0pFTl9ESVNBQkxFX1BPU1RgIHNldCksIE5PVCBgcHJvamVuIDx0YXNrPmAuIFVzZSByaWdodCBhZnRlciBzZWVkaW5nIGFcbiAqIGZyZXNoIHdvcmtzcGFjZTogdGhlIHByb2plbiBUQVNLUyAoYHN5bmNgLCBgYmFycmVsc2AsIC4uLikgb25seSBleGlzdCBvbmNlXG4gKiBgLnByb2plbnJjLnRzYCBoYXMgcnVuIG9uY2UsIHNvIGBwcm9qZW4gc3luY2AgY2FuJ3QgYmUgdGhlIGJvb3RzdHJhcHBpbmcgc3RlcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkluaXRpYWxTeW50aChyb290OiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgW2NvbW1hbmQsIC4uLnByZWZpeF0gPSByZXNvbHZlQnVuQXJndigpO1xuICAvLyBidW4gcnVucyB0aGUgYC50c2AgZGlyZWN0bHkuIFRoZSByZWdpc3RyeSByZWFjaGVzIGFueXRoaW5nIG5lc3RlZCB0aHJvdWdoXG4gIC8vIGBjaGlsZEVudmAgYW5kIHRoZSBzZWVkZWQgYC5ucG1yY2AuXG4gIGV4ZWMuc3Bhd25TeW5jKGNvbW1hbmQsIFsuLi5wcmVmaXgsIFwiLnByb2plbnJjLnRzXCJdLCB7XG4gICAgY3dkOiByb290LFxuICAgIGVudjogY2hpbGRFbnYoeyBQUk9KRU5fRElTQUJMRV9QT1NUOiBcInRydWVcIiB9KSxcbiAgICBjaGVjazogdHJ1ZSxcbiAgfSk7XG59XG4iXX0=
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFFakQsaUZBQWlGO0FBQ2pGLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDO0FBRXJDLHNGQUFzRjtBQUN0RixNQUFNLHlCQUF5QixHQUFHLDBCQUEwQixDQUFDO0FBRTdEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsc0JBQXNCO0lBQzdCLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO0lBQzdCLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDO0FBQy9FLENBQUM7QUFFRCxvRkFBb0Y7QUFDcEYsU0FBUyxVQUFVO0lBQ2pCLElBQUksQ0FBQztRQUNILDRFQUE0RTtRQUM1RSx3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QUN6QixhQUFhLENBQUMsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsZ0ZBQWdGO0lBQ2xGLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQVk7SUFDMUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQzlDLDRFQUE0RTtJQUM1RSxzQ0FBc0M7SUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRTtRQUNuRCxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM5QyxLQUFLLEVBQUUsSUFBSTtLQUNaLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJvb3RzdHJhcCBhIGJyYW5kLW5ldyBmb2xkZXIgaW50byBhIHdvcmtpbmcgZGJ4LXRvb2xzIHdvcmtzcGFjZSBiZWZvcmUgcHJvamVuIHJ1bnMuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGludHJvLCBvdXRybyB9IGZyb20gXCJAY2xhY2svcHJvbXB0c1wiO1xuaW1wb3J0IHsgZXhlYywgcHJvamVjdFV0aWxzIH0gZnJvbSBcIkBkYngtdG9vbHMvY29yZVwiO1xuaW1wb3J0IHsganNvbiwgbG9nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IGNoaWxkRW52LCByZXNvbHZlQnVuQXJndiwgcnVuQnVuIH0gZnJvbSBcIi4vYnVuLnRzXCI7XG5pbXBvcnQgeyByb290TGFiZWwgfSBmcm9tIFwiLi9yb290LnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJkYngtdG9vbHM6Ym9vdHN0cmFwXCIpO1xuXG4vKiogUHVibGlzaGVkIHBhY2thZ2UgbmFtZSB1c2VkIGZvciBOb2RlJ3Mgc2VsZi1yZWZlcmVuY2UgbWFuaWZlc3QgcmVzb2x1dGlvbi4gKi9cbmNvbnN0IENMSV9QQUNLQUdFID0gXCJAZGJ4LXRvb2xzL2NsaVwiO1xuXG4vKiogRmFsbGJhY2sgd2hlbiB0aGlzIENMSSdzIG93biB2ZXJzaW9uIGlzbid0IGEgcmVhbCByZWxlYXNlIChhbiBpbi1yZXBvIGAwLjAuMGApLiAqL1xuY29uc3QgRkFMTEJBQ0tfUFJPSkVOX1NQRUNJRklFUiA9IFwiQGRieC10b29scy9wcm9qZW5AbGF0ZXN0XCI7XG5cbi8qKlxuICogSW5zdGFsbCB0aGUgZW5naW5lIGF0IFRISVMgQ0xJJ3Mgb3duIHZlcnNpb24uIFRoZSB0d28gYXJlIHJlbGVhc2VkIHRvZ2V0aGVyIGJ5XG4gKiB0aGUgcm9vdCBgYnVtcGAsIHNvIHRoZSBtYXRjaGluZyBlbmdpbmUgYWx3YXlzIGV4aXN0cyBvbiB0aGUgcmVnaXN0cnkuXG4gKlxuICogTm90IGBAbGF0ZXN0YCwgYW5kIG5vdCBhIGJhcmUgYEBkYngtdG9vbHMvcHJvamVuYC4gQSBiYXJlIHNwZWNpZmllciBjYW4gbGFuZCBvblxuICogYSBzdHJheSBgMC4wLjBgLCB3aG9zZSBgXjAuMC4wYCBjYXJldCB0aGVuIHJlYWNoZXMgbm8gcmVhbCByZWxlYXNlLiBBbiBleHBsaWNpdFxuICogcmFuZ2UgcGlubmVkIHRvIHRoaXMgQ0xJJ3Mgb3duIHZlcnNpb24gYWRtaXRzIG9ubHkgdGhlIG1hdGNoaW5nIGVuZ2luZSwgc28gdGhlXG4gKiBDTEkgYW5kIHRoZSBlbmdpbmUgaXQgZHJpdmVzIG5ldmVyIGRyaWZ0IGFjcm9zcyBhIHJlbGVhc2UgKHRoZXkgYXJlIGN1dFxuICogdG9nZXRoZXIgYnkgdGhlIHJvb3QgYGJ1bXBgKS5cbiAqL1xuZnVuY3Rpb24gZGVmYXVsdFByb2plblNwZWNpZmllcigpOiBzdHJpbmcge1xuICBjb25zdCB2ZXJzaW9uID0gb3duVmVyc2lvbigpO1xuICByZXR1cm4gdmVyc2lvbiA/IGBAZGJ4LXRvb2xzL3Byb2plbkBeJHt2ZXJzaW9ufWAgOiBGQUxMQkFDS19QUk9KRU5fU1BFQ0lGSUVSO1xufVxuXG4vKiogVGhpcyBDTEkncyBvd24gcmVsZWFzZWQgdmVyc2lvbiwgb3IgYHVuZGVmaW5lZGAgZm9yIGFuIGluLXJlcG8gYDAuMC4wYCBidWlsZC4gKi9cbmZ1bmN0aW9uIG93blZlcnNpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICAvLyBSZXNvbHZlIHRocm91Z2ggdGhlIHBhY2thZ2UncyBleHBvcnRlZCBgLi9wYWNrYWdlLmpzb25gLCB3aGljaCB3b3JrcyBmcm9tXG4gICAgLy8gYm90aCBzb3VyY2UgKGBzcmMvYm9vdHN0cmFwLnRzYCkgYW5kIHB1Ymxpc2hlZCBvdXRwdXRcbiAgICAvLyAoYGxpYi9zcmMvYm9vdHN0cmFwLmpzYCkuIEEgcmVsYXRpdmUgVVJMIGlzIG9uZSBsZXZlbCBmcm9tIHRoZSBtYW5pZmVzdFxuICAgIC8vIGluIHNvdXJjZSBidXQgdHdvIGxldmVscyBhd2F5IGFmdGVyIGNvbXBpbGF0aW9uIGFuZCBzaWxlbnRseSBmZWxsIGJhY2sgdG9cbiAgICAvLyBgQGxhdGVzdGAgaW4gZXZlcnkgaW5zdGFsbGVkIENMSS5cbiAgICBjb25zdCBtYW5pZmVzdFBhdGggPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCkucmVzb2x2ZShgJHtDTElfUEFDS0FHRX0vcGFja2FnZS5qc29uYCk7XG4gICAgY29uc3QgdmVyc2lvbiA9IGpzb24ucGFyc2VSZWNvcmQocmVhZEZpbGVTeW5jKG1hbmlmZXN0UGF0aCwgXCJ1dGY4XCIpKT8udmVyc2lvbjtcbiAgICByZXR1cm4gdHlwZW9mIHZlcnNpb24gPT09IFwic3RyaW5nXCIgJiYgdmVyc2lvbiAhPT0gXCIwLjAuMFwiID8gdmVyc2lvbiA6IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKiogQ29tcGFyZSBgeC55LnpgIHRyaXBsZXM7IHJldHVybnMgPDAsIDAsIG9yID4wLiBNaXNzaW5nIHBhcnRzIGNvdW50IGFzIDAuICovXG5mdW5jdGlvbiBjb21wYXJlVmVyc2lvbnMoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCBwYXJ0cyA9ICh2OiBzdHJpbmcpID0+IHYuc3BsaXQoXCIuXCIpLm1hcCgocCkgPT4gTnVtYmVyLnBhcnNlSW50KHAsIDEwKSB8fCAwKTtcbiAgY29uc3QgW3gsIHldID0gW3BhcnRzKGEpLCBwYXJ0cyhiKV07XG4gIHJldHVybiB4WzBdIC0geVswXSB8fCB4WzFdIC0geVsxXSB8fCB4WzJdIC0geVsyXTtcbn1cblxuLyoqIFZlcnNpb24gb2YgdGhlIGVuZ2luZSBjdXJyZW50bHkgaW5zdGFsbGVkIGF0IGByb290YCwgaWYgYW55LiAqL1xuZnVuY3Rpb24gaW5zdGFsbGVkRW5naW5lVmVyc2lvbihyb290OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gam9pbihyb290LCBcIm5vZGVfbW9kdWxlc1wiLCBcIkBkYngtdG9vbHNcIiwgXCJwcm9qZW5cIiwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgY29uc3QgdmVyc2lvbiA9IGpzb24ucGFyc2VSZWNvcmQocmVhZEZpbGVTeW5jKG1hbmlmZXN0LCBcInV0ZjhcIikpPy52ZXJzaW9uO1xuICAgIHJldHVybiB0eXBlb2YgdmVyc2lvbiA9PT0gXCJzdHJpbmdcIiA/IHZlcnNpb24gOiB1bmRlZmluZWQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBVcGdyYWRlIGFuIGVzdGFibGlzaGVkIHdvcmtzcGFjZSB3aG9zZSBpbnN0YWxsZWQgZW5naW5lIHByZWRhdGVzIHRoaXMgQ0xJLlxuICpcbiAqIEJvb3RzdHJhcHBpbmcgcGlucyB0aGUgZW5naW5lIG9uY2UsIHNvIHdpdGhvdXQgdGhpcyBhIHdvcmtzcGFjZSBjcmVhdGVkIG1vbnRocyBhZ29cbiAqIHdvdWxkIGtlZXAgcmVzb2x2aW5nIGl0cyBvcmlnaW5hbCBlbmdpbmUgbm8gbWF0dGVyIGhvdyBjdXJyZW50IHRoZSBDTEkgaW52b2tpbmcgaXRcbiAqIGlzLCBhbmQgd291bGQgZmFpbCBpbnNpZGUgVEhBVCBlbmdpbmUncyBjb2RlIChgc3luYyAtLXdhdGNoYCBkeWluZyBvbiBhXG4gKiBgY29uY3VycmVudGx5YCBpdCBuZXZlciBkZWNsYXJlZCkuIFRoZSB0d28gYXJlIHJlbGVhc2VkIGluIGxvY2tzdGVwLCBzbyB0aGlzIENMSSdzXG4gKiB2ZXJzaW9uIGlzIGV4YWN0bHkgdGhlIGVuZ2luZSBpdCBleHBlY3RzLlxuICpcbiAqIE9ubHkgZXZlciBtb3ZlcyBGT1JXQVJEOiBhbiBlbmdpbmUgYXQgb3IgYWhlYWQgb2YgdGhpcyBDTEkgaXMgbGVmdCBhbG9uZSwgc29cbiAqIGFuIG9sZGVyIENMSSBjYW5ub3QgZG93bmdyYWRlIGEgd29ya3NwYWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlRW5naW5lQ3VycmVudChyb290OiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgZXhwZWN0ZWQgPSBvd25WZXJzaW9uKCk7XG4gIGlmICghZXhwZWN0ZWQpIHJldHVybjtcbiAgY29uc3QgaW5zdGFsbGVkID0gaW5zdGFsbGVkRW5naW5lVmVyc2lvbihyb290KTtcbiAgaWYgKGluc3RhbGxlZCAmJiBjb21wYXJlVmVyc2lvbnMoaW5zdGFsbGVkLCBleHBlY3RlZCkgPj0gMCkgcmV0dXJuO1xuICBydW5CdW4oW1wiYWRkXCIsIFwiLURcIiwgZGVmYXVsdFByb2plblNwZWNpZmllcigpXSwgcm9vdCk7XG59XG5cbi8vIFJlYWNoIHRoZSBjbGFzcyB0aHJvdWdoIGl0cyBtb2R1bGUgTkFNRVNQQUNFLiBDdXJyZW50IGVuZ2luZXMgYWxzbyBob2lzdCBpdFxuLy8gZmxhdCwgYnV0IGV2ZXJ5IGVuZ2luZSBldmVyIHB1Ymxpc2hlZCBleHBvcnRzIHRoZSBuYW1lc3BhY2UsIGFuZCB0aGlzIHRlbXBsYXRlXG4vLyBpcyByZXNvbHZlZCBhZ2FpbnN0IGBAbGF0ZXN0YCAtIGEgZmxhdCBpbXBvcnQgZGllcyBvbiBhbiBvbGRlciBvbmUgd2l0aFxuLy8gXCJkb2VzIG5vdCBwcm92aWRlIGFuIGV4cG9ydCBuYW1lZCAnREJYVG9vbHNOb2RlUHJvamVjdCdcIi5cbmNvbnN0IFBST0pFTlJDX1RFTVBMQVRFID0gYGltcG9ydCB7IHByb2plY3QgfSBmcm9tIFwiQGRieC10b29scy9wcm9qZW5cIjtcblxuY29uc3Qgcm9vdFByb2plY3QgPSBuZXcgcHJvamVjdC5EQlhUb29sc05vZGVQcm9qZWN0KCk7XG5yb290UHJvamVjdC5zeW50aCgpO1xuYDtcblxuLyoqXG4gKiBUdXJuIGEgZm9sZGVyIGludG8gYSBmdW5jdGlvbmluZyBkYngtdG9vbHMgd29ya3NwYWNlOiBgYnVuIGluaXRgLCBzZWVkIHRoZVxuICogYHBhY2thZ2UuanNvbmAgd29ya3NwYWNlIGZpZWxkcyAoYnVuIHJlYWRzIGB3b3Jrc3BhY2VzYC9gdHJ1c3RlZERlcGVuZGVuY2llc2BcbiAqIGZyb20gdGhlIG1hbmlmZXN0KSwgYWRkIGBwcm9qZW5gL2B0eXBlc2NyaXB0YCArIHRoZSBlbmdpbmUgcGFja2FnZSwgd3JpdGUgYVxuICogbWluaW1hbCBgLnByb2plbnJjLnRzYCwgc3ludGggb25jZSAod2l0aCBgUFJPSkVOX0RJU0FCTEVfUE9TVGApLCB0aGVuIGluc3RhbGwuXG4gKiBEb2VzIG5vdCBydW4gYmFycmVscyAtIHJ1biBgYnVuIHJ1biBiYXJyZWxzYCBvciBhIGZ1bGwgcHJvamVuIHN5bnRoIHBvc3QtaW5zdGFsbFxuICogdG8gZ2VuZXJhdGUgcGFja2FnZSBiYXJyZWxzLlxuICpcbiAqIEV2ZXJ5IHN0ZXAgaXMgaWRlbXBvdGVudCBhbmQgc2VsZi1ndWFyZGVkLCBzbyB0aGlzIGlzIHNhZmUgdG8gcnVuIGFnYWluc3QgYVxuICogZm9sZGVyIHRoYXQgQUxSRUFEWSBoYXMgYSBoYW5kLWF1dGhvcmVkIGAucHJvamVucmMudHNgIChhbmQgZXZlbiBhIGNvbW1pdHRlZFxuICogYHBhY2thZ2UuanNvbmApIGJ1dCBpcyBtaXNzaW5nIHRoZSBpbnN0YWxsZWQgdG9vbGNoYWluIC0gZS5nLiBhIGZyZXNobHkgY29waWVkXG4gKiBwcm9qZWN0IHdob3NlIGdlbmVyYXRlZCBmaWxlcyAoaW5jbHVkaW5nIG1hbmlmZXN0cykgYXJlIGdpdGlnbm9yZWQuIEluIHRoYXRcbiAqIGNhc2UgYGJ1biBpbml0YCBhbmQgdGhlIGAucHJvamVucmMudHNgIHNjYWZmb2xkIGFyZSBza2lwcGVkLCBidXQgdGhlIGVuZ2luZSArXG4gKiBwcm9qZW4gYXJlIChyZSlpbnN0YWxsZWQgc28gdGhlIHN1YnNlcXVlbnQgc3ludGggY2FuIHJlZ2VuZXJhdGUgZXZlcnl0aGluZy5cbiAqIFNlZSB7QGxpbmsgc2VlZFRvb2xjaGFpbn0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBib290c3RyYXBXb3Jrc3BhY2UoXG4gIHJvb3Q6IHN0cmluZyxcbiAgcHJvamVuU3BlY2lmaWVyOiBzdHJpbmcgPSBkZWZhdWx0UHJvamVuU3BlY2lmaWVyKCksXG4pOiB2b2lkIHtcbiAgaW50cm8oYEJvb3RzdHJhcHBpbmcgZGJ4LXRvb2xzIHdvcmtzcGFjZSBpbiAke3Jvb3RMYWJlbChyb290KX1gKTtcblxuICBzZWVkVG9vbGNoYWluKHJvb3QsIHByb2plblNwZWNpZmllcik7XG5cbiAgY29uc3QgcHJvamVucmMgPSBqb2luKHJvb3QsIFwiLnByb2plbnJjLnRzXCIpO1xuICBpZiAoIWV4aXN0c1N5bmMocHJvamVucmMpKSB7XG4gICAgd3JpdGVGaWxlU3luYyhwcm9qZW5yYywgUFJPSkVOUkNfVEVNUExBVEUpO1xuICB9XG5cbiAgcnVuSW5pdGlhbFN5bnRoKHJvb3QpO1xuXG4gIHJ1bkJ1bihbXCJpbnN0YWxsXCJdLCByb290KTtcbiAgb3V0cm8oXCJXb3Jrc3BhY2UgcmVhZHkgLSByZS1ydW4gZGJ4LXRvb2xzIG9yIGFkZCBwYWNrYWdlcyB1bmRlciBwYWNrYWdlcy9cIik7XG59XG5cbi8qKlxuICogSW5zdGFsbCB0aGUgdG9vbGNoYWluIGEgc3ludGggbmVlZHMgKGBwcm9qZW5gLCBgdHlwZXNjcmlwdGAsIGFuZCB0aGUgZGJ4LXRvb2xzXG4gKiBlbmdpbmUpLCBzZWVkaW5nIGEgYHBhY2thZ2UuanNvbmAgZmlyc3Qgd2hlbiBhYnNlbnQuIGJ1biByZWFkcyBpdHMgd29ya3NwYWNlXG4gKiBjb25maWcgKGB3b3Jrc3BhY2VzYC9gdHJ1c3RlZERlcGVuZGVuY2llc2ApIGZyb20gdGhlIG1hbmlmZXN0LCBzbyB0aGVyZSBpcyBub1xuICogc2VwYXJhdGUgd29ya3NwYWNlIGZpbGUgdG8gc2VlZCAtIHRoZSBlbmdpbmUgd3JpdGVzIGBwbnBtLXdvcmtzcGFjZS55YW1sYCBhdFxuICogc3ludGggZm9yIHRoZSBEYXRhYnJpY2tzIEFwcHMgcGxhdGZvcm0uIElkZW1wb3RlbnQ6IHJ1biBpdCB3aGVuZXZlciB0aGUgZW5naW5lXG4gKiBpcyBtaXNzaW5nLCBzbyBhIGNvcGllZCBwcm9qZWN0IHdpdGggYSBgLnByb2plbnJjLnRzYCBidXQgbm9cbiAqIGBub2RlX21vZHVsZXNgL21hbmlmZXN0IGNhbiBiZSBicm91Z2h0IHVwIHRvIGEgc3ludGgtcmVhZHkgc3RhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWVkVG9vbGNoYWluKFxuICByb290OiBzdHJpbmcsXG4gIHByb2plblNwZWNpZmllcjogc3RyaW5nID0gZGVmYXVsdFByb2plblNwZWNpZmllcigpLFxuKTogdm9pZCB7XG4gIGNvbnN0IG1hbmlmZXN0UGF0aCA9IGpvaW4ocm9vdCwgXCJwYWNrYWdlLmpzb25cIik7XG4gIGlmICghZXhpc3RzU3luYyhtYW5pZmVzdFBhdGgpKSB7XG4gICAgcnVuQnVuKFtcImluaXRcIiwgXCIteVwiXSwgcm9vdCk7XG4gICAgbm9ybWFsaXplU2VlZE1hbmlmZXN0KG1hbmlmZXN0UGF0aCk7XG4gIH1cblxuICBzZWVkUmVnaXN0cnkocm9vdCk7XG5cbiAgY29uc3Qga2VybmVsQXJjaCA9IGV4ZWMuc3Bhd25TeW5jKFwidW5hbWVcIiwgW1wiLW1cIl0sIHtcbiAgICBzdGRpbjogXCJpZ25vcmVcIixcbiAgICBzdGRvdXQ6IFwiY2FwdHVyZVwiLFxuICAgIHN0ZGVycjogXCJpZ25vcmVcIixcbiAgfSkuc3Rkb3V0O1xuICBsb2dnZXIuaW5mbyhcInNlZWRpbmcgdG9vbGNoYWluXCIsIHtcbiAgICBub2RlOiBwcm9jZXNzLnZlcnNpb24sXG4gICAgYnVuOiBwcm9jZXNzLnZlcnNpb25zLmJ1bixcbiAgICBwbGF0Zm9ybTogcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICBhcmNoOiBwcm9jZXNzLmFyY2gsXG4gICAga2VybmVsQXJjaDoga2VybmVsQXJjaCB8fCBcInVua25vd25cIixcbiAgICBlbmdpbmU6IHByb2plblNwZWNpZmllcixcbiAgfSk7XG4gIHJ1bkJ1bihbXCJhZGRcIiwgXCItRFwiLCBcInByb2plblwiLCBcInR5cGVzY3JpcHRAXjUuOS4zXCIsIFwiQHR5cGVzL2J1blwiLCBwcm9qZW5TcGVjaWZpZXJdLCByb290KTtcbn1cblxuLyoqXG4gKiBQaW4gYSBub24tZGVmYXVsdCByZWdpc3RyeSBpbnRvIHRoZSBuZXcgcm9vdCdzIGAubnBtcmNgLlxuICpcbiAqIFRoZSBDTEkgYWxyZWFkeSBmb3JjZXMgYC0tcmVnaXN0cnlgIG9udG8gdGhlIGJ1biBpbnZvY2F0aW9ucyBpdCBtYWtlcyBpdHNlbGYsXG4gKiBidXQgYSBib290c3RyYXBwZWQgd29ya3NwYWNlIG91dGxpdmVzIHRoaXMgcHJvY2VzczogZXZlcnkgbGF0ZXIgYGJ1biBpbnN0YWxsYFxuICogdGhlIGRldmVsb3BlciAob3IgcHJvamVuJ3MgcG9zdC1zeW50aCBzdGVwKSBydW5zIGlzIG9uIGl0cyBvd24uIGJ1biBpZ25vcmVzXG4gKiBgbnBtX2NvbmZpZ19yZWdpc3RyeWAgZnJvbSB0aGUgZW52aXJvbm1lbnQsIHNvIHdpdGhvdXQgYSBmaWxlIG9uIGRpc2sgdGhvc2VcbiAqIHJ1bnMgcmV2ZXJ0IHRvIGBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9gIC0gd2hpY2ggaXMgYSBoYXJkIGZhaWx1cmUgd2hlcmVcbiAqIHRoZSBjdXN0b20gcmVnaXN0cnkgd2FzIHRoZSBvbmx5IHJlYWNoYWJsZSBvbmUuXG4gKlxuICogT25seSB3cml0ZXMgZm9yIGFuIGFjdHVhbCBvdmVycmlkZSwgbmV2ZXIgY3JlYXRlcyBhIGZpbGUganVzdCB0byBuYW1lIG5wbWpzLFxuICogYW5kIG5ldmVyIG92ZXJ3cml0ZXMgYW4gZXhpc3RpbmcgYC5ucG1yY2AgKHRoZSBkZXZlbG9wZXIncyBvd24gd2lucykuXG4gKi9cbmZ1bmN0aW9uIHNlZWRSZWdpc3RyeShyb290OiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgcmVnaXN0cnkgPSBwcm9qZWN0VXRpbHNcbiAgICAubnBtUmVnaXN0cnkobnVsbCwgeyBvdmVycmlkZU9ubHk6IHRydWUsIGVudlZhcnM6IHRydWUgfSlcbiAgICA/LnRvU3RyaW5nKCk7XG4gIGlmICghcmVnaXN0cnkpIHJldHVybjtcbiAgY29uc3QgbnBtcmMgPSBqb2luKHJvb3QsIFwiLm5wbXJjXCIpO1xuICBpZiAoZXhpc3RzU3luYyhucG1yYykpIHJldHVybjtcbiAgd3JpdGVGaWxlU3luYyhucG1yYywgYHJlZ2lzdHJ5PSR7cmVnaXN0cnl9XFxuYCk7XG59XG5cbi8qKlxuICogTWFrZSB3aGF0IGBidW4gaW5pdGAgcHJvZHVjZWQgc2FmZSB0byBzeW50aCBhZ2FpbnN0OiBmb3JjZSBgdHlwZTogXCJtb2R1bGVcImBcbiAqIChidW4gcnVucyBgLnByb2plbnJjLnRzYCBmaW5lIGVpdGhlciB3YXksIGJ1dCBwcm9qZW4ncyBFU00gc291cmNlcyBhbmQgdGhlXG4gKiBlbWl0dGVkIGNvbmZpZyBhc3N1bWUgbW9kdWxlIHR5cGUpIGFuZCBkcm9wIGFueSBgcGFja2FnZU1hbmFnZXJgL2BkZXZFbmdpbmVzYFxuICogZmllbGQgdGhhdCB3b3VsZCBwaW4gYSBkaWZmZXJlbnQgbWFuYWdlci4gcHJvamVuIHJlZ2VuZXJhdGVzIHRoZSB3aG9sZSBtYW5pZmVzdFxuICogYXQgc3ludGgsIHNvIHRoaXMgb25seSBoYXMgdG8gaG9sZCB0aGUgc2VlZCB0b2dldGhlciBsb25nIGVub3VnaCB0byBnZXQgdGhlcmUuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNlZWRNYW5pZmVzdChtYW5pZmVzdFBhdGg6IHN0cmluZyk6IHZvaWQge1xuICB0cnkge1xuICAgIGNvbnN0IG1hbmlmZXN0ID0ganNvbi5wYXJzZVJlY29yZChyZWFkRmlsZVN5bmMobWFuaWZlc3RQYXRoLCBcInV0ZjhcIikpO1xuICAgIGlmICghbWFuaWZlc3QpIHJldHVybjtcbiAgICBkZWxldGUgbWFuaWZlc3QuZGV2RW5naW5lcztcbiAgICBkZWxldGUgbWFuaWZlc3QucGFja2FnZU1hbmFnZXI7XG4gICAgbWFuaWZlc3QudHlwZSA9IFwibW9kdWxlXCI7XG4gICAgd3JpdGVGaWxlU3luYyhtYW5pZmVzdFBhdGgsIGAke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0LCBudWxsLCAyKX1cXG5gKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gQSBtYWxmb3JtZWQvYWJzZW50IG1hbmlmZXN0IGhlcmUganVzdCBtZWFucyB0aGUgbGF0ZXIgYGJ1biBhZGRgIHJlY3JlYXRlcyBpdC5cbiAgfVxufVxuXG4vKipcbiAqIFJ1biB0aGUgaW5pdGlhbCBzeW50aCBieSBleGVjdXRpbmcgYC5wcm9qZW5yYy50c2AgZGlyZWN0bHkgd2l0aCBidW4gKHdpdGhcbiAqIGBQUk9KRU5fRElTQUJMRV9QT1NUYCBzZXQpLCBOT1QgYHByb2plbiA8dGFzaz5gLiBVc2UgcmlnaHQgYWZ0ZXIgc2VlZGluZyBhXG4gKiBmcmVzaCB3b3Jrc3BhY2U6IHRoZSBwcm9qZW4gVEFTS1MgKGBzeW5jYCwgYGJhcnJlbHNgLCAuLi4pIG9ubHkgZXhpc3Qgb25jZVxuICogYC5wcm9qZW5yYy50c2AgaGFzIHJ1biBvbmNlLCBzbyBgcHJvamVuIHN5bmNgIGNhbid0IGJlIHRoZSBib290c3RyYXBwaW5nIHN0ZXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5Jbml0aWFsU3ludGgocm9vdDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IFtjb21tYW5kLCAuLi5wcmVmaXhdID0gcmVzb2x2ZUJ1bkFyZ3YoKTtcbiAgLy8gYnVuIHJ1bnMgdGhlIGAudHNgIGRpcmVjdGx5LiBUaGUgcmVnaXN0cnkgcmVhY2hlcyBhbnl0aGluZyBuZXN0ZWQgdGhyb3VnaFxuICAvLyBgY2hpbGRFbnZgIGFuZCB0aGUgc2VlZGVkIGAubnBtcmNgLlxuICBleGVjLnNwYXduU3luYyhjb21tYW5kLCBbLi4ucHJlZml4LCBcIi5wcm9qZW5yYy50c1wiXSwge1xuICAgIGN3ZDogcm9vdCxcbiAgICBlbnY6IGNoaWxkRW52KHsgUFJPSkVOX0RJU0FCTEVfUE9TVDogXCJ0cnVlXCIgfSksXG4gICAgY2hlY2s6IHRydWUsXG4gIH0pO1xufVxuIl19
package/lib/src/bun.js CHANGED
@@ -22,8 +22,8 @@
22
22
  */
23
23
  import { existsSync } from "node:fs";
24
24
  import { delimiter, dirname, join } from "node:path";
25
- import { exec, project } from "@dbx-tools/core";
26
- import { functionModule, log } from "@dbx-tools/shared-core";
25
+ import { exec, projectUtils } from "@dbx-tools/core";
26
+ import { functionUtils, log } from "@dbx-tools/shared-core";
27
27
  import { needsInstall } from "./root.js";
28
28
  const logger = log.logger("dbx-tools:bun");
29
29
  /**
@@ -40,7 +40,7 @@ const REGISTRY_SUBCOMMANDS = new Set(["add", "install", "i", "update", "up"]);
40
40
  * container may export it without any `.npmrc` for lookup. Memoized: resolution
41
41
  * shells out.
42
42
  */
43
- const registryOverride = functionModule.memoize(() => project.npmRegistry(null, { overrideOnly: true, envVars: true })?.toString());
43
+ const registryOverride = functionUtils.memoize(() => projectUtils.npmRegistry(null, { overrideOnly: true, envVars: true })?.toString());
44
44
  /** `--registry <url>` for a bun invocation, or `[]` when the subcommand doesn't resolve. */
45
45
  export function bunRegistryArgs(args) {
46
46
  const url = registryOverride();
@@ -90,7 +90,7 @@ function resolveBunArgvImpl() {
90
90
  return ["bun"];
91
91
  }
92
92
  /** Memoized `[command, ...prefix]` argv prefix to run bun. */
93
- export const resolveBunArgv = functionModule.memoize(resolveBunArgvImpl);
93
+ export const resolveBunArgv = functionUtils.memoize(resolveBunArgvImpl);
94
94
  /** Run bun with inherited stdio from `cwd`, forcing the resolved registry. */
95
95
  export function runBun(args, cwd) {
96
96
  const [command, ...prefix] = resolveBunArgv();
@@ -123,4 +123,4 @@ export function runProjen(args, root) {
123
123
  // Fallback: resolve projen through bun's package runner.
124
124
  runBun(["x", "projen", ...args], root);
125
125
  }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFekMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUUzQzs7OztHQUlHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBRTlFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBdUIsRUFBRSxDQUN2RSxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQzdFLENBQUM7QUFFRiw0RkFBNEY7QUFDNUYsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUF1QjtJQUNyRCxNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQy9CLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDcEIsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFD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QUM7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFjLEVBQUUsSUFBWTtJQUNwRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0QsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUMxQixNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuQyxPQUFPO0lBQ1QsQ0FBQztJQUNELHlEQUF5RDtJQUN6RCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogYnVuIGRpc2NvdmVyeSwgd29ya3NwYWNlIGluc3RhbGwsIGFuZCBwcm9qZW4gZm9yd2FyZGluZyBmb3IgdGhlIGBkYngtdG9vbHNgIENMSS5cbiAqXG4gKiAjIyBGb3JjaW5nIGEgY3VzdG9tIHJlZ2lzdHJ5XG4gKlxuICogYnVuIGhvbm9ycyBhIGAtLXJlZ2lzdHJ5IDx1cmw+YCBmbGFnIG9uIGBidW4gaW5zdGFsbGAvYGJ1biBhZGRgIGFuZCBhIHByb2plY3RcbiAqIGAubnBtcmNgLCBidXQgKGxpa2UgcG5wbSkgaWdub3JlcyB0aGUgYG5wbV9jb25maWdfcmVnaXN0cnlgIGVudiB2YXIgZm9yIGl0cyBvd25cbiAqIHJlc29sdXRpb24uIFNvIGEgY3VzdG9tIHJlZ2lzdHJ5IGlzIGZvcmNlZCB0aHJvdWdoIFRXTyBjaGFubmVscywgZWFjaCB3aGVyZSBpdFxuICogYXBwbGllczpcbiAqXG4gKiAgLSB7QGxpbmsgYnVuUmVnaXN0cnlBcmdzfSBwYXNzZXMgYC0tcmVnaXN0cnlgIHRvIHRoZSBwYWNrYWdlLXJlc29sdmluZ1xuICogICAgc3ViY29tbWFuZHMgKGBpbnN0YWxsYC9gYWRkYC9gdXBkYXRlYCksIG5ldmVyIHRvIGBidW4gcnVuYC9gYnVueGAsIHdob3NlXG4gKiAgICB0cmFpbGluZyBhcmdzIGJlbG9uZyB0byB0aGUgc2NyaXB0LlxuICogIC0ge0BsaW5rIGNoaWxkRW52fSBrZWVwcyBgLm5wbXJjYC1zdHlsZSBlbnYgYWxpYXNlcyBzZXQgZm9yIGFueSBuZXN0ZWRcbiAqICAgIG5wbS1iYXNlZCB0b29sLCBhbmQgKGNyaXRpY2FsbHkpIHB1dHMgdGhlIGJ1bi9ub2RlIGV4ZWN1dGFibGUgZGlyIG9uIFBBVEggc29cbiAqICAgIGEgbGlmZWN5Y2xlIHNjcmlwdCBjYW4gaW52b2tlIHRoZSBydW50aW1lIGJ5IGJhcmUgbmFtZS5cbiAqXG4gKiBgQGRieC10b29scy9jb3JlYCdzIGBucG1SZWdpc3RyeSh7IG92ZXJyaWRlT25seTogdHJ1ZSB9KWAgcmV0dXJucyBub3RoaW5nIHdoZW5cbiAqIHRoZSBlZmZlY3RpdmUgcmVnaXN0cnkgSVMgbnBtanMsIHNvIG5vbmUgb2YgdGhpcyB0b3VjaGVzIGEgZGVmYXVsdCBpbnN0YWxsLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBkZWxpbWl0ZXIsIGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBleGVjLCBwcm9qZWN0IH0gZnJvbSBcIkBkYngtdG9vbHMvY29yZVwiO1xuaW1wb3J0IHsgZnVuY3Rpb25Nb2R1bGUsIGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBuZWVkc0luc3RhbGwgfSBmcm9tIFwiLi9yb290LnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJkYngtdG9vbHM6YnVuXCIpO1xuXG4vKipcbiAqIGJ1biBzdWJjb21tYW5kcyB0aGF0IHJlc29sdmUgcGFja2FnZXMgZnJvbSBhIHJlZ2lzdHJ5LCBhbmQgdGhlcmVmb3JlIGFjY2VwdCBhXG4gKiBtZWFuaW5nZnVsIGAtLXJlZ2lzdHJ5YC4gRXZlcnl0aGluZyBlbHNlIChgcnVuYCwgYHhgLCBgcG1gLCAuLi4pIGlzIGxlZnQgYWxvbmU6XG4gKiBgcnVuYC9geGAgZm9yd2FyZCB0cmFpbGluZyBhcmd1bWVudHMgdG8gdGhlIHNjcmlwdCB0aGV5IHJ1bi5cbiAqL1xuY29uc3QgUkVHSVNUUllfU1VCQ09NTUFORFMgPSBuZXcgU2V0KFtcImFkZFwiLCBcImluc3RhbGxcIiwgXCJpXCIsIFwidXBkYXRlXCIsIFwidXBcIl0pO1xuXG4vKipcbiAqIFRoZSByZWdpc3RyeSB0byBmb3JjZSBvbnRvIGNoaWxkIGluc3RhbGxzLCBvciBgdW5kZWZpbmVkYCB3aGVuIHRoZSBlZmZlY3RpdmVcbiAqIG9uZSBpcyBhbHJlYWR5IHRoZSBwdWJsaWMgZGVmYXVsdC5cbiAqXG4gKiBgZW52VmFyczogdHJ1ZWAgYWxzbyBjb25zdWx0cyBgbnBtX2NvbmZpZ19yZWdpc3RyeWAgZGlyZWN0bHksIGJlY2F1c2UgYVxuICogY29udGFpbmVyIG1heSBleHBvcnQgaXQgd2l0aG91dCBhbnkgYC5ucG1yY2AgZm9yIGxvb2t1cC4gTWVtb2l6ZWQ6IHJlc29sdXRpb25cbiAqIHNoZWxscyBvdXQuXG4gKi9cbmNvbnN0IHJlZ2lzdHJ5T3ZlcnJpZGUgPSBmdW5jdGlvbk1vZHVsZS5tZW1vaXplKCgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT5cbiAgcHJvamVjdC5ucG1SZWdpc3RyeShudWxsLCB7IG92ZXJyaWRlT25seTogdHJ1ZSwgZW52VmFyczogdHJ1ZSB9KT8udG9TdHJpbmcoKSxcbik7XG5cbi8qKiBgLS1yZWdpc3RyeSA8dXJsPmAgZm9yIGEgYnVuIGludm9jYXRpb24sIG9yIGBbXWAgd2hlbiB0aGUgc3ViY29tbWFuZCBkb2Vzbid0IHJlc29sdmUuICovXG5leHBvcnQgZnVuY3Rpb24gYnVuUmVnaXN0cnlBcmdzKGFyZ3M6IHJlYWRvbmx5IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICBjb25zdCB1cmwgPSByZWdpc3RyeU92ZXJyaWRlKCk7XG4gIGlmICghdXJsKSByZXR1cm4gW107XG4gIHJldHVybiBidW5Vc2VzUmVnaXN0cnkoYXJncykgPyBbXCItLXJlZ2lzdHJ5XCIsIHVybF0gOiBbXTtcbn1cblxuLyoqIFdoZXRoZXIgdGhlIGZpcnN0IGJ1biBzdWJjb21tYW5kIHJlc29sdmVzIHBhY2thZ2VzIGFuZCBhY2NlcHRzIGAtLXJlZ2lzdHJ5YC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidW5Vc2VzUmVnaXN0cnkoYXJnczogcmVhZG9ubHkgc3RyaW5nW10pOiBib29sZWFuIHtcbiAgY29uc3Qgc3ViY29tbWFuZCA9IGFyZ3MuZmluZCgoYXJnKSA9PiAhYXJnLnN0YXJ0c1dpdGgoXCItXCIpKTtcbiAgcmV0dXJuIHN1YmNvbW1hbmQgIT09IHVuZGVmaW5lZCAmJiBSRUdJU1RSWV9TVUJDT01NQU5EUy5oYXMoc3ViY29tbWFuZCk7XG59XG5cbi8qKlxuICogYHByb2Nlc3MuZW52YCBwbHVzIHRoZSBydW50aW1lIGV4ZWN1dGFibGUgZGlyZWN0b3J5IGFuZCByZWdpc3RyeSBhbGlhc2VzLlxuICpcbiAqIFRoZSBleGVjdXRhYmxlIGRpcmVjdG9yeSBtYXR0ZXJzIHdoZW4gdGhpcyBDTEkgd2FzIGxhdW5jaGVkIGJ5IGFic29sdXRlIHBhdGg6XG4gKiBidW4gcnVucywgYnV0IGEgbGlmZWN5Y2xlIHNjcmlwdCB0aGF0IGludm9rZXMgYGJ1bmAvYG5vZGVgIGJ5IGJhcmUgbmFtZSB3b3VsZFxuICogb3RoZXJ3aXNlIGZhaWwgd2l0aCBgY29tbWFuZCBub3QgZm91bmRgLiBQcmVwZW5kaW5nIGBkaXJuYW1lKHByb2Nlc3MuZXhlY1BhdGgpYFxuICogKHRoZSBydW5uaW5nIGJ1biBiaW5hcnkncyBkaXIpIHB1dHMgdGhlIHJ1bnRpbWUgYmFjayBvbiBQQVRILlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hpbGRFbnYoZXh0cmE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogTm9kZUpTLlByb2Nlc3NFbnYge1xuICBjb25zdCBlbnY6IE5vZGVKUy5Qcm9jZXNzRW52ID0geyAuLi5wcm9jZXNzLmVudiwgLi4uZXh0cmEgfTtcbiAgY29uc3QgcnVudGltZUJpbiA9IGRpcm5hbWUocHJvY2Vzcy5leGVjUGF0aCk7XG4gIGNvbnN0IHBhdGhFbnRyaWVzID0gKGVudi5QQVRIID8/IFwiXCIpLnNwbGl0KGRlbGltaXRlcikuZmlsdGVyKEJvb2xlYW4pO1xuICBpZiAoIXBhdGhFbnRyaWVzLmluY2x1ZGVzKHJ1bnRpbWVCaW4pKSB7XG4gICAgZW52LlBBVEggPSBbcnVudGltZUJpbiwgLi4ucGF0aEVudHJpZXNdLmpvaW4oZGVsaW1pdGVyKTtcbiAgfVxuICBjb25zdCB1cmwgPSByZWdpc3RyeU92ZXJyaWRlKCk7XG4gIGlmICh1cmwpIHtcbiAgICAvLyBCb3RoIGNhc2VzOiBlbnYgaXMgY2FzZS1zZW5zaXRpdmUgb24gUE9TSVgsIGFuZCBucG0gbG93ZXJjYXNlcyB3aGVuIHJlYWRpbmcuXG4gICAgZW52Lm5wbV9jb25maWdfcmVnaXN0cnkgPSB1cmw7XG4gICAgZW52Lk5QTV9DT05GSUdfUkVHSVNUUlkgPSB1cmw7XG4gIH1cbiAgcmV0dXJuIGVudjtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBhcmd2IHByZWZpeCB0byBydW4gYnVuOiB0aGUgYGJ1bmAgcGFja2FnZSdzIG93biBiaW4gd2hlbiB0aGlzIENMSVxuICogaXMgaXRzZWxmIHJ1bm5pbmcgdW5kZXIgYnVuIChgcHJvY2Vzcy5leGVjUGF0aGAgaXMgdGhlIGJ1biBiaW5hcnkpLCBlbHNlIGEgYmFyZVxuICogYGJ1bmAgb24gUEFUSC4gTm8gY29yZXBhY2svbnB4IGZhbGxiYWNrIC0gYnVuIGlzIHRoZSBhbWJpZW50IHJ1bnRpbWUgdGhpc1xuICogdG9vbGNoYWluIHJlcXVpcmVzLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQnVuQXJndkltcGwoKTogc3RyaW5nW10ge1xuICAvLyBUaGUgcnVubmluZyBwcm9jZXNzIElTIGJ1biBpbiBldmVyeSBzdXBwb3J0ZWQgcGF0aCAodGhlIGJpbiBpcyBgYnVuIDxmaWxlPmApLFxuICAvLyBzbyByZXVzZSBpdCBkaXJlY3RseSAtIG5vIFBBVEggbG9va3VwLCBubyBwYWNrYWdlLW1hbmFnZXIgc2hpbS5cbiAgaWYgKC9cXGJidW5cXGIvLnRlc3QocHJvY2Vzcy5leGVjUGF0aCkpIHJldHVybiBbcHJvY2Vzcy5leGVjUGF0aF07XG4gIHJldHVybiBbXCJidW5cIl07XG59XG5cbi8qKiBNZW1vaXplZCBgW2NvbW1hbmQsIC4uLnByZWZpeF1gIGFyZ3YgcHJlZml4IHRvIHJ1biBidW4uICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZUJ1bkFyZ3YgPSBmdW5jdGlvbk1vZHVsZS5tZW1vaXplKHJlc29sdmVCdW5Bcmd2SW1wbCk7XG5cbi8qKiBSdW4gYnVuIHdpdGggaW5oZXJpdGVkIHN0ZGlvIGZyb20gYGN3ZGAsIGZvcmNpbmcgdGhlIHJlc29sdmVkIHJlZ2lzdHJ5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkJ1bihhcmdzOiBzdHJpbmdbXSwgY3dkOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgW2NvbW1hbmQsIC4uLnByZWZpeF0gPSByZXNvbHZlQnVuQXJndigpO1xuICBjb25zdCByZWdpc3RyeUFyZ3MgPSBidW5SZWdpc3RyeUFyZ3MoYXJncyk7XG4gIGlmIChyZWdpc3RyeUFyZ3MubGVuZ3RoID4gMCkge1xuICAgIGxvZ2dlci5pbmZvKGBydW5uaW5nIGJ1biB3aXRoIHJlZ2lzdHJ5OiAke3JlZ2lzdHJ5QXJnc1sxXX1gKTtcbiAgfVxuICBleGVjLnNwYXduU3luYyhjb21tYW5kLCBbLi4ucHJlZml4LCAuLi5hcmdzLCAuLi5yZWdpc3RyeUFyZ3NdLCB7XG4gICAgY3dkLFxuICAgIGNoZWNrOiB0cnVlLFxuICAgIGVudjogY2hpbGRFbnYoKSxcbiAgfSk7XG59XG5cbi8qKiBJbnN0YWxsIHdvcmtzcGFjZSBkZXBlbmRlbmNpZXMgd2hlbiBgbm9kZV9tb2R1bGVzYCBvciBwcm9qZW4gaXMgbWlzc2luZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVXb3Jrc3BhY2VSZWFkeShyb290OiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKG5lZWRzSW5zdGFsbChyb290KSkge1xuICAgIHJ1bkJ1bihbXCJpbnN0YWxsXCJdLCByb290KTtcbiAgfVxufVxuXG4vKipcbiAqIFJ1biBwcm9qZW4gd2l0aCB0aGUgZ2l2ZW4gYXJncyBmcm9tIGByb290YC4gUHJlZmVycyB0aGUgaW5zdGFsbGVkIGBwcm9qZW5gIGJpblxuICogdmlhIGBidW4gcnVuYCwgc28gdGhlIHdvcmtzcGFjZSdzIG93biBlbmdpbmUgKyB0YXNrcyBhcmUgdXNlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1blByb2plbihhcmdzOiBzdHJpbmdbXSwgcm9vdDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHByb2plbkJpbiA9IGpvaW4ocm9vdCwgXCJub2RlX21vZHVsZXNcIiwgXCIuYmluXCIsIFwicHJvamVuXCIpO1xuICBpZiAoZXhpc3RzU3luYyhwcm9qZW5CaW4pKSB7XG4gICAgcnVuQnVuKFtwcm9qZW5CaW4sIC4uLmFyZ3NdLCByb290KTtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gRmFsbGJhY2s6IHJlc29sdmUgcHJvamVuIHRocm91Z2ggYnVuJ3MgcGFja2FnZSBydW5uZXIuXG4gIHJ1bkJ1bihbXCJ4XCIsIFwicHJvamVuXCIsIC4uLmFyZ3NdLCByb290KTtcbn1cbiJdfQ==
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFekMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUUzQzs7OztHQUlHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBRTlFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBdUIsRUFBRSxDQUN0RSxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQ2xGLENBQUM7QUFFRiw0RkFBNEY7QUFDNUYsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUF1QjtJQUNyRCxNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQy9CLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDcEIsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFD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QUM7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFjLEVBQUUsSUFBWTtJQUNwRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0QsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUMxQixNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuQyxPQUFPO0lBQ1QsQ0FBQztJQUNELHlEQUF5RDtJQUN6RCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogYnVuIGRpc2NvdmVyeSwgd29ya3NwYWNlIGluc3RhbGwsIGFuZCBwcm9qZW4gZm9yd2FyZGluZyBmb3IgdGhlIGBkYngtdG9vbHNgIENMSS5cbiAqXG4gKiAjIyBGb3JjaW5nIGEgY3VzdG9tIHJlZ2lzdHJ5XG4gKlxuICogYnVuIGhvbm9ycyBhIGAtLXJlZ2lzdHJ5IDx1cmw+YCBmbGFnIG9uIGBidW4gaW5zdGFsbGAvYGJ1biBhZGRgIGFuZCBhIHByb2plY3RcbiAqIGAubnBtcmNgLCBidXQgKGxpa2UgcG5wbSkgaWdub3JlcyB0aGUgYG5wbV9jb25maWdfcmVnaXN0cnlgIGVudiB2YXIgZm9yIGl0cyBvd25cbiAqIHJlc29sdXRpb24uIFNvIGEgY3VzdG9tIHJlZ2lzdHJ5IGlzIGZvcmNlZCB0aHJvdWdoIFRXTyBjaGFubmVscywgZWFjaCB3aGVyZSBpdFxuICogYXBwbGllczpcbiAqXG4gKiAgLSB7QGxpbmsgYnVuUmVnaXN0cnlBcmdzfSBwYXNzZXMgYC0tcmVnaXN0cnlgIHRvIHRoZSBwYWNrYWdlLXJlc29sdmluZ1xuICogICAgc3ViY29tbWFuZHMgKGBpbnN0YWxsYC9gYWRkYC9gdXBkYXRlYCksIG5ldmVyIHRvIGBidW4gcnVuYC9gYnVueGAsIHdob3NlXG4gKiAgICB0cmFpbGluZyBhcmdzIGJlbG9uZyB0byB0aGUgc2NyaXB0LlxuICogIC0ge0BsaW5rIGNoaWxkRW52fSBrZWVwcyBgLm5wbXJjYC1zdHlsZSBlbnYgYWxpYXNlcyBzZXQgZm9yIGFueSBuZXN0ZWRcbiAqICAgIG5wbS1iYXNlZCB0b29sLCBhbmQgKGNyaXRpY2FsbHkpIHB1dHMgdGhlIGJ1bi9ub2RlIGV4ZWN1dGFibGUgZGlyIG9uIFBBVEggc29cbiAqICAgIGEgbGlmZWN5Y2xlIHNjcmlwdCBjYW4gaW52b2tlIHRoZSBydW50aW1lIGJ5IGJhcmUgbmFtZS5cbiAqXG4gKiBgQGRieC10b29scy9jb3JlYCdzIGBucG1SZWdpc3RyeSh7IG92ZXJyaWRlT25seTogdHJ1ZSB9KWAgcmV0dXJucyBub3RoaW5nIHdoZW5cbiAqIHRoZSBlZmZlY3RpdmUgcmVnaXN0cnkgSVMgbnBtanMsIHNvIG5vbmUgb2YgdGhpcyB0b3VjaGVzIGEgZGVmYXVsdCBpbnN0YWxsLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBkZWxpbWl0ZXIsIGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBleGVjLCBwcm9qZWN0VXRpbHMgfSBmcm9tIFwiQGRieC10b29scy9jb3JlXCI7XG5pbXBvcnQgeyBmdW5jdGlvblV0aWxzLCBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgbmVlZHNJbnN0YWxsIH0gZnJvbSBcIi4vcm9vdC50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiZGJ4LXRvb2xzOmJ1blwiKTtcblxuLyoqXG4gKiBidW4gc3ViY29tbWFuZHMgdGhhdCByZXNvbHZlIHBhY2thZ2VzIGZyb20gYSByZWdpc3RyeSwgYW5kIHRoZXJlZm9yZSBhY2NlcHQgYVxuICogbWVhbmluZ2Z1bCBgLS1yZWdpc3RyeWAuIEV2ZXJ5dGhpbmcgZWxzZSAoYHJ1bmAsIGB4YCwgYHBtYCwgLi4uKSBpcyBsZWZ0IGFsb25lOlxuICogYHJ1bmAvYHhgIGZvcndhcmQgdHJhaWxpbmcgYXJndW1lbnRzIHRvIHRoZSBzY3JpcHQgdGhleSBydW4uXG4gKi9cbmNvbnN0IFJFR0lTVFJZX1NVQkNPTU1BTkRTID0gbmV3IFNldChbXCJhZGRcIiwgXCJpbnN0YWxsXCIsIFwiaVwiLCBcInVwZGF0ZVwiLCBcInVwXCJdKTtcblxuLyoqXG4gKiBUaGUgcmVnaXN0cnkgdG8gZm9yY2Ugb250byBjaGlsZCBpbnN0YWxscywgb3IgYHVuZGVmaW5lZGAgd2hlbiB0aGUgZWZmZWN0aXZlXG4gKiBvbmUgaXMgYWxyZWFkeSB0aGUgcHVibGljIGRlZmF1bHQuXG4gKlxuICogYGVudlZhcnM6IHRydWVgIGFsc28gY29uc3VsdHMgYG5wbV9jb25maWdfcmVnaXN0cnlgIGRpcmVjdGx5LCBiZWNhdXNlIGFcbiAqIGNvbnRhaW5lciBtYXkgZXhwb3J0IGl0IHdpdGhvdXQgYW55IGAubnBtcmNgIGZvciBsb29rdXAuIE1lbW9pemVkOiByZXNvbHV0aW9uXG4gKiBzaGVsbHMgb3V0LlxuICovXG5jb25zdCByZWdpc3RyeU92ZXJyaWRlID0gZnVuY3Rpb25VdGlscy5tZW1vaXplKCgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT5cbiAgcHJvamVjdFV0aWxzLm5wbVJlZ2lzdHJ5KG51bGwsIHsgb3ZlcnJpZGVPbmx5OiB0cnVlLCBlbnZWYXJzOiB0cnVlIH0pPy50b1N0cmluZygpLFxuKTtcblxuLyoqIGAtLXJlZ2lzdHJ5IDx1cmw+YCBmb3IgYSBidW4gaW52b2NhdGlvbiwgb3IgYFtdYCB3aGVuIHRoZSBzdWJjb21tYW5kIGRvZXNuJ3QgcmVzb2x2ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidW5SZWdpc3RyeUFyZ3MoYXJnczogcmVhZG9ubHkgc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHVybCA9IHJlZ2lzdHJ5T3ZlcnJpZGUoKTtcbiAgaWYgKCF1cmwpIHJldHVybiBbXTtcbiAgcmV0dXJuIGJ1blVzZXNSZWdpc3RyeShhcmdzKSA/IFtcIi0tcmVnaXN0cnlcIiwgdXJsXSA6IFtdO1xufVxuXG4vKiogV2hldGhlciB0aGUgZmlyc3QgYnVuIHN1YmNvbW1hbmQgcmVzb2x2ZXMgcGFja2FnZXMgYW5kIGFjY2VwdHMgYC0tcmVnaXN0cnlgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1blVzZXNSZWdpc3RyeShhcmdzOiByZWFkb25seSBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICBjb25zdCBzdWJjb21tYW5kID0gYXJncy5maW5kKChhcmcpID0+ICFhcmcuc3RhcnRzV2l0aChcIi1cIikpO1xuICByZXR1cm4gc3ViY29tbWFuZCAhPT0gdW5kZWZpbmVkICYmIFJFR0lTVFJZX1NVQkNPTU1BTkRTLmhhcyhzdWJjb21tYW5kKTtcbn1cblxuLyoqXG4gKiBgcHJvY2Vzcy5lbnZgIHBsdXMgdGhlIHJ1bnRpbWUgZXhlY3V0YWJsZSBkaXJlY3RvcnkgYW5kIHJlZ2lzdHJ5IGFsaWFzZXMuXG4gKlxuICogVGhlIGV4ZWN1dGFibGUgZGlyZWN0b3J5IG1hdHRlcnMgd2hlbiB0aGlzIENMSSB3YXMgbGF1bmNoZWQgYnkgYWJzb2x1dGUgcGF0aDpcbiAqIGJ1biBydW5zLCBidXQgYSBsaWZlY3ljbGUgc2NyaXB0IHRoYXQgaW52b2tlcyBgYnVuYC9gbm9kZWAgYnkgYmFyZSBuYW1lIHdvdWxkXG4gKiBvdGhlcndpc2UgZmFpbCB3aXRoIGBjb21tYW5kIG5vdCBmb3VuZGAuIFByZXBlbmRpbmcgYGRpcm5hbWUocHJvY2Vzcy5leGVjUGF0aClgXG4gKiAodGhlIHJ1bm5pbmcgYnVuIGJpbmFyeSdzIGRpcikgcHV0cyB0aGUgcnVudGltZSBiYWNrIG9uIFBBVEguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZEVudihleHRyYT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBOb2RlSlMuUHJvY2Vzc0VudiB7XG4gIGNvbnN0IGVudjogTm9kZUpTLlByb2Nlc3NFbnYgPSB7IC4uLnByb2Nlc3MuZW52LCAuLi5leHRyYSB9O1xuICBjb25zdCBydW50aW1lQmluID0gZGlybmFtZShwcm9jZXNzLmV4ZWNQYXRoKTtcbiAgY29uc3QgcGF0aEVudHJpZXMgPSAoZW52LlBBVEggPz8gXCJcIikuc3BsaXQoZGVsaW1pdGVyKS5maWx0ZXIoQm9vbGVhbik7XG4gIGlmICghcGF0aEVudHJpZXMuaW5jbHVkZXMocnVudGltZUJpbikpIHtcbiAgICBlbnYuUEFUSCA9IFtydW50aW1lQmluLCAuLi5wYXRoRW50cmllc10uam9pbihkZWxpbWl0ZXIpO1xuICB9XG4gIGNvbnN0IHVybCA9IHJlZ2lzdHJ5T3ZlcnJpZGUoKTtcbiAgaWYgKHVybCkge1xuICAgIC8vIEJvdGggY2FzZXM6IGVudiBpcyBjYXNlLXNlbnNpdGl2ZSBvbiBQT1NJWCwgYW5kIG5wbSBsb3dlcmNhc2VzIHdoZW4gcmVhZGluZy5cbiAgICBlbnYubnBtX2NvbmZpZ19yZWdpc3RyeSA9IHVybDtcbiAgICBlbnYuTlBNX0NPTkZJR19SRUdJU1RSWSA9IHVybDtcbiAgfVxuICByZXR1cm4gZW52O1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIGFyZ3YgcHJlZml4IHRvIHJ1biBidW46IHRoZSBgYnVuYCBwYWNrYWdlJ3Mgb3duIGJpbiB3aGVuIHRoaXMgQ0xJXG4gKiBpcyBpdHNlbGYgcnVubmluZyB1bmRlciBidW4gKGBwcm9jZXNzLmV4ZWNQYXRoYCBpcyB0aGUgYnVuIGJpbmFyeSksIGVsc2UgYSBiYXJlXG4gKiBgYnVuYCBvbiBQQVRILiBObyBjb3JlcGFjay9ucHggZmFsbGJhY2sgLSBidW4gaXMgdGhlIGFtYmllbnQgcnVudGltZSB0aGlzXG4gKiB0b29sY2hhaW4gcmVxdWlyZXMuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVCdW5Bcmd2SW1wbCgpOiBzdHJpbmdbXSB7XG4gIC8vIFRoZSBydW5uaW5nIHByb2Nlc3MgSVMgYnVuIGluIGV2ZXJ5IHN1cHBvcnRlZCBwYXRoICh0aGUgYmluIGlzIGBidW4gPGZpbGU+YCksXG4gIC8vIHNvIHJldXNlIGl0IGRpcmVjdGx5IC0gbm8gUEFUSCBsb29rdXAsIG5vIHBhY2thZ2UtbWFuYWdlciBzaGltLlxuICBpZiAoL1xcYmJ1blxcYi8udGVzdChwcm9jZXNzLmV4ZWNQYXRoKSkgcmV0dXJuIFtwcm9jZXNzLmV4ZWNQYXRoXTtcbiAgcmV0dXJuIFtcImJ1blwiXTtcbn1cblxuLyoqIE1lbW9pemVkIGBbY29tbWFuZCwgLi4ucHJlZml4XWAgYXJndiBwcmVmaXggdG8gcnVuIGJ1bi4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlQnVuQXJndiA9IGZ1bmN0aW9uVXRpbHMubWVtb2l6ZShyZXNvbHZlQnVuQXJndkltcGwpO1xuXG4vKiogUnVuIGJ1biB3aXRoIGluaGVyaXRlZCBzdGRpbyBmcm9tIGBjd2RgLCBmb3JjaW5nIHRoZSByZXNvbHZlZCByZWdpc3RyeS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5CdW4oYXJnczogc3RyaW5nW10sIGN3ZDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IFtjb21tYW5kLCAuLi5wcmVmaXhdID0gcmVzb2x2ZUJ1bkFyZ3YoKTtcbiAgY29uc3QgcmVnaXN0cnlBcmdzID0gYnVuUmVnaXN0cnlBcmdzKGFyZ3MpO1xuICBpZiAocmVnaXN0cnlBcmdzLmxlbmd0aCA+IDApIHtcbiAgICBsb2dnZXIuaW5mbyhgcnVubmluZyBidW4gd2l0aCByZWdpc3RyeTogJHtyZWdpc3RyeUFyZ3NbMV19YCk7XG4gIH1cbiAgZXhlYy5zcGF3blN5bmMoY29tbWFuZCwgWy4uLnByZWZpeCwgLi4uYXJncywgLi4ucmVnaXN0cnlBcmdzXSwge1xuICAgIGN3ZCxcbiAgICBjaGVjazogdHJ1ZSxcbiAgICBlbnY6IGNoaWxkRW52KCksXG4gIH0pO1xufVxuXG4vKiogSW5zdGFsbCB3b3Jrc3BhY2UgZGVwZW5kZW5jaWVzIHdoZW4gYG5vZGVfbW9kdWxlc2Agb3IgcHJvamVuIGlzIG1pc3NpbmcuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlV29ya3NwYWNlUmVhZHkocm9vdDogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChuZWVkc0luc3RhbGwocm9vdCkpIHtcbiAgICBydW5CdW4oW1wiaW5zdGFsbFwiXSwgcm9vdCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSdW4gcHJvamVuIHdpdGggdGhlIGdpdmVuIGFyZ3MgZnJvbSBgcm9vdGAuIFByZWZlcnMgdGhlIGluc3RhbGxlZCBgcHJvamVuYCBiaW5cbiAqIHZpYSBgYnVuIHJ1bmAsIHNvIHRoZSB3b3Jrc3BhY2UncyBvd24gZW5naW5lICsgdGFza3MgYXJlIHVzZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5Qcm9qZW4oYXJnczogc3RyaW5nW10sIHJvb3Q6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBwcm9qZW5CaW4gPSBqb2luKHJvb3QsIFwibm9kZV9tb2R1bGVzXCIsIFwiLmJpblwiLCBcInByb2plblwiKTtcbiAgaWYgKGV4aXN0c1N5bmMocHJvamVuQmluKSkge1xuICAgIHJ1bkJ1bihbcHJvamVuQmluLCAuLi5hcmdzXSwgcm9vdCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIEZhbGxiYWNrOiByZXNvbHZlIHByb2plbiB0aHJvdWdoIGJ1bidzIHBhY2thZ2UgcnVubmVyLlxuICBydW5CdW4oW1wieFwiLCBcInByb2plblwiLCAuLi5hcmdzXSwgcm9vdCk7XG59XG4iXX0=
package/lib/src/cli.js CHANGED
@@ -12,11 +12,11 @@
12
12
  * @module
13
13
  */
14
14
  import { basename } from "node:path";
15
+ import { runReleaseBinary, releaseBinaryCommands, } from "@dbx-tools/rust-binary";
15
16
  import { Command } from "commander";
16
17
  import { bootstrapWorkspace, ensureEngineCurrent, runInitialSynth, seedToolchain, } from "./bootstrap.js";
17
18
  import { ensureWorkspaceReady, runBun, runProjen } from "./bun.js";
18
19
  import { findWorkspaceRoot, needsBootstrap, needsToolchain } from "./root.js";
19
- import { runRustReleaseBinary, rustReleaseBinaryCommands, } from "./rust-binary.js";
20
20
  /** Commands the bin exposes, and the names help is rendered under. */
21
21
  const PROGRAM_NAMES = ["dbx", "dbx-tools"];
22
22
  /**
@@ -68,7 +68,7 @@ function addForwardedCommand(program, name, description, load) {
68
68
  await buildProgram(`${program.name()} ${name}`).parseAsync(args, { from: "user" });
69
69
  });
70
70
  }
71
- function addRustReleaseCommand(program, command) {
71
+ function addReleaseCommand(program, command) {
72
72
  program
73
73
  .command(command.command)
74
74
  .description(command.description)
@@ -77,7 +77,7 @@ function addRustReleaseCommand(program, command) {
77
77
  .allowExcessArguments()
78
78
  .helpOption(false)
79
79
  .action(async (args) => {
80
- process.exitCode = await runRustReleaseBinary(command, args);
80
+ process.exitCode = await runReleaseBinary(command, args);
81
81
  });
82
82
  }
83
83
  /** Build the `dbx` commander program (no side effects until parsed). */
@@ -100,8 +100,8 @@ export function buildProgram(name = PROGRAM_NAMES[0]) {
100
100
  addForwardedCommand(program, "appkit", "AppKit helpers (env: print the environment an AppKit app resolves)", async () => (await import("@dbx-tools/cli-appkit-env/cli")).buildProgram);
101
101
  addForwardedCommand(program, "auth", "Authenticate to Databricks and manage OAuth tokens", async () => (await import("@dbx-tools/cli-auth/cli")).buildProgram);
102
102
  addForwardedCommand(program, "tunnel", "Run a public portr tunnel with an email-OTP gate", async () => (await import("@dbx-tools/cli-tunnel/cli")).buildProgram);
103
- for (const command of rustReleaseBinaryCommands()) {
104
- addRustReleaseCommand(program, command);
103
+ for (const command of releaseBinaryCommands()) {
104
+ addReleaseCommand(program, command);
105
105
  }
106
106
  return program;
107
107
  }
@@ -117,4 +117,4 @@ function programName(argv) {
117
117
  export async function runCli(argv) {
118
118
  await buildProgram(programName(argv)).parseAsync(argv);
119
119
  }
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzlFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIseUJBQXlCLEdBRTFCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsc0VBQXNFO0FBQ3RFLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBVSxDQUFDO0FBRXBEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLG1CQUFtQixDQUFDLFVBQW9CLEVBQUUsUUFBaUI7SUFDL0UsTUFBTSxJQUFJLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3pCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN6QixhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FB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a0QsRUFDbEQsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQ3JFLENBQUM7SUFFRixLQUFLLE1BQU0sT0FBTyxJQUFJLHlCQUF5QixFQUFFLEVBQUUsQ0FBQztRQUNsRCxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLFdBQVcsQ0FBQyxJQUFjO0lBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3pGLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RixDQUFDO0FBRUQsb0VBQW9FO0FBQ3BFLE1BQU0sQ0FBQyxLQUFLLFVBQVUsTUFBTSxDQUFDLElBQWM7SUFDekMsTUFBTSxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbW1hbmRlciBlbnRyeSBmb3IgYGRieGAgYW5kIGl0cyBgZGJ4LXRvb2xzYCBhbGlhcy5cbiAqXG4gKiBgZGV2YCBib290c3RyYXBzIG9yIHJlcGFpcnMgYSB3b3Jrc3BhY2UgYW5kIGZvcndhcmRzIHRvIHByb2plbi5cbiAqIGBhcHBraXRgIHByb3ZpZGVzIEFwcEtpdCBlbnZpcm9ubWVudCBoZWxwZXJzLlxuICogYGF1dGhgIG1hbmFnZXMgRGF0YWJyaWNrcyBPQXV0aCBhbmQgYWNjZXNzIHRva2Vucy5cbiAqIGB0dW5uZWxgIHJ1bnMgYSBwdWJsaWMgcG9ydHIgdHVubmVsIHdpdGggcGFzc3dvcmRsZXNzIGFjY2VzcyBnYXRpbmcuXG4gKlxuICogRmVhdHVyZSBjb21tYW5kcyBsb2FkIHRoZWlyIHNpYmxpbmcgcGFja2FnZXMgb25seSB3aGVuIHNlbGVjdGVkIGFuZCBmb3J3YXJkXG4gKiB0aGVpciBjb21wbGV0ZSBhcmd1bWVudCBsaXN0LCBpbmNsdWRpbmcgYC0taGVscGAuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyBiYXNlbmFtZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQge1xuICBib290c3RyYXBXb3Jrc3BhY2UsXG4gIGVuc3VyZUVuZ2luZUN1cnJlbnQsXG4gIHJ1bkluaXRpYWxTeW50aCxcbiAgc2VlZFRvb2xjaGFpbixcbn0gZnJvbSBcIi4vYm9vdHN0cmFwLnRzXCI7XG5pbXBvcnQgeyBlbnN1cmVXb3Jrc3BhY2VSZWFkeSwgcnVuQnVuLCBydW5Qcm9qZW4gfSBmcm9tIFwiLi9idW4udHNcIjtcbmltcG9ydCB7IGZpbmRXb3Jrc3BhY2VSb290LCBuZWVkc0Jvb3RzdHJhcCwgbmVlZHNUb29sY2hhaW4gfSBmcm9tIFwiLi9yb290LnRzXCI7XG5pbXBvcnQge1xuICBydW5SdXN0UmVsZWFzZUJpbmFyeSxcbiAgcnVzdFJlbGVhc2VCaW5hcnlDb21tYW5kcyxcbiAgdHlwZSBSdXN0UmVsZWFzZUJpbmFyeUNvbW1hbmQsXG59IGZyb20gXCIuL3J1c3QtYmluYXJ5LnRzXCI7XG5cbi8qKiBDb21tYW5kcyB0aGUgYmluIGV4cG9zZXMsIGFuZCB0aGUgbmFtZXMgaGVscCBpcyByZW5kZXJlZCB1bmRlci4gKi9cbmNvbnN0IFBST0dSQU1fTkFNRVMgPSBbXCJkYnhcIiwgXCJkYngtdG9vbHNcIl0gYXMgY29uc3Q7XG5cbi8qKlxuICogUHJlcGFyZSB0aGUgd29ya3NwYWNlIGF0IGByb290YCwgdGhlbiBydW4gcHJvamVuICh2aWEgYnVuKSB3aXRoIGBwcm9qZW5BcmdzYC5cbiAqXG4gKiBUaHJlZSBjYXNlcywgaW4gb3JkZXI6XG4gKiAgIC0gbm8gYC5wcm9qZW5yYy50c2AgYXQgYWxsIC0+IGZ1bGwgYm9vdHN0cmFwIChzY2FmZm9sZCArIGluc3RhbGwgKyBzeW50aCksXG4gKiAgICAgd2hpY2ggYWxyZWFkeSBydW5zIHRoZSBpbml0aWFsIHN5bnRoOyBub3RoaW5nIG1vcmUgdG8gZm9yd2FyZC5cbiAqICAgLSBhIGAucHJvamVucmMudHNgIGJ1dCB0aGUgZW5naW5lL3Rvb2xjaGFpbiBpc24ndCBpbnN0YWxsZWQgKGUuZy4gYSBmcmVzaGx5XG4gKiAgICAgY29waWVkIHByb2plY3Qgd2hvc2UgZ2VuZXJhdGVkIGZpbGVzICsgbWFuaWZlc3RzIGFyZSBnaXRpZ25vcmVkKSAtPiBzZWVkXG4gKiAgICAgdGhlIHRvb2xjaGFpbiwgdGhlbiBydW4gdGhlIElOSVRJQUwgc3ludGggZGlyZWN0bHkgKHRoZSBwcm9qZW4gdGFza3MgdGhlXG4gKiAgICAgYXJncyB3b3VsZCBuYW1lLCBsaWtlIGBzeW5jYCwgZG9uJ3QgZXhpc3QgdW50aWwgYC5wcm9qZW5yYy50c2AgaGFzIHJ1blxuICogICAgIG9uY2UpLCBhbmQgaW5zdGFsbC4gRG9uJ3QgZm9yd2FyZCBgcHJvamVuQXJnc2AgLSB0aGUgc3ludGggaXMgdGhlIHdvcmsuXG4gKiAgIC0gb3RoZXJ3aXNlIChlc3RhYmxpc2hlZCB3b3Jrc3BhY2UpIC0+IGVuc3VyZSBkZXBzLCBicmluZyB0aGUgZW5naW5lIHVwIHRvXG4gKiAgICAgdGhpcyBDTEkncyB2ZXJzaW9uLCB0aGVuIGZvcndhcmQgdG8gcHJvamVuLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJlcGFyZUFuZFJ1blByb2plbihwcm9qZW5BcmdzOiBzdHJpbmdbXSwgc3RhcnREaXI/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgcm9vdCA9IGF3YWl0IGZpbmRXb3Jrc3BhY2VSb290KHN0YXJ0RGlyKTtcbiAgaWYgKG5lZWRzQm9vdHN0cmFwKHJvb3QpKSB7XG4gICAgYm9vdHN0cmFwV29ya3NwYWNlKHJvb3QpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAobmVlZHNUb29sY2hhaW4ocm9vdCkpIHtcbiAgICBzZWVkVG9vbGNoYWluKHJvb3QpO1xuICAgIHJ1bkluaXRpYWxTeW50aChyb290KTtcbiAgICBydW5CdW4oW1wiaW5zdGFsbFwiXSwgcm9vdCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVuc3VyZVdvcmtzcGFjZVJlYWR5KHJvb3QpO1xuICBlbnN1cmVFbmdpbmVDdXJyZW50KHJvb3QpO1xuICBydW5Qcm9qZW4ocHJvamVuQXJncywgcm9vdCk7XG59XG5cbi8qKlxuICogTW91bnQgYG5hbWVgIGFzIGEgY29tbWFuZCB0aGF0IGNhcHR1cmVzIGV2ZXJ5IGZvbGxvd2luZyB0b2tlbiB2ZXJiYXRpbSBhbmRcbiAqIGhhbmRzIGl0IHRvIHRoZSBwcm9ncmFtIGBsb2FkKClgIHJlc29sdmVzLiBgaGVscE9wdGlvbihmYWxzZSlgIGlzIHdoYXQgbGV0c1xuICogYC0taGVscGAgdGhyb3VnaCB0byB0aGUgY2hpbGQgaW5zdGVhZCBvZiBiZWluZyBhbnN3ZXJlZCBoZXJlLCBhbmQgdGhlIGNoaWxkXG4gKiBwcm9ncmFtIG93bnMgaXRzIG93biBmbGFncywgc28gdGhpcyB3cmFwcGVyIG5ldmVyIGhhcyB0byByZXN0YXRlIHRoZW0uXG4gKi9cbmZ1bmN0aW9uIGFkZEZvcndhcmRlZENvbW1hbmQoXG4gIHByb2dyYW06IENvbW1hbmQsXG4gIG5hbWU6IHN0cmluZyxcbiAgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgbG9hZDogKCkgPT4gUHJvbWlzZTwobmFtZTogc3RyaW5nKSA9PiBDb21tYW5kPixcbik6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQobmFtZSlcbiAgICAuZGVzY3JpcHRpb24oZGVzY3JpcHRpb24pXG4gICAgLmFyZ3VtZW50KFwiW2FyZ3MuLi5dXCIsIGBhcmd1bWVudHMgZm9yd2FyZGVkIHRvICR7bmFtZX1gKVxuICAgIC5hbGxvd1Vua25vd25PcHRpb24oKVxuICAgIC5hbGxvd0V4Y2Vzc0FyZ3VtZW50cygpXG4gICAgLmhlbHBPcHRpb24oZmFsc2UpXG4gICAgLmFjdGlvbihhc3luYyAoYXJnczogc3RyaW5nW10pID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkUHJvZ3JhbSA9IGF3YWl0IGxvYWQoKTtcbiAgICAgIGF3YWl0IGJ1aWxkUHJvZ3JhbShgJHtwcm9ncmFtLm5hbWUoKX0gJHtuYW1lfWApLnBhcnNlQXN5bmMoYXJncywgeyBmcm9tOiBcInVzZXJcIiB9KTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkUnVzdFJlbGVhc2VDb21tYW5kKHByb2dyYW06IENvbW1hbmQsIGNvbW1hbmQ6IFJ1c3RSZWxlYXNlQmluYXJ5Q29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoY29tbWFuZC5jb21tYW5kKVxuICAgIC5kZXNjcmlwdGlvbihjb21tYW5kLmRlc2NyaXB0aW9uKVxuICAgIC5hcmd1bWVudChcIlthcmdzLi4uXVwiLCBgYXJndW1lbnRzIGZvcndhcmRlZCB0byAke2NvbW1hbmQuYmluYXJ5TmFtZX1gKVxuICAgIC5hbGxvd1Vua25vd25PcHRpb24oKVxuICAgIC5hbGxvd0V4Y2Vzc0FyZ3VtZW50cygpXG4gICAgLmhlbHBPcHRpb24oZmFsc2UpXG4gICAgLmFjdGlvbihhc3luYyAoYXJnczogc3RyaW5nW10pID0+IHtcbiAgICAgIHByb2Nlc3MuZXhpdENvZGUgPSBhd2FpdCBydW5SdXN0UmVsZWFzZUJpbmFyeShjb21tYW5kLCBhcmdzKTtcbiAgICB9KTtcbn1cblxuLyoqIEJ1aWxkIHRoZSBgZGJ4YCBjb21tYW5kZXIgcHJvZ3JhbSAobm8gc2lkZSBlZmZlY3RzIHVudGlsIHBhcnNlZCkuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQcm9ncmFtKG5hbWU6IHN0cmluZyA9IFBST0dSQU1fTkFNRVNbMF0pOiBDb21tYW5kIHtcbiAgY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kKClcbiAgICAubmFtZShuYW1lKVxuICAgIC5kZXNjcmlwdGlvbihcbiAgICAgIFwiRGF0YWJyaWNrcyBkZXZlbG9wZXIgdG9vbHM6IHdvcmtzcGFjZSBsaWZlY3ljbGUsIEFwcEtpdCBlbnYsIGF1dGgsIHR1bm5lbHMsIGFuZCBuYXRpdmUgcHJveGllc1wiLFxuICAgIClcbiAgICAuc2hvd0hlbHBBZnRlckVycm9yKClcbiAgICAuaGVscE9wdGlvbihcIi1oLCAtLWhlbHBcIiwgYFNob3cgJHtuYW1lfSBoZWxwYCk7XG5cbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKFwiZGV2XCIpXG4gICAgLmRlc2NyaXB0aW9uKFwiQm9vdHN0cmFwIG9yIHJlcGFpciBhIGRieC10b29scyB3b3Jrc3BhY2UsIHRoZW4gZm9yd2FyZCB0byBwcm9qZW5cIilcbiAgICAuYXJndW1lbnQoXCJbcHJvamVuQXJncy4uLl1cIiwgXCJwcm9qZW4gdGFzayBhbmQgYXJndW1lbnRzIChlLmcuIHN5bmMgLS13YXRjaClcIilcbiAgICAuYWxsb3dVbmtub3duT3B0aW9uKClcbiAgICAuYWxsb3dFeGNlc3NBcmd1bWVudHMoKVxuICAgIC5oZWxwT3B0aW9uKGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKHByb2plbkFyZ3M6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBhd2FpdCBwcmVwYXJlQW5kUnVuUHJvamVuKHByb2plbkFyZ3MpO1xuICAgIH0pO1xuXG4gIGFkZEZvcndhcmRlZENvbW1hbmQoXG4gICAgcHJvZ3JhbSxcbiAgICBcImFwcGtpdFwiLFxuICAgIFwiQXBwS2l0IGhlbHBlcnMgKGVudjogcHJpbnQgdGhlIGVudmlyb25tZW50IGFuIEFwcEtpdCBhcHAgcmVzb2x2ZXMpXCIsXG4gICAgYXN5bmMgKCkgPT4gKGF3YWl0IGltcG9ydChcIkBkYngtdG9vbHMvY2xpLWFwcGtpdC1lbnYvY2xpXCIpKS5idWlsZFByb2dyYW0sXG4gICk7XG5cbiAgYWRkRm9yd2FyZGVkQ29tbWFuZChcbiAgICBwcm9ncmFtLFxuICAgIFwiYXV0aFwiLFxuICAgIFwiQXV0aGVudGljYXRlIHRvIERhdGFicmlja3MgYW5kIG1hbmFnZSBPQXV0aCB0b2tlbnNcIixcbiAgICBhc3luYyAoKSA9PiAoYXdhaXQgaW1wb3J0KFwiQGRieC10b29scy9jbGktYXV0aC9jbGlcIikpLmJ1aWxkUHJvZ3JhbSxcbiAgKTtcblxuICBhZGRGb3J3YXJkZWRDb21tYW5kKFxuICAgIHByb2dyYW0sXG4gICAgXCJ0dW5uZWxcIixcbiAgICBcIlJ1biBhIHB1YmxpYyBwb3J0ciB0dW5uZWwgd2l0aCBhbiBlbWFpbC1PVFAgZ2F0ZVwiLFxuICAgIGFzeW5jICgpID0+IChhd2FpdCBpbXBvcnQoXCJAZGJ4LXRvb2xzL2NsaS10dW5uZWwvY2xpXCIpKS5idWlsZFByb2dyYW0sXG4gICk7XG5cbiAgZm9yIChjb25zdCBjb21tYW5kIG9mIHJ1c3RSZWxlYXNlQmluYXJ5Q29tbWFuZHMoKSkge1xuICAgIGFkZFJ1c3RSZWxlYXNlQ29tbWFuZChwcm9ncmFtLCBjb21tYW5kKTtcbiAgfVxuXG4gIHJldHVybiBwcm9ncmFtO1xufVxuXG4vKipcbiAqIFByb2dyYW0gbmFtZSBmb3IgaGVscCBvdXRwdXQ6IHdoaWNoZXZlciBiaW4gdGhlIHVzZXIgYWN0dWFsbHkgdHlwZWQsIHNvXG4gKiBgZGJ4LXRvb2xzIC0taGVscGAgZG9lc24ndCBkb2N1bWVudCBpdHNlbGYgYXMgYGRieGAuIEZhbGxzIGJhY2sgdG8gYGRieGAuXG4gKi9cbmZ1bmN0aW9uIHByb2dyYW1OYW1lKGFyZ3Y6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgY29uc3QgaW52b2tlZCA9IGFyZ3ZbMV0gPyBiYXNlbmFtZShhcmd2WzFdKS5yZXBsYWNlKC9cXC4oPzpbY21dP1tqdF1zKSQvLCBcIlwiKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIFBST0dSQU1fTkFNRVMuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUgPT09IGludm9rZWQpID8/IFBST0dSQU1fTkFNRVNbMF07XG59XG5cbi8qKiBQYXJzZSBgYXJndmAgKGEgYHByb2Nlc3MuYXJndmApIGFuZCBydW4gdGhlIG1hdGNoaW5nIGNvbW1hbmQuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQ2xpKGFyZ3Y6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGJ1aWxkUHJvZ3JhbShwcm9ncmFtTmFtZShhcmd2KSkucGFyc2VBc3luYyhhcmd2KTtcbn1cbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIscUJBQXFCLEdBRXRCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsYUFBYSxHQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFOUUsc0VBQXNFO0FBQ3RFLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBVSxDQUFDO0FBRXBEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLG1CQUFtQixDQUFDLFVBQW9CLEVBQUUsUUFBaUI7SUFDL0UsTUFBTSxJQUFJLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3pCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN6QixhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FB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a0QsRUFDbEQsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQ3JFLENBQUM7SUFFRixLQUFLLE1BQU0sT0FBTyxJQUFJLHFCQUFxQixFQUFFLEVBQUUsQ0FBQztRQUM5QyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLFdBQVcsQ0FBQyxJQUFjO0lBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3pGLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RixDQUFDO0FBRUQsb0VBQW9FO0FBQ3BFLE1BQU0sQ0FBQyxLQUFLLFVBQVUsTUFBTSxDQUFDLElBQWM7SUFDekMsTUFBTSxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbW1hbmRlciBlbnRyeSBmb3IgYGRieGAgYW5kIGl0cyBgZGJ4LXRvb2xzYCBhbGlhcy5cbiAqXG4gKiBgZGV2YCBib290c3RyYXBzIG9yIHJlcGFpcnMgYSB3b3Jrc3BhY2UgYW5kIGZvcndhcmRzIHRvIHByb2plbi5cbiAqIGBhcHBraXRgIHByb3ZpZGVzIEFwcEtpdCBlbnZpcm9ubWVudCBoZWxwZXJzLlxuICogYGF1dGhgIG1hbmFnZXMgRGF0YWJyaWNrcyBPQXV0aCBhbmQgYWNjZXNzIHRva2Vucy5cbiAqIGB0dW5uZWxgIHJ1bnMgYSBwdWJsaWMgcG9ydHIgdHVubmVsIHdpdGggcGFzc3dvcmRsZXNzIGFjY2VzcyBnYXRpbmcuXG4gKlxuICogRmVhdHVyZSBjb21tYW5kcyBsb2FkIHRoZWlyIHNpYmxpbmcgcGFja2FnZXMgb25seSB3aGVuIHNlbGVjdGVkIGFuZCBmb3J3YXJkXG4gKiB0aGVpciBjb21wbGV0ZSBhcmd1bWVudCBsaXN0LCBpbmNsdWRpbmcgYC0taGVscGAuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyBiYXNlbmFtZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7XG4gIHJ1blJlbGVhc2VCaW5hcnksXG4gIHJlbGVhc2VCaW5hcnlDb21tYW5kcyxcbiAgdHlwZSBSZWxlYXNlQmluYXJ5Q29tbWFuZCxcbn0gZnJvbSBcIkBkYngtdG9vbHMvcnVzdC1iaW5hcnlcIjtcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQge1xuICBib290c3RyYXBXb3Jrc3BhY2UsXG4gIGVuc3VyZUVuZ2luZUN1cnJlbnQsXG4gIHJ1bkluaXRpYWxTeW50aCxcbiAgc2VlZFRvb2xjaGFpbixcbn0gZnJvbSBcIi4vYm9vdHN0cmFwLnRzXCI7XG5pbXBvcnQgeyBlbnN1cmVXb3Jrc3BhY2VSZWFkeSwgcnVuQnVuLCBydW5Qcm9qZW4gfSBmcm9tIFwiLi9idW4udHNcIjtcbmltcG9ydCB7IGZpbmRXb3Jrc3BhY2VSb290LCBuZWVkc0Jvb3RzdHJhcCwgbmVlZHNUb29sY2hhaW4gfSBmcm9tIFwiLi9yb290LnRzXCI7XG5cbi8qKiBDb21tYW5kcyB0aGUgYmluIGV4cG9zZXMsIGFuZCB0aGUgbmFtZXMgaGVscCBpcyByZW5kZXJlZCB1bmRlci4gKi9cbmNvbnN0IFBST0dSQU1fTkFNRVMgPSBbXCJkYnhcIiwgXCJkYngtdG9vbHNcIl0gYXMgY29uc3Q7XG5cbi8qKlxuICogUHJlcGFyZSB0aGUgd29ya3NwYWNlIGF0IGByb290YCwgdGhlbiBydW4gcHJvamVuICh2aWEgYnVuKSB3aXRoIGBwcm9qZW5BcmdzYC5cbiAqXG4gKiBUaHJlZSBjYXNlcywgaW4gb3JkZXI6XG4gKiAgIC0gbm8gYC5wcm9qZW5yYy50c2AgYXQgYWxsIC0+IGZ1bGwgYm9vdHN0cmFwIChzY2FmZm9sZCArIGluc3RhbGwgKyBzeW50aCksXG4gKiAgICAgd2hpY2ggYWxyZWFkeSBydW5zIHRoZSBpbml0aWFsIHN5bnRoOyBub3RoaW5nIG1vcmUgdG8gZm9yd2FyZC5cbiAqICAgLSBhIGAucHJvamVucmMudHNgIGJ1dCB0aGUgZW5naW5lL3Rvb2xjaGFpbiBpc24ndCBpbnN0YWxsZWQgKGUuZy4gYSBmcmVzaGx5XG4gKiAgICAgY29waWVkIHByb2plY3Qgd2hvc2UgZ2VuZXJhdGVkIGZpbGVzICsgbWFuaWZlc3RzIGFyZSBnaXRpZ25vcmVkKSAtPiBzZWVkXG4gKiAgICAgdGhlIHRvb2xjaGFpbiwgdGhlbiBydW4gdGhlIElOSVRJQUwgc3ludGggZGlyZWN0bHkgKHRoZSBwcm9qZW4gdGFza3MgdGhlXG4gKiAgICAgYXJncyB3b3VsZCBuYW1lLCBsaWtlIGBzeW5jYCwgZG9uJ3QgZXhpc3QgdW50aWwgYC5wcm9qZW5yYy50c2AgaGFzIHJ1blxuICogICAgIG9uY2UpLCBhbmQgaW5zdGFsbC4gRG9uJ3QgZm9yd2FyZCBgcHJvamVuQXJnc2AgLSB0aGUgc3ludGggaXMgdGhlIHdvcmsuXG4gKiAgIC0gb3RoZXJ3aXNlIChlc3RhYmxpc2hlZCB3b3Jrc3BhY2UpIC0+IGVuc3VyZSBkZXBzLCBicmluZyB0aGUgZW5naW5lIHVwIHRvXG4gKiAgICAgdGhpcyBDTEkncyB2ZXJzaW9uLCB0aGVuIGZvcndhcmQgdG8gcHJvamVuLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJlcGFyZUFuZFJ1blByb2plbihwcm9qZW5BcmdzOiBzdHJpbmdbXSwgc3RhcnREaXI/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgcm9vdCA9IGF3YWl0IGZpbmRXb3Jrc3BhY2VSb290KHN0YXJ0RGlyKTtcbiAgaWYgKG5lZWRzQm9vdHN0cmFwKHJvb3QpKSB7XG4gICAgYm9vdHN0cmFwV29ya3NwYWNlKHJvb3QpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAobmVlZHNUb29sY2hhaW4ocm9vdCkpIHtcbiAgICBzZWVkVG9vbGNoYWluKHJvb3QpO1xuICAgIHJ1bkluaXRpYWxTeW50aChyb290KTtcbiAgICBydW5CdW4oW1wiaW5zdGFsbFwiXSwgcm9vdCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVuc3VyZVdvcmtzcGFjZVJlYWR5KHJvb3QpO1xuICBlbnN1cmVFbmdpbmVDdXJyZW50KHJvb3QpO1xuICBydW5Qcm9qZW4ocHJvamVuQXJncywgcm9vdCk7XG59XG5cbi8qKlxuICogTW91bnQgYG5hbWVgIGFzIGEgY29tbWFuZCB0aGF0IGNhcHR1cmVzIGV2ZXJ5IGZvbGxvd2luZyB0b2tlbiB2ZXJiYXRpbSBhbmRcbiAqIGhhbmRzIGl0IHRvIHRoZSBwcm9ncmFtIGBsb2FkKClgIHJlc29sdmVzLiBgaGVscE9wdGlvbihmYWxzZSlgIGlzIHdoYXQgbGV0c1xuICogYC0taGVscGAgdGhyb3VnaCB0byB0aGUgY2hpbGQgaW5zdGVhZCBvZiBiZWluZyBhbnN3ZXJlZCBoZXJlLCBhbmQgdGhlIGNoaWxkXG4gKiBwcm9ncmFtIG93bnMgaXRzIG93biBmbGFncywgc28gdGhpcyB3cmFwcGVyIG5ldmVyIGhhcyB0byByZXN0YXRlIHRoZW0uXG4gKi9cbmZ1bmN0aW9uIGFkZEZvcndhcmRlZENvbW1hbmQoXG4gIHByb2dyYW06IENvbW1hbmQsXG4gIG5hbWU6IHN0cmluZyxcbiAgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgbG9hZDogKCkgPT4gUHJvbWlzZTwobmFtZTogc3RyaW5nKSA9PiBDb21tYW5kPixcbik6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQobmFtZSlcbiAgICAuZGVzY3JpcHRpb24oZGVzY3JpcHRpb24pXG4gICAgLmFyZ3VtZW50KFwiW2FyZ3MuLi5dXCIsIGBhcmd1bWVudHMgZm9yd2FyZGVkIHRvICR7bmFtZX1gKVxuICAgIC5hbGxvd1Vua25vd25PcHRpb24oKVxuICAgIC5hbGxvd0V4Y2Vzc0FyZ3VtZW50cygpXG4gICAgLmhlbHBPcHRpb24oZmFsc2UpXG4gICAgLmFjdGlvbihhc3luYyAoYXJnczogc3RyaW5nW10pID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkUHJvZ3JhbSA9IGF3YWl0IGxvYWQoKTtcbiAgICAgIGF3YWl0IGJ1aWxkUHJvZ3JhbShgJHtwcm9ncmFtLm5hbWUoKX0gJHtuYW1lfWApLnBhcnNlQXN5bmMoYXJncywgeyBmcm9tOiBcInVzZXJcIiB9KTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkUmVsZWFzZUNvbW1hbmQocHJvZ3JhbTogQ29tbWFuZCwgY29tbWFuZDogUmVsZWFzZUJpbmFyeUNvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKGNvbW1hbmQuY29tbWFuZClcbiAgICAuZGVzY3JpcHRpb24oY29tbWFuZC5kZXNjcmlwdGlvbilcbiAgICAuYXJndW1lbnQoXCJbYXJncy4uLl1cIiwgYGFyZ3VtZW50cyBmb3J3YXJkZWQgdG8gJHtjb21tYW5kLmJpbmFyeU5hbWV9YClcbiAgICAuYWxsb3dVbmtub3duT3B0aW9uKClcbiAgICAuYWxsb3dFeGNlc3NBcmd1bWVudHMoKVxuICAgIC5oZWxwT3B0aW9uKGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKGFyZ3M6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBwcm9jZXNzLmV4aXRDb2RlID0gYXdhaXQgcnVuUmVsZWFzZUJpbmFyeShjb21tYW5kLCBhcmdzKTtcbiAgICB9KTtcbn1cblxuLyoqIEJ1aWxkIHRoZSBgZGJ4YCBjb21tYW5kZXIgcHJvZ3JhbSAobm8gc2lkZSBlZmZlY3RzIHVudGlsIHBhcnNlZCkuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQcm9ncmFtKG5hbWU6IHN0cmluZyA9IFBST0dSQU1fTkFNRVNbMF0pOiBDb21tYW5kIHtcbiAgY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kKClcbiAgICAubmFtZShuYW1lKVxuICAgIC5kZXNjcmlwdGlvbihcbiAgICAgIFwiRGF0YWJyaWNrcyBkZXZlbG9wZXIgdG9vbHM6IHdvcmtzcGFjZSBsaWZlY3ljbGUsIEFwcEtpdCBlbnYsIGF1dGgsIHR1bm5lbHMsIGFuZCBuYXRpdmUgcHJveGllc1wiLFxuICAgIClcbiAgICAuc2hvd0hlbHBBZnRlckVycm9yKClcbiAgICAuaGVscE9wdGlvbihcIi1oLCAtLWhlbHBcIiwgYFNob3cgJHtuYW1lfSBoZWxwYCk7XG5cbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKFwiZGV2XCIpXG4gICAgLmRlc2NyaXB0aW9uKFwiQm9vdHN0cmFwIG9yIHJlcGFpciBhIGRieC10b29scyB3b3Jrc3BhY2UsIHRoZW4gZm9yd2FyZCB0byBwcm9qZW5cIilcbiAgICAuYXJndW1lbnQoXCJbcHJvamVuQXJncy4uLl1cIiwgXCJwcm9qZW4gdGFzayBhbmQgYXJndW1lbnRzIChlLmcuIHN5bmMgLS13YXRjaClcIilcbiAgICAuYWxsb3dVbmtub3duT3B0aW9uKClcbiAgICAuYWxsb3dFeGNlc3NBcmd1bWVudHMoKVxuICAgIC5oZWxwT3B0aW9uKGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKHByb2plbkFyZ3M6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBhd2FpdCBwcmVwYXJlQW5kUnVuUHJvamVuKHByb2plbkFyZ3MpO1xuICAgIH0pO1xuXG4gIGFkZEZvcndhcmRlZENvbW1hbmQoXG4gICAgcHJvZ3JhbSxcbiAgICBcImFwcGtpdFwiLFxuICAgIFwiQXBwS2l0IGhlbHBlcnMgKGVudjogcHJpbnQgdGhlIGVudmlyb25tZW50IGFuIEFwcEtpdCBhcHAgcmVzb2x2ZXMpXCIsXG4gICAgYXN5bmMgKCkgPT4gKGF3YWl0IGltcG9ydChcIkBkYngtdG9vbHMvY2xpLWFwcGtpdC1lbnYvY2xpXCIpKS5idWlsZFByb2dyYW0sXG4gICk7XG5cbiAgYWRkRm9yd2FyZGVkQ29tbWFuZChcbiAgICBwcm9ncmFtLFxuICAgIFwiYXV0aFwiLFxuICAgIFwiQXV0aGVudGljYXRlIHRvIERhdGFicmlja3MgYW5kIG1hbmFnZSBPQXV0aCB0b2tlbnNcIixcbiAgICBhc3luYyAoKSA9PiAoYXdhaXQgaW1wb3J0KFwiQGRieC10b29scy9jbGktYXV0aC9jbGlcIikpLmJ1aWxkUHJvZ3JhbSxcbiAgKTtcblxuICBhZGRGb3J3YXJkZWRDb21tYW5kKFxuICAgIHByb2dyYW0sXG4gICAgXCJ0dW5uZWxcIixcbiAgICBcIlJ1biBhIHB1YmxpYyBwb3J0ciB0dW5uZWwgd2l0aCBhbiBlbWFpbC1PVFAgZ2F0ZVwiLFxuICAgIGFzeW5jICgpID0+IChhd2FpdCBpbXBvcnQoXCJAZGJ4LXRvb2xzL2NsaS10dW5uZWwvY2xpXCIpKS5idWlsZFByb2dyYW0sXG4gICk7XG5cbiAgZm9yIChjb25zdCBjb21tYW5kIG9mIHJlbGVhc2VCaW5hcnlDb21tYW5kcygpKSB7XG4gICAgYWRkUmVsZWFzZUNvbW1hbmQocHJvZ3JhbSwgY29tbWFuZCk7XG4gIH1cblxuICByZXR1cm4gcHJvZ3JhbTtcbn1cblxuLyoqXG4gKiBQcm9ncmFtIG5hbWUgZm9yIGhlbHAgb3V0cHV0OiB3aGljaGV2ZXIgYmluIHRoZSB1c2VyIGFjdHVhbGx5IHR5cGVkLCBzb1xuICogYGRieC10b29scyAtLWhlbHBgIGRvZXNuJ3QgZG9jdW1lbnQgaXRzZWxmIGFzIGBkYnhgLiBGYWxscyBiYWNrIHRvIGBkYnhgLlxuICovXG5mdW5jdGlvbiBwcm9ncmFtTmFtZShhcmd2OiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGNvbnN0IGludm9rZWQgPSBhcmd2WzFdID8gYmFzZW5hbWUoYXJndlsxXSkucmVwbGFjZSgvXFwuKD86W2NtXT9banRdcykkLywgXCJcIikgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBQUk9HUkFNX05BTUVTLmZpbmQoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlID09PSBpbnZva2VkKSA/PyBQUk9HUkFNX05BTUVTWzBdO1xufVxuXG4vKiogUGFyc2UgYGFyZ3ZgIChhIGBwcm9jZXNzLmFyZ3ZgKSBhbmQgcnVuIHRoZSBtYXRjaGluZyBjb21tYW5kLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkNsaShhcmd2OiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBidWlsZFByb2dyYW0ocHJvZ3JhbU5hbWUoYXJndikpLnBhcnNlQXN5bmMoYXJndik7XG59XG4iXX0=
package/lib/src/root.js CHANGED
@@ -4,37 +4,18 @@
4
4
  * @module
5
5
  */
6
6
  import { existsSync } from "node:fs";
7
- import { basename, dirname, join, resolve } from "node:path";
8
- import { exec } from "@dbx-tools/core";
9
- import { functionModule } from "@dbx-tools/shared-core";
10
- async function gitToplevel() {
11
- const { exitCode, stdout } = await exec.spawn("git", ["rev-parse", "--show-toplevel"], {
12
- stdout: "capture",
13
- stderr: "ignore",
14
- stdin: "ignore",
15
- });
16
- if (exitCode !== 0)
17
- return undefined;
18
- return stdout || undefined;
19
- }
7
+ import { basename, join, resolve } from "node:path";
8
+ import { projectUtils } from "@dbx-tools/core";
9
+ import { functionUtils } from "@dbx-tools/shared-core";
20
10
  /**
21
11
  * Walk upward from `startDir` for `.projenrc.ts`. If none is found, try git
22
12
  * top-level only when that directory also contains `.projenrc.ts`; otherwise return
23
13
  * `resolve(startDir)` (which may not be a workspace root).
24
14
  */
25
15
  export async function findWorkspaceRoot(startDir = process.cwd()) {
26
- let dir = resolve(startDir);
27
- while (true) {
28
- if (existsSync(join(dir, ".projenrc.ts")))
29
- return dir;
30
- const parent = dirname(dir);
31
- if (parent === dir)
32
- break;
33
- dir = parent;
34
- }
35
- const fromGit = await gitToplevel();
36
- if (fromGit && existsSync(join(fromGit, ".projenrc.ts")))
37
- return fromGit;
16
+ const discovered = projectUtils.root(startDir);
17
+ if (discovered && existsSync(join(discovered, ".projenrc.ts")))
18
+ return discovered;
38
19
  return resolve(startDir);
39
20
  }
40
21
  /**
@@ -69,9 +50,9 @@ export function needsToolchain(root) {
69
50
  return !existsSync(join(modules, "projen")) || !existsSync(join(modules, "@dbx-tools", "projen"));
70
51
  }
71
52
  /** Async, memoized root lookup from the process cwd at first use. */
72
- export const workspaceRoot = functionModule.memoize(() => findWorkspaceRoot());
53
+ export const workspaceRoot = functionUtils.memoize(() => findWorkspaceRoot());
73
54
  /** Short label for log output (`basename` of the resolved root). */
74
55
  export function rootLabel(root) {
75
56
  return basename(root) || root;
76
57
  }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb290LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV4RCxLQUFLLFVBQVUsV0FBVztJQUN4QixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLENBQUMsRUFBRTtRQUNyRixNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsUUFBUTtRQUNoQixLQUFLLEVBQUUsUUFBUTtLQUNoQixDQUFDLENBQUM7SUFDSCxJQUFJLFFBQVEsS0FBSyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDckMsT0FBTyxNQUFNLElBQUksU0FBUyxDQUFDO0FBQzdCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxXQUFtQixPQUFPLENBQUMsR0FBRyxFQUFFO0lBQ3RFLElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QixPQUFPLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ3RELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixJQUFJLE1BQU0sS0FBSyxHQUFHO1lBQUUsTUFBTTtRQUMxQixHQUFHLEdBQUcsTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sV0FBVyxFQUFFLENBQUM7SUFDcEMsSUFBSSxPQUFPLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFBRSxPQUFPLE9BQU8sQ0FBQztJQUV6RSxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBWTtJQUN6QyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQseUVBQXlFO0FBQ3pFLE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBWTtJQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN6RCxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2hHLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLElBQVk7SUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3RDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDcEcsQ0FBQztBQUVELHFFQUFxRTtBQUNyRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7QUFFL0Usb0VBQW9FO0FBQ3BFLE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBWTtJQUNwQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV29ya3NwYWNlIHJvb3QgZGV0ZWN0aW9uIGZvciB0aGUgYGRieC10b29sc2AgQ0xJLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBiYXNlbmFtZSwgZGlybmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGV4ZWMgfSBmcm9tIFwiQGRieC10b29scy9jb3JlXCI7XG5pbXBvcnQgeyBmdW5jdGlvbk1vZHVsZSB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIGdpdFRvcGxldmVsKCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHsgZXhpdENvZGUsIHN0ZG91dCB9ID0gYXdhaXQgZXhlYy5zcGF3bihcImdpdFwiLCBbXCJyZXYtcGFyc2VcIiwgXCItLXNob3ctdG9wbGV2ZWxcIl0sIHtcbiAgICBzdGRvdXQ6IFwiY2FwdHVyZVwiLFxuICAgIHN0ZGVycjogXCJpZ25vcmVcIixcbiAgICBzdGRpbjogXCJpZ25vcmVcIixcbiAgfSk7XG4gIGlmIChleGl0Q29kZSAhPT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIHN0ZG91dCB8fCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogV2FsayB1cHdhcmQgZnJvbSBgc3RhcnREaXJgIGZvciBgLnByb2plbnJjLnRzYC4gSWYgbm9uZSBpcyBmb3VuZCwgdHJ5IGdpdFxuICogdG9wLWxldmVsIG9ubHkgd2hlbiB0aGF0IGRpcmVjdG9yeSBhbHNvIGNvbnRhaW5zIGAucHJvamVucmMudHNgOyBvdGhlcndpc2UgcmV0dXJuXG4gKiBgcmVzb2x2ZShzdGFydERpcilgICh3aGljaCBtYXkgbm90IGJlIGEgd29ya3NwYWNlIHJvb3QpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZFdvcmtzcGFjZVJvb3Qoc3RhcnREaXI6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCkpOiBQcm9taXNlPHN0cmluZz4ge1xuICBsZXQgZGlyID0gcmVzb2x2ZShzdGFydERpcik7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKGV4aXN0c1N5bmMoam9pbihkaXIsIFwiLnByb2plbnJjLnRzXCIpKSkgcmV0dXJuIGRpcjtcbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGRpcik7XG4gICAgaWYgKHBhcmVudCA9PT0gZGlyKSBicmVhaztcbiAgICBkaXIgPSBwYXJlbnQ7XG4gIH1cblxuICBjb25zdCBmcm9tR2l0ID0gYXdhaXQgZ2l0VG9wbGV2ZWwoKTtcbiAgaWYgKGZyb21HaXQgJiYgZXhpc3RzU3luYyhqb2luKGZyb21HaXQsIFwiLnByb2plbnJjLnRzXCIpKSkgcmV0dXJuIGZyb21HaXQ7XG5cbiAgcmV0dXJuIHJlc29sdmUoc3RhcnREaXIpO1xufVxuXG4vKipcbiAqIFRydWUgd2hlbiB0aGUgZm9sZGVyIGhhcyBubyBgLnByb2plbnJjLnRzYCB5ZXQgYW5kIG5lZWRzIGZ1bGwgYm9vdHN0cmFwcGluZy5cbiAqIEtleWluZyBvZmYgYC5wcm9qZW5yYy50c2AgKG5vdCBgcGFja2FnZS5qc29uYCkgYXZvaWRzIGNsb2JiZXJpbmcgYSBjbGVhbmVkXG4gKiB3b3Jrc3BhY2UgdGhhdCBzdGlsbCBoYXMgYSBoYW5kLWF1dGhvcmVkIHByb2plbnJjLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmVlZHNCb290c3RyYXAocm9vdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAhZXhpc3RzU3luYyhqb2luKHJvb3QsIFwiLnByb2plbnJjLnRzXCIpKTtcbn1cblxuLyoqIFRydWUgd2hlbiBgbm9kZV9tb2R1bGVzYCBvciBwcm9qZW4gaXRzZWxmIGlzIG1pc3NpbmcgdW5kZXIgYHJvb3RgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5lZWRzSW5zdGFsbChyb290OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFleGlzdHNTeW5jKGpvaW4ocm9vdCwgXCJub2RlX21vZHVsZXNcIikpKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKGV4aXN0c1N5bmMoam9pbihyb290LCBcIi5wcm9qZW5yYy50c1wiKSkgJiYgIWV4aXN0c1N5bmMoam9pbihyb290LCBcIm5vZGVfbW9kdWxlc1wiLCBcInByb2plblwiKSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogVHJ1ZSB3aGVuIHRoZSBzeW50aCBUT09MQ0hBSU4gaXNuJ3QgaW5zdGFsbGVkIHlldDogbm8gYG5vZGVfbW9kdWxlc2AsIG9yIHRoZVxuICogZGJ4LXRvb2xzIGVuZ2luZSAvIGBwcm9qZW5gIGFyZW4ndCByZXNvbHZhYmxlIHVuZGVyIGl0LiBEaXN0aW5jdCBmcm9tIGEgZnVsbFxuICogYm9vdHN0cmFwICh3aGljaCBrZXlzIG9mZiBhIE1JU1NJTkcgYC5wcm9qZW5yYy50c2ApOiBoZXJlIHRoZSBwcm9qZW5yYyBleGlzdHNcbiAqIGJ1dCBpdHMgZGVwZW5kZW5jaWVzIGRvbid0IC0gZS5nLiBhIGNvcGllZCBwcm9qZWN0IHdob3NlIGdlbmVyYXRlZCBtYW5pZmVzdHNcbiAqIGFuZCBgbm9kZV9tb2R1bGVzYCBhcmUgZ2l0aWdub3JlZC4gU2VlZGluZyB0aGUgdG9vbGNoYWluIChub3Qgc2NhZmZvbGRpbmcpXG4gKiBtYWtlcyBpdCBzeW50aC1yZWFkeSB3aXRob3V0IHRvdWNoaW5nIHRoZSBoYW5kLWF1dGhvcmVkIGAucHJvamVucmMudHNgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmVlZHNUb29sY2hhaW4ocm9vdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IG1vZHVsZXMgPSBqb2luKHJvb3QsIFwibm9kZV9tb2R1bGVzXCIpO1xuICBpZiAoIWV4aXN0c1N5bmMobW9kdWxlcykpIHJldHVybiB0cnVlO1xuICByZXR1cm4gIWV4aXN0c1N5bmMoam9pbihtb2R1bGVzLCBcInByb2plblwiKSkgfHwgIWV4aXN0c1N5bmMoam9pbihtb2R1bGVzLCBcIkBkYngtdG9vbHNcIiwgXCJwcm9qZW5cIikpO1xufVxuXG4vKiogQXN5bmMsIG1lbW9pemVkIHJvb3QgbG9va3VwIGZyb20gdGhlIHByb2Nlc3MgY3dkIGF0IGZpcnN0IHVzZS4gKi9cbmV4cG9ydCBjb25zdCB3b3Jrc3BhY2VSb290ID0gZnVuY3Rpb25Nb2R1bGUubWVtb2l6ZSgoKSA9PiBmaW5kV29ya3NwYWNlUm9vdCgpKTtcblxuLyoqIFNob3J0IGxhYmVsIGZvciBsb2cgb3V0cHV0IChgYmFzZW5hbWVgIG9mIHRoZSByZXNvbHZlZCByb290KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb290TGFiZWwocm9vdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGJhc2VuYW1lKHJvb3QpIHx8IHJvb3Q7XG59XG4iXX0=
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb290LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUFDLFdBQW1CLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDdEUsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUFFLE9BQU8sVUFBVSxDQUFDO0lBQ2xGLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFZO0lBQ3pDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCx5RUFBeUU7QUFDekUsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3pELElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEcsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBWTtJQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDdEMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNwRyxDQUFDO0FBRUQscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztBQUU5RSxvRUFBb0U7QUFDcEUsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFZO0lBQ3BDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBXb3Jrc3BhY2Ugcm9vdCBkZXRlY3Rpb24gZm9yIHRoZSBgZGJ4LXRvb2xzYCBDTEkuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGJhc2VuYW1lLCBqb2luLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgcHJvamVjdFV0aWxzIH0gZnJvbSBcIkBkYngtdG9vbHMvY29yZVwiO1xuaW1wb3J0IHsgZnVuY3Rpb25VdGlscyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5cbi8qKlxuICogV2FsayB1cHdhcmQgZnJvbSBgc3RhcnREaXJgIGZvciBgLnByb2plbnJjLnRzYC4gSWYgbm9uZSBpcyBmb3VuZCwgdHJ5IGdpdFxuICogdG9wLWxldmVsIG9ubHkgd2hlbiB0aGF0IGRpcmVjdG9yeSBhbHNvIGNvbnRhaW5zIGAucHJvamVucmMudHNgOyBvdGhlcndpc2UgcmV0dXJuXG4gKiBgcmVzb2x2ZShzdGFydERpcilgICh3aGljaCBtYXkgbm90IGJlIGEgd29ya3NwYWNlIHJvb3QpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZFdvcmtzcGFjZVJvb3Qoc3RhcnREaXI6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCkpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBkaXNjb3ZlcmVkID0gcHJvamVjdFV0aWxzLnJvb3Qoc3RhcnREaXIpO1xuICBpZiAoZGlzY292ZXJlZCAmJiBleGlzdHNTeW5jKGpvaW4oZGlzY292ZXJlZCwgXCIucHJvamVucmMudHNcIikpKSByZXR1cm4gZGlzY292ZXJlZDtcbiAgcmV0dXJuIHJlc29sdmUoc3RhcnREaXIpO1xufVxuXG4vKipcbiAqIFRydWUgd2hlbiB0aGUgZm9sZGVyIGhhcyBubyBgLnByb2plbnJjLnRzYCB5ZXQgYW5kIG5lZWRzIGZ1bGwgYm9vdHN0cmFwcGluZy5cbiAqIEtleWluZyBvZmYgYC5wcm9qZW5yYy50c2AgKG5vdCBgcGFja2FnZS5qc29uYCkgYXZvaWRzIGNsb2JiZXJpbmcgYSBjbGVhbmVkXG4gKiB3b3Jrc3BhY2UgdGhhdCBzdGlsbCBoYXMgYSBoYW5kLWF1dGhvcmVkIHByb2plbnJjLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmVlZHNCb290c3RyYXAocm9vdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAhZXhpc3RzU3luYyhqb2luKHJvb3QsIFwiLnByb2plbnJjLnRzXCIpKTtcbn1cblxuLyoqIFRydWUgd2hlbiBgbm9kZV9tb2R1bGVzYCBvciBwcm9qZW4gaXRzZWxmIGlzIG1pc3NpbmcgdW5kZXIgYHJvb3RgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5lZWRzSW5zdGFsbChyb290OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFleGlzdHNTeW5jKGpvaW4ocm9vdCwgXCJub2RlX21vZHVsZXNcIikpKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKGV4aXN0c1N5bmMoam9pbihyb290LCBcIi5wcm9qZW5yYy50c1wiKSkgJiYgIWV4aXN0c1N5bmMoam9pbihyb290LCBcIm5vZGVfbW9kdWxlc1wiLCBcInByb2plblwiKSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogVHJ1ZSB3aGVuIHRoZSBzeW50aCBUT09MQ0hBSU4gaXNuJ3QgaW5zdGFsbGVkIHlldDogbm8gYG5vZGVfbW9kdWxlc2AsIG9yIHRoZVxuICogZGJ4LXRvb2xzIGVuZ2luZSAvIGBwcm9qZW5gIGFyZW4ndCByZXNvbHZhYmxlIHVuZGVyIGl0LiBEaXN0aW5jdCBmcm9tIGEgZnVsbFxuICogYm9vdHN0cmFwICh3aGljaCBrZXlzIG9mZiBhIE1JU1NJTkcgYC5wcm9qZW5yYy50c2ApOiBoZXJlIHRoZSBwcm9qZW5yYyBleGlzdHNcbiAqIGJ1dCBpdHMgZGVwZW5kZW5jaWVzIGRvbid0IC0gZS5nLiBhIGNvcGllZCBwcm9qZWN0IHdob3NlIGdlbmVyYXRlZCBtYW5pZmVzdHNcbiAqIGFuZCBgbm9kZV9tb2R1bGVzYCBhcmUgZ2l0aWdub3JlZC4gU2VlZGluZyB0aGUgdG9vbGNoYWluIChub3Qgc2NhZmZvbGRpbmcpXG4gKiBtYWtlcyBpdCBzeW50aC1yZWFkeSB3aXRob3V0IHRvdWNoaW5nIHRoZSBoYW5kLWF1dGhvcmVkIGAucHJvamVucmMudHNgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmVlZHNUb29sY2hhaW4ocm9vdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IG1vZHVsZXMgPSBqb2luKHJvb3QsIFwibm9kZV9tb2R1bGVzXCIpO1xuICBpZiAoIWV4aXN0c1N5bmMobW9kdWxlcykpIHJldHVybiB0cnVlO1xuICByZXR1cm4gIWV4aXN0c1N5bmMoam9pbihtb2R1bGVzLCBcInByb2plblwiKSkgfHwgIWV4aXN0c1N5bmMoam9pbihtb2R1bGVzLCBcIkBkYngtdG9vbHNcIiwgXCJwcm9qZW5cIikpO1xufVxuXG4vKiogQXN5bmMsIG1lbW9pemVkIHJvb3QgbG9va3VwIGZyb20gdGhlIHByb2Nlc3MgY3dkIGF0IGZpcnN0IHVzZS4gKi9cbmV4cG9ydCBjb25zdCB3b3Jrc3BhY2VSb290ID0gZnVuY3Rpb25VdGlscy5tZW1vaXplKCgpID0+IGZpbmRXb3Jrc3BhY2VSb290KCkpO1xuXG4vKiogU2hvcnQgbGFiZWwgZm9yIGxvZyBvdXRwdXQgKGBiYXNlbmFtZWAgb2YgdGhlIHJlc29sdmVkIHJvb3QpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvb3RMYWJlbChyb290OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYmFzZW5hbWUocm9vdCkgfHwgcm9vdDtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"root":["../src/bootstrap.ts","../src/bun.ts","../src/cli.ts","../src/root.ts","../src/rust-binary.ts","../index.ts","../bin/dbx-tools.ts"],"version":"5.9.3"}
1
+ {"root":["../src/bootstrap.ts","../src/bun.ts","../src/cli.ts","../src/root.ts","../index.ts","../bin/dbx-tools.ts"],"version":"5.9.3"}
package/package.json CHANGED
@@ -29,12 +29,12 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@clack/prompts": "^1.7.0",
32
- "@dbx-tools/cli-appkit-env": "^0.9.4",
33
- "@dbx-tools/cli-auth": "^0.9.4",
34
- "@dbx-tools/cli-tunnel": "^0.9.4",
35
- "@dbx-tools/core": "^0.9.4",
36
- "@dbx-tools/rust-binary": "^0.9.4",
37
- "@dbx-tools/shared-core": "^0.9.4",
32
+ "@dbx-tools/cli-appkit-env": "^0.9.6",
33
+ "@dbx-tools/cli-auth": "^0.9.6",
34
+ "@dbx-tools/cli-tunnel": "^0.9.6",
35
+ "@dbx-tools/core": "^0.9.6",
36
+ "@dbx-tools/rust-binary": "^0.9.6",
37
+ "@dbx-tools/shared-core": "^0.9.6",
38
38
  "commander": "^15.0.0"
39
39
  },
40
40
  "main": "./lib/index.js",
@@ -68,14 +68,10 @@
68
68
  "types": "./lib/src/root.d.ts",
69
69
  "default": "./lib/src/root.js"
70
70
  },
71
- "./rust-binary": {
72
- "types": "./lib/src/rust-binary.d.ts",
73
- "default": "./lib/src/rust-binary.js"
74
- },
75
71
  "./package.json": "./package.json"
76
72
  }
77
73
  },
78
- "version": "0.9.4",
74
+ "version": "0.9.6",
79
75
  "types": "./lib/index.d.ts",
80
76
  "type": "module",
81
77
  "exports": {
@@ -99,10 +95,6 @@
99
95
  "types": "./lib/src/root.d.ts",
100
96
  "default": "./lib/src/root.js"
101
97
  },
102
- "./rust-binary": {
103
- "types": "./lib/src/rust-binary.d.ts",
104
- "default": "./lib/src/rust-binary.js"
105
- },
106
98
  "./package.json": "./package.json"
107
99
  },
108
100
  "files": [
package/src/bootstrap.ts CHANGED
@@ -7,7 +7,7 @@ import { existsSync, readFileSync, writeFileSync } from "node:fs";
7
7
  import { createRequire } from "node:module";
8
8
  import { join } from "node:path";
9
9
  import { intro, outro } from "@clack/prompts";
10
- import { exec, project } from "@dbx-tools/core";
10
+ import { exec, projectUtils } from "@dbx-tools/core";
11
11
  import { json, log } from "@dbx-tools/shared-core";
12
12
  import { childEnv, resolveBunArgv, runBun } from "./bun.ts";
13
13
  import { rootLabel } from "./root.ts";
@@ -93,10 +93,10 @@ export function ensureEngineCurrent(root: string): void {
93
93
  // flat, but every engine ever published exports the namespace, and this template
94
94
  // is resolved against `@latest` - a flat import dies on an older one with
95
95
  // "does not provide an export named 'DBXToolsNodeProject'".
96
- const PROJENRC_TEMPLATE = `import { project as projenProject } from "@dbx-tools/projen";
96
+ const PROJENRC_TEMPLATE = `import { project } from "@dbx-tools/projen";
97
97
 
98
- const project = new projenProject.DBXToolsNodeProject();
99
- project.synth();
98
+ const rootProject = new project.DBXToolsNodeProject();
99
+ rootProject.synth();
100
100
  `;
101
101
 
102
102
  /**
@@ -185,7 +185,9 @@ export function seedToolchain(
185
185
  * and never overwrites an existing `.npmrc` (the developer's own wins).
186
186
  */
187
187
  function seedRegistry(root: string): void {
188
- const registry = project.npmRegistry(null, { overrideOnly: true, envVars: true })?.toString();
188
+ const registry = projectUtils
189
+ .npmRegistry(null, { overrideOnly: true, envVars: true })
190
+ ?.toString();
189
191
  if (!registry) return;
190
192
  const npmrc = join(root, ".npmrc");
191
193
  if (existsSync(npmrc)) return;
package/src/bun.ts CHANGED
@@ -22,8 +22,8 @@
22
22
  */
23
23
  import { existsSync } from "node:fs";
24
24
  import { delimiter, dirname, join } from "node:path";
25
- import { exec, project } from "@dbx-tools/core";
26
- import { functionModule, log } from "@dbx-tools/shared-core";
25
+ import { exec, projectUtils } from "@dbx-tools/core";
26
+ import { functionUtils, log } from "@dbx-tools/shared-core";
27
27
  import { needsInstall } from "./root.ts";
28
28
 
29
29
  const logger = log.logger("dbx-tools:bun");
@@ -43,8 +43,8 @@ const REGISTRY_SUBCOMMANDS = new Set(["add", "install", "i", "update", "up"]);
43
43
  * container may export it without any `.npmrc` for lookup. Memoized: resolution
44
44
  * shells out.
45
45
  */
46
- const registryOverride = functionModule.memoize((): string | undefined =>
47
- project.npmRegistry(null, { overrideOnly: true, envVars: true })?.toString(),
46
+ const registryOverride = functionUtils.memoize((): string | undefined =>
47
+ projectUtils.npmRegistry(null, { overrideOnly: true, envVars: true })?.toString(),
48
48
  );
49
49
 
50
50
  /** `--registry <url>` for a bun invocation, or `[]` when the subcommand doesn't resolve. */
@@ -98,7 +98,7 @@ function resolveBunArgvImpl(): string[] {
98
98
  }
99
99
 
100
100
  /** Memoized `[command, ...prefix]` argv prefix to run bun. */
101
- export const resolveBunArgv = functionModule.memoize(resolveBunArgvImpl);
101
+ export const resolveBunArgv = functionUtils.memoize(resolveBunArgvImpl);
102
102
 
103
103
  /** Run bun with inherited stdio from `cwd`, forcing the resolved registry. */
104
104
  export function runBun(args: string[], cwd: string): void {
package/src/cli.ts CHANGED
@@ -12,6 +12,11 @@
12
12
  * @module
13
13
  */
14
14
  import { basename } from "node:path";
15
+ import {
16
+ runReleaseBinary,
17
+ releaseBinaryCommands,
18
+ type ReleaseBinaryCommand,
19
+ } from "@dbx-tools/rust-binary";
15
20
  import { Command } from "commander";
16
21
  import {
17
22
  bootstrapWorkspace,
@@ -21,11 +26,6 @@ import {
21
26
  } from "./bootstrap.ts";
22
27
  import { ensureWorkspaceReady, runBun, runProjen } from "./bun.ts";
23
28
  import { findWorkspaceRoot, needsBootstrap, needsToolchain } from "./root.ts";
24
- import {
25
- runRustReleaseBinary,
26
- rustReleaseBinaryCommands,
27
- type RustReleaseBinaryCommand,
28
- } from "./rust-binary.ts";
29
29
 
30
30
  /** Commands the bin exposes, and the names help is rendered under. */
31
31
  const PROGRAM_NAMES = ["dbx", "dbx-tools"] as const;
@@ -86,7 +86,7 @@ function addForwardedCommand(
86
86
  });
87
87
  }
88
88
 
89
- function addRustReleaseCommand(program: Command, command: RustReleaseBinaryCommand): void {
89
+ function addReleaseCommand(program: Command, command: ReleaseBinaryCommand): void {
90
90
  program
91
91
  .command(command.command)
92
92
  .description(command.description)
@@ -95,7 +95,7 @@ function addRustReleaseCommand(program: Command, command: RustReleaseBinaryComma
95
95
  .allowExcessArguments()
96
96
  .helpOption(false)
97
97
  .action(async (args: string[]) => {
98
- process.exitCode = await runRustReleaseBinary(command, args);
98
+ process.exitCode = await runReleaseBinary(command, args);
99
99
  });
100
100
  }
101
101
 
@@ -141,8 +141,8 @@ export function buildProgram(name: string = PROGRAM_NAMES[0]): Command {
141
141
  async () => (await import("@dbx-tools/cli-tunnel/cli")).buildProgram,
142
142
  );
143
143
 
144
- for (const command of rustReleaseBinaryCommands()) {
145
- addRustReleaseCommand(program, command);
144
+ for (const command of releaseBinaryCommands()) {
145
+ addReleaseCommand(program, command);
146
146
  }
147
147
 
148
148
  return program;
package/src/root.ts CHANGED
@@ -4,19 +4,9 @@
4
4
  * @module
5
5
  */
6
6
  import { existsSync } from "node:fs";
7
- import { basename, dirname, join, resolve } from "node:path";
8
- import { exec } from "@dbx-tools/core";
9
- import { functionModule } from "@dbx-tools/shared-core";
10
-
11
- async function gitToplevel(): Promise<string | undefined> {
12
- const { exitCode, stdout } = await exec.spawn("git", ["rev-parse", "--show-toplevel"], {
13
- stdout: "capture",
14
- stderr: "ignore",
15
- stdin: "ignore",
16
- });
17
- if (exitCode !== 0) return undefined;
18
- return stdout || undefined;
19
- }
7
+ import { basename, join, resolve } from "node:path";
8
+ import { projectUtils } from "@dbx-tools/core";
9
+ import { functionUtils } from "@dbx-tools/shared-core";
20
10
 
21
11
  /**
22
12
  * Walk upward from `startDir` for `.projenrc.ts`. If none is found, try git
@@ -24,17 +14,8 @@ async function gitToplevel(): Promise<string | undefined> {
24
14
  * `resolve(startDir)` (which may not be a workspace root).
25
15
  */
26
16
  export async function findWorkspaceRoot(startDir: string = process.cwd()): Promise<string> {
27
- let dir = resolve(startDir);
28
- while (true) {
29
- if (existsSync(join(dir, ".projenrc.ts"))) return dir;
30
- const parent = dirname(dir);
31
- if (parent === dir) break;
32
- dir = parent;
33
- }
34
-
35
- const fromGit = await gitToplevel();
36
- if (fromGit && existsSync(join(fromGit, ".projenrc.ts"))) return fromGit;
37
-
17
+ const discovered = projectUtils.root(startDir);
18
+ if (discovered && existsSync(join(discovered, ".projenrc.ts"))) return discovered;
38
19
  return resolve(startDir);
39
20
  }
40
21
 
@@ -71,7 +52,7 @@ export function needsToolchain(root: string): boolean {
71
52
  }
72
53
 
73
54
  /** Async, memoized root lookup from the process cwd at first use. */
74
- export const workspaceRoot = functionModule.memoize(() => findWorkspaceRoot());
55
+ export const workspaceRoot = functionUtils.memoize(() => findWorkspaceRoot());
75
56
 
76
57
  /** Short label for log output (`basename` of the resolved root). */
77
58
  export function rootLabel(root: string): string {
@@ -1,6 +0,0 @@
1
- /**
2
- * Compatibility export for Rust release binary helpers.
3
- *
4
- * @module
5
- */
6
- export * from "@dbx-tools/rust-binary";
@@ -1,7 +0,0 @@
1
- /**
2
- * Compatibility export for Rust release binary helpers.
3
- *
4
- * @module
5
- */
6
- export * from "@dbx-tools/rust-binary";
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVzdC1iaW5hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVzdC1iaW5hcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbXBhdGliaWxpdHkgZXhwb3J0IGZvciBSdXN0IHJlbGVhc2UgYmluYXJ5IGhlbHBlcnMuXG4gKlxuICogQG1vZHVsZVxuICovXG5leHBvcnQgKiBmcm9tIFwiQGRieC10b29scy9ydXN0LWJpbmFyeVwiO1xuIl19
@@ -1,6 +0,0 @@
1
- /**
2
- * Compatibility export for Rust release binary helpers.
3
- *
4
- * @module
5
- */
6
- export * from "@dbx-tools/rust-binary";