@tern-secure/nextjs 5.1.8 → 5.1.10
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/cjs/__tests__/gemini_fnTernSecureNextHandler.bench.js +31 -0
- package/dist/cjs/__tests__/gemini_fnTernSecureNextHandler.bench.js.map +1 -0
- package/dist/cjs/app-router/admin/actions.js +62 -0
- package/dist/cjs/app-router/admin/actions.js.map +1 -0
- package/dist/cjs/app-router/admin/constants.js +29 -0
- package/dist/cjs/app-router/admin/constants.js.map +1 -0
- package/dist/cjs/app-router/admin/fnValidators.js +295 -0
- package/dist/cjs/app-router/admin/fnValidators.js.map +1 -0
- package/dist/cjs/app-router/admin/index.js +16 -3
- package/dist/cjs/app-router/admin/index.js.map +1 -1
- package/dist/cjs/app-router/admin/responses.js +120 -0
- package/dist/cjs/app-router/admin/responses.js.map +1 -0
- package/dist/cjs/app-router/admin/sessionHandlers.js +167 -0
- package/dist/cjs/app-router/admin/sessionHandlers.js.map +1 -0
- package/dist/cjs/app-router/admin/ternsecureNextjsHandler.js +84 -0
- package/dist/cjs/app-router/admin/ternsecureNextjsHandler.js.map +1 -0
- package/dist/cjs/app-router/admin/types.js +127 -0
- package/dist/cjs/app-router/admin/types.js.map +1 -0
- package/dist/cjs/app-router/admin/utils.js +107 -0
- package/dist/cjs/app-router/admin/utils.js.map +1 -0
- package/dist/cjs/app-router/admin/validators.js +217 -0
- package/dist/cjs/app-router/admin/validators.js.map +1 -0
- package/dist/cjs/app-router/client/TernSecureProvider.js +2 -6
- package/dist/cjs/app-router/client/TernSecureProvider.js.map +1 -1
- package/dist/cjs/app-router/server/auth.js +100 -0
- package/dist/cjs/app-router/server/auth.js.map +1 -0
- package/dist/cjs/app-router/server/utils.js +87 -0
- package/dist/cjs/app-router/server/utils.js.map +1 -0
- package/dist/cjs/boundary/components.js +4 -7
- package/dist/cjs/boundary/components.js.map +1 -1
- package/dist/cjs/{components/uiComponents.js → constants.js} +17 -18
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/index.js +4 -9
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/server/constant.js +38 -0
- package/dist/cjs/server/constant.js.map +1 -0
- package/dist/cjs/server/edge-session.js +118 -24
- package/dist/cjs/server/edge-session.js.map +1 -1
- package/dist/cjs/server/headers-utils.js +70 -0
- package/dist/cjs/server/headers-utils.js.map +1 -0
- package/dist/cjs/server/index.js +8 -6
- package/dist/cjs/server/index.js.map +1 -1
- package/dist/cjs/server/jwt-edge.js +47 -19
- package/dist/cjs/server/jwt-edge.js.map +1 -1
- package/dist/cjs/server/jwt.js +11 -4
- package/dist/cjs/server/jwt.js.map +1 -1
- package/dist/cjs/server/nextErrors.js +131 -0
- package/dist/cjs/server/nextErrors.js.map +1 -0
- package/dist/cjs/server/nextFetcher.js +31 -0
- package/dist/cjs/server/nextFetcher.js.map +1 -0
- package/dist/cjs/server/node/SessionTernSecure.js +55 -0
- package/dist/cjs/server/node/SessionTernSecure.js.map +1 -0
- package/dist/cjs/server/{auth.js → node/auth.js} +11 -20
- package/dist/cjs/server/node/auth.js.map +1 -0
- package/dist/cjs/server/node/index.js +40 -0
- package/dist/cjs/server/node/index.js.map +1 -0
- package/dist/cjs/server/node/node-session.js +60 -0
- package/dist/cjs/server/node/node-session.js.map +1 -0
- package/dist/cjs/server/node/ternSecureNodeMiddleware.js +182 -0
- package/dist/cjs/server/node/ternSecureNodeMiddleware.js.map +1 -0
- package/dist/cjs/server/protect.js +90 -0
- package/dist/cjs/server/protect.js.map +1 -0
- package/dist/cjs/server/redirect.js +84 -0
- package/dist/cjs/server/redirect.js.map +1 -0
- package/dist/cjs/server/routeMatcher.js +36 -0
- package/dist/cjs/server/routeMatcher.js.map +1 -0
- package/dist/cjs/server/sdk-versions.js +43 -0
- package/dist/cjs/server/sdk-versions.js.map +1 -0
- package/dist/cjs/server/session-store.js.map +1 -1
- package/dist/cjs/server/ternSecureEdgeMiddleware.js +298 -0
- package/dist/cjs/server/ternSecureEdgeMiddleware.js.map +1 -0
- package/dist/cjs/server/ternSecureFireMiddleware.js +192 -0
- package/dist/cjs/server/ternSecureFireMiddleware.js.map +1 -0
- package/dist/cjs/server/types.js.map +1 -1
- package/dist/cjs/server/utils.js +115 -2
- package/dist/cjs/server/utils.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils/NextCookieAdapter.js +44 -0
- package/dist/cjs/utils/NextCookieAdapter.js.map +1 -0
- package/dist/cjs/utils/allNextProviderProps.js +10 -24
- package/dist/cjs/utils/allNextProviderProps.js.map +1 -1
- package/dist/cjs/utils/config.js +38 -2
- package/dist/cjs/utils/config.js.map +1 -1
- package/dist/cjs/utils/construct.js.map +1 -1
- package/dist/cjs/utils/fireconfig.js +38 -0
- package/dist/cjs/utils/fireconfig.js.map +1 -0
- package/dist/cjs/utils/logger.js +101 -0
- package/dist/cjs/utils/logger.js.map +1 -0
- package/dist/cjs/utils/redis.js +33 -0
- package/dist/cjs/utils/redis.js.map +1 -0
- package/dist/cjs/utils/response.js +38 -0
- package/dist/cjs/utils/response.js.map +1 -0
- package/dist/cjs/utils/serverRedirectAuth.js +39 -0
- package/dist/cjs/utils/serverRedirectAuth.js.map +1 -0
- package/dist/cjs/utils/ternsecure-sw.js +1 -1
- package/dist/cjs/utils/ternsecure-sw.js.map +1 -1
- package/dist/cjs/utils/withLogger.js +82 -0
- package/dist/cjs/utils/withLogger.js.map +1 -0
- package/dist/esm/__tests__/gemini_fnTernSecureNextHandler.bench.js +30 -0
- package/dist/esm/__tests__/gemini_fnTernSecureNextHandler.bench.js.map +1 -0
- package/dist/esm/app-router/admin/actions.js +40 -0
- package/dist/esm/app-router/admin/actions.js.map +1 -0
- package/dist/esm/app-router/admin/constants.js +5 -0
- package/dist/esm/app-router/admin/constants.js.map +1 -0
- package/dist/esm/app-router/admin/fnValidators.js +270 -0
- package/dist/esm/app-router/admin/fnValidators.js.map +1 -0
- package/dist/esm/app-router/admin/index.js +16 -2
- package/dist/esm/app-router/admin/index.js.map +1 -1
- package/dist/esm/app-router/admin/responses.js +93 -0
- package/dist/esm/app-router/admin/responses.js.map +1 -0
- package/dist/esm/app-router/admin/sessionHandlers.js +131 -0
- package/dist/esm/app-router/admin/sessionHandlers.js.map +1 -0
- package/dist/esm/app-router/admin/ternsecureNextjsHandler.js +62 -0
- package/dist/esm/app-router/admin/ternsecureNextjsHandler.js.map +1 -0
- package/dist/esm/app-router/admin/types.js +98 -0
- package/dist/esm/app-router/admin/types.js.map +1 -0
- package/dist/esm/app-router/admin/utils.js +80 -0
- package/dist/esm/app-router/admin/utils.js.map +1 -0
- package/dist/esm/app-router/admin/validators.js +189 -0
- package/dist/esm/app-router/admin/validators.js.map +1 -0
- package/dist/esm/app-router/client/TernSecureProvider.js +2 -6
- package/dist/esm/app-router/client/TernSecureProvider.js.map +1 -1
- package/dist/esm/app-router/server/auth.js +81 -0
- package/dist/esm/app-router/server/auth.js.map +1 -0
- package/dist/esm/app-router/server/utils.js +51 -0
- package/dist/esm/app-router/server/utils.js.map +1 -0
- package/dist/esm/boundary/components.js +4 -7
- package/dist/esm/boundary/components.js.map +1 -1
- package/dist/esm/constants.js +17 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/index.js +5 -11
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/server/constant.js +11 -0
- package/dist/esm/server/constant.js.map +1 -0
- package/dist/esm/server/edge-session.js +113 -22
- package/dist/esm/server/edge-session.js.map +1 -1
- package/dist/esm/server/headers-utils.js +41 -0
- package/dist/esm/server/headers-utils.js.map +1 -0
- package/dist/esm/server/index.js +9 -3
- package/dist/esm/server/index.js.map +1 -1
- package/dist/esm/server/jwt-edge.js +48 -20
- package/dist/esm/server/jwt-edge.js.map +1 -1
- package/dist/esm/server/jwt.js +12 -5
- package/dist/esm/server/jwt.js.map +1 -1
- package/dist/esm/server/nextErrors.js +97 -0
- package/dist/esm/server/nextErrors.js.map +1 -0
- package/dist/esm/server/nextFetcher.js +7 -0
- package/dist/esm/server/nextFetcher.js.map +1 -0
- package/dist/esm/server/node/SessionTernSecure.js +31 -0
- package/dist/esm/server/node/SessionTernSecure.js.map +1 -0
- package/dist/esm/server/{auth.js → node/auth.js} +11 -20
- package/dist/esm/server/node/auth.js.map +1 -0
- package/dist/esm/server/node/index.js +19 -0
- package/dist/esm/server/node/index.js.map +1 -0
- package/dist/esm/server/node/node-session.js +36 -0
- package/dist/esm/server/node/node-session.js.map +1 -0
- package/dist/esm/server/node/ternSecureNodeMiddleware.js +165 -0
- package/dist/esm/server/node/ternSecureNodeMiddleware.js.map +1 -0
- package/dist/esm/server/protect.js +66 -0
- package/dist/esm/server/protect.js.map +1 -0
- package/dist/esm/server/redirect.js +60 -0
- package/dist/esm/server/redirect.js.map +1 -0
- package/dist/esm/server/routeMatcher.js +12 -0
- package/dist/esm/server/routeMatcher.js.map +1 -0
- package/dist/esm/server/sdk-versions.js +8 -0
- package/dist/esm/server/sdk-versions.js.map +1 -0
- package/dist/esm/server/session-store.js.map +1 -1
- package/dist/esm/server/ternSecureEdgeMiddleware.js +286 -0
- package/dist/esm/server/ternSecureEdgeMiddleware.js.map +1 -0
- package/dist/esm/server/ternSecureFireMiddleware.js +179 -0
- package/dist/esm/server/ternSecureFireMiddleware.js.map +1 -0
- package/dist/esm/server/utils.js +99 -1
- package/dist/esm/server/utils.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/NextCookieAdapter.js +20 -0
- package/dist/esm/utils/NextCookieAdapter.js.map +1 -0
- package/dist/esm/utils/allNextProviderProps.js +10 -24
- package/dist/esm/utils/allNextProviderProps.js.map +1 -1
- package/dist/esm/utils/config.js +34 -1
- package/dist/esm/utils/config.js.map +1 -1
- package/dist/esm/utils/construct.js +1 -1
- package/dist/esm/utils/construct.js.map +1 -1
- package/dist/esm/utils/fireconfig.js +14 -0
- package/dist/esm/utils/fireconfig.js.map +1 -0
- package/dist/esm/utils/logger.js +74 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/esm/utils/redis.js +9 -0
- package/dist/esm/utils/redis.js.map +1 -0
- package/dist/esm/utils/response.js +13 -0
- package/dist/esm/utils/response.js.map +1 -0
- package/dist/esm/utils/serverRedirectAuth.js +17 -0
- package/dist/esm/utils/serverRedirectAuth.js.map +1 -0
- package/dist/esm/utils/ternsecure-sw.js +1 -1
- package/dist/esm/utils/ternsecure-sw.js.map +1 -1
- package/dist/esm/utils/withLogger.js +57 -0
- package/dist/esm/utils/withLogger.js.map +1 -0
- package/package.json +21 -7
- package/server/node/package.json +5 -0
- package/server/package.json +5 -0
- package/dist/cjs/app-router/admin/sessionHandler.js +0 -74
- package/dist/cjs/app-router/admin/sessionHandler.js.map +0 -1
- package/dist/cjs/app-router/client/actions.js +0 -4
- package/dist/cjs/app-router/client/actions.js.map +0 -1
- package/dist/cjs/components/uiComponents.js.map +0 -1
- package/dist/cjs/server/auth.js.map +0 -1
- package/dist/cjs/server/ternSecureMiddleware.js +0 -95
- package/dist/cjs/server/ternSecureMiddleware.js.map +0 -1
- package/dist/cjs/utils/tern-ui-script.js +0 -78
- package/dist/cjs/utils/tern-ui-script.js.map +0 -1
- package/dist/esm/app-router/admin/sessionHandler.js +0 -50
- package/dist/esm/app-router/admin/sessionHandler.js.map +0 -1
- package/dist/esm/app-router/client/actions.js +0 -3
- package/dist/esm/app-router/client/actions.js.map +0 -1
- package/dist/esm/components/uiComponents.js +0 -21
- package/dist/esm/components/uiComponents.js.map +0 -1
- package/dist/esm/server/auth.js.map +0 -1
- package/dist/esm/server/ternSecureMiddleware.js +0 -69
- package/dist/esm/server/ternSecureMiddleware.js.map +0 -1
- package/dist/esm/utils/tern-ui-script.js +0 -44
- package/dist/esm/utils/tern-ui-script.js.map +0 -1
- package/dist/types/app-router/admin/index.d.ts +0 -2
- package/dist/types/app-router/admin/index.d.ts.map +0 -1
- package/dist/types/app-router/admin/sessionHandler.d.ts +0 -3
- package/dist/types/app-router/admin/sessionHandler.d.ts.map +0 -1
- package/dist/types/app-router/client/TernSecureProvider.d.ts +0 -25
- package/dist/types/app-router/client/TernSecureProvider.d.ts.map +0 -1
- package/dist/types/app-router/client/actions.d.ts +0 -2
- package/dist/types/app-router/client/actions.d.ts.map +0 -1
- package/dist/types/app-router/route-handler/internal-route.d.ts +0 -2
- package/dist/types/app-router/route-handler/internal-route.d.ts.map +0 -1
- package/dist/types/boundary/components.d.ts +0 -2
- package/dist/types/boundary/components.d.ts.map +0 -1
- package/dist/types/boundary/hooks.d.ts +0 -2
- package/dist/types/boundary/hooks.d.ts.map +0 -1
- package/dist/types/components/uiComponents.d.ts +0 -6
- package/dist/types/components/uiComponents.d.ts.map +0 -1
- package/dist/types/errors.d.ts +0 -44
- package/dist/types/errors.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -5
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/server/auth.d.ts +0 -23
- package/dist/types/server/auth.d.ts.map +0 -1
- package/dist/types/server/crypto.d.ts +0 -3
- package/dist/types/server/crypto.d.ts.map +0 -1
- package/dist/types/server/ctx-store.d.ts +0 -24
- package/dist/types/server/ctx-store.d.ts.map +0 -1
- package/dist/types/server/edge-session.d.ts +0 -4
- package/dist/types/server/edge-session.d.ts.map +0 -1
- package/dist/types/server/index.d.ts +0 -4
- package/dist/types/server/index.d.ts.map +0 -1
- package/dist/types/server/jwt-edge.d.ts +0 -20
- package/dist/types/server/jwt-edge.d.ts.map +0 -1
- package/dist/types/server/jwt.d.ts +0 -20
- package/dist/types/server/jwt.d.ts.map +0 -1
- package/dist/types/server/session-store.d.ts +0 -30
- package/dist/types/server/session-store.d.ts.map +0 -1
- package/dist/types/server/ternSecureMiddleware.d.ts +0 -20
- package/dist/types/server/ternSecureMiddleware.d.ts.map +0 -1
- package/dist/types/server/types.d.ts +0 -26
- package/dist/types/server/types.d.ts.map +0 -1
- package/dist/types/server/utils.d.ts +0 -22
- package/dist/types/server/utils.d.ts.map +0 -1
- package/dist/types/types.d.ts +0 -112
- package/dist/types/types.d.ts.map +0 -1
- package/dist/types/utils/admin-init.d.ts +0 -2
- package/dist/types/utils/admin-init.d.ts.map +0 -1
- package/dist/types/utils/allNextProviderProps.d.ts +0 -6
- package/dist/types/utils/allNextProviderProps.d.ts.map +0 -1
- package/dist/types/utils/client-init.d.ts +0 -2
- package/dist/types/utils/client-init.d.ts.map +0 -1
- package/dist/types/utils/config.d.ts +0 -35
- package/dist/types/utils/config.d.ts.map +0 -1
- package/dist/types/utils/construct.d.ts +0 -38
- package/dist/types/utils/construct.d.ts.map +0 -1
- package/dist/types/utils/create-styles.d.ts +0 -99
- package/dist/types/utils/create-styles.d.ts.map +0 -1
- package/dist/types/utils/redirect.d.ts +0 -9
- package/dist/types/utils/redirect.d.ts.map +0 -1
- package/dist/types/utils/tern-ui-script.d.ts +0 -9
- package/dist/types/utils/tern-ui-script.d.ts.map +0 -1
- package/dist/types/utils/ternsecure-sw.d.ts +0 -8
- package/dist/types/utils/ternsecure-sw.d.ts.map +0 -1
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { NextResponse } from "next/server";
|
|
2
|
-
import { verifySession } from "./edge-session";
|
|
3
|
-
const runtime = "edge";
|
|
4
|
-
function createRouteMatcher(patterns) {
|
|
5
|
-
return (request) => {
|
|
6
|
-
const { pathname } = request.nextUrl;
|
|
7
|
-
return patterns.some((pattern) => {
|
|
8
|
-
const regexPattern = pattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\\\*/g, ".*");
|
|
9
|
-
return new RegExp(`^${regexPattern}$`).test(pathname);
|
|
10
|
-
});
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
async function edgeAuth(request) {
|
|
14
|
-
async function protect() {
|
|
15
|
-
throw new Error("Unauthorized access");
|
|
16
|
-
}
|
|
17
|
-
try {
|
|
18
|
-
const sessionResult = await verifySession(request);
|
|
19
|
-
if (sessionResult.isAuthenticated && sessionResult.user) {
|
|
20
|
-
return {
|
|
21
|
-
user: sessionResult.user,
|
|
22
|
-
token: request.cookies.get("_session_cookie")?.value || request.cookies.get("_session_token")?.value || null,
|
|
23
|
-
protect: async () => {
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
return {
|
|
28
|
-
user: null,
|
|
29
|
-
token: null,
|
|
30
|
-
protect
|
|
31
|
-
};
|
|
32
|
-
} catch (error) {
|
|
33
|
-
console.error("Auth check error:", error instanceof Error ? error.message : "Unknown error");
|
|
34
|
-
return {
|
|
35
|
-
user: null,
|
|
36
|
-
token: null,
|
|
37
|
-
protect
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
function ternSecureMiddleware(callback) {
|
|
42
|
-
return async function middleware(request) {
|
|
43
|
-
try {
|
|
44
|
-
const auth = await edgeAuth(request);
|
|
45
|
-
try {
|
|
46
|
-
await callback(auth, request);
|
|
47
|
-
const response = NextResponse.next();
|
|
48
|
-
return response;
|
|
49
|
-
} catch (error) {
|
|
50
|
-
if (error instanceof Error && error.message === "Unauthorized access") {
|
|
51
|
-
const redirectUrl = new URL("/sign-in", request.url);
|
|
52
|
-
redirectUrl.searchParams.set("redirect", request.nextUrl.pathname);
|
|
53
|
-
return NextResponse.redirect(redirectUrl);
|
|
54
|
-
}
|
|
55
|
-
throw error;
|
|
56
|
-
}
|
|
57
|
-
} catch (error) {
|
|
58
|
-
console.error("Middleware error:", error instanceof Error ? error.message : "Unknown error");
|
|
59
|
-
const redirectUrl = new URL("/sign-in", request.url);
|
|
60
|
-
return NextResponse.redirect(redirectUrl);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
export {
|
|
65
|
-
createRouteMatcher,
|
|
66
|
-
runtime,
|
|
67
|
-
ternSecureMiddleware
|
|
68
|
-
};
|
|
69
|
-
//# sourceMappingURL=ternSecureMiddleware.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/server/ternSecureMiddleware.ts"],"sourcesContent":["import { type NextRequest, NextResponse } from 'next/server';\r\nimport { verifySession } from './edge-session'\r\nimport type { UserInfo } from \"./types\"\r\n\r\nexport const runtime = \"edge\"\r\n\r\ninterface Auth {\r\n user: UserInfo | null\r\n token: string | null\r\n protect: () => Promise<void>\r\n}\r\n\r\ntype MiddlewareCallback = (\r\n auth: Auth,\r\n request: NextRequest\r\n) => Promise<void>\r\n\r\n\r\n/**\r\n * Create a route matcher function for public paths\r\n */\r\nexport function createRouteMatcher(patterns: string[]) {\r\n return (request: NextRequest): boolean => {\r\n const { pathname } = request.nextUrl\r\n return patterns.some((pattern) => {\r\n // Convert glob pattern to regex safely without dynamic evaluation\r\n const regexPattern = pattern\r\n .replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\r\n .replace(/\\\\\\*/g, \".*\")\r\n \r\n return new RegExp(`^${regexPattern}$`).test(pathname)\r\n })\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Edge-compatible auth check\r\n */\r\nasync function edgeAuth(request: NextRequest): Promise<Auth> {\r\n async function protect() {\r\n throw new Error(\"Unauthorized access\")\r\n }\r\n\r\n try {\r\n const sessionResult = await verifySession(request)\r\n\r\n if (sessionResult.isAuthenticated && sessionResult.user) {\r\n return {\r\n user: sessionResult.user,\r\n token: request.cookies.get(\"_session_cookie\")?.value || request.cookies.get(\"_session_token\")?.value || null,\r\n protect: async () => {},\r\n }\r\n }\r\n\r\n return {\r\n user: null,\r\n token: null,\r\n protect,\r\n }\r\n } catch (error) {\r\n console.error(\"Auth check error:\", error instanceof Error ? error\r\n .message : \"Unknown error\")\r\n return {\r\n user: null,\r\n token: null,\r\n protect,\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n/**\r\n * Middleware factory that handles authentication and custom logic\r\n * @param customHandler Optional function for additional custom logic\r\n */\r\n\r\nexport function ternSecureMiddleware(callback: MiddlewareCallback) {\r\n return async function middleware(request: NextRequest) {\r\n try {\r\n const auth = await edgeAuth(request)\r\n\r\n try {\r\n \r\n await callback(auth, request)\r\n\r\n const response = NextResponse.next()\r\n\r\n\r\n return response\r\n } catch (error) {\r\n // Handle unauthorized access\r\n if (error instanceof Error && error.message === 'Unauthorized access') {\r\n const redirectUrl = new URL(\"/sign-in\", request.url)\r\n redirectUrl.searchParams.set(\"redirect\", request.nextUrl.pathname)\r\n return NextResponse.redirect(redirectUrl)\r\n }\r\n throw error\r\n }\r\n } catch (error) {\r\n console.error(\"Middleware error:\", error instanceof Error ? error.message : \"Unknown error\")\r\n const redirectUrl = new URL(\"/sign-in\", request.url)\r\n return NextResponse.redirect(redirectUrl)\r\n }\r\n }\r\n}"],"mappings":"AAAA,SAA2B,oBAAoB;AAC/C,SAAS,qBAAqB;AAGvB,MAAM,UAAU;AAiBhB,SAAS,mBAAmB,UAAoB;AACrD,SAAO,CAAC,YAAkC;AACxC,UAAM,EAAE,SAAS,IAAI,QAAQ;AAC7B,WAAO,SAAS,KAAK,CAAC,YAAY;AAEhC,YAAM,eAAe,QACpB,QAAQ,uBAAuB,MAAM,EACrC,QAAQ,SAAS,IAAI;AAEtB,aAAO,IAAI,OAAO,IAAI,YAAY,GAAG,EAAE,KAAK,QAAQ;AAAA,IACtD,CAAC;AAAA,EACH;AACF;AAMA,eAAe,SAAS,SAAqC;AAC3D,iBAAe,UAAU;AACvB,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AAEA,MAAI;AACF,UAAM,gBAAgB,MAAM,cAAc,OAAO;AAEjD,QAAI,cAAc,mBAAmB,cAAc,MAAM;AACvD,aAAO;AAAA,QACL,MAAM,cAAc;AAAA,QACpB,OAAO,QAAQ,QAAQ,IAAI,iBAAiB,GAAG,SAAS,QAAQ,QAAQ,IAAI,gBAAgB,GAAG,SAAS;AAAA,QACxG,SAAS,YAAY;AAAA,QAAC;AAAA,MACxB;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,qBAAqB,iBAAiB,QAAQ,MAC3D,UAAU,eAAe;AAC1B,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACF;AASO,SAAS,qBAAqB,UAA8B;AACjE,SAAO,eAAe,WAAW,SAAsB;AACrD,QAAI;AACF,YAAM,OAAO,MAAM,SAAS,OAAO;AAEnC,UAAI;AAEF,cAAM,SAAS,MAAM,OAAO;AAE5B,cAAM,WAAW,aAAa,KAAK;AAGnC,eAAO;AAAA,MACT,SAAS,OAAO;AAEd,YAAI,iBAAiB,SAAS,MAAM,YAAY,uBAAuB;AACrE,gBAAM,cAAc,IAAI,IAAI,YAAY,QAAQ,GAAG;AACnD,sBAAY,aAAa,IAAI,YAAY,QAAQ,QAAQ,QAAQ;AACjE,iBAAO,aAAa,SAAS,WAAW;AAAA,QAC1C;AACA,cAAM;AAAA,MACR;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,qBAAqB,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAC3F,YAAM,cAAc,IAAI,IAAI,YAAY,QAAQ,GAAG;AACnD,aAAO,aAAa,SAAS,WAAW;AAAA,IAC1C;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import Script from "next/script";
|
|
3
|
-
import { ternUIgetScriptUrl, constructScriptAttributes } from "@tern-secure/react";
|
|
4
|
-
const isDevelopment = process.env.NODE_ENV === "development";
|
|
5
|
-
const localPort = process.env.TERN_UI_PORT || "4000";
|
|
6
|
-
const devDomain = isDevelopment ? `http://localhost:${localPort || process.env.NEXT_PUBLIC_TERN_UI_PORT || "4000"}` : void 0;
|
|
7
|
-
function TernUIScript({
|
|
8
|
-
customDomain,
|
|
9
|
-
proxyUrl,
|
|
10
|
-
version,
|
|
11
|
-
nonce,
|
|
12
|
-
router = "app"
|
|
13
|
-
}) {
|
|
14
|
-
const effectiveDomain = isDevelopment ? devDomain : customDomain;
|
|
15
|
-
console.log("[TernSecure] TernUIScript: Using effective domain:", effectiveDomain);
|
|
16
|
-
if (!effectiveDomain) {
|
|
17
|
-
console.warn("[TernSecure] TernUIScript: No custom domain or proxy URL provided. The script will not be loaded.");
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
const scriptOptions = {
|
|
21
|
-
customDomain: effectiveDomain,
|
|
22
|
-
proxyUrl,
|
|
23
|
-
version,
|
|
24
|
-
nonce,
|
|
25
|
-
router
|
|
26
|
-
};
|
|
27
|
-
const scriptUrl = ternUIgetScriptUrl(scriptOptions);
|
|
28
|
-
const scriptAttributes = constructScriptAttributes(scriptOptions);
|
|
29
|
-
return /* @__PURE__ */ jsx(
|
|
30
|
-
Script,
|
|
31
|
-
{
|
|
32
|
-
src: scriptUrl,
|
|
33
|
-
"data-ternui-script": true,
|
|
34
|
-
async: true,
|
|
35
|
-
nonce,
|
|
36
|
-
strategy: void 0,
|
|
37
|
-
...scriptAttributes
|
|
38
|
-
}
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
export {
|
|
42
|
-
TernUIScript
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=tern-ui-script.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/tern-ui-script.tsx"],"sourcesContent":["import Script from 'next/script'\nimport { ternUIgetScriptUrl, constructScriptAttributes } from '@tern-secure/react'\nimport type { TernSecureNextProps } from '../types'\n\nconst isDevelopment = process.env.NODE_ENV === 'development';\nconst localPort = process.env.TERN_UI_PORT || '4000';\n\ntype TernUIScriptProps = Pick<TernSecureNextProps, 'customDomain' | 'proxyUrl'> & {\n version?: string;\n nonce?: string;\n router: 'app' | 'pages';\n}\n\nconst devDomain = isDevelopment \n ? `http://localhost:${localPort || process.env.NEXT_PUBLIC_TERN_UI_PORT || '4000'}`\n : undefined\n\n\nexport function TernUIScript({\n customDomain,\n proxyUrl,\n version,\n nonce,\n router = 'app'\n}: TernUIScriptProps) {\n const effectiveDomain = isDevelopment ? devDomain : customDomain\n console.log('[TernSecure] TernUIScript: Using effective domain:', effectiveDomain);\n\n if (!effectiveDomain) {\n console.warn('[TernSecure] TernUIScript: No custom domain or proxy URL provided. The script will not be loaded.');\n return null;\n }\n\n const scriptOptions = {\n customDomain: effectiveDomain,\n proxyUrl,\n version,\n nonce,\n router\n };\n\n const scriptUrl = ternUIgetScriptUrl(scriptOptions);\n const scriptAttributes = constructScriptAttributes(scriptOptions);\n\n return (\n <Script\n src={scriptUrl}\n data-ternui-script\n async\n nonce={nonce}\n strategy={undefined}\n {...scriptAttributes}\n //crossOrigin= {undefined}\n />\n )\n}"],"mappings":"AA6CQ;AA7CR,OAAO,YAAY;AACnB,SAAS,oBAAoB,iCAAiC;AAG9D,MAAM,gBAAgB,QAAQ,IAAI,aAAa;AAC/C,MAAM,YAAY,QAAQ,IAAI,gBAAgB;AAQ9C,MAAM,YAAY,gBACZ,oBAAoB,aAAa,QAAQ,IAAI,4BAA4B,MAAM,KAC/E;AAGC,SAAS,aAAa;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AACb,GAAsB;AAClB,QAAM,kBAAkB,gBAAgB,YAAY;AACpD,UAAQ,IAAI,sDAAsD,eAAe;AAEjF,MAAI,CAAC,iBAAiB;AAClB,YAAQ,KAAK,mGAAmG;AAChH,WAAO;AAAA,EACX;AAEA,QAAM,gBAAgB;AAAA,IAClB,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,YAAY,mBAAmB,aAAa;AAClD,QAAM,mBAAmB,0BAA0B,aAAa;AAEhE,SACI;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,sBAAkB;AAAA,MAClB,OAAK;AAAA,MACL;AAAA,MACA,UAAU;AAAA,MACP,GAAG;AAAA;AAAA,EAER;AAER;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app-router/admin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sessionHandler.d.ts","sourceRoot":"","sources":["../../../../src/app-router/admin/sessionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAGvD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAoDtF"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import type { TernSecureNextProps } from "../../types";
|
|
3
|
-
/**
|
|
4
|
-
* Root Provider for TernSecure
|
|
5
|
-
* Use this in your Next.js App Router root layout
|
|
6
|
-
* Automatically handles client/server boundary and authentication state
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* /// app/layout.tsx
|
|
10
|
-
* import { TernSecureProvider } from '@tern/secure'
|
|
11
|
-
*
|
|
12
|
-
* export default function RootLayout({ children }) {
|
|
13
|
-
* return (
|
|
14
|
-
* <html>
|
|
15
|
-
* <body>
|
|
16
|
-
* <TernSecureProvider>
|
|
17
|
-
* {children}
|
|
18
|
-
* </TernSecureProvider>
|
|
19
|
-
* </body>
|
|
20
|
-
* </html>
|
|
21
|
-
* )
|
|
22
|
-
* }
|
|
23
|
-
*/
|
|
24
|
-
export declare function TernSecureProvider(props: React.PropsWithChildren<TernSecureNextProps>): import("react/jsx-runtime").JSX.Element;
|
|
25
|
-
//# sourceMappingURL=TernSecureProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TernSecureProvider.d.ts","sourceRoot":"","sources":["../../../../src/app-router/client/TernSecureProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AActD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,2CASrF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../src/app-router/client/actions.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"internal-route.d.ts","sourceRoot":"","sources":["../../../../src/app-router/route-handler/internal-route.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EACZ,MAAM,oBAAoB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/boundary/components.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,OAAO,EACP,UAAU,EACV,SAAS,EACT,UAAU,EACV,MAAM,EAGN,MAAM,GACT,MAAM,oBAAoB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/boundary/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,OAAO,EACP,UAAU,EACb,MAAM,oBAAoB,CAAA"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { SignIn as BaseSignIn, SignUp as BaseSignUp } from '@tern-secure/react';
|
|
2
|
-
import type { ComponentProps } from 'react';
|
|
3
|
-
export { UserButton } from '@tern-secure/react';
|
|
4
|
-
export declare const SignIn: (props: ComponentProps<typeof BaseSignIn>) => import("react/jsx-runtime").JSX.Element;
|
|
5
|
-
export declare const SignUp: (props: ComponentProps<typeof BaseSignUp>) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
//# sourceMappingURL=uiComponents.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uiComponents.d.ts","sourceRoot":"","sources":["../../../src/components/uiComponents.tsx"],"names":[],"mappings":"AAEA,OAAQ,EACJ,MAAM,IAAI,UAAU,EACpB,MAAM,IAAI,UAAU,EACvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EACL,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,MAAM,GAAI,OAAO,cAAc,CAAC,OAAO,UAAU,CAAC,4CAE9D,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,OAAO,cAAc,CAAC,OAAO,UAAU,CAAC,4CAE9D,CAAC"}
|
package/dist/types/errors.d.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { SignInResponse } from "@tern-secure/types";
|
|
2
|
-
export type ErrorCode = keyof typeof ERRORS;
|
|
3
|
-
export interface AuthErrorResponse {
|
|
4
|
-
success: false;
|
|
5
|
-
message: string;
|
|
6
|
-
code: ErrorCode;
|
|
7
|
-
}
|
|
8
|
-
export declare const ERRORS: {
|
|
9
|
-
readonly SERVER_SIDE_INITIALIZATION: "TernSecure must be initialized on the client side";
|
|
10
|
-
readonly REQUIRES_VERIFICATION: "AUTH_REQUIRES_VERIFICATION";
|
|
11
|
-
readonly AUTHENTICATED: "AUTHENTICATED";
|
|
12
|
-
readonly UNAUTHENTICATED: "UNAUTHENTICATED";
|
|
13
|
-
readonly UNVERIFIED: "UNVERIFIED";
|
|
14
|
-
readonly NOT_INITIALIZED: "TernSecure services are not initialized. Call initializeTernSecure() first";
|
|
15
|
-
readonly HOOK_CONTEXT: "Hook must be used within TernSecureProvider";
|
|
16
|
-
readonly EMAIL_NOT_VERIFIED: "EMAIL_NOT_VERIFIED";
|
|
17
|
-
readonly INVALID_CREDENTIALS: "INVALID_CREDENTIALS";
|
|
18
|
-
readonly USER_DISABLED: "USER_DISABLED";
|
|
19
|
-
readonly TOO_MANY_ATTEMPTS: "TOO_MANY_ATTEMPTS";
|
|
20
|
-
readonly NETWORK_ERROR: "NETWORK_ERROR";
|
|
21
|
-
readonly INVALID_EMAIL: "INVALID_EMAIL";
|
|
22
|
-
readonly WEAK_PASSWORD: "WEAK_PASSWORD";
|
|
23
|
-
readonly EMAIL_EXISTS: "EMAIL_EXISTS";
|
|
24
|
-
readonly POPUP_BLOCKED: "POPUP_BLOCKED";
|
|
25
|
-
readonly OPERATION_NOT_ALLOWED: "OPERATION_NOT_ALLOWED";
|
|
26
|
-
readonly EXPIRED_TOKEN: "EXPIRED_TOKEN";
|
|
27
|
-
readonly INVALID_TOKEN: "INVALID_TOKEN";
|
|
28
|
-
readonly SESSION_EXPIRED: "SESSION_EXPIRED";
|
|
29
|
-
readonly INTERNAL_ERROR: "INTERNAL_ERROR";
|
|
30
|
-
};
|
|
31
|
-
export declare class TernSecureError extends Error {
|
|
32
|
-
code: ErrorCode;
|
|
33
|
-
constructor(code: ErrorCode, message?: string);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Handles Firebase authentication errors with multiple fallback mechanisms
|
|
37
|
-
*/
|
|
38
|
-
export declare function handleFirebaseAuthError(error: unknown): AuthErrorResponse;
|
|
39
|
-
/**
|
|
40
|
-
* Type guard to check if a response is an AuthErrorResponse
|
|
41
|
-
*/
|
|
42
|
-
export declare function isAuthErrorResponse(response: unknown): response is AuthErrorResponse;
|
|
43
|
-
export declare function getErrorAlertVariant(error: SignInResponse | undefined): "destructive" | "default";
|
|
44
|
-
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,MAAM,CAAA;AAE3C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,KAAK,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,SAAS,CAAA;CAChB;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;CAsBT,CAAA;AAmBV,qBAAa,eAAgB,SAAQ,KAAK;IACxC,IAAI,EAAE,SAAS,CAAA;gBAEH,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM;CAK9C;AAiJD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAwFzE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,iBAAiB,CASpF;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,6BAsBrE"}
|
package/dist/types/index.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { TernSecureProvider } from './app-router/client/TernSecureProvider';
|
|
2
|
-
export { useAuth, useIdToken, useSignUp, useSession, } from './boundary/components';
|
|
3
|
-
export { SignIn, SignUp, UserButton, } from './components/uiComponents';
|
|
4
|
-
export type { TernSecureUser, TernSecureUserData } from '@tern-secure/types';
|
|
5
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,EACH,OAAO,EACP,UAAU,EACV,SAAS,EACT,UAAU,GAKb,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACH,MAAM,EACN,MAAM,EACN,UAAU,GACb,MAAM,2BAA2B,CAAA;AAElC,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { UserInfo } from "./types";
|
|
2
|
-
export interface AuthResult {
|
|
3
|
-
user: UserInfo | null;
|
|
4
|
-
error: Error | null;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Get the current authenticated user from the session or token
|
|
8
|
-
*/
|
|
9
|
-
export declare const auth: () => Promise<AuthResult>;
|
|
10
|
-
/**
|
|
11
|
-
* Type guard to check if user is authenticated
|
|
12
|
-
*/
|
|
13
|
-
export declare const isAuthenticated: () => Promise<boolean>;
|
|
14
|
-
/**
|
|
15
|
-
* Get user info from auth result
|
|
16
|
-
*/
|
|
17
|
-
export declare const getUser: () => Promise<UserInfo | null>;
|
|
18
|
-
/**
|
|
19
|
-
* Require authentication
|
|
20
|
-
* Throws error if not authenticated
|
|
21
|
-
*/
|
|
22
|
-
export declare const requireAuth: () => Promise<UserInfo>;
|
|
23
|
-
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/server/auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAMvC,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CACpB;AAEC;;GAEG;AACL,eAAO,MAAM,IAAI,QAAmB,OAAO,CAAC,UAAU,CAoDlD,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,eAAe,QAAmB,OAAO,CAAC,OAAO,CAG5D,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,QAAmB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAG5D,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAmB,OAAO,CAAC,QAAQ,CAQzD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/server/crypto.ts"],"names":[],"mappings":"AAGA,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI5C;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM/C"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { User } from "./types";
|
|
2
|
-
interface RequestContext {
|
|
3
|
-
user: UserVerificationRequirement;
|
|
4
|
-
sessionId: string;
|
|
5
|
-
}
|
|
6
|
-
declare global {
|
|
7
|
-
var __ternSecure: {
|
|
8
|
-
context: RequestContext | null;
|
|
9
|
-
sessions: Map<string, User>;
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
export declare class ContextStore {
|
|
13
|
-
static setContext(context: RequestContext): void;
|
|
14
|
-
static getContext(): RequestContext | null;
|
|
15
|
-
static setSession(sessionId: string, user: User): void;
|
|
16
|
-
static getSession(sessionId: string): User | null;
|
|
17
|
-
static debug(): {
|
|
18
|
-
sessionsCount: number;
|
|
19
|
-
currentSessionId: string | null;
|
|
20
|
-
sessions: [string, User][];
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
export {};
|
|
24
|
-
//# sourceMappingURL=ctx-store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ctx-store.d.ts","sourceRoot":"","sources":["../../../src/server/ctx-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAEnC,UAAU,cAAc;IACtB,IAAI,EAAE,2BAA2B,CAAA;IACjC,SAAS,EAAE,MAAM,CAAA;CAClB;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,YAAY,EAAE;QAChB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;QAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;KAC5B,CAAA;CACF;AAWD,qBAAa,YAAY;IACvB,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc;IAMzC,MAAM,CAAC,UAAU,IAAI,cAAc,GAAG,IAAI;IAM1C,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAM/C,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAMjD,MAAM,CAAC,KAAK;;;;;CAOb"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"edge-session.d.ts","sourceRoot":"","sources":["../../../src/server/edge-session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,SAAS,CAAA;AAItD,wBAAsB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CA6DhF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAA;AACvD,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export declare function verifyFirebaseToken(token: string, isSessionCookie?: boolean): Promise<{
|
|
2
|
-
valid: boolean;
|
|
3
|
-
uid: string;
|
|
4
|
-
email: string | undefined;
|
|
5
|
-
emailVerified: boolean | undefined;
|
|
6
|
-
authTime: number;
|
|
7
|
-
issuedAt: number;
|
|
8
|
-
expiresAt: number;
|
|
9
|
-
error?: undefined;
|
|
10
|
-
} | {
|
|
11
|
-
valid: boolean;
|
|
12
|
-
error: string;
|
|
13
|
-
uid?: undefined;
|
|
14
|
-
email?: undefined;
|
|
15
|
-
emailVerified?: undefined;
|
|
16
|
-
authTime?: undefined;
|
|
17
|
-
issuedAt?: undefined;
|
|
18
|
-
expiresAt?: undefined;
|
|
19
|
-
}>;
|
|
20
|
-
//# sourceMappingURL=jwt-edge.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jwt-edge.d.ts","sourceRoot":"","sources":["../../../src/server/jwt-edge.ts"],"names":[],"mappings":"AAuDA,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,UAAQ;;;;;;;;;;;;;;;;;;GAmE3E"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export declare function verifyFirebaseToken(token: string, isSessionCookie?: boolean): Promise<{
|
|
2
|
-
valid: boolean;
|
|
3
|
-
uid: string;
|
|
4
|
-
email: string | undefined;
|
|
5
|
-
emailVerified: boolean | undefined;
|
|
6
|
-
authTime: number;
|
|
7
|
-
issuedAt: number;
|
|
8
|
-
expiresAt: number;
|
|
9
|
-
error?: undefined;
|
|
10
|
-
} | {
|
|
11
|
-
valid: boolean;
|
|
12
|
-
error: string;
|
|
13
|
-
uid?: undefined;
|
|
14
|
-
email?: undefined;
|
|
15
|
-
emailVerified?: undefined;
|
|
16
|
-
authTime?: undefined;
|
|
17
|
-
issuedAt?: undefined;
|
|
18
|
-
expiresAt?: undefined;
|
|
19
|
-
}>;
|
|
20
|
-
//# sourceMappingURL=jwt.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../src/server/jwt.ts"],"names":[],"mappings":"AAuDA,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,UAAQ;;;;;;;;;;;;;;;;;;GAoF/E"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { User } from "./types";
|
|
2
|
-
/**
|
|
3
|
-
* Simple in-memory session store
|
|
4
|
-
* In a real app, this would be backed by Redis/etc
|
|
5
|
-
*/
|
|
6
|
-
declare class SessionStore {
|
|
7
|
-
private static instance;
|
|
8
|
-
private sessions;
|
|
9
|
-
private currentSessionId;
|
|
10
|
-
private constructor();
|
|
11
|
-
static getInstance(): SessionStore;
|
|
12
|
-
setUser(sessionId: string, user: User): void;
|
|
13
|
-
getUser(sessionId: string): User | null;
|
|
14
|
-
getCurrentUser(): User | null;
|
|
15
|
-
removeUser(sessionId: string): void;
|
|
16
|
-
clear(): void;
|
|
17
|
-
debug(): {
|
|
18
|
-
sessionsCount: number;
|
|
19
|
-
currentSessionId: string | null;
|
|
20
|
-
sessions: [string, User][];
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
export declare const sessionStore: SessionStore;
|
|
24
|
-
/**
|
|
25
|
-
* Cached function to get user from session store
|
|
26
|
-
* Uses React cache for SSR optimization
|
|
27
|
-
*/
|
|
28
|
-
export declare const getVerifiedUser: (sessionId: string) => User | null;
|
|
29
|
-
export {};
|
|
30
|
-
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../src/server/session-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAEnC;;;GAGG;AACH,cAAM,YAAY;IAChB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,gBAAgB,CAAsB;IAE9C,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,YAAY;IAOlC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAMrC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIvC,cAAc,IAAI,IAAI,GAAG,IAAI;IAK7B,UAAU,CAAC,SAAS,EAAE,MAAM;IAI5B,KAAK;IAIL,KAAK;;;;;CAON;AAGD,eAAO,MAAM,YAAY,cAA6B,CAAA;AAEtD;;;GAGG;AACH,eAAO,MAAM,eAAe,cAAqB,MAAM,KAAG,IAAI,GAAG,IAE/D,CAAA"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { type NextRequest, NextResponse } from 'next/server';
|
|
2
|
-
import type { UserInfo } from "./types";
|
|
3
|
-
export declare const runtime = "edge";
|
|
4
|
-
interface Auth {
|
|
5
|
-
user: UserInfo | null;
|
|
6
|
-
token: string | null;
|
|
7
|
-
protect: () => Promise<void>;
|
|
8
|
-
}
|
|
9
|
-
type MiddlewareCallback = (auth: Auth, request: NextRequest) => Promise<void>;
|
|
10
|
-
/**
|
|
11
|
-
* Create a route matcher function for public paths
|
|
12
|
-
*/
|
|
13
|
-
export declare function createRouteMatcher(patterns: string[]): (request: NextRequest) => boolean;
|
|
14
|
-
/**
|
|
15
|
-
* Middleware factory that handles authentication and custom logic
|
|
16
|
-
* @param customHandler Optional function for additional custom logic
|
|
17
|
-
*/
|
|
18
|
-
export declare function ternSecureMiddleware(callback: MiddlewareCallback): (request: NextRequest) => Promise<NextResponse<unknown>>;
|
|
19
|
-
export {};
|
|
20
|
-
//# sourceMappingURL=ternSecureMiddleware.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ternSecureMiddleware.d.ts","sourceRoot":"","sources":["../../../src/server/ternSecureMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,OAAO,SAAS,CAAA;AAE7B,UAAU,IAAI;IACZ,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED,KAAK,kBAAkB,GAAG,CACxB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,WAAW,KACjB,OAAO,CAAC,IAAI,CAAC,CAAA;AAGlB;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAC3C,SAAS,WAAW,KAAG,OAAO,CAWvC;AAwCD;;;GAGG;AAEH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,IAC9B,SAAS,WAAW,oCA2BtD"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export interface User {
|
|
2
|
-
uid: string;
|
|
3
|
-
email: string | null;
|
|
4
|
-
emailVerified?: boolean;
|
|
5
|
-
authTime?: number;
|
|
6
|
-
disabled?: boolean;
|
|
7
|
-
}
|
|
8
|
-
export interface UserInfo {
|
|
9
|
-
uid: string;
|
|
10
|
-
email: string | null;
|
|
11
|
-
emailVerified?: boolean;
|
|
12
|
-
authTime?: number;
|
|
13
|
-
disabled?: boolean;
|
|
14
|
-
}
|
|
15
|
-
export interface SessionUser {
|
|
16
|
-
uid: string;
|
|
17
|
-
email: string | null;
|
|
18
|
-
emailVerified: boolean;
|
|
19
|
-
disabled?: boolean;
|
|
20
|
-
}
|
|
21
|
-
export interface SessionResult {
|
|
22
|
-
isAuthenticated: boolean;
|
|
23
|
-
user: UserInfo | null;
|
|
24
|
-
error?: string;
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACrB;AAIC,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,OAAO,CAAA;IACxB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { User } from "./types";
|
|
2
|
-
interface RequestContext {
|
|
3
|
-
user: User;
|
|
4
|
-
sessionId: string;
|
|
5
|
-
}
|
|
6
|
-
export declare class Store {
|
|
7
|
-
private static getStore;
|
|
8
|
-
static setContext(context: RequestContext): void;
|
|
9
|
-
static getContext(): RequestContext | null;
|
|
10
|
-
static setSession(sessionId: string, user: User): void;
|
|
11
|
-
static getSession(sessionId: string): User | null;
|
|
12
|
-
static debug(): {
|
|
13
|
-
contextsSize: any;
|
|
14
|
-
sessionsSize: any;
|
|
15
|
-
currentSession: any;
|
|
16
|
-
contexts: unknown[];
|
|
17
|
-
sessions: unknown[];
|
|
18
|
-
};
|
|
19
|
-
static cleanup(): void;
|
|
20
|
-
}
|
|
21
|
-
export {};
|
|
22
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/server/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAEnC,UAAU,cAAc;IACtB,IAAI,EAAE,IAAI,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;CAClB;AAYD,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAC,QAAQ;IAcvB,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc;IAoBzC,MAAM,CAAC,UAAU,IAAI,cAAc,GAAG,IAAI;IAwB1C,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAK/C,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKjD,MAAM,CAAC,KAAK;;;;;;;IAWZ,MAAM,CAAC,OAAO;CAcf"}
|