@salesforce/platform-sdk 11.5.0 → 11.7.0

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.
@@ -7,7 +7,7 @@ export { Surface, getVerifiedSurface, initialize, isSfEmbeddingIframe, resetSurf
7
7
  export type { InitializeOptions } from './surface';
8
8
  export type { SDKOptions } from './options';
9
9
  export type { HostContext, HostStyles, ChatMessage, ChatSDK, ContentBlock, DeviceCapabilities, DisplayMode, ResourceRequest, SafeAreaInsets, SetWidgetStateOptions, ToolCall, ToolState, } from './chat';
10
- export type { AlertOptions, MessageLevel, ModalOptions, ToastOptions, Theme, ThemeMode, ViewSDK, } from './view';
10
+ export type { AlertOptions, MessageLevel, ModalOptions, ToastOptions, Theme, ThemeMode, UiState, UiStyles, ViewSDK, } from './view';
11
11
  export type { CacheControl, DataSDK, DataSDKGraphQL, GraphQLError, GraphQLRawDocument, GraphQLRequest, GraphQLResponse, MutateOptions, MutationResult, QueryOptions, QueryResult, QuerySubscriber, Unsubscribe, } from './data';
12
12
  export type { LightningSDK, LMSMessage, LMSSubscription, MessageChannel } from './lightning';
13
13
  export type { OpenAISDK } from './platforms';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACN,OAAO,EACP,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACnB,YAAY,GACZ,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAGnD,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C,YAAY,EACX,WAAW,EACX,UAAU,EACV,WAAW,EACX,OAAO,EACP,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,QAAQ,EACR,SAAS,GACT,MAAM,QAAQ,CAAC;AAGhB,YAAY,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,SAAS,EACT,OAAO,GACP,MAAM,QAAQ,CAAC;AAGhB,YAAY,EACX,YAAY,EACZ,OAAO,EACP,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,YAAY,EACZ,WAAW,EACX,eAAe,EACf,WAAW,GACX,MAAM,QAAQ,CAAC;AAGhB,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7F,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAGnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACN,OAAO,EACP,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACnB,YAAY,GACZ,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAGnD,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C,YAAY,EACX,WAAW,EACX,UAAU,EACV,WAAW,EACX,OAAO,EACP,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,QAAQ,EACR,SAAS,GACT,MAAM,QAAQ,CAAC;AAGhB,YAAY,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,SAAS,EACT,OAAO,EACP,QAAQ,EACR,OAAO,GACP,MAAM,QAAQ,CAAC;AAGhB,YAAY,EACX,YAAY,EACZ,OAAO,EACP,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,YAAY,EACZ,WAAW,EACX,eAAe,EACf,WAAW,GACX,MAAM,QAAQ,CAAC;AAGhB,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7F,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAGnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
@@ -3,6 +3,34 @@
3
3
  * All rights reserved.
4
4
  * For full license text, see the LICENSE.txt file
5
5
  */
6
+ /**
7
+ * CSS-adjacent styling the host publishes for the embedded surface.
8
+ *
9
+ * `variables` are CSS custom properties (`--*`) read off the host element's inline
10
+ * style; `attributes` are mirrored a11y/i18n/input attributes from the host LWC.
11
+ */
12
+ export interface UiStyles {
13
+ variables?: Record<string, string>;
14
+ attributes?: Record<string, string>;
15
+ }
16
+ /**
17
+ * Host → embedding rendering snapshot exposed to bundles via {@link ViewSDK.getUiState}.
18
+ *
19
+ * `props` are host-configurable inputs (theme, locale, mode, etc.); `styles` are the
20
+ * CSS custom properties and attributes the host wants mirrored onto the surface.
21
+ *
22
+ * Declared locally (not re-exported from `@salesforce/sf-embedding-bridge`) to keep the
23
+ * wire-layer package off the SDK's public type graph; the shape mirrors the bridge's, so
24
+ * surface-side code assigns without a cast.
25
+ *
26
+ * This is the open, fully-permissive shape. A bundle that knows its host contract can
27
+ * declare a narrower type that `extends UiState` (tighter `props`/`styles`) and pass it to
28
+ * {@link ViewSDK.getUiState}'s single type parameter for precise typing.
29
+ */
30
+ export interface UiState {
31
+ props: Record<string, unknown>;
32
+ styles: UiStyles;
33
+ }
6
34
  /**
7
35
  * Theme mode
8
36
  */
@@ -245,32 +273,50 @@ export type ViewSDK = Partial<EventTarget> & {
245
273
  */
246
274
  clearDirtyState?(label?: string): Promise<void>;
247
275
  /**
248
- * Get UI properties from the host and subscribe to changes
276
+ * Get the current host UI state and a `subscribe` function for future changes.
249
277
  *
250
- * Returns an object containing a promise for the initial props and a subscribe
251
- * function to listen for prop updates. UI props allow the host to configure
252
- * the application's appearance or behavior dynamically.
278
+ * Returns the latest known snapshot synchronously the underlying wire subscription is
279
+ * opened once, is session-scoped, and is shared across every caller ({@link getTheme} is
280
+ * its synchronous sibling). Call `subscribe` with a handler to be notified on every
281
+ * subsequent host push; `subscribe` returns an `unsubscribe` function that detaches that
282
+ * one handler. Detaching is local fan-out only — the shared wire subscription stays open.
253
283
  *
254
- * @returns Object with props promise and subscribe function
284
+ * The optional `State` type parameter describes the host contract this caller expects:
285
+ * pass a type that `extends UiState` (narrower `props`/`styles`) and both `state` and the
286
+ * `subscribe` handler's argument are typed as it. It defaults to the open {@link UiState},
287
+ * so `getUiState()` with no type argument is the fully-permissive snapshot. `State` is
288
+ * erased at runtime — purely a compile-time convenience, so pin only what the host
289
+ * actually guarantees.
290
+ *
291
+ * @typeParam State - The expected snapshot shape; must extend {@link UiState}.
292
+ * @returns `{ state, subscribe }` — the current snapshot and a subscribe function whose
293
+ * return value is the per-handler `unsubscribe`.
255
294
  *
256
295
  * @example
257
296
  * ```typescript
258
- * const uiProps = viewSDK.getUiProps?.();
259
- *
260
- * // Get initial props
261
- * const initialProps = await uiProps.props;
262
- * console.log('Theme:', initialProps.theme);
263
- *
264
- * // Subscribe to prop changes
265
- * uiProps.subscribe((newProps) => {
266
- * console.log('Props updated:', newProps);
267
- * // Update UI based on new props
268
- * });
297
+ * // Untyped the permissive default.
298
+ * const { state, subscribe } = viewSDK.getUiState?.() ?? {
299
+ * state: { props: {}, styles: {} },
300
+ * subscribe: () => () => {},
301
+ * };
302
+ * applyProps(state.props);
303
+ * const unsubscribe = subscribe((next) => applyProps(next.props));
304
+ * unsubscribe(); // later, when the caller no longer cares
305
+ *
306
+ * // Typed pin the exact snapshot the host guarantees.
307
+ * interface MyUiState extends UiState {
308
+ * props: { theme: "light" | "dark" };
309
+ * styles: { variables?: { "--accent": string } };
310
+ * }
311
+ * const { state } = viewSDK.getUiState?.<MyUiState>() ??
312
+ * { state: { props: { theme: "light" }, styles: {} } };
313
+ * state.props.theme; // "light" | "dark"
314
+ * state.styles.variables?.["--accent"]; // string | undefined
269
315
  * ```
270
316
  */
271
- getUiProps?(): {
272
- props: Promise<Record<string, unknown>>;
273
- subscribe: (callback: (props: Record<string, unknown>) => void) => void;
317
+ getUiState?<State extends UiState = UiState>(): {
318
+ state: State;
319
+ subscribe: (handler: (state: State) => void) => () => void;
274
320
  };
275
321
  /**
276
322
  * Resize the application viewport
@@ -1 +1 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/core/view.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,KAAK;IACrB,IAAI,EAAE,SAAS,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC5B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC5B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC5B;;;;;;;;OAQG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG;IAC5C;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CAAC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,YAAY,CAAC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,cAAc,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;;;;;;;;;;;;;;;;;OAkBG;IACH,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,UAAU,CAAC,IAAI;QACd,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACxC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC;KACxE,CAAC;IAEF;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC;CAC1B,CAAC"}
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/core/view.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,OAAO;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,QAAQ,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,KAAK;IACrB,IAAI,EAAE,SAAS,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC5B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC5B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC5B;;;;;;;;OAQG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG;IAC5C;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CAAC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,YAAY,CAAC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,cAAc,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;;;;;;;;;;;;;;;;;OAkBG;IACH,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyCG;IACH,UAAU,CAAC,CAAC,KAAK,SAAS,OAAO,GAAG,OAAO,KAAK;QAC/C,KAAK,EAAE,KAAK,CAAC;QACb,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;KAC3D,CAAC;IAEF;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC;CAC1B,CAAC"}
@@ -196,7 +196,7 @@ class ie {
196
196
  })).structuredContent;
197
197
  }
198
198
  }
199
- const ce = "X-SFDC-Client-Name", ue = "X-SFDC-Client-Version", he = "@salesforce/platform-sdk", le = "11.5.0", de = (t) => {
199
+ const ce = "X-SFDC-Client-Name", ue = "X-SFDC-Client-Version", he = "@salesforce/platform-sdk", le = "11.7.0", de = (t) => {
200
200
  let e = y(ce, he, t);
201
201
  return e = y(ue, le, e), u(e);
202
202
  }, pe = "X-CSRF-Token";
@@ -3,7 +3,7 @@
3
3
  * All rights reserved.
4
4
  * For full license text, see the LICENSE.txt file
5
5
  */
6
- export { fetchI18nContext, createSalesforceDetector } from './salesforce-detector';
6
+ export { fetchI18nContext, createSalesforceDetector, reloadI18nContext, } from './salesforce-detector';
7
7
  export type { I18nContext } from './salesforce-detector';
8
8
  export { SalesforceBackend } from './salesforce-backend';
9
9
  export type { SalesforceBackendOptions } from './salesforce-backend';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACnF,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACN,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,9 +1,9 @@
1
- let l = null;
2
- async function u(n) {
3
- if (l) return l;
4
- if (!n.graphql)
1
+ let o = null;
2
+ async function i(r) {
3
+ if (o) return o;
4
+ if (!r.graphql)
5
5
  throw new Error("Data SDK GraphQL surface unavailable");
6
- const a = await n.graphql.query({
6
+ const a = await r.graphql.query({
7
7
  operationName: "I18nDetect",
8
8
  query: `
9
9
  query I18nDetect {
@@ -26,17 +26,20 @@ async function u(n) {
26
26
  `I18nDetect query failed: ${JSON.stringify(a.errors ?? "no data, no errors")}`
27
27
  );
28
28
  const e = a.data.uiapi.platform.i18n;
29
- return l = e, e;
29
+ return o = e, e;
30
30
  }
31
- function f(n) {
31
+ async function f(r) {
32
+ return o = null, i(r);
33
+ }
34
+ function p(r) {
32
35
  return {
33
36
  type: "languageDetector",
34
37
  detect() {
35
- return l?.lang;
38
+ return o?.lang;
36
39
  }
37
40
  };
38
41
  }
39
- const i = `
42
+ const c = `
40
43
  query Labels($ns: String!, $names: [String!]!, $locale: String) {
41
44
  uiapi {
42
45
  platform {
@@ -50,49 +53,50 @@ const i = `
50
53
  }
51
54
  }
52
55
  `;
53
- function c(n) {
56
+ function u(r) {
54
57
  const a = {};
55
- for (const e of n) {
58
+ for (const e of r) {
56
59
  const t = e.indexOf(":");
57
60
  if (t === -1) continue;
58
- const r = e.slice(0, t), o = e.slice(t + 1);
59
- (a[r] ??= []).push(o);
61
+ const n = e.slice(0, t), l = e.slice(t + 1);
62
+ (a[n] ??= []).push(l);
60
63
  }
61
64
  return a;
62
65
  }
63
- class p {
66
+ class d {
64
67
  type = "backend";
65
68
  static type = "backend";
66
69
  options = { dataSDK: {} };
67
70
  grouped = {};
68
71
  init(a, e) {
69
- this.options = e, this.grouped = c(e.labelManifest ?? []);
72
+ this.options = e, this.grouped = u(e.labelManifest ?? []);
70
73
  }
71
74
  read(a, e, t) {
72
- this.loadLabels(a, e).then((r) => t(null, r)).catch((r) => t(r, !1));
75
+ this.loadLabels(a, e).then((n) => t(null, n)).catch((n) => t(n, !1));
73
76
  }
74
77
  async loadLabels(a, e) {
75
78
  const t = this.grouped[e];
76
79
  if (!t?.length) return {};
77
80
  if (!this.options.dataSDK.graphql)
78
81
  throw new Error("Data SDK GraphQL surface unavailable");
79
- const r = await this.options.dataSDK.graphql.query({
82
+ const n = await this.options.dataSDK.graphql.query({
80
83
  operationName: "Labels",
81
- query: i,
84
+ query: c,
82
85
  variables: { ns: e, names: t, locale: a }
83
86
  });
84
- if (!r.data)
87
+ if (!n.data)
85
88
  throw new Error(
86
- `Labels query failed: ${JSON.stringify(r.errors ?? "no data, no errors")}`
89
+ `Labels query failed: ${JSON.stringify(n.errors ?? "no data, no errors")}`
87
90
  );
88
- const o = {};
89
- for (const s of r.data.uiapi.platform.labels)
90
- s.value != null && (o[s.name] = s.value);
91
- return o;
91
+ const l = {};
92
+ for (const s of n.data.uiapi.platform.labels)
93
+ s.value != null && (l[s.name] = s.value);
94
+ return l;
92
95
  }
93
96
  }
94
97
  export {
95
- p as SalesforceBackend,
96
- f as createSalesforceDetector,
97
- u as fetchI18nContext
98
+ d as SalesforceBackend,
99
+ p as createSalesforceDetector,
100
+ i as fetchI18nContext,
101
+ f as reloadI18nContext
98
102
  };
@@ -17,6 +17,21 @@ export interface I18nContext {
17
17
  timeZone: string;
18
18
  }
19
19
  export declare function fetchI18nContext(dataSDK: DataSDK): Promise<I18nContext>;
20
+ /**
21
+ * Reload the cached i18n context: clear the memoized value and immediately
22
+ * re-query the platform, resolving to the fresh context.
23
+ *
24
+ * The context is fetched once and memoized for the lifetime of the page, so a
25
+ * locale change normally only takes effect on a full page reload. Call this
26
+ * after an in-session locale change: clearing and re-fetching are a single
27
+ * operation, so a caller cannot clear the cache and then forget to refill it.
28
+ *
29
+ * The cache is cleared before the re-query runs, so if the re-query fails the
30
+ * returned promise rejects and the cache is left empty — `detect()` reverts to
31
+ * `undefined` until a later successful fetch. Callers should handle rejection
32
+ * rather than assume a reload always repopulates.
33
+ */
34
+ export declare function reloadI18nContext(dataSDK: DataSDK): Promise<I18nContext>;
20
35
  export declare function createSalesforceDetector(_dataSDK: DataSDK): LanguageDetectorModule;
21
36
  export {};
22
37
  //# sourceMappingURL=salesforce-detector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"salesforce-detector.d.ts","sourceRoot":"","sources":["../../src/i18n/salesforce-detector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;GAKG;AACH,UAAU,sBAAsB;IAC/B,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,IAAI,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAYD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAkC7E;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,GAAG,sBAAsB,CAQlF"}
1
+ {"version":3,"file":"salesforce-detector.d.ts","sourceRoot":"","sources":["../../src/i18n/salesforce-detector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;GAKG;AACH,UAAU,sBAAsB;IAC/B,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,IAAI,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAYD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAkC7E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAG9E;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,GAAG,sBAAsB,CAQlF"}
@@ -1,4 +1,4 @@
1
- import { ViewSDK } from '../core';
1
+ import { UiState, ViewSDK } from '../core';
2
2
  /** Pixel-only dimension string: bare number or `Npx`. The empty string is allowed so a caller can omit one axis. */
3
3
  export type PixelSize = `${number}` | `${number}px` | "";
4
4
  /**
@@ -21,6 +21,8 @@ export type PixelSize = `${number}` | `${number}px` | "";
21
21
  export declare class EmbeddingViewSDK extends EventTarget implements ViewSDK {
22
22
  private readonly session;
23
23
  static create(): Promise<EmbeddingViewSDK>;
24
+ private currentUiState;
25
+ private readonly uiStateListeners;
24
26
  private constructor();
25
27
  /**
26
28
  * Dispatch a custom event.
@@ -41,6 +43,26 @@ export declare class EmbeddingViewSDK extends EventTarget implements ViewSDK {
41
43
  * otherwise `true` (native {@link EventTarget} semantics).
42
44
  */
43
45
  dispatchEvent(event: Event): boolean;
46
+ /**
47
+ * Get the current host UI state and a `subscribe` function for future changes.
48
+ *
49
+ * The snapshot is fetched once at {@link EmbeddingViewSDK.create} and refreshed on every
50
+ * host push, so this returns synchronously. `subscribe(handler)` registers the handler for
51
+ * every subsequent push and returns an `unsubscribe` that detaches just that handler; the
52
+ * underlying wire subscription is session-scoped and shared, so detaching is a local
53
+ * `Set.delete`, not a wire teardown.
54
+ *
55
+ * The optional `State` type parameter narrows `state` and the `subscribe` handler for this
56
+ * caller; it is erased at runtime, so the stored snapshot and listeners are the open-shaped
57
+ * {@link UiState} and the narrowed handler is adapted to that at the boundary.
58
+ *
59
+ * @returns `{ state, subscribe }` — the latest cached snapshot and a subscribe function
60
+ * whose return value is the per-handler `unsubscribe`.
61
+ */
62
+ getUiState<State extends UiState = UiState>(): {
63
+ state: State;
64
+ subscribe: (handler: (state: State) => void) => () => void;
65
+ };
44
66
  markDirtyState(label?: string): Promise<void>;
45
67
  clearDirtyState(label?: string): Promise<void>;
46
68
  /** Resize the embedded surface. Pass `""` for either axis to leave it unchanged; both empty is a no-op. */
@@ -68,6 +90,16 @@ export declare class EmbeddingViewSDK extends EventTarget implements ViewSDK {
68
90
  * is disposed.
69
91
  */
70
92
  private subscribeToHostEvent;
93
+ /**
94
+ * Open the host's ui-state stream once per session and cache the initial snapshot,
95
+ * then fan out every subsequent push to registered listeners. Private wire-layer
96
+ * plumbing — the public entry point is {@link getUiState}.
97
+ *
98
+ * Best-effort, mirroring {@link subscribeToHostEvent}: if the subscription cannot be
99
+ * opened, {@link getUiState} still returns a usable (empty) snapshot and every other
100
+ * method continues to work. The wire is not explicitly torn down.
101
+ */
102
+ private subscribeToUiState;
71
103
  private setDirty;
72
104
  }
73
105
  //# sourceMappingURL=embedding.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../src/view/embedding.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAMvC,oHAAoH;AACpH,MAAM,MAAM,SAAS,GAAG,GAAG,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;AAEzD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAiB,SAAQ,WAAY,YAAW,OAAO;IAQ/C,OAAO,CAAC,QAAQ,CAAC,OAAO;WAP/B,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAOhD,OAAO;IAIP;;;;;;;;;;;;;;;;;OAiBG;IACM,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IA0BvC,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,2GAA2G;IACrG,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAYhE;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;;;;;;;;;;;;;OAeG;YACW,oBAAoB;IAyBlC,OAAO,CAAC,QAAQ;CAOhB"}
1
+ {"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../src/view/embedding.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAMhD,oHAAoH;AACpH,MAAM,MAAM,SAAS,GAAG,GAAG,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;AAEzD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAiB,SAAQ,WAAY,YAAW,OAAO;IAa/C,OAAO,CAAC,QAAQ,CAAC,OAAO;WAZ/B,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAShD,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuC;IAExE,OAAO;IAIP;;;;;;;;;;;;;;;;;OAiBG;IACM,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IA0B7C;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,KAAK,SAAS,OAAO,GAAG,OAAO,KAAK;QAC9C,KAAK,EAAE,KAAK,CAAC;QACb,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;KAC3D;IAeK,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,2GAA2G;IACrG,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAYhE;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;;;;;;;;;;;;;OAeG;YACW,oBAAoB;IAyBlC;;;;;;;;OAQG;YACW,kBAAkB;IAiBhC,OAAO,CAAC,QAAQ;CAOhB"}
@@ -25,5 +25,5 @@ export interface ViewSDKOptions extends SDKOptions {
25
25
  export declare function createViewSDK(options?: ViewSDKOptions): Promise<ViewSDK>;
26
26
  export { MCPAppsViewSDK } from './mcpapps';
27
27
  export { getViewSDK, getViewSDKSync, resetViewSDK } from './singleton';
28
- export type { AlertOptions, ModalOptions, SDKOptions, Theme, ThemeMode, ToastOptions, ViewSDK, } from '../core';
28
+ export type { AlertOptions, ModalOptions, SDKOptions, Theme, ThemeMode, ToastOptions, UiState, UiStyles, ViewSDK, } from '../core';
29
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/view/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKnD;;;;;;GAMG;AAEH,MAAM,WAAW,cAAe,SAAQ,UAAU;CAAG;AAErD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAgCxE;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvE,YAAY,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,KAAK,EACL,SAAS,EACT,YAAY,EACZ,OAAO,GACP,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/view/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKnD;;;;;;GAMG;AAEH,MAAM,WAAW,cAAe,SAAQ,UAAU;CAAG;AAErD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAgCxE;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvE,YAAY,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,KAAK,EACL,SAAS,EACT,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,OAAO,GACP,MAAM,SAAS,CAAC"}
@@ -1,8 +1,8 @@
1
- import { g as h, S as i, a as p } from "../surface-Dd2tqrPi.js";
2
- import { w } from "../sdk-promise-D0sy7OW1.js";
1
+ import { g as h, S as n, a as w } from "../surface-Dd2tqrPi.js";
2
+ import { w as p } from "../sdk-promise-D0sy7OW1.js";
3
3
  import { requireSharedSession as m } from "../sf-embedding/index.js";
4
- function f(n) {
5
- switch (n) {
4
+ function f(i) {
5
+ switch (i) {
6
6
  case "info":
7
7
  return "ℹ️";
8
8
  case "success":
@@ -15,34 +15,38 @@ function f(n) {
15
15
  return "ℹ️";
16
16
  }
17
17
  }
18
- function l(n, e) {
19
- return `${f(e)} ${n}`;
18
+ function u(i, e) {
19
+ return `${f(e)} ${i}`;
20
20
  }
21
- function o(n, e) {
22
- const s = n.trim();
21
+ function o(i, e) {
22
+ const s = i.trim();
23
23
  if (s === "")
24
24
  return { success: !0, value: void 0 };
25
25
  const t = s.match(/^(\d+(?:\.\d+)?)(px)?$/);
26
26
  if (!t || !t[1])
27
27
  return {
28
28
  success: !1,
29
- error: `Invalid ${e}: "${n}". Only pixel values are supported (e.g., "800px" or "800").`
29
+ error: `Invalid ${e}: "${i}". Only pixel values are supported (e.g., "800px" or "800").`
30
30
  };
31
31
  const r = parseFloat(t[1]);
32
32
  return r < 0 || !isFinite(r) ? {
33
33
  success: !1,
34
- error: `Invalid ${e}: "${n}". Value must be a positive number.`
34
+ error: `Invalid ${e}: "${i}". Value must be a positive number.`
35
35
  } : { success: !0, value: r };
36
36
  }
37
- const v = "trackdirtystate";
38
- class u extends EventTarget {
37
+ const b = "trackdirtystate";
38
+ class l extends EventTarget {
39
39
  constructor(e) {
40
40
  super(), this.session = e;
41
41
  }
42
42
  static async create() {
43
- const e = await m("EmbeddingViewSDK"), s = new u(e);
44
- return await s.subscribeToHostEvent(), s;
43
+ const e = await m("EmbeddingViewSDK"), s = new l(e);
44
+ return await Promise.all([s.subscribeToHostEvent(), s.subscribeToUiState()]), s;
45
45
  }
46
+ // Latest snapshot, refreshed on every host push. Session-scoped — the wire subscription
47
+ // is opened once at create() and never torn down.
48
+ currentUiState = { props: {}, styles: {} };
49
+ uiStateListeners = /* @__PURE__ */ new Set();
46
50
  /**
47
51
  * Dispatch a custom event.
48
52
  *
@@ -77,6 +81,33 @@ class u extends EventTarget {
77
81
  }
78
82
  return super.dispatchEvent(e);
79
83
  }
84
+ /**
85
+ * Get the current host UI state and a `subscribe` function for future changes.
86
+ *
87
+ * The snapshot is fetched once at {@link EmbeddingViewSDK.create} and refreshed on every
88
+ * host push, so this returns synchronously. `subscribe(handler)` registers the handler for
89
+ * every subsequent push and returns an `unsubscribe` that detaches just that handler; the
90
+ * underlying wire subscription is session-scoped and shared, so detaching is a local
91
+ * `Set.delete`, not a wire teardown.
92
+ *
93
+ * The optional `State` type parameter narrows `state` and the `subscribe` handler for this
94
+ * caller; it is erased at runtime, so the stored snapshot and listeners are the open-shaped
95
+ * {@link UiState} and the narrowed handler is adapted to that at the boundary.
96
+ *
97
+ * @returns `{ state, subscribe }` — the latest cached snapshot and a subscribe function
98
+ * whose return value is the per-handler `unsubscribe`.
99
+ */
100
+ getUiState() {
101
+ return {
102
+ state: this.currentUiState,
103
+ subscribe: (e) => {
104
+ const s = e;
105
+ return this.uiStateListeners.add(s), () => {
106
+ this.uiStateListeners.delete(s);
107
+ };
108
+ }
109
+ };
110
+ }
80
111
  async markDirtyState(e) {
81
112
  this.setDirty(!0, e);
82
113
  }
@@ -139,8 +170,33 @@ class u extends EventTarget {
139
170
  );
140
171
  }
141
172
  }
173
+ /**
174
+ * Open the host's ui-state stream once per session and cache the initial snapshot,
175
+ * then fan out every subsequent push to registered listeners. Private wire-layer
176
+ * plumbing — the public entry point is {@link getUiState}.
177
+ *
178
+ * Best-effort, mirroring {@link subscribeToHostEvent}: if the subscription cannot be
179
+ * opened, {@link getUiState} still returns a usable (empty) snapshot and every other
180
+ * method continues to work. The wire is not explicitly torn down.
181
+ */
182
+ async subscribeToUiState() {
183
+ const e = this.session.bridge;
184
+ e.onUiStateChanged((s) => {
185
+ this.currentUiState = s.current;
186
+ for (const t of this.uiStateListeners) t(s.current);
187
+ });
188
+ try {
189
+ const { current: s } = await e.sendUiStateSubscribe();
190
+ this.currentUiState = s;
191
+ } catch (s) {
192
+ console.warn(
193
+ "[EmbeddingViewSDK] ui-state subscription failed; getUiState will return an empty snapshot",
194
+ s
195
+ );
196
+ }
197
+ }
142
198
  setDirty(e, s) {
143
- this.session.bridge.sendEventDispatch(v, {
199
+ this.session.bridge.sendEventDispatch(b, {
144
200
  isDirty: e,
145
201
  instanceId: this.session.hostMetaData.instanceId,
146
202
  label: s ?? ""
@@ -157,7 +213,7 @@ class g {
157
213
  * @param level - The message severity level (defaults to "info")
158
214
  */
159
215
  async sendMessage(e, s = "info") {
160
- const t = l(e, s);
216
+ const t = u(e, s);
161
217
  await this.session.request("ui/message", {
162
218
  role: "user",
163
219
  content: [
@@ -192,13 +248,13 @@ class g {
192
248
  return t.value !== void 0 && (c.width = t.value), r.value !== void 0 && (c.height = r.value), this.session.sendNotification("ui/notifications/size-changed", c), Promise.resolve();
193
249
  }
194
250
  }
195
- class b {
251
+ class v {
196
252
  async displayAlert(e) {
197
- const s = e.level || "info", t = l(e.message, s);
253
+ const s = e.level || "info", t = u(e.message, s);
198
254
  await window.openai.sendFollowUpMessage({ prompt: t });
199
255
  }
200
256
  async displayToast(e) {
201
- const s = e.level || "info", t = l(e.message, s);
257
+ const s = e.level || "info", t = u(e.message, s);
202
258
  await window.openai.sendFollowUpMessage({ prompt: t });
203
259
  }
204
260
  async displayModal(e) {
@@ -213,8 +269,8 @@ class b {
213
269
  }
214
270
  }
215
271
  let a = null, d = null;
216
- function M(n) {
217
- return a || (a = y(n).then((e) => (d = e, e))), a;
272
+ function M(i) {
273
+ return a || (a = y(i).then((e) => (d = e, e))), a;
218
274
  }
219
275
  function T() {
220
276
  return d;
@@ -222,20 +278,20 @@ function T() {
222
278
  function V() {
223
279
  a = null, d = null;
224
280
  }
225
- function y(n) {
226
- return w(
281
+ function y(i) {
282
+ return p(
227
283
  (async () => {
228
284
  try {
229
- switch (await h(n?.surface)) {
230
- case i.OpenAI:
231
- return new b();
232
- case i.WebApp:
233
- case i.Mosaic:
285
+ switch (await h(i?.surface)) {
286
+ case n.OpenAI:
287
+ return new v();
288
+ case n.WebApp:
289
+ case n.Mosaic:
234
290
  return {};
235
- case i.MicroFrontend:
236
- return await u.create();
237
- case i.MCPApps: {
238
- const s = await p.getInstance();
291
+ case n.MicroFrontend:
292
+ return await l.create();
293
+ case n.MCPApps: {
294
+ const s = await w.getInstance();
239
295
  return new g(s);
240
296
  }
241
297
  default:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/platform-sdk",
3
- "version": "11.5.0",
3
+ "version": "11.7.0",
4
4
  "license": "SEE LICENSE IN LICENSE.txt",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -115,7 +115,7 @@
115
115
  "@conduit-client/service-pubsub": "3.19.6",
116
116
  "@conduit-client/service-retry": "3.19.6",
117
117
  "@conduit-client/utils": "3.19.6",
118
- "@salesforce/jsonrpc": "^11.5.0",
118
+ "@salesforce/jsonrpc": "^11.7.0",
119
119
  "@salesforce/sf-embedding-bridge": "2.2.4-rc.1"
120
120
  },
121
121
  "peerDependencies": {