@burdenoff/fe-libs 2026.810.3 → 2026.813.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,4 +1,10 @@
1
1
  import { BurdenoffEventName } from '../index';
2
+ /**
3
+ * Fallback allowlist for direct RybbitSink consumers. App shells go through
4
+ * AppShellProvider, which passes the wider platform-wide list instead.
5
+ * Exported so tests can assert the two do not drift apart per product.
6
+ */
7
+ export declare const DEFAULT_RYBBIT_ALLOWLIST: BurdenoffEventName[];
2
8
  interface RybbitSinkProps {
3
9
  siteId: string | undefined;
4
10
  scriptUrl?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"RybbitSink.d.ts","sourceRoot":"","sources":["../../../../src/shared/events/sinks/RybbitSink.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AA+DhE,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,yFAAyF;IACzF,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACjC,8CAA8C;IAC9C,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AA2BD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAM1F;AA6BD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,SAAiD,EACjD,MAAW,EACX,SAAoC,EACpC,UAA6B,GAC9B,EAAE,eAAe,QAuDjB"}
1
+ {"version":3,"file":"RybbitSink.d.ts","sourceRoot":"","sources":["../../../../src/shared/events/sinks/RybbitSink.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,EAiCxD,CAAC;AAqDF,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,yFAAyF;IACzF,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACjC,8CAA8C;IAC9C,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AA2BD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAM1F;AA6BD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,SAAiD,EACjD,MAAqB,EACrB,SAAoC,EACpC,UAA6B,GAC9B,EAAE,eAAe,QAuDjB"}
@@ -2,27 +2,7 @@
2
2
  import { useEventBus as e } from "../../../shared-events.js";
3
3
  import { useEffect as t, useRef as n } from "react";
4
4
  //#region src/shared/events/sinks/RybbitSink.tsx
5
- var r = [
6
- "nav.route.changed",
7
- "auth.signed_in",
8
- "auth.signed_out",
9
- "support.ticket.created",
10
- "support.ticket.closed",
11
- "support.ticket.reopened",
12
- "support.kb.article_rated",
13
- "notification.item.opened",
14
- "notification.preference.updated",
15
- "notification.admin.sent",
16
- "notification.template.saved",
17
- "notification.schedule.updated",
18
- "bigconsole.dashboard.imported",
19
- "bigconsole.dashboard.shared",
20
- "bigconsole.data_sink.imported",
21
- "bigconsole.widget.created",
22
- "bigconsole.widget.duplicated",
23
- "bigconsole.ai.dashboard_generated",
24
- "bigconsole.ai.dashboard_created"
25
- ], i = /(token|password|secret|authorization|cookie|session|email|name|stack|message|subject|description|query|search|prompt|formula|reason|body|content)/i, a = /(^id$|Id$|_id$|_ID$)/, o = [
5
+ var r = /* @__PURE__ */ "nav.route.changed,auth.signed_in,auth.signed_out,support.ticket.created,support.ticket.closed,support.ticket.reopened,support.kb.article_rated,notification.item.opened,notification.preference.updated,notification.admin.sent,notification.template.saved,notification.schedule.updated,bigconsole.dashboard.import_clicked,bigconsole.dashboard.imported,bigconsole.dashboard.share_clicked,bigconsole.dashboard.shared,bigconsole.data_sink.import_clicked,bigconsole.data_sink.imported,bigconsole.widget.create_clicked,bigconsole.widget.created,bigconsole.widget.duplicate_clicked,bigconsole.widget.duplicated,bigconsole.ai.generate_clicked,bigconsole.ai.dashboard_generated,bigconsole.ai.create_dashboard_clicked,bigconsole.ai.dashboard_created".split(","), i = /(token|password|secret|authorization|cookie|session|email|name|stack|message|subject|description|query|search|prompt|formula|reason|body|content)/i, a = /(^id$|Id$|_id$|_ID$)/, o = [
26
6
  "ticketId",
27
7
  "categoryId",
28
8
  "workspaceId"
@@ -32,13 +12,20 @@ var r = [
32
12
  "support.ticket.reopened": o,
33
13
  "support.kb.article_rated": ["articleId"],
34
14
  "bigconsole.dashboard.imported": ["dashboardId"],
15
+ "bigconsole.dashboard.share_clicked": ["dashboardId"],
35
16
  "bigconsole.dashboard.shared": ["dashboardId"],
36
17
  "bigconsole.data_sink.imported": ["dataSinkId"],
18
+ "bigconsole.widget.create_clicked": ["dashboardId", "pageId"],
37
19
  "bigconsole.widget.created": [
38
20
  "dashboardId",
39
21
  "pageId",
40
22
  "widgetId"
41
23
  ],
24
+ "bigconsole.widget.duplicate_clicked": [
25
+ "dashboardId",
26
+ "pageId",
27
+ "sourceWidgetId"
28
+ ],
42
29
  "bigconsole.widget.duplicated": [
43
30
  "dashboardId",
44
31
  "pageId",
@@ -46,6 +33,7 @@ var r = [
46
33
  "widgetId"
47
34
  ],
48
35
  "bigconsole.ai.dashboard_generated": ["generationId"],
36
+ "bigconsole.ai.create_dashboard_clicked": ["generationId"],
49
37
  "bigconsole.ai.dashboard_created": ["dashboardId", "generationId"],
50
38
  "healthybowl.farm.created": s,
51
39
  "healthybowl.crop.created": s,
@@ -54,33 +42,33 @@ var r = [
54
42
  }, l = {
55
43
  "auth.signed_out": ["reason"],
56
44
  "psw.search.performed": ["queryLength"]
57
- };
58
- function u() {
45
+ }, u = {};
46
+ function d() {
59
47
  let e = window;
60
48
  return navigator.doNotTrack === "1" || e.doNotTrack === "1";
61
49
  }
62
- function d(e) {
50
+ function f(e) {
63
51
  let t = 2166136261;
64
52
  for (let n = 0; n < e.length; n += 1) t ^= e.charCodeAt(n), t = Math.imul(t, 16777619);
65
53
  return `u_${(t >>> 0).toString(16).padStart(8, "0")}`;
66
54
  }
67
- async function f(e) {
55
+ async function p(e) {
68
56
  if (crypto.subtle) {
69
57
  let t = new TextEncoder().encode(e), n = await crypto.subtle.digest("SHA-256", t);
70
58
  return Array.from(new Uint8Array(n), (e) => e.toString(16).padStart(2, "0")).join("");
71
59
  }
72
- return d(e);
60
+ return f(e);
73
61
  }
74
- function p(e, t) {
62
+ function m(e, t) {
75
63
  return i.test(e) ? !(l[t] ?? []).includes(e) : a.test(e) ? !(c[t] ?? []).includes(e) : !1;
76
64
  }
77
- function m(e, t) {
65
+ function h(e, t) {
78
66
  if (!e || typeof e != "object" || Array.isArray(e)) return {};
79
67
  let n = {};
80
- for (let [r, i] of Object.entries(e)) p(r, t) || (typeof i == "string" || typeof i == "number" || typeof i == "boolean") && (n[r] = i);
68
+ for (let [r, i] of Object.entries(e)) m(r, t) || (typeof i == "string" || typeof i == "number" || typeof i == "boolean") && (n[r] = i);
81
69
  return n;
82
70
  }
83
- function h(e) {
71
+ function g(e) {
84
72
  let t = {};
85
73
  for (let [n, r] of Object.entries(e)) {
86
74
  let e = {
@@ -92,28 +80,28 @@ function h(e) {
92
80
  }
93
81
  return t;
94
82
  }
95
- function g({ siteId: i, scriptUrl: a = "https://app.rybbit.io/api/script.js", rename: o = {}, allowlist: s = r, identifyOn: c = "auth.signed_in" }) {
96
- let l = e(), d = n(!1);
83
+ function _({ siteId: i, scriptUrl: a = "https://app.rybbit.io/api/script.js", rename: o = u, allowlist: s = r, identifyOn: c = "auth.signed_in" }) {
84
+ let l = e(), f = n(!1);
97
85
  return t(() => {
98
- if (!i || d.current) return;
99
- d.current = !0;
86
+ if (!i || f.current) return;
87
+ f.current = !0;
100
88
  let e = document.createElement("script");
101
89
  return e.src = a, e.defer = !0, e.dataset.siteId = i, document.head.appendChild(e), () => {
102
90
  document.head.removeChild(e);
103
91
  };
104
92
  }, [i, a]), t(() => {
105
93
  if (i) return l.onAny((e) => {
106
- if (u()) return;
94
+ if (d()) return;
107
95
  let t = window;
108
96
  if (!t.rybbit || !s.includes(e.name)) return;
109
- let n = h({
97
+ let n = g({
110
98
  route: e.metadata.route.pathname,
111
99
  env: e.metadata.app.env,
112
- ...m(e.payload, e.name)
100
+ ...h(e.payload, e.name)
113
101
  });
114
102
  if (e.name === c) {
115
103
  let r = e.payload, i = r?.userId ?? r?.actorId ?? r?.id;
116
- i && f(i).then((e) => {
104
+ i && p(i).then((e) => {
117
105
  t.rybbit?.identify(e, n);
118
106
  });
119
107
  }
@@ -133,4 +121,4 @@ function g({ siteId: i, scriptUrl: a = "https://app.rybbit.io/api/script.js", re
133
121
  ]), null;
134
122
  }
135
123
  //#endregion
136
- export { g as RybbitSink };
124
+ export { _ as RybbitSink };
@@ -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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"}
@@ -19,7 +19,7 @@ import { ShellUiProvider as x } from "./shell/ShellUiProvider.js";
19
19
  import { ContextManagerProvider as ie } from "./shell/ContextManagerProvider.js";
20
20
  import { AuthTokenProvider as ae } from "./shell/AuthTokenProvider.js";
21
21
  import { MultiGatewayProvider as oe } from "./shell/MultiGatewayProvider.js";
22
- import { G as se, Q as S, j as C, w } from "../../node_modules/web-vitals/dist/web-vitals.js";
22
+ import { G as S, Q as se, j as C, w } from "../../node_modules/web-vitals/dist/web-vitals.js";
23
23
  import { ProfileI18nBridge as T } from "./shell/ProfileI18nBridge.js";
24
24
  import { ProfileGeographyBridge as E } from "./shell/ProfileGeographyBridge.js";
25
25
  import { DevtoolsSink as D } from "../events/sinks/DevtoolsSink.js";
@@ -42,10 +42,7 @@ var Y = {
42
42
  artistrybase: { prod: "cfbecacb6002" },
43
43
  atheletebridge: { prod: "c34c6ead7aa8" },
44
44
  adaptercloud: {},
45
- bigconsole: {
46
- prod: "292459a3e86c",
47
- nonProd: "a7e7362b0de3"
48
- },
45
+ bigconsole: { prod: "6d05ed402e84" },
49
46
  botlit: { prod: "22e6a050dc9c" },
50
47
  collabkin: {},
51
48
  comradecircle: {},
@@ -67,8 +64,8 @@ var Y = {
67
64
  subscriberbot: {},
68
65
  intelwatchtower: {},
69
66
  kadaikodi: {}
70
- }, X = /* @__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,workspaces.page.viewed,workspace.created,project.created,workspace-member.added,project-member.added".split(","), Z = 4e3;
71
- function me(e) {
67
+ }, X = /* @__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.import_clicked,bigconsole.dashboard.imported,bigconsole.dashboard.share_clicked,bigconsole.dashboard.shared,bigconsole.data_sink.import_clicked,bigconsole.data_sink.imported,bigconsole.widget.create_clicked,bigconsole.widget.created,bigconsole.widget.duplicate_clicked,bigconsole.widget.duplicated,bigconsole.ai.generate_clicked,bigconsole.ai.dashboard_generated,bigconsole.ai.create_dashboard_clicked,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,workspaces.page.viewed,workspace.created,project.created,workspace-member.added,project-member.added".split(","), Z = 4e3;
68
+ function Q(e) {
72
69
  let t = e.technicalMessage ?? e.extensions?.technicalMessage, n = {
73
70
  code: e.code,
74
71
  operationName: e.operationName,
@@ -80,13 +77,13 @@ function me(e) {
80
77
  };
81
78
  console.error("[Burdenoff backend error]", e.message, n);
82
79
  }
83
- function he(e) {
80
+ function me(e) {
84
81
  return e === "prod" || e === "production" ? "prod" : e === "alpha" || e === "staging" ? "alpha" : "dev";
85
82
  }
86
- function ge(e, t) {
83
+ function he(e, t) {
87
84
  return e.VITE_DISABLE_ANALYTICS === "true" ? !1 : e.VITE_ENABLE_ANALYTICS === "true" || e.PROD || t !== "dev" ? !0 : e.VITE_ENABLE_ANALYTICS !== "false";
88
85
  }
89
- function _e() {
86
+ function ge() {
90
87
  return {
91
88
  BASE_URL: "/",
92
89
  DEV: !1,
@@ -95,8 +92,8 @@ function _e() {
95
92
  SSR: !1
96
93
  };
97
94
  }
98
- function Q(e, t) {
99
- let n = he(t.VITE_DEPLOY_ENV ?? t.MODE), r = ge(t, n), i = Y[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);
95
+ function _e(e, t) {
96
+ let n = me(t.VITE_DEPLOY_ENV ?? t.MODE), r = he(t, n), i = Y[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
97
  return {
101
98
  enabled: r,
102
99
  appVersion: t.VITE_APP_VERSION || "0.0.0",
@@ -186,7 +183,7 @@ function ye() {
186
183
  let t = (t) => {
187
184
  let n = t instanceof CustomEvent && a(t.detail) ? t.detail : null;
188
185
  if (!o(n)) return;
189
- me(n);
186
+ Q(n);
190
187
  let r = `${n.code ?? ""}|${n.message}`, i = Date.now(), s = e.current;
191
188
  s?.key === r && i - s.shownAt < Z || (e.current = {
192
189
  key: r,
@@ -332,7 +329,7 @@ function Te() {
332
329
  window.removeEventListener("error", t), window.removeEventListener("unhandledrejection", n);
333
330
  };
334
331
  }, [e]), B(() => {
335
- se((t) => {
332
+ S((t) => {
336
333
  e.emit("perf.lcp.measured", {
337
334
  metric: "LCP",
338
335
  value: t.value,
@@ -353,7 +350,7 @@ function Te() {
353
350
  id: t.id,
354
351
  rating: t.rating
355
352
  });
356
- }), S((t) => {
353
+ }), se((t) => {
357
354
  e.emit("perf.ttfb.measured", {
358
355
  metric: "TTFB",
359
356
  value: t.value,
@@ -383,7 +380,7 @@ function Ee({ config: e, productSlug: t }) {
383
380
  ] })] });
384
381
  }
385
382
  function De({ config: n, children: r, clearAuthStore: a }) {
386
- let { productName: o, productSlug: h = o.toLowerCase().replace(/\s+/g, ""), tagline: _ = "", domain: v, i18nProductId: y, gatewayUrls: b, authBridge: x, defaultBrand: se = "default", defaultMode: S, defaultDensity: C, defaultTypography: w, defaultGlass: T, enablePWA: E = !0, brandInitial: D = o.charAt(0), defaultGateway: O = "workspace", enableSubscriptions: k = !0, fallbackTranslations: A, queryClientOptions: j, toasterPosition: M = "bottom-right", observability: N, tourPageIdFromPath: P } = n, F = N ?? Q(h, _e()), I = V(() => ({
383
+ let { productName: o, productSlug: h = o.toLowerCase().replace(/\s+/g, ""), tagline: _ = "", domain: v, i18nProductId: y, gatewayUrls: b, authBridge: x, defaultBrand: S = "default", defaultMode: se, defaultDensity: C, defaultTypography: w, defaultGlass: T, enablePWA: E = !0, brandInitial: D = o.charAt(0), defaultGateway: O = "workspace", enableSubscriptions: k = !0, fallbackTranslations: A, queryClientOptions: j, toasterPosition: M = "bottom-right", observability: N, tourPageIdFromPath: P } = n, F = V(() => N ?? _e(h, ge()), [N, h]), I = V(() => ({
387
384
  productName: o,
388
385
  productSlug: h,
389
386
  brandInitial: D,
@@ -435,7 +432,7 @@ function De({ config: n, children: r, clearAuthStore: a }) {
435
432
  refreshToken: n.refreshToken,
436
433
  expiresAt: n.expiresIn ? Date.now() + n.expiresIn * 1e3 : void 0
437
434
  };
438
- }, [b.globalBaseUrl]), Z = z(() => t("organization"), []), me = V(() => {
435
+ }, [b.globalBaseUrl]), Z = z(() => t("organization"), []), Q = V(() => {
439
436
  let e = new fe({
440
437
  queryCache: new de({ onError: (e) => {
441
438
  i(e);
@@ -479,7 +476,7 @@ function De({ config: n, children: r, clearAuthStore: a }) {
479
476
  config: F,
480
477
  productSlug: h
481
478
  }), /* @__PURE__ */ W(pe, {
482
- client: me,
479
+ client: Q,
483
480
  children: /* @__PURE__ */ W(ae, { children: /* @__PURE__ */ W(oe, {
484
481
  workspaceBaseUrl: b.workspaceBaseUrl,
485
482
  globalBaseUrl: b.globalBaseUrl,
@@ -509,8 +506,8 @@ function De({ config: n, children: r, clearAuthStore: a }) {
509
506
  children: /* @__PURE__ */ W(ie, { children: /* @__PURE__ */ W(Se, {
510
507
  i18nProductId: y,
511
508
  fallbackTranslations: A,
512
- defaultBrand: se,
513
- defaultMode: S,
509
+ defaultBrand: S,
510
+ defaultMode: se,
514
511
  defaultDensity: C,
515
512
  defaultTypography: w,
516
513
  defaultGlass: T,
@@ -530,4 +527,4 @@ function De({ config: n, children: r, clearAuthStore: a }) {
530
527
  });
531
528
  }
532
529
  //#endregion
533
- export { De as AppShellProvider, Q as resolveAppShellObservabilityConfig };
530
+ export { De as AppShellProvider, _e as resolveAppShellObservabilityConfig };
@@ -17,5 +17,16 @@ export interface UploadedFile {
17
17
  name: string;
18
18
  folderId: string | null;
19
19
  }
20
+ /**
21
+ * Best-effort message extraction, preferring the first GraphQL error's message
22
+ * (Apollo v4 CombinedGraphQLErrors `.errors`, or v3 `.graphQLErrors`) so we surface
23
+ * the real reason a completeUpload failed instead of a generic error envelope.
24
+ *
25
+ * Exported because every `client.mutate` call in this module faces the same
26
+ * problem: under `errorPolicy: 'all'` the failure arrives in-band on
27
+ * `result.error` and the caller's own "that didn't work" string is the LEAST
28
+ * informative thing it could report. See `useSaveToFiles`.
29
+ */
30
+ export declare function extractErrorMessage(err: unknown): string | undefined;
20
31
  export declare function uploadBlobToFiles(params: UploadBlobParams): Promise<UploadedFile>;
21
32
  //# sourceMappingURL=uploadBlob.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uploadBlob.d.ts","sourceRoot":"","sources":["../../src/storage/uploadBlob.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAyBxD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,UAKpC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AA6CD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CA8HvF"}
1
+ {"version":3,"file":"uploadBlob.d.ts","sourceRoot":"","sources":["../../src/storage/uploadBlob.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAyBxD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,UAKpC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AA2BD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAWpE;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CA8HvF"}
@@ -99,4 +99,4 @@ async function o(e) {
99
99
  return d?.(100), _;
100
100
  }
101
101
  //#endregion
102
- export { r as FILES_AFTER_SAVE_REFETCH, o as uploadBlobToFiles };
102
+ export { r as FILES_AFTER_SAVE_REFETCH, a as extractErrorMessage, o as uploadBlobToFiles };
@@ -1,3 +1,4 @@
1
+ import { ApolloClient } from '@apollo/client';
1
2
  import { SaveToFilesSource } from './SaveToFilesButton';
2
3
  export interface SavedFile {
3
4
  id: string;
@@ -13,5 +14,32 @@ export interface UseSaveToFilesResult {
13
14
  error: Error | null;
14
15
  progress: number;
15
16
  }
17
+ /** The Apollo surface `resolveFolderIdByPath` needs — kept narrow so it is trivial to fake. */
18
+ type FolderMutatingClient = Pick<ApolloClient, 'mutate'>;
19
+ /**
20
+ * Resolve (creating if needed) the destination folder for a path, returning its id.
21
+ *
22
+ * Split out of the hook so it is unit-testable the same way `uploadBlobToFiles`
23
+ * is: pure modulo the injected Apollo client.
24
+ *
25
+ * `ensureFolderByPath` is declared `Folder!` in wspace-files-svc, and its
26
+ * resolver creates any missing ancestors and collapses concurrent calls for the
27
+ * same path onto a single row (partial unique index on
28
+ * `(workspace_id, parent_folder_id, name)`). It therefore never resolves to
29
+ * null: a null here means the operation FAILED and GraphQL non-null propagation
30
+ * blanked the field.
31
+ *
32
+ * That distinction is the whole point of this function. The shared Apollo client
33
+ * runs `errorPolicy: 'all'`, so those failures come back IN-BAND on
34
+ * `result.error` rather than being thrown — exactly as `uploadBlobToFiles`
35
+ * already documents for initiateUpload/completeUpload. Reading only `data` and
36
+ * blaming the path turned a gateway OPERATION_TIMEOUT into "Could not resolve
37
+ * folder for path: /HealthyBowl/AI Assistant/Attachments", which reads like a
38
+ * bad path or a missing folder and sent people looking at file-storage quota
39
+ * they had plenty of. Surface the real reason; keep the path as a last resort
40
+ * for the genuinely inexplicable case.
41
+ */
42
+ export declare function resolveFolderIdByPath(client: FolderMutatingClient, folderPath: string): Promise<string>;
16
43
  export declare function useSaveToFiles(): UseSaveToFilesResult;
44
+ export {};
17
45
  //# sourceMappingURL=useSaveToFiles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSaveToFiles.d.ts","sourceRoot":"","sources":["../../src/storage/useSaveToFiles.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAuB7D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,iBAAiB,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxF,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,cAAc,IAAI,oBAAoB,CAmErD"}
1
+ {"version":3,"file":"useSaveToFiles.d.ts","sourceRoot":"","sources":["../../src/storage/useSaveToFiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAIxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAuB7D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,iBAAiB,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxF,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+FAA+F;AAC/F,KAAK,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,oBAAoB,EAC5B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED,wBAAgB,cAAc,IAAI,oBAAoB,CAqErD"}
@@ -1,9 +1,9 @@
1
- import { FILES_AFTER_SAVE_REFETCH as e, uploadBlobToFiles as t } from "./uploadBlob.js";
2
- import { useState as n } from "react";
3
- import { gql as r } from "@apollo/client";
4
- import { useApolloClient as i } from "@apollo/client/react";
1
+ import { FILES_AFTER_SAVE_REFETCH as e, extractErrorMessage as t, uploadBlobToFiles as n } from "./uploadBlob.js";
2
+ import { useState as r } from "react";
3
+ import { gql as i } from "@apollo/client";
4
+ import { useApolloClient as a } from "@apollo/client/react";
5
5
  //#region src/storage/useSaveToFiles.ts
6
- var a = r`
6
+ var o = i`
7
7
  mutation SaveToFiles_EnsureFolderByPath($path: String!) {
8
8
  ensureFolderByPath(path: $path) {
9
9
  id
@@ -11,7 +11,7 @@ var a = r`
11
11
  path
12
12
  }
13
13
  }
14
- `, o = r`
14
+ `, s = i`
15
15
  mutation SaveToFiles_SaveSandboxArtifact($input: SaveSandboxArtifactInput!) {
16
16
  saveSandboxArtifactToFiles(input: $input) {
17
17
  id
@@ -20,54 +20,58 @@ var a = r`
20
20
  }
21
21
  }
22
22
  `;
23
- function s() {
24
- let r = i(), [s, c] = n(!1), [l, u] = n(null), [d, f] = n(0);
23
+ async function c(e, n) {
24
+ let r = await e.mutate({
25
+ mutation: o,
26
+ variables: { path: n }
27
+ }), i = r.data?.ensureFolderByPath?.id;
28
+ if (i) return i;
29
+ throw Error(t(r.error) ?? `Could not resolve folder for path: ${n}`);
30
+ }
31
+ function l() {
32
+ let i = a(), [o, l] = r(!1), [u, d] = r(null), [f, p] = r(0);
25
33
  return {
26
- save: async (n) => {
27
- c(!0), u(null), f(0);
34
+ save: async (r) => {
35
+ l(!0), d(null), p(0);
28
36
  try {
29
- let i = (await r.mutate({
30
- mutation: a,
31
- variables: { path: n.folderPath }
32
- })).data?.ensureFolderByPath?.id;
33
- if (!i) throw Error(`Could not resolve folder for path: ${n.folderPath}`);
34
- if (n.source.kind === "sandbox-artifact") {
35
- let t = (await r.mutate({
36
- mutation: o,
37
+ let a = await c(i, r.folderPath);
38
+ if (r.source.kind === "sandbox-artifact") {
39
+ let n = await i.mutate({
40
+ mutation: s,
37
41
  variables: { input: {
38
- sandboxId: n.source.sandboxId,
39
- sessionId: n.source.sessionId,
40
- path: n.source.path,
41
- folderId: i,
42
- filename: n.source.filename ?? null
42
+ sandboxId: r.source.sandboxId,
43
+ sessionId: r.source.sessionId,
44
+ path: r.source.path,
45
+ folderId: a,
46
+ filename: r.source.filename ?? null
43
47
  } },
44
48
  refetchQueries: e
45
- })).data?.saveSandboxArtifactToFiles;
46
- if (!t) throw Error("saveSandboxArtifactToFiles returned no file");
47
- return f(100), t;
49
+ }), o = n.data?.saveSandboxArtifactToFiles;
50
+ if (!o) throw Error(t(n.error) ?? "saveSandboxArtifactToFiles returned no file");
51
+ return p(100), o;
48
52
  }
49
- let s = await n.source.getBlob();
50
- if (!s) throw Error("Cancelled: no bytes to save");
51
- let c = s.blob;
52
- return await t({
53
- client: r,
54
- blob: c,
55
- filename: s.filename ?? n.source.filename,
56
- mimeType: s.mimeType ?? n.source.mimeType,
57
- folderId: i,
58
- onProgress: f
53
+ let o = await r.source.getBlob();
54
+ if (!o) throw Error("Cancelled: no bytes to save");
55
+ let l = o.blob;
56
+ return await n({
57
+ client: i,
58
+ blob: l,
59
+ filename: o.filename ?? r.source.filename,
60
+ mimeType: o.mimeType ?? r.source.mimeType,
61
+ folderId: a,
62
+ onProgress: p
59
63
  });
60
64
  } catch (e) {
61
65
  let t = e instanceof Error ? e : Error(String(e));
62
- throw u(t), t;
66
+ throw d(t), t;
63
67
  } finally {
64
- c(!1);
68
+ l(!1);
65
69
  }
66
70
  },
67
- isPending: s,
68
- error: l,
69
- progress: d
71
+ isPending: o,
72
+ error: u,
73
+ progress: f
70
74
  };
71
75
  }
72
76
  //#endregion
73
- export { s as useSaveToFiles };
77
+ export { l as useSaveToFiles };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fe-libs",
3
- "version": "2026.810.3",
3
+ "version": "2026.813.1",
4
4
  "description": "Burdenoff frontend primitives and domain libraries",
5
5
  "type": "module",
6
6
  "bin": {
@@ -284,7 +284,7 @@
284
284
  "lint:sanity": "if [ \"${CI:-}\" = \"true\" ]; then bun run lint; else bun run lint -- --cache --cache-location .eslintcache; fi",
285
285
  "format": "prettier --config shared/config/prettier.config.mjs --write \"src/**/*.{ts,tsx}\" \"!src/config/*.config.ts\"",
286
286
  "type:check": "bash scripts/build-limits.sh tsc --noEmit",
287
- "test": "bun test scripts/graphql-schema-drift/__tests__ src/credentials",
287
+ "test": "bun test scripts/graphql-schema-drift/__tests__ src/credentials src/shared/providers/AppShellProvider.test.ts src/shared/events/sinks/RybbitSink.test.ts",
288
288
  "sanity": "bash scripts/build-limits.sh --gate bash -c 'bun run lint:sanity && bun run format && bun run type:check && bun run test && bun run build'",
289
289
  "switch:status": "bun scripts/deps-mode.ts status",
290
290
  "switch:remote": "bun scripts/deps-mode.ts remote",