@burdenoff/fe-libs 2026.716.1 → 2026.717.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.
- package/dist/node_modules/web-vitals/dist/web-vitals.js +28 -13
- package/dist/shared/components/assistantWidget/AssistantWidget.d.ts +30 -2
- package/dist/shared/components/assistantWidget/AssistantWidget.d.ts.map +1 -1
- package/dist/shared/components/assistantWidget/AssistantWidget.js +214 -168
- package/dist/shared/components/index.d.ts +1 -1
- package/dist/shared/components/index.d.ts.map +1 -1
- package/dist/shared/events/index.d.ts +3 -2
- package/dist/shared/events/index.d.ts.map +1 -1
- package/dist/shared/providers/AppShellProvider.d.ts.map +1 -1
- package/dist/shared/providers/AppShellProvider.js +112 -105
- package/dist/shared/providers/shell/ObservabilityProvider.d.ts +14 -1
- package/dist/shared/providers/shell/ObservabilityProvider.d.ts.map +1 -1
- package/dist/shared/providers/shell/ObservabilityProvider.js +20 -18
- package/package.json +3 -1
- package/shared/config/lighthouse-budget.json +19 -0
- package/shared/config/lighthouserc.base.json +44 -0
|
@@ -19,26 +19,26 @@ import { ShellUiProvider as b } from "./shell/ShellUiProvider.js";
|
|
|
19
19
|
import { ContextManagerProvider as re } from "./shell/ContextManagerProvider.js";
|
|
20
20
|
import { AuthTokenProvider as ie } from "./shell/AuthTokenProvider.js";
|
|
21
21
|
import { MultiGatewayProvider as ae } from "./shell/MultiGatewayProvider.js";
|
|
22
|
-
import { G as x,
|
|
23
|
-
import { ProfileI18nBridge as
|
|
22
|
+
import { G as x, Q as S, j as C, w as oe } from "../../node_modules/web-vitals/dist/web-vitals.js";
|
|
23
|
+
import { ProfileI18nBridge as se } from "./shell/ProfileI18nBridge.js";
|
|
24
24
|
import { ProfileGeographyBridge as w } from "./shell/ProfileGeographyBridge.js";
|
|
25
|
-
import { DevtoolsSink as
|
|
26
|
-
import { BroadcastChannelSink as
|
|
27
|
-
import { BackendAuditSink as
|
|
28
|
-
import { RybbitSink as
|
|
29
|
-
import { OtelBrowserSink as
|
|
30
|
-
import { EventBusProvider as ce, useEventBus as
|
|
31
|
-
import { useReferralAttribution as
|
|
32
|
-
import { TourPlayerProvider as
|
|
33
|
-
import { ToursProvider as
|
|
34
|
-
import { TourInitializer as
|
|
35
|
-
import { Suspense as
|
|
36
|
-
import { Fragment as
|
|
37
|
-
import { BrowserRouter as le, useLocation as
|
|
38
|
-
import { Toaster as
|
|
25
|
+
import { DevtoolsSink as T } from "../events/sinks/DevtoolsSink.js";
|
|
26
|
+
import { BroadcastChannelSink as E } from "../events/sinks/BroadcastChannelSink.js";
|
|
27
|
+
import { BackendAuditSink as D } from "../events/sinks/BackendAuditSink.js";
|
|
28
|
+
import { RybbitSink as O } from "../events/sinks/RybbitSink.js";
|
|
29
|
+
import { OtelBrowserSink as k } from "../events/sinks/OtelBrowserSink.js";
|
|
30
|
+
import { EventBusProvider as ce, useEventBus as A } from "../../shared-events.js";
|
|
31
|
+
import { useReferralAttribution as j } from "../hooks/useReferralAttribution.js";
|
|
32
|
+
import { TourPlayerProvider as M } from "../tours/TourPlayerProvider.js";
|
|
33
|
+
import { ToursProvider as N, useToursContext as P } from "../tours/ToursContext.js";
|
|
34
|
+
import { TourInitializer as F } from "../tours/TourInitializer.js";
|
|
35
|
+
import { Suspense as I, useCallback as L, useEffect as R, useMemo as z, useRef as B } from "react";
|
|
36
|
+
import { Fragment as V, jsx as H, jsxs as U } from "react/jsx-runtime";
|
|
37
|
+
import { BrowserRouter as le, useLocation as W } from "react-router-dom";
|
|
38
|
+
import { Toaster as G, toast as K } from "sonner";
|
|
39
39
|
import { MutationCache as ue, QueryCache as de, QueryClient as fe, QueryClientProvider as pe } from "@tanstack/react-query";
|
|
40
40
|
//#region src/shared/providers/AppShellProvider.tsx
|
|
41
|
-
var
|
|
41
|
+
var q = {
|
|
42
42
|
artistrybase: { prod: "cfbecacb6002" },
|
|
43
43
|
atheletebridge: { prod: "c34c6ead7aa8" },
|
|
44
44
|
adaptercloud: {},
|
|
@@ -67,8 +67,8 @@ var K = {
|
|
|
67
67
|
subscriberbot: {},
|
|
68
68
|
intelwatchtower: {},
|
|
69
69
|
kadaikodi: {}
|
|
70
|
-
},
|
|
71
|
-
function
|
|
70
|
+
}, J = /* @__PURE__ */ "nav.route.changed,auth.signed_in,auth.signed_out,support.ticket.created,support.ticket.closed,support.ticket.reopened,support.kb.article_rated,conversations.conversation.created,conversations.conversation.archived,notification.item.opened,notification.preference.updated,notification.admin.sent,notification.template.saved,notification.schedule.updated,collabkin.tree.created,collabkin.person.created,collabkin.memory.created,collabkin.story.created,collabkin.member.invited,crewfoundry.page.viewed,crewfoundry.dashboard.viewed,crewfoundry.job_posting.created,crewfoundry.candidate.created,crewfoundry.employee.created,crewfoundry.team.created,crewfoundry.project.created,crewfoundry.course.enrolled,crewfoundry.learning_path.created,crewfoundry.service.listed,crewfoundry.leave.approved,crewfoundry.payroll.processed,crewfoundry.invoice.created,coolandlovely.page.viewed,coolandlovely.brand.created,coolandlovely.collection.created,coolandlovely.style_item.created,coolandlovely.look.created,coolandlovely.collaboration.created,coolandlovely.lookbook.created,coolandlovely.wardrobe.item_added,coolandlovely.search.performed,vibecontrols.agent.registered,atheletebridge.page.viewed,atheletebridge.team.created,atheletebridge.fixture.created,atheletebridge.program.created,atheletebridge.session.completed,atheletebridge.metric.logged,atheletebridge.tournament.created,vibecontrols.agent.gateway_auth_setup,vibecontrols.session.created,vibecontrols.session.started,vibecontrols.session.terminal_opened_in_browser,vibecontrols.session.share_link_created,vibecontrols.session.joined_shared,vibecontrols.tunnel.created,vibecontrols.tunnel.started,vibecontrols.vibedeck.button_executed,vibecontrols.quota.agent_limit_hit,vibecontrols.quota.session_limit_hit,vibecontrols.quota.tunnel_limit_hit,vibecontrols.billing.upgrade_clicked,bigconsole.dashboard.imported,bigconsole.dashboard.shared,bigconsole.data_sink.imported,bigconsole.widget.created,bigconsole.widget.duplicated,bigconsole.ai.dashboard_generated,bigconsole.ai.dashboard_created,assethandler.page.viewed,assethandler.asset.viewed,assethandler.asset.created,assethandler.work_order.viewed,assethandler.work_order.created,assethandler.incident.viewed,assethandler.incident.created,assethandler.change.viewed,assethandler.change.created,assethandler.problem.viewed,assethandler.problem.created,assethandler.maintenance.viewed,assethandler.maintenance.created,assethandler.report.viewed,assethandler.analytics.viewed,movethewheels.page.viewed,movethewheels.shipment.created,movethewheels.shipment.delivered,movethewheels.order.created,movethewheels.route.planned,movethewheels.vehicle.assigned,movethewheels.warehouse.inbound_received,theglobalfuel.dashboard.viewed,theglobalfuel.asset.created,theglobalfuel.production.recorded,theglobalfuel.reserve.created,theglobalfuel.contract.created,theglobalfuel.shipment.scheduled,theglobalfuel.shipment.delivered,theglobalfuel.inventory_lot.created,theglobalfuel.emission.recorded,theglobalfuel.emission.verified,theglobalfuel.compliance_cert.created,housingvista.dashboard.viewed,housingvista.property.created,housingvista.property.updated,housingvista.property.deleted,housingvista.property.viewed,housingvista.shortlist.property_added,housingvista.transaction.created,housingvista.transaction.updated,housingvista.investment.created,housingvista.offer.created,housingvista.viewing.scheduled,housingvista.chat.conversation_opened,housingvista.chat.message_sent,housingvista.analytics.viewed,housingvista.asset.created,housingvista.asset.updated,housingvista.amc.purchased,housingvista.verification.submitted,housingvista.home_loan.apply_clicked,housingvista.market_analytics.viewed,housingvista.search.performed,housingvista.export.requested,manufacturedops.production_order.created,manufacturedops.production_order.updated,manufacturedops.production_order.transitioned,manufacturedops.operation.added,manufacturedops.operation.recorded,manufacturedops.work_center.created,manufacturedops.work_center.updated,manufacturedops.work_center.archived,manufacturedops.material_lot.created,manufacturedops.material_lot.updated,manufacturedops.material_lot.status_updated,manufacturedops.inspection_plan.created,manufacturedops.quality_inspection.recorded,manufacturedops.non_conformance.raised,manufacturedops.non_conformance.updated,manufacturedops.non_conformance.transitioned,manufacturedops.asset.created,manufacturedops.maintenance_work_order.created,manufacturedops.maintenance_work_order.transitioned,manufacturedops.downtime_event.recorded,manufacturedops.page.viewed,subscriberbot.page.viewed,adaptercloud.page.viewed,comradecircle.page.viewed,comradecircle.circle.created,comradecircle.post.created,comradecircle.event.created,comradecircle.member.invited,psw.client.created,psw.client.updated,psw.client.archived,psw.engagement.created,psw.engagement.transitioned,psw.matter.created,psw.matter.closed,psw.timeentry.created,psw.invoice.created,psw.compliance.resolved,psw.conflictcheck.recorded,psw.document.created,psw.practicearea.created,psw.search.performed,psw.export.requested,mybodyshield.page.viewed,mybodyshield.program.created,mybodyshield.program.updated,mybodyshield.program.status_changed,mybodyshield.program.archived,mybodyshield.workout.created,mybodyshield.exercise.created,mybodyshield.session.started,intelwatchtower.page.viewed,intelwatchtower.source.created,intelwatchtower.mission.created,intelwatchtower.mission.assigned,intelwatchtower.mission.completed,intelwatchtower.entity.created,intelwatchtower.entity.linked,intelwatchtower.indicator.created,intelwatchtower.observation.created,intelwatchtower.alert.created,intelwatchtower.alert.escalated,intelwatchtower.case.created,intelwatchtower.case.closed,intelwatchtower.report.created,intelwatchtower.report.exported,intelwatchtower.task.created,intelwatchtower.task.completed,intelwatchtower.cop.opened,govcitizenhub.page.viewed,govcitizenhub.dashboard.viewed,govcitizenhub.service.published,govcitizenhub.application.submitted,govcitizenhub.application.decided,govcitizenhub.permit.issued,govcitizenhub.payment.settled,govcitizenhub.grievance.reported,govcitizenhub.grievance.resolved,govcitizenhub.search.performed,cosmicintersection.page.viewed,labsofscience.page.viewed,labsofscience.project.created,labsofscience.experiment.created,labsofscience.protocol.created,labsofscience.dataset.created,labsofscience.inventory_item.created,labsofscience.notebook_entry.signed,labsofscience.pipeline.run_started,hookmovies.page.viewed,headshotmarketing.page.viewed,timecampus.page.viewed,timecampus.dashboard.viewed,timecampus.timer.started,timecampus.timer.stopped,timecampus.time_entry.created,timecampus.timesheet.submitted,timecampus.report.viewed,timecampus.project.viewed,timecampus.meeting.created,timecampus.pomodoro.session.completed,timecampus.focus_score.viewed,kadaikodi.page.viewed,healthybowl.farm.created,healthybowl.crop.created,healthybowl.crop.updated,healthybowl.harvest.recorded".split(","), Y = 4e3;
|
|
71
|
+
function X(e) {
|
|
72
72
|
let t = e.technicalMessage ?? e.extensions?.technicalMessage, n = {
|
|
73
73
|
code: e.code,
|
|
74
74
|
operationName: e.operationName,
|
|
@@ -80,13 +80,13 @@ function Y(e) {
|
|
|
80
80
|
};
|
|
81
81
|
console.error("[Burdenoff backend error]", e.message, n);
|
|
82
82
|
}
|
|
83
|
-
function
|
|
83
|
+
function Z(e) {
|
|
84
84
|
return e === "prod" || e === "production" ? "prod" : e === "alpha" || e === "staging" ? "alpha" : "dev";
|
|
85
85
|
}
|
|
86
|
-
function
|
|
86
|
+
function me(e, t) {
|
|
87
87
|
return e.VITE_DISABLE_ANALYTICS === "true" ? !1 : e.VITE_ENABLE_ANALYTICS === "true" || e.PROD || t !== "dev" ? !0 : e.VITE_ENABLE_ANALYTICS !== "false";
|
|
88
88
|
}
|
|
89
|
-
function
|
|
89
|
+
function he() {
|
|
90
90
|
return {
|
|
91
91
|
BASE_URL: "/",
|
|
92
92
|
DEV: !1,
|
|
@@ -96,7 +96,7 @@ function me() {
|
|
|
96
96
|
};
|
|
97
97
|
}
|
|
98
98
|
function Q(e, t) {
|
|
99
|
-
let n =
|
|
99
|
+
let n = Z(t.VITE_DEPLOY_ENV ?? t.MODE), r = me(t, n), i = q[e], a = n === "prod" ? i?.prod : i?.nonProd, o = t.VITE_RYBBIT_SITE_ID || a, s = t.VITE_BACKEND_AUDIT_ENDPOINT || (t.PROD ? "/api/fe-events" : void 0);
|
|
100
100
|
return {
|
|
101
101
|
enabled: r,
|
|
102
102
|
appVersion: t.VITE_APP_VERSION || "0.0.0",
|
|
@@ -107,7 +107,7 @@ function Q(e, t) {
|
|
|
107
107
|
enabled: r && !!o,
|
|
108
108
|
siteId: o,
|
|
109
109
|
scriptUrl: t.VITE_RYBBIT_SCRIPT_URL,
|
|
110
|
-
allowlist:
|
|
110
|
+
allowlist: J,
|
|
111
111
|
identifyOn: "auth.signed_in",
|
|
112
112
|
rename: { "nav.route.changed": "pageview" }
|
|
113
113
|
},
|
|
@@ -122,16 +122,16 @@ function Q(e, t) {
|
|
|
122
122
|
}
|
|
123
123
|
};
|
|
124
124
|
}
|
|
125
|
-
function
|
|
126
|
-
let { trackProgress: a, recordStepCompletion: o, trackEvent: s } =
|
|
127
|
-
return /* @__PURE__ */
|
|
128
|
-
onTourStart:
|
|
125
|
+
function ge({ children: e, enablePWA: t, toasterPosition: n, productName: r, brandInitial: i }) {
|
|
126
|
+
let { trackProgress: a, recordStepCompletion: o, trackEvent: s } = P(), c = L((e, t) => e.steps?.[t], []);
|
|
127
|
+
return /* @__PURE__ */ U(M, {
|
|
128
|
+
onTourStart: L((e) => {
|
|
129
129
|
a(e.id, "started"), s("TOUR_STARTED", e.id);
|
|
130
130
|
}, [s, a]),
|
|
131
|
-
onTourComplete:
|
|
131
|
+
onTourComplete: L((e) => {
|
|
132
132
|
a(e.id, "completed"), s("TOUR_COMPLETED", e.id);
|
|
133
133
|
}, [s, a]),
|
|
134
|
-
onTourSkip:
|
|
134
|
+
onTourSkip: L((e, t) => {
|
|
135
135
|
let n = c(e, t);
|
|
136
136
|
a(e.id, "skipped"), s("TOUR_SKIPPED", e.id, {
|
|
137
137
|
stepId: n?.id,
|
|
@@ -142,14 +142,14 @@ function he({ children: e, enablePWA: t, toasterPosition: n, productName: r, bra
|
|
|
142
142
|
s,
|
|
143
143
|
a
|
|
144
144
|
]),
|
|
145
|
-
onStepChange:
|
|
145
|
+
onStepChange: L((e, t) => {
|
|
146
146
|
let n = c(e, t);
|
|
147
147
|
n && s("STEP_VIEWED", e.id, {
|
|
148
148
|
stepId: n.id,
|
|
149
149
|
stepOrder: n.stepOrder
|
|
150
150
|
});
|
|
151
151
|
}, [c, s]),
|
|
152
|
-
onStepComplete:
|
|
152
|
+
onStepComplete: L((e, t) => {
|
|
153
153
|
let n = c(e, t);
|
|
154
154
|
n && (o(e.id, n.id), s("STEP_COMPLETED", e.id, {
|
|
155
155
|
stepId: n.id,
|
|
@@ -161,18 +161,18 @@ function he({ children: e, enablePWA: t, toasterPosition: n, productName: r, bra
|
|
|
161
161
|
s
|
|
162
162
|
]),
|
|
163
163
|
children: [
|
|
164
|
-
/* @__PURE__ */
|
|
164
|
+
/* @__PURE__ */ H(F, {}),
|
|
165
165
|
e,
|
|
166
|
-
/* @__PURE__ */
|
|
167
|
-
/* @__PURE__ */
|
|
168
|
-
/* @__PURE__ */
|
|
166
|
+
/* @__PURE__ */ H(_e, {}),
|
|
167
|
+
/* @__PURE__ */ H(ye, {}),
|
|
168
|
+
/* @__PURE__ */ H(G, {
|
|
169
169
|
position: n,
|
|
170
170
|
richColors: !0,
|
|
171
171
|
closeButton: !0
|
|
172
172
|
}),
|
|
173
|
-
t && /* @__PURE__ */
|
|
173
|
+
t && /* @__PURE__ */ H(I, {
|
|
174
174
|
fallback: null,
|
|
175
|
-
children: /* @__PURE__ */
|
|
175
|
+
children: /* @__PURE__ */ H(g, {
|
|
176
176
|
productName: r,
|
|
177
177
|
brandInitial: i
|
|
178
178
|
})
|
|
@@ -180,44 +180,44 @@ function he({ children: e, enablePWA: t, toasterPosition: n, productName: r, bra
|
|
|
180
180
|
]
|
|
181
181
|
});
|
|
182
182
|
}
|
|
183
|
-
function
|
|
184
|
-
let e =
|
|
185
|
-
return
|
|
183
|
+
function _e() {
|
|
184
|
+
let e = B(null);
|
|
185
|
+
return R(() => {
|
|
186
186
|
let t = (t) => {
|
|
187
187
|
let n = t instanceof CustomEvent && a(t.detail) ? t.detail : null;
|
|
188
188
|
if (!o(n)) return;
|
|
189
|
-
|
|
189
|
+
X(n);
|
|
190
190
|
let r = `${n.code ?? ""}|${n.message}`, i = Date.now(), s = e.current;
|
|
191
|
-
s?.key === r && i - s.shownAt <
|
|
191
|
+
s?.key === r && i - s.shownAt < Y || (e.current = {
|
|
192
192
|
key: r,
|
|
193
193
|
shownAt: i
|
|
194
|
-
},
|
|
194
|
+
}, K.error(n.message, { duration: 7e3 }));
|
|
195
195
|
};
|
|
196
196
|
return window.addEventListener(n, t), () => window.removeEventListener(n, t);
|
|
197
197
|
}, []), null;
|
|
198
198
|
}
|
|
199
|
-
var $ = "burdenoff-connection-status",
|
|
200
|
-
function
|
|
201
|
-
let e =
|
|
202
|
-
return
|
|
199
|
+
var $ = "burdenoff-connection-status", ve = 1500;
|
|
200
|
+
function ye() {
|
|
201
|
+
let e = B(null), t = B(!1);
|
|
202
|
+
return R(() => {
|
|
203
203
|
let n = () => {
|
|
204
|
-
t.current || (t.current = !0,
|
|
204
|
+
t.current || (t.current = !0, K.error("Connection lost. Trying to reconnect…", {
|
|
205
205
|
id: $,
|
|
206
206
|
duration: Infinity
|
|
207
207
|
}));
|
|
208
208
|
}, i = () => {
|
|
209
209
|
t.current || e.current || (e.current = setTimeout(() => {
|
|
210
210
|
e.current = null, n();
|
|
211
|
-
},
|
|
211
|
+
}, ve));
|
|
212
212
|
}, a = (n) => {
|
|
213
213
|
if (e.current &&= (clearTimeout(e.current), null), !t.current) {
|
|
214
|
-
|
|
214
|
+
K.dismiss($);
|
|
215
215
|
return;
|
|
216
216
|
}
|
|
217
|
-
t.current = !1, n ?
|
|
217
|
+
t.current = !1, n ? K.success("Back online", {
|
|
218
218
|
id: $,
|
|
219
219
|
duration: 2500
|
|
220
|
-
}) :
|
|
220
|
+
}) : K.dismiss($);
|
|
221
221
|
}, o = (e) => {
|
|
222
222
|
if (!(e instanceof CustomEvent)) return;
|
|
223
223
|
let t = e.detail;
|
|
@@ -230,18 +230,18 @@ function ve() {
|
|
|
230
230
|
};
|
|
231
231
|
}, []), null;
|
|
232
232
|
}
|
|
233
|
-
function
|
|
234
|
-
let f =
|
|
235
|
-
|
|
236
|
-
let p = /* @__PURE__ */
|
|
233
|
+
function be({ children: e, i18nProductId: t, fallbackTranslations: n, defaultBrand: r, defaultMode: i, defaultDensity: a, defaultTypography: o, defaultGlass: s, productName: c, brandInitial: l, enablePWA: u, toasterPosition: d }) {
|
|
234
|
+
let f = W();
|
|
235
|
+
j();
|
|
236
|
+
let p = /* @__PURE__ */ H(w, { children: /* @__PURE__ */ H(_, { children: /* @__PURE__ */ H(v, {
|
|
237
237
|
workspaceId: null,
|
|
238
238
|
gateway: "global",
|
|
239
239
|
defaultEnabled: !0,
|
|
240
|
-
children: /* @__PURE__ */
|
|
240
|
+
children: /* @__PURE__ */ H(y, { children: /* @__PURE__ */ H(b, { children: /* @__PURE__ */ H(h, {
|
|
241
241
|
fallback: null,
|
|
242
|
-
children: /* @__PURE__ */
|
|
242
|
+
children: /* @__PURE__ */ H(N, {
|
|
243
243
|
disabled: f.pathname.startsWith("/devportal") || f.pathname.startsWith("/organizations") || f.pathname.startsWith("/workspaces"),
|
|
244
|
-
children: /* @__PURE__ */
|
|
244
|
+
children: /* @__PURE__ */ H(ge, {
|
|
245
245
|
enablePWA: u,
|
|
246
246
|
toasterPosition: d,
|
|
247
247
|
productName: c,
|
|
@@ -251,22 +251,22 @@ function ye({ children: e, i18nProductId: t, fallbackTranslations: n, defaultBra
|
|
|
251
251
|
})
|
|
252
252
|
}) }) })
|
|
253
253
|
}) }) });
|
|
254
|
-
return /* @__PURE__ */
|
|
254
|
+
return /* @__PURE__ */ U(m, {
|
|
255
255
|
defaultBrand: r,
|
|
256
256
|
defaultMode: i,
|
|
257
257
|
defaultDensity: a,
|
|
258
258
|
defaultTypography: o,
|
|
259
259
|
defaultGlass: s,
|
|
260
|
-
children: [/* @__PURE__ */
|
|
260
|
+
children: [/* @__PURE__ */ H(xe, {}), /* @__PURE__ */ H(se, {
|
|
261
261
|
i18nProductId: t,
|
|
262
262
|
fallbackTranslations: n,
|
|
263
263
|
children: p
|
|
264
264
|
})]
|
|
265
265
|
});
|
|
266
266
|
}
|
|
267
|
-
function
|
|
268
|
-
let e =
|
|
269
|
-
return
|
|
267
|
+
function xe() {
|
|
268
|
+
let e = W();
|
|
269
|
+
return R(() => {
|
|
270
270
|
e.hash || requestAnimationFrame(() => {
|
|
271
271
|
window.scrollTo({
|
|
272
272
|
top: 0,
|
|
@@ -284,7 +284,7 @@ function be() {
|
|
|
284
284
|
e.hash
|
|
285
285
|
]), null;
|
|
286
286
|
}
|
|
287
|
-
function
|
|
287
|
+
function Se(e) {
|
|
288
288
|
if (e instanceof Error) return e.message;
|
|
289
289
|
if (typeof e == "string") return e;
|
|
290
290
|
try {
|
|
@@ -293,9 +293,9 @@ function xe(e) {
|
|
|
293
293
|
return String(e);
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
|
-
function
|
|
297
|
-
let e =
|
|
298
|
-
return
|
|
296
|
+
function Ce() {
|
|
297
|
+
let e = A(), t = W(), n = B(void 0), r = B(void 0), i = B(null);
|
|
298
|
+
return R(() => {
|
|
299
299
|
let a = `${t.pathname}${t.search}${t.hash}`;
|
|
300
300
|
if (r.current !== a) return i.current && clearTimeout(i.current), i.current = setTimeout(() => {
|
|
301
301
|
i.current = null;
|
|
@@ -315,7 +315,7 @@ function Se() {
|
|
|
315
315
|
t.hash,
|
|
316
316
|
t.pathname,
|
|
317
317
|
t.search
|
|
318
|
-
]),
|
|
318
|
+
]), R(() => {
|
|
319
319
|
let t = (t) => {
|
|
320
320
|
e.emit("error.runtime.caught", {
|
|
321
321
|
message: t.message || "Runtime error",
|
|
@@ -325,12 +325,12 @@ function Se() {
|
|
|
325
325
|
errorName: t.error instanceof Error ? t.error.name : void 0
|
|
326
326
|
});
|
|
327
327
|
}, n = (t) => {
|
|
328
|
-
e.emit("error.unhandledrejection", { reason:
|
|
328
|
+
e.emit("error.unhandledrejection", { reason: Se(t.reason) });
|
|
329
329
|
};
|
|
330
330
|
return window.addEventListener("error", t), window.addEventListener("unhandledrejection", n), () => {
|
|
331
331
|
window.removeEventListener("error", t), window.removeEventListener("unhandledrejection", n);
|
|
332
332
|
};
|
|
333
|
-
}, [e]),
|
|
333
|
+
}, [e]), R(() => {
|
|
334
334
|
x((t) => {
|
|
335
335
|
e.emit("perf.lcp.measured", {
|
|
336
336
|
metric: "LCP",
|
|
@@ -338,44 +338,51 @@ function Se() {
|
|
|
338
338
|
id: t.id,
|
|
339
339
|
rating: t.rating
|
|
340
340
|
});
|
|
341
|
-
}),
|
|
341
|
+
}), oe((t) => {
|
|
342
342
|
e.emit("perf.cls.measured", {
|
|
343
343
|
metric: "CLS",
|
|
344
344
|
value: t.value,
|
|
345
345
|
id: t.id,
|
|
346
346
|
rating: t.rating
|
|
347
347
|
});
|
|
348
|
-
}),
|
|
348
|
+
}), C((t) => {
|
|
349
349
|
e.emit("perf.inp.measured", {
|
|
350
350
|
metric: "INP",
|
|
351
351
|
value: t.value,
|
|
352
352
|
id: t.id,
|
|
353
353
|
rating: t.rating
|
|
354
354
|
});
|
|
355
|
+
}), S((t) => {
|
|
356
|
+
e.emit("perf.ttfb.measured", {
|
|
357
|
+
metric: "TTFB",
|
|
358
|
+
value: t.value,
|
|
359
|
+
id: t.id,
|
|
360
|
+
rating: t.rating
|
|
361
|
+
});
|
|
355
362
|
});
|
|
356
363
|
}, [e]), null;
|
|
357
364
|
}
|
|
358
|
-
function
|
|
359
|
-
return /* @__PURE__ */
|
|
360
|
-
e.devtools ? /* @__PURE__ */
|
|
361
|
-
e.broadcast === !1 ? null : /* @__PURE__ */
|
|
362
|
-
e.backendAudit?.enabled && e.backendAudit.endpoint ? /* @__PURE__ */
|
|
363
|
-
e.rybbit?.enabled && e.rybbit.siteId ? /* @__PURE__ */
|
|
365
|
+
function we({ config: e, productSlug: t }) {
|
|
366
|
+
return /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(Ce, {}), e.enabled === !1 ? null : /* @__PURE__ */ U(V, { children: [
|
|
367
|
+
e.devtools ? /* @__PURE__ */ H(T, { enabled: !0 }) : null,
|
|
368
|
+
e.broadcast === !1 ? null : /* @__PURE__ */ H(E, {}),
|
|
369
|
+
e.backendAudit?.enabled && e.backendAudit.endpoint ? /* @__PURE__ */ H(D, { endpoint: e.backendAudit.endpoint }) : null,
|
|
370
|
+
e.rybbit?.enabled && e.rybbit.siteId ? /* @__PURE__ */ H(O, {
|
|
364
371
|
siteId: e.rybbit.siteId,
|
|
365
372
|
scriptUrl: e.rybbit.scriptUrl,
|
|
366
373
|
allowlist: e.rybbit.allowlist,
|
|
367
374
|
identifyOn: e.rybbit.identifyOn,
|
|
368
375
|
rename: e.rybbit.rename
|
|
369
376
|
}) : null,
|
|
370
|
-
e.otel?.enabled && e.otel.endpoint ? /* @__PURE__ */
|
|
377
|
+
e.otel?.enabled && e.otel.endpoint ? /* @__PURE__ */ H(k, {
|
|
371
378
|
endpoint: e.otel.endpoint,
|
|
372
379
|
serviceName: e.otel.serviceName ?? `${t}-app`,
|
|
373
380
|
flushInterval: e.otel.flushInterval
|
|
374
381
|
}) : null
|
|
375
382
|
] })] });
|
|
376
383
|
}
|
|
377
|
-
function
|
|
378
|
-
let { productName: o, productSlug: m = o.toLowerCase().replace(/\s+/g, ""), tagline: g = "", domain: _, i18nProductId: v, gatewayUrls: y, authBridge: b, defaultBrand: x = "default", defaultMode: S, defaultDensity: C, defaultTypography: oe, defaultGlass:
|
|
384
|
+
function Te({ config: n, children: r, clearAuthStore: a }) {
|
|
385
|
+
let { productName: o, productSlug: m = o.toLowerCase().replace(/\s+/g, ""), tagline: g = "", domain: _, i18nProductId: v, gatewayUrls: y, authBridge: b, defaultBrand: x = "default", defaultMode: S, defaultDensity: C, defaultTypography: oe, defaultGlass: se, enablePWA: w = !0, brandInitial: T = o.charAt(0), defaultGateway: E = "workspace", enableSubscriptions: D = !0, fallbackTranslations: O, queryClientOptions: k, toasterPosition: A = "bottom-right", observability: j } = n, M = j ?? Q(m, he()), N = z(() => ({
|
|
379
386
|
productName: o,
|
|
380
387
|
productSlug: m,
|
|
381
388
|
brandInitial: T,
|
|
@@ -387,7 +394,7 @@ function we({ config: n, children: r, clearAuthStore: a }) {
|
|
|
387
394
|
T,
|
|
388
395
|
g,
|
|
389
396
|
_
|
|
390
|
-
]), P =
|
|
397
|
+
]), P = B(!1), F = B(!1), I = B(null), V = B(!!b?.url), W = L(() => {
|
|
391
398
|
if ((() => {
|
|
392
399
|
try {
|
|
393
400
|
let e = sessionStorage.getItem("bf-active-profile");
|
|
@@ -397,7 +404,7 @@ function we({ config: n, children: r, clearAuthStore: a }) {
|
|
|
397
404
|
} catch {
|
|
398
405
|
return !1;
|
|
399
406
|
}
|
|
400
|
-
})() ||
|
|
407
|
+
})() || V.current || P.current) return;
|
|
401
408
|
P.current = !0, l(a);
|
|
402
409
|
let t = `${window.location.pathname}${window.location.search}`, n = `/auth/login?reason=session-expired&returnTo=${encodeURIComponent(t)}`, r = /^\/vibecontrols\/(share|deck)\//.test(window.location.pathname);
|
|
403
410
|
if (window.location.pathname.startsWith("/auth/") || e(window.location.pathname) || r) {
|
|
@@ -405,15 +412,15 @@ function we({ config: n, children: r, clearAuthStore: a }) {
|
|
|
405
412
|
return;
|
|
406
413
|
}
|
|
407
414
|
window.location.replace(n);
|
|
408
|
-
}, [a]), G =
|
|
415
|
+
}, [a]), G = z(() => ({
|
|
409
416
|
globalBaseUrl: y.globalBaseUrl,
|
|
410
417
|
isRefreshing: F,
|
|
411
|
-
refreshPromise:
|
|
412
|
-
}), [y.globalBaseUrl]), K =
|
|
418
|
+
refreshPromise: I
|
|
419
|
+
}), [y.globalBaseUrl]), K = L(async () => c(G), [G]), q = L(async () => {
|
|
413
420
|
window.location.pathname.startsWith("/auth/") || await K() || W();
|
|
414
|
-
}, [K, W]), J =
|
|
421
|
+
}, [K, W]), J = L(async (e) => {
|
|
415
422
|
u(e) ? await K() || W() : console.error("[Network] Backend unreachable:", e.message);
|
|
416
|
-
}, [K, W]), Y =
|
|
423
|
+
}, [K, W]), Y = L(async (e) => {
|
|
417
424
|
let t = await s({
|
|
418
425
|
gateway: "global",
|
|
419
426
|
baseUrl: y.globalBaseUrl,
|
|
@@ -428,7 +435,7 @@ function we({ config: n, children: r, clearAuthStore: a }) {
|
|
|
428
435
|
refreshToken: n.refreshToken,
|
|
429
436
|
expiresAt: n.expiresIn ? Date.now() + n.expiresIn * 1e3 : void 0
|
|
430
437
|
};
|
|
431
|
-
}, [y.globalBaseUrl]), X =
|
|
438
|
+
}, [y.globalBaseUrl]), X = L(() => t("organization"), []), Z = z(() => {
|
|
432
439
|
let e = new fe({
|
|
433
440
|
queryCache: new de({ onError: (e) => {
|
|
434
441
|
i(e);
|
|
@@ -449,24 +456,24 @@ function we({ config: n, children: r, clearAuthStore: a }) {
|
|
|
449
456
|
});
|
|
450
457
|
return e;
|
|
451
458
|
}, [k]);
|
|
452
|
-
return
|
|
459
|
+
return R(() => {
|
|
453
460
|
let e = ee.getInstance();
|
|
454
461
|
e.getLogger("shell") || e.getLogger("shell").addTransport(new te());
|
|
455
|
-
}, []), /* @__PURE__ */
|
|
462
|
+
}, []), /* @__PURE__ */ H(d, {
|
|
456
463
|
value: N,
|
|
457
|
-
children: /* @__PURE__ */
|
|
464
|
+
children: /* @__PURE__ */ H(ce, {
|
|
458
465
|
appName: m,
|
|
459
466
|
appVersion: M.appVersion,
|
|
460
467
|
appEnv: M.appEnv,
|
|
461
468
|
sourceMfe: m,
|
|
462
|
-
children: /* @__PURE__ */
|
|
469
|
+
children: /* @__PURE__ */ H(h, {
|
|
463
470
|
FallbackComponent: ne,
|
|
464
|
-
children: /* @__PURE__ */
|
|
471
|
+
children: /* @__PURE__ */ U(le, { children: [/* @__PURE__ */ H(we, {
|
|
465
472
|
config: M,
|
|
466
473
|
productSlug: m
|
|
467
|
-
}), /* @__PURE__ */
|
|
474
|
+
}), /* @__PURE__ */ H(pe, {
|
|
468
475
|
client: Z,
|
|
469
|
-
children: /* @__PURE__ */
|
|
476
|
+
children: /* @__PURE__ */ H(ie, { children: /* @__PURE__ */ H(ae, {
|
|
470
477
|
workspaceBaseUrl: y.workspaceBaseUrl,
|
|
471
478
|
globalBaseUrl: y.globalBaseUrl,
|
|
472
479
|
organizationId: X,
|
|
@@ -476,13 +483,13 @@ function we({ config: n, children: r, clearAuthStore: a }) {
|
|
|
476
483
|
onAuthError: q,
|
|
477
484
|
onNetworkError: J,
|
|
478
485
|
onRefreshToken: K,
|
|
479
|
-
children: /* @__PURE__ */
|
|
486
|
+
children: /* @__PURE__ */ H(f, {
|
|
480
487
|
bridgeUrl: b?.url,
|
|
481
488
|
bridgeAllowedOrigins: b?.allowedOrigins,
|
|
482
489
|
bridgeDebug: b?.debug,
|
|
483
490
|
onRefreshToken: Y,
|
|
484
491
|
onBridgeReady: () => {
|
|
485
|
-
|
|
492
|
+
V.current = !1;
|
|
486
493
|
},
|
|
487
494
|
onSessionExpiringSoon: () => {
|
|
488
495
|
console.warn("[Auth] Session will expire in 5 minutes");
|
|
@@ -490,19 +497,19 @@ function we({ config: n, children: r, clearAuthStore: a }) {
|
|
|
490
497
|
onTokenExpired: () => {
|
|
491
498
|
W();
|
|
492
499
|
},
|
|
493
|
-
children: /* @__PURE__ */
|
|
500
|
+
children: /* @__PURE__ */ H(p, {
|
|
494
501
|
syncToUrl: !0,
|
|
495
|
-
children: /* @__PURE__ */
|
|
502
|
+
children: /* @__PURE__ */ H(re, { children: /* @__PURE__ */ H(be, {
|
|
496
503
|
i18nProductId: v,
|
|
497
504
|
fallbackTranslations: O,
|
|
498
505
|
defaultBrand: x,
|
|
499
506
|
defaultMode: S,
|
|
500
507
|
defaultDensity: C,
|
|
501
508
|
defaultTypography: oe,
|
|
502
|
-
defaultGlass:
|
|
509
|
+
defaultGlass: se,
|
|
503
510
|
productName: o,
|
|
504
511
|
brandInitial: T,
|
|
505
|
-
enablePWA:
|
|
512
|
+
enablePWA: w,
|
|
506
513
|
toasterPosition: A,
|
|
507
514
|
children: r
|
|
508
515
|
}) })
|
|
@@ -515,4 +522,4 @@ function we({ config: n, children: r, clearAuthStore: a }) {
|
|
|
515
522
|
});
|
|
516
523
|
}
|
|
517
524
|
//#endregion
|
|
518
|
-
export {
|
|
525
|
+
export { Te as AppShellProvider, Q as resolveAppShellObservabilityConfig };
|
|
@@ -9,7 +9,20 @@ export interface ObservabilityProviderProps {
|
|
|
9
9
|
* ObservabilityProvider handles frontend telemetry, including:
|
|
10
10
|
* 1. Global JS error capture
|
|
11
11
|
* 2. Unhandled promise rejection capture
|
|
12
|
-
* 3. Core Web Vitals monitoring (LCP, CLS, INP)
|
|
12
|
+
* 3. Core Web Vitals monitoring (LCP, CLS, INP, TTFB)
|
|
13
|
+
*
|
|
14
|
+
* TRANSPORT CAVEAT — read before relying on this for RUM.
|
|
15
|
+
* Everything below writes to the END USER'S browser console and nowhere else.
|
|
16
|
+
* There is no beacon, no collector, and no log-shipping agent inside a user's
|
|
17
|
+
* browser, so these values are NOT retrievable off-device and this provider
|
|
18
|
+
* alone does NOT constitute real-user monitoring.
|
|
19
|
+
*
|
|
20
|
+
* The transport that CAN ship these off-device is the event-bus path:
|
|
21
|
+
* AppShellProvider -> ShellTelemetryEmitter (perf.* events) -> OtelBrowserSink,
|
|
22
|
+
* which POSTs to VITE_OTEL_HTTP_ENDPOINT. That sink only mounts when the
|
|
23
|
+
* endpoint is configured; as of 2026-07-16 it is provisioned for no product,
|
|
24
|
+
* so the fleet has no field CWV data. Tracked as the RUM-sink follow-up
|
|
25
|
+
* (see atheletebridge-specs/business/status/PERFORMANCE_REPORT.md).
|
|
13
26
|
*/
|
|
14
27
|
export declare function ObservabilityProvider({ children, appName, release, environment, }: ObservabilityProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
15
28
|
//# sourceMappingURL=ObservabilityProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObservabilityProvider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/shell/ObservabilityProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED
|
|
1
|
+
{"version":3,"file":"ObservabilityProvider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/shell/ObservabilityProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,OAAO,EACP,OAAO,EACP,WAAW,GACZ,EAAE,0BAA0B,2CAgE5B"}
|
|
@@ -1,35 +1,37 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { G as e,
|
|
3
|
-
import { useEffect as
|
|
4
|
-
import { Fragment as
|
|
2
|
+
import { G as e, Q as t, j as n, w as r } from "../../../node_modules/web-vitals/dist/web-vitals.js";
|
|
3
|
+
import { useEffect as i } from "react";
|
|
4
|
+
import { Fragment as a, jsx as o } from "react/jsx-runtime";
|
|
5
5
|
//#region src/shared/providers/shell/ObservabilityProvider.tsx
|
|
6
|
-
function
|
|
7
|
-
return
|
|
8
|
-
let
|
|
9
|
-
console.error(`[TELEMETRY][ERROR] app=${
|
|
6
|
+
function s({ children: s, appName: c, release: l, environment: u }) {
|
|
7
|
+
return i(() => {
|
|
8
|
+
let i = (e) => {
|
|
9
|
+
console.error(`[TELEMETRY][ERROR] app=${c} release=${l} env=${u} type=runtime`, {
|
|
10
10
|
message: e.message,
|
|
11
11
|
filename: e.filename,
|
|
12
12
|
lineno: e.lineno,
|
|
13
13
|
colno: e.colno,
|
|
14
14
|
stack: e.error?.stack
|
|
15
15
|
});
|
|
16
|
-
},
|
|
17
|
-
console.error(`[TELEMETRY][ERROR] app=${
|
|
16
|
+
}, a = (e) => {
|
|
17
|
+
console.error(`[TELEMETRY][ERROR] app=${c} release=${l} env=${u} type=unhandledrejection`, { reason: e.reason });
|
|
18
18
|
};
|
|
19
|
-
return window.addEventListener("error",
|
|
20
|
-
console.info(`[TELEMETRY][PERF] app=${
|
|
19
|
+
return window.addEventListener("error", i), window.addEventListener("unhandledrejection", a), e((e) => {
|
|
20
|
+
console.info(`[TELEMETRY][PERF] app=${c} release=${l} env=${u} metric=LCP value=${e.value} id=${e.id}`);
|
|
21
|
+
}), r((e) => {
|
|
22
|
+
console.info(`[TELEMETRY][PERF] app=${c} release=${l} env=${u} metric=CLS value=${e.value} id=${e.id}`);
|
|
21
23
|
}), n((e) => {
|
|
22
|
-
console.info(`[TELEMETRY][PERF] app=${
|
|
24
|
+
console.info(`[TELEMETRY][PERF] app=${c} release=${l} env=${u} metric=INP value=${e.value} id=${e.id}`);
|
|
23
25
|
}), t((e) => {
|
|
24
|
-
console.info(`[TELEMETRY][PERF] app=${
|
|
26
|
+
console.info(`[TELEMETRY][PERF] app=${c} release=${l} env=${u} metric=TTFB value=${e.value} id=${e.id}`);
|
|
25
27
|
}), () => {
|
|
26
|
-
window.removeEventListener("error",
|
|
28
|
+
window.removeEventListener("error", i), window.removeEventListener("unhandledrejection", a);
|
|
27
29
|
};
|
|
28
30
|
}, [
|
|
29
|
-
s,
|
|
30
31
|
c,
|
|
31
|
-
l
|
|
32
|
-
|
|
32
|
+
l,
|
|
33
|
+
u
|
|
34
|
+
]), /* @__PURE__ */ o(a, { children: s });
|
|
33
35
|
}
|
|
34
36
|
//#endregion
|
|
35
|
-
export {
|
|
37
|
+
export { s as ObservabilityProvider };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@burdenoff/fe-libs",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.717.1",
|
|
4
4
|
"description": "Burdenoff frontend primitives and domain libraries",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"imports": {
|
|
@@ -135,6 +135,8 @@
|
|
|
135
135
|
"import": "./shared/config/eslint.config.mjs"
|
|
136
136
|
},
|
|
137
137
|
"./shared/config/tsconfig.base.json": "./shared/config/tsconfig.base.json",
|
|
138
|
+
"./shared/config/lighthouserc.base.json": "./shared/config/lighthouserc.base.json",
|
|
139
|
+
"./shared/config/lighthouse-budget.json": "./shared/config/lighthouse-budget.json",
|
|
138
140
|
"./shared/config/prettier.config.mjs": {
|
|
139
141
|
"types": "./shared/config/prettier.config.d.mts",
|
|
140
142
|
"import": "./shared/config/prettier.config.mjs"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"path": "/*",
|
|
4
|
+
"timings": [
|
|
5
|
+
{ "metric": "largest-contentful-paint", "budget": 2500 },
|
|
6
|
+
{ "metric": "cumulative-layout-shift", "budget": 0.1 },
|
|
7
|
+
{ "metric": "total-blocking-time", "budget": 200 },
|
|
8
|
+
{ "metric": "interactive", "budget": 3500 },
|
|
9
|
+
{ "metric": "first-contentful-paint", "budget": 1800 }
|
|
10
|
+
],
|
|
11
|
+
"resourceSizes": [
|
|
12
|
+
{ "resourceType": "script", "budget": 1000 },
|
|
13
|
+
{ "resourceType": "stylesheet", "budget": 150 },
|
|
14
|
+
{ "resourceType": "image", "budget": 500 },
|
|
15
|
+
{ "resourceType": "font", "budget": 200 },
|
|
16
|
+
{ "resourceType": "total", "budget": 2000 }
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
]
|