@tern-secure/nextjs 4.2.3 → 4.2.4

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.
@@ -19,18 +19,17 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var ternSecureMiddleware_exports = {};
20
20
  __export(ternSecureMiddleware_exports, {
21
21
  createRouteMatcher: () => createRouteMatcher,
22
+ runtime: () => runtime,
22
23
  ternSecureMiddleware: () => ternSecureMiddleware
23
24
  });
24
25
  module.exports = __toCommonJS(ternSecureMiddleware_exports);
25
26
  var import_server = require("next/server");
26
- var import_errors = require("../errors");
27
+ const runtime = "edge";
27
28
  function createRouteMatcher(patterns) {
28
29
  return (request) => {
29
30
  const { pathname } = request.nextUrl;
30
31
  return patterns.some((pattern) => {
31
- const regexPattern = new RegExp(
32
- `^${pattern.replace(/\*/g, ".*").replace(/\((.*)\)/, "(?:$1)?")}$`
33
- );
32
+ const regexPattern = new RegExp(`^${pattern.replace(/\*/g, ".*").replace(/$$(.*)$$/, "(?:$1)?")}$`);
34
33
  return regexPattern.test(pathname);
35
34
  });
36
35
  };
@@ -48,35 +47,28 @@ function ternSecureMiddleware(callback) {
48
47
  if (currentPath !== "/sign-in") {
49
48
  const redirectUrl = new URL("/sign-in", request.url);
50
49
  redirectUrl.searchParams.set("redirect", currentPath);
51
- throw new import_errors.TernSecureError("UNAUTHENTICATED", redirectUrl.toString());
52
- } else {
53
50
  throw new Error("UNAUTHENTICATED");
54
51
  }
55
52
  }
56
53
  }
57
54
  };
58
- if (!callback) {
59
- return import_server.NextResponse.next();
60
- }
61
- try {
62
- await callback(auth, request);
63
- return import_server.NextResponse.next();
64
- } catch (error) {
65
- if (error instanceof Error && error.message === "Unauthorized access") {
66
- console.log("middleware: Unauthorized access, redirecting to sign-in");
67
- return import_server.NextResponse.redirect(error.message);
55
+ if (callback) {
56
+ try {
57
+ await callback(auth, request);
58
+ } catch (error) {
59
+ if (error instanceof Error && error.message === "UNAUTHENTICATED") {
60
+ const redirectUrl = new URL("/sign-in", request.url);
61
+ redirectUrl.searchParams.set("redirect", request.nextUrl.pathname);
62
+ return import_server.NextResponse.redirect(redirectUrl);
63
+ }
64
+ throw error;
68
65
  }
69
- throw error;
70
66
  }
67
+ const response = import_server.NextResponse.next();
68
+ response.headers.delete("x-middleware-next");
69
+ return response;
71
70
  } catch (error) {
72
- console.error("Middleware error:", {
73
- error: error instanceof Error ? {
74
- name: error.name,
75
- message: error.message,
76
- stack: error.stack
77
- } : error,
78
- path: request.nextUrl.pathname
79
- });
71
+ console.error("Middleware error:", error);
80
72
  return import_server.NextResponse.redirect(new URL("/sign-in", request.url));
81
73
  }
82
74
  };
