@dbx-tools/cli 0.9.153 → 0.9.157

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/bin/dbx-genie.ts +3 -2
  2. package/index.appkit.ts +9 -0
  3. package/index.auth.ts +9 -0
  4. package/index.brand.ts +18 -0
  5. package/index.genie-code.ts +18 -0
  6. package/index.graphiti.ts +7 -0
  7. package/index.lakebase-proxy.ts +18 -0
  8. package/index.model-gateway.ts +9 -0
  9. package/index.ts +5 -61
  10. package/index.tunnel.ts +14 -0
  11. package/lib/bin/dbx-genie.js +4 -3
  12. package/lib/index.appkit.d.ts +5 -0
  13. package/lib/index.appkit.js +8 -0
  14. package/lib/index.auth.d.ts +5 -0
  15. package/lib/index.auth.js +8 -0
  16. package/lib/index.brand.d.ts +14 -0
  17. package/lib/index.brand.js +14 -0
  18. package/lib/index.d.ts +5 -61
  19. package/lib/index.genie-code.d.ts +14 -0
  20. package/lib/index.genie-code.js +14 -0
  21. package/lib/index.graphiti.d.ts +3 -0
  22. package/lib/index.graphiti.js +6 -0
  23. package/lib/index.js +6 -43
  24. package/lib/index.lakebase-proxy.d.ts +14 -0
  25. package/lib/index.lakebase-proxy.js +14 -0
  26. package/lib/index.model-gateway.d.ts +5 -0
  27. package/lib/index.model-gateway.js +8 -0
  28. package/lib/index.tunnel.d.ts +10 -0
  29. package/lib/index.tunnel.js +12 -0
  30. package/lib/src/appkit/cli.d.ts +1 -2
  31. package/lib/src/appkit/cli.js +4 -5
  32. package/lib/src/auth/cli.d.ts +2 -2
  33. package/lib/src/auth/cli.js +2 -3
  34. package/lib/src/auth/options.d.ts +2 -2
  35. package/lib/src/auth/options.js +4 -6
  36. package/lib/src/bootstrap.js +10 -14
  37. package/lib/src/brand/options.js +2 -2
  38. package/lib/src/brand/run.js +6 -8
  39. package/lib/src/brand/showcase.js +5 -5
  40. package/lib/src/bun.js +6 -6
  41. package/lib/src/genie-code/cli.d.ts +2 -2
  42. package/lib/src/genie-code/cli.js +4 -4
  43. package/lib/src/genie-code/config.d.ts +1 -1
  44. package/lib/src/genie-code/config.js +7 -7
  45. package/lib/src/genie-code/install.d.ts +2 -2
  46. package/lib/src/genie-code/install.js +4 -4
  47. package/lib/src/genie-code/runner.d.ts +2 -3
  48. package/lib/src/genie-code/runner.js +13 -11
  49. package/lib/src/genie-code/runtime.d.ts +3 -3
  50. package/lib/src/genie-code/runtime.js +10 -9
  51. package/lib/src/graphiti/cli.d.ts +2 -3
  52. package/lib/src/graphiti/cli.js +7 -8
  53. package/lib/src/lakebase-proxy/cli.d.ts +1 -2
  54. package/lib/src/lakebase-proxy/cli.js +3 -4
  55. package/lib/src/lakebase-proxy/options.js +7 -9
  56. package/lib/src/lakebase-proxy/proxy.js +8 -8
  57. package/lib/src/model-gateway/cli.d.ts +2 -3
  58. package/lib/src/model-gateway/cli.js +3 -4
  59. package/lib/src/model-gateway/server.d.ts +1 -1
  60. package/lib/src/model-gateway/server.js +5 -6
  61. package/lib/src/root.js +3 -3
  62. package/lib/src/tunnel/app.js +7 -9
  63. package/lib/src/tunnel/cli.d.ts +1 -2
  64. package/lib/src/tunnel/cli.js +13 -14
  65. package/lib/src/tunnel/options.d.ts +5 -5
  66. package/lib/src/tunnel/options.js +11 -11
  67. package/lib/src/tunnel/proxy.js +18 -17
  68. package/lib/tsconfig.tsbuildinfo +1 -1
  69. package/package.json +58 -177
  70. package/src/appkit/cli.ts +2 -4
  71. package/src/auth/cli.ts +2 -4
  72. package/src/auth/options.ts +3 -5
  73. package/src/bootstrap.ts +9 -13
  74. package/src/brand/options.ts +1 -1
  75. package/src/brand/run.ts +7 -7
  76. package/src/brand/showcase.ts +4 -4
  77. package/src/bun.ts +6 -6
  78. package/src/genie-code/cli.ts +4 -4
  79. package/src/genie-code/config.ts +6 -6
  80. package/src/genie-code/install.ts +5 -7
  81. package/src/genie-code/runner.ts +12 -11
  82. package/src/genie-code/runtime.ts +10 -10
  83. package/src/graphiti/cli.ts +13 -9
  84. package/src/lakebase-proxy/cli.ts +7 -3
  85. package/src/lakebase-proxy/options.ts +13 -8
  86. package/src/lakebase-proxy/proxy.ts +7 -7
  87. package/src/model-gateway/cli.ts +7 -3
  88. package/src/model-gateway/server.ts +9 -5
  89. package/src/root.ts +2 -2
  90. package/src/tunnel/app.ts +6 -8
  91. package/src/tunnel/cli.ts +21 -15
  92. package/src/tunnel/options.ts +23 -15
  93. package/src/tunnel/proxy.ts +29 -20
  94. package/lib/src/appkit/index.d.ts +0 -5
  95. package/lib/src/appkit/index.js +0 -8
  96. package/lib/src/auth/index.d.ts +0 -5
  97. package/lib/src/auth/index.js +0 -8
  98. package/lib/src/brand/index.d.ts +0 -10
  99. package/lib/src/brand/index.js +0 -10
  100. package/lib/src/genie-code/index.d.ts +0 -12
  101. package/lib/src/genie-code/index.js +0 -12
  102. package/lib/src/genie-code/options.d.ts +0 -7
  103. package/lib/src/genie-code/options.js +0 -7
  104. package/lib/src/graphiti/index.d.ts +0 -5
  105. package/lib/src/graphiti/index.js +0 -7
  106. package/lib/src/graphiti/options.d.ts +0 -117
  107. package/lib/src/graphiti/options.js +0 -26
  108. package/lib/src/lakebase-proxy/index.d.ts +0 -13
  109. package/lib/src/lakebase-proxy/index.js +0 -13
  110. package/lib/src/model-gateway/index.d.ts +0 -3
  111. package/lib/src/model-gateway/index.js +0 -6
  112. package/lib/src/tunnel/index.d.ts +0 -8
  113. package/lib/src/tunnel/index.js +0 -10
  114. package/src/appkit/index.ts +0 -9
  115. package/src/auth/index.ts +0 -9
  116. package/src/brand/index.ts +0 -14
  117. package/src/genie-code/index.ts +0 -16
  118. package/src/genie-code/options.ts +0 -14
  119. package/src/graphiti/index.ts +0 -9
  120. package/src/graphiti/options.ts +0 -40
  121. package/src/lakebase-proxy/index.ts +0 -17
  122. package/src/model-gateway/index.ts +0 -7
  123. package/src/tunnel/index.ts +0 -12
@@ -17,8 +17,9 @@
17
17
  * @module
18
18
  */
19
19
  import { createServer } from "node:http";
20
- import { errorUtils, log } from "@dbx-tools/shared-core";
21
- import { gate as tunnelGate, headers as tunnelHeaders, loginPage as tunnelLoginPage, } from "@dbx-tools/tunnel";
20
+ import { isAuthPath } from "@dbx-tools/shared-auth";
21
+ import { log, toError } from "@dbx-tools/shared-core";
22
+ import { wantsHostedLogin, loginReturnTo, webRequest, sendWebResponse, gateRequest, wantsLoginPage, requestReturnTo, unauthorizedBody, toHeaderPolicy, loginPageHtml, } from "@dbx-tools/tunnel";
22
23
  import ProxyModule from "http-proxy-3";
23
24
  const logger = log.logger("tunnel:proxy");
