@flamingo-stack/openframe-frontend-core 0.0.690 → 0.0.691-2504.7650.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/{chunk-22RSJ57Z.js → chunk-2YVTGPM7.js} +2 -2
- package/dist/{chunk-V5NOURSR.js → chunk-4HZXOQRM.js} +5 -5
- package/dist/{chunk-MDYTAKJ5.cjs → chunk-4N2JOPAQ.cjs} +22 -22
- package/dist/{chunk-MDYTAKJ5.cjs.map → chunk-4N2JOPAQ.cjs.map} +1 -1
- package/dist/{chunk-QNWQQ4RT.cjs → chunk-53O6PQ3F.cjs} +7 -7
- package/dist/{chunk-QNWQQ4RT.cjs.map → chunk-53O6PQ3F.cjs.map} +1 -1
- package/dist/{chunk-X4WBGDNW.cjs → chunk-5N2ZSB42.cjs} +18 -18
- package/dist/{chunk-X4WBGDNW.cjs.map → chunk-5N2ZSB42.cjs.map} +1 -1
- package/dist/{chunk-XRSJER2B.js → chunk-6Z26ZMR4.js} +4 -4
- package/dist/{chunk-HLEXYTOE.js → chunk-7EPGJOKN.js} +4 -4
- package/dist/{chunk-DOUG4UEZ.js → chunk-7WYWPELF.js} +11 -11
- package/dist/{chunk-ZBQZJAC7.cjs → chunk-BXAGR3PO.cjs} +7 -7
- package/dist/chunk-BXAGR3PO.cjs.map +1 -0
- package/dist/{chunk-QUGV2GT3.cjs → chunk-BXE2RZEV.cjs} +34 -34
- package/dist/{chunk-QUGV2GT3.cjs.map → chunk-BXE2RZEV.cjs.map} +1 -1
- package/dist/{chunk-DLRE5Y3G.js → chunk-C2SVJVEB.js} +2 -2
- package/dist/{chunk-OC3QH5WG.js → chunk-CMYDGVTZ.js} +2 -2
- package/dist/{chunk-VLWUKFQE.cjs → chunk-CWXRZVDI.cjs} +751 -710
- package/dist/chunk-CWXRZVDI.cjs.map +1 -0
- package/dist/{chunk-2PQKZWWP.js → chunk-DC3G4XGP.js} +6 -6
- package/dist/{chunk-KZXKT5AX.cjs → chunk-DDWLF2JV.cjs} +14 -14
- package/dist/{chunk-KZXKT5AX.cjs.map → chunk-DDWLF2JV.cjs.map} +1 -1
- package/dist/{chunk-NMXL34Z2.cjs → chunk-DVSPRY2V.cjs} +3 -3
- package/dist/{chunk-NMXL34Z2.cjs.map → chunk-DVSPRY2V.cjs.map} +1 -1
- package/dist/{chunk-OQVHGPHA.js → chunk-DZMDG7PC.js} +3 -3
- package/dist/{chunk-2MGTNYHW.cjs → chunk-ESFPY5FF.cjs} +100 -100
- package/dist/{chunk-2MGTNYHW.cjs.map → chunk-ESFPY5FF.cjs.map} +1 -1
- package/dist/{chunk-S5M5SEW2.js → chunk-FNMQ2J44.js} +5 -5
- package/dist/{chunk-UAKWSR3U.js → chunk-GDZ7IC5B.js} +2 -2
- package/dist/{chunk-OD2WMUAO.cjs → chunk-GZRU2A4L.cjs} +197 -197
- package/dist/{chunk-OD2WMUAO.cjs.map → chunk-GZRU2A4L.cjs.map} +1 -1
- package/dist/{chunk-3ZAIHRQH.cjs → chunk-H54RDLVC.cjs} +35 -35
- package/dist/{chunk-3ZAIHRQH.cjs.map → chunk-H54RDLVC.cjs.map} +1 -1
- package/dist/{chunk-Q76YVNCQ.js → chunk-HM7ZGABI.js} +2 -2
- package/dist/{chunk-YCKGUQA2.cjs → chunk-I27PWVWE.cjs} +17 -12
- package/dist/chunk-I27PWVWE.cjs.map +1 -0
- package/dist/{chunk-25X43LSD.js → chunk-JSG7WZKV.js} +4 -4
- package/dist/{chunk-AIXPQT3G.js → chunk-KMW2PXBU.js} +52 -11
- package/dist/chunk-KMW2PXBU.js.map +1 -0
- package/dist/{chunk-TBJWPNHU.js → chunk-KVDLL4LU.js} +4 -4
- package/dist/chunk-KVDLL4LU.js.map +1 -0
- package/dist/{chunk-54X75QTC.cjs → chunk-LCENRN2N.cjs} +14 -14
- package/dist/{chunk-54X75QTC.cjs.map → chunk-LCENRN2N.cjs.map} +1 -1
- package/dist/{chunk-BJHM2OEY.cjs → chunk-LNKLB7GM.cjs} +17 -17
- package/dist/{chunk-BJHM2OEY.cjs.map → chunk-LNKLB7GM.cjs.map} +1 -1
- package/dist/{chunk-JGVJRUGB.cjs → chunk-MIZU2OTO.cjs} +4 -4
- package/dist/{chunk-JGVJRUGB.cjs.map → chunk-MIZU2OTO.cjs.map} +1 -1
- package/dist/{chunk-TSENCZUL.js → chunk-MJI5GVT7.js} +11 -11
- package/dist/{chunk-BOM6MMWB.cjs → chunk-N3526CTH.cjs} +3 -3
- package/dist/{chunk-BOM6MMWB.cjs.map → chunk-N3526CTH.cjs.map} +1 -1
- package/dist/{chunk-D7BFS7N6.cjs → chunk-N4S7RBUM.cjs} +3 -3
- package/dist/{chunk-D7BFS7N6.cjs.map → chunk-N4S7RBUM.cjs.map} +1 -1
- package/dist/{chunk-4HBYEZ3I.cjs → chunk-SA4KQCNB.cjs} +82 -82
- package/dist/{chunk-4HBYEZ3I.cjs.map → chunk-SA4KQCNB.cjs.map} +1 -1
- package/dist/{chunk-RF2EYX3B.js → chunk-SC44YJCF.js} +2 -2
- package/dist/{chunk-2OD2PPNO.cjs → chunk-SDORFSFK.cjs} +37 -37
- package/dist/{chunk-2OD2PPNO.cjs.map → chunk-SDORFSFK.cjs.map} +1 -1
- package/dist/{chunk-42RQ4NIL.js → chunk-TSNGVWQO.js} +6 -6
- package/dist/{chunk-DMXI5D2Q.cjs → chunk-USKQURNF.cjs} +3 -3
- package/dist/{chunk-DMXI5D2Q.cjs.map → chunk-USKQURNF.cjs.map} +1 -1
- package/dist/{chunk-2KILTCND.js → chunk-UVUNBXS6.js} +6 -1
- package/dist/chunk-UVUNBXS6.js.map +1 -0
- package/dist/{chunk-5CBQBTGN.cjs → chunk-WZYIAKIH.cjs} +7 -7
- package/dist/{chunk-5CBQBTGN.cjs.map → chunk-WZYIAKIH.cjs.map} +1 -1
- package/dist/{chunk-2V4KPBNZ.js → chunk-XAOAYDGR.js} +3 -3
- package/dist/{chunk-U4OJCJTH.js → chunk-XBYF4SGD.js} +4 -4
- package/dist/{chunk-FCQR6VY4.cjs → chunk-Y3BC7TOJ.cjs} +26 -26
- package/dist/{chunk-FCQR6VY4.cjs.map → chunk-Y3BC7TOJ.cjs.map} +1 -1
- package/dist/{chunk-P27OGSQL.cjs → chunk-Y3Q76RAA.cjs} +37 -37
- package/dist/{chunk-P27OGSQL.cjs.map → chunk-Y3Q76RAA.cjs.map} +1 -1
- package/dist/{chunk-4BUPMSLY.js → chunk-Y7ZEVTLC.js} +3 -3
- package/dist/{chunk-Z622ACFD.js → chunk-Y7ZQZOE6.js} +5 -5
- package/dist/{chunk-5A3WSWZD.js → chunk-Z5FHXCXF.js} +8 -8
- package/dist/{chunk-UFXV64WQ.cjs → chunk-ZLYLHP64.cjs} +9 -9
- package/dist/{chunk-UFXV64WQ.cjs.map → chunk-ZLYLHP64.cjs.map} +1 -1
- package/dist/components/case-studies/index.cjs +20 -20
- package/dist/components/case-studies/index.js +7 -7
- package/dist/components/chat/index.cjs +4 -4
- package/dist/components/chat/index.js +3 -3
- package/dist/components/contact/index.cjs +8 -8
- package/dist/components/contact/index.js +7 -7
- package/dist/components/docs/index.cjs +11 -11
- package/dist/components/docs/index.js +10 -10
- package/dist/components/embeds/index.cjs +8 -8
- package/dist/components/embeds/index.js +7 -7
- package/dist/components/faq/index.cjs +9 -9
- package/dist/components/faq/index.js +8 -8
- package/dist/components/features/index.cjs +7 -7
- package/dist/components/features/index.js +6 -6
- package/dist/components/help-center-pages/index.cjs +101 -101
- package/dist/components/help-center-pages/index.js +21 -21
- package/dist/components/index.cjs +65 -65
- package/dist/components/index.js +21 -21
- package/dist/components/meeting-scheduler/index.cjs +58 -58
- package/dist/components/meeting-scheduler/index.js +8 -8
- package/dist/components/navigation/index.cjs +10 -10
- package/dist/components/navigation/index.js +9 -9
- package/dist/components/onboarding-guides/index.cjs +11 -11
- package/dist/components/onboarding-guides/index.js +10 -10
- package/dist/components/related-content/index.cjs +6 -6
- package/dist/components/related-content/index.js +5 -5
- package/dist/components/tickets/index.cjs +12 -12
- package/dist/components/tickets/index.js +11 -11
- package/dist/components/tickets/ticket-live-provider.d.ts.map +1 -1
- package/dist/components/ui/index.cjs +7 -7
- package/dist/components/ui/index.js +6 -6
- package/dist/hooks/index.cjs +4 -4
- package/dist/hooks/index.js +3 -3
- package/dist/index.cjs +12 -12
- package/dist/index.js +10 -10
- package/dist/utils/embed-authed-fetch.d.ts +18 -0
- package/dist/utils/embed-authed-fetch.d.ts.map +1 -1
- package/dist/utils/index.cjs +50 -6
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.js +50 -6
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/sse-subscription.d.ts +29 -11
- package/dist/utils/sse-subscription.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/tickets/ticket-live-provider.tsx +14 -12
- package/src/utils/embed-authed-fetch.ts +21 -0
- package/src/utils/sse-subscription.ts +107 -20
- package/dist/chunk-2KILTCND.js.map +0 -1
- package/dist/chunk-AIXPQT3G.js.map +0 -1
- package/dist/chunk-TBJWPNHU.js.map +0 -1
- package/dist/chunk-VLWUKFQE.cjs.map +0 -1
- package/dist/chunk-YCKGUQA2.cjs.map +0 -1
- package/dist/chunk-ZBQZJAC7.cjs.map +0 -1
- /package/dist/{chunk-22RSJ57Z.js.map → chunk-2YVTGPM7.js.map} +0 -0
- /package/dist/{chunk-V5NOURSR.js.map → chunk-4HZXOQRM.js.map} +0 -0
- /package/dist/{chunk-XRSJER2B.js.map → chunk-6Z26ZMR4.js.map} +0 -0
- /package/dist/{chunk-HLEXYTOE.js.map → chunk-7EPGJOKN.js.map} +0 -0
- /package/dist/{chunk-DOUG4UEZ.js.map → chunk-7WYWPELF.js.map} +0 -0
- /package/dist/{chunk-DLRE5Y3G.js.map → chunk-C2SVJVEB.js.map} +0 -0
- /package/dist/{chunk-OC3QH5WG.js.map → chunk-CMYDGVTZ.js.map} +0 -0
- /package/dist/{chunk-2PQKZWWP.js.map → chunk-DC3G4XGP.js.map} +0 -0
- /package/dist/{chunk-OQVHGPHA.js.map → chunk-DZMDG7PC.js.map} +0 -0
- /package/dist/{chunk-S5M5SEW2.js.map → chunk-FNMQ2J44.js.map} +0 -0
- /package/dist/{chunk-UAKWSR3U.js.map → chunk-GDZ7IC5B.js.map} +0 -0
- /package/dist/{chunk-Q76YVNCQ.js.map → chunk-HM7ZGABI.js.map} +0 -0
- /package/dist/{chunk-25X43LSD.js.map → chunk-JSG7WZKV.js.map} +0 -0
- /package/dist/{chunk-TSENCZUL.js.map → chunk-MJI5GVT7.js.map} +0 -0
- /package/dist/{chunk-RF2EYX3B.js.map → chunk-SC44YJCF.js.map} +0 -0
- /package/dist/{chunk-42RQ4NIL.js.map → chunk-TSNGVWQO.js.map} +0 -0
- /package/dist/{chunk-2V4KPBNZ.js.map → chunk-XAOAYDGR.js.map} +0 -0
- /package/dist/{chunk-U4OJCJTH.js.map → chunk-XBYF4SGD.js.map} +0 -0
- /package/dist/{chunk-4BUPMSLY.js.map → chunk-Y7ZEVTLC.js.map} +0 -0
- /package/dist/{chunk-Z622ACFD.js.map → chunk-Y7ZQZOE6.js.map} +0 -0
- /package/dist/{chunk-5A3WSWZD.js.map → chunk-Z5FHXCXF.js.map} +0 -0
package/dist/utils/index.js
CHANGED
|
@@ -3766,6 +3766,10 @@ function setEmbedAuthAdapter(adapter2) {
|
|
|
3766
3766
|
}
|
|
3767
3767
|
storeRegisteredAuthAdapter(adapter2);
|
|
3768
3768
|
}
|
|
3769
|
+
function subscribeEmbedCredentialChange(listener) {
|
|
3770
|
+
return getRegisteredAuthAdapter()?.subscribe?.(listener) ?? (() => {
|
|
3771
|
+
});
|
|
3772
|
+
}
|
|
3769
3773
|
function embedAuthedFetch(url, init = {}) {
|
|
3770
3774
|
assertSameOrigin(url);
|
|
3771
3775
|
let baseHeaders;
|
|
@@ -3873,6 +3877,9 @@ var SUBSCRIBE_CONFIRM_TIMEOUT_MS = 15e3;
|
|
|
3873
3877
|
var SERVER_RETRY_GRACE_MS = 9e4;
|
|
3874
3878
|
var FAILED_RECONNECT_DELAY_MS = 3e4;
|
|
3875
3879
|
var HIDDEN_GRACE_MS = 45e3;
|
|
3880
|
+
var AUTH_RETRY_INITIAL_MS = 3e4;
|
|
3881
|
+
var AUTH_RETRY_MAX_MS = 3e5;
|
|
3882
|
+
var PRESENCE_RETRY_MIN_INTERVAL_MS = 3e4;
|
|
3876
3883
|
function createSseSubscription(options) {
|
|
3877
3884
|
const {
|
|
3878
3885
|
url,
|
|
@@ -3888,6 +3895,10 @@ function createSseSubscription(options) {
|
|
|
3888
3895
|
let closed = false;
|
|
3889
3896
|
let suspended = false;
|
|
3890
3897
|
let attempt = 0;
|
|
3898
|
+
let authAttempt = 0;
|
|
3899
|
+
let stalled = false;
|
|
3900
|
+
let awaitingAuth = false;
|
|
3901
|
+
let lastConnectAt = 0;
|
|
3891
3902
|
let generation = 0;
|
|
3892
3903
|
let abortController = null;
|
|
3893
3904
|
let retryTimerId = null;
|
|
@@ -3964,7 +3975,6 @@ function createSseSubscription(options) {
|
|
|
3964
3975
|
confirmTimerId = clearLifecycleTimer(confirmTimerId);
|
|
3965
3976
|
serverGraceTimerId = clearLifecycleTimer(serverGraceTimerId);
|
|
3966
3977
|
failedDelayTimerId = clearLifecycleTimer(failedDelayTimerId);
|
|
3967
|
-
hiddenGraceTimerId = clearLifecycleTimer(hiddenGraceTimerId);
|
|
3968
3978
|
};
|
|
3969
3979
|
const armSilenceTimer = () => {
|
|
3970
3980
|
if (silenceTimerId) clearTimeout(silenceTimerId);
|
|
@@ -3972,16 +3982,23 @@ function createSseSubscription(options) {
|
|
|
3972
3982
|
abortController?.abort();
|
|
3973
3983
|
}, silenceTimeoutMs);
|
|
3974
3984
|
};
|
|
3975
|
-
const scheduleReconnect = () => {
|
|
3985
|
+
const scheduleReconnect = (delayMs) => {
|
|
3976
3986
|
if (closed || suspended || retryTimerId) return;
|
|
3977
|
-
|
|
3978
|
-
|
|
3987
|
+
if (failedDelayTimerId) {
|
|
3988
|
+
setStatus("reconnecting");
|
|
3989
|
+
return;
|
|
3990
|
+
}
|
|
3991
|
+
let backoff = delayMs;
|
|
3992
|
+
if (backoff === void 0) {
|
|
3993
|
+
backoff = Math.min(maxBackoffMs, initialBackoffMs * 2 ** attempt);
|
|
3994
|
+
attempt += 1;
|
|
3995
|
+
}
|
|
3979
3996
|
const jitter = backoff * 0.25 * Math.random();
|
|
3980
|
-
attempt += 1;
|
|
3981
3997
|
retryTimerId = setTimeout(() => {
|
|
3982
3998
|
retryTimerId = null;
|
|
3983
3999
|
void connect();
|
|
3984
4000
|
}, backoff + jitter);
|
|
4001
|
+
setStatus("reconnecting");
|
|
3985
4002
|
};
|
|
3986
4003
|
const parseFrame = (rawFrame) => {
|
|
3987
4004
|
let eventName = "message";
|
|
@@ -4013,6 +4030,9 @@ function createSseSubscription(options) {
|
|
|
4013
4030
|
async function connect() {
|
|
4014
4031
|
if (closed || suspended) return;
|
|
4015
4032
|
const gen = ++generation;
|
|
4033
|
+
stalled = false;
|
|
4034
|
+
awaitingAuth = false;
|
|
4035
|
+
lastConnectAt = Date.now();
|
|
4016
4036
|
setStatus("connecting");
|
|
4017
4037
|
abortController = new AbortController();
|
|
4018
4038
|
let response;
|
|
@@ -4040,9 +4060,19 @@ function createSseSubscription(options) {
|
|
|
4040
4060
|
return;
|
|
4041
4061
|
}
|
|
4042
4062
|
const blockLayer = response.headers.get("x-block-layer");
|
|
4063
|
+
const blockNote = blockLayer ? ` (x-block-layer: ${blockLayer})` : "";
|
|
4064
|
+
if (response.status === 401 && pauseWhenHidden) {
|
|
4065
|
+
const delayMs = Math.min(AUTH_RETRY_MAX_MS, AUTH_RETRY_INITIAL_MS * 2 ** authAttempt);
|
|
4066
|
+
authAttempt += 1;
|
|
4067
|
+
console.warn(`[sse-subscription] 401 for ${url}${blockNote} \u2014 retrying in ~${Math.round(delayMs / 1e3)}s`);
|
|
4068
|
+
awaitingAuth = true;
|
|
4069
|
+
scheduleReconnect(delayMs);
|
|
4070
|
+
return;
|
|
4071
|
+
}
|
|
4043
4072
|
console.warn(
|
|
4044
|
-
`[sse-subscription] terminal ${response.status} for ${url}${
|
|
4073
|
+
`[sse-subscription] terminal ${response.status} for ${url}${blockNote} \u2014 ${pauseWhenHidden ? "retrying on presence" : "not retrying"}`
|
|
4045
4074
|
);
|
|
4075
|
+
stalled = pauseWhenHidden;
|
|
4046
4076
|
setStatus("terminal");
|
|
4047
4077
|
return;
|
|
4048
4078
|
}
|
|
@@ -4051,6 +4081,7 @@ function createSseSubscription(options) {
|
|
|
4051
4081
|
return;
|
|
4052
4082
|
}
|
|
4053
4083
|
attempt = 0;
|
|
4084
|
+
authAttempt = 0;
|
|
4054
4085
|
setStatus("open");
|
|
4055
4086
|
armSilenceTimer();
|
|
4056
4087
|
confirmTimerId = clearLifecycleTimer(confirmTimerId);
|
|
@@ -4112,6 +4143,10 @@ function createSseSubscription(options) {
|
|
|
4112
4143
|
abortController?.abort();
|
|
4113
4144
|
setStatus("suspended");
|
|
4114
4145
|
};
|
|
4146
|
+
const retryIfStalled = () => {
|
|
4147
|
+
if (!stalled || Date.now() - lastConnectAt < PRESENCE_RETRY_MIN_INTERVAL_MS) return;
|
|
4148
|
+
doReconnect();
|
|
4149
|
+
};
|
|
4115
4150
|
const onVisibilityChange = () => {
|
|
4116
4151
|
if (document.visibilityState === "hidden") {
|
|
4117
4152
|
if (!hiddenGraceTimerId) {
|
|
@@ -4126,15 +4161,21 @@ function createSseSubscription(options) {
|
|
|
4126
4161
|
if (suspended) {
|
|
4127
4162
|
suspended = false;
|
|
4128
4163
|
void connect();
|
|
4164
|
+
return;
|
|
4129
4165
|
}
|
|
4166
|
+
retryIfStalled();
|
|
4130
4167
|
};
|
|
4131
4168
|
const onOnline = () => {
|
|
4132
4169
|
if (!suspended) doReconnect();
|
|
4133
4170
|
};
|
|
4171
|
+
const unsubscribeCredentials = pauseWhenHidden && fetchImpl === embedAuthedFetch ? subscribeEmbedCredentialChange(() => {
|
|
4172
|
+
if (awaitingAuth) doReconnect();
|
|
4173
|
+
}) : null;
|
|
4134
4174
|
const listenersActive = pauseWhenHidden && typeof document !== "undefined" && typeof window !== "undefined";
|
|
4135
4175
|
if (listenersActive) {
|
|
4136
4176
|
document.addEventListener("visibilitychange", onVisibilityChange);
|
|
4137
4177
|
window.addEventListener("online", onOnline);
|
|
4178
|
+
window.addEventListener("focus", retryIfStalled);
|
|
4138
4179
|
}
|
|
4139
4180
|
void connect();
|
|
4140
4181
|
return {
|
|
@@ -4143,11 +4184,14 @@ function createSseSubscription(options) {
|
|
|
4143
4184
|
closed = true;
|
|
4144
4185
|
generation += 1;
|
|
4145
4186
|
clearTimers();
|
|
4187
|
+
hiddenGraceTimerId = clearLifecycleTimer(hiddenGraceTimerId);
|
|
4146
4188
|
abortController?.abort();
|
|
4147
4189
|
if (listenersActive) {
|
|
4148
4190
|
document.removeEventListener("visibilitychange", onVisibilityChange);
|
|
4149
4191
|
window.removeEventListener("online", onOnline);
|
|
4192
|
+
window.removeEventListener("focus", retryIfStalled);
|
|
4150
4193
|
}
|
|
4194
|
+
unsubscribeCredentials?.();
|
|
4151
4195
|
setConnected(false);
|
|
4152
4196
|
onStatusChange?.("closed");
|
|
4153
4197
|
},
|