Repository navigation
feat(shared): migrate currentUser to the modular @databricks/sdk-scim client - #645
MarioCadenas wants to merge 2 commits into
Conversation
… client
The facade's currentUser accessor now returns a lazily built ScimClient
(sdk-scim 0.51.0, same core/auth/options 0.51.0) via mapToClientOptions,
so SP and OBO auth resolve exactly like warehouses/statementExecution.
Legacy currentUser.me() becomes ScimClient.me({}); it hits the same
/api/2.0/preview/scim/v2/Me endpoint and the unmarshal keeps id and
userName, the only fields AppKit reads. The CLI doctor check and the
lakebase connector stay on the legacy client.
Co-authored-by: Isaac <no-reply@databricks.com>
Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
8fbd7cd to
34441ae
Compare
📦 Bundle size reportCompared against
|
| dist | raw | gzip |
|---|---|---|
| JS (runtime) | 1.2 MB (+12 KB) | 452 KB (+4.7 KB) |
| Type declarations | 459 KB (+3.6 KB) | 167 KB (+1.4 KB) |
| Source maps | 2.5 MB (+24 KB) | 846 KB (+8.4 KB) |
| Other | 11 KB | 3.7 KB |
| Total | 4.2 MB (+39 KB) | 1.4 MB (+15 KB) |
Per-entry composition (own code — deps external (as shipped))
| Entry | Initial (gz) | Lazy (gz) | Total (gz) | node_modules (min) | Own code (min) |
|---|---|---|---|---|---|
. |
103 KB (+1.1 KB) | 2.5 KB | 106 KB (+1.1 KB) | external | 334 KB (+2.9 KB) |
./beta |
100 KB (+1.0 KB) | 485 B (+1 B) | 100 KB (+1.0 KB) | external | 300 KB (+2.7 KB) |
./testing |
43 KB (+1.1 KB) | 32 KB (+3 B) | 75 KB (+1.1 KB) | external | 218 KB (+3.2 KB) |
./tsdown |
520 B | 0 B | 520 B | external | 813 B |
./type-generator |
24 KB (+1.0 KB) | 0 B | 24 KB (+1.0 KB) | external | 69 KB (+2.9 KB) |
Chunks:
| Entry | Chunk | Load | Size (gz) |
|---|---|---|---|
. |
index.js |
initial | 99 KB |
. |
utils.js |
initial | 4.6 KB |
. |
remote-tunnel-manager.js |
lazy | 2.5 KB |
./beta |
beta.js |
initial | 81 KB |
./beta |
stream-manager.js |
initial | 5.9 KB |
./beta |
modular.js |
initial | 4.3 KB |
./beta |
service-context.js |
initial | 4.2 KB |
./beta |
databricks.js |
initial | 3.3 KB |
./beta |
client.js |
initial | 595 B |
./beta |
index.js |
initial | 20 B |
./beta |
supervisor-api.js |
lazy | 193 B |
./beta |
databricks.js |
lazy | 178 B |
./beta |
index.js |
lazy | 114 B |
./testing |
manifest.js |
initial | 30 KB |
./testing |
index.js |
initial | 10 KB |
./testing |
wide-event-emitter.js |
initial | 2.9 KB |
./testing |
index.js |
lazy | 28 KB |
./testing |
remote-tunnel-manager.js |
lazy | 2.5 KB |
./testing |
utils.js |
lazy | 1.8 KB |
./tsdown |
index.js |
initial | 520 B |
./type-generator |
index.js |
initial | 24 KB |
@databricks/appkit-ui
npm tarball (packed): 397 KB (+106 B) — gzipped download (dist + bin; excludes release-only docs/NOTICE).
| dist | raw | gzip |
|---|---|---|
| JS (runtime) | 428 KB | 146 KB |
| Type declarations | 266 KB (+225 B) | 98 KB (+126 B) |
| Source maps | 852 KB | 285 KB |
| CSS | 16 KB | 3.2 KB |
| Total | 1.5 MB (+225 B) | 533 KB (+126 B) |
Per-entry composition (consumer bundle — deps bundled, peerDeps external)
| Entry | Initial (gz) | Lazy (gz) | Total (gz) | node_modules (min) | Own code (min) |
|---|---|---|---|---|---|
./js |
5.3 KB | 49 KB | 55 KB | 208 KB | 14 KB |
./js/beta |
2.1 KB | 0 B | 2.1 KB | 0 B | 5.0 KB |
./react |
433 KB | 49 KB | 481 KB | 1.3 MB | 177 KB |
./react/beta |
4.9 KB | 0 B | 4.9 KB | 0 B | 12 KB |
Chunks:
| Entry | Chunk | Load | Size (gz) |
|---|---|---|---|
./js |
index.js |
initial | 5.2 KB |
./js |
chunk |
initial | 120 B |
./js |
apache-arrow |
lazy | 49 KB |
./js/beta |
beta.js |
initial | 2.1 KB |
./react |
index.js |
initial | 431 KB |
./react |
tslib |
initial | 2.1 KB |
./react |
apache-arrow |
lazy | 49 KB |
./react/beta |
beta.js |
initial | 4.9 KB |
| await Promise.all([ | ||
| ServiceContext.getWorkspaceId(wsClient), | ||
| wsClient.currentUser.me(), | ||
| wsClient.currentUser.me({}), |
There was a problem hiding this comment.
[SDK improvement] would be nice if .me({}) already had the object as a default and could be called empty without the empty object like currentUser.me()
🤖 AppKit PR bot🔬 Run evalsStart an eval for this PR from the evals-monitor app: Go to Evals Monitor → 📦 Try this PR's app templateScaffolds a new app from this PR's SDK build. Run it in any folder (requires the GitHub CLI — gh run download 37949487935 -R databricks/appkit -n appkit-template-0.87.0-pr.bea649b-feat-modular-currentuser-645 -D appkit-pr-645 \
&& unzip -o "appkit-pr-645/appkit-template-0.87.0-pr.bea649b-feat-modular-currentuser-645.zip" -d "appkit-pr-645" \
&& databricks apps init --template "appkit-pr-645"The template pins |
createCallerContext fell back to the legacy SDK Config.host in development,
which the legacy client fills only after its first API call. With
currentUser.me() and the rest of startup on the modular SDK, no legacy call
happens, so profile-only setups (no DATABRICKS_HOST) threw
missingEnvVar("DATABRICKS_HOST") on every asUser call.
Resolve the host once at init with wsClient.getHost() (local, profile-aware)
and use it as the same dev-only fallback. A getHost() failure leaves it unset
so callers keep getting missingEnvVar instead of failing startup.
Co-authored-by: Isaac <no-reply@databricks.com>
Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
Part of the migration off
@databricks/sdk-experimentalonto the modular@databricks/sdk-*SDK (see #562). Base:analytics-migration-sdk.Changes
feat(shared): migrate currentUser to the modular @databricks/sdk-scim client
The facade's currentUser accessor now returns a lazily built ScimClient
(sdk-scim 0.51.0, same core/auth/options 0.51.0) via mapToClientOptions,
so SP and OBO auth resolve exactly like warehouses/statementExecution.
Legacy currentUser.me() becomes ScimClient.me({}); it hits the same
/api/2.0/preview/scim/v2/Me endpoint and the unmarshal keeps id and
userName, the only fields AppKit reads. The CLI doctor check and the
lakebase connector stay on the legacy client.
Draft: implemented by an agent; needs review and a deployed SP + OBO check before it's marked ready.
This pull request and its description were written by Isaac.