@burdenoff/fe-libs 2026.825.2 → 2026.825.3

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.
@@ -83,7 +83,12 @@ export interface RegisterPushDeviceOptions {
83
83
  * Register (or refresh) this device. Idempotent on the backend, and additionally
84
84
  * de-duplicated here so a remount storm cannot hammer the mutation.
85
85
  *
86
- * Resolves `true` when the backend accepted the registration.
86
+ * Resolves `true` only when the device is registered AND routable — i.e. the
87
+ * backend stamped a Firebase project on it. It resolves `false` both when the
88
+ * mutation failed and when the row had to be written through the legacy,
89
+ * project-less shape during a gateway schema-skew window: that row exists but
90
+ * nothing can be delivered to it, and reporting it as success is what turns a
91
+ * deliberate server-side rejection into a device that silently never receives.
87
92
  */
88
93
  export declare function registerPushDevice(options: RegisterPushDeviceOptions): Promise<boolean>;
89
94
  export interface UnregisterPushDeviceOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"push-registration.d.ts","sourceRoot":"","sources":["../../../src/shared/native/push-registration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAE/D,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAElE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,8BAA8B,4ZAqB1C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qCAAqC,gWAmBjD,CAAC;AAEF,eAAO,MAAM,gCAAgC,oHAI5C,CAAC;AAEF,0DAA0D;AAC1D,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,QAAQ,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,wBAAwB,EAAE,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;CAC3E;AAED,MAAM,MAAM,yBAAyB,GAAG,CACtC,OAAO,EAAE,uBAAuB,KAC7B,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAgCvC;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAuBhD;AAoBD,MAAM,WAAW,yBAAyB;IACxC,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC;AAcD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC,CA6C7F;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,OAAO,CAAC,CAalB;AAID,MAAM,WAAW,6BAA6B;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAYD;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,6BAA6B,GAAG,MAAM,IAAI,CA+BhG;AAED,+EAA+E;AAC/E,wBAAgB,mCAAmC,IAAI,IAAI,CAI1D"}
1
+ {"version":3,"file":"push-registration.d.ts","sourceRoot":"","sources":["../../../src/shared/native/push-registration.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,10 @@ function l() {
25
25
  return e;
26
26
  }
27
27
  function u(e) {
28
- return (e.errors ?? []).some((e) => e.message.includes("productSlug") && !e.message.includes("metadata"));
28
+ return (e.errors ?? []).some((e) => {
29
+ let t = typeof e.extensions?.code == "string" ? e.extensions.code : "";
30
+ return t && t !== "GRAPHQL_VALIDATION_FAILED" ? !1 : /unknown\s+argument\s+"?productSlug"?/i.test(e.message);
31
+ });
29
32
  }
30
33
  var d = null;
31
34
  function f(e, t) {
@@ -62,16 +65,16 @@ async function p(e) {
62
65
  variables: p,
63
66
  ...e.authToken ? { authToken: e.authToken } : {},
64
67
  suppressGlobalErrorEvent: !0
65
- }, h = await c(m);
68
+ }, h = await c(m), g = !0;
66
69
  if (u(h)) {
67
70
  let e = { ...p };
68
71
  delete e.productSlug, h = await c({
69
72
  ...m,
70
73
  query: r,
71
74
  variables: e
72
- });
75
+ }), g = !1;
73
76
  }
74
- return h.errors?.length ? !1 : (d = s, !0);
77
+ return h.errors?.length ? !1 : (g && (d = s), g);
75
78
  }
