@tern-secure/backend 1.1.5 → 1.1.7

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 (159) hide show
  1. package/admin/package.json +5 -0
  2. package/dist/adapters/PostgresAdapter.d.ts +8 -0
  3. package/dist/adapters/PostgresAdapter.d.ts.map +1 -0
  4. package/dist/adapters/RedisAdapter.d.ts +10 -0
  5. package/dist/adapters/RedisAdapter.d.ts.map +1 -0
  6. package/dist/adapters/index.d.ts +13 -0
  7. package/dist/adapters/index.d.ts.map +1 -0
  8. package/dist/adapters/types.d.ts +30 -0
  9. package/dist/adapters/types.d.ts.map +1 -0
  10. package/dist/admin/gemini_sessionTernSecure.d.ts +10 -0
  11. package/dist/admin/gemini_sessionTernSecure.d.ts.map +1 -0
  12. package/dist/admin/index.d.ts +8 -0
  13. package/dist/admin/index.d.ts.map +1 -0
  14. package/dist/admin/index.js +705 -0
  15. package/dist/admin/index.js.map +1 -0
  16. package/dist/admin/index.mjs +512 -0
  17. package/dist/admin/index.mjs.map +1 -0
  18. package/dist/admin/nextSessionTernSecure.d.ts +28 -0
  19. package/dist/admin/nextSessionTernSecure.d.ts.map +1 -0
  20. package/dist/admin/sessionTernSecure.d.ts +6 -0
  21. package/dist/admin/sessionTernSecure.d.ts.map +1 -0
  22. package/dist/admin/tenant.d.ts.map +1 -0
  23. package/dist/api/createBackendApi.d.ts +8 -0
  24. package/dist/api/createBackendApi.d.ts.map +1 -0
  25. package/dist/api/endpoints/SessionApi.d.ts +12 -0
  26. package/dist/api/endpoints/SessionApi.d.ts.map +1 -0
  27. package/dist/api/endpoints/index.d.ts +2 -0
  28. package/dist/api/endpoints/index.d.ts.map +1 -0
  29. package/dist/api/index.d.ts +2 -0
  30. package/dist/api/index.d.ts.map +1 -0
  31. package/dist/api/request.d.ts +36 -0
  32. package/dist/api/request.d.ts.map +1 -0
  33. package/dist/chunk-JFOTE3Y5.mjs +157 -0
  34. package/dist/chunk-JFOTE3Y5.mjs.map +1 -0
  35. package/dist/chunk-WZYVAHZ3.mjs +318 -0
  36. package/dist/chunk-WZYVAHZ3.mjs.map +1 -0
  37. package/dist/constants.d.ts +63 -0
  38. package/dist/constants.d.ts.map +1 -0
  39. package/dist/index.d.ts +14 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +1307 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/index.mjs +839 -0
  44. package/dist/index.mjs.map +1 -0
  45. package/dist/instance/backendFireInstance.d.ts +7 -0
  46. package/dist/instance/backendFireInstance.d.ts.map +1 -0
  47. package/dist/instance/backendInstance.d.ts +20 -0
  48. package/dist/instance/backendInstance.d.ts.map +1 -0
  49. package/dist/instance/backendInstanceEdge.d.ts +13 -0
  50. package/dist/instance/backendInstanceEdge.d.ts.map +1 -0
  51. package/dist/jwt/algorithms.d.ts +3 -0
  52. package/dist/jwt/algorithms.d.ts.map +1 -0
  53. package/dist/jwt/cryptoKeys.d.ts +3 -0
  54. package/dist/jwt/cryptoKeys.d.ts.map +1 -0
  55. package/dist/jwt/guardReturn.d.ts +3 -0
  56. package/dist/jwt/guardReturn.d.ts.map +1 -0
  57. package/dist/jwt/index.d.ts +4 -0
  58. package/dist/jwt/index.d.ts.map +1 -0
  59. package/dist/jwt/index.js +332 -0
  60. package/dist/jwt/index.js.map +1 -0
  61. package/dist/jwt/index.mjs +139 -0
  62. package/dist/jwt/index.mjs.map +1 -0
  63. package/dist/jwt/jwt.d.ts +4 -0
  64. package/dist/jwt/jwt.d.ts.map +1 -0
  65. package/dist/jwt/signJwt.d.ts +5 -0
  66. package/dist/jwt/signJwt.d.ts.map +1 -0
  67. package/dist/jwt/types.d.ts +8 -0
  68. package/dist/jwt/types.d.ts.map +1 -0
  69. package/dist/jwt/verifyContent.d.ts +7 -0
  70. package/dist/jwt/verifyContent.d.ts.map +1 -0
  71. package/dist/jwt/verifyJwt.d.ts +12 -0
  72. package/dist/jwt/verifyJwt.d.ts.map +1 -0
  73. package/dist/runtime/browser/crypto.mjs +1 -0
  74. package/dist/runtime/node/crypto.js +1 -0
  75. package/dist/runtime/node/crypto.mjs +1 -0
  76. package/dist/runtime.d.ts +26 -0
  77. package/dist/runtime.d.ts.map +1 -0
  78. package/dist/ternsecureauth.d.ts.map +1 -0
  79. package/dist/tokens/authstate.d.ts +61 -0
  80. package/dist/tokens/authstate.d.ts.map +1 -0
  81. package/dist/tokens/keys.d.ts +16 -0
  82. package/dist/tokens/keys.d.ts.map +1 -0
  83. package/dist/tokens/request.d.ts +16 -0
  84. package/dist/tokens/request.d.ts.map +1 -0
  85. package/dist/tokens/requestFire.d.ts +17 -0
  86. package/dist/tokens/requestFire.d.ts.map +1 -0
  87. package/dist/tokens/sessionConfig.d.ts +14 -0
  88. package/dist/tokens/sessionConfig.d.ts.map +1 -0
  89. package/dist/tokens/ternSecureRequest.d.ts +20 -0
  90. package/dist/tokens/ternSecureRequest.d.ts.map +1 -0
  91. package/dist/tokens/ternUrl.d.ts +15 -0
  92. package/dist/tokens/ternUrl.d.ts.map +1 -0
  93. package/dist/tokens/types.d.ts +41 -0
  94. package/dist/tokens/types.d.ts.map +1 -0
  95. package/dist/tokens/verify.d.ts +11 -0
  96. package/dist/tokens/verify.d.ts.map +1 -0
  97. package/dist/utils/admin-init.d.ts +13 -0
  98. package/dist/utils/admin-init.d.ts.map +1 -0
  99. package/dist/{types/utils → utils}/config.d.ts +1 -1
  100. package/dist/utils/config.d.ts.map +1 -0
  101. package/dist/utils/enableDebugLogging.d.ts +5 -0
  102. package/dist/utils/enableDebugLogging.d.ts.map +1 -0
  103. package/dist/utils/errors.d.ts +29 -0
  104. package/dist/utils/errors.d.ts.map +1 -0
  105. package/dist/utils/gemini_admin-init.d.ts +10 -0
  106. package/dist/utils/gemini_admin-init.d.ts.map +1 -0
  107. package/dist/utils/logger.d.ts +28 -0
  108. package/dist/utils/logger.d.ts.map +1 -0
  109. package/dist/utils/mapDecode.d.ts +4 -0
  110. package/dist/utils/mapDecode.d.ts.map +1 -0
  111. package/dist/utils/options.d.ts +5 -0
  112. package/dist/utils/options.d.ts.map +1 -0
  113. package/dist/utils/path.d.ts +4 -0
  114. package/dist/utils/path.d.ts.map +1 -0
  115. package/dist/utils/redis.d.ts +10 -0
  116. package/dist/utils/redis.d.ts.map +1 -0
  117. package/dist/utils/rfc4648.d.ts +26 -0
  118. package/dist/utils/rfc4648.d.ts.map +1 -0
  119. package/jwt/package.json +5 -0
  120. package/package.json +58 -10
  121. package/dist/cjs/admin/sessionTernSecure.js +0 -256
  122. package/dist/cjs/admin/sessionTernSecure.js.map +0 -1
  123. package/dist/cjs/admin/tenant.js +0 -68
  124. package/dist/cjs/admin/tenant.js.map +0 -1
  125. package/dist/cjs/global.d.js +0 -2
  126. package/dist/cjs/global.d.js.map +0 -1
  127. package/dist/cjs/index.js +0 -48
  128. package/dist/cjs/index.js.map +0 -1
  129. package/dist/cjs/ternsecureauth.js +0 -40
  130. package/dist/cjs/ternsecureauth.js.map +0 -1
  131. package/dist/cjs/utils/admin-init.js +0 -60
  132. package/dist/cjs/utils/admin-init.js.map +0 -1
  133. package/dist/cjs/utils/config.js +0 -113
  134. package/dist/cjs/utils/config.js.map +0 -1
  135. package/dist/esm/admin/sessionTernSecure.js +0 -226
  136. package/dist/esm/admin/sessionTernSecure.js.map +0 -1
  137. package/dist/esm/admin/tenant.js +0 -43
  138. package/dist/esm/admin/tenant.js.map +0 -1
  139. package/dist/esm/global.d.js +0 -1
  140. package/dist/esm/global.d.js.map +0 -1
  141. package/dist/esm/index.js +0 -24
  142. package/dist/esm/index.js.map +0 -1
  143. package/dist/esm/ternsecureauth.js +0 -16
  144. package/dist/esm/ternsecureauth.js.map +0 -1
  145. package/dist/esm/utils/admin-init.js +0 -24
  146. package/dist/esm/utils/admin-init.js.map +0 -1
  147. package/dist/esm/utils/config.js +0 -84
  148. package/dist/esm/utils/config.js.map +0 -1
  149. package/dist/types/admin/sessionTernSecure.d.ts +0 -36
  150. package/dist/types/admin/sessionTernSecure.d.ts.map +0 -1
  151. package/dist/types/admin/tenant.d.ts.map +0 -1
  152. package/dist/types/index.d.ts +0 -5
  153. package/dist/types/index.d.ts.map +0 -1
  154. package/dist/types/ternsecureauth.d.ts.map +0 -1
  155. package/dist/types/utils/admin-init.d.ts +0 -5
  156. package/dist/types/utils/admin-init.d.ts.map +0 -1
  157. package/dist/types/utils/config.d.ts.map +0 -1
  158. /package/dist/{types/admin → admin}/tenant.d.ts +0 -0
  159. /package/dist/{types/ternsecureauth.d.ts → ternsecureauth.d.ts} +0 -0