@@ -84,6 +76,7 @@ function ternSecureMiddleware(callback) {
84
76
  // Annotate the CommonJS export names for ESM import in node:
85
77
  0 && (module.exports = {
86
78
  createRouteMatcher,
79
+ runtime,
87
80
  ternSecureMiddleware
88
81
  });
89
82
  //# sourceMappingURL=ternSecureMiddleware.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/ternSecureMiddleware.ts"],"sourcesContent":["import { type NextRequest, NextResponse } from 'next/server';\nimport type { UserInfo } from './types'\nimport { TernSecureError } from '../errors';\n\n\n\ninterface Auth {\n user: UserInfo | null\n sessionId : string | null\n protect: () => Promise<void>\n}\n\ntype MiddlewareCallback = (\n auth: Auth,\n request: NextRequest\n) => Promise<void>\n\n\n/**\n * Create a route matcher function for public paths\n */\nexport function createRouteMatcher(patterns: string[]) {\n return (request: NextRequest): boolean => {\n const { pathname } = request.nextUrl\n return patterns.some(pattern => {\n // Convert route pattern to regex\n const regexPattern = new RegExp(\n `^${pattern.replace(/\\*/g, '.*').replace(/\\((.*)\\)/, '(?:$1)?')}$`\n )\n return regexPattern.test(pathname)\n })\n }\n}\n\n\n/**\n * Middleware factory that handles authentication and custom logic\n * @param customHandler Optional function for additional custom logic\n */\n\nexport function ternSecureMiddleware(callback: MiddlewareCallback) {\n return async function middleware(request: NextRequest) {\n try {\n\n const hasCookies = request.cookies.has('_session_cookie') || request.cookies.has('_session_token')\n\n const auth: Auth = {\n user: null,\n sessionId: null,\n protect: async () => {\n if (!hasCookies) {\n const currentPath = request.nextUrl.pathname\n if (currentPath !== '/sign-in') {\n const redirectUrl = new URL('/sign-in', request.url)\n redirectUrl.searchParams.set('redirect', currentPath)\n throw new TernSecureError('UNAUTHENTICATED', redirectUrl.toString())\n } else {\n throw new Error('UNAUTHENTICATED')\n }\n }\n }\n }\n\n if (!callback) {\n return NextResponse.next()\n }\n\n\n\n try {\n await callback(auth, request)\n return NextResponse.next()\n } catch (error) {\n if (error instanceof Error && error.message === 'Unauthorized access') {\n console.log('middleware: Unauthorized access, redirecting to sign-in')\n return NextResponse.redirect(error.message)\n }\n throw error\n }\n\n } catch (error) {\n console.error(\"Middleware error:\", {\n error:\n error instanceof Error\n ? {\n name: error.name,\n message: error.message,\n stack: error.stack,\n }\n : error,\n path: request.nextUrl.pathname,\n })\n\n return NextResponse.redirect(new URL('/sign-in', request.url))\n }\n }\n}"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA+C;AAE/C,oBAAgC;AAmBzB,SAAS,mBAAmB,UAAoB;AACrD,SAAO,CAAC,YAAkC;AACxC,UAAM,EAAE,SAAS,IAAI,QAAQ;AAC7B,WAAO,SAAS,KAAK,aAAW;AAE9B,YAAM,eAAe,IAAI;AAAA,QACvB,IAAI,QAAQ,QAAQ,OAAO,IAAI,EAAE,QAAQ,YAAY,SAAS,CAAC;AAAA,MACjE;AACA,aAAO,aAAa,KAAK,QAAQ;AAAA,IACnC,CAAC;AAAA,EACH;AACF;AAQO,SAAS,qBAAqB,UAA8B;AACjE,SAAO,eAAe,WAAW,SAAsB;AACrD,QAAI;AAEF,YAAM,aAAa,QAAQ,QAAQ,IAAI,iBAAiB,KAAK,QAAQ,QAAQ,IAAI,gBAAgB;AAEjG,YAAM,OAAa;AAAA,QACjB,MAAM;AAAA,QACN,WAAW;AAAA,QACX,SAAS,YAAY;AACnB,cAAI,CAAC,YAAY;AACf,kBAAM,cAAc,QAAQ,QAAQ;AACpC,gBAAI,gBAAgB,YAAY;AAC9B,oBAAM,cAAc,IAAI,IAAI,YAAY,QAAQ,GAAG;AACnD,0BAAY,aAAa,IAAI,YAAY,WAAW;AACpD,oBAAM,IAAI,8BAAgB,mBAAmB,YAAY,SAAS,CAAC;AAAA,YACrE,OAAO;AACL,oBAAM,IAAI,MAAM,iBAAiB;AAAA,YACnC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,UAAI,CAAC,UAAU;AACb,eAAO,2BAAa,KAAK;AAAA,MAC3B;AAIA,UAAI;AACF,cAAM,SAAS,MAAM,OAAO;AAC5B,eAAO,2BAAa,KAAK;AAAA,MAC3B,SAAS,OAAO;AACd,YAAI,iBAAiB,SAAS,MAAM,YAAY,uBAAuB;AACrE,kBAAQ,IAAI,yDAAyD;AACrE,iBAAO,2BAAa,SAAS,MAAM,OAAO;AAAA,QAC5C;AACA,cAAM;AAAA,MACR;AAAA,IAEF,SAAS,OAAO;AACd,cAAQ,MAAM,qBAAqB;AAAA,QACjC,OACE,iBAAiB,QACb;AAAA,UACE,MAAM,MAAM;AAAA,UACZ,SAAS,MAAM;AAAA,UACf,OAAO,MAAM;AAAA,QACf,IACA;AAAA,QACN,MAAM,QAAQ,QAAQ;AAAA,MACxB,CAAC;AAED,aAAO,2BAAa,SAAS,IAAI,IAAI,YAAY,QAAQ,GAAG,CAAC;AAAA,IAC/D;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/server/ternSecureMiddleware.ts"],"sourcesContent":["import { type NextRequest, NextResponse } from 'next/server';\nimport type { UserInfo } from './types'\n\nexport const runtime = \"edge\"\n\ninterface Auth {\n user: UserInfo | null\n sessionId : string | null\n protect: () => Promise<void>\n}\n\ntype MiddlewareCallback = (\n auth: Auth,\n request: NextRequest\n) => Promise<void>\n\n\n/**\n * Create a route matcher function for public paths\n */\nexport function createRouteMatcher(patterns: string[]) {\n return (request: NextRequest): boolean => {\n const { pathname } = request.nextUrl\n return patterns.some((pattern) => {\n // Convert route pattern to regex\n const regexPattern = new RegExp(`^${pattern.replace(/\\*/g, \".*\").replace(/$$(.*)$$/, \"(?:$1)?\")}$`)\n return regexPattern.test(pathname)\n })\n }\n}\n\n\n/**\n * Middleware factory that handles authentication and custom logic\n * @param customHandler Optional function for additional custom logic\n */\n\nexport function ternSecureMiddleware(callback: MiddlewareCallback) {\n return async function middleware(request: NextRequest) {\n try {\n\n const hasCookies = request.cookies.has('_session_cookie') || request.cookies.has('_session_token')\n\n const auth: Auth = {\n user: null,\n sessionId: null,\n protect: async () => {\n if (!hasCookies) {\n const currentPath = request.nextUrl.pathname\n if (currentPath !== '/sign-in') {\n const redirectUrl = new URL('/sign-in', request.url)\n redirectUrl.searchParams.set('redirect', currentPath)\n throw new Error(\"UNAUTHENTICATED\")\n }\n }\n },\n }\n\n //if (!callback) {\n // return NextResponse.next()\n // }\n\n if (callback){\n try {\n await callback(auth, request)\n } catch (error) {\n // Handle authentication errors\n if (error instanceof Error && error.message === \"UNAUTHENTICATED\") {\n const redirectUrl = new URL(\"/sign-in\", request.url)\n redirectUrl.searchParams.set(\"redirect\", request.nextUrl.pathname)\n return NextResponse.redirect(redirectUrl)\n }\n // Re-throw other errors\n throw error\n }\n }\n\n // Continue to the next middleware or route handler\n const response = NextResponse.next()\n\n // Clean up response\n response.headers.delete(\"x-middleware-next\")\n\n return response\n } catch (error) {\n console.error(\"Middleware error:\", error)\n return NextResponse.redirect(new URL('/sign-in', request.url))\n }\n }\n}"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA+C;AAGxC,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,IAAI,OAAO,IAAI,QAAQ,QAAQ,OAAO,IAAI,EAAE,QAAQ,YAAY,SAAS,CAAC,GAAG;AAClG,aAAO,aAAa,KAAK,QAAQ;AAAA,IACnC,CAAC;AAAA,EACH;AACF;AAQO,SAAS,qBAAqB,UAA8B;AACjE,SAAO,eAAe,WAAW,SAAsB;AACrD,QAAI;AAEF,YAAM,aAAa,QAAQ,QAAQ,IAAI,iBAAiB,KAAK,QAAQ,QAAQ,IAAI,gBAAgB;AAEjG,YAAM,OAAa;AAAA,QACjB,MAAM;AAAA,QACN,WAAW;AAAA,QACX,SAAS,YAAY;AACnB,cAAI,CAAC,YAAY;AACf,kBAAM,cAAc,QAAQ,QAAQ;AACpC,gBAAI,gBAAgB,YAAY;AAC9B,oBAAM,cAAc,IAAI,IAAI,YAAY,QAAQ,GAAG;AACnD,0BAAY,aAAa,IAAI,YAAY,WAAW;AACpD,oBAAM,IAAI,MAAM,iBAAiB;AAAA,YACnC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAMF,UAAI,UAAS;AACX,YAAI;AACF,gBAAM,SAAS,MAAM,OAAO;AAAA,QAC9B,SAAS,OAAO;AAEd,cAAI,iBAAiB,SAAS,MAAM,YAAY,mBAAmB;AACjE,kBAAM,cAAc,IAAI,IAAI,YAAY,QAAQ,GAAG;AACnD,wBAAY,aAAa,IAAI,YAAY,QAAQ,QAAQ,QAAQ;AACjE,mBAAO,2BAAa,SAAS,WAAW;AAAA,UAC1C;AAEA,gBAAM;AAAA,QACR;AAAA,MACF;AAGE,YAAM,WAAW,2BAAa,KAAK;AAGnC,eAAS,QAAQ,OAAO,mBAAmB;AAE3C,aAAO;AAAA,IACT,SAAS,OAAO;AACd,cAAQ,MAAM,qBAAqB,KAAK;AACxC,aAAO,2BAAa,SAAS,IAAI,IAAI,YAAY,QAAQ,GAAG,CAAC;AAAA,IAC/D;AAAA,EACF;AACF;","names":[]}
@@ -1,12 +1,10 @@
1
1
  import { NextResponse } from "next/server";
2
- import { TernSecureError } from "../errors";
2
+ const runtime = "edge";
3
3
  function createRouteMatcher(patterns) {
4
4
  return (request) => {
5
5
  const { pathname } = request.nextUrl;
6
6
  return patterns.some((pattern) => {
7
- const regexPattern = new RegExp(
8
- `^${pattern.replace(/\*/g, ".*").replace(/\((.*)\)/, "(?:$1)?")}$`
9
- );
7
+ const regexPattern = new RegExp(`^${pattern.replace(/\*/g, ".*").replace(/$$(.*)$$/, "(?:$1)?")}$`);
10
8
  return regexPattern.test(pathname);
11
9
  });
12
10
  };
@@ -24,41 +22,35 @@ function ternSecureMiddleware(callback) {
24
22
  if (currentPath !== "/sign-in") {
25
23
  const redirectUrl = new URL("/sign-in", request.url);
26
24
  redirectUrl.searchParams.set("redirect", currentPath);
27
- throw new TernSecureError("UNAUTHENTICATED", redirectUrl.toString());
28
- } else {
29
25
  throw new Error("UNAUTHENTICATED");
30
26
  }
31
27
  }
32
28
  }
33
29
  };