24
25
  function sendJson(response, status, body, setCookie) {
@@ -32,19 +33,19 @@ function sendJson(response, status, body, setCookie) {
32
33
  * Hand every Better Auth and compatibility route to the shared gate runtime.
33
34
  */
34
35
  async function handleAuthRoute(request, response, path, gate, brandName, passkeyNamePrefix) {
35
- if (!tunnelGate.isAuthPath(path))
36
+ if (!isAuthPath(path))
36
37
  return false;
37
- if (tunnelGate.wantsHostedLogin(request)) {
38
+ if (wantsHostedLogin(request)) {
38
39
  response.writeHead(200, { "content-type": "text/html; charset=utf-8" });
39
- response.end(tunnelLoginPage.loginPageHtml({
40
+ response.end(loginPageHtml({
40
41
  brandName,
41
42
  passkeyNamePrefix,
42
- returnTo: tunnelGate.loginReturnTo(request),
43
+ returnTo: loginReturnTo(request),
43
44
  }));
44
45
  return true;
45
46
  }
46
- const result = await gate.handler(tunnelGate.webRequest(request));
47
- await tunnelGate.sendWebResponse(response, result);
47
+ const result = await gate.handler(webRequest(request));
48
+ await sendWebResponse(response, result);
48
49
  return true;
49
50
  }
50
51
  /**
@@ -62,10 +63,10 @@ export async function startProxy(options) {
62
63
  ws: true,
63
64
  xfwd: true,
64
65
  });
65
- const headerPolicy = tunnelHeaders.toHeaderPolicy(options.forwardHeaders);
66
+ const headerPolicy = toHeaderPolicy(options.forwardHeaders);
66
67
  const gate = options.gate;
67
68
  const decide = (request) => gate
68
- ? tunnelGate.gateRequest(request, {
69
+ ? gateRequest(request, {
69
70
  gate,
70
71
  publicDomain: (request.headers.host ?? "").split(":")[0] || "localhost",
71
72
  headerPolicy,
@@ -84,23 +85,23 @@ export async function startProxy(options) {
84
85
  if ((await decide(request)) === "deny") {
85
86
  // A denied browser navigation gets the hosted login page; anything else
86
87
  // (an XHR, a /ws upgrade probe, a non-HTML fetch) gets the 401 JSON.
87
- if (gate && tunnelGate.wantsLoginPage(request)) {
88
- const html = tunnelLoginPage.loginPageHtml({
88
+ if (gate && wantsLoginPage(request)) {
89
+ const html = loginPageHtml({
89
90
  brandName,
90
91
  passkeyNamePrefix,
91
- returnTo: tunnelGate.requestReturnTo(request),
92
+ returnTo: requestReturnTo(request),
92
93
  });
93
94
  response.writeHead(401, { "content-type": "text/html; charset=utf-8" });
94
95
  response.end(html);
95
96
  }
96
97
  else {
97
- sendJson(response, 401, tunnelGate.unauthorizedBody(request));
98
+ sendJson(response, 401, unauthorizedBody(request));
98
99
  }
99
100
  return;
100
101
  }
101
102
  proxy.web(request, response);
102
103
  })().catch((error) => {
103
- logger.error("proxy request failed", { error: errorUtils.toError(error) });
104
+ logger.error("proxy request failed", { error: toError(error) });
104
105
  if (!response.headersSent)
105
106
  sendJson(response, 502, { error: "bad gateway" });
106
107
  else
@@ -114,7 +115,7 @@ export async function startProxy(options) {
114
115
  const upgradeSocket = socket;
115
116
  upgradeSocket.destroySoon ??= () => upgradeSocket.end();
116
117
  const path = (request.url ?? "/").split("?", 1)[0] ?? "/";
117
- if (tunnelGate.isAuthPath(path)) {
118
+ if (isAuthPath(path)) {
118
119
  upgradeSocket.destroy();
119
120
  return;
120
121
  }
@@ -145,4 +146,4 @@ export async function startProxy(options) {
145
146
  });
146
147
  })));
147
148
  }
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHVubmVsL3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQTZDLE1BQU0sV0FBVyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUNMLElBQUksSUFBSSxVQUFVLEVBQ2xCLE9BQU8sSUFBSSxhQUFhLEVBQ3hCLFNBQVMsSUFBSSxlQUFlLEdBRTdCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxXQUFXLE1BQU0sY0FBYyxDQUFDO0FBRXZDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUE2QjFDLFNBQVMsUUFBUSxDQUNmLFFBQXdCLEVBQ3hCLE1BQWMsRUFDZCxJQUFhLEVBQ2IsU0FBa0I7SUFFbEIsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7UUFDekIsY0FBYyxFQUFFLGtCQUFrQjtRQUNsQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ2xELENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFFRDs7R0FFRztBQUNILEtBQUssVUFBVSxlQUFlLENBQzVCLE9BQXdCLEVBQ3hCLFFBQXdCLEVBQ3hCLElBQVksRUFDWixJQUFpQixFQUNqQixTQUFpQixFQUNqQixpQkFBMEI7SUFFMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDL0MsSUFBSSxVQUFVLENB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O2dCQUNKLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtnQkFDOUIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO2FBQ3pCLENBQUMsQ0FBQztZQUNILE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FDTCxDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgcmV2ZXJzZSBwcm94eSB0aGF0IG1ha2VzIHRoZSB3cmFwcGVyIHBhdGggcG9zc2libGUuXG4gKlxuICogVGhlIHdyYXBwZXIgY2xhaW1zIHRoZSBQVUJMSUMgcG9ydCBhbmQgdGhlIHdyYXBwZWQgYXBwIHJ1bnMgYXMgYSBjaGlsZCBwcm9jZXNzXG4gKiBvbiBhIHByaXZhdGUgbG9vcGJhY2sgcG9ydCwgc28gLSB1bmxpa2UgdGhlIGluLXByb2Nlc3MgcGx1Z2luIC0gdGhlcmUgaXMgbm9cbiAqIG1pZGRsZXdhcmUgY2hhaW4gdG8gaW5zZXJ0IHRoZSBnYXRlIGludG8uIFRoaXMgcHJveHkgaXMgdGhhdCBpbnNlcnRpb24gcG9pbnQ6IGl0XG4gKiBhbnN3ZXJzIHRoZSBsb2dpbiByb3V0ZXMgaXRzZWxmLCBhcHBsaWVzIHRoZSBnYXRlIHRvIGV2ZXJ5dGhpbmcgZWxzZSwgYW5kXG4gKiBmb3J3YXJkcyB3aGF0IHN1cnZpdmVzIHRvIHRoZSBjaGlsZC5cbiAqXG4gKiBUaGUgZ2F0aW5nIERFQ0lTSU9OIGlzIG5vdCByZWltcGxlbWVudGVkIGhlcmUuIGBAZGJ4LXRvb2xzL3R1bm5lbGAnc1xuICogYGdhdGUuZ2F0ZVJlcXVlc3RgIG1ha2VzIGl0IC0gdGhlIHNhbWUgZnVuY3Rpb24gdGhlIEV4cHJlc3MgbWlkZGxld2FyZSBjYWxscyAtXG4gKiBhbmQgdGhpcyBtb2R1bGUgb25seSBkaWZmZXJzIGluIGhvdyB0aGUgb3V0Y29tZSBpcyB3cml0dGVuOiBhIHByb3hpZWQgcmVxdWVzdFxuICogaW5zdGVhZCBvZiBgbmV4dCgpYCwgYSBgd3JpdGVIZWFkYCBpbnN0ZWFkIG9mIGByZXMuanNvbmAuIFRoYXQgaXMgZGVsaWJlcmF0ZTpcbiAqIHR3byBpbmRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMgb2YgXCJ3aGljaCByZXF1ZXN0cyBhcmUgZ2F0ZWQgYW5kIHdoaWNoIGhlYWRlcnNcbiAqIGFyZSBzdHJpcHBlZFwiIGlzIHRoZSBvbmUgd2F5IHRoaXMgcGFja2FnZSBjb3VsZCBiZWNvbWUgYSBzZWN1cml0eSBidWcuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGNyZWF0ZVNlcnZlciwgdHlwZSBJbmNvbWluZ01lc3NhZ2UsIHR5cGUgU2VydmVyUmVzcG9uc2UgfSBmcm9tIFwibm9kZTpodHRwXCI7XG5pbXBvcnQgdHlwZSB7IFNvY2tldCB9IGZyb20gXCJub2RlOm5ldFwiO1xuaW1wb3J0IHsgZXJyb3JVdGlscywgbG9nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7XG4gIGdhdGUgYXMgdHVubmVsR2F0ZSxcbiAgaGVhZGVycyBhcyB0dW5uZWxIZWFkZXJzLFxuICBsb2dpblBhZ2UgYXMgdHVubmVsTG9naW5QYWdlLFxuICB0eXBlIEF1dGhHYXRlQXBpLFxufSBmcm9tIFwiQGRieC10b29scy90dW5uZWxcIjtcbmltcG9ydCBQcm94eU1vZHVsZSBmcm9tIFwiaHR0cC1wcm94eS0zXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ0dW5uZWw6cHJveHlcIik7XG5cbnR5cGUgVXBncmFkZVNvY2tldCA9IFNvY2tldCAmIHsgZGVzdHJveVNvb24/OiAoKSA9PiB2b2lkIH07XG5cbi8qKiBMaXN0ZW5lciwgdXBzdHJlYW0gYXBwbGljYXRpb24sIGFuZCBvcHRpb25hbCBhdXRoZW50aWNhdGlvbiBzZXR0aW5ncyBmb3IgdGhlIHdyYXBwZXIgcHJveHkuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3h5T3B0aW9ucyB7XG4gIC8qKiBUaGUgcG9ydCB0aGlzIHByb3h5IGxpc3RlbnMgb24gLSB0aGUgcG9ydCBwb3J0ciBhbmQgdGhlIHBsYXRmb3JtIHJvdXRlIHRvLiAqL1xuICBwdWJsaWNQb3J0OiBudW1iZXI7XG4gIC8qKiBUaGUgcHJpdmF0ZSBsb29wYmFjayBwb3J0IHRoZSB3cmFwcGVkIGFwcCBsaXN0ZW5zIG9uLiAqL1xuICBhcHBQb3J0OiBudW1iZXI7XG4gIC8qKiBUaGUgZ2F0ZSBoYW5kbGVycy4gT21pdHRlZCAoYW4gYC0taW5zZWN1cmVgIHJ1bikgZm9yd2FyZHMgZXZlcnl0aGluZy4gKi9cbiAgZ2F0ZT86IEF1dGhHYXRlQXBpO1xuICAvKiogRXh0cmEgYHgtYCBoZWFkZXJzIHR1bm5lbCB0cmFmZmljIG1heSBmb3J3YXJkLiAqL1xuICBmb3J3YXJkSGVhZGVycz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogUGF0aCBwcmVmaXhlcyB0byBnYXRlIGJleW9uZCBgL2FwaS9gIChlLmcuIGAvd3NgIGZvciBhIFdlYlNvY2tldCBhcHApLiAqL1xuICBnYXRlUGF0aHM/OiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqIEJyYW5kIG5hbWUgZm9yIHRoZSBob3N0ZWQgbG9naW4gcGFnZSBzaG93biBvbiBhIGRlbmllZCBicm93c2VyIG5hdmlnYXRpb24uICovXG4gIGJyYW5kTmFtZT86IHN0cmluZztcbiAgLyoqIFByZWZpeCBhZGRlZCBiZWZvcmUgdGhlIGh1bWFuaXplZCB0dW5uZWwgc3ViZG9tYWluIGluIG5ldyBwYXNza2V5IG5hbWVzLiAqL1xuICBwYXNza2V5TmFtZVByZWZpeD86IHN0cmluZztcbiAgLyoqXG4gICAqIEFkZHJlc3NlcyB0byBsaXN0ZW4gb24uIERlZmF1bHRzIHRvIGEgc2luZ2xlIGAwLjAuMC4wYCAoZXZlcnkgaW50ZXJmYWNlKSxcbiAgICogdGhlIHBvcnRyL3BsYXRmb3JtIGNhc2UuIFBhc3Mgc3BlY2lmaWMgaW50ZXJmYWNlIElQcyB0byBleHBvc2UgdGhlIGdhdGUgb25cbiAgICogb25seSB0aG9zZSAtIGUuZy4gYW4gb3ZlcmxheS9MQU4gYWRkcmVzcyB3aGlsZSBsb29wYmFjayByZWFjaGVzIHRoZSB1cHN0cmVhbVxuICAgKiBkaXJlY3RseSBhbmQgdW5nYXRlZC5cbiAgICovXG4gIGJpbmRIb3N0cz86IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG5mdW5jdGlvbiBzZW5kSnNvbihcbiAgcmVzcG9uc2U6IFNlcnZlclJlc3BvbnNlLFxuICBzdGF0dXM6IG51bWJlcixcbiAgYm9keTogdW5rbm93bixcbiAgc2V0Q29va2llPzogc3RyaW5nLFxuKTogdm9pZCB7XG4gIHJlc3BvbnNlLndyaXRlSGVhZChzdGF0dXMsIHtcbiAgICBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAuLi4oc2V0Q29va2llID8geyBcInNldC1jb29raWVcIjogc2V0Q29va2llIH0gOiB7fSksXG4gIH0pO1xuICByZXNwb25zZS5lbmQoSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xufVxuXG4vKipcbiAqIEhhbmQgZXZlcnkgQmV0dGVyIEF1dGggYW5kIGNvbXBhdGliaWxpdHkgcm91dGUgdG8gdGhlIHNoYXJlZCBnYXRlIHJ1bnRpbWUuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZUF1dGhSb3V0ZShcbiAgcmVxdWVzdDogSW5jb21pbmdNZXNzYWdlLFxuICByZXNwb25zZTogU2VydmVyUmVzcG9uc2UsXG4gIHBhdGg6IHN0cmluZyxcbiAgZ2F0ZTogQXV0aEdhdGVBcGksXG4gIGJyYW5kTmFtZTogc3RyaW5nLFxuICBwYXNza2V5TmFtZVByZWZpeD86IHN0cmluZyxcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBpZiAoIXR1bm5lbEdhdGUuaXNBdXRoUGF0aChwYXRoKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAodHVubmVsR2F0ZS53YW50c0hvc3RlZExvZ2luKHJlcXVlc3QpKSB7XG4gICAgcmVzcG9uc2Uud3JpdGVIZWFkKDIwMCwgeyBcImNvbnRlbnQtdHlwZVwiOiBcInRleHQvaHRtbDsgY2hhcnNldD11dGYtOFwiIH0pO1xuICAgIHJlc3BvbnNlLmVuZChcbiAgICAgIHR1bm5lbExvZ2luUGFnZS5sb2dpblBhZ2VIdG1sKHtcbiAgICAgICAgYnJhbmROYW1lLFxuICAgICAgICBwYXNza2V5TmFtZVByZWZpeCxcbiAgICAgICAgcmV0dXJuVG86IHR1bm5lbEdhdGUubG9naW5SZXR1cm5UbyhyZXF1ZXN0KSxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2F0ZS5oYW5kbGVyKHR1bm5lbEdhdGUud2ViUmVxdWVzdChyZXF1ZXN0KSk7XG4gIGF3YWl0IHR1bm5lbEdhdGUuc2VuZFdlYlJlc3BvbnNlKHJlc3BvbnNlLCByZXN1bHQpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBTdGFydCB0aGUgcHJveHkgYW5kIHJlc29sdmUgb25jZSBpdCBpcyBsaXN0ZW5pbmcuXG4gKlxuICogYHB1YmxpY0RvbWFpbmAgaXMgaW50ZW50aW9uYWxseSBOT1QgcGFzc2VkIHRvIGBnYXRlUmVxdWVzdGA6IG9uIHRoaXMgcGF0aCBldmVyeVxuICogcmVxdWVzdCBhcnJpdmVkIG9uIHRoZSBwdWJsaWMgcG9ydCwgc28gaXQgSVMgdHVubmVsIHRyYWZmaWMgYnkgY29uc3RydWN0aW9uIC1cbiAqIHdoZXJlYXMgdGhlIGluLXByb2Nlc3MgZ2F0ZSBzaGFyZXMgYSBwb3J0IHdpdGggdGhlIHBsYXRmb3JtIGZyb250IGRvb3IgYW5kIGhhc1xuICogdG8gdGVsbCB0aGVtIGFwYXJ0IGJ5IGBIb3N0YC4gUGFzc2luZyB0aGUgcmVxdWVzdCdzIG93biBob3N0IGtlZXBzIHRoZSBzaGFyZWRcbiAqIGRlY2lzaW9uIGZ1bmN0aW9uJ3MgY29udHJhY3Qgc2F0aXNmaWVkIHdpdGhvdXQgd2Vha2VuaW5nIGl0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRQcm94eShvcHRpb25zOiBQcm94eU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcHJveHkgPSBQcm94eU1vZHVsZS5jcmVhdGVQcm94eVNlcnZlcih7XG4gICAgdGFyZ2V0OiBgaHR0cDovLzEyNy4wLjAuMToke29wdGlvbnMuYXBwUG9ydH1gLFxuICAgIHdzOiB0cnVlLFxuICAgIHhmd2Q6IHRydWUsXG4gIH0pO1xuICBjb25zdCBoZWFkZXJQb2xpY3kgPSB0dW5uZWxIZWFkZXJzLnRvSGVhZGVyUG9saWN5KG9wdGlvbnMuZm9yd2FyZEhlYWRlcnMpO1xuICBjb25zdCBnYXRlID0gb3B0aW9ucy5nYXRlO1xuXG4gIGNvbnN0IGRlY2lkZSA9IChyZXF1ZXN0OiBJbmNvbWluZ01lc3NhZ2UpOiBQcm9taXNlPHR1bm5lbEdhdGUuR2F0ZUFjdGlvbj4gPT5cbiAgICBnYXRlXG4gICAgICA/IHR1bm5lbEdhdGUuZ2F0ZVJlcXVlc3QocmVxdWVzdCwge1xuICAgICAgICAgIGdhdGUsXG4gICAgICAgICAgcHVibGljRG9tYWluOiAocmVxdWVzdC5oZWFkZXJzLmhvc3QgPz8gXCJcIikuc3BsaXQoXCI6XCIpWzBdIHx8IFwibG9jYWxob3N0XCIsXG4gICAgICAgICAgaGVhZGVyUG9saWN5LFxuICAgICAgICAgIGdhdGVQYXRoczogb3B0aW9ucy5nYXRlUGF0aHMsXG4gICAgICAgIH0pXG4gICAgICA6IFByb21pc2UucmVzb2x2ZTx0dW5uZWxHYXRlLkdhdGVBY3Rpb24+KFwicGFzc1wiKTtcblxuICBjb25zdCBvblJlcXVlc3QgPSAocmVxdWVzdDogSW5jb21pbmdNZXNzYWdlLCByZXNwb25zZTogU2VydmVyUmVzcG9uc2UpOiB2b2lkID0+IHtcbiAgICB2b2lkIChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBwYXRoID0gKHJlcXVlc3QudXJsID8/IFwiL1wiKS5zcGxpdChcIj9cIilbMF0gPz8gXCIvXCI7XG4gICAgICBjb25zdCBicmFuZE5hbWUgPSBvcHRpb25zLmJyYW5kTmFtZSA/PyBcInRoaXMgYXBwXCI7XG4gICAgICBjb25zdCBwYXNza2V5TmFtZVByZWZpeCA9IG9wdGlvbnMucGFzc2tleU5hbWVQcmVmaXg7XG4gICAgICBpZiAoXG4gICAgICAgIGdhdGUgJiZcbiAgICAgICAgKGF3YWl0IGhhbmRsZUF1dGhSb3V0ZShyZXF1ZXN0LCByZXNwb25zZSwgcGF0aCwgZ2F0ZSwgYnJhbmROYW1lLCBwYXNza2V5TmFtZVByZWZpeCkpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKChhd2FpdCBkZWNpZGUocmVxdWVzdCkpID09PSBcImRlbnlcIikge1xuICAgICAgICAvLyBBIGRlbmllZCBicm93c2VyIG5hdmlnYXRpb24gZ2V0cyB0aGUgaG9zdGVkIGxvZ2luIHBhZ2U7IGFueXRoaW5nIGVsc2VcbiAgICAgICAgLy8gKGFuIFhIUiwgYSAvd3MgdXBncmFkZSBwcm9iZSwgYSBub24tSFRNTCBmZXRjaCkgZ2V0cyB0aGUgNDAxIEpTT04uXG4gICAgICAgIGlmIChnYXRlICYmIHR1bm5lbEdhdGUud2FudHNMb2dpblBhZ2UocmVxdWVzdCkpIHtcbiAgICAgICAgICBjb25zdCBodG1sID0gdHVubmVsTG9naW5QYWdlLmxvZ2luUGFnZUh0bWwoe1xuICAgICAgICAgICAgYnJhbmROYW1lLFxuICAgICAgICAgICAgcGFzc2tleU5hbWVQcmVmaXgsXG4gICAgICAgICAgICByZXR1cm5UbzogdHVubmVsR2F0ZS5yZXF1ZXN0UmV0dXJuVG8ocmVxdWVzdCksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDQwMSwgeyBcImNvbnRlbnQtdHlwZVwiOiBcInRleHQvaHRtbDsgY2hhcnNldD11dGYtOFwiIH0pO1xuICAgICAgICAgIHJlc3BvbnNlLmVuZChodG1sKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZW5kSnNvbihyZXNwb25zZSwgNDAxLCB0dW5uZWxHYXRlLnVuYXV0aG9yaXplZEJvZHkocmVxdWVzdCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHByb3h5LndlYihyZXF1ZXN0LCByZXNwb25zZSk7XG4gICAgfSkoKS5jYXRjaCgoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgIGxvZ2dlci5lcnJvcihcInByb3h5IHJlcXVlc3QgZmFpbGVkXCIsIHsgZXJyb3I6IGVycm9yVXRpbHMudG9FcnJvcihlcnJvcikgfSk7XG4gICAgICBpZiAoIXJlc3BvbnNlLmhlYWRlcnNTZW50KSBzZW5kSnNvbihyZXNwb25zZSwgNTAyLCB7IGVycm9yOiBcImJhZCBnYXRld2F5XCIgfSk7XG4gICAgICBlbHNlIHJlc3BvbnNlLmVuZCgpO1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIEEgd2Vic29ja2V0IHVwZ3JhZGUgY2Fubm90IGJlIGFuc3dlcmVkIHdpdGggYSA0MDEgYm9keSwgc28gYSBkZW5pZWQgb25lIGlzXG4gIC8vIGRlc3Ryb3llZCAtIHRoZSBjbGllbnQgc2VlcyB0aGUgaGFuZHNoYWtlIGZhaWwsIHdoaWNoIGlzIHdoYXQgYSBicm93c2VyJ3NcbiAgLy8gV2ViU29ja2V0IGVycm9yIGhhbmRsZXIgZXhwZWN0cy5cbiAgY29uc3Qgb25VcGdyYWRlID0gKHJlcXVlc3Q6IEluY29taW5nTWVzc2FnZSwgc29ja2V0OiBTb2NrZXQsIGhlYWQ6IEJ1ZmZlcik6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHVwZ3JhZGVTb2NrZXQgPSBzb2NrZXQgYXMgVXBncmFkZVNvY2tldDtcbiAgICB1cGdyYWRlU29ja2V0LmRlc3Ryb3lTb29uID8/PSAoKSA9PiB1cGdyYWRlU29ja2V0LmVuZCgpO1xuICAgIGNvbnN0IHBhdGggPSAocmVxdWVzdC51cmwgPz8gXCIvXCIpLnNwbGl0KFwiP1wiLCAxKVswXSA/PyBcIi9cIjtcbiAgICBpZiAodHVubmVsR2F0ZS5pc0F1dGhQYXRoKHBhdGgpKSB7XG4gICAgICB1cGdyYWRlU29ja2V0LmRlc3Ryb3koKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdm9pZCBkZWNpZGUocmVxdWVzdClcbiAgICAgIC50aGVuKChhY3Rpb24pID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbiA9PT0gXCJkZW55XCIpIHVwZ3JhZGVTb2NrZXQuZGVzdHJveSgpO1xuICAgICAgICBlbHNlIHByb3h5LndzKHJlcXVlc3QsIHVwZ3JhZGVTb2NrZXQsIGhlYWQpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB1cGdyYWRlU29ja2V0LmRlc3Ryb3koKSk7XG4gIH07XG5cbiAgLy8gT25lIG5ldC5TZXJ2ZXIgYmluZHMgb25lIGFkZHJlc3MsIHNvIGxpc3RlbiBlYWNoIGhvc3Qgb24gaXRzIG93biBzZXJ2ZXIgdGhhdFxuICAvLyBzaGFyZXMgdGhlIHNhbWUgaGFuZGxlcnMuIEJpbmRpbmcgc3BlY2lmaWMgaW50ZXJmYWNlIElQcyAocmF0aGVyIHRoYW4gdGhlXG4gIC8vIGRlZmF1bHQgMC4wLjAuMCkgaXMgd2hhdCBsZXRzIHRoZSBnYXRlIGZyb250IGFuIG92ZXJsYXkvTEFOIGFkZHJlc3Mgd2hpbGVcbiAgLy8gbG9vcGJhY2sgcmVhY2hlcyB0aGUgdXBzdHJlYW0gdW5nYXRlZC5cbiAgY29uc3QgaG9zdHMgPSBvcHRpb25zLmJpbmRIb3N0cz8ubGVuZ3RoID8gb3B0aW9ucy5iaW5kSG9zdHMgOiBbXCIwLjAuMC4wXCJdO1xuICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBob3N0cy5tYXAoXG4gICAgICAoaG9zdCkgPT5cbiAgICAgICAgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICBjb25zdCBzZXJ2ZXIgPSBjcmVhdGVTZXJ2ZXIob25SZXF1ZXN0KTtcbiAgICAgICAgICBzZXJ2ZXIub24oXCJ1cGdyYWRlXCIsIG9uVXBncmFkZSk7XG4gICAgICAgICAgc2VydmVyLmxpc3RlbihvcHRpb25zLnB1YmxpY1BvcnQsIGhvc3QsICgpID0+IHtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKFwicHJveHkgbGlzdGVuaW5nXCIsIHtcbiAgICAgICAgICAgICAgaG9zdCxcbiAgICAgICAgICAgICAgcHVibGljUG9ydDogb3B0aW9ucy5wdWJsaWNQb3J0LFxuICAgICAgICAgICAgICBhcHBQb3J0OiBvcHRpb25zLmFwcFBvcnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgKSxcbiAgKTtcbn1cbiJdfQ==
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHVubmVsL3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQTZDLE1BQU0sV0FBVyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLFVBQVUsRUFDVixlQUFlLEVBRWYsV0FBVyxFQUNYLGNBQWMsRUFDZCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxhQUFhLEdBQ2QsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7QUFFdkMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQTZCMUMsU0FBUyxRQUFRLENBQ2YsUUFBd0IsRUFDeEIsTUFBYyxFQUNkLElBQWEsRUFDYixTQUFrQjtJQUVsQixRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtRQUN6QixjQUFjLEVBQUUsa0JBQWtCO1FBQ2xDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDbEQsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsS0FBSyxVQUFVLGVBQWUsQ0FDNUIsT0FBd0IsRUFDeEIsUUFBd0IsRUFDeEIsSUFBWSxFQUNaLElBQWlCLEVBQ2pCLFNBQWlCLEVBQ2pCLGlCQUEw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QUMsT0FBTzthQUN6QixDQUFDLENBQUM7WUFDSCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIHJldmVyc2UgcHJveHkgdGhhdCBtYWtlcyB0aGUgd3JhcHBlciBwYXRoIHBvc3NpYmxlLlxuICpcbiAqIFRoZSB3cmFwcGVyIGNsYWltcyB0aGUgUFVCTElDIHBvcnQgYW5kIHRoZSB3cmFwcGVkIGFwcCBydW5zIGFzIGEgY2hpbGQgcHJvY2Vzc1xuICogb24gYSBwcml2YXRlIGxvb3BiYWNrIHBvcnQsIHNvIC0gdW5saWtlIHRoZSBpbi1wcm9jZXNzIHBsdWdpbiAtIHRoZXJlIGlzIG5vXG4gKiBtaWRkbGV3YXJlIGNoYWluIHRvIGluc2VydCB0aGUgZ2F0ZSBpbnRvLiBUaGlzIHByb3h5IGlzIHRoYXQgaW5zZXJ0aW9uIHBvaW50OiBpdFxuICogYW5zd2VycyB0aGUgbG9naW4gcm91dGVzIGl0c2VsZiwgYXBwbGllcyB0aGUgZ2F0ZSB0byBldmVyeXRoaW5nIGVsc2UsIGFuZFxuICogZm9yd2FyZHMgd2hhdCBzdXJ2aXZlcyB0byB0aGUgY2hpbGQuXG4gKlxuICogVGhlIGdhdGluZyBERUNJU0lPTiBpcyBub3QgcmVpbXBsZW1lbnRlZCBoZXJlLiBgQGRieC10b29scy90dW5uZWxgJ3NcbiAqIGBnYXRlLmdhdGVSZXF1ZXN0YCBtYWtlcyBpdCAtIHRoZSBzYW1lIGZ1bmN0aW9uIHRoZSBFeHByZXNzIG1pZGRsZXdhcmUgY2FsbHMgLVxuICogYW5kIHRoaXMgbW9kdWxlIG9ubHkgZGlmZmVycyBpbiBob3cgdGhlIG91dGNvbWUgaXMgd3JpdHRlbjogYSBwcm94aWVkIHJlcXVlc3RcbiAqIGluc3RlYWQgb2YgYG5leHQoKWAsIGEgYHdyaXRlSGVhZGAgaW5zdGVhZCBvZiBgcmVzLmpzb25gLiBUaGF0IGlzIGRlbGliZXJhdGU6XG4gKiB0d28gaW5kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zIG9mIFwid2hpY2ggcmVxdWVzdHMgYXJlIGdhdGVkIGFuZCB3aGljaCBoZWFkZXJzXG4gKiBhcmUgc3RyaXBwZWRcIiBpcyB0aGUgb25lIHdheSB0aGlzIHBhY2thZ2UgY291bGQgYmVjb21lIGEgc2VjdXJpdHkgYnVnLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVTZXJ2ZXIsIHR5cGUgSW5jb21pbmdNZXNzYWdlLCB0eXBlIFNlcnZlclJlc3BvbnNlIH0gZnJvbSBcIm5vZGU6aHR0cFwiO1xuaW1wb3J0IHR5cGUgeyBTb2NrZXQgfSBmcm9tIFwibm9kZTpuZXRcIjtcbmltcG9ydCB7IGlzQXV0aFBhdGggfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtYXV0aFwiO1xuaW1wb3J0IHsgbG9nLCB0b0Vycm9yIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7XG4gIHR5cGUgQXV0aEdhdGVBcGksXG4gIHdhbnRzSG9zdGVkTG9naW4sXG4gIGxvZ2luUmV0dXJuVG8sXG4gIHdlYlJlcXVlc3QsXG4gIHNlbmRXZWJSZXNwb25zZSxcbiAgdHlwZSBHYXRlQWN0aW9uLFxuICBnYXRlUmVxdWVzdCxcbiAgd2FudHNMb2dpblBhZ2UsXG4gIHJlcXVlc3RSZXR1cm5UbyxcbiAgdW5hdXRob3JpemVkQm9keSxcbiAgdG9IZWFkZXJQb2xpY3ksXG4gIGxvZ2luUGFnZUh0bWwsXG59IGZyb20gXCJAZGJ4LXRvb2xzL3R1bm5lbFwiO1xuaW1wb3J0IFByb3h5TW9kdWxlIGZyb20gXCJodHRwLXByb3h5LTNcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcInR1bm5lbDpwcm94eVwiKTtcblxudHlwZSBVcGdyYWRlU29ja2V0ID0gU29ja2V0ICYgeyBkZXN0cm95U29vbj86ICgpID0+IHZvaWQgfTtcblxuLyoqIExpc3RlbmVyLCB1cHN0cmVhbSBhcHBsaWNhdGlvbiwgYW5kIG9wdGlvbmFsIGF1dGhlbnRpY2F0aW9uIHNldHRpbmdzIGZvciB0aGUgd3JhcHBlciBwcm94eS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJveHlPcHRpb25zIHtcbiAgLyoqIFRoZSBwb3J0IHRoaXMgcHJveHkgbGlzdGVucyBvbiAtIHRoZSBwb3J0IHBvcnRyIGFuZCB0aGUgcGxhdGZvcm0gcm91dGUgdG8uICovXG4gIHB1YmxpY1BvcnQ6IG51bWJlcjtcbiAgLyoqIFRoZSBwcml2YXRlIGxvb3BiYWNrIHBvcnQgdGhlIHdyYXBwZWQgYXBwIGxpc3RlbnMgb24uICovXG4gIGFwcFBvcnQ6IG51bWJlcjtcbiAgLyoqIFRoZSBnYXRlIGhhbmRsZXJzLiBPbWl0dGVkIChhbiBgLS1pbnNlY3VyZWAgcnVuKSBmb3J3YXJkcyBldmVyeXRoaW5nLiAqL1xuICBnYXRlPzogQXV0aEdhdGVBcGk7XG4gIC8qKiBFeHRyYSBgeC1gIGhlYWRlcnMgdHVubmVsIHRyYWZmaWMgbWF5IGZvcndhcmQuICovXG4gIGZvcndhcmRIZWFkZXJzPzogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBQYXRoIHByZWZpeGVzIHRvIGdhdGUgYmV5b25kIGAvYXBpL2AgKGUuZy4gYC93c2AgZm9yIGEgV2ViU29ja2V0IGFwcCkuICovXG4gIGdhdGVQYXRocz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogQnJhbmQgbmFtZSBmb3IgdGhlIGhvc3RlZCBsb2dpbiBwYWdlIHNob3duIG9uIGEgZGVuaWVkIGJyb3dzZXIgbmF2aWdhdGlvbi4gKi9cbiAgYnJhbmROYW1lPzogc3RyaW5nO1xuICAvKiogUHJlZml4IGFkZGVkIGJlZm9yZSB0aGUgaHVtYW5pemVkIHR1bm5lbCBzdWJkb21haW4gaW4gbmV3IHBhc3NrZXkgbmFtZXMuICovXG4gIHBhc3NrZXlOYW1lUHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogQWRkcmVzc2VzIHRvIGxpc3RlbiBvbi4gRGVmYXVsdHMgdG8gYSBzaW5nbGUgYDAuMC4wLjBgIChldmVyeSBpbnRlcmZhY2UpLFxuICAgKiB0aGUgcG9ydHIvcGxhdGZvcm0gY2FzZS4gUGFzcyBzcGVjaWZpYyBpbnRlcmZhY2UgSVBzIHRvIGV4cG9zZSB0aGUgZ2F0ZSBvblxuICAgKiBvbmx5IHRob3NlIC0gZS5nLiBhbiBvdmVybGF5L0xBTiBhZGRyZXNzIHdoaWxlIGxvb3BiYWNrIHJlYWNoZXMgdGhlIHVwc3RyZWFtXG4gICAqIGRpcmVjdGx5IGFuZCB1bmdhdGVkLlxuICAgKi9cbiAgYmluZEhvc3RzPzogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbmZ1bmN0aW9uIHNlbmRKc29uKFxuICByZXNwb25zZTogU2VydmVyUmVzcG9uc2UsXG4gIHN0YXR1czogbnVtYmVyLFxuICBib2R5OiB1bmtub3duLFxuICBzZXRDb29raWU/OiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgcmVzcG9uc2Uud3JpdGVIZWFkKHN0YXR1cywge1xuICAgIFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIC4uLihzZXRDb29raWUgPyB7IFwic2V0LWNvb2tpZVwiOiBzZXRDb29raWUgfSA6IHt9KSxcbiAgfSk7XG4gIHJlc3BvbnNlLmVuZChKU09OLnN0cmluZ2lmeShib2R5KSk7XG59XG5cbi8qKlxuICogSGFuZCBldmVyeSBCZXR0ZXIgQXV0aCBhbmQgY29tcGF0aWJpbGl0eSByb3V0ZSB0byB0aGUgc2hhcmVkIGdhdGUgcnVudGltZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gaGFuZGxlQXV0aFJvdXRlKFxuICByZXF1ZXN0OiBJbmNvbWluZ01lc3NhZ2UsXG4gIHJlc3BvbnNlOiBTZXJ2ZXJSZXNwb25zZSxcbiAgcGF0aDogc3RyaW5nLFxuICBnYXRlOiBBdXRoR2F0ZUFwaSxcbiAgYnJhbmROYW1lOiBzdHJpbmcsXG4gIHBhc3NrZXlOYW1lUHJlZml4Pzogc3RyaW5nLFxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmICghaXNBdXRoUGF0aChwYXRoKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAod2FudHNIb3N0ZWRMb2dpbihyZXF1ZXN0KSkge1xuICAgIHJlc3BvbnNlLndyaXRlSGVhZCgyMDAsIHsgXCJjb250ZW50LXR5cGVcIjogXCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLThcIiB9KTtcbiAgICByZXNwb25zZS5lbmQoXG4gICAgICBsb2dpblBhZ2VIdG1sKHtcbiAgICAgICAgYnJhbmROYW1lLFxuICAgICAgICBwYXNza2V5TmFtZVByZWZpeCxcbiAgICAgICAgcmV0dXJuVG86IGxvZ2luUmV0dXJuVG8ocmVxdWVzdCksXG4gICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdhdGUuaGFuZGxlcih3ZWJSZXF1ZXN0KHJlcXVlc3QpKTtcbiAgYXdhaXQgc2VuZFdlYlJlc3BvbnNlKHJlc3BvbnNlLCByZXN1bHQpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBTdGFydCB0aGUgcHJveHkgYW5kIHJlc29sdmUgb25jZSBpdCBpcyBsaXN0ZW5pbmcuXG4gKlxuICogYHB1YmxpY0RvbWFpbmAgaXMgaW50ZW50aW9uYWxseSBOT1QgcGFzc2VkIHRvIGBnYXRlUmVxdWVzdGA6IG9uIHRoaXMgcGF0aCBldmVyeVxuICogcmVxdWVzdCBhcnJpdmVkIG9uIHRoZSBwdWJsaWMgcG9ydCwgc28gaXQgSVMgdHVubmVsIHRyYWZmaWMgYnkgY29uc3RydWN0aW9uIC1cbiAqIHdoZXJlYXMgdGhlIGluLXByb2Nlc3MgZ2F0ZSBzaGFyZXMgYSBwb3J0IHdpdGggdGhlIHBsYXRmb3JtIGZyb250IGRvb3IgYW5kIGhhc1xuICogdG8gdGVsbCB0aGVtIGFwYXJ0IGJ5IGBIb3N0YC4gUGFzc2luZyB0aGUgcmVxdWVzdCdzIG93biBob3N0IGtlZXBzIHRoZSBzaGFyZWRcbiAqIGRlY2lzaW9uIGZ1bmN0aW9uJ3MgY29udHJhY3Qgc2F0aXNmaWVkIHdpdGhvdXQgd2Vha2VuaW5nIGl0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRQcm94eShvcHRpb25zOiBQcm94eU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcHJveHkgPSBQcm94eU1vZHVsZS5jcmVhdGVQcm94eVNlcnZlcih7XG4gICAgdGFyZ2V0OiBgaHR0cDovLzEyNy4wLjAuMToke29wdGlvbnMuYXBwUG9ydH1gLFxuICAgIHdzOiB0cnVlLFxuICAgIHhmd2Q6IHRydWUsXG4gIH0pO1xuICBjb25zdCBoZWFkZXJQb2xpY3kgPSB0b0hlYWRlclBvbGljeShvcHRpb25zLmZvcndhcmRIZWFkZXJzKTtcbiAgY29uc3QgZ2F0ZSA9IG9wdGlvbnMuZ2F0ZTtcblxuICBjb25zdCBkZWNpZGUgPSAocmVxdWVzdDogSW5jb21pbmdNZXNzYWdlKTogUHJvbWlzZTxHYXRlQWN0aW9uPiA9PlxuICAgIGdhdGVcbiAgICAgID8gZ2F0ZVJlcXVlc3QocmVxdWVzdCwge1xuICAgICAgICAgIGdhdGUsXG4gICAgICAgICAgcHVibGljRG9tYWluOiAocmVxdWVzdC5oZWFkZXJzLmhvc3QgPz8gXCJcIikuc3BsaXQoXCI6XCIpWzBdIHx8IFwibG9jYWxob3N0XCIsXG4gICAgICAgICAgaGVhZGVyUG9saWN5LFxuICAgICAgICAgIGdhdGVQYXRoczogb3B0aW9ucy5nYXRlUGF0aHMsXG4gICAgICAgIH0pXG4gICAgICA6IFByb21pc2UucmVzb2x2ZTxHYXRlQWN0aW9uPihcInBhc3NcIik7XG5cbiAgY29uc3Qgb25SZXF1ZXN0ID0gKHJlcXVlc3Q6IEluY29taW5nTWVzc2FnZSwgcmVzcG9uc2U6IFNlcnZlclJlc3BvbnNlKTogdm9pZCA9PiB7XG4gICAgdm9pZCAoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcGF0aCA9IChyZXF1ZXN0LnVybCA/PyBcIi9cIikuc3BsaXQoXCI/XCIpWzBdID8/IFwiL1wiO1xuICAgICAgY29uc3QgYnJhbmROYW1lID0gb3B0aW9ucy5icmFuZE5hbWUgPz8gXCJ0aGlzIGFwcFwiO1xuICAgICAgY29uc3QgcGFzc2tleU5hbWVQcmVmaXggPSBvcHRpb25zLnBhc3NrZXlOYW1lUHJlZml4O1xuICAgICAgaWYgKFxuICAgICAgICBnYXRlICYmXG4gICAgICAgIChhd2FpdCBoYW5kbGVBdXRoUm91dGUocmVxdWVzdCwgcmVzcG9uc2UsIHBhdGgsIGdhdGUsIGJyYW5kTmFtZSwgcGFzc2tleU5hbWVQcmVmaXgpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICgoYXdhaXQgZGVjaWRlKHJlcXVlc3QpKSA9PT0gXCJkZW55XCIpIHtcbiAgICAgICAgLy8gQSBkZW5pZWQgYnJvd3NlciBuYXZpZ2F0aW9uIGdldHMgdGhlIGhvc3RlZCBsb2dpbiBwYWdlOyBhbnl0aGluZyBlbHNlXG4gICAgICAgIC8vIChhbiBYSFIsIGEgL3dzIHVwZ3JhZGUgcHJvYmUsIGEgbm9uLUhUTUwgZmV0Y2gpIGdldHMgdGhlIDQwMSBKU09OLlxuICAgICAgICBpZiAoZ2F0ZSAmJiB3YW50c0xvZ2luUGFnZShyZXF1ZXN0KSkge1xuICAgICAgICAgIGNvbnN0IGh0bWwgPSBsb2dpblBhZ2VIdG1sKHtcbiAgICAgICAgICAgIGJyYW5kTmFtZSxcbiAgICAgICAgICAgIHBhc3NrZXlOYW1lUHJlZml4LFxuICAgICAgICAgICAgcmV0dXJuVG86IHJlcXVlc3RSZXR1cm5UbyhyZXF1ZXN0KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoNDAxLCB7IFwiY29udGVudC10eXBlXCI6IFwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XCIgfSk7XG4gICAgICAgICAgcmVzcG9uc2UuZW5kKGh0bWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlbmRKc29uKHJlc3BvbnNlLCA0MDEsIHVuYXV0aG9yaXplZEJvZHkocmVxdWVzdCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHByb3h5LndlYihyZXF1ZXN0LCByZXNwb25zZSk7XG4gICAgfSkoKS5jYXRjaCgoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgIGxvZ2dlci5lcnJvcihcInByb3h5IHJlcXVlc3QgZmFpbGVkXCIsIHsgZXJyb3I6IHRvRXJyb3IoZXJyb3IpIH0pO1xuICAgICAgaWYgKCFyZXNwb25zZS5oZWFkZXJzU2VudCkgc2VuZEpzb24ocmVzcG9uc2UsIDUwMiwgeyBlcnJvcjogXCJiYWQgZ2F0ZXdheVwiIH0pO1xuICAgICAgZWxzZSByZXNwb25zZS5lbmQoKTtcbiAgICB9KTtcbiAgfTtcblxuICAvLyBBIHdlYnNvY2tldCB1cGdyYWRlIGNhbm5vdCBiZSBhbnN3ZXJlZCB3aXRoIGEgNDAxIGJvZHksIHNvIGEgZGVuaWVkIG9uZSBpc1xuICAvLyBkZXN0cm95ZWQgLSB0aGUgY2xpZW50IHNlZXMgdGhlIGhhbmRzaGFrZSBmYWlsLCB3aGljaCBpcyB3aGF0IGEgYnJvd3NlcidzXG4gIC8vIFdlYlNvY2tldCBlcnJvciBoYW5kbGVyIGV4cGVjdHMuXG4gIGNvbnN0IG9uVXBncmFkZSA9IChyZXF1ZXN0OiBJbmNvbWluZ01lc3NhZ2UsIHNvY2tldDogU29ja2V0LCBoZWFkOiBCdWZmZXIpOiB2b2lkID0+IHtcbiAgICBjb25zdCB1cGdyYWRlU29ja2V0ID0gc29ja2V0IGFzIFVwZ3JhZGVTb2NrZXQ7XG4gICAgdXBncmFkZVNvY2tldC5kZXN0cm95U29vbiA/Pz0gKCkgPT4gdXBncmFkZVNvY2tldC5lbmQoKTtcbiAgICBjb25zdCBwYXRoID0gKHJlcXVlc3QudXJsID8/IFwiL1wiKS5zcGxpdChcIj9cIiwgMSlbMF0gPz8gXCIvXCI7XG4gICAgaWYgKGlzQXV0aFBhdGgocGF0aCkpIHtcbiAgICAgIHVwZ3JhZGVTb2NrZXQuZGVzdHJveSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2b2lkIGRlY2lkZShyZXF1ZXN0KVxuICAgICAgLnRoZW4oKGFjdGlvbikgPT4ge1xuICAgICAgICBpZiAoYWN0aW9uID09PSBcImRlbnlcIikgdXBncmFkZVNvY2tldC5kZXN0cm95KCk7XG4gICAgICAgIGVsc2UgcHJveHkud3MocmVxdWVzdCwgdXBncmFkZVNvY2tldCwgaGVhZCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHVwZ3JhZGVTb2NrZXQuZGVzdHJveSgpKTtcbiAgfTtcblxuICAvLyBPbmUgbmV0LlNlcnZlciBiaW5kcyBvbmUgYWRkcmVzcywgc28gbGlzdGVuIGVhY2ggaG9zdCBvbiBpdHMgb3duIHNlcnZlciB0aGF0XG4gIC8vIHNoYXJlcyB0aGUgc2FtZSBoYW5kbGVycy4gQmluZGluZyBzcGVjaWZpYyBpbnRlcmZhY2UgSVBzIChyYXRoZXIgdGhhbiB0aGVcbiAgLy8gZGVmYXVsdCAwLjAuMC4wKSBpcyB3aGF0IGxldHMgdGhlIGdhdGUgZnJvbnQgYW4gb3ZlcmxheS9MQU4gYWRkcmVzcyB3aGlsZVxuICAvLyBsb29wYmFjayByZWFjaGVzIHRoZSB1cHN0cmVhbSB1bmdhdGVkLlxuICBjb25zdCBob3N0cyA9IG9wdGlvbnMuYmluZEhvc3RzPy5sZW5ndGggPyBvcHRpb25zLmJpbmRIb3N0cyA6IFtcIjAuMC4wLjBcIl07XG4gIGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGhvc3RzLm1hcChcbiAgICAgIChob3N0KSA9PlxuICAgICAgICBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlcnZlciA9IGNyZWF0ZVNlcnZlcihvblJlcXVlc3QpO1xuICAgICAgICAgIHNlcnZlci5vbihcInVwZ3JhZGVcIiwgb25VcGdyYWRlKTtcbiAgICAgICAgICBzZXJ2ZXIubGlzdGVuKG9wdGlvbnMucHVibGljUG9ydCwgaG9zdCwgKCkgPT4ge1xuICAgICAgICAgICAgbG9nZ2VyLmluZm8oXCJwcm94eSBsaXN0ZW5pbmdcIiwge1xuICAgICAgICAgICAgICBob3N0LFxuICAgICAgICAgICAgICBwdWJsaWNQb3J0OiBvcHRpb25zLnB1YmxpY1BvcnQsXG4gICAgICAgICAgICAgIGFwcFBvcnQ6IG9wdGlvbnMuYXBwUG9ydCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICApLFxuICApO1xufVxuIl19
@@ -1 +1 @@
1
- {"root":["../src/bootstrap.ts","../src/bun.ts","../src/cli.ts","../src/root.ts","../src/appkit/cli.ts","../src/appkit/env-export.ts","../src/appkit/index.ts","../src/auth/cli.ts","../src/auth/index.ts","../src/auth/options.ts","../src/brand/cli.ts","../src/brand/export.ts","../src/brand/index.ts","../src/brand/options.ts","../src/brand/run.ts","../src/brand/showcase.ts","../src/genie-code/cli.ts","../src/genie-code/config.ts","../src/genie-code/index.ts","../src/genie-code/install.ts","../src/genie-code/options.ts","../src/genie-code/runner.ts","../src/genie-code/runtime.ts","../src/graphiti/cli.ts","../src/graphiti/index.ts","../src/graphiti/options.ts","../src/lakebase-proxy/cancellation.ts","../src/lakebase-proxy/cli.ts","../src/lakebase-proxy/index.ts","../src/lakebase-proxy/options.ts","../src/lakebase-proxy/protocol.ts","../src/lakebase-proxy/proxy.ts","../src/model-gateway/cli.ts","../src/model-gateway/index.ts","../src/model-gateway/server.ts","../src/tunnel/app.ts","../src/tunnel/cli.ts","../src/tunnel/index.ts","../src/tunnel/options.ts","../src/tunnel/proxy.ts","../index.ts","../bin/dbx-genie.ts","../bin/dbx-graphiti.ts","../bin/dbx-lakebase-proxy.ts","../bin/dbx-model-gateway.ts","../bin/dbx-tools.ts"],"version":"5.9.3"}
1
+ {"root":["../src/bootstrap.ts","../src/bun.ts","../src/cli.ts","../src/root.ts","../src/appkit/cli.ts","../src/appkit/env-export.ts","../src/auth/cli.ts","../src/auth/options.ts","../src/brand/cli.ts","../src/brand/export.ts","../src/brand/options.ts","../src/brand/run.ts","../src/brand/showcase.ts","../src/genie-code/cli.ts","../src/genie-code/config.ts","../src/genie-code/install.ts","../src/genie-code/runner.ts","../src/genie-code/runtime.ts","../src/graphiti/cli.ts","../src/lakebase-proxy/cancellation.ts","../src/lakebase-proxy/cli.ts","../src/lakebase-proxy/options.ts","../src/lakebase-proxy/protocol.ts","../src/lakebase-proxy/proxy.ts","../src/model-gateway/cli.ts","../src/model-gateway/server.ts","../src/tunnel/app.ts","../src/tunnel/cli.ts","../src/tunnel/options.ts","../src/tunnel/proxy.ts","../index.appkit.ts","../index.auth.ts","../index.brand.ts","../index.genie-code.ts","../index.graphiti.ts","../index.lakebase-proxy.ts","../index.model-gateway.ts","../index.tunnel.ts","../index.ts","../bin/dbx-genie.ts","../bin/dbx-graphiti.ts","../bin/dbx-lakebase-proxy.ts","../bin/dbx-model-gateway.ts","../bin/dbx-tools.ts"],"version":"5.9.3"}
package/package.json CHANGED
@@ -34,27 +34,28 @@
34
34
  "dependencies": {
35
35
  "@clack/prompts": "^1.7.0",
36
36
  "@databricks/appkit": "0.81.0",
37
- "@dbx-tools/appkit": "^0.9.153",
38
- "@dbx-tools/appkit-generator": "^0.9.153",
39
- "@dbx-tools/appkit-memory": "^0.9.153",
40
- "@dbx-tools/appkit-model-gateway": "^0.9.153",
41
- "@dbx-tools/appkit-web-search": "^0.9.153",
42
- "@dbx-tools/auth": "^0.9.153",
43
- "@dbx-tools/auth-gate": "^0.9.153",
44
- "@dbx-tools/cli-args": "^0.9.153",
45
- "@dbx-tools/cli-service": "^0.9.153",
46
- "@dbx-tools/core": "^0.9.153",
47
- "@dbx-tools/databricks": "^0.9.153",
48
- "@dbx-tools/email": "^0.9.153",
49
- "@dbx-tools/lakebase": "^0.9.153",
50
- "@dbx-tools/postgres": "^0.9.153",
51
- "@dbx-tools/shared-auth": "^0.9.153",
52
- "@dbx-tools/shared-core": "^0.9.153",
53
- "@dbx-tools/shared-email": "^0.9.153",
54
- "@dbx-tools/shared-generator": "^0.9.153",
55
- "@dbx-tools/shared-genie-code": "^0.9.153",
56
- "@dbx-tools/shared-model-gateway": "^0.9.153",
57
- "@dbx-tools/tunnel": "^0.9.153",
37
+ "@dbx-tools/appkit": "^0.9.157",
38
+ "@dbx-tools/appkit-generator": "^0.9.157",
39
+ "@dbx-tools/appkit-memory": "^0.9.157",
40
+ "@dbx-tools/appkit-model-gateway": "^0.9.157",
41
+ "@dbx-tools/appkit-web-search": "^0.9.157",
42
+ "@dbx-tools/auth": "^0.9.157",
43
+ "@dbx-tools/auth-gate": "^0.9.157",
44
+ "@dbx-tools/cli-args": "^0.9.157",
45
+ "@dbx-tools/cli-service": "^0.9.157",
46
+ "@dbx-tools/core": "^0.9.157",
47
+ "@dbx-tools/databricks": "^0.9.157",
48
+ "@dbx-tools/email": "^0.9.157",
49
+ "@dbx-tools/lakebase": "^0.9.157",
50
+ "@dbx-tools/postgres": "^0.9.157",
51
+ "@dbx-tools/shared-auth": "^0.9.157",
52
+ "@dbx-tools/shared-core": "^0.9.157",
53
+ "@dbx-tools/shared-email": "^0.9.157",
54
+ "@dbx-tools/shared-generator": "^0.9.157",
55
+ "@dbx-tools/shared-genie-code": "^0.9.157",
56
+ "@dbx-tools/shared-graphiti": "^0.9.157",
57
+ "@dbx-tools/shared-model-gateway": "^0.9.157",
58
+ "@dbx-tools/tunnel": "^0.9.157",
58
59
  "commander": "^15.0.0",
59
60
  "concurrently": "^10.0.3",
60
61
  "get-port": "^7.1.0",
@@ -83,102 +84,42 @@
83
84
  "types": "./lib/index.d.ts",
84
85
  "default": "./lib/index.js"
85
86
  },
86
- "./bootstrap": {
87
- "types": "./lib/src/bootstrap.d.ts",
88
- "default": "./lib/src/bootstrap.js"
89
- },
90
- "./bun": {
91
- "types": "./lib/src/bun.d.ts",
92
- "default": "./lib/src/bun.js"
93
- },
94
- "./cli": {
95
- "types": "./lib/src/cli.d.ts",
96
- "default": "./lib/src/cli.js"
97
- },
98
- "./root": {
99
- "types": "./lib/src/root.d.ts",
100
- "default": "./lib/src/root.js"
101
- },
102
- "./*": {
103
- "types": "./lib/src/*/index.d.ts",
104
- "default": "./lib/src/*/index.js"
105
- },
106
87
  "./appkit": {
107
- "types": "./lib/src/appkit/cli.d.ts",
108
- "default": "./lib/src/appkit/cli.js"
109
- },
110
- "./appkit/env-export": {
111
- "types": "./lib/src/appkit/env-export.d.ts",
112
- "default": "./lib/src/appkit/env-export.js"
88
+ "types": "./lib/index.appkit.d.ts",
89
+ "default": "./lib/index.appkit.js"
113
90
  },
114
91
  "./auth": {
115
- "types": "./lib/src/auth/cli.d.ts",
116
- "default": "./lib/src/auth/cli.js"
117
- },
118
- "./auth/options": {
119
- "types": "./lib/src/auth/options.d.ts",
120
- "default": "./lib/src/auth/options.js"
92
+ "types": "./lib/index.auth.d.ts",
93
+ "default": "./lib/index.auth.js"
121
94
  },
122
95
  "./brand": {
123
- "types": "./lib/src/brand/cli.d.ts",
124
- "default": "./lib/src/brand/cli.js"
125
- },
126
- "./brand/export": {
127
- "types": "./lib/src/brand/export.d.ts",
128
- "default": "./lib/src/brand/export.js"
96
+ "types": "./lib/index.brand.d.ts",
97
+ "default": "./lib/index.brand.js"
129
98
  },
130
- "./brand/options": {
131
- "types": "./lib/src/brand/options.d.ts",
132
- "default": "./lib/src/brand/options.js"
133
- },
134
- "./brand/run": {
135
- "types": "./lib/src/brand/run.d.ts",
136
- "default": "./lib/src/brand/run.js"
99
+ "./genie-code": {
100
+ "types": "./lib/index.genie-code.d.ts",
101
+ "default": "./lib/index.genie-code.js"
137
102
  },
138
103
  "./graphiti": {
139
- "types": "./lib/src/graphiti/cli.d.ts",
140
- "default": "./lib/src/graphiti/cli.js"
141
- },
142
- "./graphiti/options": {
143
- "types": "./lib/src/graphiti/options.d.ts",
144
- "default": "./lib/src/graphiti/options.js"
145
- },
146
- "./genie": {
147
- "types": "./lib/src/genie-code/cli.d.ts",
148
- "default": "./lib/src/genie-code/cli.js"
149
- },
150
- "./genie/options": {
151
- "types": "./lib/src/genie-code/options.d.ts",
152
- "default": "./lib/src/genie-code/options.js"
104
+ "types": "./lib/index.graphiti.d.ts",
105
+ "default": "./lib/index.graphiti.js"
153
106
  },
154
107
  "./lakebase-proxy": {
155
- "types": "./lib/src/lakebase-proxy/cli.d.ts",
156
- "default": "./lib/src/lakebase-proxy/cli.js"
157
- },
158
- "./lakebase-proxy/options": {
159
- "types": "./lib/src/lakebase-proxy/options.d.ts",
160
- "default": "./lib/src/lakebase-proxy/options.js"
108
+ "types": "./lib/index.lakebase-proxy.d.ts",
109
+ "default": "./lib/index.lakebase-proxy.js"
161
110
  },
162
111
  "./model-gateway": {
163
- "types": "./lib/src/model-gateway/cli.d.ts",
164
- "default": "./lib/src/model-gateway/cli.js"
165
- },
166
- "./model-gateway/server": {
167
- "types": "./lib/src/model-gateway/server.d.ts",
168
- "default": "./lib/src/model-gateway/server.js"
112
+ "types": "./lib/index.model-gateway.d.ts",
113
+ "default": "./lib/index.model-gateway.js"
169
114
  },
170
115
  "./tunnel": {
171
- "types": "./lib/src/tunnel/cli.d.ts",
172
- "default": "./lib/src/tunnel/cli.js"
173
- },
174
- "./tunnel/options": {
175
- "types": "./lib/src/tunnel/options.d.ts",
176
- "default": "./lib/src/tunnel/options.js"
116
+ "types": "./lib/index.tunnel.d.ts",
117
+ "default": "./lib/index.tunnel.js"
177
118
  },
178
119
  "./package.json": "./package.json"
179
120
  }
180
121
  },
181
- "version": "0.9.153",
122
+ "version": "0.9.157",
182
123
  "types": "./lib/index.d.ts",
183
124
  "dbxToolsConfig": {
184
125
  "tags": [
@@ -191,102 +132,42 @@
191
132
  "types": "./lib/index.d.ts",
192
133
  "default": "./lib/index.js"
193
134
  },
194
- "./bootstrap": {
195
- "types": "./lib/src/bootstrap.d.ts",
196
- "default": "./lib/src/bootstrap.js"
197
- },
198
- "./bun": {
199
- "types": "./lib/src/bun.d.ts",
200
- "default": "./lib/src/bun.js"
201
- },
202
- "./cli": {
203
- "types": "./lib/src/cli.d.ts",
204
- "default": "./lib/src/cli.js"
205
- },
206
- "./root": {
207
- "types": "./lib/src/root.d.ts",
208
- "default": "./lib/src/root.js"
209
- },
210
- "./*": {
211
- "types": "./lib/src/*/index.d.ts",
212
- "default": "./lib/src/*/index.js"
213
- },
214
135
  "./appkit": {
215
- "types": "./lib/src/appkit/cli.d.ts",
216
- "default": "./lib/src/appkit/cli.js"
217
- },
218
- "./appkit/env-export": {
219
- "types": "./lib/src/appkit/env-export.d.ts",
220
- "default": "./lib/src/appkit/env-export.js"
136
+ "types": "./lib/index.appkit.d.ts",
137
+ "default": "./lib/index.appkit.js"
221
138
  },
222
139
  "./auth": {
223
- "types": "./lib/src/auth/cli.d.ts",
224
- "default": "./lib/src/auth/cli.js"
225
- },
226
- "./auth/options": {
227
- "types": "./lib/src/auth/options.d.ts",
228
- "default": "./lib/src/auth/options.js"
140
+ "types": "./lib/index.auth.d.ts",
141
+ "default": "./lib/index.auth.js"
229
142
  },
230
143
  "./brand": {
231
- "types": "./lib/src/brand/cli.d.ts",
232
- "default": "./lib/src/brand/cli.js"
233
- },
234
- "./brand/export": {
235
- "types": "./lib/src/brand/export.d.ts",
236
- "default": "./lib/src/brand/export.js"
144
+ "types": "./lib/index.brand.d.ts",
145
+ "default": "./lib/index.brand.js"
237
146
  },
238
- "./brand/options": {
239
- "types": "./lib/src/brand/options.d.ts",
240
- "default": "./lib/src/brand/options.js"
241
- },
242
- "./brand/run": {
243
- "types": "./lib/src/brand/run.d.ts",
244
- "default": "./lib/src/brand/run.js"
147
+ "./genie-code": {
148
+ "types": "./lib/index.genie-code.d.ts",
149
+ "default": "./lib/index.genie-code.js"
245
150
  },
246
151
  "./graphiti": {
247
- "types": "./lib/src/graphiti/cli.d.ts",
248
- "default": "./lib/src/graphiti/cli.js"
249
- },
250
- "./graphiti/options": {
251
- "types": "./lib/src/graphiti/options.d.ts",
252
- "default": "./lib/src/graphiti/options.js"
253
- },
254
- "./genie": {
255
- "types": "./lib/src/genie-code/cli.d.ts",
256
- "default": "./lib/src/genie-code/cli.js"
257
- },
258
- "./genie/options": {
259
- "types": "./lib/src/genie-code/options.d.ts",
260
- "default": "./lib/src/genie-code/options.js"
152
+ "types": "./lib/index.graphiti.d.ts",
153
+ "default": "./lib/index.graphiti.js"
261
154
  },
262
155
  "./lakebase-proxy": {
263
- "types": "./lib/src/lakebase-proxy/cli.d.ts",
264
- "default": "./lib/src/lakebase-proxy/cli.js"
265
- },
266
- "./lakebase-proxy/options": {
267
- "types": "./lib/src/lakebase-proxy/options.d.ts",
268
- "default": "./lib/src/lakebase-proxy/options.js"
156
+ "types": "./lib/index.lakebase-proxy.d.ts",
157
+ "default": "./lib/index.lakebase-proxy.js"
269
158
  },
270
159
  "./model-gateway": {
271
- "types": "./lib/src/model-gateway/cli.d.ts",
272
- "default": "./lib/src/model-gateway/cli.js"
273
- },
274
- "./model-gateway/server": {
275
- "types": "./lib/src/model-gateway/server.d.ts",
276
- "default": "./lib/src/model-gateway/server.js"
160
+ "types": "./lib/index.model-gateway.d.ts",
161
+ "default": "./lib/index.model-gateway.js"
277
162
  },
278
163
  "./tunnel": {
279
- "types": "./lib/src/tunnel/cli.d.ts",
280
- "default": "./lib/src/tunnel/cli.js"
281
- },
282
- "./tunnel/options": {
283
- "types": "./lib/src/tunnel/options.d.ts",
284
- "default": "./lib/src/tunnel/options.js"
164
+ "types": "./lib/index.tunnel.d.ts",
165
+ "default": "./lib/index.tunnel.js"
285
166
  },
286
167
  "./package.json": "./package.json"
287
168
  },
288
169
  "files": [
289
- "index.ts",
170
+ "index*.ts",
290
171
  "src",
291
172
  "bin",
292
173
  "lib"
package/src/appkit/cli.ts CHANGED
@@ -12,7 +12,7 @@
12
12
  * @module
13
13
  */
14
14
 
15
- import { appkit } from "@dbx-tools/appkit";
15
+ import { autoConfigure } from "@dbx-tools/appkit";
16
16
  import { addArgs, parseArgs } from "@dbx-tools/cli-args";
17
17
  import { log } from "@dbx-tools/shared-core";
18
18
  import { Command, CommanderError } from "commander";
@@ -35,7 +35,7 @@ async function writeEnvExport(opts: EnvCommandOptions): Promise<void> {
35
35
 
36
36
  logger.debug("Snapshotting env vars");
37
37
  const before = snapshotEnv();
38
- await appkit.autoConfigure({ autoConfigure: "env" });
38
+ await autoConfigure({ autoConfigure: "env" });
39
39
  const changes = diffEnv(before, snapshotEnv());
40
40
 
41
41
  process.stdout.write(formatEnvExport(changes, opts.format));
@@ -68,5 +68,3 @@ export function buildProgram(name = "dbx appkit"): Command {
68
68
  export async function runCli(argv: string[]): Promise<void> {
69
69
  await buildProgram().parseAsync(argv);
70
70
  }
71
-
72
- export { CommanderError };
package/src/auth/cli.ts CHANGED
@@ -9,8 +9,8 @@
9
9
 
10
10
  import * as databricks from "@dbx-tools/auth";
11
11
  import { addArgs, parseArgs } from "@dbx-tools/cli-args";
12
- import type { DatabricksAuthClientInfo } from "@dbx-tools/shared-auth/client";
13
- import { Command, CommanderError } from "commander";
12
+ import type { DatabricksAuthClientInfo } from "@dbx-tools/shared-auth";
13
+ import { Command } from "commander";
14
14
 
15
15
  import {
16
16
  AuthCliOptionsSchema,
@@ -171,5 +171,3 @@ export function buildProgram(
171
171
  export async function runCli(argv: string[]): Promise<void> {
172
172
  await buildProgram().parseAsync(argv);
173
173
  }
174
-
175
- export { CommanderError };
@@ -8,8 +8,8 @@ import {
8
8
  AuthOptionsSchema,
9
9
  DatabricksAuthOptionsSchema,
10
10
  type DatabricksAuthOptions,
11
- } from "@dbx-tools/auth/config";
12
- import { stringUtils } from "@dbx-tools/shared-core";
11
+ } from "@dbx-tools/auth";
12
+ import { parseList } from "@dbx-tools/shared-core";
13
13
  import { z } from "zod";
14
14
 
15
15
  export const AuthCliOptionsSchema = z
@@ -25,9 +25,7 @@ export const AuthCliOptionsSchema = z
25
25
  scopes: z
26
26
  .preprocess(
27
27
  (value) =>
28
- Array.isArray(value)
29
- ? value.flatMap((entry) => stringUtils.parseList(String(entry)))
30
- : value,
28
+ Array.isArray(value) ? value.flatMap((entry) => parseList(String(entry))) : value,
31
29
  z.array(z.string().trim().min(1)),
32
30
  )
33
31
  .default([])
package/src/bootstrap.ts CHANGED
@@ -7,8 +7,8 @@ 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 } from "@dbx-tools/core";
11
- import { json, log } from "@dbx-tools/shared-core";
10
+ import { spawnSync } from "@dbx-tools/core";
11
+ import { log, parseRecord } from "@dbx-tools/shared-core";
12
12
  import { childEnv, resolveBunArgv, runBun } from "./bun.ts";
13
13
  import { rootLabel } from "./root.ts";
14
14
 
@@ -44,7 +44,7 @@ function ownVersion(): string | undefined {
44
44
  // in source but two levels away after compilation and silently fell back to
45
45
  // `@latest` in every installed CLI.
46
46
  const manifestPath = createRequire(import.meta.url).resolve(`${CLI_PACKAGE}/package.json`);
47
- const version = json.parseRecord(readFileSync(manifestPath, "utf8"))?.version;
47
+ const version = parseRecord(readFileSync(manifestPath, "utf8"))?.version;
48
48
  return typeof version === "string" && version !== "0.0.0" ? version : undefined;
49
49
  } catch {
50
50
  return undefined;
@@ -62,7 +62,7 @@ function compareVersions(a: string, b: string): number {
62
62
  function installedEngineVersion(root: string): string | undefined {
63
63
  try {
64
64
  const manifest = join(root, "node_modules", "@dbx-tools", "projen", "package.json");
65
- const version = json.parseRecord(readFileSync(manifest, "utf8"))?.version;
65
+ const version = parseRecord(readFileSync(manifest, "utf8"))?.version;
66
66
  return typeof version === "string" ? version : undefined;
67
67
  } catch {
68
68
  return undefined;
@@ -89,13 +89,9 @@ export function ensureEngineCurrent(root: string): void {
89
89
  runBun(["add", "-D", defaultProjenSpecifier()], root);
90
90
  }
91
91
 
92
- // Reach the class through its module NAMESPACE. Current engines also hoist it
93
- // flat, but every engine ever published exports the namespace, and this template
94
- // is resolved against `@latest` - a flat import dies on an older one with
95
- // "does not provide an export named 'DBXToolsNodeProject'".
96
- const PROJENRC_TEMPLATE = `import { project } from "@dbx-tools/projen";
92
+ const PROJENRC_TEMPLATE = `import { projectJs } from "@dbx-tools/projen";
97
93
 
98
- const rootProject = new project.DBXToolsNodeProject();
94
+ const rootProject = new projectJs.DBXToolsNodeProject();
99
95
  rootProject.synth();
100
96
  `;
101
97
 
@@ -153,7 +149,7 @@ export function seedToolchain(
153
149
  normalizeSeedManifest(manifestPath);
154
150
  }
155
151
 
156
- const kernelArch = exec.spawnSync("uname", ["-m"], {
152
+ const kernelArch = spawnSync("uname", ["-m"], {
157
153
  stdin: "ignore",
158
154
  stdout: "capture",
159
155
  stderr: "ignore",
@@ -178,7 +174,7 @@ export function seedToolchain(
178
174
  */
179
175
  function normalizeSeedManifest(manifestPath: string): void {
180
176
  try {
181
- const manifest = json.parseRecord(readFileSync(manifestPath, "utf8"));
177
+ const manifest = parseRecord(readFileSync(manifestPath, "utf8"));
182
178
  if (!manifest) return;
183
179
  delete manifest.devEngines;
184
180
  delete manifest.packageManager;
@@ -199,7 +195,7 @@ export function runInitialSynth(root: string): void {
199
195
  const [command, ...prefix] = resolveBunArgv();
200
196
  // bun runs the `.ts` directly. Registry environment aliases reach nested
201
197
  // commands through `childEnv` without writing project-level npm configuration.
202
- exec.spawnSync(command, [...prefix, ".projenrc.ts"], {
198
+ spawnSync(command, [...prefix, ".projenrc.ts"], {
203
199
  cwd: root,
204
200
  env: childEnv({ PROJEN_DISABLE_POST: "true" }),
205
201
  check: true,
@@ -4,7 +4,7 @@
4
4
  * @module
5
5
  */
6
6
 
7
- import { DatabricksAuthOptionsSchema } from "@dbx-tools/auth/config";
7
+ import { DatabricksAuthOptionsSchema } from "@dbx-tools/auth";
8
8
  import { z } from "zod";
9
9
 
10
10
  /** Options for exporting one researched brand package. */