@@ -0,0 +1,28 @@
1
+ export declare enum LogLevel {
2
+ ERROR = 0,
3
+ WARN = 1,
4
+ INFO = 2,
5
+ DEBUG = 3
6
+ }
7
+ export interface LoggerOptions {
8
+ enabled: boolean;
9
+ level: LogLevel;
10
+ prefix: string;
11
+ }
12
+ export declare class Logger {
13
+ private options;
14
+ constructor(options?: Partial<LoggerOptions>);
15
+ enable(): void;
16
+ disable(): void;
17
+ setLevel(level: LogLevel): void;
18
+ setPrefix(prefix: string): void;
19
+ private log;
20
+ error(message: string, ...args: any[]): void;
21
+ warn(message: string, ...args: any[]): void;
22
+ info(message: string, ...args: any[]): void;
23
+ debug(message: string, ...args: any[]): void;
24
+ }
25
+ export declare const createLogger: (options?: Partial<LoggerOptions>) => Logger;
26
+ export declare const redisLogger: Logger;
27
+ export declare const authLogger: Logger;
28
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,QAAQ,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,GAAE,OAAO,CAAC,aAAa,CAAM;IAShD,MAAM,IAAI,IAAI;IAId,OAAO,IAAI,IAAI;IAIf,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,OAAO,CAAC,GAAG;IAwBX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAG7C;AAED,eAAO,MAAM,YAAY,GAAI,UAAU,OAAO,CAAC,aAAa,CAAC,KAAG,MAE/D,CAAA;AAED,eAAO,MAAM,WAAW,QAAiD,CAAA;AACzE,eAAO,MAAM,UAAU,QAAgD,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { DecodedIdToken } from "@tern-secure/types";
2
+ import type { JWTPayload } from "jose";
3
+ export declare function mapJwtPayloadToDecodedIdToken(payload: JWTPayload): DecodedIdToken;
4
+ //# sourceMappingURL=mapDecode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapDecode.d.ts","sourceRoot":"","sources":["../../src/utils/mapDecode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EACV,UAAU,EACX,MAAM,MAAM,CAAC;AAEd,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,UAAU,kBAIhE"}
@@ -0,0 +1,5 @@
1
+ import type { RequestOptions } from "../tokens/types";
2
+ export type RuntimeOptions = Omit<RequestOptions, "apiUrl">;
3
+ export type buildTimeOptions = Partial<Pick<RequestOptions, "apiUrl" | "apiVersion">>;
4
+ export declare function mergePreDefinedOptions(userOptions?: buildTimeOptions): buildTimeOptions;
5
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/utils/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC;AAOtF,wBAAgB,sBAAsB,CACpC,WAAW,GAAE,gBAAqB,GACjC,gBAAgB,CAKlB"}
@@ -0,0 +1,4 @@
1
+ type PathString = string | null | undefined;
2
+ export declare function joinPaths(...args: PathString[]): string;
3
+ export {};
4
+ //# sourceMappingURL=path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAGA,KAAK,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAE5C,wBAAgB,SAAS,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAKvD"}
@@ -0,0 +1,10 @@
1
+ import { Redis } from "@upstash/redis";
2
+ export declare const redis: Redis;
3
+ export interface DisabledUserRecord {
4
+ uid: string;
5
+ email: string;
6
+ disabledTime: string;
7
+ }
8
+ export declare function getDisabledUser(uid: string): Promise<DisabledUserRecord | null>;
9
+ export declare function invalidateDisabledUserCache(uid: string): void;
10
+ //# sourceMappingURL=redis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/utils/redis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAItC,eAAO,MAAM,KAAK,OAGhB,CAAA;AAEF,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;CACrB;AAqED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAyCrF;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAG7D"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * The base64url helper was extracted from the rfc4648 package
3
+ * in order to resolve CSJ/ESM interoperability issues
4
+ *
5
+ * https://github.com/swansontec/rfc4648.js
6
+ *
7
+ * For more context please refer to:
8
+ * - https://github.com/evanw/esbuild/issues/1719
9
+ * - https://github.com/evanw/esbuild/issues/532
10
+ * - https://github.com/swansontec/rollup-plugin-mjs-entry
11
+ */
12
+ export declare const base64url: {
13
+ parse(string: string, opts?: ParseOptions): Uint8Array;
14
+ stringify(data: ArrayLike<number>, opts?: StringifyOptions): string;
15
+ };
16
+ interface ParseOptions {
17
+ loose?: boolean;
18
+ out?: new (size: number) => {
19
+ [index: number]: number;
20
+ };
21
+ }
22
+ interface StringifyOptions {
23
+ pad?: boolean;
24
+ }
25
+ export {};
26
+ //# sourceMappingURL=rfc4648.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rfc4648.d.ts","sourceRoot":"","sources":["../../src/utils/rfc4648.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS;kBACN,MAAM,SAAS,YAAY,GAAG,UAAU;oBAItC,SAAS,CAAC,MAAM,CAAC,SAAS,gBAAgB,GAAG,MAAM;CAGpE,CAAC;AAaF,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE,MAAM,KAAK;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACzD;AAED,UAAU,gBAAgB;IACxB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf"}
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../dist/jwt/index.js",
3
+ "module": "../dist/jwt/index.mjs",
4
+ "types": "../dist/jwt/index.d.ts"
5
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tern-secure/backend",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/TernSecure/typescript.git",
@@ -10,22 +10,68 @@
10
10
  "access": "public"
