@dbx-tools/databricks 0.6.186 → 0.6.191

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/lib/src/net.js ADDED
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Server-side networking helpers that need Node builtins, layered over the
3
+ * browser-safe URL / IP toolkit in `@dbx-tools/shared-core`'s `net` module: DNS
4
+ * resolution ({@link resolveHostIps}, `node:dns`) and public-IP discovery
5
+ * ({@link getPublicIp}).
6
+ *
7
+ * @module
8
+ */
9
+ import { lookup } from "node:dns/promises";
10
+ import { functionModule, http, net } from "@dbx-tools/shared-core";
11
+ /**
12
+ * This process's outbound public IP, cached for 5 minutes. Asks Cloudflare's
13
+ * `cdn-cgi/trace` first and falls back to ipify. Useful for allowlisting or for
14
+ * reasoning about egress from a Databricks App.
15
+ */
16
+ export const getPublicIp = functionModule.memoize(async () => {
17
+ const cloudflareResponse = await fetch("https://cloudflare.com/cdn-cgi/trace");
18
+ if (cloudflareResponse.ok) {
19
+ const trace = await cloudflareResponse.text();
20
+ const ipKey = "ip=";
21
+ const ip = trace
22
+ .split("\n")
23
+ .map((line) => line.trim())
24
+ .find((line) => line.startsWith(ipKey))
25
+ ?.slice(ipKey.length);
26
+ if (ip)
27
+ return ip;
28
+ }
29
+ const ipifyResponse = await fetch("https://api.ipify.org?format=json");
30
+ if (!ipifyResponse.ok) {
31
+ throw await http.createFetchError(ipifyResponse);
32
+ }
33
+ const ipifyData = (await ipifyResponse.json());
34
+ const ip = ipifyData?.ip;
35
+ if (ip)
36
+ return ip;
37
+ throw new Error("Could not determine public IP");
38
+ }, { ttlMs: 1000 * 60 * 5 });
39
+ /**
40
+ * Resolve the host of `input` to its IP address(es) via the OS resolver
41
+ * (`dns.lookup` with `all: true`, so both A and AAAA records are returned when
42
+ * the host is dual-stacked). Accepts any `net.UrlLike` - a bare hostname, a full
43
+ * URL, or a `{ url }` wrapper - and returns the deduplicated list of literal
44
+ * addresses. Never throws: an unparseable input, an IP-literal host (returned
45
+ * as-is without a DNS round-trip), or a resolution failure all yield the
46
+ * appropriate list or `[]`.
47
+ *
48
+ * `dns.lookup` (not `resolve4` / `resolve6`) is used so `/etc/hosts` and the
49
+ * platform resolver order are honored, matching what an outbound connection to
50
+ * the host would actually use.
51
+ */
52
+ export async function resolveHostIps(input) {
53
+ const host = net.urlBuilder(input)?.hostname;
54
+ if (!host)
55
+ return [];
56
+ // WHATWG `URL.hostname` brackets IPv6 literals; strip before parsing.
57
+ const literal = net.parseIp(host.replace(/^\[|\]$/g, ""));
58
+ if (literal)
59
+ return [host.replace(/^\[|\]$/g, "")];
60
+ try {
61
+ const results = await lookup(host, { all: true });
62
+ return [...new Set(results.map((r) => r.address))];
63
+ }
64
+ catch {
65
+ return [];
66
+ }
67
+ }
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25ldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRW5FOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FDL0MsS0FBSyxJQUFJLEVBQUU7SUFDVCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDL0UsSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxNQUFNLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNwQixNQUFNLEVBQUUsR0FBRyxLQUFLO2FBQ2IsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNYLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzFCLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsSUFBSSxFQUFFO1lBQUUsT0FBTyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUNELE1BQU0sYUFBYSxHQUFHLE1BQU0sS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDdkUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN0QixNQUFNLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCxNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQU0sYUFBYSxDQUFDLElBQUksRUFBRSxDQUFvQixDQUFDO0lBQ2xFLE1BQU0sRUFBRSxHQUFHLFNBQVMsRUFBRSxFQUFFLENBQUM7SUFDekIsSUFBSSxFQUFFO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBQ25ELENBQUMsRUFDRCxFQUFFLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUN6QixDQUFDO0FBRUY7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQUMsS0FBa0I7SUFDckQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUM7SUFDN0MsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNyQixzRUFBc0U7SUFDdEUsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFELElBQUksT0FBTztRQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlcnZlci1zaWRlIG5ldHdvcmtpbmcgaGVscGVycyB0aGF0IG5lZWQgTm9kZSBidWlsdGlucywgbGF5ZXJlZCBvdmVyIHRoZVxuICogYnJvd3Nlci1zYWZlIFVSTCAvIElQIHRvb2xraXQgaW4gYEBkYngtdG9vbHMvc2hhcmVkLWNvcmVgJ3MgYG5ldGAgbW9kdWxlOiBETlNcbiAqIHJlc29sdXRpb24gKHtAbGluayByZXNvbHZlSG9zdElwc30sIGBub2RlOmRuc2ApIGFuZCBwdWJsaWMtSVAgZGlzY292ZXJ5XG4gKiAoe0BsaW5rIGdldFB1YmxpY0lwfSkuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGxvb2t1cCB9IGZyb20gXCJub2RlOmRucy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgZnVuY3Rpb25Nb2R1bGUsIGh0dHAsIG5ldCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5cbi8qKlxuICogVGhpcyBwcm9jZXNzJ3Mgb3V0Ym91bmQgcHVibGljIElQLCBjYWNoZWQgZm9yIDUgbWludXRlcy4gQXNrcyBDbG91ZGZsYXJlJ3NcbiAqIGBjZG4tY2dpL3RyYWNlYCBmaXJzdCBhbmQgZmFsbHMgYmFjayB0byBpcGlmeS4gVXNlZnVsIGZvciBhbGxvd2xpc3Rpbmcgb3IgZm9yXG4gKiByZWFzb25pbmcgYWJvdXQgZWdyZXNzIGZyb20gYSBEYXRhYnJpY2tzIEFwcC5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFB1YmxpY0lwID0gZnVuY3Rpb25Nb2R1bGUubWVtb2l6ZShcbiAgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNsb3VkZmxhcmVSZXNwb25zZSA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9jbG91ZGZsYXJlLmNvbS9jZG4tY2dpL3RyYWNlXCIpO1xuICAgIGlmIChjbG91ZGZsYXJlUmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnN0IHRyYWNlID0gYXdhaXQgY2xvdWRmbGFyZVJlc3BvbnNlLnRleHQoKTtcbiAgICAgIGNvbnN0IGlwS2V5ID0gXCJpcD1cIjtcbiAgICAgIGNvbnN0IGlwID0gdHJhY2VcbiAgICAgICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgICAgIC5tYXAoKGxpbmUpID0+IGxpbmUudHJpbSgpKVxuICAgICAgICAuZmluZCgobGluZSkgPT4gbGluZS5zdGFydHNXaXRoKGlwS2V5KSlcbiAgICAgICAgPy5zbGljZShpcEtleS5sZW5ndGgpO1xuICAgICAgaWYgKGlwKSByZXR1cm4gaXA7XG4gICAgfVxuICAgIGNvbnN0IGlwaWZ5UmVzcG9uc2UgPSBhd2FpdCBmZXRjaChcImh0dHBzOi8vYXBpLmlwaWZ5Lm9yZz9mb3JtYXQ9anNvblwiKTtcbiAgICBpZiAoIWlwaWZ5UmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IGF3YWl0IGh0dHAuY3JlYXRlRmV0Y2hFcnJvcihpcGlmeVJlc3BvbnNlKTtcbiAgICB9XG4gICAgY29uc3QgaXBpZnlEYXRhID0gKGF3YWl0IGlwaWZ5UmVzcG9uc2UuanNvbigpKSBhcyB7IGlwPzogc3RyaW5nIH07XG4gICAgY29uc3QgaXAgPSBpcGlmeURhdGE/LmlwO1xuICAgIGlmIChpcCkgcmV0dXJuIGlwO1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBkZXRlcm1pbmUgcHVibGljIElQXCIpO1xuICB9LFxuICB7IHR0bE1zOiAxMDAwICogNjAgKiA1IH0sXG4pO1xuXG4vKipcbiAqIFJlc29sdmUgdGhlIGhvc3Qgb2YgYGlucHV0YCB0byBpdHMgSVAgYWRkcmVzcyhlcykgdmlhIHRoZSBPUyByZXNvbHZlclxuICogKGBkbnMubG9va3VwYCB3aXRoIGBhbGw6IHRydWVgLCBzbyBib3RoIEEgYW5kIEFBQUEgcmVjb3JkcyBhcmUgcmV0dXJuZWQgd2hlblxuICogdGhlIGhvc3QgaXMgZHVhbC1zdGFja2VkKS4gQWNjZXB0cyBhbnkgYG5ldC5VcmxMaWtlYCAtIGEgYmFyZSBob3N0bmFtZSwgYSBmdWxsXG4gKiBVUkwsIG9yIGEgYHsgdXJsIH1gIHdyYXBwZXIgLSBhbmQgcmV0dXJucyB0aGUgZGVkdXBsaWNhdGVkIGxpc3Qgb2YgbGl0ZXJhbFxuICogYWRkcmVzc2VzLiBOZXZlciB0aHJvd3M6IGFuIHVucGFyc2VhYmxlIGlucHV0LCBhbiBJUC1saXRlcmFsIGhvc3QgKHJldHVybmVkXG4gKiBhcy1pcyB3aXRob3V0IGEgRE5TIHJvdW5kLXRyaXApLCBvciBhIHJlc29sdXRpb24gZmFpbHVyZSBhbGwgeWllbGQgdGhlXG4gKiBhcHByb3ByaWF0ZSBsaXN0IG9yIGBbXWAuXG4gKlxuICogYGRucy5sb29rdXBgIChub3QgYHJlc29sdmU0YCAvIGByZXNvbHZlNmApIGlzIHVzZWQgc28gYC9ldGMvaG9zdHNgIGFuZCB0aGVcbiAqIHBsYXRmb3JtIHJlc29sdmVyIG9yZGVyIGFyZSBob25vcmVkLCBtYXRjaGluZyB3aGF0IGFuIG91dGJvdW5kIGNvbm5lY3Rpb24gdG9cbiAqIHRoZSBob3N0IHdvdWxkIGFjdHVhbGx5IHVzZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVIb3N0SXBzKGlucHV0OiBuZXQuVXJsTGlrZSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3QgaG9zdCA9IG5ldC51cmxCdWlsZGVyKGlucHV0KT8uaG9zdG5hbWU7XG4gIGlmICghaG9zdCkgcmV0dXJuIFtdO1xuICAvLyBXSEFUV0cgYFVSTC5ob3N0bmFtZWAgYnJhY2tldHMgSVB2NiBsaXRlcmFsczsgc3RyaXAgYmVmb3JlIHBhcnNpbmcuXG4gIGNvbnN0IGxpdGVyYWwgPSBuZXQucGFyc2VJcChob3N0LnJlcGxhY2UoL15cXFt8XFxdJC9nLCBcIlwiKSk7XG4gIGlmIChsaXRlcmFsKSByZXR1cm4gW2hvc3QucmVwbGFjZSgvXlxcW3xcXF0kL2csIFwiXCIpXTtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgbG9va3VwKGhvc3QsIHsgYWxsOiB0cnVlIH0pO1xuICAgIHJldHVybiBbLi4ubmV3IFNldChyZXN1bHRzLm1hcCgocikgPT4gci5hZGRyZXNzKSldO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW107XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Resolve the current Databricks workspace's URL, numeric id, and client from
3
+ * the active execution context (AppKit, when initialized), a default
4
+ * {@link WorkspaceClient}, or the environment. Server-only.
5
+ *
6
+ * @module
7
+ */
8
+ import { type WorkspaceClient as AppKitWorkspaceClient } from "@databricks/appkit";
9
+ import { net } from "@dbx-tools/shared-core";
10
+ /** Legacy SDK client exposed by AppKit for APIs not yet on its facade. */
11
+ export type WorkspaceClient = ReturnType<AppKitWorkspaceClient["toLegacyWorkspaceClient"]>;
12
+ /** Resolve AppKit's facade or an existing legacy client to the legacy SDK surface. */
13
+ export declare function toLegacyWorkspaceClient(client: AppKitWorkspaceClient | WorkspaceClient): WorkspaceClient;
14
+ /**
15
+ * The AppKit execution-context workspace client when available, otherwise
16
+ * `undefined`. Never constructs a fallback client and never throws for a
17
+ * missing AppKit scope.
18
+ */
19
+ export declare function tryGetWorkspaceClient(): WorkspaceClient | undefined;
20
+ /**
21
+ * Resolve a {@link WorkspaceClient}: {@link tryGetWorkspaceClient} first, else
22
+ * a memoized default client from env / profile auth.
23
+ */
24
+ export declare function getWorkspaceClient(): Promise<WorkspaceClient>;
25
+ /**
26
+ * Current Databricks username for workspace home paths
27
+ * (`/Workspace/Users/<userName>`).
28
+ *
29
+ * Prefers `userName` on the AppKit execution context when set, otherwise
30
+ * calls `currentUser.me()` on {@link client} (or {@link getWorkspaceClient}).
31
+ */
32
+ export declare function getCurrentUserName(client?: WorkspaceClient): Promise<string>;
33
+ /**
34
+ * Resolve the current workspace host as a `net.UrlBuilder`: the workspace
35
+ * `Config` host first, then the `DATABRICKS_HOST` env var, else `undefined`.
36
+ */
37
+ export declare function getWorkspaceUrl(): Promise<net.UrlBuilder | undefined>;
38
+ /**
39
+ * Resolve the numeric workspace id: the workspace `Config`'s `workspaceId`
40
+ * first, else the 10-20 digit run of `workspaceHost` (defaulting to
41
+ * {@link getWorkspaceUrl}'s host). `undefined` when neither yields an id.
42
+ */
43
+ export declare function getWorkspaceId(workspaceHost?: string): Promise<string | undefined>;
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Resolve the current Databricks workspace's URL, numeric id, and client from
3
+ * the active execution context (AppKit, when initialized), a default
4
+ * {@link WorkspaceClient}, or the environment. Server-only.
5
+ *
6
+ * @module
7
+ */
8
+ import { createWorkspaceClient, } from "@databricks/appkit";
9
+ import { appkit } from "@dbx-tools/appkit";
10
+ import { functionModule, net } from "@dbx-tools/shared-core";
11
+ /** Databricks workspace ids are a 10-20 digit run embedded in the host. */
12
+ const WORKSPACE_ID_REGEX = /\d{10,20}/;
13
+ /** Resolve AppKit's facade or an existing legacy client to the legacy SDK surface. */
14
+ export function toLegacyWorkspaceClient(client) {
15
+ return "toLegacyWorkspaceClient" in client ? client.toLegacyWorkspaceClient() : client;
16
+ }
17
+ /**
18
+ * Lazily-constructed default `WorkspaceClient` (env / profile auth), memoized so
19
+ * construction happens at most once per process. Used only when there's no
20
+ * AppKit execution context to borrow a client from.
21
+ */
22
+ const getDefaultWorkspaceClient = functionModule.memoize(async () => createWorkspaceClient().toLegacyWorkspaceClient());
23
+ /**
24
+ * The AppKit execution-context workspace client when available, otherwise
25
+ * `undefined`. Never constructs a fallback client and never throws for a
26
+ * missing AppKit scope.
27
+ */
28
+ export function tryGetWorkspaceClient() {
29
+ return appkit.tryGetExecutionContext()?.client.toLegacyWorkspaceClient();
30
+ }
31
+ /**
32
+ * Resolve a {@link WorkspaceClient}: {@link tryGetWorkspaceClient} first, else
33
+ * a memoized default client from env / profile auth.
34
+ */
35
+ export async function getWorkspaceClient() {
36
+ return tryGetWorkspaceClient() ?? (await getDefaultWorkspaceClient());
37
+ }
38
+ /**
39
+ * The active workspace `Config`: the AppKit execution-context client's config
40
+ * when AppKit is initialized, else the default client's. Returns `undefined`
41
+ * (never throws) when neither is available.
42
+ */
43
+ async function getWorkspaceConfig() {
44
+ try {
45
+ return (await getWorkspaceClient()).config;
46
+ }
47
+ catch {
48
+ return undefined;
49
+ }
50
+ }
51
+ /**
52
+ * Current Databricks username for workspace home paths
53
+ * (`/Workspace/Users/<userName>`).
54
+ *
55
+ * Prefers `userName` on the AppKit execution context when set, otherwise
56
+ * calls `currentUser.me()` on {@link client} (or {@link getWorkspaceClient}).
57
+ */
58
+ export async function getCurrentUserName(client) {
59
+ const contextUser = readContextUserName(appkit.tryGetExecutionContext());
60
+ if (contextUser)
61
+ return contextUser;
62
+ const resolved = client ?? (await getWorkspaceClient());
63
+ const me = await resolved.currentUser.me();
64
+ const userName = me.userName?.trim();
65
+ if (!userName) {
66
+ throw new Error("Databricks currentUser.me() did not return a userName");
67
+ }
68
+ return userName;
69
+ }
70
+ /** Best-effort `userName` off an AppKit execution context (shape varies by mode). */
71
+ function readContextUserName(ctx) {
72
+ if (typeof ctx !== "object" || ctx === null || !("userName" in ctx))
73
+ return undefined;
74
+ const value = ctx.userName;
75
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
76
+ }
77
+ /**
78
+ * Resolve the current workspace host as a `net.UrlBuilder`: the workspace
79
+ * `Config` host first, then the `DATABRICKS_HOST` env var, else `undefined`.
80
+ */
81
+ export async function getWorkspaceUrl() {
82
+ const config = await getWorkspaceConfig();
83
+ if (config) {
84
+ const configHost = net.urlBuilder(await config.getHost());
85
+ if (configHost)
86
+ return configHost;
87
+ }
88
+ const databricksHost = net.urlBuilder(process.env.DATABRICKS_HOST);
89
+ if (databricksHost)
90
+ return databricksHost;
91
+ return undefined;
92
+ }
93
+ /**
94
+ * Resolve the numeric workspace id: the workspace `Config`'s `workspaceId`
95
+ * first, else the 10-20 digit run of `workspaceHost` (defaulting to
96
+ * {@link getWorkspaceUrl}'s host). `undefined` when neither yields an id.
97
+ */
98
+ export async function getWorkspaceId(workspaceHost) {
99
+ const workspaceId = (await getWorkspaceConfig())?.workspaceId;
100
+ if (workspaceId)
101
+ return workspaceId;
102
+ workspaceHost = workspaceHost ?? (await getWorkspaceUrl())?.host;
103
+ if (workspaceHost) {
104
+ const match = workspaceHost.match(WORKSPACE_ID_REGEX)?.[0];
105
+ if (match)
106
+ return match;
107
+ }
108
+ return undefined;
109
+ }
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3dvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQ0wscUJBQXFCLEdBRXRCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0QsMkVBQTJFO0FBQzNFLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDO0FBTXZDLHNGQUFzRjtBQUN0RixNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLE1BQStDO0lBRS9DLE9BQU8seUJBQXlCLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3pGLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSx5QkFBeUIsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQ2xFLHFCQUFxQixFQUFFLENBQUMsdUJBQXVCLEVBQUUsQ0FDbEQsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQU8sTUFBTSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxDQUFDLHVCQUF1QixFQUFFLENBQUM7QUFDM0UsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsa0JBQWtCO0lBQ3RDLE9BQU8scUJBQXFCLEVBQUUsSUFBSSxDQUFDLE1BQU0seUJBQXlCLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsS0FBSyxVQUFVLGtCQUFrQjtJQUMvQixJQUFJLENBQUM7UUFDSCxPQUFPLENBQUMsTUFBTSxrQkFBa0IsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzdDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsa0JBQWtCLENBQUMsTUFBd0I7SUFDL0QsTUFBTSxXQUFXLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztJQUN6RSxJQUFJLFdBQVc7UUFBRSxPQUFPLFdBQVcsQ0FBQztJQUVwQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUN4RCxNQUFNLEVBQUUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDM0MsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNyQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxxRkFBcUY7QUFDckYsU0FBUyxtQkFBbUIsQ0FBQyxHQUFZO0lBQ3ZDLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUN0RixNQUFNLEtBQUssR0FBSSxHQUE4QixDQUFDLFFBQVEsQ0FBQztJQUN2RCxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzlFLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWU7SUFDbkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxrQkFBa0IsRUFBRSxDQUFDO0lBQzFDLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUQsSUFBSSxVQUFVO1lBQUUsT0FBTyxVQUFVLENBQUM7SUFDcEMsQ0FBQztJQUNELE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuRSxJQUFJLGNBQWM7UUFBRSxPQUFPLGNBQWMsQ0FBQztJQUMxQyxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUFDLGFBQXNCO0lBQ3pELE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBTSxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDO0lBQzlELElBQUksV0FBVztRQUFFLE9BQU8sV0FBVyxDQUFDO0lBQ3BDLGFBQWEsR0FBRyxhQUFhLElBQUksQ0FBQyxNQUFNLGVBQWUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDO0lBQ2pFLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlc29sdmUgdGhlIGN1cnJlbnQgRGF0YWJyaWNrcyB3b3Jrc3BhY2UncyBVUkwsIG51bWVyaWMgaWQsIGFuZCBjbGllbnQgZnJvbVxuICogdGhlIGFjdGl2ZSBleGVjdXRpb24gY29udGV4dCAoQXBwS2l0LCB3aGVuIGluaXRpYWxpemVkKSwgYSBkZWZhdWx0XG4gKiB7QGxpbmsgV29ya3NwYWNlQ2xpZW50fSwgb3IgdGhlIGVudmlyb25tZW50LiBTZXJ2ZXItb25seS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHtcbiAgY3JlYXRlV29ya3NwYWNlQ2xpZW50LFxuICB0eXBlIFdvcmtzcGFjZUNsaWVudCBhcyBBcHBLaXRXb3Jrc3BhY2VDbGllbnQsXG59IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGFwcGtpdCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdFwiO1xuaW1wb3J0IHsgZnVuY3Rpb25Nb2R1bGUsIG5ldCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5cbi8qKiBEYXRhYnJpY2tzIHdvcmtzcGFjZSBpZHMgYXJlIGEgMTAtMjAgZGlnaXQgcnVuIGVtYmVkZGVkIGluIHRoZSBob3N0LiAqL1xuY29uc3QgV09SS1NQQUNFX0lEX1JFR0VYID0gL1xcZHsxMCwyMH0vO1xuXG4vKiogTGVnYWN5IFNESyBjbGllbnQgZXhwb3NlZCBieSBBcHBLaXQgZm9yIEFQSXMgbm90IHlldCBvbiBpdHMgZmFjYWRlLiAqL1xuZXhwb3J0IHR5cGUgV29ya3NwYWNlQ2xpZW50ID0gUmV0dXJuVHlwZTxBcHBLaXRXb3Jrc3BhY2VDbGllbnRbXCJ0b0xlZ2FjeVdvcmtzcGFjZUNsaWVudFwiXT47XG50eXBlIENvbmZpZyA9IFdvcmtzcGFjZUNsaWVudFtcImNvbmZpZ1wiXTtcblxuLyoqIFJlc29sdmUgQXBwS2l0J3MgZmFjYWRlIG9yIGFuIGV4aXN0aW5nIGxlZ2FjeSBjbGllbnQgdG8gdGhlIGxlZ2FjeSBTREsgc3VyZmFjZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0xlZ2FjeVdvcmtzcGFjZUNsaWVudChcbiAgY2xpZW50OiBBcHBLaXRXb3Jrc3BhY2VDbGllbnQgfCBXb3Jrc3BhY2VDbGllbnQsXG4pOiBXb3Jrc3BhY2VDbGllbnQge1xuICByZXR1cm4gXCJ0b0xlZ2FjeVdvcmtzcGFjZUNsaWVudFwiIGluIGNsaWVudCA/IGNsaWVudC50b0xlZ2FjeVdvcmtzcGFjZUNsaWVudCgpIDogY2xpZW50O1xufVxuXG4vKipcbiAqIExhemlseS1jb25zdHJ1Y3RlZCBkZWZhdWx0IGBXb3Jrc3BhY2VDbGllbnRgIChlbnYgLyBwcm9maWxlIGF1dGgpLCBtZW1vaXplZCBzb1xuICogY29uc3RydWN0aW9uIGhhcHBlbnMgYXQgbW9zdCBvbmNlIHBlciBwcm9jZXNzLiBVc2VkIG9ubHkgd2hlbiB0aGVyZSdzIG5vXG4gKiBBcHBLaXQgZXhlY3V0aW9uIGNvbnRleHQgdG8gYm9ycm93IGEgY2xpZW50IGZyb20uXG4gKi9cbmNvbnN0IGdldERlZmF1bHRXb3Jrc3BhY2VDbGllbnQgPSBmdW5jdGlvbk1vZHVsZS5tZW1vaXplKGFzeW5jICgpID0+XG4gIGNyZWF0ZVdvcmtzcGFjZUNsaWVudCgpLnRvTGVnYWN5V29ya3NwYWNlQ2xpZW50KCksXG4pO1xuXG4vKipcbiAqIFRoZSBBcHBLaXQgZXhlY3V0aW9uLWNvbnRleHQgd29ya3NwYWNlIGNsaWVudCB3aGVuIGF2YWlsYWJsZSwgb3RoZXJ3aXNlXG4gKiBgdW5kZWZpbmVkYC4gTmV2ZXIgY29uc3RydWN0cyBhIGZhbGxiYWNrIGNsaWVudCBhbmQgbmV2ZXIgdGhyb3dzIGZvciBhXG4gKiBtaXNzaW5nIEFwcEtpdCBzY29wZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyeUdldFdvcmtzcGFjZUNsaWVudCgpOiBXb3Jrc3BhY2VDbGllbnQgfCB1bmRlZmluZWQge1xuICByZXR1cm4gYXBwa2l0LnRyeUdldEV4ZWN1dGlvbkNvbnRleHQoKT8uY2xpZW50LnRvTGVnYWN5V29ya3NwYWNlQ2xpZW50KCk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIHtAbGluayBXb3Jrc3BhY2VDbGllbnR9OiB7QGxpbmsgdHJ5R2V0V29ya3NwYWNlQ2xpZW50fSBmaXJzdCwgZWxzZVxuICogYSBtZW1vaXplZCBkZWZhdWx0IGNsaWVudCBmcm9tIGVudiAvIHByb2ZpbGUgYXV0aC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFdvcmtzcGFjZUNsaWVudCgpOiBQcm9taXNlPFdvcmtzcGFjZUNsaWVudD4ge1xuICByZXR1cm4gdHJ5R2V0V29ya3NwYWNlQ2xpZW50KCkgPz8gKGF3YWl0IGdldERlZmF1bHRXb3Jrc3BhY2VDbGllbnQoKSk7XG59XG5cbi8qKlxuICogVGhlIGFjdGl2ZSB3b3Jrc3BhY2UgYENvbmZpZ2A6IHRoZSBBcHBLaXQgZXhlY3V0aW9uLWNvbnRleHQgY2xpZW50J3MgY29uZmlnXG4gKiB3aGVuIEFwcEtpdCBpcyBpbml0aWFsaXplZCwgZWxzZSB0aGUgZGVmYXVsdCBjbGllbnQncy4gUmV0dXJucyBgdW5kZWZpbmVkYFxuICogKG5ldmVyIHRocm93cykgd2hlbiBuZWl0aGVyIGlzIGF2YWlsYWJsZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlQ29uZmlnKCk6IFByb21pc2U8Q29uZmlnIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChhd2FpdCBnZXRXb3Jrc3BhY2VDbGllbnQoKSkuY29uZmlnO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQ3VycmVudCBEYXRhYnJpY2tzIHVzZXJuYW1lIGZvciB3b3Jrc3BhY2UgaG9tZSBwYXRoc1xuICogKGAvV29ya3NwYWNlL1VzZXJzLzx1c2VyTmFtZT5gKS5cbiAqXG4gKiBQcmVmZXJzIGB1c2VyTmFtZWAgb24gdGhlIEFwcEtpdCBleGVjdXRpb24gY29udGV4dCB3aGVuIHNldCwgb3RoZXJ3aXNlXG4gKiBjYWxscyBgY3VycmVudFVzZXIubWUoKWAgb24ge0BsaW5rIGNsaWVudH0gKG9yIHtAbGluayBnZXRXb3Jrc3BhY2VDbGllbnR9KS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRVc2VyTmFtZShjbGllbnQ/OiBXb3Jrc3BhY2VDbGllbnQpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBjb250ZXh0VXNlciA9IHJlYWRDb250ZXh0VXNlck5hbWUoYXBwa2l0LnRyeUdldEV4ZWN1dGlvbkNvbnRleHQoKSk7XG4gIGlmIChjb250ZXh0VXNlcikgcmV0dXJuIGNvbnRleHRVc2VyO1xuXG4gIGNvbnN0IHJlc29sdmVkID0gY2xpZW50ID8/IChhd2FpdCBnZXRXb3Jrc3BhY2VDbGllbnQoKSk7XG4gIGNvbnN0IG1lID0gYXdhaXQgcmVzb2x2ZWQuY3VycmVudFVzZXIubWUoKTtcbiAgY29uc3QgdXNlck5hbWUgPSBtZS51c2VyTmFtZT8udHJpbSgpO1xuICBpZiAoIXVzZXJOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRGF0YWJyaWNrcyBjdXJyZW50VXNlci5tZSgpIGRpZCBub3QgcmV0dXJuIGEgdXNlck5hbWVcIik7XG4gIH1cbiAgcmV0dXJuIHVzZXJOYW1lO1xufVxuXG4vKiogQmVzdC1lZmZvcnQgYHVzZXJOYW1lYCBvZmYgYW4gQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IChzaGFwZSB2YXJpZXMgYnkgbW9kZSkuICovXG5mdW5jdGlvbiByZWFkQ29udGV4dFVzZXJOYW1lKGN0eDogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2YgY3R4ICE9PSBcIm9iamVjdFwiIHx8IGN0eCA9PT0gbnVsbCB8fCAhKFwidXNlck5hbWVcIiBpbiBjdHgpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCB2YWx1ZSA9IChjdHggYXMgeyB1c2VyTmFtZT86IHVua25vd24gfSkudXNlck5hbWU7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUudHJpbSgpID8gdmFsdWUudHJpbSgpIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIGN1cnJlbnQgd29ya3NwYWNlIGhvc3QgYXMgYSBgbmV0LlVybEJ1aWxkZXJgOiB0aGUgd29ya3NwYWNlXG4gKiBgQ29uZmlnYCBob3N0IGZpcnN0LCB0aGVuIHRoZSBgREFUQUJSSUNLU19IT1NUYCBlbnYgdmFyLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlVXJsKCk6IFByb21pc2U8bmV0LlVybEJ1aWxkZXIgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgY29uZmlnID0gYXdhaXQgZ2V0V29ya3NwYWNlQ29uZmlnKCk7XG4gIGlmIChjb25maWcpIHtcbiAgICBjb25zdCBjb25maWdIb3N0ID0gbmV0LnVybEJ1aWxkZXIoYXdhaXQgY29uZmlnLmdldEhvc3QoKSk7XG4gICAgaWYgKGNvbmZpZ0hvc3QpIHJldHVybiBjb25maWdIb3N0O1xuICB9XG4gIGNvbnN0IGRhdGFicmlja3NIb3N0ID0gbmV0LnVybEJ1aWxkZXIocHJvY2Vzcy5lbnYuREFUQUJSSUNLU19IT1NUKTtcbiAgaWYgKGRhdGFicmlja3NIb3N0KSByZXR1cm4gZGF0YWJyaWNrc0hvc3Q7XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgbnVtZXJpYyB3b3Jrc3BhY2UgaWQ6IHRoZSB3b3Jrc3BhY2UgYENvbmZpZ2AncyBgd29ya3NwYWNlSWRgXG4gKiBmaXJzdCwgZWxzZSB0aGUgMTAtMjAgZGlnaXQgcnVuIG9mIGB3b3Jrc3BhY2VIb3N0YCAoZGVmYXVsdGluZyB0b1xuICoge0BsaW5rIGdldFdvcmtzcGFjZVVybH0ncyBob3N0KS4gYHVuZGVmaW5lZGAgd2hlbiBuZWl0aGVyIHlpZWxkcyBhbiBpZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFdvcmtzcGFjZUlkKHdvcmtzcGFjZUhvc3Q/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCB3b3Jrc3BhY2VJZCA9IChhd2FpdCBnZXRXb3Jrc3BhY2VDb25maWcoKSk/LndvcmtzcGFjZUlkO1xuICBpZiAod29ya3NwYWNlSWQpIHJldHVybiB3b3Jrc3BhY2VJZDtcbiAgd29ya3NwYWNlSG9zdCA9IHdvcmtzcGFjZUhvc3QgPz8gKGF3YWl0IGdldFdvcmtzcGFjZVVybCgpKT8uaG9zdDtcbiAgaWYgKHdvcmtzcGFjZUhvc3QpIHtcbiAgICBjb25zdCBtYXRjaCA9IHdvcmtzcGFjZUhvc3QubWF0Y2goV09SS1NQQUNFX0lEX1JFR0VYKT8uWzBdO1xuICAgIGlmIChtYXRjaCkgcmV0dXJuIG1hdGNoO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ {"root":["../src/cloud.ts","../src/databricks-fs.ts","../src/databricks-path.ts","../src/net.ts","../src/workspace.ts","../index.ts"],"version":"5.9.3"}
package/package.json CHANGED
@@ -1,28 +1,55 @@
1
1
  {
2
2
  "name": "@dbx-tools/databricks",
3
- "description": "Databricks workspace, filesystem, cloud, runtime, and CLI utilities",
3
+ "description": "Databricks workspace, filesystem, cloud, and network utilities",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/reggie-db/dbx-tools.git",
7
7
  "directory": "packages/js/node/databricks"
8
8
  },
