@tern-secure/nextjs 4.2.1 → 4.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/cjs/app-router/admin/sessionTernSecure.js +29 -25
  2. package/dist/cjs/app-router/admin/sessionTernSecure.js.map +1 -1
  3. package/dist/cjs/components/sign-in.js +3 -0
  4. package/dist/cjs/components/sign-in.js.map +1 -1
  5. package/dist/cjs/server/auth.js +59 -44
  6. package/dist/cjs/server/auth.js.map +1 -1
  7. package/dist/cjs/server/crypto.js +43 -0
  8. package/dist/cjs/server/crypto.js.map +1 -0
  9. package/dist/cjs/server/ctx-store.js +65 -0
  10. package/dist/cjs/server/ctx-store.js.map +1 -0
  11. package/dist/cjs/server/edge-session.js +23 -19
  12. package/dist/cjs/server/edge-session.js.map +1 -1
  13. package/dist/cjs/server/index.js +0 -2
  14. package/dist/cjs/server/index.js.map +1 -1
  15. package/dist/cjs/server/jwt-edge.js +50 -24
  16. package/dist/cjs/server/jwt-edge.js.map +1 -1
  17. package/dist/cjs/server/jwt.js +0 -10
  18. package/dist/cjs/server/jwt.js.map +1 -1
  19. package/dist/cjs/server/session-store.js +72 -0
  20. package/dist/cjs/server/session-store.js.map +1 -0
  21. package/dist/cjs/server/ternSecureMiddleware.js +25 -53
  22. package/dist/cjs/server/ternSecureMiddleware.js.map +1 -1
  23. package/dist/cjs/server/types.js +17 -0
  24. package/dist/cjs/server/types.js.map +1 -0
  25. package/dist/cjs/server/utils.js +108 -0
  26. package/dist/cjs/server/utils.js.map +1 -0
  27. package/dist/esm/app-router/admin/sessionTernSecure.js +29 -25
  28. package/dist/esm/app-router/admin/sessionTernSecure.js.map +1 -1
  29. package/dist/esm/components/sign-in.js +3 -0
  30. package/dist/esm/components/sign-in.js.map +1 -1
  31. package/dist/esm/server/auth.js +57 -43
  32. package/dist/esm/server/auth.js.map +1 -1
  33. package/dist/esm/server/crypto.js +18 -0
  34. package/dist/esm/server/crypto.js.map +1 -0
  35. package/dist/esm/server/ctx-store.js +41 -0
  36. package/dist/esm/server/ctx-store.js.map +1 -0
  37. package/dist/esm/server/edge-session.js +23 -19
  38. package/dist/esm/server/edge-session.js.map +1 -1
  39. package/dist/esm/server/index.js +1 -2
  40. package/dist/esm/server/index.js.map +1 -1
  41. package/dist/esm/server/jwt-edge.js +50 -24
  42. package/dist/esm/server/jwt-edge.js.map +1 -1
  43. package/dist/esm/server/jwt.js +0 -10
  44. package/dist/esm/server/jwt.js.map +1 -1
  45. package/dist/esm/server/session-store.js +47 -0
  46. package/dist/esm/server/session-store.js.map +1 -0
  47. package/dist/esm/server/ternSecureMiddleware.js +25 -52
  48. package/dist/esm/server/ternSecureMiddleware.js.map +1 -1
  49. package/dist/esm/server/types.js +1 -0
  50. package/dist/esm/server/types.js.map +1 -0
  51. package/dist/esm/server/utils.js +84 -0
  52. package/dist/esm/server/utils.js.map +1 -0
  53. package/dist/types/app-router/admin/sessionTernSecure.d.ts +9 -10
  54. package/dist/types/app-router/admin/sessionTernSecure.d.ts.map +1 -1
  55. package/dist/types/components/sign-in.d.ts.map +1 -1
  56. package/dist/types/server/auth.d.ts +9 -5
  57. package/dist/types/server/auth.d.ts.map +1 -1
  58. package/dist/types/server/crypto.d.ts +3 -0
  59. package/dist/types/server/crypto.d.ts.map +1 -0
  60. package/dist/types/server/ctx-store.d.ts +24 -0
  61. package/dist/types/server/ctx-store.d.ts.map +1 -0
  62. package/dist/types/server/edge-session.d.ts +1 -12
  63. package/dist/types/server/edge-session.d.ts.map +1 -1
  64. package/dist/types/server/index.d.ts +2 -2
  65. package/dist/types/server/index.d.ts.map +1 -1
  66. package/dist/types/server/jwt-edge.d.ts +4 -0
  67. package/dist/types/server/jwt-edge.d.ts.map +1 -1
  68. package/dist/types/server/jwt.d.ts.map +1 -1
  69. package/dist/types/server/session-store.d.ts +30 -0
  70. package/dist/types/server/session-store.d.ts.map +1 -0
  71. package/dist/types/server/ternSecureMiddleware.d.ts +3 -4
  72. package/dist/types/server/ternSecureMiddleware.d.ts.map +1 -1
  73. package/dist/types/server/types.d.ts +14 -0
  74. package/dist/types/server/types.d.ts.map +1 -0
  75. package/dist/types/server/utils.d.ts +22 -0
  76. package/dist/types/server/utils.d.ts.map +1 -0
  77. package/package.json +1 -1
@@ -1,15 +1,4 @@
1
1
  import type { NextRequest } from "next/server";
