@burdenoff/fe-libs 2026.1021.1 → 2026.1021.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.
- package/dist/shared/components/LandingOrDashboardRedirect.d.ts +45 -0
- package/dist/shared/components/LandingOrDashboardRedirect.js +63 -0
- package/dist/shared/components/SSORedirectGuard.d.ts +25 -5
- package/dist/shared/components/SSORedirectGuard.js +52 -36
- package/dist/shared/components/index.d.ts +3 -1
- package/dist/shared/utils/index.d.ts +2 -0
- package/dist/shared/utils/redirectAllowlist.d.ts +60 -0
- package/dist/shared/utils/redirectAllowlist.js +47 -0
- package/dist/shared-components.js +22 -21
- package/dist/shared-native.js +14 -14
- package/dist/shared-utils.js +12 -11
- package/dist/shared.js +108 -106
- package/dist/shell-native/boot.js +32 -30
- package/dist/shell-native/deep-link-context.d.ts +44 -0
- package/dist/shell-native/deep-link-context.js +31 -0
- package/dist/shell-native/deep-link.d.ts +31 -4
- package/dist/shell-native/deep-link.js +60 -25
- package/dist/shell-native/index.d.ts +3 -1
- package/dist/shell-native/types.d.ts +9 -0
- package/dist/shell-native/useDeepLinkNavigator.d.ts +18 -0
- package/dist/shell-native/useDeepLinkNavigator.js +19 -0
- package/dist/shell-native.js +18 -16
- package/dist/utils/index.js +1 -0
- package/package.json +2 -2
|
@@ -3,14 +3,35 @@ import { isNativePluginAvailable as t } from "./platform.js";
|
|
|
3
3
|
import { getLegacyElectronBridge as n } from "./desktop-bridge.js";
|
|
4
4
|
import { App as r } from "@capacitor/app";
|
|
5
5
|
//#region src/shell-native/deep-link.ts
|
|
6
|
-
var i = [],
|
|
7
|
-
function
|
|
8
|
-
if (!
|
|
9
|
-
let
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
6
|
+
var i = 4e3, a = [], o = null, s = null, c = !1;
|
|
7
|
+
function l(e) {
|
|
8
|
+
if (typeof e != "string" || !e.startsWith("/") || e.startsWith("//") || e.startsWith("/\\")) return !1;
|
|
9
|
+
for (let t = 0; t < e.length; t += 1) {
|
|
10
|
+
let n = e.charCodeAt(t);
|
|
11
|
+
if (n < 32 || n === 127) return !1;
|
|
12
|
+
}
|
|
13
|
+
return !0;
|
|
14
|
+
}
|
|
15
|
+
function u(e) {
|
|
16
|
+
if (l(e) && !(typeof window > "u")) try {
|
|
17
|
+
window.history.pushState(null, "", e);
|
|
18
|
+
let t = typeof PopStateEvent == "function" ? new PopStateEvent("popstate", { state: null }) : new Event("popstate");
|
|
19
|
+
window.dispatchEvent(t);
|
|
20
|
+
} catch (e) {
|
|
21
|
+
console.debug("[shell-native] deep-link fallback navigation failed:", e);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function d() {
|
|
25
|
+
return o || (c ? u : null);
|
|
26
|
+
}
|
|
27
|
+
function f() {
|
|
28
|
+
let e = d();
|
|
29
|
+
if (!e || a.length === 0) return;
|
|
30
|
+
let t = a;
|
|
31
|
+
a = [];
|
|
32
|
+
for (let n of t) e(n);
|
|
33
|
+
}
|
|
34
|
+
function p(e) {
|
|
14
35
|
let t;
|
|
15
36
|
try {
|
|
16
37
|
t = new URL(e);
|
|
@@ -19,35 +40,49 @@ function s(e) {
|
|
|
19
40
|
}
|
|
20
41
|
return `${t.pathname || "/"}${t.search}${t.hash}`;
|
|
21
42
|
}
|
|
22
|
-
function
|
|
23
|
-
let t =
|
|
24
|
-
t !== null && (
|
|
43
|
+
function m(e) {
|
|
44
|
+
let t = p(e);
|
|
45
|
+
t !== null && b(t);
|
|
25
46
|
}
|
|
26
|
-
async function
|
|
47
|
+
async function h() {
|
|
27
48
|
if (t("App")) try {
|
|
28
|
-
await r.addListener("appUrlOpen", (e) =>
|
|
49
|
+
await r.addListener("appUrlOpen", (e) => m(e.url));
|
|
29
50
|
} catch {}
|
|
30
51
|
}
|
|
31
|
-
function
|
|
52
|
+
function g() {
|
|
32
53
|
let t = e();
|
|
33
54
|
if (t && typeof t.onDeepLink == "function") {
|
|
34
|
-
t.onDeepLink((e) =>
|
|
55
|
+
t.onDeepLink((e) => m(e));
|
|
35
56
|
return;
|
|
36
57
|
}
|
|
37
58
|
let r = n();
|
|
38
|
-
r && typeof r.onDeepLink == "function" && r.onDeepLink((e) =>
|
|
59
|
+
r && typeof r.onDeepLink == "function" && r.onDeepLink((e) => m(e));
|
|
39
60
|
}
|
|
40
|
-
async function
|
|
41
|
-
|
|
61
|
+
async function _() {
|
|
62
|
+
g(), await h();
|
|
42
63
|
}
|
|
43
|
-
function
|
|
44
|
-
|
|
64
|
+
function v(e) {
|
|
65
|
+
return o = e, f(), () => {
|
|
66
|
+
o === e && (o = null);
|
|
67
|
+
};
|
|
45
68
|
}
|
|
46
|
-
function
|
|
47
|
-
|
|
69
|
+
function y() {
|
|
70
|
+
o = null;
|
|
48
71
|
}
|
|
49
|
-
function
|
|
50
|
-
|
|
72
|
+
function b(e) {
|
|
73
|
+
let t = d();
|
|
74
|
+
t ? t(e) : a.push(e);
|
|
75
|
+
}
|
|
76
|
+
function x(e = i) {
|
|
77
|
+
S(), s = setTimeout(() => {
|
|
78
|
+
s = null, c = !0, !o && a.length > 0 && console.debug("[shell-native] no deep-link navigator registered; routing queued links via history"), f();
|
|
79
|
+
}, Number.isFinite(e) && e > 0 ? e : 0);
|
|
80
|
+
}
|
|
81
|
+
function S() {
|
|
82
|
+
s !== null && clearTimeout(s), s = null, c = !1;
|
|
83
|
+
}
|
|
84
|
+
function C() {
|
|
85
|
+
S(), a = [], o = null;
|
|
51
86
|
}
|
|
52
87
|
//#endregion
|
|
53
|
-
export {
|
|
88
|
+
export { i as DEFAULT_DEEP_LINK_FALLBACK_DELAY_MS, x as armDeepLinkFallback, y as clearDeepLinkNavigator, p as deepLinkUrlToPath, S as disarmDeepLinkFallback, _ as installDeepLinkHandler, l as isSafeInAppPath, b as navigateDeepLinkPath, v as registerDeepLinkNavigator, C as resetDeepLinksForTests };
|
|
@@ -27,7 +27,9 @@
|
|
|
27
27
|
*/
|
|
28
28
|
export { bootNativeShell, resetNativeShellBootForTests } from './boot';
|
|
29
29
|
export { APP_READY_EVENT, armSplashSafetyTimer, isAppReady, markAppReady, resetAppReadyForTests, } from './splash';
|
|
30
|
-
export { clearDeepLinkNavigator, deepLinkUrlToPath, installDeepLinkHandler, navigateDeepLinkPath, registerDeepLinkNavigator, } from './deep-link';
|
|
30
|
+
export { armDeepLinkFallback, clearDeepLinkNavigator, DEFAULT_DEEP_LINK_FALLBACK_DELAY_MS, deepLinkUrlToPath, disarmDeepLinkFallback, installDeepLinkHandler, isSafeInAppPath, navigateDeepLinkPath, registerDeepLinkNavigator, resetDeepLinksForTests, type DeepLinkNavigator, } from './deep-link';
|
|
31
|
+
export { createDeepLinkNavigator, DEEP_LINK_CONTEXT_ID_PATTERN, parseDeepLinkContext, type DeepLinkContextOptions, type DeepLinkContextUpdate, type DeepLinkNavigatorOptions, } from './deep-link-context';
|
|
32
|
+
export { useDeepLinkNavigator } from './useDeepLinkNavigator';
|
|
31
33
|
export { installNativeBridge } from './bridge';
|
|
32
34
|
export { applyNativePlatformClass, getNativePlatform, isNativePlatform, isNativePluginAvailable, isNativePreview, isRealNativePlatform, } from './platform';
|
|
33
35
|
export { applyNativePreview, getActiveNativePreview, resolveNativePreview, NATIVE_PREVIEW_QUERY_PARAM, NATIVE_PREVIEW_STORAGE_KEY, } from './preview';
|
|
@@ -318,6 +318,15 @@ export interface BootNativeShellOptions {
|
|
|
318
318
|
desktop?: {
|
|
319
319
|
navigate?: (path: string) => void;
|
|
320
320
|
};
|
|
321
|
+
/**
|
|
322
|
+
* Deep-link queue. Links queue until the router registers a navigator
|
|
323
|
+
* (`useDeepLinkNavigator`). If none registers within `fallbackDelayMs`
|
|
324
|
+
* (default 4000), queued and later links navigate through
|
|
325
|
+
* `history.pushState` + `popstate` instead. `false` disables the fallback.
|
|
326
|
+
*/
|
|
327
|
+
deepLinks?: {
|
|
328
|
+
fallbackDelayMs?: number | false;
|
|
329
|
+
};
|
|
321
330
|
}
|
|
322
331
|
export interface NativeShellHandle {
|
|
323
332
|
platform: NativeShellPlatform;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DeepLinkNavigatorOptions } from './deep-link-context';
|
|
2
|
+
/**
|
|
3
|
+
* Bind the native deep-link queue (Capacitor `appUrlOpen`, the desktop
|
|
4
|
+
* bridge's `onDeepLink`, native and web push taps) to the shell's router.
|
|
5
|
+
* Mount it ONCE, inside the router and inside `ActiveContextProvider`:
|
|
6
|
+
*
|
|
7
|
+
* ```tsx
|
|
8
|
+
* const navigate = useNavigate();
|
|
9
|
+
* const { setContext } = useActiveContext();
|
|
10
|
+
* useDeepLinkNavigator(navigate, { setContext });
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* Links that arrived before mount (cold-start OAuth callbacks, the push tap
|
|
14
|
+
* that launched the app) are flushed on mount. The latest `navigate` and
|
|
15
|
+
* options are always used, so callers need not memoise them. On unmount the
|
|
16
|
+
* navigator is unregistered unless a newer registration replaced it.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useDeepLinkNavigator(navigate: (path: string) => void, options?: DeepLinkNavigatorOptions): void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { registerDeepLinkNavigator as e } from "./deep-link.js";
|
|
2
|
+
import { createDeepLinkNavigator as t } from "./deep-link-context.js";
|
|
3
|
+
import { useEffect as n, useRef as r } from "react";
|
|
4
|
+
//#region src/shell-native/useDeepLinkNavigator.ts
|
|
5
|
+
function i(i, a = {}) {
|
|
6
|
+
let o = r(i), s = r(a);
|
|
7
|
+
n(() => {
|
|
8
|
+
o.current = i, s.current = a;
|
|
9
|
+
}), n(() => e(t((e) => o.current(e), {
|
|
10
|
+
get urlParams() {
|
|
11
|
+
return s.current.urlParams;
|
|
12
|
+
},
|
|
13
|
+
get setContext() {
|
|
14
|
+
return s.current.setContext;
|
|
15
|
+
}
|
|
16
|
+
})), []);
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { i as useDeepLinkNavigator };
|
package/dist/shell-native.js
CHANGED
|
@@ -13,19 +13,21 @@ import { impactFeedback as D, notificationFeedback as O, selectionFeedback as k
|
|
|
13
13
|
import { showNativeToast as A } from "./shell-native/toast.js";
|
|
14
14
|
import { shareContent as j } from "./shell-native/share.js";
|
|
15
15
|
import { installNativeBridge as M } from "./shell-native/bridge.js";
|
|
16
|
-
import {
|
|
17
|
-
import { populateDeviceInfo as
|
|
18
|
-
import { KEYBOARD_HEIGHT_CSS_VAR as
|
|
19
|
-
import { NETWORK_STATUS_EVENT as
|
|
20
|
-
import { notifyOtaReady as
|
|
21
|
-
import { PUSH_TOKEN_EVENT as
|
|
22
|
-
import { SW_NOTIFICATION_CLICK_MESSAGE as
|
|
23
|
-
import { installPushOptIn as
|
|
24
|
-
import { PWA_INSTALLED_EVENT as
|
|
25
|
-
import { APP_READY_EVENT as
|
|
26
|
-
import { DARK_FAMILY_THEMES as
|
|
27
|
-
import { bootNativeShell as
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
|
|
16
|
+
import { DEFAULT_DEEP_LINK_FALLBACK_DELAY_MS as N, armDeepLinkFallback as P, clearDeepLinkNavigator as F, deepLinkUrlToPath as I, disarmDeepLinkFallback as L, installDeepLinkHandler as R, isSafeInAppPath as z, navigateDeepLinkPath as B, registerDeepLinkNavigator as V, resetDeepLinksForTests as H } from "./shell-native/deep-link.js";
|
|
17
|
+
import { populateDeviceInfo as U } from "./shell-native/device.js";
|
|
18
|
+
import { KEYBOARD_HEIGHT_CSS_VAR as W, KEYBOARD_OPEN_CLASS as G, configureKeyboard as K, keyboardHandlers as q } from "./shell-native/keyboard.js";
|
|
19
|
+
import { NETWORK_STATUS_EVENT as J, getLastNetworkStatus as Y, installNetworkListener as X } from "./shell-native/network.js";
|
|
20
|
+
import { notifyOtaReady as Z } from "./shell-native/ota.js";
|
|
21
|
+
import { PUSH_TOKEN_EVENT as Q, emitPushToken as $, installPushNotifications as ee, requestPushPermission as te } from "./shell-native/push.js";
|
|
22
|
+
import { SW_NOTIFICATION_CLICK_MESSAGE as ne, SW_PUSH_SUBSCRIPTION_CHANGE_MESSAGE as re, WEB_PUSH_MANIFEST_KEY as ie, getWebPushManifestConfig as ae, getWebPushSubscription as oe, installWebPushMessageBridge as se, isWebPushSupported as ce, requestWebPushPermission as le, resetWebPushForTests as ue, resolveVapidPublicKey as de, serializeWebPushSubscription as fe, subscribeWebPush as pe, unsubscribeWebPush as me, urlBase64ToUint8Array as he } from "./shell-native/web-push.js";
|
|
23
|
+
import { installPushOptIn as ge, resetPushOptInForTests as _e } from "./shell-native/push-optin.js";
|
|
24
|
+
import { PWA_INSTALLED_EVENT as ve, PWA_INSTALL_AVAILABLE_EVENT as ye, PWA_UPDATE_READY_EVENT as be, installPwa as xe, installPwaPrompt as Se, isPwaEligibleHost as Ce, resetPwaForTests as we } from "./shell-native/pwa.js";
|
|
25
|
+
import { APP_READY_EVENT as Te, armSplashSafetyTimer as Ee, isAppReady as De, markAppReady as Oe, resetAppReadyForTests as ke } from "./shell-native/splash.js";
|
|
26
|
+
import { DARK_FAMILY_THEMES as Ae, applyStatusBarTheme as je, installStatusBarThemeListener as Me, isDarkThemeName as Ne, resolveDocumentIsDark as Pe, statusBarDetailIsDark as Fe } from "./shell-native/system-bars.js";
|
|
27
|
+
import { bootNativeShell as Ie, resetNativeShellBootForTests as Le } from "./shell-native/boot.js";
|
|
28
|
+
import { DEEP_LINK_CONTEXT_ID_PATTERN as Re, createDeepLinkNavigator as ze, parseDeepLinkContext as Be } from "./shell-native/deep-link-context.js";
|
|
29
|
+
import { useDeepLinkNavigator as Ve } from "./shell-native/useDeepLinkNavigator.js";
|
|
30
|
+
import { defineCapacitorConfig as He, isValidAllowNavigationRule as Ue } from "./shell-native/capacitor-config.js";
|
|
31
|
+
import { defineWebManifest as We } from "./shell-native/web-manifest.js";
|
|
32
|
+
import { SERVICE_WORKER_TEMPLATE as Ge, renderServiceWorker as Ke } from "./shell-native/service-worker.js";
|
|
33
|
+
export { Te as APP_READY_EVENT, Ae as DARK_FAMILY_THEMES, Re as DEEP_LINK_CONTEXT_ID_PATTERN, _ as DEFAULT_AUTH_INTERCEPT_PREFIXES, N as DEFAULT_DEEP_LINK_FALLBACK_DELAY_MS, W as KEYBOARD_HEIGHT_CSS_VAR, G as KEYBOARD_OPEN_CLASS, t as NATIVE_PREVIEW_QUERY_PARAM, n as NATIVE_PREVIEW_STORAGE_KEY, J as NETWORK_STATUS_EVENT, Q as PUSH_TOKEN_EVENT, ve as PWA_INSTALLED_EVENT, ye as PWA_INSTALL_AVAILABLE_EVENT, be as PWA_UPDATE_READY_EVENT, Ge as SERVICE_WORKER_TEMPLATE, ne as SW_NOTIFICATION_CLICK_MESSAGE, re as SW_PUSH_SUBSCRIPTION_CHANGE_MESSAGE, ie as WEB_PUSH_MANIFEST_KEY, o as applyNativePlatformClass, r as applyNativePreview, je as applyStatusBarTheme, P as armDeepLinkFallback, Ee as armSplashSafetyTimer, Ie as bootNativeShell, F as clearDeepLinkNavigator, p as configureElectronGlobalKey, K as configureKeyboard, ze as createDeepLinkNavigator, b as createDefaultBackButtonHandlers, I as deepLinkUrlToPath, He as defineCapacitorConfig, We as defineWebManifest, L as disarmDeepLinkFallback, $ as emitPushToken, i as getActiveNativePreview, e as getDesktopBridge, m as getElectronGlobalKey, Y as getLastNetworkStatus, h as getLegacyElectronBridge, s as getNativePlatform, ae as getWebPushManifestConfig, oe as getWebPushSubscription, D as impactFeedback, x as installBackButtonHandler, R as installDeepLinkHandler, w as installExternalUrlOpener, f as installMobileRuntimeHooks, v as installNativeAuthNavigationIntercept, M as installNativeBridge, X as installNetworkListener, ee as installPushNotifications, ge as installPushOptIn, xe as installPwa, Se as installPwaPrompt, Me as installStatusBarThemeListener, se as installWebPushMessageBridge, De as isAppReady, Ne as isDarkThemeName, g as isDesktopShell, c as isNativePlatform, l as isNativePluginAvailable, u as isNativePreview, Ce as isPwaEligibleHost, d as isRealNativePlatform, z as isSafeInAppPath, Ue as isValidAllowNavigationRule, ce as isWebPushSupported, q as keyboardHandlers, Oe as markAppReady, B as navigateDeepLinkPath, O as notificationFeedback, Z as notifyOtaReady, T as openExternalUrl, Be as parseDeepLinkContext, U as populateDeviceInfo, V as registerDeepLinkNavigator, Ke as renderServiceWorker, te as requestPushPermission, le as requestWebPushPermission, ke as resetAppReadyForTests, H as resetDeepLinksForTests, Le as resetNativeShellBootForTests, _e as resetPushOptInForTests, we as resetPwaForTests, ue as resetWebPushForTests, Pe as resolveDocumentIsDark, a as resolveNativePreview, de as resolveVapidPublicKey, S as runBackButtonPrecedence, k as selectionFeedback, fe as serializeWebPushSubscription, j as shareContent, C as showNativeActionSheet, y as showNativeConfirm, A as showNativeToast, Fe as statusBarDetailIsDark, pe as subscribeWebPush, me as unsubscribeWebPush, he as urlBase64ToUint8Array, Ve as useDeepLinkNavigator, E as writeClipboardText };
|
package/dist/utils/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import "../shared/utils/gatewayFetchRewrite.js";
|
|
|
6
6
|
import "../shared/utils/backendErrors.js";
|
|
7
7
|
import "../shared/utils/authErrorHandling.js";
|
|
8
8
|
import "../shared/utils/authCookie.js";
|
|
9
|
+
import "../shared/utils/redirectAllowlist.js";
|
|
9
10
|
import "../shared/utils/ssoDeposit.js";
|
|
10
11
|
import "../shared/utils/appHelpers.js";
|
|
11
12
|
import "../shared/utils/loggerInit.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@burdenoff/fe-libs",
|
|
3
|
-
"version": "2026.1021.
|
|
3
|
+
"version": "2026.1021.3",
|
|
4
4
|
"description": "Burdenoff frontend primitives and domain libraries",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -311,7 +311,7 @@
|
|
|
311
311
|
"test:package-livekit-optional": "node scripts/validate-livekit-optional.mjs",
|
|
312
312
|
"verify:package": "node scripts/verify-package-contents.mjs",
|
|
313
313
|
"test:handsfree-browser": "node scripts/handsfree-browser-run.mjs",
|
|
314
|
-
"test": "bun test scripts/graphql-schema-drift/__tests__ scripts/a11y-audit/__tests__ src/credentials src/connections src/storage src/shared/assistant src/shared/components src/shared/graphql/links/sse-link.test.ts src/shared/graphql/fetch.test.ts src/shared/graphql/prepareWorkspaceRequest.test.ts src/shared/graphql/client.test.ts src/shared/utils/apollo.test.ts src/shared/graphql/tourWorkspaceAuth.test.ts src/shared/config/gatewayUrls.test.ts src/shared/config/authBridgeUrls.test.ts src/shared/config/shellRoutes.test.ts src/shared/config/gatewayFallback.test.ts scripts/__tests__ src/shared/config/products.test.ts src/shared/config/productSlug.test.ts src/shared/hooks/shell/useProducts.test.ts src/shared/providers/shell/brandAttribute.test.ts src/chrome/ProductSwitcher.test.ts src/shared/utils/gatewayFetchRewrite.test.ts src/shared/utils/authCookie.test.ts src/shared/providers/shell/ProfileStorageManager.test.ts src/shared/providers/AppShellProvider.test.ts src/shared/providers/shell/interpolate.test.ts src/shared/providers/shell/resolveTranslation.test.ts src/shared/providers/shell/I18nProvider.render.test.tsx src/shared/providers/shell/I18nProvider.client.test.tsx src/shared/providers/shell/translationStore.test.ts src/shared/providers/shell/translationLayers.test.ts src/shared/providers/shell/directionMode.test.ts src/shared/providers/shell/authProvider/ssoRelay.test.ts src/shared/providers/shell/authProvider/useAuthActions.signOut.test.tsx src/shared/providers/shell/personaSurfaceRemote.test.ts src/shared/providers/shell/workspaceSwitch.client.test.tsx src/shared/events/sinks/RybbitSink.test.ts src/shell-native src/shared/native src/shared/navigation src/shared/tours src/chrome/__tests__ src/ui/__tests__",
|
|
314
|
+
"test": "bun test scripts/graphql-schema-drift/__tests__ scripts/a11y-audit/__tests__ src/credentials src/connections src/storage src/shared/assistant src/shared/components src/shared/graphql/links/sse-link.test.ts src/shared/graphql/fetch.test.ts src/shared/graphql/prepareWorkspaceRequest.test.ts src/shared/graphql/client.test.ts src/shared/utils/apollo.test.ts src/shared/graphql/tourWorkspaceAuth.test.ts src/shared/config/gatewayUrls.test.ts src/shared/config/authBridgeUrls.test.ts src/shared/config/shellRoutes.test.ts src/shared/config/gatewayFallback.test.ts scripts/__tests__ src/shared/config/products.test.ts src/shared/config/productSlug.test.ts src/shared/hooks/shell/useProducts.test.ts src/shared/providers/shell/brandAttribute.test.ts src/chrome/ProductSwitcher.test.ts src/shared/utils/gatewayFetchRewrite.test.ts src/shared/utils/authCookie.test.ts src/shared/utils/redirectAllowlist.test.ts src/shared/providers/shell/ProfileStorageManager.test.ts src/shared/providers/AppShellProvider.test.ts src/shared/providers/shell/interpolate.test.ts src/shared/providers/shell/resolveTranslation.test.ts src/shared/providers/shell/I18nProvider.render.test.tsx src/shared/providers/shell/I18nProvider.client.test.tsx src/shared/providers/shell/translationStore.test.ts src/shared/providers/shell/translationLayers.test.ts src/shared/providers/shell/directionMode.test.ts src/shared/providers/shell/authProvider/ssoRelay.test.ts src/shared/providers/shell/authProvider/useAuthActions.signOut.test.tsx src/shared/providers/shell/personaSurfaceRemote.test.ts src/shared/providers/shell/workspaceSwitch.client.test.tsx src/shared/events/sinks/RybbitSink.test.ts src/shell-native src/shared/native src/shared/navigation src/shared/tours src/chrome/__tests__ src/ui/__tests__",
|
|
315
315
|
"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 && bun run verify:package'",
|
|
316
316
|
"switch:status": "bun scripts/deps-mode.ts status",
|
|
317
317
|
"switch:remote": "bun scripts/deps-mode.ts remote",
|