@every-app/sdk 0.1.14 → 0.3.0-rc.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.
Files changed (167) hide show
  1. package/README.md +608 -2
  2. package/dist/cloudflare/index.d.ts +21 -1
  3. package/dist/cloudflare/index.d.ts.map +1 -1
  4. package/dist/cloudflare/index.js +21 -1
  5. package/dist/cloudflare/sentinel.d.ts +69 -0
  6. package/dist/cloudflare/sentinel.d.ts.map +1 -0
  7. package/dist/cloudflare/sentinel.js +50 -0
  8. package/dist/cloudflare/worker.d.ts +511 -0
  9. package/dist/cloudflare/worker.d.ts.map +1 -0
  10. package/dist/cloudflare/worker.js +738 -0
  11. package/dist/dev/index.d.ts +8 -0
  12. package/dist/dev/index.d.ts.map +1 -0
  13. package/dist/dev/index.js +7 -0
  14. package/dist/dev/keypair.d.ts +24 -0
  15. package/dist/dev/keypair.d.ts.map +1 -0
  16. package/dist/dev/keypair.js +60 -0
  17. package/dist/internal/aiProviders.d.ts +67 -0
  18. package/dist/internal/aiProviders.d.ts.map +1 -0
  19. package/dist/internal/aiProviders.js +220 -0
  20. package/dist/internal/appSettings.d.ts +237 -0
  21. package/dist/internal/appSettings.d.ts.map +1 -0
  22. package/dist/internal/appSettings.js +374 -0
  23. package/dist/internal/capabilities.d.ts +1344 -0
  24. package/dist/internal/capabilities.d.ts.map +1 -0
  25. package/dist/internal/capabilities.js +1521 -0
  26. package/dist/internal/devProviders.d.ts +49 -0
  27. package/dist/internal/devProviders.d.ts.map +1 -0
  28. package/dist/internal/devProviders.js +62 -0
  29. package/dist/internal/email.d.ts +280 -0
  30. package/dist/internal/email.d.ts.map +1 -0
  31. package/dist/internal/email.js +613 -0
  32. package/dist/internal/events.d.ts +182 -0
  33. package/dist/internal/events.d.ts.map +1 -0
  34. package/dist/internal/events.js +324 -0
  35. package/dist/internal/gatewaySettings.d.ts +82 -0
  36. package/dist/internal/gatewaySettings.d.ts.map +1 -0
  37. package/dist/internal/gatewaySettings.js +209 -0
  38. package/dist/internal/identity.d.ts +88 -0
  39. package/dist/internal/identity.d.ts.map +1 -0
  40. package/dist/internal/identity.js +231 -0
  41. package/dist/internal/index.d.ts +19 -0
  42. package/dist/internal/index.d.ts.map +1 -0
  43. package/dist/internal/index.js +18 -0
  44. package/dist/internal/members.d.ts +35 -0
  45. package/dist/internal/members.d.ts.map +1 -0
  46. package/dist/internal/members.js +7 -0
  47. package/dist/internal/oauthClient.d.ts +63 -0
  48. package/dist/internal/oauthClient.d.ts.map +1 -0
  49. package/dist/internal/oauthClient.js +194 -0
  50. package/dist/internal/oauthScopes.d.ts +117 -0
  51. package/dist/internal/oauthScopes.d.ts.map +1 -0
  52. package/dist/internal/oauthScopes.js +416 -0
  53. package/dist/internal/organizationName.d.ts +18 -0
  54. package/dist/internal/organizationName.d.ts.map +1 -0
  55. package/dist/internal/organizationName.js +24 -0
  56. package/dist/internal/protocol.d.ts +195 -0
  57. package/dist/internal/protocol.d.ts.map +1 -0
  58. package/dist/internal/protocol.js +250 -0
  59. package/dist/internal/providerApps.d.ts +75 -0
  60. package/dist/internal/providerApps.d.ts.map +1 -0
  61. package/dist/internal/providerApps.js +59 -0
  62. package/dist/internal/providerRegistry.d.ts +147 -0
  63. package/dist/internal/providerRegistry.d.ts.map +1 -0
  64. package/dist/internal/providerRegistry.js +262 -0
  65. package/dist/internal/providerSpec.d.ts +55 -0
  66. package/dist/internal/providerSpec.d.ts.map +1 -0
  67. package/dist/internal/providerSpec.js +746 -0
  68. package/dist/internal/remoteMcp.d.ts +188 -0
  69. package/dist/internal/remoteMcp.d.ts.map +1 -0
  70. package/dist/internal/remoteMcp.js +543 -0
  71. package/dist/internal/tools.d.ts +115 -0
  72. package/dist/internal/tools.d.ts.map +1 -0
  73. package/dist/internal/tools.js +80 -0
  74. package/dist/server/attribution.d.ts +39 -0
  75. package/dist/server/attribution.d.ts.map +1 -0
  76. package/dist/server/attribution.js +67 -0
  77. package/dist/server/authorizeUrl.d.ts +43 -0
  78. package/dist/server/authorizeUrl.d.ts.map +1 -0
  79. package/dist/server/authorizeUrl.js +110 -0
  80. package/dist/server/emit.d.ts +63 -0
  81. package/dist/server/emit.d.ts.map +1 -0
  82. package/dist/server/emit.js +101 -0
  83. package/dist/server/everyApp.d.ts +81 -0
  84. package/dist/server/everyApp.d.ts.map +1 -0
  85. package/dist/server/everyApp.js +185 -0
  86. package/dist/server/gatewayFetch.d.ts +37 -0
  87. package/dist/server/gatewayFetch.d.ts.map +1 -0
  88. package/dist/server/gatewayFetch.js +115 -0
  89. package/dist/server/index.d.ts +18 -0
  90. package/dist/server/index.d.ts.map +1 -0
  91. package/dist/server/index.js +15 -0
  92. package/dist/server/integrationFetch.d.ts +131 -0
  93. package/dist/server/integrationFetch.d.ts.map +1 -0
  94. package/dist/server/integrationFetch.js +526 -0
  95. package/dist/server/listMembers.d.ts +32 -0
  96. package/dist/server/listMembers.d.ts.map +1 -0
  97. package/dist/server/listMembers.js +74 -0
  98. package/dist/server/nodeServer.d.ts +48 -0
  99. package/dist/server/nodeServer.d.ts.map +1 -0
  100. package/dist/server/nodeServer.js +45 -0
  101. package/dist/server/sendEmail.d.ts +39 -0
  102. package/dist/server/sendEmail.d.ts.map +1 -0
  103. package/dist/server/sendEmail.js +114 -0
  104. package/dist/server/tools.d.ts +184 -0
  105. package/dist/server/tools.d.ts.map +1 -0
  106. package/dist/server/tools.js +347 -0
  107. package/dist/server/toolsEndpoint.d.ts +32 -0
  108. package/dist/server/toolsEndpoint.d.ts.map +1 -0
  109. package/dist/server/toolsEndpoint.js +231 -0
  110. package/package.json +21 -31
  111. package/dist/cloudflare/getLocalD1Url.d.ts +0 -2
  112. package/dist/cloudflare/getLocalD1Url.d.ts.map +0 -1
  113. package/dist/cloudflare/getLocalD1Url.js +0 -40
  114. package/dist/cloudflare/lazyInit.d.ts +0 -22
  115. package/dist/cloudflare/lazyInit.d.ts.map +0 -1
  116. package/dist/cloudflare/lazyInit.js +0 -65
  117. package/dist/cloudflare/server/gateway.d.ts +0 -29
  118. package/dist/cloudflare/server/gateway.d.ts.map +0 -1
  119. package/dist/cloudflare/server/gateway.js +0 -69
  120. package/dist/cloudflare/server/index.d.ts +0 -3
  121. package/dist/cloudflare/server/index.d.ts.map +0 -1
  122. package/dist/cloudflare/server/index.js +0 -2
  123. package/dist/core/authenticatedFetch.d.ts +0 -9
  124. package/dist/core/authenticatedFetch.d.ts.map +0 -1
  125. package/dist/core/authenticatedFetch.js +0 -31
  126. package/dist/core/index.d.ts +0 -4
  127. package/dist/core/index.d.ts.map +0 -1
  128. package/dist/core/index.js +0 -2
  129. package/dist/core/sessionManager.d.ts +0 -58
  130. package/dist/core/sessionManager.d.ts.map +0 -1
  131. package/dist/core/sessionManager.js +0 -357
  132. package/dist/shared/bypassGatewayLocalOnly.d.ts +0 -15
  133. package/dist/shared/bypassGatewayLocalOnly.d.ts.map +0 -1
  134. package/dist/shared/bypassGatewayLocalOnly.js +0 -45
  135. package/dist/shared/parseMessagePayload.d.ts +0 -3
  136. package/dist/shared/parseMessagePayload.d.ts.map +0 -1
  137. package/dist/shared/parseMessagePayload.js +0 -18
  138. package/dist/tanstack/EmbeddedAppProvider.d.ts +0 -30
  139. package/dist/tanstack/EmbeddedAppProvider.d.ts.map +0 -1
  140. package/dist/tanstack/EmbeddedAppProvider.js +0 -57
  141. package/dist/tanstack/GatewayRequiredError.d.ts +0 -20
  142. package/dist/tanstack/GatewayRequiredError.d.ts.map +0 -1
  143. package/dist/tanstack/GatewayRequiredError.js +0 -91
  144. package/dist/tanstack/_internal/useEveryAppSession.d.ts +0 -18
  145. package/dist/tanstack/_internal/useEveryAppSession.d.ts.map +0 -1
  146. package/dist/tanstack/_internal/useEveryAppSession.js +0 -47
  147. package/dist/tanstack/index.d.ts +0 -4
  148. package/dist/tanstack/index.d.ts.map +0 -1
  149. package/dist/tanstack/index.js +0 -3
  150. package/dist/tanstack/server/authConfig.d.ts +0 -3
  151. package/dist/tanstack/server/authConfig.d.ts.map +0 -1
  152. package/dist/tanstack/server/authConfig.js +0 -13
  153. package/dist/tanstack/server/authenticateRequest.d.ts +0 -31
  154. package/dist/tanstack/server/authenticateRequest.d.ts.map +0 -1
  155. package/dist/tanstack/server/authenticateRequest.js +0 -154
  156. package/dist/tanstack/server/index.d.ts +0 -4
  157. package/dist/tanstack/server/index.d.ts.map +0 -1
  158. package/dist/tanstack/server/index.js +0 -2
  159. package/dist/tanstack/server/types.d.ts +0 -5
  160. package/dist/tanstack/server/types.d.ts.map +0 -1
  161. package/dist/tanstack/server/types.js +0 -1
  162. package/dist/tanstack/useEveryAppRouter.d.ts +0 -7
  163. package/dist/tanstack/useEveryAppRouter.d.ts.map +0 -1
  164. package/dist/tanstack/useEveryAppRouter.js +0 -66
  165. package/dist/tanstack/useSessionTokenClientMiddleware.d.ts +0 -2
  166. package/dist/tanstack/useSessionTokenClientMiddleware.d.ts.map +0 -1
  167. package/dist/tanstack/useSessionTokenClientMiddleware.js +0 -29
