@burdenoff/fe-libs 2026.627.2 → 2026.628.1

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.
@@ -1,36 +1,37 @@
1
1
  import { createBrowserTraceContext as e } from "../events/metadata.js";
2
2
  import { resolveGatewayUrls as t } from "../config/gatewayUrls.js";
3
- import { GATEWAYS as n } from "../../shared-config.js";
4
- import { getActiveWorkspaceToken as r, resolveActiveProfileId as i, setProfileWorkspaceToken as a } from "../providers/shell/ProfileStorageManager.js";
5
- import { readActiveContextValueWithUrlPrecedence as o } from "../providers/shell/ActiveContextStorage.js";
6
- import { getValidAccessTokenFromStorage as s, sanitizeExtraHeaders as c, sanitizeGeography as l, validateGatewayBaseUrl as u } from "./security.js";
7
- import { isWorkspaceTokenValidForContext as d } from "./workspaceToken.js";
8
- import { dispatchBackendErrorEvent as f, markConnectionHealthy as p } from "../utils/backendErrors.js";
3
+ import { clearGatewayGraphQLResponseCache as n } from "../utils/gatewayFetchRewrite.js";
4
+ import { GATEWAYS as r } from "../../shared-config.js";
5
+ import { getActiveWorkspaceToken as i, resolveActiveProfileId as a, setProfileWorkspaceToken as o } from "../providers/shell/ProfileStorageManager.js";
6
+ import { readActiveContextValueWithUrlPrecedence as s } from "../providers/shell/ActiveContextStorage.js";
7
+ import { getValidAccessTokenFromStorage as c, sanitizeExtraHeaders as l, sanitizeGeography as u, validateGatewayBaseUrl as d } from "./security.js";
8
+ import { isWorkspaceTokenValidForContext as f } from "./workspaceToken.js";
9
+ import { dispatchBackendErrorEvent as p, markConnectionHealthy as m } from "../utils/backendErrors.js";
9
10
  //#region src/shared/graphql/fetch.ts