11
11
  },
12
12
  "files": [
13
- "dist"
13
+ "dist",
14
+ "admin",
15
+ "internal",
16
+ "jwt"
14
17
  ],
18
+ "imports": {
19
+ "#crypto": {
20
+ "edge-light": "./dist/runtime/browser/crypto.mjs",
21
+ "worker": "./dist/runtime/browser/crypto.mjs",
22
+ "browser": "./dist/runtime/browser/crypto.mjs",
23
+ "node": {
24
+ "require": "./dist/runtime/node/crypto.js",
25
+ "import": "./dist/runtime/node/crypto.mjs"
26
+ },
27
+ "default": "./dist/runtime/browser/crypto.mjs"
28
+ }
29
+ },
15
30
  "exports": {
16
31
  ".": {
17
- "types": "./dist/types/index.d.ts",
18
- "import": "./dist/esm/index.js",
19
- "require": "./dist/cjs/index.js"
20
- }
32
+ "import": {
33
+ "types": "./dist/index.d.ts",
34
+ "default": "./dist/index.mjs"
35
+ },
36
+ "require": {
37
+ "types": "./dist/index.d.ts",
38
+ "default": "./dist/index.js"
39
+ }
40
+ },
41
+ "./admin": {
42
+ "import": {
43
+ "types": "./dist/admin/index.d.ts",
44
+ "default": "./dist/admin/index.mjs"
45
+ },
46
+ "require": {
47
+ "types": "./dist/admin/index.d.ts",
48
+ "default": "./dist/admin/index.js"
49
+ }
50
+ },
51
+ "./jwt": {
52
+ "import": {
53
+ "types": "./dist/jwt/index.d.ts",
54
+ "default": "./dist/jwt/index.mjs"
55
+ },
56
+ "require": {
57
+ "types": "./dist/jwt/index.d.ts",
58
+ "default": "./dist/jwt/index.js"
59
+ }
60
+ },
61
+ "./package.json": "./package.json"
21
62
  },
