@dbx-tools/shared-lakebox 0.9.131 → 0.9.132
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 +59 -5
- package/index.ts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Browser-safe Zod contracts and route builders for the app Lakebox: lifecycle
|
|
4
4
|
summaries, the current user's account, services, commands, logs, and metrics.
|
|
5
5
|
|
|
6
|
-
## Validate a service
|
|
6
|
+
## Validate a service definition
|
|
7
7
|
|
|
8
8
|
```ts
|
|
9
9
|
import { createLakeboxServiceRequestSchema } from "@dbx-tools/shared-lakebox";
|
|
@@ -19,16 +19,70 @@ Parsing applies defaults (`route: true`, `stripPrefix: true`,
|
|
|
19
19
|
`SERVICE_PATH`, `SERVICE_PORT`, `PORT`), Databricks credentials, built-in
|
|
20
20
|
service names, and mount sources outside the user's home.
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
For a routed service, the process inside the image must listen on
|
|
23
|
+
`127.0.0.1:$SERVICE_PORT`. The schema doesn't support Docker-style port
|
|
24
|
+
publishing, privileged mode, devices, or absolute host mount paths.
|
|
25
|
+
|
|
26
|
+
## Build API and service URLs
|
|
27
|
+
|
|
28
|
+
Accept the plugin's published client configuration as an input and derive every
|
|
29
|
+
route from the shared constants:
|
|
23
30
|
|
|
24
31
|
```ts
|
|
25
|
-
import { LAKEBOX_ROUTES, lakeboxRoute } from "@dbx-tools/shared-lakebox";
|
|
32
|
+
import { LAKEBOX_ROUTES, lakeboxRoute, type LakeboxClientConfig } from "@dbx-tools/shared-lakebox";
|
|
26
33
|
import { lakeboxServicePath } from "@dbx-tools/shared-lakebox/client";
|
|
27
34
|
|
|
28
|
-
|
|
29
|
-
|
|
35
|
+
export function lakeboxUrls(config: LakeboxClientConfig, userHash: string, serviceName: string) {
|
|
36
|
+
return {
|
|
37
|
+
start: `${config.basePath}${lakeboxRoute(LAKEBOX_ROUTES.serviceStart, {
|
|
38
|
+
name: serviceName,
|
|
39
|
+
})}`,
|
|
40
|
+
open: lakeboxServicePath(config.routePrefix, userHash, serviceName),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
30
43
|
```
|
|
31
44
|
|
|
32
45
|
Read `basePath` and `routePrefix` from the plugin's published client config and
|
|
33
46
|
derive every endpoint from `LAKEBOX_ROUTES`. Service routes are
|
|
34
47
|
`<routePrefix>/<user hash>/<service>`.
|
|
48
|
+
|
|
49
|
+
## Validate server responses
|
|
50
|
+
|
|
51
|
+
Parse server responses before storing or rendering them:
|
|
52
|
+
|
|
53
|
+
```ts
|
|
54
|
+
import {
|
|
55
|
+
LAKEBOX_ROUTES,
|
|
56
|
+
lakeboxMetricsResponseSchema,
|
|
57
|
+
lakeboxSummarySchema,
|
|
58
|
+
type LakeboxClientConfig,
|
|
59
|
+
} from "@dbx-tools/shared-lakebox";
|
|
60
|
+
|
|
61
|
+
export async function readLakebox(config: LakeboxClientConfig) {
|
|
62
|
+
const [statusResponse, metricsResponse] = await Promise.all([
|
|
63
|
+
fetch(`${config.basePath}${LAKEBOX_ROUTES.status}`),
|
|
64
|
+
fetch(`${config.basePath}${LAKEBOX_ROUTES.metrics}`),
|
|
65
|
+
]);
|
|
66
|
+
return {
|
|
67
|
+
summary: lakeboxSummarySchema.parse(await statusResponse.json()),
|
|
68
|
+
metrics: lakeboxMetricsResponseSchema.parse(await metricsResponse.json()),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
The contracts cover lifecycle state, service state, bounded logs, command
|
|
74
|
+
results, and machine-level CPU, memory, storage, and network metrics. They
|
|
75
|
+
don't contain Databricks credentials or request identity tokens.
|
|
76
|
+
|
|
77
|
+
## Use the contract boundaries
|
|
78
|
+
|
|
79
|
+
- `LAKEBOX_ROUTES` contains plugin API templates. Use `lakeboxRoute()` to encode
|
|
80
|
+
named route parameters.
|
|
81
|
+
- `lakeboxServicePath()` builds the authenticated reverse-proxy route for one
|
|
82
|
+
user and service.
|
|
83
|
+
- `CreateLakeboxServiceRequest` is the caller input type.
|
|
84
|
+
`LakeboxServiceDefinition` is the parsed type with defaults applied.
|
|
85
|
+
- Log requests default to 200 lines and 16,000 characters.
|
|
86
|
+
- Service names `terminal` and `desktop` are reserved for built-in services.
|
|
87
|
+
- The browser contract doesn't implement lifecycle, authentication, SSH, or
|
|
88
|
+
React state. Those capabilities live in the Node and UI packages.
|
package/index.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-lakebox";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.132";
|
|
7
7
|
export * as client from "./src/client.ts";
|
|
8
8
|
export * as schemas from "./src/schemas.ts";
|
|
9
9
|
export { LAKEBOX_PLUGIN_NAME, LAKEBOX_DEFAULT_BASE_PATH, LAKEBOX_DEFAULT_ROUTE_PREFIX, LAKEBOX_ROUTES, LakeboxClientConfigSchema, lakeboxRoute } from "./src/client.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/shared-lakebox";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.132";
|
|
3
3
|
export * as client from "./src/client.ts";
|
|
4
4
|
export * as schemas from "./src/schemas.ts";
|
|
5
5
|
export { LAKEBOX_PLUGIN_NAME, LAKEBOX_DEFAULT_BASE_PATH, LAKEBOX_DEFAULT_ROUTE_PREFIX, LAKEBOX_ROUTES, LakeboxClientConfigSchema, lakeboxRoute } from "./src/client.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
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/shared-lakebox";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.132";
|
|
6
6
|
export * as client from "./src/client.js";
|
|
7
7
|
export * as schemas from "./src/schemas.js";
|
|
8
8
|
export { LAKEBOX_PLUGIN_NAME, LAKEBOX_DEFAULT_BASE_PATH, LAKEBOX_DEFAULT_ROUTE_PREFIX, LAKEBOX_ROUTES, LakeboxClientConfigSchema, lakeboxRoute } from "./src/client.js";
|
|
9
9
|
export { lakeboxStatusSchema, lakeboxUserSchema, LAKEBOX_BUILT_IN_SERVICES, lakeboxBuiltInServiceNameSchema, LAKEBOX_RESERVED_SERVICE_ENV, lakeboxServiceNameSchema, lakeboxServiceStateSchema, lakeboxServiceKindSchema, lakeboxServiceSchema, lakeboxSummarySchema, lakeboxCommandRequestSchema, lakeboxCommandResultSchema, lakeboxServiceMountSchema, createLakeboxServiceRequestSchema, lakeboxServiceActionSchema, LAKEBOX_LOG_DEFAULT_MAX_LINES, LAKEBOX_LOG_DEFAULT_MAX_CHARS, lakeboxServiceLogsRequestSchema, lakeboxServiceLogsResponseSchema, lakeboxServicesResponseSchema, lakeboxServiceResponseSchema, removeLakeboxServiceResponseSchema, lakeboxMetricsSnapshotSchema, lakeboxMetricsResponseSchema, getLakeboxOperationSchema, executeLakeboxCommandOperationSchema, listLakeboxServicesOperationSchema, createLakeboxServiceOperationSchema, startLakeboxServiceOperationSchema, stopLakeboxServiceOperationSchema, removeLakeboxServiceOperationSchema, getLakeboxServiceLogsOperationSchema } from "./src/schemas.js";
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRywyQkFBMkIsQ0FBQztBQUM5RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUseUJBQXlCLEVBQUUsNEJBQTRCLEVBQUUsY0FBYyxFQUFFLHlCQUF5QixFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXhLLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSwrQkFBK0IsRUFBRSw0QkFBNEIsRUFBRSx3QkFBd0IsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSwyQkFBMkIsRUFBRSwwQkFBMEIsRUFBRSx5QkFBeUIsRUFBRSxpQ0FBaUMsRUFBRSwwQkFBMEIsRUFBRSw2QkFBNkIsRUFBRSw2QkFBNkIsRUFBRSwrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBRSw2QkFBNkIsRUFBRSw0QkFBNEIsRUFBRSxrQ0FBa0MsRUFBRSw0QkFBNEIsRUFBRSw0QkFBNEIsRUFBRSx5QkFBeUIsRUFBRSxvQ0FBb0MsRUFBRSxrQ0FBa0MsRUFBRSxtQ0FBbUMsRUFBRSxrQ0FBa0MsRUFBRSxpQ0FBaUMsRUFBRSxtQ0FBbUMsRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9zaGFyZWQtbGFrZWJveFwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjEzMlwiO1xuZXhwb3J0ICogYXMgY2xpZW50IGZyb20gXCIuL3NyYy9jbGllbnQudHNcIjtcbmV4cG9ydCAqIGFzIHNjaGVtYXMgZnJvbSBcIi4vc3JjL3NjaGVtYXMudHNcIjtcbmV4cG9ydCB7IExBS0VCT1hfUExVR0lOX05BTUUsIExBS0VCT1hfREVGQVVMVF9CQVNFX1BBVEgsIExBS0VCT1hfREVGQVVMVF9ST1VURV9QUkVGSVgsIExBS0VCT1hfUk9VVEVTLCBMYWtlYm94Q2xpZW50Q29uZmlnU2NoZW1hLCBsYWtlYm94Um91dGUgfSBmcm9tIFwiLi9zcmMvY2xpZW50LnRzXCI7XG5leHBvcnQgdHlwZSB7IExha2Vib3hDbGllbnRDb25maWcsIExha2Vib3hDbGllbnRDb25maWdJbnB1dCB9IGZyb20gXCIuL3NyYy9jbGllbnQudHNcIjtcbmV4cG9ydCB7IGxha2Vib3hTdGF0dXNTY2hlbWEsIGxha2Vib3hVc2VyU2NoZW1hLCBMQUtFQk9YX0JVSUxUX0lOX1NFUlZJQ0VTLCBsYWtlYm94QnVpbHRJblNlcnZpY2VOYW1lU2NoZW1hLCBMQUtFQk9YX1JFU0VSVkVEX1NFUlZJQ0VfRU5WLCBsYWtlYm94U2VydmljZU5hbWVTY2hlbWEsIGxha2Vib3hTZXJ2aWNlU3RhdGVTY2hlbWEsIGxha2Vib3hTZXJ2aWNlS2luZFNjaGVtYSwgbGFrZWJveFNlcnZpY2VTY2hlbWEsIGxha2Vib3hTdW1tYXJ5U2NoZW1hLCBsYWtlYm94Q29tbWFuZFJlcXVlc3RTY2hlbWEsIGxha2Vib3hDb21tYW5kUmVzdWx0U2NoZW1hLCBsYWtlYm94U2VydmljZU1vdW50U2NoZW1hLCBjcmVhdGVMYWtlYm94U2VydmljZVJlcXVlc3RTY2hlbWEsIGxha2Vib3hTZXJ2aWNlQWN0aW9uU2NoZW1hLCBMQUtFQk9YX0xPR19ERUZBVUxUX01BWF9MSU5FUywgTEFLRUJPWF9MT0dfREVGQVVMVF9NQVhfQ0hBUlMsIGxha2Vib3hTZXJ2aWNlTG9nc1JlcXVlc3RTY2hlbWEsIGxha2Vib3hTZXJ2aWNlTG9nc1Jlc3BvbnNlU2NoZW1hLCBsYWtlYm94U2VydmljZXNSZXNwb25zZVNjaGVtYSwgbGFrZWJveFNlcnZpY2VSZXNwb25zZVNjaGVtYSwgcmVtb3ZlTGFrZWJveFNlcnZpY2VSZXNwb25zZVNjaGVtYSwgbGFrZWJveE1ldHJpY3NTbmFwc2hvdFNjaGVtYSwgbGFrZWJveE1ldHJpY3NSZXNwb25zZVNjaGVtYSwgZ2V0TGFrZWJveE9wZXJhdGlvblNjaGVtYSwgZXhlY3V0ZUxha2Vib3hDb21tYW5kT3BlcmF0aW9uU2NoZW1hLCBsaXN0TGFrZWJveFNlcnZpY2VzT3BlcmF0aW9uU2NoZW1hLCBjcmVhdGVMYWtlYm94U2VydmljZU9wZXJhdGlvblNjaGVtYSwgc3RhcnRMYWtlYm94U2VydmljZU9wZXJhdGlvblNjaGVtYSwgc3RvcExha2Vib3hTZXJ2aWNlT3BlcmF0aW9uU2NoZW1hLCByZW1vdmVMYWtlYm94U2VydmljZU9wZXJhdGlvblNjaGVtYSwgZ2V0TGFrZWJveFNlcnZpY2VMb2dzT3BlcmF0aW9uU2NoZW1hIH0gZnJvbSBcIi4vc3JjL3NjaGVtYXMudHNcIjtcbmV4cG9ydCB0eXBlIHsgTGFrZWJveFN0YXR1cywgTGFrZWJveFVzZXIsIExha2Vib3hCdWlsdEluU2VydmljZU5hbWUsIExha2Vib3hTZXJ2aWNlU3RhdGUsIExha2Vib3hTZXJ2aWNlS2luZCwgTGFrZWJveFNlcnZpY2UsIExha2Vib3hTdW1tYXJ5LCBMYWtlYm94Q29tbWFuZFJlcXVlc3QsIExha2Vib3hDb21tYW5kUmVzdWx0LCBMYWtlYm94U2VydmljZU1vdW50LCBDcmVhdGVMYWtlYm94U2VydmljZVJlcXVlc3QsIExha2Vib3hTZXJ2aWNlRGVmaW5pdGlvbiwgTGFrZWJveFNlcnZpY2VBY3Rpb24sIExha2Vib3hTZXJ2aWNlTG9nc1JlcXVlc3QsIExha2Vib3hTZXJ2aWNlTG9nc1Jlc3BvbnNlLCBMYWtlYm94U2VydmljZXNSZXNwb25zZSwgTGFrZWJveFNlcnZpY2VSZXNwb25zZSwgUmVtb3ZlTGFrZWJveFNlcnZpY2VSZXNwb25zZSwgTGFrZWJveE1ldHJpY3NTbmFwc2hvdCwgTGFrZWJveE1ldHJpY3NSZXNwb25zZSB9IGZyb20gXCIuL3NyYy9zY2hlbWFzLnRzXCI7XG4iXX0=
|