2
- export interface UserInfo {
3
- uid: string;
4
- email: string | null;
5
- emailVerified?: boolean;
6
- authTime?: number;
7
- disabled?: boolean;
8
- }
9
- export interface SessionResult {
10
- isAuthenticated: boolean;
11
- user: UserInfo | null;
12
- error?: string;
13
- }
2
+ import type { SessionResult } from "./types";
14
3
  export declare function verifySession(request: NextRequest): Promise<SessionResult>;
15
4
  //# sourceMappingURL=edge-session.d.ts.map
@@ -1 +1 @@
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;AAE9C,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;AAGD,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,OAAO,CAAA;IACxB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAGD,wBAAsB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAqDhF"}
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,CAgEhF"}
@@ -1,4 +1,4 @@
1
1
  export { ternSecureMiddleware, createRouteMatcher } from './ternSecureMiddleware';
2
- export { auth, getUserInfo } from './auth';
3
- export type { AuthResult } from './auth';
2
+ export { auth, type AuthResult } from './auth';
3
+ export type { UserInfo, SessionResult } from './types';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAC1C,YAAY,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA"}
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,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAA;AAC9C,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA"}
@@ -4,6 +4,8 @@ export declare function verifyFirebaseToken(token: string, isSessionCookie?: boo
4
4
  email: string | undefined;
5
5
  emailVerified: boolean | undefined;
6
6
  authTime: number;
7
+ issuedAt: number;
8
+ expiresAt: number;
7
9
  error?: undefined;
8
10
  } | {
9
11
  valid: boolean;
@@ -12,5 +14,7 @@ export declare function verifyFirebaseToken(token: string, isSessionCookie?: boo
12
14
  email?: undefined;
13
15
  emailVerified?: undefined;
14
16
  authTime?: undefined;
17
+ issuedAt?: undefined;
18
+ expiresAt?: undefined;
15
19
  }>;
16
20
  //# sourceMappingURL=jwt-edge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jwt-edge.d.ts","sourceRoot":"","sources":["../../../src/server/jwt-edge.ts"],"names":[],"mappings":"AAsBA,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,UAAQ;;;WAkClD,MAAM,GAAG,SAAS;mBACD,OAAO,GAAG,SAAS;cAC7B,MAAM;;;;;;;;;GAS1C"}
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 +1 @@
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;;;;;;;;;;;;;;;;;;GAkG/E"}
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"}
@@ -0,0 +1,30 @@
1
+ import type { UserInfo } 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: UserInfo): void;
13
+ getUser(sessionId: string): UserInfo | null;
14
+ getCurrentUser(): UserInfo | null;
15
+ removeUser(sessionId: string): void;
16
+ clear(): void;
17
+ debug(): {
18
+ sessionsCount: number;
19
+ currentSessionId: string | null;
20
+ sessions: [string, UserInfo][];
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) => UserInfo | null;
29
+ export {};
30
+ //# sourceMappingURL=session-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../src/server/session-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC;;;GAGG;AACH,cAAM,YAAY;IAChB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,gBAAgB,CAAsB;IAE9C,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,YAAY;IAOlC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ;IAMzC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAI3C,cAAc,IAAI,QAAQ,GAAG,IAAI;IAKjC,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,QAAQ,GAAG,IAEnE,CAAA"}
@@ -1,9 +1,8 @@
1
- import { NextRequest, NextResponse } from 'next/server';
2
- import { type UserInfo } from './edge-session';
3
- export declare const runtime = "edge";
1
+ import { type NextRequest, NextResponse } from 'next/server';
2
+ import type { UserInfo } from './types';
4
3
  interface Auth {
5
4
  user: UserInfo | null;
6
- token: string | null;
5
+ sessionId: string | null;
7
6
  protect: () => Promise<void>;
8
7
  }
9
8
  type MiddlewareCallback = (auth: Auth, request: NextRequest) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ternSecureMiddleware.d.ts","sourceRoot":"","sources":["../../../src/server/ternSecureMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE7D,eAAO,MAAM,OAAO,SAAS,CAAA;AAG7B,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,aAClC,WAAW,KAAG,OAAO,CAUvC;AAuCD;;;GAGG;AAEH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,aACrB,WAAW,oCAoDtD"}
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"}
@@ -0,0 +1,14 @@
1
+ export interface UserInfo {
2
+ uid: string;
3
+ email: string | null;
4
+ emailVerified?: boolean;
5
+ authTime?: number;
6
+ disabled?: boolean;
7
+ }
8
+ export interface SessionResult {
9
+ user: UserInfo | null;
10
+ token: string | null;
11
+ sessionId: string | null;
12
+ error?: string;
13
+ }
14
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACrB,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;AAGD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf"}
@@ -0,0 +1,22 @@
1
+ import type { UserInfo } from "./types";
2
+ interface RequestContext {
3
+ user: UserInfo;
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: UserInfo): void;
11
+ static getSession(sessionId: string): UserInfo | 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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/server/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,UAAU,cAAc;IACtB,IAAI,EAAE,QAAQ,CAAA;IACd,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,QAAQ;IAKnD,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAKrD,MAAM,CAAC,KAAK;;;;;;;IAWZ,MAAM,CAAC,OAAO;CAcf"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tern-secure/nextjs",
3
- "version": "4.2.1",
3
+ "version": "4.2.3",
4
4
  "packageManager": "npm@11.0.0",
5
5
  "publishConfig": {
6
6
  "access": "public"