63
+ "main": "./dist/index.js",
22
64
  "dependencies": {
65
+ "cookie": "1.0.2",
66
+ "jose": "^5.10.0",
23
67
  "tslib": "2.4.1",
24
- "@tern-secure/types": "1.0.4"
68
+ "@upstash/redis": "^1.35.2",
69
+ "@tern-secure/shared": "1.2.1",
70
+ "@tern-secure/types": "1.0.5"
25
71
  },
26
72
  "devDependencies": {
73
+ "@types/js-cookie": "^3.0.6",
27
74
  "firebase-admin": "^12.7.0",
28
- "jose": "^5.0.0",
29
75
  "next": "15.3.2"
30
76
  },
31
77
  "peerDependencies": {
@@ -36,8 +82,10 @@
36
82
  },
37
83
  "scripts": {
38
84
  "clean": "rimraf dist",
39
- "build": "pnpm clean && tsup && tsc -p tsconfig.add.json",
85
+ "build": "pnpm clean && tsup",
86
+ "build:add": "tsc -p tsconfig.add.json",
40
87
  "dev": "tsup --watch",
41
- "lint": "eslint src"
88
+ "lint": "eslint src",
89
+ "check-types": "pnpm exec tsc --noEmit"
42
90
  }
43
91
  }
@@ -1,256 +0,0 @@
1
- "use strict";
2
- "use server";
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
- var sessionTernSecure_exports = {};
21
- __export(sessionTernSecure_exports, {
22
- clearSessionCookie: () => clearSessionCookie,
23
- createSessionCookie: () => createSessionCookie,
24
- getIdToken: () => getIdToken,
25
- getServerSessionCookie: () => getServerSessionCookie,
26
- setServerSession: () => setServerSession,
27
- verifyTernIdToken: () => verifyTernIdToken,
28
- verifyTernSessionCookie: () => verifyTernSessionCookie
29
- });
30
- module.exports = __toCommonJS(sessionTernSecure_exports);
31
- var import_headers = require("next/headers");
32
- var import_admin_init = require("../utils/admin-init");
33
- var import_types = require("@tern-secure/types");
34
- const SESSION_CONSTANTS = {
35
- COOKIE_NAME: "_session_cookie",
36
- DEFAULT_EXPIRES_IN_MS: 60 * 60 * 24 * 5 * 1e3,
37
- // 5 days
38
- DEFAULT_EXPIRES_IN_SECONDS: 60 * 60 * 24 * 5
39
- };
40
- const COOKIE_OPTIONS = {
41
- httpOnly: true,
42
- secure: process.env.NODE_ENV === "production",
43
- sameSite: "strict",
44
- path: "/"
45
- };
46
- async function createSessionCookie(params) {
47
- try {
48
- const idToken = typeof params === "string" ? params : params.idToken;
49
- if (!idToken) {
50
- const error = new Error("ID token is required for session creation");
51
- console.error("[createSessionCookie] Missing ID token:", error);
52
- return {
53
- success: false,
54
- message: "ID token is required",
55
- error: "INVALID_TOKEN",
56
- cookieSet: false
57
- };
58
- }
59
- let decodedToken;
60
- try {
61
- decodedToken = await import_admin_init.adminTernSecureAuth.verifyIdToken(idToken);
62
- } catch (verifyError) {
63
- console.error("[createSessionCookie] ID token verification failed:", verifyError);
64
- const authError = (0, import_types.handleFirebaseAuthError)(verifyError);
65
- return {
66
- success: false,
67
- message: authError.message,
68
- error: authError.code,
69
- cookieSet: false
70
- };
71
- }
72
- if (!decodedToken) {
73
- const error = new Error("Invalid ID token - verification returned null");
74
- console.error("[createSessionCookie] Token verification returned null:", error);
75
- return {
76
- success: false,
77
- message: "Invalid ID token",
78
- error: "INVALID_TOKEN",
79
- cookieSet: false
80
- };
81
- }
82
- let sessionCookie;
83
- try {
84
- sessionCookie = await import_admin_init.adminTernSecureAuth.createSessionCookie(idToken, {
85
- expiresIn: SESSION_CONSTANTS.DEFAULT_EXPIRES_IN_MS
86
- });
87
- } catch (sessionError) {
88
- console.error("[createSessionCookie] Firebase session cookie creation failed:", sessionError);
89
- const authError = (0, import_types.handleFirebaseAuthError)(sessionError);
90
- return {
91
- success: false,
92
- message: authError.message,
93
- error: authError.code,
94
- cookieSet: false
95
- };
96
- }
97
- let cookieSetSuccessfully = false;
98
- try {
99
- const cookieStore = await (0, import_headers.cookies)();
100
- cookieStore.set(SESSION_CONSTANTS.COOKIE_NAME, sessionCookie, {
101
- maxAge: SESSION_CONSTANTS.DEFAULT_EXPIRES_IN_SECONDS,
102
- ...COOKIE_OPTIONS
103
- });
104
- const verifySetCookie = cookieStore.get(SESSION_CONSTANTS.COOKIE_NAME);
105
- cookieSetSuccessfully = !!(verifySetCookie == null ? void 0 : verifySetCookie.value);
106
- if (!cookieSetSuccessfully) {
107
- const error = new Error("Session cookie was not set successfully");
108
- console.error("[createSessionCookie] Cookie verification failed:", error);
109
- throw error;
110
- }
111
- } catch (cookieError) {
112
- console.error("[createSessionCookie] Failed to set session cookie:", cookieError);
113
- return {
114
- success: false,
115
- message: "Failed to set session cookie",
116
- error: "COOKIE_SET_FAILED",
117
- cookieSet: false
118
- };
119
- }
120
- console.log(`[createSessionCookie] Session cookie created successfully for user: ${decodedToken.uid}`);
121
- return {
122
- success: true,
123
- message: "Session created successfully",
124
- expiresIn: SESSION_CONSTANTS.DEFAULT_EXPIRES_IN_SECONDS,
125
- cookieSet: cookieSetSuccessfully
126
- };
127
- } catch (error) {
128
- console.error("[createSessionCookie] Unexpected error:", error);
129
- const authError = (0, import_types.handleFirebaseAuthError)(error);
130
- return {
131
- success: false,
132
- message: authError.message || "Failed to create session",
133
- error: authError.code || "INTERNAL_ERROR",
134
- cookieSet: false
135
- };
136
- }
137
- }
138
- async function getServerSessionCookie() {
139
- var _a;
140
- const cookieStore = await (0, import_headers.cookies)();
141
- const sessionCookie = (_a = cookieStore.get("_session_cookie")) == null ? void 0 : _a.value;
142
- if (!sessionCookie) {
143
- throw new Error("No session cookie found");
144
- }
145
- try {
146
- const decondeClaims = await import_admin_init.adminTernSecureAuth.verifySessionCookie(sessionCookie, true);
147
- return {
148
- token: sessionCookie,
149
- userId: decondeClaims.uid
150
- };
151
- } catch (error) {
152
- console.error("Error verifying session:", error);
153
- throw new Error("Invalid Session");
154
- }
155
- }
156
- async function getIdToken() {
157
- var _a;
158
- const cookieStore = await (0, import_headers.cookies)();
159
- const token = (_a = cookieStore.get("_session_token")) == null ? void 0 : _a.value;
160
- if (!token) {
161
- throw new Error("No session cookie found");
162
- }
163
- try {
164
- const decodedClaims = await import_admin_init.adminTernSecureAuth.verifyIdToken(token);
165
- return {
166
- token,
167
- userId: decodedClaims.uid
168
- };
169
- } catch (error) {
170
- console.error("Error verifying session:", error);
171
- throw new Error("Invalid Session");
172
- }
173
- }
174
- async function setServerSession(token) {
175
- try {
176
- const cookieStore = await (0, import_headers.cookies)();
177
- cookieStore.set("_session_token", token, {
178
- httpOnly: true,
179
- secure: process.env.NODE_ENV === "production",
180
- sameSite: "strict",
181
- maxAge: 60 * 60,
182
- // 1 hour
183
- path: "/"
184
- });
185
- return { success: true, message: "Session created" };
186
- } catch {
187
- return { success: false, message: "Failed to create session" };
188
- }
189
- }
190
- async function verifyTernIdToken(token) {
191
- try {
192
- const decodedToken = await import_admin_init.adminTernSecureAuth.verifyIdToken(token);
193
- return {
194
- valid: true,
195
- uid: decodedToken.uid,
196
- email: decodedToken.email || null,
197
- authTime: decodedToken.auth_time
198
- };
199
- } catch (error) {
200
- const errorResponse = (0, import_types.handleFirebaseAuthError)(error);
201
- return {
202
- valid: false,
203
- uid: null,
204
- email: null,
205
- error: errorResponse
206
- };
207
- }
208
- }
209
- async function verifyTernSessionCookie(session) {
210
- try {
211
- const res = await import_admin_init.adminTernSecureAuth.verifySessionCookie(session);
212
- return {
213
- valid: true,
214
- uid: res.uid,
215
- email: res.email || null,
216
- authTime: res.auth_time
217
- };
218
- } catch (error) {
219
- const errorResponse = (0, import_types.handleFirebaseAuthError)(error);
220
- return {
221
- valid: false,
222
- uid: null,
223
- email: null,
224
- error: errorResponse
225
- };
226
- }
227
- }
228
- async function clearSessionCookie() {
229
- var _a;
230
- const cookieStore = await (0, import_headers.cookies)();
231
- cookieStore.delete("_session_cookie");
232
- cookieStore.delete("_session_token");
233
- cookieStore.delete("_session");
234
- try {
235
- const sessionCookie = (_a = cookieStore.get("_session_cookie")) == null ? void 0 : _a.value;
236
- if (sessionCookie) {
237
- const decodedClaims = await import_admin_init.adminTernSecureAuth.verifySessionCookie(sessionCookie);
238
- await import_admin_init.adminTernSecureAuth.revokeRefreshTokens(decodedClaims.uid);
239
- }
240
- return { success: true, message: "Session cleared successfully" };
241
- } catch (error) {
242
- console.error("Error clearing session:", error);
243
- return { success: true, message: "Session cookies cleared" };
244
- }
245
- }
246
- // Annotate the CommonJS export names for ESM import in node:
247
- 0 && (module.exports = {
248
- clearSessionCookie,
249
- createSessionCookie,
250
- getIdToken,
251
- getServerSessionCookie,
252
- setServerSession,
253
- verifyTernIdToken,
254
- verifyTernSessionCookie
255
- });
256
- //# sourceMappingURL=sessionTernSecure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/admin/sessionTernSecure.ts"],"sourcesContent":["'use server'\r\n\r\nimport { cookies } from 'next/headers';\r\nimport { adminTernSecureAuth as adminAuth } from '../utils/admin-init';\r\nimport { handleFirebaseAuthError, type AuthErrorResponse, type SessionParams, type SessionResult } from '@tern-secure/types';\r\n\r\ninterface FirebaseAuthError extends Error {\r\n code?: string;\r\n}\r\n\r\nexport interface User {\r\n uid: string | null;\r\n email: string | null;\r\n }\r\n\r\nexport interface Session {\r\n user: User | null;\r\n token: string | null;\r\n error: Error | null;\r\n}\r\n\r\ninterface TernVerificationResult extends User {\r\n valid: boolean\r\n authTime?: number\r\n error?: AuthErrorResponse\r\n}\r\n\r\n\r\n// DRY Constants\r\nconst SESSION_CONSTANTS = {\r\n COOKIE_NAME: '_session_cookie',\r\n DEFAULT_EXPIRES_IN_MS: 60 * 60 * 24 * 5 * 1000, // 5 days\r\n DEFAULT_EXPIRES_IN_SECONDS: 60 * 60 * 24 * 5,\r\n} as const;\r\n\r\nconst COOKIE_OPTIONS = {\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n sameSite: 'strict' as const,\r\n path: '/',\r\n} as const;\r\n\r\n\r\n\r\nexport async function createSessionCookie(params: SessionParams | string): Promise<SessionResult> {\r\n try {\r\n // Handle both old string format and new object format for backward compatibility\r\n const idToken = typeof params === 'string' ? params : params.idToken;\r\n \r\n if (!idToken) {\r\n const error = new Error('ID token is required for session creation');\r\n console.error('[createSessionCookie] Missing ID token:', error);\r\n return {\r\n success: false,\r\n message: 'ID token is required',\r\n error: 'INVALID_TOKEN',\r\n cookieSet: false\r\n };\r\n }\r\n\r\n // Verify the ID token first\r\n let decodedToken;\r\n try {\r\n decodedToken = await adminAuth.verifyIdToken(idToken);\r\n } catch (verifyError) {\r\n console.error('[createSessionCookie] ID token verification failed:', verifyError);\r\n const authError = handleFirebaseAuthError(verifyError);\r\n return {\r\n success: false,\r\n message: authError.message,\r\n error: authError.code,\r\n cookieSet: false\r\n };\r\n }\r\n \r\n if (!decodedToken) {\r\n const error = new Error('Invalid ID token - verification returned null');\r\n console.error('[createSessionCookie] Token verification returned null:', error);\r\n return {\r\n success: false,\r\n message: 'Invalid ID token',\r\n error: 'INVALID_TOKEN',\r\n cookieSet: false\r\n };\r\n }\r\n\r\n // Create session cookie\r\n let sessionCookie;\r\n try {\r\n sessionCookie = await adminAuth.createSessionCookie(idToken, { \r\n expiresIn: SESSION_CONSTANTS.DEFAULT_EXPIRES_IN_MS \r\n });\r\n } catch (sessionError) {\r\n console.error('[createSessionCookie] Firebase session cookie creation failed:', sessionError);\r\n const authError = handleFirebaseAuthError(sessionError);\r\n return {\r\n success: false,\r\n message: authError.message,\r\n error: authError.code,\r\n cookieSet: false\r\n };\r\n }\r\n\r\n // Set the cookie and verify it was set\r\n let cookieSetSuccessfully = false;\r\n try {\r\n const cookieStore = await cookies();\r\n cookieStore.set(SESSION_CONSTANTS.COOKIE_NAME, sessionCookie, {\r\n maxAge: SESSION_CONSTANTS.DEFAULT_EXPIRES_IN_SECONDS,\r\n ...COOKIE_OPTIONS,\r\n });\r\n\r\n // Verify the cookie was actually set\r\n const verifySetCookie = cookieStore.get(SESSION_CONSTANTS.COOKIE_NAME);\r\n cookieSetSuccessfully = !!verifySetCookie?.value;\r\n \r\n if (!cookieSetSuccessfully) {\r\n const error = new Error('Session cookie was not set successfully');\r\n console.error('[createSessionCookie] Cookie verification failed:', error);\r\n throw error;\r\n }\r\n\r\n } catch (cookieError) {\r\n console.error('[createSessionCookie] Failed to set session cookie:', cookieError);\r\n return {\r\n success: false,\r\n message: 'Failed to set session cookie',\r\n error: 'COOKIE_SET_FAILED',\r\n cookieSet: false\r\n };\r\n }\r\n\r\n console.log(`[createSessionCookie] Session cookie created successfully for user: ${decodedToken.uid}`);\r\n return {\r\n success: true,\r\n message: 'Session created successfully',\r\n expiresIn: SESSION_CONSTANTS.DEFAULT_EXPIRES_IN_SECONDS,\r\n cookieSet: cookieSetSuccessfully\r\n };\r\n\r\n } catch (error) {\r\n console.error('[createSessionCookie] Unexpected error:', error);\r\n const authError = handleFirebaseAuthError(error);\r\n return {\r\n success: false,\r\n message: authError.message || 'Failed to create session',\r\n error: authError.code || 'INTERNAL_ERROR',\r\n cookieSet: false\r\n };\r\n }\r\n}\r\n\r\n\r\n\r\nexport async function getServerSessionCookie() {\r\n const cookieStore = await cookies();\r\n const sessionCookie = cookieStore.get('_session_cookie')?.value;\r\n\r\n if (!sessionCookie) {\r\n throw new Error('No session cookie found')\r\n }\r\n \r\n try {\r\n const decondeClaims = await adminAuth.verifySessionCookie(sessionCookie, true)\r\n return {\r\n token: sessionCookie,\r\n userId: decondeClaims.uid\r\n }\r\n } catch (error) {\r\n console.error('Error verifying session:', error)\r\n throw new Error('Invalid Session')\r\n }\r\n}\r\n\r\n\r\nexport async function getIdToken() {\r\n const cookieStore = await cookies();\r\n const token = cookieStore.get('_session_token')?.value;\r\n\r\n if (!token) {\r\n throw new Error('No session cookie found')\r\n }\r\n \r\n try {\r\n const decodedClaims = await adminAuth.verifyIdToken(token)\r\n return {\r\n token: token,\r\n userId: decodedClaims.uid\r\n }\r\n } catch (error) {\r\n console.error('Error verifying session:', error)\r\n throw new Error('Invalid Session')\r\n }\r\n}\r\n\r\nexport async function setServerSession(token: string) {\r\n try {\r\n const cookieStore = await cookies();\r\n cookieStore.set('_session_token', token, {\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n sameSite: 'strict',\r\n maxAge: 60 * 60, // 1 hour\r\n path: '/',\r\n });\r\n return { success: true, message: 'Session created' };\r\n } catch {\r\n return { success: false, message: 'Failed to create session' };\r\n }\r\n}\r\n\r\n export async function verifyTernIdToken(token: string): Promise<TernVerificationResult> {\r\n try {\r\n const decodedToken = await adminAuth.verifyIdToken(token);\r\n return {\r\n valid: true,\r\n uid: decodedToken.uid,\r\n email: decodedToken.email || null,\r\n authTime: decodedToken.auth_time\r\n };\r\n } catch (error) {\r\n const errorResponse = handleFirebaseAuthError(error)\r\n return {\r\n valid: false,\r\n uid: null,\r\n email: null,\r\n error: errorResponse\r\n };\r\n }\r\n }\r\n \r\n\r\n export async function verifyTernSessionCookie(session: string): Promise<TernVerificationResult>{\r\n try {\r\n const res = await adminAuth.verifySessionCookie(session);\r\n return { \r\n valid: true, \r\n uid: res.uid,\r\n email: res.email || null,\r\n authTime: res.auth_time\r\n };\r\n } catch (error) {\r\n const errorResponse = handleFirebaseAuthError(error)\r\n return {\r\n valid: false, \r\n uid: null,\r\n email: null,\r\n error: errorResponse\r\n };\r\n }\r\n }\r\n\r\n\r\n export async function clearSessionCookie() {\r\n const cookieStore = await cookies()\r\n \r\n cookieStore.delete('_session_cookie')\r\n cookieStore.delete('_session_token')\r\n cookieStore.delete('_session')\r\n \r\n try {\r\n // Verify if there's an active session before revoking\r\n const sessionCookie = cookieStore.get('_session_cookie')?.value\r\n if (sessionCookie) {\r\n // Get the decoded claims to get the user's ID\r\n const decodedClaims = await adminAuth.verifySessionCookie(sessionCookie)\r\n \r\n // Revoke all sessions for the user\r\n await adminAuth.revokeRefreshTokens(decodedClaims.uid)\r\n }\r\n \r\n return { success: true, message: 'Session cleared successfully' }\r\n } catch (error) {\r\n console.error('Error clearing session:', error)\r\n // Still return success even if revoking fails, as cookies are cleared\r\n return { success: true, message: 'Session cookies cleared' }\r\n }\r\n }\r\n\r\n\r\n\r\n/*\r\n export async function GET(request: NextRequest) {\r\n const cookieStore = await cookies();\r\n const sessionCookie = cookieStore.get('session')?.value\r\n \r\n if (!sessionCookie) {\r\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\r\n }\r\n \r\n try {\r\n const decodedClaims = await adminAuth.verifySessionCookie(sessionCookie, true)\r\n return NextResponse.json({ isAuthenticated: true, user: decodedClaims }, { status: 200 })\r\n } catch (error) {\r\n console.error('Error verifying session cookie:', error)\r\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\r\n }\r\n }\r\n\r\n*/"],"mappings":"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","names":["adminAuth"]}
@@ -1,68 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var tenant_exports = {};
20
- __export(tenant_exports, {
21
- createTenant: () => createTenant,
22
- createTenantUser: () => createTenantUser
23
- });
24
- module.exports = __toCommonJS(tenant_exports);
25
- var import_admin_init = require("../utils/admin-init");
26
- async function createTenant(displayName, emailSignInConfig, multiFactorConfig) {
27
- try {
28
- const tenantConfig = {
29
- displayName,
30
- emailSignInConfig,
31
- ...multiFactorConfig && { multiFactorConfig }
32
- };
33
- const tenant = await import_admin_init.TernSecureTenantManager.createTenant(tenantConfig);
34
- return {
35
- success: true,
36
- tenantId: tenant.tenantId,
37
- displayName: tenant.displayName
38
- };
39
- } catch (error) {
40
- console.error("Error creating tenant:", error);
41
- throw new Error("Failed to create tenant");
42
- }
43
- }
44
- async function createTenantUser(email, password, tenantId) {
45
- try {
46
- const tenantAuth = import_admin_init.TernSecureTenantManager.authForTenant(tenantId);
47
- const userRecord = await tenantAuth.createUser({
48
- email,
49
- password,
50
- emailVerified: false,
51
- disabled: false
52
- });
53
- return {
54
- success: true,
55
- message: "Tenant user created successfully",
56
- user: userRecord.uid
57
- };
58
- } catch (error) {
59
- console.error("Error creating tenant user:", error);
60
- throw new Error("Failed to create tenant user");
61
- }
62
- }
63
- // Annotate the CommonJS export names for ESM import in node:
64
- 0 && (module.exports = {
65
- createTenant,
66
- createTenantUser
67
- });
68
- //# sourceMappingURL=tenant.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/admin/tenant.ts"],"sourcesContent":["import { TernSecureTenantManager } from \"../utils/admin-init\";\r\nimport type { SignInResponse } from '@tern-secure/types';\r\n\r\n\r\nexport async function createTenant(\r\n displayName: string,\r\n emailSignInConfig: {\r\n enabled: boolean;\r\n passwordRequired: boolean;\r\n },\r\n multiFactorConfig?: {\r\n state: 'ENABLED' | 'DISABLED';\r\n factorIds: \"phone\"[];\r\n testPhoneNumbers?: {\r\n [phoneNumber: string]: string;\r\n }\r\n }\r\n) {\r\n try {\r\n const tenantConfig = {\r\n displayName,\r\n emailSignInConfig,\r\n ...(multiFactorConfig && { multiFactorConfig })\r\n };\r\n\r\n const tenant = await TernSecureTenantManager.createTenant(tenantConfig);\r\n \r\n return {\r\n success: true,\r\n tenantId: tenant.tenantId,\r\n displayName: tenant.displayName,\r\n };\r\n } catch (error) {\r\n console.error('Error creating tenant:', error);\r\n throw new Error('Failed to create tenant');\r\n }\r\n}\r\n\r\nexport async function createTenantUser(\r\n email: string,\r\n password: string,\r\n tenantId: string\r\n): Promise<SignInResponse> {\r\n try {\r\n const tenantAuth = TernSecureTenantManager.authForTenant(tenantId);\r\n \r\n const userRecord = await tenantAuth.createUser({\r\n email,\r\n password,\r\n emailVerified: false,\r\n disabled: false\r\n });\r\n\r\n return {\r\n success: true,\r\n message: 'Tenant user created successfully',\r\n user: userRecord.uid,\r\n };\r\n } catch (error) {\r\n console.error('Error creating tenant user:', error);\r\n throw new Error('Failed to create tenant user');\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAwC;AAIxC,eAAsB,aACpB,aACA,mBAIA,mBAOA;AACA,MAAI;AACF,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA,GAAI,qBAAqB,EAAE,kBAAkB;AAAA,IAC/C;AAEA,UAAM,SAAS,MAAM,0CAAwB,aAAa,YAAY;AAEtE,WAAO;AAAA,MACL,SAAS;AAAA,MACT,UAAU,OAAO;AAAA,MACjB,aAAa,OAAO;AAAA,IACtB;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,0BAA0B,KAAK;AAC7C,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AACF;AAEA,eAAsB,iBACpB,OACA,UACA,UACyB;AACzB,MAAI;AACF,UAAM,aAAa,0CAAwB,cAAc,QAAQ;AAEjE,UAAM,aAAa,MAAM,WAAW,WAAW;AAAA,MAC7C;AAAA,MACA;AAAA,MACA,eAAe;AAAA,MACf,UAAU;AAAA,IACZ,CAAC;AAED,WAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,MAAM,WAAW;AAAA,IACnB;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,+BAA+B,KAAK;AAClD,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AACF;","names":[]}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=global.d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/dist/cjs/index.js DELETED
@@ -1,48 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var index_exports = {};
20
- __export(index_exports, {
21
- TernSecureTenantManager: () => import_admin_init.TernSecureTenantManager,
22
- adminTernSecureAuth: () => import_admin_init.adminTernSecureAuth,
23
- adminTernSecureDb: () => import_admin_init.adminTernSecureDb,
24
- clearSessionCookie: () => import_sessionTernSecure.clearSessionCookie,
25
- createSessionCookie: () => import_sessionTernSecure.createSessionCookie,
26
- createTenant: () => import_tenant.createTenant,
27
- createTenantUser: () => import_tenant.createTenantUser,
28
- initializeAdminConfig: () => import_config.initializeAdminConfig,
29
- verifyTernSessionCookie: () => import_sessionTernSecure.verifyTernSessionCookie
30
- });
31
- module.exports = __toCommonJS(index_exports);
32
- var import_sessionTernSecure = require("./admin/sessionTernSecure");
33
- var import_admin_init = require("./utils/admin-init");
34
- var import_config = require("./utils/config");
35
- var import_tenant = require("./admin/tenant");
36
- // Annotate the CommonJS export names for ESM import in node:
37
- 0 && (module.exports = {
38
- TernSecureTenantManager,
39
- adminTernSecureAuth,
40
- adminTernSecureDb,
41
- clearSessionCookie,
42
- createSessionCookie,
43
- createTenant,
44
- createTenantUser,
45
- initializeAdminConfig,
46
- verifyTernSessionCookie
47
- });
48
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export { \n verifyTernSessionCookie,\n createSessionCookie, \n clearSessionCookie \n} from './admin/sessionTernSecure'\nexport { \n adminTernSecureAuth, \n adminTernSecureDb, \n TernSecureTenantManager \n} from './utils/admin-init'\nexport { initializeAdminConfig } from './utils/config'\nexport { createTenant, createTenantUser } from './admin/tenant'"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAIO;AACP,wBAIO;AACP,oBAAsC;AACtC,oBAA+C;","names":[]}