10
- var m = "\n mutation IssueWorkspaceToken($input: IssueWorkspaceTokenInput!) {\n issueWorkspaceToken(input: $input) {\n success\n token\n workspaceId\n error {\n message\n }\n }\n }\n", h = /* @__PURE__ */ new Map();
11
- function g() {
11
+ var h = "\n mutation IssueWorkspaceToken($input: IssueWorkspaceTokenInput!) {\n issueWorkspaceToken(input: $input) {\n success\n token\n workspaceId\n error {\n message\n }\n }\n }\n", g = /* @__PURE__ */ new Map();
12
+ function _() {
12
13
  try {
13
14
  let e = sessionStorage.getItem("bf-active-profile");
14
- return e ? s(localStorage.getItem(`bf-p-${e}-tokens`)) : null;
15
+ return e ? c(localStorage.getItem(`bf-p-${e}-tokens`)) : null;
15
16
  } catch {
16
17
  return null;
17
18
  }
18
19
  }
19
- function _() {
20
+ function v() {
20
21
  try {
21
- return r();
22
+ return i();
22
23
  } catch {
23
24
  return null;
24
25
  }
25
26
  }
26
- function v() {
27
+ function y() {
27
28
  try {
28
29
  return sessionStorage.getItem("bf-active-profile");
29
30
  } catch {
30
31
  return null;
31
32
  }
32
33
  }
33
- function y(e) {
34
+ function b(e) {
34
35
  try {
35
36
  let [, t] = e.split(".");
36
37
  if (!t || typeof globalThis.atob != "function") return null;
@@ -40,24 +41,24 @@ function y(e) {
40
41
  return null;
41
42
  }
42
43
  }
43
- function b(e) {
44
- let t = y(e)?.exp;
44
+ function x(e) {
45
+ let t = b(e)?.exp;
45
46
  return typeof t == "number" ? t * 1e3 <= Date.now() + 3e4 : !1;
46
47
  }
47
- function x() {
48
+ function S() {
48
49
  try {
49
50
  let e = sessionStorage.getItem("bf-active-profile");
50
51
  if (e) {
51
52
  let t = localStorage.getItem(`bf-p-${e}-geography`);
52
- if (t) return l(JSON.parse(t));
53
+ if (t) return u(JSON.parse(t));
53
54
  }
54
55
  let t = localStorage.getItem("burdenoff-geography");
55
- return t ? l(JSON.parse(t)) : null;
56
+ return t ? u(JSON.parse(t)) : null;
56
57
  } catch {
57
58
  return null;
58
59
  }
59
60
  }
60
- function S() {
61
+ function C() {
61
62
  try {
62
63
  let e = sessionStorage.getItem("bf-active-profile");
63
64
  if (e) {
@@ -69,63 +70,64 @@ function S() {
69
70
  return "en";
70
71
  }
71
72
  }
72
- function C() {
73
- return o("workspace");
74
- }
75
73
  function w() {
76
- return o("organization");
74
+ return s("workspace");
77
75
  }
78
76
  function T() {
79
- return o("tenant");
77
+ return s("organization");
80
78
  }
81
79
  function E() {
82
- return o("project");
80
+ return s("tenant");
83
81
  }
84
82
  function D() {
83
+ return s("project");
84
+ }
85
+ function O() {
85
86
  try {
86
87
  return typeof window > "u" ? null : new URLSearchParams(window.location.search).get("org");
87
88
  } catch {
88
89
  return null;
89
90
  }
90
91
  }
91
- function O(e) {
92
+ function k(e) {
92
93
  return {
93
- workspaceId: typeof e.workspaceId == "string" ? e.workspaceId : C() || void 0,
94
- organizationId: typeof e.organizationId == "string" ? e.organizationId : w() || D() || void 0,
95
- tenantId: typeof e.tenantId == "string" ? e.tenantId : T() || void 0,
96
- projectId: typeof e.projectId == "string" ? e.projectId : E() || void 0
94
+ workspaceId: typeof e.workspaceId == "string" ? e.workspaceId : w() || void 0,
95
+ organizationId: typeof e.organizationId == "string" ? e.organizationId : T() || O() || void 0,
96
+ tenantId: typeof e.tenantId == "string" ? e.tenantId : E() || void 0,
97
+ projectId: typeof e.projectId == "string" ? e.projectId : D() || void 0
97
98
  };
98
99
  }
99
- function k(e, t, n) {
100
+ function A(e, t, n) {
100
101
  try {
101
- let r = i() ?? v();
102
+ let r = a() ?? y();
102
103
  if (!r) return;
103
- a(r, t), sessionStorage.setItem("burdenoff-active-context-workspace", e), n && sessionStorage.setItem("burdenoff-active-context-organization", n);
104
+ o(r, t), sessionStorage.setItem("burdenoff-active-context-workspace", e), n && sessionStorage.setItem("burdenoff-active-context-organization", n);
104
105
  } catch {}
105
106
  }
106
- async function A(e) {
107
+ async function j(e) {
107
108
  let { url: t, authToken: n, workspaceId: r, organizationId: i, projectId: a, locale: o, signal: s, currentQuery: c } = e;
108
109
  if (!n || c.includes("issueWorkspaceToken")) return null;
109
- let l = r || C();
110
+ let l = r || w();
110
111
  if (!l) return null;
111
- let u = _(), f = C(), p = i || w() || D();
112
- if (u && f === l && d(u, {
112
+ let u = v(), d = w(), p = i || T() || O();
113
+ if (u && d === l && f(u, {
113
114
  workspaceId: l,
114
115
  organizationId: p,
115
116
  projectId: a
116
117
  })) return u;
117
118
  if (!p) return null;
118
- let g = `${p}:${l}:${a ?? ""}`, v = h.get(g);
119
- if (v) return v;
119
+ let m = `${p}:${l}:${a ?? ""}`, _ = g.get(m);
120
+ if (_) return _;
120
121
  let y = fetch(t, {
121
122
  method: "POST",
122
123
  headers: {
123
124
  "Content-Type": "application/json",
125
+ [W]: "true",
124
126
  Authorization: `Bearer ${n}`,
125
127
  ...o ? { "Accept-Language": o } : {}
126
128
  },
127
129
  body: JSON.stringify({
128
- query: m,
130
+ query: h,
129
131
  variables: { input: {
130
132
  organizationId: p,
131
133
  workspaceId: l,
@@ -135,58 +137,58 @@ async function A(e) {
135
137
  signal: s
136
138
  }).then(async (e) => {
137
139
  let t = (await e.json()).data?.issueWorkspaceToken;
138
- return t?.success && t.token ? (k(t.workspaceId || l, t.token, p), t.token) : null;
140
+ return t?.success && t.token ? (A(t.workspaceId || l, t.token, p), t.token) : null;
139
141
  }).catch(() => null).finally(() => {
140
- h.delete(g);
142
+ g.delete(m);
141
143
  });
142
- return h.set(g, y), y;
144
+ return g.set(m, y), y;
143
145
  }
144
- function j(e, r) {
145
- let i = n[e], a = t(), o = e === "global" ? a.globalBaseUrl : a.workspaceBaseUrl, s = r || o;
146
+ function M(e, n) {
147
+ let i = r[e], a = t(), o = e === "global" ? a.globalBaseUrl : a.workspaceBaseUrl, s = n || o;
146
148
  return `${s.endsWith("/") ? s.slice(0, -1) : s}${i.graphql}`;
147
149
  }
148
- function M() {
150
+ function N() {
149
151
  return globalThis;
150
152
  }
151
- function N() {
152
- let e = M();
153
+ function P() {
154
+ let e = N();
153
155
  return e.__graphqlFetchQueues ||= /* @__PURE__ */ new Map(), e.__graphqlFetchQueues;
154
156
  }
155
- function P() {
156
- let e = M();
157
+ function F() {
158
+ let e = N();
157
159
  return e.__graphqlFetchResponseCache ||= /* @__PURE__ */ new Map(), e.__graphqlFetchResponseCache;
158
160
  }
159
- function F() {
160
- let e = M();
161
+ function I() {
162
+ let e = N();
161
163
  return e.__graphqlFetchPendingResponses ||= /* @__PURE__ */ new Map(), e.__graphqlFetchPendingResponses;
162
164
  }
163
- function I() {
164
- P().clear(), F().clear();
165
+ function L() {
166
+ F().clear(), I().clear(), n();
165
167
  }
166
- var L = 10, R = 600, z = 100, B = 1e4, V = 15e3, H = new Set([
168
+ var R = 10, z = 600, B = 100, V = 1e4, H = 15e3, U = new Set([
167
169
  "traceparent",
168
170
  "tracestate",
169
171
  "baggage"
170
- ]);
171
- function U() {
172
- if (typeof performance > "u") return z;
173
- let e = M();
174
- return e.__graphqlFetchBurstStartedAt ??= performance.now(), performance.now() - e.__graphqlFetchBurstStartedAt < B ? R : z;
172
+ ]), W = "Apollo-Require-Preflight";
173
+ function G() {
174
+ if (typeof performance > "u") return B;
175
+ let e = N();
176
+ return e.__graphqlFetchBurstStartedAt ??= performance.now(), performance.now() - e.__graphqlFetchBurstStartedAt < V ? z : B;
175
177
  }
176
- function W(e) {
178
+ function K(e) {
177
179
  return typeof e.query == "string" ? /^\s*query\b/.test(e.query) : !1;
178
180
  }
179
- function G(e) {
181
+ function ee(e) {
180
182
  return typeof e.operationName == "string" && e.operationName.length > 0 ? {
181
183
  operationName: e.operationName,
182
184
  variables: e.variables ?? null
183
185
  } : e;
184
186
  }
185
- function K(e) {
187
+ function te(e) {
186
188
  let t = /* @__PURE__ */ new Map();
187
189
  for (let [n, r] of Object.entries(e)) {
188
190
  let e = n.toLowerCase();
189
- H.has(e) || t.set(e, r);
191
+ U.has(e) || t.set(e, r);
190
192
  }
191
193
  return Object.fromEntries(Array.from(t.entries()).sort(([e], [t]) => e.localeCompare(t)));
192
194
  }
@@ -194,17 +196,18 @@ function q(t) {
194
196
  let n = e();
195
197
  return {
196
198
  ...t,
199
+ [W]: "true",
197
200
  traceparent: n.traceparent
198
201
  };
199
202
  }
200
203
  function J(e) {
201
- return ee(e) && Array.isArray(e.errors);
204
+ return ne(e) && Array.isArray(e.errors);
202
205
  }
203
206
  function Y(e) {
204
207
  let t = e.status;
205
208
  return t === 401 ? "Invalid email or password." : t === 403 ? "You do not have permission to do that." : t === 404 ? "We could not find what you were looking for." : t === 408 || t === 504 ? "The server took too long to respond. Please try again." : t === 429 ? "Too many requests. Please wait a moment and try again." : t >= 500 && t < 600 ? "The server is having trouble right now. Please try again in a moment." : t >= 400 && t < 500 ? "The request could not be processed. Please refresh and try again." : "We could not reach the server. Please check your connection and try again.";
206
209
  }
207
- function ee(e) {
210
+ function ne(e) {
208
211
  return typeof e == "object" && !!e && !Array.isArray(e);
209
212
  }
210
213
  async function X(e) {
@@ -228,9 +231,9 @@ async function Z(e, t, n) {
228
231
  signal: r.signal
229
232
  }), i = await X(n);
230
233
  if (!n.ok && !J(i)) throw Error(Y(n));
231
- r.cacheKey && P().set(r.cacheKey, {
234
+ r.cacheKey && F().set(r.cacheKey, {
232
235
  value: i,
233
- expiresAt: Date.now() + V
236
+ expiresAt: Date.now() + H
234
237
  }), r.resolve(i);
235
238
  } catch (e) {
236
239
  r.reject(e);
@@ -248,9 +251,9 @@ async function Z(e, t, n) {
248
251
  if (!i.ok && !J(a)) throw Error(Y(i));
249
252
  if (Array.isArray(a)) a.forEach((e, t) => {
250
253
  let r = n[t];
251
- r && (r.cacheKey && P().set(r.cacheKey, {
254
+ r && (r.cacheKey && F().set(r.cacheKey, {
252
255
  value: e,
253
- expiresAt: Date.now() + V
256
+ expiresAt: Date.now() + H
254
257
  }), r.resolve(e));
255
258
  });
256
259
  else {
@@ -262,14 +265,14 @@ async function Z(e, t, n) {
262
265
  }
263
266
  }
264
267
  function Q(e, t, n, r, i) {
265
- let a = K(t), o = Math.max(1, i?.batchMax ?? L), s = Math.max(0, i?.batchInterval ?? U()), c = `${e}|${JSON.stringify(a)}`, l = W(n) ? `${c}|${JSON.stringify(G(n))}` : void 0;
268
+ let a = te(t), o = Math.max(1, i?.batchMax ?? R), s = Math.max(0, i?.batchInterval ?? G()), c = `${e}|${JSON.stringify(a)}`, l = K(n) ? `${c}|${JSON.stringify(ee(n))}` : void 0;
266
269
  if (l) {
267
- let e = P(), t = e.get(l);
270
+ let e = F(), t = e.get(l);
268
271
  if (t) {
269
272
  if (t.expiresAt > Date.now()) return Promise.resolve(t.value);
270
273
  e.delete(l);
271
274
  }
272
- let n = F().get(l);
275
+ let n = I().get(l);
273
276
  if (n) return n;
274
277
  }
275
278
  let u = new Promise((t, i) => {
@@ -283,7 +286,7 @@ function Q(e, t, n, r, i) {
283
286
  }]);
284
287
  return;
285
288
  }
286
- let u = N(), d = u.get(c);
289
+ let u = P(), d = u.get(c);
287
290
  if (d || (d = {
288
291
  requests: [],
289
292
  timer: null,
@@ -301,32 +304,35 @@ function Q(e, t, n, r, i) {
301
304
  }
302
305
  d.timer ||= setTimeout(() => $(e, a, c), d.batchInterval);
303
306
  });
304
- return l && (F().set(l, u), u.finally(() => {
305
- F().delete(l);
307
+ return l && (I().set(l, u), u.finally(() => {
308
+ I().delete(l);
306
309
  }).catch(() => {})), u;
307
310
  }
308
311
  function $(e, t, n) {
309
- let r = N(), i = r.get(n);
312
+ let r = P(), i = r.get(n);
310
313
  i && (r.delete(n), i.timer &&= (clearTimeout(i.timer), null), Z(e, t, i.requests));
311
314
  }
312
- async function te(e) {
313
- let { gateway: t, query: n, variables: r, operationName: i, authToken: a, workspaceToken: o, workspaceId: s, organizationId: l, tenantId: m, projectId: h, locale: v, baseUrl: y, extraHeaders: C, signal: w, suppressGlobalErrorEvent: E } = e, D = u(j(t, y)), k = a && !b(a) ? a : g(), M = v ?? S(), N = O({
315
+ async function re(e) {
316
+ let { gateway: t, query: n, variables: r, operationName: i, authToken: a, workspaceToken: o, workspaceId: s, organizationId: c, tenantId: u, projectId: h, locale: g, baseUrl: y, extraHeaders: b, signal: w, suppressGlobalErrorEvent: T } = e, D = d(M(t, y)), O = a && !x(a) ? a : _(), A = g ?? C(), N = k({
314
317
  workspaceId: s,
315
- organizationId: l,
316
- tenantId: m,
318
+ organizationId: c,
319
+ tenantId: u,
317
320
  projectId: h
318
- }), P = { "Content-Type": "application/json" };
319
- k && (P.Authorization = `Bearer ${k}`), M && (P["Accept-Language"] = M);
320
- let F = x();
321
+ }), P = {
322
+ "Content-Type": "application/json",
323
+ [W]: "true"
324
+ };
325
+ O && (P.Authorization = `Bearer ${O}`), A && (P["Accept-Language"] = A);
326
+ let F = S();
321
327
  if (F?.country && (P["X-Geo-Country"] = F.country), F?.currency && (P["X-Geo-Currency"] = F.currency), F?.timezone && (P["X-Geo-Timezone"] = F.timezone), t === "workspace" ? o !== !1 : o) {
322
- let e = typeof o == "string" ? o : _();
323
- e && !d(e, N) && (e = null), !e && o === !0 && (e = await A({
328
+ let e = typeof o == "string" ? o : v();
329
+ e && !f(e, N) && (e = null), !e && o === !0 && (e = await j({
324
330
  url: D,
325
- authToken: k,
331
+ authToken: O,
326
332
  workspaceId: N.workspaceId,
327
333
  organizationId: N.organizationId,
328
334
  projectId: N.projectId,
329
- locale: M,
335
+ locale: A,
330
336
  signal: w,
331
337
  currentQuery: n
332
338
  })), e && (P["X-Workspace-Authorization"] = `Bearer ${e}`);
@@ -335,31 +341,31 @@ async function te(e) {
335
341
  let e = N.workspaceId;
336
342
  e && (P["x-workspace-id"] = e);
337
343
  }
338
- if (t === "global" || l) {
344
+ if (t === "global" || c) {
339
345
  let e = N.organizationId;
340
346
  e && (P["x-org-id"] = e);
341
347
  }
342
- if (m) {
343
- let e = typeof m == "string" ? m : T();
348
+ if (u) {
349
+ let e = typeof u == "string" ? u : E();
344
350
  e && (P["x-tenant-id"] = e);
345
351
  }
346
352
  if (t === "workspace" || h) {
347
353
  let e = N.projectId;
348
354
  e && (P["x-project-id"] = e);
349
355
  }
350
- let I = c(C);
356
+ let I = l(b);
351
357
  I && Object.assign(P, I);
352
358
  let L = { query: n };
353
359
  r && (L.variables = r), i && (L.operationName = i);
354
360
  try {
355
361
  let e = await Q(D, P, L, w);
356
- return p(), e.errors?.length && !E && f({ errors: e.errors }, { operationName: i }), e;
362
+ return m(), e.errors?.length && !T && p({ errors: e.errors }, { operationName: i }), e;
357
363
  } catch (e) {
358
- throw E || f(e, {
364
+ throw T || p(e, {
359
365
  operationName: i,
360
366
  fallbackMessage: "We could not reach the server. Please check your connection and try again."
361
367
  }), e;
362
368
  }
363
369
  }
364
370
  //#endregion
365
- export { I as clearGraphqlFetchResponseCache, Q as enqueueGraphQLFetch, g as getStoredAuthToken, S as getStoredLocale, w as getStoredOrganizationId, E as getStoredProjectId, C as getStoredWorkspaceId, _ as getStoredWorkspaceToken, te as graphqlFetch, j as resolveGatewayUrl };
371
+ export { L as clearGraphqlFetchResponseCache, Q as enqueueGraphQLFetch, _ as getStoredAuthToken, C as getStoredLocale, T as getStoredOrganizationId, D as getStoredProjectId, w as getStoredWorkspaceId, v as getStoredWorkspaceToken, re as graphqlFetch, M as resolveGatewayUrl };
@@ -1 +1 @@
1
- {"version":3,"file":"AppShellProvider.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/AppShellProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AppShellProvider.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/AppShellProvider.tsx"],"names":[],"mappings":"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"}
@@ -448,6 +448,7 @@ function we({ config: n, children: r, clearAuthStore: a }) {
448
448
  workspaceBaseUrl: y.workspaceBaseUrl,
449
449
  globalBaseUrl: y.globalBaseUrl,
450
450
  organizationId: X,
451
+ productSlug: m,
451
452
  defaultGateway: E,
452
453
  enableSubscriptions: D,
453
454
  onAuthError: q,
@@ -38,6 +38,8 @@ export interface BridgeMessage {
38
38
  };
39
39
  /** Unique message ID for request/response correlation */
40
40
  messageId?: string;
41
+ /** Per-client handshake nonce that bridge replies must echo */
42
+ nonce?: string;
41
43
  /** Source identifier */
42
44
  source?: string;
43
45
  }
@@ -45,7 +47,7 @@ export type AuthBridgeListener = (state: BridgeAuthState) => void;
45
47
  export interface AuthBridgeClientOptions {
46
48
  /** URL of the session bridge page */
47
49
  bridgeUrl: string;
48
- /** Allowed origins for postMessage (comma-separated or array) */
50
+ /** @deprecated Parent accepts bridge replies only from bridgeUrl origin/source. */
49
51
  allowedOrigins?: string | string[];
50
52
  /** Callback when auth state changes from another app shell */
51
53
  onStateChanged?: AuthBridgeListener;
@@ -55,9 +57,9 @@ export interface AuthBridgeClientOptions {
55
57
  export declare class AuthBridgeClient {
56
58
  private iframe;
57
59
  private bridgeUrl;
58
- private allowedOrigins;
59
60
  private onStateChanged?;
60
61
  private debug;
62
+ private nonce;
61
63
  private ready;
62
64
  private readyReceived;
63
65
  private pendingMessages;
@@ -1 +1 @@
1
- {"version":3,"file":"AuthBridgeClient.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/shell/AuthBridgeClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AuthBridgeClient.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/shell/AuthBridgeClient.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,25 @@
1
1
  import { clearShellSsoCookies as e, setShellSsoCookies as t } from "../../utils/authCookie.js";
2
2
  //#region src/shared/providers/shell/AuthBridgeClient.ts
3
- var n = "burdenoff-auth-bridge", r = "burdenoff-auth-client", i = class {
3
+ var n = "burdenoff-auth-bridge", r = "burdenoff-auth-client";
4
+ function i() {
5
+ let e = globalThis.crypto;
6
+ if (typeof e.randomUUID == "function") return e.randomUUID();
7
+ let t = new Uint8Array(32);
8
+ return e.getRandomValues(t), Array.from(t, (e) => e.toString(16).padStart(2, "0")).join("");
9
+ }
10
+ var a = class {
4
11
  iframe = null;
5
12
  bridgeUrl;
6
- allowedOrigins;
7
13
  onStateChanged;
8
14
  debug;
15
+ nonce;
9
16
  ready = !1;
10
17
  readyReceived = !1;
11
18
  pendingMessages = [];
12
19
  messageHandler = null;
13
20
  destroyed = !1;
14
21
  constructor(e) {
15
- this.bridgeUrl = e.bridgeUrl, this.debug = e.debug ?? !1, this.onStateChanged = e.onStateChanged, this.destroyed = !1, typeof e.allowedOrigins == "string" ? this.allowedOrigins = e.allowedOrigins.split(",").map((e) => e.trim()).filter(Boolean) : Array.isArray(e.allowedOrigins) ? this.allowedOrigins = e.allowedOrigins : this.allowedOrigins = [window.location.origin], this.log("AuthBridgeClient created", { bridgeUrl: this.bridgeUrl });
22
+ this.bridgeUrl = e.bridgeUrl, this.debug = e.debug ?? !1, this.onStateChanged = e.onStateChanged, this.destroyed = !1, this.nonce = i(), this.log("AuthBridgeClient created", { bridgeUrl: this.bridgeUrl });
16
23
  }
17
24
  async init() {
18
25
  if (this.iframe) {
@@ -126,9 +133,9 @@ var n = "burdenoff-auth-bridge", r = "burdenoff-auth-client", i = class {
126
133
  handleMessage(e) {
127
134
  if (this.destroyed) return;
128
135
  let t = new URL(this.bridgeUrl).origin;
129
- if (e.origin !== t && !this.allowedOrigins.includes(e.origin)) return;
136
+ if (e.origin !== t || e.source !== this.iframe?.contentWindow) return;
130
137
  let r = e.data;
131
- if (!(!r || !r.type || r.source !== n)) switch (this.log("Received bridge message:", r.type), r.type) {
138
+ if (!(!r || !r.type || r.source !== n) && !((r.type === "AUTH_STATE" || r.type === "AUTH_STATE_CHANGED" || r.type === "AUTH_BRIDGE_READY") && r.nonce !== this.nonce)) switch (this.log("Received bridge message:", r.type), r.type) {
132
139
  case "AUTH_BRIDGE_READY":
133
140
  if (this.readyReceived) {
134
141
  this.log("AUTH_BRIDGE_READY already received, ignoring duplicate");
@@ -154,7 +161,11 @@ var n = "burdenoff-auth-bridge", r = "burdenoff-auth-client", i = class {
154
161
  return;
155
162
  }
156
163
  let t = new URL(this.bridgeUrl).origin;
157
- this.iframe.contentWindow.postMessage(e, t), this.log("Sent message to bridge:", e.type);
164
+ this.iframe.contentWindow.postMessage({
165
+ ...e,
166
+ source: e.source ?? r,
167
+ nonce: this.nonce
168
+ }, t), this.log("Sent message to bridge:", e.type);
158
169
  }
159
170
  flushPendingMessages() {
160
171
  for (; this.pendingMessages.length > 0;) {
@@ -165,18 +176,18 @@ var n = "burdenoff-auth-bridge", r = "burdenoff-auth-client", i = class {
165
176
  log(...e) {
166
177
  this.debug && console.log("[AuthBridgeClient]", ...e);
167
178
  }
168
- }, a = null, o = !1, s = !1;
169
- function c(e) {
170
- return s && a ? (e.debug && console.log("[AuthBridgeClient] Returning existing instance"), a) : o && a ? (e.debug && console.log("[AuthBridgeClient] Initialization in progress, returning pending instance"), a) : (o && e.debug && console.log("[AuthBridgeClient] Concurrent init detected, waiting..."), o = !0, a = new i(e), a.init(), s = !0, o = !1, a);
171
- }
172
- function l() {
173
- return a;
179
+ }, o = null, s = !1, c = !1;
180
+ function l(e) {
181
+ return c && o ? (e.debug && console.log("[AuthBridgeClient] Returning existing instance"), o) : s && o ? (e.debug && console.log("[AuthBridgeClient] Initialization in progress, returning pending instance"), o) : (s && e.debug && console.log("[AuthBridgeClient] Concurrent init detected, waiting..."), s = !0, o = new a(e), o.init(), c = !0, s = !1, o);
174
182
  }
175
183
  function u() {
176
- return s && a !== null;
184
+ return o;
185
+ }
186
+ function d() {
187
+ return c && o !== null;
177
188
  }
178
- function d(e = !1) {
179
- e && a && (a.destroy(!0), a = null, s = !1);
189
+ function f(e = !1) {
190
+ e && o && (o.destroy(!0), o = null, c = !1);
180
191
  }
181
192
  //#endregion
182
- export { i as AuthBridgeClient, d as destroyAuthBridge, l as getAuthBridge, c as initAuthBridge, u as isAuthBridgeInitialized };
193
+ export { a as AuthBridgeClient, f as destroyAuthBridge, u as getAuthBridge, l as initAuthBridge, d as isAuthBridgeInitialized };
@@ -8,6 +8,8 @@ export interface MultiGatewayProviderProps {
8
8
  globalBaseUrl?: string;
9
9
  /** Organization ID getter for x-org-id header (global gateway) */
10
10
  organizationId?: () => string | null;
11
+ /** Product slug for x-product-slug propagation */
12
+ productSlug?: string;
11
13
  /** Default gateway for the app (used by top-level ApolloProvider) */
12
14
  defaultGateway?: Gateway;
13
15
  /** Enable debug logging */
@@ -21,5 +23,5 @@ export interface MultiGatewayProviderProps {
21
23
  /** Callback to attempt token refresh on 401 */
22
24
  onRefreshToken?: () => Promise<boolean>;
23
25
  }
24
- export declare function MultiGatewayProvider({ children, workspaceBaseUrl, globalBaseUrl, organizationId, defaultGateway, debug, enableSubscriptions, onAuthError, onNetworkError, onRefreshToken, }: MultiGatewayProviderProps): import("react/jsx-runtime").JSX.Element;
26
+ export declare function MultiGatewayProvider({ children, workspaceBaseUrl, globalBaseUrl, organizationId, productSlug, defaultGateway, debug, enableSubscriptions, onAuthError, onNetworkError, onRefreshToken, }: MultiGatewayProviderProps): import("react/jsx-runtime").JSX.Element;
25
27
  //# sourceMappingURL=MultiGatewayProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiGatewayProvider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/shell/MultiGatewayProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAA2C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIhF,OAAO,EAAuB,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAKzE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,SAAS,CAAC;IACpB,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACrC,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2BAA2B;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,yCAAyC;IACzC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACxC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACzC;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,cAA4B,EAC5B,KAAa,EACb,mBAA2B,EAC3B,WAAW,EACX,cAAc,EACd,cAAc,GACf,EAAE,yBAAyB,2CAoR3B"}
1
+ {"version":3,"file":"MultiGatewayProvider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/shell/MultiGatewayProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAA2C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIhF,OAAO,EAAuB,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAKzE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,SAAS,CAAC;IACpB,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACrC,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2BAA2B;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,yCAAyC;IACzC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACxC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACzC;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,WAAW,EACX,cAA4B,EAC5B,KAAa,EACb,mBAA2B,EAC3B,WAAW,EACX,cAAc,EACd,cAAc,GACf,EAAE,yBAAyB,2CAwR3B"}