34
- if (!callback) {
35
- return NextResponse.next();
36
- }
37
- try {
38
- await callback(auth, request);
39
- return NextResponse.next();
40
- } catch (error) {
41
- if (error instanceof Error && error.message === "Unauthorized access") {
42
- console.log("middleware: Unauthorized access, redirecting to sign-in");
43
- return NextResponse.redirect(error.message);
30
+ if (callback) {
31
+ try {
32
+ await callback(auth, request);
33
+ } catch (error) {
34
+ if (error instanceof Error && error.message === "UNAUTHENTICATED") {
35
+ const redirectUrl = new URL("/sign-in", request.url);
36
+ redirectUrl.searchParams.set("redirect", request.nextUrl.pathname);
37
+ return NextResponse.redirect(redirectUrl);
38
+ }
39
+ throw error;
44
40
  }
45
- throw error;
46
41
  }
42
+ const response = NextResponse.next();
43
+ response.headers.delete("x-middleware-next");
44
+ return response;
47
45
  } catch (error) {
48
- console.error("Middleware error:", {
49
- error: error instanceof Error ? {
50
- name: error.name,
51
- message: error.message,
52
- stack: error.stack
53
- } : error,
54
- path: request.nextUrl.pathname
55
- });
46
+ console.error("Middleware error:", error);
56
47
  return NextResponse.redirect(new URL("/sign-in", request.url));
57
48
  }
58
49
  };