@@ -1,47 +0,0 @@
1
- import { useEffect, useRef, useState } from "react";
2
- import { SessionManager } from "../../core/sessionManager.js";
3
- export function shouldBootstrapSession(sessionManager) {
4
- // Bootstrapping should happen whenever the app is hosted by a trusted container.
5
- // This intentionally keys off embedded environment semantics (iframe OR RN WebView),
6
- // not iframe-only detection, so RN can initialize auth from pushed tokens.
7
- return sessionManager.isEmbedded() || sessionManager.isBypassGatewayLocalOnly;
8
- }
9
- export function useEveryAppSession({ sessionManagerConfig, }) {
10
- const sessionManagerRef = useRef(null);
11
- const [sessionTokenState, setSessionTokenState] = useState({
12
- status: "NO_TOKEN",
13
- token: null,
14
- });
15
- if (!sessionManagerRef.current && typeof document !== "undefined") {
16
- sessionManagerRef.current = new SessionManager(sessionManagerConfig);
17
- }
18
- const sessionManager = sessionManagerRef.current;
19
- useEffect(() => {
20
- if (!sessionManager)
21
- return;
22
- // Skip token bootstrap when not embedded (unless in demo mode) - the app will show GatewayRequiredError instead
23
- if (!shouldBootstrapSession(sessionManager))
24
- return;
25
- const interval = setInterval(() => {
26
- setSessionTokenState(sessionManager.getTokenState());
27
- }, 5000);
28
- sessionManager
29
- .getToken()
30
- .then(() => {
31
- setSessionTokenState(sessionManager.getTokenState());
32
- })
33
- .catch((err) => {
34
- console.error("[EmbeddedProvider] Initial token request failed:", err);
35
- });
36
- return () => {
37
- clearInterval(interval);
38
- };
39
- }, [sessionManager]);
40
- useEffect(() => {
41
- if (!sessionManager)
42
- return;
43
- // Make sessionManager globally accessible for middleware
44
- window.__embeddedSessionManager = sessionManager;
45
- }, [sessionManager]);
46
- return { sessionManager, sessionTokenState };
47
- }
@@ -1,4 +0,0 @@
1
- export { useSessionTokenClientMiddleware } from "./useSessionTokenClientMiddleware.js";
2
- export { useEveryAppRouter } from "./useEveryAppRouter.js";
3
- export { EmbeddedAppProvider, useCurrentUser } from "./EmbeddedAppProvider.js";
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tanstack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1,3 +0,0 @@
1
- export { useSessionTokenClientMiddleware } from "./useSessionTokenClientMiddleware.js";
2
- export { useEveryAppRouter } from "./useEveryAppRouter.js";
3
- export { EmbeddedAppProvider, useCurrentUser } from "./EmbeddedAppProvider.js";
@@ -1,3 +0,0 @@
1
- import type { AuthConfig } from "./types.js";
2
- export declare function getAuthConfig(): AuthConfig;
3
- //# sourceMappingURL=authConfig.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authConfig.d.ts","sourceRoot":"","sources":["../../../src/tanstack/server/authConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,wBAAgB,aAAa,IAAI,UAAU,CAc1C"}
@@ -1,13 +0,0 @@
1
- import { env } from "cloudflare:workers";
2
- import { isBypassGatewayLocalOnlyServer } from "../../shared/bypassGatewayLocalOnly.js";
3
- export function getAuthConfig() {
4
- const bypassGatewayLocalOnlyEnv = env.BYPASS_GATEWAY_LOCAL_ONLY;
5
- const isBypassGatewayLocalOnly = import.meta.env.PROD !== true &&
6
- (bypassGatewayLocalOnlyEnv === "true" ||
7
- isBypassGatewayLocalOnlyServer() === true);
8
- const issuer = env.GATEWAY_URL || (isBypassGatewayLocalOnly ? "local" : "");
9
- return {
10
- issuer,
11
- audience: import.meta.env.VITE_APP_ID,
12
- };
13
- }
@@ -1,31 +0,0 @@
1
- import type { AuthConfig } from "./types.js";
2
- /**
3
- * JWT payload structure for embedded app session tokens.
4
- * Contains minimal claims for security - only what's needed for authentication.
5
- */
6
- interface SessionTokenPayload {
7
- /** User ID (subject claim) */
8
- sub: string;
9
- /** Gateway URL (issuer claim) */
10
- iss: string;
11
- /** App ID (audience claim) - scopes token to specific app */
12
- aud: string;
13
- /** Expiration timestamp */
14
- exp: number;
15
- /** Issued at timestamp */
16
- iat: number;
17
- /** User email - used for user provisioning in apps */
18
- email?: string;
19
- /** Organization ID used for org-bound runtime enforcement */
20
- orgId?: string;
21
- }
22
- export declare function authenticateRequest(authConfig: AuthConfig, providedRequest?: Request): Promise<SessionTokenPayload | null>;
23
- /**
24
- * Extracts the bearer token from an Authorization header.
25
- *
26
- * @param authHeader - The Authorization header value (e.g., "Bearer eyJ...")
27
- * @returns The token string if valid, null otherwise
28
- */
29
- export declare function extractBearerToken(authHeader: string | null): string | null;
30
- export {};
31
- //# sourceMappingURL=authenticateRequest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authenticateRequest.d.ts","sourceRoot":"","sources":["../../../src/tanstack/server/authenticateRequest.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQ7C;;;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;IACf,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAYD,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,UAAU,EACtB,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CA+FrC;AA8CD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAK3E"}
@@ -1,154 +0,0 @@
1
- import { getRequest } from "@tanstack/react-start/server";
2
- import { createLocalJWKSet, jwtVerify, } from "jose";
3
- import { env } from "cloudflare:workers";
4
- import { BYPASS_GATEWAY_LOCAL_ONLY_TOKEN, createBypassGatewayLocalOnlySessionPayload, isBypassGatewayLocalOnlyServer, } from "../../shared/bypassGatewayLocalOnly.js";
5
- export async function authenticateRequest(authConfig, providedRequest) {
6
- const request = providedRequest || getRequest();
7
- const authHeader = request.headers.get("authorization");
8
- const expectedOrganizationId = getOptionalEnvValue("EVERY_APP_ORG_ID");
9
- const appTenancyMode = getAppTenancyMode();
10
- const isBypassGatewayLocalOnly = import.meta.env.PROD !== true &&
11
- (getOptionalEnvValue("BYPASS_GATEWAY_LOCAL_ONLY") === "true" ||
12
- isBypassGatewayLocalOnlyServer() === true);
13
- if (!authHeader) {
14
- return null;
15
- }
16
- const token = extractBearerToken(authHeader);
17
- if (!token) {
18
- return null;
19
- }
20
- if (isBypassGatewayLocalOnly) {
21
- if (token !== BYPASS_GATEWAY_LOCAL_ONLY_TOKEN) {
22
- return null;
23
- }
24
- if (!expectedOrganizationId) {
25
- console.error(JSON.stringify({
26
- message: "BYPASS_GATEWAY_LOCAL_ONLY requires EVERY_APP_ORG_ID to be set.",
27
- audience: authConfig.audience,
28
- appTenancyMode,
29
- }));
30
- return null;
31
- }
32
- const session = createBypassGatewayLocalOnlySessionPayload(authConfig.audience, expectedOrganizationId);
33
- if (!validateOrganizationBinding({
34
- session,
35
- source: "bypass",
36
- audience: authConfig.audience,
37
- expectedOrganizationId,
38
- appTenancyMode,
39
- })) {
40
- return null;
41
- }
42
- return session;
43
- }
44
- try {
45
- const session = await verifySessionToken(token, authConfig);
46
- if (!validateOrganizationBinding({
47
- session,
48
- source: "session",
49
- audience: authConfig.audience,
50
- expectedOrganizationId,
51
- appTenancyMode,
52
- })) {
53
- return null;
54
- }
55
- return session;
56
- }
57
- catch (error) {
58
- const isProd = import.meta.env.PROD === true;
59
- console.error(JSON.stringify({
60
- message: "Error verifying session token",
61
- error: error instanceof Error ? error.message : String(error),
62
- stack: isProd === true
63
- ? undefined
64
- : error instanceof Error
65
- ? error.stack
66
- : undefined,
67
- errorType: error instanceof Error ? error.constructor.name : "Unknown",
68
- issuer: authConfig.issuer,
69
- audience: authConfig.audience,
70
- expectedOrganizationId,
71
- appTenancyMode,
72
- }));
73
- return null;
74
- }
75
- }
76
- function getAppTenancyMode() {
77
- const mode = getOptionalEnvValue("APP_TENANCY_MODE")?.toLowerCase();
78
- return mode === "multi" ? "multi" : "single";
79
- }
80
- async function verifySessionToken(token, config) {
81
- const { issuer, audience } = config;
82
- if (!issuer) {
83
- throw new Error("Issuer must be provided for token verification");
84
- }
85
- if (!audience) {
86
- throw new Error("Audience must be provided for token verification");
87
- }
88
- // Fetch JWKS - use service binding in production, direct fetch in development
89
- const jwksResponse = import.meta.env.PROD && env.EVERY_APP_GATEWAY
90
- ? await env.EVERY_APP_GATEWAY.fetch("http://localhost/api/embedded/jwks")
91
- : await fetch(`${env.GATEWAY_URL}/api/embedded/jwks`);
92
- if (!jwksResponse.ok) {
93
- throw new Error(`Failed to fetch JWKS: ${jwksResponse.status} ${jwksResponse.statusText}`);
94
- }
95
- const jwks = (await jwksResponse.json());
96
- const localJWKS = createLocalJWKSet(jwks);
97
- const options = {
98
- issuer,
99
- audience,
100
- algorithms: ["RS256"],
101
- };
102
- const { payload } = await jwtVerify(token, localJWKS, options);
103
- return payload;
104
- }
105
- /**
106
- * Extracts the bearer token from an Authorization header.
107
- *
108
- * @param authHeader - The Authorization header value (e.g., "Bearer eyJ...")
109
- * @returns The token string if valid, null otherwise
110
- */
111
- export function extractBearerToken(authHeader) {
112
- if (!authHeader || !authHeader.startsWith("Bearer ")) {
113
- return null;
114
- }
115
- return authHeader.substring(7);
116
- }
117
- function getOptionalEnvValue(key) {
118
- const value = env[key];
119
- const trimmed = value?.trim();
120
- return trimmed || null;
121
- }
122
- function validateOrganizationBinding({ session, source, audience, expectedOrganizationId, appTenancyMode, }) {
123
- if (!session.orgId) {
124
- console.error(JSON.stringify({
125
- message: source === "bypass"
126
- ? "Bypass mode requires organization claim"
127
- : "Session token is missing orgId. SDK v0.2.0 requires org-bound session tokens. Redeploy the app with EVERY_APP_ORG_ID configured and request a fresh session token.",
128
- audience,
129
- appTenancyMode,
130
- }));
131
- return false;
132
- }
133
- if (appTenancyMode === "single" && !expectedOrganizationId) {
134
- console.error(JSON.stringify({
135
- message: "EVERY_APP_ORG_ID is required when APP_TENANCY_MODE=single. Configure EVERY_APP_ORG_ID in worker secrets (for example via `every app deploy`) and retry.",
136
- audience,
137
- appTenancyMode,
138
- }));
139
- return false;
140
- }
141
- if (appTenancyMode === "single" && session.orgId !== expectedOrganizationId) {
142
- console.error(JSON.stringify({
143
- message: source === "bypass"
144
- ? "Bypass mode organization mismatch"
145
- : "Session token organization mismatch",
146
- tokenOrgId: session.orgId,
147
- expectedOrganizationId,
148
- audience,
149
- appTenancyMode,
150
- }));
151
- return false;
152
- }
153
- return true;
154
- }
@@ -1,4 +0,0 @@
1
- export { authenticateRequest } from "./authenticateRequest.js";
2
- export type { AuthConfig } from "./types.js";
3
- export { getAuthConfig } from "./authConfig.js";
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tanstack/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { authenticateRequest } from "./authenticateRequest.js";
2
- export { getAuthConfig } from "./authConfig.js";
@@ -1,5 +0,0 @@
1
- export interface AuthConfig {
2
- issuer: string;
3
- audience: string;
4
- }
5
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,7 +0,0 @@
1
- import { SessionManager } from "../core/sessionManager.js";
2
- interface UseEveryAppRouterParams {
3
- sessionManager: SessionManager | null;
4
- }
5
- export declare function useEveryAppRouter({ sessionManager }: UseEveryAppRouterParams): void;
6
- export {};
7
- //# sourceMappingURL=useEveryAppRouter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useEveryAppRouter.d.ts","sourceRoot":"","sources":["../../src/tanstack/useEveryAppRouter.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAI3D,UAAU,uBAAuB;IAC/B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC;AAED,wBAAgB,iBAAiB,CAAC,EAAE,cAAc,EAAE,EAAE,uBAAuB,QAyE5E"}
@@ -1,66 +0,0 @@
1
- import { useEffect } from "react";
2
- import { useRouter } from "@tanstack/react-router";
3
- import { parseMessagePayload } from "../shared/parseMessagePayload.js";
4
- export function useEveryAppRouter({ sessionManager }) {
5
- const router = useRouter();
6
- // Route synchronization effect
7
- useEffect(() => {
8
- if (!sessionManager)
9
- return;
10
- // Listen for route sync messages from parent
11
- const handleMessage = (event) => {
12
- // Validate origin based on environment
13
- if (!sessionManager.isTrustedHostMessage(event))
14
- return;
15
- const data = parseMessagePayload(event.data);
16
- if (!data)
17
- return;
18
- if (data.type === "ROUTE_CHANGE" &&
19
- data.direction === "parent-to-child") {
20
- const targetRoute = typeof data.route === "string" ? data.route : null;
21
- const currentRoute = window.location.pathname;
22
- // Only navigate if the route is different from current location
23
- if (targetRoute && targetRoute !== currentRoute) {
24
- router.navigate({ to: targetRoute });
25
- }
26
- }
27
- };
28
- window.addEventListener("message", handleMessage);
29
- // Simplified route change detection with 2 reliable methods
30
- let lastReportedPath = window.location.pathname;
31
- const handleRouteChange = () => {
32
- const currentPath = window.location.pathname;
33
- // Only report if the path actually changed
34
- if (currentPath === lastReportedPath) {
35
- return;
36
- }
37
- lastReportedPath = currentPath;
38
- const message = {
39
- type: "ROUTE_CHANGE",
40
- route: currentPath,
41
- appId: sessionManager.appId,
42
- direction: "child-to-parent",
43
- };
44
- try {
45
- sessionManager.postToHost(message);
46
- }
47
- catch {
48
- return;
49
- }
50
- };
51
- // Listen to popstate for browser back/forward
52
- window.addEventListener("popstate", handleRouteChange);
53
- // Polling to detect route changes (catches router navigation)
54
- const pollInterval = setInterval(() => {
55
- const currentPath = window.location.pathname;
56
- if (currentPath !== lastReportedPath) {
57
- handleRouteChange();
58
- }
59
- }, 100);
60
- return () => {
61
- window.removeEventListener("message", handleMessage);
62
- window.removeEventListener("popstate", handleRouteChange);
63
- clearInterval(pollInterval);
64
- };
65
- }, [sessionManager]);
66
- }
@@ -1,2 +0,0 @@
1
- export declare const useSessionTokenClientMiddleware: import("@tanstack/react-start").FunctionMiddlewareAfterClient<{}, unknown, undefined, undefined, undefined>;
2
- //# sourceMappingURL=useSessionTokenClientMiddleware.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSessionTokenClientMiddleware.d.ts","sourceRoot":"","sources":["../../src/tanstack/useSessionTokenClientMiddleware.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,+BAA+B,6GAmC1C,CAAC"}
@@ -1,29 +0,0 @@
1
- import { createMiddleware } from "@tanstack/react-start";
2
- import { BYPASS_GATEWAY_LOCAL_ONLY_TOKEN, isBypassGatewayLocalOnlyClient, } from "../shared/bypassGatewayLocalOnly.js";
3
- export const useSessionTokenClientMiddleware = createMiddleware({
4
- type: "function",
5
- }).client(async ({ next }) => {
6
- if (isBypassGatewayLocalOnlyClient()) {
7
- return next({
8
- headers: {
9
- Authorization: `Bearer ${BYPASS_GATEWAY_LOCAL_ONLY_TOKEN}`,
10
- },
11
- });
12
- }
13
- // Get the global sessionManager - this MUST be available for embedded apps
14
- const sessionManager = window
15
- .__embeddedSessionManager;
16
- if (!sessionManager) {
17
- throw new Error("[AuthMiddleware] SessionManager not available - embedded provider not initialized");
18
- }
19
- // INVARIANT: This is just an extra check and should never be the case if the sessionManager exists.
20
- if (typeof sessionManager.getToken !== "function") {
21
- throw new Error("[AuthMiddleware] SessionManager.getToken is not a function");
22
- }
23
- const token = await sessionManager.getToken();
24
- return next({
25
- headers: {
26
- Authorization: `Bearer ${token}`,
27
- },
28
- });
29
- });