9
+ "scripts": {
10
+ "build": "projen build",
11
+ "compile": "projen compile",
12
+ "default": "projen default",
13
+ "package": "projen package",
14
+ "post-compile": "projen post-compile",
15
+ "pre-compile": "projen pre-compile",
16
+ "prepack": "projen prepack",
17
+ "test": "projen test",
18
+ "watch": "projen watch",
19
+ "projen": "projen"
20
+ },
21
+ "devDependencies": {
22
+ "@types/bun": "1.3.14",
23
+ "@types/node": "^24.6.0",
24
+ "typescript": "^5.9.3"
25
+ },
9
26
  "dependencies": {
10
27
  "@databricks/appkit": "^0.60.0",
11
- "@dbx-tools/appkit": "0.6.186",
12
- "@dbx-tools/core": "0.6.186",
13
- "@dbx-tools/shared-core": "0.6.186",
14
- "@dbx-tools/shared-fs": "0.6.186",
15
- "@ubjs/core": "0.31.0-5",
16
- "@ubjs/node": "0.31.0-5"
28
+ "@dbx-tools/appkit": "0.6.191",
29
+ "@dbx-tools/core": "0.6.191",
30
+ "@dbx-tools/shared-core": "0.6.191",
31
+ "@dbx-tools/shared-fs": "0.6.191"
17
32
  },