59
50
  }
60
51
  export {
61
52
  createRouteMatcher,
53
+ runtime,
62
54
  ternSecureMiddleware
63
55
  };
64
56
  //# sourceMappingURL=ternSecureMiddleware.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/ternSecureMiddleware.ts"],"sourcesContent":["import { type NextRequest, NextResponse } from 'next/server';\nimport type { UserInfo } from './types'\nimport { TernSecureError } from '../errors';\n\n\n\ninterface Auth {\n user: UserInfo | null\n sessionId : string | null\n protect: () => Promise<void>\n}\n\ntype MiddlewareCallback = (\n auth: Auth,\n request: NextRequest\n) => Promise<void>\n\n\n/**\n * Create a route matcher function for public paths\n */\nexport function createRouteMatcher(patterns: string[]) {\n return (request: NextRequest): boolean => {\n const { pathname } = request.nextUrl\n return patterns.some(pattern => {\n // Convert route pattern to regex\n const regexPattern = new RegExp(\n `^${pattern.replace(/\\*/g, '.*').replace(/\\((.*)\\)/, '(?:$1)?')}$`\n )\n return regexPattern.test(pathname)\n })\n }\n}\n\n\n/**\n * Middleware factory that handles authentication and custom logic\n * @param customHandler Optional function for additional custom logic\n */\n\nexport function ternSecureMiddleware(callback: MiddlewareCallback) {\n return async function middleware(request: NextRequest) {\n try {\n\n const hasCookies = request.cookies.has('_session_cookie') || request.cookies.has('_session_token')\n\n const auth: Auth = {\n user: null,\n sessionId: null,\n protect: async () => {\n if (!hasCookies) {\n const currentPath = request.nextUrl.pathname\n if (currentPath !== '/sign-in') {\n const redirectUrl = new URL('/sign-in', request.url)\n redirectUrl.searchParams.set('redirect', currentPath)\n throw new TernSecureError('UNAUTHENTICATED', redirectUrl.toString())\n } else {\n throw new Error('UNAUTHENTICATED')\n }\n }\n }\n }\n\n if (!callback) {\n return NextResponse.next()\n }\n\n\n\n try {\n await callback(auth, request)\n return NextResponse.next()\n } catch (error) {\n if (error instanceof Error && error.message === 'Unauthorized access') {\n console.log('middleware: Unauthorized access, redirecting to sign-in')\n return NextResponse.redirect(error.message)\n }\n throw error\n }\n\n } catch (error) {\n console.error(\"Middleware error:\", {\n error:\n error instanceof Error\n ? {\n name: error.name,\n message: error.message,\n stack: error.stack,\n }\n : error,\n path: request.nextUrl.pathname,\n })\n\n return NextResponse.redirect(new URL('/sign-in', request.url))\n }\n }\n}"],"mappings":"AAAA,SAA2B,oBAAoB;AAE/C,SAAS,uBAAuB;AAmBzB,SAAS,mBAAmB,UAAoB;AACrD,SAAO,CAAC,YAAkC;AACxC,UAAM,EAAE,SAAS,IAAI,QAAQ;AAC7B,WAAO,SAAS,KAAK,aAAW;AAE9B,YAAM,eAAe,IAAI;AAAA,QACvB,IAAI,QAAQ,QAAQ,OAAO,IAAI,EAAE,QAAQ,YAAY,SAAS,CAAC;AAAA,MACjE;AACA,aAAO,aAAa,KAAK,QAAQ;AAAA,IACnC,CAAC;AAAA,EACH;AACF;AAQO,SAAS,qBAAqB,UAA8B;AACjE,SAAO,eAAe,WAAW,SAAsB;AACrD,QAAI;AAEF,YAAM,aAAa,QAAQ,QAAQ,IAAI,iBAAiB,KAAK,QAAQ,QAAQ,IAAI,gBAAgB;AAEjG,YAAM,OAAa;AAAA,QACjB,MAAM;AAAA,QACN,WAAW;AAAA,QACX,SAAS,YAAY;AACnB,cAAI,CAAC,YAAY;AACf,kBAAM,cAAc,QAAQ,QAAQ;AACpC,gBAAI,gBAAgB,YAAY;AAC9B,oBAAM,cAAc,IAAI,IAAI,YAAY,QAAQ,GAAG;AACnD,0BAAY,aAAa,IAAI,YAAY,WAAW;AACpD,oBAAM,IAAI,gBAAgB,mBAAmB,YAAY,SAAS,CAAC;AAAA,YACrE,OAAO;AACL,oBAAM,IAAI,MAAM,iBAAiB;AAAA,YACnC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,UAAI,CAAC,UAAU;AACb,eAAO,aAAa,KAAK;AAAA,MAC3B;AAIA,UAAI;AACF,cAAM,SAAS,MAAM,OAAO;AAC5B,eAAO,aAAa,KAAK;AAAA,MAC3B,SAAS,OAAO;AACd,YAAI,iBAAiB,SAAS,MAAM,YAAY,uBAAuB;AACrE,kBAAQ,IAAI,yDAAyD;AACrE,iBAAO,aAAa,SAAS,MAAM,OAAO;AAAA,QAC5C;AACA,cAAM;AAAA,MACR;AAAA,IAEF,SAAS,OAAO;AACd,cAAQ,MAAM,qBAAqB;AAAA,QACjC,OACE,iBAAiB,QACb;AAAA,UACE,MAAM,MAAM;AAAA,UACZ,SAAS,MAAM;AAAA,UACf,OAAO,MAAM;AAAA,QACf,IACA;AAAA,QACN,MAAM,QAAQ,QAAQ;AAAA,MACxB,CAAC;AAED,aAAO,aAAa,SAAS,IAAI,IAAI,YAAY,QAAQ,GAAG,CAAC;AAAA,IAC/D;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/server/ternSecureMiddleware.ts"],"sourcesContent":["import { type NextRequest, NextResponse } from 'next/server';\nimport type { UserInfo } from './types'\n\nexport const runtime = \"edge\"\n\ninterface Auth {\n user: UserInfo | null\n sessionId : string | null\n protect: () => Promise<void>\n}\n\ntype MiddlewareCallback = (\n auth: Auth,\n request: NextRequest\n) => Promise<void>\n\n\n/**\n * Create a route matcher function for public paths\n */\nexport function createRouteMatcher(patterns: string[]) {\n return (request: NextRequest): boolean => {\n const { pathname } = request.nextUrl\n return patterns.some((pattern) => {\n // Convert route pattern to regex\n const regexPattern = new RegExp(`^${pattern.replace(/\\*/g, \".*\").replace(/$$(.*)$$/, \"(?:$1)?\")}$`)\n return regexPattern.test(pathname)\n })\n }\n}\n\n\n/**\n * Middleware factory that handles authentication and custom logic\n * @param customHandler Optional function for additional custom logic\n */\n\nexport function ternSecureMiddleware(callback: MiddlewareCallback) {\n return async function middleware(request: NextRequest) {\n try {\n\n const hasCookies = request.cookies.has('_session_cookie') || request.cookies.has('_session_token')\n\n const auth: Auth = {\n user: null,\n sessionId: null,\n protect: async () => {\n if (!hasCookies) {\n const currentPath = request.nextUrl.pathname\n if (currentPath !== '/sign-in') {\n const redirectUrl = new URL('/sign-in', request.url)\n redirectUrl.searchParams.set('redirect', currentPath)\n throw new Error(\"UNAUTHENTICATED\")\n }\n }\n },\n }\n\n //if (!callback) {\n // return NextResponse.next()\n // }\n\n if (callback){\n try {\n await callback(auth, request)\n } catch (error) {\n // Handle authentication errors\n if (error instanceof Error && error.message === \"UNAUTHENTICATED\") {\n const redirectUrl = new URL(\"/sign-in\", request.url)\n redirectUrl.searchParams.set(\"redirect\", request.nextUrl.pathname)\n return NextResponse.redirect(redirectUrl)\n }\n // Re-throw other errors\n throw error\n }\n }\n\n // Continue to the next middleware or route handler\n const response = NextResponse.next()\n\n // Clean up response\n response.headers.delete(\"x-middleware-next\")\n\n return response\n } catch (error) {\n console.error(\"Middleware error:\", error)\n return NextResponse.redirect(new URL('/sign-in', request.url))\n }\n }\n}"],"mappings":"AAAA,SAA2B,oBAAoB;AAGxC,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,IAAI,OAAO,IAAI,QAAQ,QAAQ,OAAO,IAAI,EAAE,QAAQ,YAAY,SAAS,CAAC,GAAG;AAClG,aAAO,aAAa,KAAK,QAAQ;AAAA,IACnC,CAAC;AAAA,EACH;AACF;AAQO,SAAS,qBAAqB,UAA8B;AACjE,SAAO,eAAe,WAAW,SAAsB;AACrD,QAAI;AAEF,YAAM,aAAa,QAAQ,QAAQ,IAAI,iBAAiB,KAAK,QAAQ,QAAQ,IAAI,gBAAgB;AAEjG,YAAM,OAAa;AAAA,QACjB,MAAM;AAAA,QACN,WAAW;AAAA,QACX,SAAS,YAAY;AACnB,cAAI,CAAC,YAAY;AACf,kBAAM,cAAc,QAAQ,QAAQ;AACpC,gBAAI,gBAAgB,YAAY;AAC9B,oBAAM,cAAc,IAAI,IAAI,YAAY,QAAQ,GAAG;AACnD,0BAAY,aAAa,IAAI,YAAY,WAAW;AACpD,oBAAM,IAAI,MAAM,iBAAiB;AAAA,YACnC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAMF,UAAI,UAAS;AACX,YAAI;AACF,gBAAM,SAAS,MAAM,OAAO;AAAA,QAC9B,SAAS,OAAO;AAEd,cAAI,iBAAiB,SAAS,MAAM,YAAY,mBAAmB;AACjE,kBAAM,cAAc,IAAI,IAAI,YAAY,QAAQ,GAAG;AACnD,wBAAY,aAAa,IAAI,YAAY,QAAQ,QAAQ,QAAQ;AACjE,mBAAO,aAAa,SAAS,WAAW;AAAA,UAC1C;AAEA,gBAAM;AAAA,QACR;AAAA,MACF;AAGE,YAAM,WAAW,aAAa,KAAK;AAGnC,eAAS,QAAQ,OAAO,mBAAmB;AAE3C,aAAO;AAAA,IACT,SAAS,OAAO;AACd,cAAQ,MAAM,qBAAqB,KAAK;AACxC,aAAO,aAAa,SAAS,IAAI,IAAI,YAAY,QAAQ,GAAG,CAAC;AAAA,IAC/D;AAAA,EACF;AACF;","names":[]}
@@ -1,5 +1,6 @@
1
1
  import { type NextRequest, NextResponse } from 'next/server';
2
2
  import type { UserInfo } from './types';
3
+ export declare const runtime = "edge";
3
4
  interface Auth {
4
5
  user: UserInfo | null;
5
6
  sessionId: string | null;
@@ -1 +1 @@
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;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAKvC,UAAU,IAAI;IACZ,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;IACrB,SAAS,EAAG,MAAM,GAAG,IAAI,CAAA;IACzB,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,aAClC,WAAW,KAAG,OAAO,CAUvC;AAGD;;;GAGG;AAEH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,aACrB,WAAW,oCAuDtD"}
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;AAC7D,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,SAAS,EAAG,MAAM,GAAG,IAAI,CAAA;IACzB,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,aAClC,WAAW,KAAG,OAAO,CAQvC;AAGD;;;GAGG;AAEH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,aACrB,WAAW,oCAmDtD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tern-secure/nextjs",
3
- "version": "4.2.3",
3
+ "version": "4.2.4",
4
4
  "packageManager": "npm@11.0.0",
5
5
  "publishConfig": {
6
6
  "access": "public"