@tern-secure/nextjs 5.2.0-canary.v20251024005655 → 5.2.0-canary.v20251028151628
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/app-router/admin/actions.js +7 -2
- package/dist/cjs/app-router/admin/actions.js.map +1 -1
- package/dist/cjs/app-router/admin/request.js +2 -2
- package/dist/cjs/app-router/admin/request.js.map +1 -1
- package/dist/cjs/boundary/components.js +6 -0
- package/dist/cjs/boundary/components.js.map +1 -1
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/server/ternSecureEdgeMiddleware.js.map +1 -1
- package/dist/esm/app-router/admin/actions.js +7 -2
- package/dist/esm/app-router/admin/actions.js.map +1 -1
- package/dist/esm/app-router/admin/request.js +2 -2
- package/dist/esm/app-router/admin/request.js.map +1 -1
- package/dist/esm/boundary/components.js +6 -0
- package/dist/esm/boundary/components.js.map +1 -1
- package/dist/esm/index.js +7 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/server/ternSecureEdgeMiddleware.js.map +1 -1
- package/dist/types/app-router/admin/actions.d.ts +1 -0
- package/dist/types/app-router/admin/actions.d.ts.map +1 -1
- package/dist/types/boundary/components.d.ts +1 -1
- package/dist/types/boundary/components.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/cjs/server/node/SessionTernSecure.js +0 -55
- package/dist/cjs/server/node/SessionTernSecure.js.map +0 -1
- package/dist/cjs/server/node/auth.js +0 -90
- package/dist/cjs/server/node/auth.js.map +0 -1
- package/dist/cjs/server/node/index.js +0 -40
- package/dist/cjs/server/node/index.js.map +0 -1
- package/dist/cjs/server/node/node-session.js +0 -60
- package/dist/cjs/server/node/node-session.js.map +0 -1
- package/dist/cjs/server/node/ternSecureNodeMiddleware.js +0 -181
- package/dist/cjs/server/node/ternSecureNodeMiddleware.js.map +0 -1
- package/dist/esm/server/node/SessionTernSecure.js +0 -31
- package/dist/esm/server/node/SessionTernSecure.js.map +0 -1
- package/dist/esm/server/node/auth.js +0 -63
- package/dist/esm/server/node/auth.js.map +0 -1
- package/dist/esm/server/node/index.js +0 -19
- package/dist/esm/server/node/index.js.map +0 -1
- package/dist/esm/server/node/node-session.js +0 -36
- package/dist/esm/server/node/node-session.js.map +0 -1
- package/dist/esm/server/node/ternSecureNodeMiddleware.js +0 -164
- package/dist/esm/server/node/ternSecureNodeMiddleware.js.map +0 -1
- package/dist/types/server/node/SessionTernSecure.d.ts +0 -3
- package/dist/types/server/node/SessionTernSecure.d.ts.map +0 -1
- package/dist/types/server/node/auth.d.ts +0 -23
- package/dist/types/server/node/auth.d.ts.map +0 -1
- package/dist/types/server/node/index.d.ts +0 -3
- package/dist/types/server/node/index.d.ts.map +0 -1
- package/dist/types/server/node/node-session.d.ts +0 -4
- package/dist/types/server/node/node-session.d.ts.map +0 -1
- package/dist/types/server/node/ternSecureNodeMiddleware.d.ts +0 -54
- package/dist/types/server/node/ternSecureNodeMiddleware.d.ts.map +0 -1
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { createRedirect, createTernSecureRequest } from "@tern-secure/backend";
|
|
2
|
-
import {
|
|
3
|
-
createBackendInstance
|
|
4
|
-
} from "@tern-secure/backend/admin";
|
|
5
|
-
import { NextResponse } from "next/server";
|
|
6
|
-
import { SIGN_IN_URL, SIGN_UP_URL } from "../constant";
|
|
7
|
-
import {
|
|
8
|
-
isNextjsNotFoundError,
|
|
9
|
-
isRedirectToSignInError,
|
|
10
|
-
isRedirectToSignUpError,
|
|
11
|
-
redirectToSignInError,
|
|
12
|
-
redirectToSignUpError
|
|
13
|
-
} from "../nextErrors";
|
|
14
|
-
const createRouteMatcher = (patterns) => {
|
|
15
|
-
return (request) => {
|
|
16
|
-
const { pathname } = request.nextUrl;
|
|
17
|
-
return patterns.some((pattern) => {
|
|
18
|
-
const regexPattern = pattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\\\*/g, ".*");
|
|
19
|
-
return new RegExp(`^${regexPattern}$`).test(pathname);
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
const authenticateMiddlewareRequest = async (request) => {
|
|
24
|
-
try {
|
|
25
|
-
const requestState = await createBackendInstance(request);
|
|
26
|
-
const authResult = requestState.requestState.auth();
|
|
27
|
-
return {
|
|
28
|
-
user: {
|
|
29
|
-
uid: authResult.session.uid,
|
|
30
|
-
email: authResult.session.email || null,
|
|
31
|
-
tenantId: authResult.session.firebase?.tenant || "default",
|
|
32
|
-
authTime: authResult.session.auth_time
|
|
33
|
-
},
|
|
34
|
-
session: requestState.requestState.token
|
|
35
|
-
};
|
|
36
|
-
} catch (error) {
|
|
37
|
-
console.error(
|
|
38
|
-
"Auth check error:",
|
|
39
|
-
error instanceof Error ? error.message : "Unknown error"
|
|
40
|
-
);
|
|
41
|
-
return {
|
|
42
|
-
user: null,
|
|
43
|
-
session: null
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
const ternSecureMiddleware = (...args) => {
|
|
48
|
-
const [request, event] = parseRequestAndEvent(args);
|
|
49
|
-
const [handler, params] = parseHandlerAndOptions(args);
|
|
50
|
-
const middleware = () => {
|
|
51
|
-
const withAuthNextMiddleware = async (request2, event2) => {
|
|
52
|
-
const resolvedParams = typeof params === "function" ? await params(request2) : params;
|
|
53
|
-
const signInUrl = resolvedParams.signInUrl || SIGN_IN_URL;
|
|
54
|
-
const signUpUrl = resolvedParams.signUpUrl || SIGN_UP_URL;
|
|
55
|
-
let handlerResult = NextResponse.next();
|
|
56
|
-
if (handler) {
|
|
57
|
-
const createAuthHandler = async () => {
|
|
58
|
-
const authObject = await authenticateMiddlewareRequest(request2);
|
|
59
|
-
const getAuth = async () => {
|
|
60
|
-
const ternSecureRequest = createTernSecureRequest(request2);
|
|
61
|
-
const { redirectToSignIn, redirectToSignUp } = createMiddlewareRedirects(
|
|
62
|
-
ternSecureRequest,
|
|
63
|
-
signInUrl,
|
|
64
|
-
signUpUrl
|
|
65
|
-
);
|
|
66
|
-
return {
|
|
67
|
-
...authObject,
|
|
68
|
-
redirectToSignIn,
|
|
69
|
-
redirectToSignUp
|
|
70
|
-
};
|
|
71
|
-
};
|
|
72
|
-
const protect = async () => {
|
|
73
|
-
if (!authObject.user || !authObject.session) {
|
|
74
|
-
const redirectUrl = new URL(signInUrl || "/sign-in", request2.url);
|
|
75
|
-
redirectUrl.searchParams.set(
|
|
76
|
-
"redirect",
|
|
77
|
-
request2.nextUrl.pathname
|
|
78
|
-
);
|
|
79
|
-
redirectToSignInError(redirectUrl.toString());
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
const authHandler = Object.assign(getAuth, {
|
|
83
|
-
protect,
|
|
84
|
-
user: authObject.user,
|
|
85
|
-
session: authObject.session
|
|
86
|
-
});
|
|
87
|
-
return authHandler;
|
|
88
|
-
};
|
|
89
|
-
try {
|
|
90
|
-
const auth = await createAuthHandler();
|
|
91
|
-
const userHandlerResult = await handler(auth, request2, event2);
|
|
92
|
-
handlerResult = userHandlerResult || handlerResult;
|
|
93
|
-
} catch (error) {
|
|
94
|
-
const ternSecureRequest = createTernSecureRequest(request2);
|
|
95
|
-
handlerResult = handleControlError(error, ternSecureRequest, request2);
|
|
96
|
-
}
|
|
97
|
-
return handlerResult;
|
|
98
|
-
}
|
|
99
|
-
return handlerResult;
|
|
100
|
-
};
|
|
101
|
-
const nextMiddleware = async (request2, event2) => {
|
|
102
|
-
return withAuthNextMiddleware(request2, event2);
|
|
103
|
-
};
|
|
104
|
-
if (request && event) {
|
|
105
|
-
return nextMiddleware(request, event);
|
|
106
|
-
}
|
|
107
|
-
return nextMiddleware;
|
|
108
|
-
};
|
|
109
|
-
return middleware();
|
|
110
|
-
};
|
|
111
|
-
const parseRequestAndEvent = (args) => {
|
|
112
|
-
return [
|
|
113
|
-
args[0] instanceof Request ? args[0] : void 0,
|
|
114
|
-
args[0] instanceof Request ? args[1] : void 0
|
|
115
|
-
];
|
|
116
|
-
};
|
|
117
|
-
const parseHandlerAndOptions = (args) => {
|
|
118
|
-
return [
|
|
119
|
-
typeof args[0] === "function" ? args[0] : void 0,
|
|
120
|
-
(args.length === 2 ? args[1] : typeof args[0] === "function" ? {} : args[0]) || {}
|
|
121
|
-
];
|
|
122
|
-
};
|
|
123
|
-
const createMiddlewareRedirects = (ternSecureRequest, signInUrl, signUpUrl) => {
|
|
124
|
-
const redirectToSignIn = (opts = {}) => {
|
|
125
|
-
const url = signInUrl || ternSecureRequest.ternUrl.toString();
|
|
126
|
-
redirectToSignInError(url, opts.returnBackUrl);
|
|
127
|
-
};
|
|
128
|
-
const redirectToSignUp = (opts = {}) => {
|
|
129
|
-
const url = signUpUrl || ternSecureRequest.ternUrl.toString();
|
|
130
|
-
redirectToSignUpError(url, opts.returnBackUrl);
|
|
131
|
-
};
|
|
132
|
-
return { redirectToSignIn, redirectToSignUp };
|
|
133
|
-
};
|
|
134
|
-
const handleControlError = (error, ternSecureRequest, nextrequest) => {
|
|
135
|
-
if (isNextjsNotFoundError(error)) {
|
|
136
|
-
return NextResponse.rewrite(new URL("/404", nextrequest.url));
|
|
137
|
-
}
|
|
138
|
-
if (isRedirectToSignInError(error)) {
|
|
139
|
-
const redirectAdapter = (url) => NextResponse.redirect(new URL(url, nextrequest.url));
|
|
140
|
-
const { redirectToSignIn } = createRedirect({
|
|
141
|
-
redirectAdapter,
|
|
142
|
-
baseUrl: ternSecureRequest.ternUrl.origin,
|
|
143
|
-
signInUrl: SIGN_IN_URL,
|
|
144
|
-
signUpUrl: SIGN_UP_URL
|
|
145
|
-
});
|
|
146
|
-
return redirectToSignIn({ returnBackUrl: error.returnBackUrl });
|
|
147
|
-
}
|
|
148
|
-
if (isRedirectToSignUpError(error)) {
|
|
149
|
-
const redirectAdapter = (url) => NextResponse.redirect(new URL(url, nextrequest.url));
|
|
150
|
-
const { redirectToSignUp } = createRedirect({
|
|
151
|
-
redirectAdapter,
|
|
152
|
-
baseUrl: ternSecureRequest.ternUrl.origin,
|
|
153
|
-
signInUrl: SIGN_IN_URL,
|
|
154
|
-
signUpUrl: SIGN_UP_URL
|
|
155
|
-
});
|
|
156
|
-
return redirectToSignUp({ returnBackUrl: error.returnBackUrl });
|
|
157
|
-
}
|
|
158
|
-
throw error;
|
|
159
|
-
};
|
|
160
|
-
export {
|
|
161
|
-
createRouteMatcher,
|
|
162
|
-
ternSecureMiddleware
|
|
163
|
-
};
|
|
164
|
-
//# sourceMappingURL=ternSecureNodeMiddleware.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/node/ternSecureNodeMiddleware.ts"],"sourcesContent":["import {createRedirect, createTernSecureRequest, type TernSecureRequest } from \"@tern-secure/backend\";\nimport {\n createBackendInstance,\n} from \"@tern-secure/backend/admin\";\nimport type { NextMiddleware,NextRequest } from \"next/server\";\nimport {NextResponse } from \"next/server\";\n\nimport { SIGN_IN_URL, SIGN_UP_URL } from \"../constant\";\nimport {\n isNextjsNotFoundError,\n isRedirectToSignInError,\n isRedirectToSignUpError,\n redirectToSignInError,\n redirectToSignUpError,\n} from \"../nextErrors\";\nimport type { BaseUser ,\n NextMiddlewareEvtParam,\n NextMiddlewareRequestParam,\n NextMiddlewareReturn,\n} from \"../types\";\n\ntype RedirectToParams = { returnBackUrl?: string | URL | null };\nexport type RedirectFun<ReturnType> = (params?: RedirectToParams) => ReturnType;\n\nexport type AuthObject = {\n user: BaseUser | null;\n session: string | null;\n};\n\nexport interface MiddlewareAuth extends AuthObject {\n (): Promise<MiddlewareAuthObject>;\n protect: () => Promise<void>;\n}\n\ntype MiddlewareHandler = (\n auth: MiddlewareAuth,\n request: NextMiddlewareRequestParam,\n event: NextMiddlewareEvtParam\n) => NextMiddlewareReturn;\n\nexport type MiddlewareAuthObject = AuthObject & {\n redirectToSignIn: RedirectFun<Response>;\n redirectToSignUp: RedirectFun<Response>;\n};\n\n/**\n * Create a route matcher function for public paths\n */\nexport const createRouteMatcher = (patterns: string[]) => {\n return (request: NextRequest): boolean => {\n const { pathname } = request.nextUrl;\n return patterns.some((pattern) => {\n const regexPattern = pattern\n .replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n .replace(/\\\\\\*/g, \".*\");\n\n return new RegExp(`^${regexPattern}$`).test(pathname);\n });\n };\n};\n\nconst authenticateMiddlewareRequest = async (\n request: NextRequest\n): Promise<AuthObject> => {\n try {\n const requestState = await createBackendInstance(request);\n const authResult = requestState.requestState.auth();\n\n return {\n user: {\n uid: authResult.session.uid,\n email: authResult.session.email || null,\n tenantId: authResult.session.firebase?.tenant || \"default\",\n authTime: authResult.session.auth_time,\n },\n session: requestState.requestState.token,\n };\n } catch (error) {\n console.error(\n \"Auth check error:\",\n error instanceof Error ? error.message : \"Unknown error\"\n );\n return {\n user: null,\n session: null,\n };\n }\n};\n\nexport interface MiddlewareOptions {\n signInUrl?: string;\n signUpUrl?: string;\n debug?: boolean;\n}\ntype MiddlewareOptionsCallback = (\n req: NextRequest\n) => MiddlewareOptions | Promise<MiddlewareOptions>;\n\ninterface TernSecureMiddleware {\n /**\n * @example\n * export default ternSecureMiddleware((auth, request, event) => { ... }, options);\n */\n (handler: MiddlewareHandler, options?: MiddlewareOptions): NextMiddleware;\n\n /**\n * @example\n * export default ternSecureMiddleware((auth, request, event) => { ... }, (req) => options);\n */\n (\n handler: MiddlewareHandler,\n options?: MiddlewareOptionsCallback\n ): NextMiddleware;\n\n /**\n * @example\n * export default ternSecureMiddleware(options);\n */\n (options?: MiddlewareOptions): NextMiddleware;\n /**\n * @example\n * export default ternSecureMiddleware;\n */\n (\n request: NextMiddlewareRequestParam,\n event: NextMiddlewareEvtParam\n ): NextMiddlewareReturn;\n}\n\nexport const ternSecureMiddleware = ((\n ...args: unknown[]\n): NextMiddleware | NextMiddlewareReturn => {\n const [request, event] = parseRequestAndEvent(args);\n const [handler, params] = parseHandlerAndOptions(args);\n\n const middleware = () => {\n const withAuthNextMiddleware: NextMiddleware = async (request, event) => {\n const resolvedParams =\n typeof params === \"function\" ? await params(request) : params;\n\n const signInUrl = resolvedParams.signInUrl || SIGN_IN_URL;\n const signUpUrl = resolvedParams.signUpUrl || SIGN_UP_URL;\n\n let handlerResult: Response = NextResponse.next();\n\n if (handler) {\n const createAuthHandler = async (): Promise<MiddlewareAuth> => {\n const authObject = await authenticateMiddlewareRequest(request);\n\n const getAuth = async (): Promise<MiddlewareAuthObject> => {\n const ternSecureRequest = createTernSecureRequest(request);\n const { redirectToSignIn, redirectToSignUp } =\n createMiddlewareRedirects(\n ternSecureRequest,\n signInUrl,\n signUpUrl\n );\n\n return {\n ...authObject,\n redirectToSignIn,\n redirectToSignUp,\n };\n };\n\n const protect = async (): Promise<void> => {\n if (!authObject.user || !authObject.session) {\n const redirectUrl = new URL(signInUrl || \"/sign-in\", request.url);\n redirectUrl.searchParams.set(\n \"redirect\",\n request.nextUrl.pathname\n );\n redirectToSignInError(redirectUrl.toString());\n }\n };\n\n // Return the MiddlewareAuth object with direct property access\n const authHandler = Object.assign(getAuth, {\n protect,\n user: authObject.user,\n session: authObject.session,\n });\n\n return authHandler as MiddlewareAuth;\n };\n\n try {\n const auth = await createAuthHandler();\n const userHandlerResult = await handler(auth, request, event);\n handlerResult = userHandlerResult || handlerResult;\n } catch (error) {\n const ternSecureRequest = createTernSecureRequest(request);\n handlerResult = handleControlError(error, ternSecureRequest, request);\n }\n\n return handlerResult;\n }\n\n return handlerResult;\n };\n\n const nextMiddleware: NextMiddleware = async (request, event) => {\n return withAuthNextMiddleware(request, event);\n };\n\n if (request && event) {\n return nextMiddleware(request, event);\n }\n\n return nextMiddleware;\n };\n return middleware();\n}) as TernSecureMiddleware;\n\nconst parseRequestAndEvent = (args: unknown[]) => {\n return [\n args[0] instanceof Request ? args[0] : undefined,\n args[0] instanceof Request ? args[1] : undefined,\n ] as [\n NextMiddlewareRequestParam | undefined,\n NextMiddlewareEvtParam | undefined,\n ];\n};\n\nconst parseHandlerAndOptions = (args: unknown[]) => {\n return [\n typeof args[0] === \"function\" ? args[0] : undefined,\n (args.length === 2\n ? args[1]\n : typeof args[0] === \"function\"\n ? {}\n : args[0]) || {},\n ] as [\n MiddlewareHandler | undefined,\n MiddlewareOptions | MiddlewareOptionsCallback,\n ];\n};\n\n/**\n * Create middleware redirect functions\n */\nconst createMiddlewareRedirects = (\n ternSecureRequest: TernSecureRequest,\n signInUrl: string,\n signUpUrl: string\n) => {\n const redirectToSignIn: MiddlewareAuthObject[\"redirectToSignIn\"] = (\n opts = {}\n ) => {\n const url = signInUrl || ternSecureRequest.ternUrl.toString();\n redirectToSignInError(url, opts.returnBackUrl);\n };\n\n const redirectToSignUp: MiddlewareAuthObject[\"redirectToSignUp\"] = (\n opts = {}\n ) => {\n const url = signUpUrl || ternSecureRequest.ternUrl.toString();\n redirectToSignUpError(url, opts.returnBackUrl);\n };\n\n return { redirectToSignIn, redirectToSignUp };\n};\n\n/**\n * Handle control flow errors in middleware\n */\nconst handleControlError = (\n error: any,\n ternSecureRequest: TernSecureRequest,\n nextrequest: NextRequest\n): Response => {\n if (isNextjsNotFoundError(error)) {\n return NextResponse.rewrite(new URL(\"/404\", nextrequest.url));\n }\n\n // Handle redirect to sign in errors\n if (isRedirectToSignInError(error)) {\n const redirectAdapter = (url: string) =>\n NextResponse.redirect(new URL(url, nextrequest.url));\n const { redirectToSignIn } = createRedirect({\n redirectAdapter,\n baseUrl: ternSecureRequest.ternUrl.origin,\n signInUrl: SIGN_IN_URL,\n signUpUrl: SIGN_UP_URL,\n });\n\n return redirectToSignIn({ returnBackUrl: error.returnBackUrl });\n }\n\n // Handle redirect to sign up errors\n if (isRedirectToSignUpError(error)) {\n const redirectAdapter = (url: string) =>\n NextResponse.redirect(new URL(url, nextrequest.url));\n const { redirectToSignUp } = createRedirect({\n redirectAdapter,\n baseUrl: ternSecureRequest.ternUrl.origin,\n signInUrl: SIGN_IN_URL,\n signUpUrl: SIGN_UP_URL,\n });\n\n return redirectToSignUp({ returnBackUrl: error.returnBackUrl });\n }\n\n throw error;\n};\n"],"mappings":"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","names":["request","event"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionTernSecure.d.ts","sourceRoot":"","sources":["../../../../src/server/node/SessionTernSecure.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,sBAAsB,CAAC,CA0BjC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { BaseUser } from "../../types";
|
|
2
|
-
export interface AuthResult {
|
|
3
|
-
user: BaseUser | null;
|
|
4
|
-
error: Error | null;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Get the current authenticated user from the session cookies
|
|
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<BaseUser | null>;
|
|
18
|
-
/**
|
|
19
|
-
* Require authentication
|
|
20
|
-
* Throws error if not authenticated
|
|
21
|
-
*/
|
|
22
|
-
export declare const requireAuth: () => Promise<BaseUser>;
|
|
23
|
-
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/server/node/auth.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,QAAmB,OAAO,CAAC,UAAU,CA4CpD,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe,QAAmB,OAAO,CAAC,OAAO,CAG5D,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,OAAO,QAAmB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAG5D,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAmB,OAAO,CAAC,QAAQ,CAQzD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,IAAI,EACJ,OAAO,EACP,eAAe,EACf,WAAW,EACX,KAAK,UAAU,GAChB,MAAM,QAAQ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-session.d.ts","sourceRoot":"","sources":["../../../../src/server/node/node-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAmCxB"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import type { NextMiddleware, NextRequest } from "next/server";
|
|
2
|
-
import type { BaseUser, NextMiddlewareEvtParam, NextMiddlewareRequestParam, NextMiddlewareReturn } from "../types";
|
|
3
|
-
type RedirectToParams = {
|
|
4
|
-
returnBackUrl?: string | URL | null;
|
|
5
|
-
};
|
|
6
|
-
export type RedirectFun<ReturnType> = (params?: RedirectToParams) => ReturnType;
|
|
7
|
-
export type AuthObject = {
|
|
8
|
-
user: BaseUser | null;
|
|
9
|
-
session: string | null;
|
|
10
|
-
};
|
|
11
|
-
export interface MiddlewareAuth extends AuthObject {
|
|
12
|
-
(): Promise<MiddlewareAuthObject>;
|
|
13
|
-
protect: () => Promise<void>;
|
|
14
|
-
}
|
|
15
|
-
type MiddlewareHandler = (auth: MiddlewareAuth, request: NextMiddlewareRequestParam, event: NextMiddlewareEvtParam) => NextMiddlewareReturn;
|
|
16
|
-
export type MiddlewareAuthObject = AuthObject & {
|
|
17
|
-
redirectToSignIn: RedirectFun<Response>;
|
|
18
|
-
redirectToSignUp: RedirectFun<Response>;
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Create a route matcher function for public paths
|
|
22
|
-
*/
|
|
23
|
-
export declare const createRouteMatcher: (patterns: string[]) => (request: NextRequest) => boolean;
|
|
24
|
-
export interface MiddlewareOptions {
|
|
25
|
-
signInUrl?: string;
|
|
26
|
-
signUpUrl?: string;
|
|
27
|
-
debug?: boolean;
|
|
28
|
-
}
|
|
29
|
-
type MiddlewareOptionsCallback = (req: NextRequest) => MiddlewareOptions | Promise<MiddlewareOptions>;
|
|
30
|
-
interface TernSecureMiddleware {
|
|
31
|
-
/**
|
|
32
|
-
* @example
|
|
33
|
-
* export default ternSecureMiddleware((auth, request, event) => { ... }, options);
|
|
34
|
-
*/
|
|
35
|
-
(handler: MiddlewareHandler, options?: MiddlewareOptions): NextMiddleware;
|
|
36
|
-
/**
|
|
37
|
-
* @example
|
|
38
|
-
* export default ternSecureMiddleware((auth, request, event) => { ... }, (req) => options);
|
|
39
|
-
*/
|
|
40
|
-
(handler: MiddlewareHandler, options?: MiddlewareOptionsCallback): NextMiddleware;
|
|
41
|
-
/**
|
|
42
|
-
* @example
|
|
43
|
-
* export default ternSecureMiddleware(options);
|
|
44
|
-
*/
|
|
45
|
-
(options?: MiddlewareOptions): NextMiddleware;
|
|
46
|
-
/**
|
|
47
|
-
* @example
|
|
48
|
-
* export default ternSecureMiddleware;
|
|
49
|
-
*/
|
|
50
|
-
(request: NextMiddlewareRequestParam, event: NextMiddlewareEvtParam): NextMiddlewareReturn;
|
|
51
|
-
}
|
|
52
|
-
export declare const ternSecureMiddleware: TernSecureMiddleware;
|
|
53
|
-
export {};
|
|
54
|
-
//# sourceMappingURL=ternSecureNodeMiddleware.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ternSecureNodeMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/server/node/ternSecureNodeMiddleware.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAC,WAAW,EAAE,MAAM,aAAa,CAAC;AAW9D,OAAO,KAAK,EAAE,QAAQ,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAElB,KAAK,gBAAgB,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAA;CAAE,CAAC;AAChE,MAAM,MAAM,WAAW,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,KAAK,UAAU,CAAC;AAEhF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,KAAK,iBAAiB,GAAG,CACvB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,0BAA0B,EACnC,KAAK,EAAE,sBAAsB,KAC1B,oBAAoB,CAAC;AAE1B,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG;IAC9C,gBAAgB,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxC,gBAAgB,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,EAAE,MAC3C,SAAS,WAAW,KAAG,OAUhC,CAAC;AA8BF,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AACD,KAAK,yBAAyB,GAAG,CAC/B,GAAG,EAAE,WAAW,KACb,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEpD,UAAU,oBAAoB;IAC5B;;;OAGG;IACH,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAAC;IAE1E;;;OAGG;IACH,CACE,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,yBAAyB,GAClC,cAAc,CAAC;IAElB;;;OAGG;IACH,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAAC;IAC9C;;;OAGG;IACH,CACE,OAAO,EAAE,0BAA0B,EACnC,KAAK,EAAE,sBAAsB,GAC5B,oBAAoB,CAAC;CACzB;AAED,eAAO,MAAM,oBAAoB,EAmF3B,oBAAoB,CAAC"}
|