18
33
  "main": "./lib/index.js",
19
- "license": "Apache-2.0",
20
- "version": "0.6.186",
21
- "types": "./index.ts",
34
+ "license": "UNLICENSED",
35
+ "publishConfig": {
36
+ "access": "public",
37
+ "main": "./lib/index.js",
38
+ "types": "./lib/index.d.ts",
39
+ "exports": {
40
+ ".": {
41
+ "types": "./lib/index.d.ts",
42
+ "default": "./lib/index.js"
43
+ },
44
+ "./package.json": "./package.json"
45
+ }
46
+ },
47
+ "version": "0.6.191",
48
+ "types": "./lib/index.d.ts",
22
49
  "type": "module",
23
50
  "exports": {
24
51
  ".": {
25
- "types": "./index.ts",
52
+ "types": "./lib/index.d.ts",
26
53
  "default": "./lib/index.js"
27
54
  },
28
55
  "./package.json": "./package.json"
@@ -32,19 +59,10 @@
32
59
  "src",
33
60
  "lib"
34
61
  ],
35
- "optionalDependencies": {
36
- "@dbx-tools/databricks-linux-x64-gnu": "0.6.186",
37
- "@dbx-tools/databricks-linux-arm64-gnu": "0.6.186",
38
- "@dbx-tools/databricks-darwin-x64": "0.6.186",
39
- "@dbx-tools/databricks-darwin-arm64": "0.6.186",
40
- "@dbx-tools/databricks-win32-x64-msvc": "0.6.186"
41
- },
42
62
  "dbxToolsConfig": {
43
- "uniffi": true,
44
63
  "tags": [
45
64
  "node"
46
65
  ]
47
66
  },
48
- "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"bunx projen\".",
49
- "private": false
67
+ "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"bunx projen\"."
50
68
  }