@every-app/sdk 0.1.11 → 0.1.12
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/cloudflare/server/gateway.d.ts.map +1 -1
- package/dist/cloudflare/server/gateway.js +5 -4
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/sessionManager.d.ts +24 -2
- package/dist/core/sessionManager.d.ts.map +1 -1
- package/dist/core/sessionManager.js +191 -27
- package/dist/shared/parseMessagePayload.d.ts +3 -0
- package/dist/shared/parseMessagePayload.d.ts.map +1 -0
- package/dist/shared/parseMessagePayload.js +18 -0
- package/dist/tanstack/EmbeddedAppProvider.d.ts.map +1 -1
- package/dist/tanstack/EmbeddedAppProvider.js +3 -2
- package/dist/tanstack/_internal/useEveryAppSession.d.ts +2 -0
- package/dist/tanstack/_internal/useEveryAppSession.d.ts.map +1 -1
- package/dist/tanstack/_internal/useEveryAppSession.js +8 -2
- package/dist/tanstack/useEveryAppRouter.d.ts.map +1 -1
- package/dist/tanstack/useEveryAppRouter.js +20 -11
- package/package.json +4 -1
- package/src/cloudflare/server/gateway.test.ts +41 -9
- package/src/cloudflare/server/gateway.ts +5 -4
- package/src/core/index.ts +10 -2
- package/src/core/sessionManager.test.ts +143 -0
- package/src/core/sessionManager.ts +265 -30
- package/src/shared/parseMessagePayload.ts +22 -0
- package/src/tanstack/EmbeddedAppProvider.tsx +5 -2
- package/src/tanstack/_internal/useEveryAppSession.test.ts +40 -0
- package/src/tanstack/_internal/useEveryAppSession.tsx +16 -3
- package/src/tanstack/useEveryAppRouter.tsx +21 -14
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
2
|
import { SessionManager } from "../core/sessionManager.js";
|
|
3
3
|
import { useRouter } from "@tanstack/react-router";
|
|
4
|
+
import { parseMessagePayload } from "../shared/parseMessagePayload.js";
|
|
4
5
|
|
|
5
6
|
interface UseEveryAppRouterParams {
|
|
6
7
|
sessionManager: SessionManager | null;
|
|
@@ -11,15 +12,20 @@ export function useEveryAppRouter({ sessionManager }: UseEveryAppRouterParams) {
|
|
|
11
12
|
// Route synchronization effect
|
|
12
13
|
useEffect(() => {
|
|
13
14
|
if (!sessionManager) return;
|
|
15
|
+
|
|
14
16
|
// Listen for route sync messages from parent
|
|
15
17
|
const handleMessage = (event: MessageEvent) => {
|
|
16
|
-
|
|
18
|
+
// Validate origin based on environment
|
|
19
|
+
if (!sessionManager.isTrustedHostMessage(event)) return;
|
|
20
|
+
|
|
21
|
+
const data = parseMessagePayload(event.data);
|
|
22
|
+
if (!data) return;
|
|
17
23
|
|
|
18
24
|
if (
|
|
19
|
-
|
|
20
|
-
|
|
25
|
+
data.type === "ROUTE_CHANGE" &&
|
|
26
|
+
data.direction === "parent-to-child"
|
|
21
27
|
) {
|
|
22
|
-
const targetRoute =
|
|
28
|
+
const targetRoute = typeof data.route === "string" ? data.route : null;
|
|
23
29
|
const currentRoute = window.location.pathname;
|
|
24
30
|
|
|
25
31
|
// Only navigate if the route is different from current location
|
|
@@ -44,16 +50,17 @@ export function useEveryAppRouter({ sessionManager }: UseEveryAppRouterParams) {
|
|
|
44
50
|
|
|
45
51
|
lastReportedPath = currentPath;
|
|
46
52
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
const message = {
|
|
54
|
+
type: "ROUTE_CHANGE",
|
|
55
|
+
route: currentPath,
|
|
56
|
+
appId: sessionManager.appId,
|
|
57
|
+
direction: "child-to-parent",
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
try {
|
|
61
|
+
sessionManager.postToHost(message);
|
|
62
|
+
} catch {
|
|
63
|
+
return;
|
|
57
64
|
}
|
|
58
65
|
};
|
|
59
66
|
// Listen to popstate for browser back/forward
|