76
79
  async function m(e = {}) {
77
80
  d = null;
@@ -1 +1 @@
1
- {"version":3,"file":"web-push.d.ts","sourceRoot":"","sources":["../../src/shell-native/web-push.ts"],"names":[],"mappings":"AA8CA,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,IAAI,OAAO,CAQ5C;AAqBD;;;GAGG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAOtF;AAED,sFAAsF;AACtF,wBAAsB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIrF;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAOhF;AAID;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,gBAAgB,GAAG,MAAM,CAEnF;AAWD,iEAAiE;AACjE,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAQ/E;AAED,MAAM,WAAW,uBAAuB;IACtC,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA+BlC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,OAAO,CAAC,CAclB;AAID,mEAAmE;AACnE,eAAO,MAAM,6BAA6B,iCAAiC,CAAC;AAC5E,gFAAgF;AAChF,eAAO,MAAM,mCAAmC,uCAAuC,CAAC;AAyBxF;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAKlD;AAED,gFAAgF;AAChF,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ3D;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C"}
1
+ {"version":3,"file":"web-push.d.ts","sourceRoot":"","sources":["../../src/shell-native/web-push.ts"],"names":[],"mappings":"AA8CA,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,IAAI,OAAO,CAQ5C;AAqBD;;;GAGG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAOtF;AAED,sFAAsF;AACtF,wBAAsB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIrF;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAOhF;AAID;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,gBAAgB,GAAG,MAAM,CAEnF;AAuCD,iEAAiE;AACjE,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAQ/E;AAED,MAAM,WAAW,uBAAuB;IACtC,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA8ClC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,OAAO,CAAC,CAclB;AAID,mEAAmE;AACnE,eAAO,MAAM,6BAA6B,iCAAiC,CAAC;AAC5E,gFAAgF;AAChF,eAAO,MAAM,mCAAmC,uCAAuC,CAAC;AAyBxF;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAclD;AAED,gFAAgF;AAChF,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ3D;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C"}
@@ -32,7 +32,21 @@ function l(e) {
32
32
  function u(e) {
33
33
  return JSON.stringify(e.toJSON());
34
34
  }
35
- async function d() {
35
+ function d(e, t) {
36
+ let n = e.options?.applicationServerKey;
37
+ if (!n) return !1;
38
+ let r;
39
+ try {
40
+ r = l(t);
41
+ } catch {
42
+ return !1;
43
+ }
44
+ let i = new Uint8Array(n);
45
+ if (i.length !== r.length) return !1;
46
+ for (let e = 0; e < i.length; e += 1) if (i[e] !== r[e]) return !1;
47
+ return !0;
48
+ }
49
+ async function f() {
36
50
  if (!r()) return null;
37
51
  try {
38
52
  return await navigator.serviceWorker.ready;
@@ -40,8 +54,8 @@ async function d() {
40
54
  return null;
41
55
  }
42
56
  }
43
- async function f() {
44
- let e = await d();
57
+ async function p() {
58
+ let e = await f();
45
59
  if (!e) return null;
46
60
  try {
47
61
  return await e.pushManager.getSubscription();
@@ -49,35 +63,40 @@ async function f() {
49
63
  return null;
50
64
  }
51
65
  }
52
- async function p(e = {}) {
66
+ async function m(e = {}) {
53
67
  if (!r() || Notification.permission !== "granted") return null;
54
- let n = await d();
68
+ let n = await f();
55
69
  if (!n) return null;
56
- y();
70
+ b();
57
71
  try {
58
- let r = await n.pushManager.getSubscription();
59
- if (r) return t(u(r), "web"), r;
60
- let i = await c(e.vapidPublicKey);
61
- if (!i) return null;
72
+ let r = await c(e.vapidPublicKey);
73
+ if (!r) return null;
74
+ let i = await n.pushManager.getSubscription();
75
+ if (i) {
76
+ if (d(i, r)) return t(u(i), "web"), i;
77
+ try {
78
+ await i.unsubscribe();
79
+ } catch {}
80
+ }
62
81
  let a = await n.pushManager.subscribe({
63
82
  userVisibleOnly: !0,
64
- applicationServerKey: l(i)
83
+ applicationServerKey: l(r)
65
84
  });
66
85
  return t(u(a), "web"), a;
67
86
  } catch {
68
87
  return null;
69
88
  }
70
89
  }
71
- async function m(e = {}) {
90
+ async function h(e = {}) {
72
91
  if (!r()) return !1;
73
92
  try {
74
- return Notification.permission === "denied" || Notification.permission !== "granted" && await Notification.requestPermission() !== "granted" ? !1 : await p(e) !== null;
93
+ return Notification.permission === "denied" || Notification.permission !== "granted" && await Notification.requestPermission() !== "granted" ? !1 : await m(e) !== null;
75
94
  } catch {
76
95
  return !1;
77
96
  }
78
97
  }
79
- var h = "BURDENOFF_NOTIFICATION_CLICK", g = "BURDENOFF_PUSH_SUBSCRIPTION_CHANGE", _ = !1;
80
- function v(n) {
98
+ var g = "BURDENOFF_NOTIFICATION_CLICK", _ = "BURDENOFF_PUSH_SUBSCRIPTION_CHANGE", v = !1;
99
+ function y(n) {
81
100
  let r = n.data;
82
101
  if (!r || typeof r != "object") return;
83
102
  let i = r;
@@ -87,11 +106,11 @@ function v(n) {
87
106
  }
88
107
  i.type === "BURDENOFF_PUSH_SUBSCRIPTION_CHANGE" && i.subscription && t(JSON.stringify(i.subscription), "web");
89
108
  }
90
- function y() {
91
- _ || typeof navigator > "u" || !("serviceWorker" in navigator) || (navigator.serviceWorker.addEventListener("message", v), _ = !0);
109
+ function b() {
110
+ v || typeof navigator > "u" || !("serviceWorker" in navigator) || (navigator.serviceWorker.addEventListener("message", y), typeof navigator.serviceWorker.startMessages == "function" && navigator.serviceWorker.startMessages(), v = !0);
92
111
  }
93
- async function b() {
94
- let e = await f();
112
+ async function x() {
113
+ let e = await p();
95
114
  if (!e) return !1;
96
115
  try {
97
116
  return await e.unsubscribe();
@@ -99,8 +118,8 @@ async function b() {
99
118
  return !1;
100
119
  }
101
120
  }
102
- function x() {
103
- i = null, _ = !1;
121
+ function S() {
122
+ i = null, v = !1;
104
123
  }
105
124
  //#endregion
106
- export { h as SW_NOTIFICATION_CLICK_MESSAGE, g as SW_PUSH_SUBSCRIPTION_CHANGE_MESSAGE, n as WEB_PUSH_MANIFEST_KEY, s as getWebPushManifestConfig, f as getWebPushSubscription, y as installWebPushMessageBridge, r as isWebPushSupported, m as requestWebPushPermission, x as resetWebPushForTests, c as resolveVapidPublicKey, u as serializeWebPushSubscription, p as subscribeWebPush, b as unsubscribeWebPush, l as urlBase64ToUint8Array };
125
+ export { g as SW_NOTIFICATION_CLICK_MESSAGE, _ as SW_PUSH_SUBSCRIPTION_CHANGE_MESSAGE, n as WEB_PUSH_MANIFEST_KEY, s as getWebPushManifestConfig, p as getWebPushSubscription, b as installWebPushMessageBridge, r as isWebPushSupported, h as requestWebPushPermission, S as resetWebPushForTests, c as resolveVapidPublicKey, u as serializeWebPushSubscription, m as subscribeWebPush, x as unsubscribeWebPush, l as urlBase64ToUint8Array };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fe-libs",
3
- "version": "2026.825.2",
3
+ "version": "2026.825.3",
4
4
  "description": "Burdenoff frontend primitives and domain libraries",
5
5
  "type": "module",
6
6
  "bin": {