@every-app/sdk 0.0.9 → 0.0.11
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/getLocalD1Url.d.ts.map +1 -0
- package/dist/cloudflare/index.d.ts +2 -0
- package/dist/cloudflare/index.d.ts.map +1 -0
- package/dist/cloudflare/index.js +1 -0
- package/dist/{client/lazyInitForWorkers.d.ts → cloudflare/lazyInit.d.ts} +1 -1
- package/dist/cloudflare/lazyInit.d.ts.map +1 -0
- package/dist/cloudflare/server/index.d.ts +2 -0
- package/dist/cloudflare/server/index.d.ts.map +1 -0
- package/dist/cloudflare/server/index.js +1 -0
- package/dist/core/authenticatedFetch.d.ts.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +2 -0
- package/dist/{client/session-manager.d.ts → core/sessionManager.d.ts} +1 -1
- package/dist/core/sessionManager.d.ts.map +1 -0
- package/dist/{client → tanstack}/EmbeddedAppProvider.d.ts +1 -1
- package/dist/tanstack/EmbeddedAppProvider.d.ts.map +1 -0
- package/dist/{client → tanstack}/EmbeddedAppProvider.js +1 -1
- package/dist/tanstack/GatewayRequiredError.d.ts.map +1 -0
- package/dist/{client → tanstack}/_internal/useEveryAppSession.d.ts +1 -1
- package/dist/tanstack/_internal/useEveryAppSession.d.ts.map +1 -0
- package/dist/{client → tanstack}/_internal/useEveryAppSession.js +1 -1
- package/dist/tanstack/index.d.ts +4 -0
- package/dist/tanstack/index.d.ts.map +1 -0
- package/dist/tanstack/index.js +3 -0
- package/dist/{server/auth-config.d.ts → tanstack/server/authConfig.d.ts} +1 -1
- package/dist/tanstack/server/authConfig.d.ts.map +1 -0
- package/dist/{server → tanstack/server}/authenticateRequest.d.ts +10 -2
- package/dist/tanstack/server/authenticateRequest.d.ts.map +1 -0
- package/dist/{server → tanstack/server}/index.d.ts +1 -1
- package/dist/tanstack/server/index.d.ts.map +1 -0
- package/dist/{server → tanstack/server}/index.js +1 -1
- package/dist/tanstack/server/types.d.ts.map +1 -0
- package/dist/{client/_internal → tanstack}/useEveryAppRouter.d.ts +1 -1
- package/dist/tanstack/useEveryAppRouter.d.ts.map +1 -0
- package/dist/tanstack/useSessionTokenClientMiddleware.d.ts.map +1 -0
- package/package.json +18 -12
- package/src/cloudflare/index.ts +1 -0
- package/src/cloudflare/server/index.ts +1 -0
- package/src/core/index.ts +4 -0
- package/src/{client/session-manager.test.ts → core/sessionManager.test.ts} +4 -4
- package/src/{client → tanstack}/EmbeddedAppProvider.tsx +2 -2
- package/src/{client → tanstack}/_internal/useEveryAppSession.tsx +4 -1
- package/src/tanstack/index.ts +3 -0
- package/src/{server → tanstack/server}/authenticateRequest.test.ts +3 -4
- package/src/{server → tanstack/server}/authenticateRequest.ts +10 -2
- package/src/{server → tanstack/server}/index.ts +1 -1
- package/src/{client/_internal → tanstack}/useEveryAppRouter.tsx +2 -1
- package/src/{client → tanstack}/useSessionTokenClientMiddleware.ts +1 -1
- package/dist/client/EmbeddedAppProvider.d.ts.map +0 -1
- package/dist/client/GatewayRequiredError.d.ts.map +0 -1
- package/dist/client/_internal/useEveryAppRouter.d.ts.map +0 -1
- package/dist/client/_internal/useEveryAppSession.d.ts.map +0 -1
- package/dist/client/authenticatedFetch.d.ts.map +0 -1
- package/dist/client/index.d.ts +0 -8
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js +0 -6
- package/dist/client/lazyInitForWorkers.d.ts.map +0 -1
- package/dist/client/session-manager.d.ts.map +0 -1
- package/dist/client/useSessionTokenClientMiddleware.d.ts.map +0 -1
- package/dist/server/auth-config.d.ts.map +0 -1
- package/dist/server/authenticateRequest.d.ts.map +0 -1
- package/dist/server/getLocalD1Url.d.ts.map +0 -1
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/types.d.ts.map +0 -1
- package/src/client/index.ts +0 -10
- /package/dist/{server → cloudflare}/getLocalD1Url.d.ts +0 -0
- /package/dist/{server → cloudflare}/getLocalD1Url.js +0 -0
- /package/dist/{client/lazyInitForWorkers.js → cloudflare/lazyInit.js} +0 -0
- /package/dist/{client → core}/authenticatedFetch.d.ts +0 -0
- /package/dist/{client → core}/authenticatedFetch.js +0 -0
- /package/dist/{client/session-manager.js → core/sessionManager.js} +0 -0
- /package/dist/{client → tanstack}/GatewayRequiredError.d.ts +0 -0
- /package/dist/{client → tanstack}/GatewayRequiredError.js +0 -0
- /package/dist/{server/auth-config.js → tanstack/server/authConfig.js} +0 -0
- /package/dist/{server → tanstack/server}/authenticateRequest.js +0 -0
- /package/dist/{server → tanstack/server}/types.d.ts +0 -0
- /package/dist/{server → tanstack/server}/types.js +0 -0
- /package/dist/{client/_internal → tanstack}/useEveryAppRouter.js +0 -0
- /package/dist/{client → tanstack}/useSessionTokenClientMiddleware.d.ts +0 -0
- /package/dist/{client → tanstack}/useSessionTokenClientMiddleware.js +0 -0
- /package/src/{server → cloudflare}/getLocalD1Url.ts +0 -0
- /package/src/{client/lazyInitForWorkers.ts → cloudflare/lazyInit.ts} +0 -0
- /package/src/{client → core}/authenticatedFetch.ts +0 -0
- /package/src/{client/session-manager.ts → core/sessionManager.ts} +0 -0
- /package/src/{client → tanstack}/GatewayRequiredError.tsx +0 -0
- /package/src/{server/auth-config.ts → tanstack/server/authConfig.ts} +0 -0
- /package/src/{server → tanstack/server}/types.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getLocalD1Url.d.ts","sourceRoot":"","sources":["../../src/cloudflare/getLocalD1Url.ts"],"names":[],"mappings":"AAWA,wBAAgB,aAAa,kBAoD5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cloudflare/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { lazyInitForWorkers } from "./lazyInit";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazyInit.d.ts","sourceRoot":"","sources":["../../src/cloudflare/lazyInit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CA8CxE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getLocalD1Url } from "../getLocalD1Url";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticatedFetch.d.ts","sourceRoot":"","sources":["../../src/core/authenticatedFetch.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAevD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,QAAQ,CAAC,CAUnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionManager.d.ts","sourceRoot":"","sources":["../../src/core/sessionManager.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;CACf;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAQ3C;AAED,qBAAa,cAAc;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAE7B,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,cAAc,CAAgC;gBAE1C,MAAM,EAAE,oBAAoB;IAqBxC,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,uBAAuB;IAuCzB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IA8ClC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAOjC,aAAa,IAAI;QACf,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;QACxD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB;IAgBD;;;OAGG;IACH,OAAO,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAwBpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmbeddedAppProvider.d.ts","sourceRoot":"","sources":["../../src/tanstack/EmbeddedAppProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAClE,OAAO,EAAkB,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9E,UAAU,sBAAuB,SAAQ,oBAAoB;IAC3D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAUD,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,GAAG,MAAM,EACV,EAAE,sBAAsB,kDA6BxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,IAAI;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmBzE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, useContext, useMemo } from "react";
|
|
3
3
|
import { useEveryAppSession } from "./_internal/useEveryAppSession";
|
|
4
|
-
import { useEveryAppRouter } from "./
|
|
4
|
+
import { useEveryAppRouter } from "./useEveryAppRouter";
|
|
5
5
|
import { GatewayRequiredError } from "./GatewayRequiredError";
|
|
6
6
|
const EmbeddedAppContext = createContext(null);
|
|
7
7
|
export function EmbeddedAppProvider({ children, ...config }) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GatewayRequiredError.d.ts","sourceRoot":"","sources":["../../src/tanstack/GatewayRequiredError.tsx"],"names":[],"mappings":"AAEA,UAAU,yBAAyB;IACjC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAmFD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,aAAa,EACb,KAAK,GACN,EAAE,yBAAyB,2CA6C3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEveryAppSession.d.ts","sourceRoot":"","sources":["../../../src/tanstack/_internal/useEveryAppSession.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAEnC,UAAU,wBAAwB;IAChC,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C;AAED,wBAAgB,kBAAkB,CAAC,EACjC,oBAAoB,GACrB,EAAE,wBAAwB;;;;;;EAyC1B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useEffect, useRef, useState } from "react";
|
|
2
|
-
import { SessionManager } from "
|
|
2
|
+
import { SessionManager, } from "../../core/sessionManager";
|
|
3
3
|
export function useEveryAppSession({ sessionManagerConfig, }) {
|
|
4
4
|
const sessionManagerRef = useRef(null);
|
|
5
5
|
const [sessionTokenState, setSessionTokenState] = useState({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tanstack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authConfig.d.ts","sourceRoot":"","sources":["../../../src/tanstack/server/authConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,wBAAgB,aAAa,IAAI,UAAU,CAK1C"}
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
import type { AuthConfig } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* JWT payload structure for embedded app session tokens.
|
|
4
|
+
* Contains minimal claims for security - only what's needed for authentication.
|
|
5
|
+
*/
|
|
2
6
|
interface SessionTokenPayload {
|
|
7
|
+
/** User ID (subject claim) */
|
|
3
8
|
sub: string;
|
|
9
|
+
/** Gateway URL (issuer claim) */
|
|
4
10
|
iss: string;
|
|
11
|
+
/** App ID (audience claim) - scopes token to specific app */
|
|
5
12
|
aud: string;
|
|
13
|
+
/** Expiration timestamp */
|
|
6
14
|
exp: number;
|
|
15
|
+
/** Issued at timestamp */
|
|
7
16
|
iat: number;
|
|
8
|
-
|
|
9
|
-
permissions?: string[];
|
|
17
|
+
/** User email - used for user provisioning in apps */
|
|
10
18
|
email?: string;
|
|
11
19
|
}
|
|
12
20
|
export declare function authenticateRequest(authConfig: AuthConfig, providedRequest?: Request): Promise<SessionTokenPayload | null>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticateRequest.d.ts","sourceRoot":"","sources":["../../../src/tanstack/server/authenticateRequest.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C;;;GAGG;AACH,UAAU,mBAAmB;IAC3B,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,UAAU,EACtB,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CA+BrC;AAyCD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAK3E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tanstack/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { authenticateRequest } from "./authenticateRequest";
|
|
2
|
-
export { getAuthConfig } from "./
|
|
2
|
+
export { getAuthConfig } from "./authConfig";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tanstack/server/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEveryAppRouter.d.ts","sourceRoot":"","sources":["../../src/tanstack/useEveryAppRouter.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,UAAU,uBAAuB;IAC/B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC;AAED,wBAAgB,iBAAiB,CAAC,EAAE,cAAc,EAAE,EAAE,uBAAuB,QAmE5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSessionTokenClientMiddleware.d.ts","sourceRoot":"","sources":["../../src/tanstack/useSessionTokenClientMiddleware.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,+BAA+B,6GA2B1C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@every-app/sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"main": "./dist/client/index.js",
|
|
6
|
-
"types": "./dist/client/index.d.ts",
|
|
7
5
|
"exports": {
|
|
8
|
-
"./
|
|
9
|
-
"types": "./dist/
|
|
10
|
-
"default": "./dist/
|
|
6
|
+
"./core": {
|
|
7
|
+
"types": "./dist/core/index.d.ts",
|
|
8
|
+
"default": "./dist/core/index.js"
|
|
11
9
|
},
|
|
12
|
-
"./
|
|
13
|
-
"types": "./dist/
|
|
14
|
-
"default": "./dist/
|
|
10
|
+
"./tanstack": {
|
|
11
|
+
"types": "./dist/tanstack/index.d.ts",
|
|
12
|
+
"default": "./dist/tanstack/index.js"
|
|
15
13
|
},
|
|
16
|
-
"./server
|
|
17
|
-
"types": "./dist/server/
|
|
18
|
-
"default": "./dist/server/
|
|
14
|
+
"./tanstack/server": {
|
|
15
|
+
"types": "./dist/tanstack/server/index.d.ts",
|
|
16
|
+
"default": "./dist/tanstack/server/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./cloudflare": {
|
|
19
|
+
"types": "./dist/cloudflare/index.d.ts",
|
|
20
|
+
"default": "./dist/cloudflare/index.js"
|
|
21
|
+
},
|
|
22
|
+
"./cloudflare/server": {
|
|
23
|
+
"types": "./dist/cloudflare/server/index.d.ts",
|
|
24
|
+
"default": "./dist/cloudflare/server/index.js"
|
|
19
25
|
}
|
|
20
26
|
},
|
|
21
27
|
"files": [
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { lazyInitForWorkers } from "./lazyInit";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getLocalD1Url } from "../getLocalD1Url";
|
|
@@ -4,7 +4,7 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
|
4
4
|
vi.stubEnv("VITE_GATEWAY_URL", "https://gateway.example.com");
|
|
5
5
|
|
|
6
6
|
describe("SessionManager", () => {
|
|
7
|
-
let SessionManager: typeof import("./
|
|
7
|
+
let SessionManager: typeof import("./sessionManager").SessionManager;
|
|
8
8
|
let mockPostMessage: ReturnType<typeof vi.fn>;
|
|
9
9
|
let messageHandler: ((event: MessageEvent) => void) | null = null;
|
|
10
10
|
let addEventListenerSpy: ReturnType<typeof vi.fn>;
|
|
@@ -74,7 +74,7 @@ describe("SessionManager", () => {
|
|
|
74
74
|
});
|
|
75
75
|
|
|
76
76
|
// Import fresh module
|
|
77
|
-
const module = await import("./
|
|
77
|
+
const module = await import("./sessionManager");
|
|
78
78
|
SessionManager = module.SessionManager;
|
|
79
79
|
});
|
|
80
80
|
|
|
@@ -97,7 +97,7 @@ describe("SessionManager", () => {
|
|
|
97
97
|
vi.resetModules();
|
|
98
98
|
vi.stubEnv("VITE_GATEWAY_URL", "");
|
|
99
99
|
|
|
100
|
-
const module = await import("./
|
|
100
|
+
const module = await import("./sessionManager");
|
|
101
101
|
|
|
102
102
|
expect(() => new module.SessionManager({ appId: "test-app" })).toThrow(
|
|
103
103
|
"[SessionManager] VITE_GATEWAY_URL env var is required.",
|
|
@@ -108,7 +108,7 @@ describe("SessionManager", () => {
|
|
|
108
108
|
vi.resetModules();
|
|
109
109
|
vi.stubEnv("VITE_GATEWAY_URL", "not-a-valid-url");
|
|
110
110
|
|
|
111
|
-
const module = await import("./
|
|
111
|
+
const module = await import("./sessionManager");
|
|
112
112
|
|
|
113
113
|
expect(() => new module.SessionManager({ appId: "test-app" })).toThrow(
|
|
114
114
|
"[SessionManager] Invalid gateway URL: not-a-valid-url",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { createContext, useContext, useMemo } from "react";
|
|
2
|
-
import { SessionManager, SessionManagerConfig } from "
|
|
2
|
+
import { SessionManager, SessionManagerConfig } from "../core/sessionManager";
|
|
3
3
|
import { useEveryAppSession } from "./_internal/useEveryAppSession";
|
|
4
|
-
import { useEveryAppRouter } from "./
|
|
4
|
+
import { useEveryAppRouter } from "./useEveryAppRouter";
|
|
5
5
|
import { GatewayRequiredError } from "./GatewayRequiredError";
|
|
6
6
|
|
|
7
7
|
interface EmbeddedProviderConfig extends SessionManagerConfig {
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { useEffect, useRef, useState } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
SessionManager,
|
|
4
|
+
SessionManagerConfig,
|
|
5
|
+
} from "../../core/sessionManager";
|
|
3
6
|
|
|
4
7
|
interface UseEveryAppSessionParams {
|
|
5
8
|
sessionManagerConfig: SessionManagerConfig;
|
|
@@ -59,10 +59,10 @@ describe("authenticateRequest", () => {
|
|
|
59
59
|
});
|
|
60
60
|
|
|
61
61
|
async function createValidToken(overrides: Record<string, unknown> = {}) {
|
|
62
|
+
// Token now only contains minimal claims: sub, email, iss, aud, exp, iat
|
|
63
|
+
// appId is represented by aud claim, permissions and embeddedApp were removed
|
|
62
64
|
const jwt = await new SignJWT({
|
|
63
65
|
email: "user@example.com",
|
|
64
|
-
appId: "test-app",
|
|
65
|
-
permissions: ["read", "write"],
|
|
66
66
|
...overrides,
|
|
67
67
|
})
|
|
68
68
|
.setProtectedHeader({ alg: "RS256" })
|
|
@@ -127,9 +127,8 @@ describe("authenticateRequest", () => {
|
|
|
127
127
|
expect(result).not.toBeNull();
|
|
128
128
|
expect(result!.sub).toBe("user-123");
|
|
129
129
|
expect(result!.email).toBe("user@example.com");
|
|
130
|
-
expect(result!.appId).toBe("test-app");
|
|
131
|
-
expect(result!.permissions).toEqual(["read", "write"]);
|
|
132
130
|
expect(result!.iss).toBe(authConfig.issuer);
|
|
131
|
+
// audience contains the appId
|
|
133
132
|
expect(result!.aud).toBe(authConfig.audience);
|
|
134
133
|
});
|
|
135
134
|
|
|
@@ -9,14 +9,22 @@ import {
|
|
|
9
9
|
import type { AuthConfig } from "./types";
|
|
10
10
|
import { env } from "cloudflare:workers";
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* JWT payload structure for embedded app session tokens.
|
|
14
|
+
* Contains minimal claims for security - only what's needed for authentication.
|
|
15
|
+
*/
|
|
12
16
|
interface SessionTokenPayload {
|
|
17
|
+
/** User ID (subject claim) */
|
|
13
18
|
sub: string;
|
|
19
|
+
/** Gateway URL (issuer claim) */
|
|
14
20
|
iss: string;
|
|
21
|
+
/** App ID (audience claim) - scopes token to specific app */
|
|
15
22
|
aud: string;
|
|
23
|
+
/** Expiration timestamp */
|
|
16
24
|
exp: number;
|
|
25
|
+
/** Issued at timestamp */
|
|
17
26
|
iat: number;
|
|
18
|
-
|
|
19
|
-
permissions?: string[];
|
|
27
|
+
/** User email - used for user provisioning in apps */
|
|
20
28
|
email?: string;
|
|
21
29
|
}
|
|
22
30
|
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
|
-
import { SessionManager } from "../
|
|
2
|
+
import { SessionManager } from "../core/sessionManager";
|
|
3
3
|
import { useRouter } from "@tanstack/react-router";
|
|
4
4
|
|
|
5
5
|
interface UseEveryAppRouterParams {
|
|
6
6
|
sessionManager: SessionManager | null;
|
|
7
7
|
}
|
|
8
|
+
|
|
8
9
|
export function useEveryAppRouter({ sessionManager }: UseEveryAppRouterParams) {
|
|
9
10
|
const router = useRouter();
|
|
10
11
|
// Route synchronization effect
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createMiddleware } from "@tanstack/react-start";
|
|
2
|
-
import type { SessionManager } from "
|
|
2
|
+
import type { SessionManager } from "../core/sessionManager";
|
|
3
3
|
|
|
4
4
|
export const useSessionTokenClientMiddleware = createMiddleware({
|
|
5
5
|
type: "function",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddedAppProvider.d.ts","sourceRoot":"","sources":["../../src/client/EmbeddedAppProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAClE,OAAO,EAAkB,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAKzE,UAAU,sBAAuB,SAAQ,oBAAoB;IAC3D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAUD,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,GAAG,MAAM,EACV,EAAE,sBAAsB,kDA6BxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,IAAI;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmBzE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GatewayRequiredError.d.ts","sourceRoot":"","sources":["../../src/client/GatewayRequiredError.tsx"],"names":[],"mappings":"AAEA,UAAU,yBAAyB;IACjC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAmFD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,aAAa,EACb,KAAK,GACN,EAAE,yBAAyB,2CA6C3B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useEveryAppRouter.d.ts","sourceRoot":"","sources":["../../../src/client/_internal/useEveryAppRouter.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,UAAU,uBAAuB;IAC/B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC;AACD,wBAAgB,iBAAiB,CAAC,EAAE,cAAc,EAAE,EAAE,uBAAuB,QAmE5E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useEveryAppSession.d.ts","sourceRoot":"","sources":["../../../src/client/_internal/useEveryAppSession.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,UAAU,wBAAwB;IAChC,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C;AAED,wBAAgB,kBAAkB,CAAC,EACjC,oBAAoB,GACrB,EAAE,wBAAwB;;;;;;EAyC1B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authenticatedFetch.d.ts","sourceRoot":"","sources":["../../src/client/authenticatedFetch.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAevD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,QAAQ,CAAC,CAUnB"}
|
package/dist/client/index.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { SessionManager, isRunningInIframe } from "./session-manager";
|
|
2
|
-
export type { SessionManagerConfig } from "./session-manager";
|
|
3
|
-
export { useSessionTokenClientMiddleware } from "./useSessionTokenClientMiddleware";
|
|
4
|
-
export { EmbeddedAppProvider, useCurrentUser } from "./EmbeddedAppProvider";
|
|
5
|
-
export { GatewayRequiredError } from "./GatewayRequiredError";
|
|
6
|
-
export { lazyInitForWorkers } from "./lazyInitForWorkers";
|
|
7
|
-
export { authenticatedFetch, getSessionToken } from "./authenticatedFetch";
|
|
8
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AAEpF,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/client/index.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { SessionManager, isRunningInIframe } from "./session-manager";
|
|
2
|
-
export { useSessionTokenClientMiddleware } from "./useSessionTokenClientMiddleware";
|
|
3
|
-
export { EmbeddedAppProvider, useCurrentUser } from "./EmbeddedAppProvider";
|
|
4
|
-
export { GatewayRequiredError } from "./GatewayRequiredError";
|
|
5
|
-
export { lazyInitForWorkers } from "./lazyInitForWorkers";
|
|
6
|
-
export { authenticatedFetch, getSessionToken } from "./authenticatedFetch";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lazyInitForWorkers.d.ts","sourceRoot":"","sources":["../../src/client/lazyInitForWorkers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CA8CxE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/client/session-manager.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;CACf;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAQ3C;AAED,qBAAa,cAAc;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAE7B,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,cAAc,CAAgC;gBAE1C,MAAM,EAAE,oBAAoB;IAqBxC,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,uBAAuB;IAuCzB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IA8ClC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAOjC,aAAa,IAAI;QACf,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;QACxD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB;IAgBD;;;OAGG;IACH,OAAO,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAwBpD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSessionTokenClientMiddleware.d.ts","sourceRoot":"","sources":["../../src/client/useSessionTokenClientMiddleware.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,+BAA+B,6GA2B1C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-config.d.ts","sourceRoot":"","sources":["../../src/server/auth-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,wBAAgB,aAAa,IAAI,UAAU,CAK1C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authenticateRequest.d.ts","sourceRoot":"","sources":["../../src/server/authenticateRequest.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,UAAU,mBAAmB;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,UAAU,EACtB,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CA+BrC;AAyCD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAK3E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getLocalD1Url.d.ts","sourceRoot":"","sources":["../../src/server/getLocalD1Url.ts"],"names":[],"mappings":"AAWA,wBAAgB,aAAa,kBAoD5B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
package/src/client/index.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export { SessionManager, isRunningInIframe } from "./session-manager";
|
|
2
|
-
export type { SessionManagerConfig } from "./session-manager";
|
|
3
|
-
export { useSessionTokenClientMiddleware } from "./useSessionTokenClientMiddleware";
|
|
4
|
-
|
|
5
|
-
export { EmbeddedAppProvider, useCurrentUser } from "./EmbeddedAppProvider";
|
|
6
|
-
export { GatewayRequiredError } from "./GatewayRequiredError";
|
|
7
|
-
|
|
8
|
-
export { lazyInitForWorkers } from "./lazyInitForWorkers";
|
|
9
|
-
|
|
10
|
-
export { authenticatedFetch, getSessionToken } from "./authenticatedFetch";
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|