@tern-secure/auth 1.1.0-canary.v20251008131428 → 1.1.0-canary.v20251019190011

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 (100) hide show
  1. package/dist/cjs/{resources → auth}/AuthCookieManager.js +12 -1
  2. package/dist/cjs/auth/AuthCookieManager.js.map +1 -0
  3. package/dist/cjs/auth/cookies/session.js +83 -0
  4. package/dist/cjs/auth/cookies/session.js.map +1 -0
  5. package/dist/cjs/auth/request.js +159 -0
  6. package/dist/cjs/auth/request.js.map +1 -0
  7. package/dist/cjs/index.js +2 -0
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/instance/TernAuth.js +163 -19
  10. package/dist/cjs/instance/TernAuth.js.map +1 -1
  11. package/dist/cjs/instance/events.js +3 -2
  12. package/dist/cjs/instance/events.js.map +1 -1
  13. package/dist/cjs/instance/jwtClient.js +72 -0
  14. package/dist/cjs/instance/jwtClient.js.map +1 -0
  15. package/dist/cjs/resources/Base.js +7 -0
  16. package/dist/cjs/resources/Base.js.map +1 -1
  17. package/dist/cjs/resources/Session.js +105 -0
  18. package/dist/cjs/resources/Session.js.map +1 -0
  19. package/dist/cjs/resources/SignIn.js +25 -27
  20. package/dist/cjs/resources/SignIn.js.map +1 -1
  21. package/dist/cjs/resources/Token.js +32 -0
  22. package/dist/cjs/resources/Token.js.map +1 -0
  23. package/dist/cjs/resources/UserData.js +43 -0
  24. package/dist/cjs/resources/UserData.js.map +1 -0
  25. package/dist/cjs/resources/cookie.js +154 -0
  26. package/dist/cjs/resources/cookie.js.map +1 -0
  27. package/dist/cjs/resources/internal.js +4 -2
  28. package/dist/cjs/resources/internal.js.map +1 -1
  29. package/dist/cjs/utils/jwt.js +46 -0
  30. package/dist/cjs/utils/jwt.js.map +1 -0
  31. package/dist/cjs/utils/mapDecode.js +33 -0
  32. package/dist/cjs/utils/mapDecode.js.map +1 -0
  33. package/dist/esm/{resources → auth}/AuthCookieManager.js +13 -4
  34. package/dist/esm/auth/AuthCookieManager.js.map +1 -0
  35. package/dist/esm/auth/cookies/session.js +58 -0
  36. package/dist/esm/auth/cookies/session.js.map +1 -0
  37. package/dist/esm/auth/request.js +134 -0
  38. package/dist/esm/auth/request.js.map +1 -0
  39. package/dist/esm/index.js +2 -1
  40. package/dist/esm/index.js.map +1 -1
  41. package/dist/esm/instance/TernAuth.js +166 -21
  42. package/dist/esm/instance/TernAuth.js.map +1 -1
  43. package/dist/esm/instance/events.js +3 -2
  44. package/dist/esm/instance/events.js.map +1 -1
  45. package/dist/esm/instance/jwtClient.js +47 -0
  46. package/dist/esm/instance/jwtClient.js.map +1 -0
  47. package/dist/esm/resources/Base.js +7 -0
  48. package/dist/esm/resources/Base.js.map +1 -1
  49. package/dist/esm/resources/Session.js +81 -0
  50. package/dist/esm/resources/Session.js.map +1 -0
  51. package/dist/esm/resources/SignIn.js +25 -27
  52. package/dist/esm/resources/SignIn.js.map +1 -1
  53. package/dist/esm/resources/Token.js +8 -0
  54. package/dist/esm/resources/Token.js.map +1 -0
  55. package/dist/esm/resources/UserData.js +19 -0
  56. package/dist/esm/resources/UserData.js.map +1 -0
  57. package/dist/esm/resources/cookie.js +130 -0
  58. package/dist/esm/resources/cookie.js.map +1 -0
  59. package/dist/esm/resources/internal.js +2 -1
  60. package/dist/esm/resources/internal.js.map +1 -1
  61. package/dist/esm/utils/jwt.js +22 -0
  62. package/dist/esm/utils/jwt.js.map +1 -0
  63. package/dist/esm/utils/mapDecode.js +9 -0
  64. package/dist/esm/utils/mapDecode.js.map +1 -0
  65. package/dist/types/{resources → auth}/AuthCookieManager.d.ts +5 -1
  66. package/dist/types/auth/AuthCookieManager.d.ts.map +1 -0
  67. package/dist/types/auth/cookies/session.d.ts +8 -0
  68. package/dist/types/auth/cookies/session.d.ts.map +1 -0
  69. package/dist/types/auth/request.d.ts +49 -0
  70. package/dist/types/auth/request.d.ts.map +1 -0
  71. package/dist/types/index.d.ts +2 -2
  72. package/dist/types/index.d.ts.map +1 -1
  73. package/dist/types/instance/TernAuth.d.ts +27 -5
  74. package/dist/types/instance/TernAuth.d.ts.map +1 -1
  75. package/dist/types/instance/events.d.ts +9 -1
  76. package/dist/types/instance/events.d.ts.map +1 -1
  77. package/dist/types/instance/jwtClient.d.ts +22 -0
  78. package/dist/types/instance/jwtClient.d.ts.map +1 -0
  79. package/dist/types/resources/Base.d.ts +6 -0
  80. package/dist/types/resources/Base.d.ts.map +1 -1
  81. package/dist/types/resources/Session.d.ts +49 -0
  82. package/dist/types/resources/Session.d.ts.map +1 -0
  83. package/dist/types/resources/SignIn.d.ts +8 -6
  84. package/dist/types/resources/SignIn.d.ts.map +1 -1
  85. package/dist/types/resources/Token.d.ts +5 -0
  86. package/dist/types/resources/Token.d.ts.map +1 -0
  87. package/dist/types/resources/UserData.d.ts +8 -0
  88. package/dist/types/resources/UserData.d.ts.map +1 -0
  89. package/dist/types/resources/cookie.d.ts +24 -0
  90. package/dist/types/resources/cookie.d.ts.map +1 -0
  91. package/dist/types/resources/internal.d.ts +2 -1
  92. package/dist/types/resources/internal.d.ts.map +1 -1
  93. package/dist/types/utils/jwt.d.ts +12 -0
  94. package/dist/types/utils/jwt.d.ts.map +1 -0
  95. package/dist/types/utils/mapDecode.d.ts +4 -0
  96. package/dist/types/utils/mapDecode.d.ts.map +1 -0
  97. package/package.json +4 -5
  98. package/dist/cjs/resources/AuthCookieManager.js.map +0 -1
  99. package/dist/esm/resources/AuthCookieManager.js.map +0 -1
  100. package/dist/types/resources/AuthCookieManager.d.ts.map +0 -1
@@ -0,0 +1,32 @@
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 Token_exports = {};
20
+ __export(Token_exports, {
21
+ Token: () => Token
22
+ });
23
+ module.exports = __toCommonJS(Token_exports);
24
+ var import_Base = require("./Base");
25
+ class Token extends import_Base.TernSecureBase {
26
+ pathroot = "tokens";
27
+ }
28
+ // Annotate the CommonJS export names for ESM import in node:
29
+ 0 && (module.exports = {
30
+ Token
31
+ });
32
+ //# sourceMappingURL=Token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/resources/Token.ts"],"sourcesContent":["import { TernSecureBase } from './Base';\n\nexport class Token extends TernSecureBase {\n pathroot = 'tokens';\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA+B;AAExB,MAAM,cAAc,2BAAe;AAAA,EACtC,WAAW;AACf;","names":[]}
@@ -0,0 +1,43 @@
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 UserData_exports = {};
20
+ __export(UserData_exports, {
21
+ UserData: () => UserData
22
+ });
23
+ module.exports = __toCommonJS(UserData_exports);
24
+ var import_Base = require("./Base");
25
+ class UserData extends import_Base.TernSecureBase {
26
+ pathRoot = "/accounts/lookup";
27
+ idToken;
28
+ constructor(idToken) {
29
+ super();
30
+ this.idToken = idToken;
31
+ }
32
+ get = async () => {
33
+ return this._post({
34
+ path: this.pathRoot,
35
+ method: "POST"
36
+ });
37
+ };
38
+ }
39
+ // Annotate the CommonJS export names for ESM import in node:
40
+ 0 && (module.exports = {
41
+ UserData
42
+ });
43
+ //# sourceMappingURL=UserData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/resources/UserData.ts"],"sourcesContent":["import { TernSecureBase } from './Base';\n\nexport class UserData extends TernSecureBase {\n pathRoot = '/accounts/lookup';\n\n private idToken: string | undefined;\n\n constructor(idToken?: string) {\n super();\n this.idToken = idToken;\n }\n\n get = async () => {\n return this._post({\n path: this.pathRoot,\n method: 'POST',\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA+B;AAExB,MAAM,iBAAiB,2BAAe;AAAA,EAC3C,WAAW;AAAA,EAEH;AAAA,EAER,YAAY,SAAkB;AAC5B,UAAM;AACN,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,MAAM,YAAY;AAChB,WAAO,KAAK,MAAM;AAAA,MAChB,MAAM,KAAK;AAAA,MACX,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -0,0 +1,154 @@
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 cookie_exports = {};
20
+ __export(cookie_exports, {
21
+ Cookie: () => Cookie
22
+ });
23
+ module.exports = __toCommonJS(cookie_exports);
24
+ var import_Base = require("./Base");
25
+ class Cookie extends import_Base.TernSecureBase {
26
+ pathroot = "cookies";
27
+ idToken;
28
+ sessionToken;
29
+ refreshToken;
30
+ customToken;
31
+ constructor() {
32
+ super();
33
+ }
34
+ getTokenInCookie = (tokenName) => {
35
+ return this.baseGet({
36
+ path: `${this.pathroot}/get`,
37
+ search: { tokenName }
38
+ });
39
+ };
40
+ parseTokenResponse = (apiResponse, tokenType) => {
41
+ if (!apiResponse) {
42
+ return {
43
+ success: false,
44
+ error: `${tokenType} not found in httpOnly cookies`
45
+ };
46
+ }
47
+ const { success, token, error } = apiResponse;
48
+ return {
49
+ success,
50
+ token,
51
+ error
52
+ };
53
+ };
54
+ getIdToken = async () => {
55
+ const res = await this.getTokenInCookie("idToken");
56
+ return this.parseTokenResponse(res, "idToken");
57
+ };
58
+ getSessionToken = async () => {
59
+ var _a;
60
+ try {
61
+ const response = await this.getTokenInCookie("sessionToken");
62
+ if (!response || !((_a = response.response) == null ? void 0 : _a.token)) {
63
+ return {
64
+ success: false,
65
+ error: "Session token not found in httpOnly cookies"
66
+ };
67
+ }
68
+ return {
69
+ success: true,
70
+ token: response.response.token
71
+ };
72
+ } catch (error) {
73
+ return {
74
+ success: false,
75
+ error: `Failed to retrieve session token: ${error instanceof Error ? error.message : String(error)}`
76
+ };
77
+ }
78
+ };
79
+ getRefreshToken = async () => {
80
+ var _a;
81
+ try {
82
+ const response = await this.getTokenInCookie("refreshToken");
83
+ if (!response || !((_a = response.response) == null ? void 0 : _a.token)) {
84
+ return {
85
+ success: false,
86
+ error: "Refresh token not found in httpOnly cookies"
87
+ };
88
+ }
89
+ return {
90
+ success: true,
91
+ token: response.response.token
92
+ };
93
+ } catch (error) {
94
+ return {
95
+ success: false,
96
+ error: `Failed to retrieve refresh token: ${error instanceof Error ? error.message : String(error)}`
97
+ };
98
+ }
99
+ };
100
+ getCustomToken = async () => {
101
+ var _a;
102
+ try {
103
+ const response = await this.getTokenInCookie("customToken");
104
+ if (!response || !((_a = response.response) == null ? void 0 : _a.token)) {
105
+ return {
106
+ success: false,
107
+ error: "Custom token not found in httpOnly cookies"
108
+ };
109
+ }
110
+ return {
111
+ success: true,
112
+ token: response.response.token
113
+ };
114
+ } catch (error) {
115
+ return {
116
+ success: false,
117
+ error: `Failed to retrieve custom token: ${error instanceof Error ? error.message : String(error)}`
118
+ };
119
+ }
120
+ };
121
+ getAllTokens = async () => {
122
+ const [idToken, sessionToken, refreshToken, customToken] = await Promise.all([
123
+ this.getIdToken(),
124
+ this.getSessionToken(),
125
+ this.getRefreshToken(),
126
+ this.getCustomToken()
127
+ ]);
128
+ return {
129
+ idToken,
130
+ sessionToken,
131
+ refreshToken,
132
+ customToken
133
+ };
134
+ };
135
+ hasToken = async (tokenType) => {
136
+ switch (tokenType) {
137
+ case "idToken":
138
+ return (await this.getIdToken()).success;
139
+ case "sessionToken":
140
+ return (await this.getSessionToken()).success;
141
+ case "refreshToken":
142
+ return (await this.getRefreshToken()).success;
143
+ case "customToken":
144
+ return (await this.getCustomToken()).success;
145
+ default:
146
+ return false;
147
+ }
148
+ };
149
+ }
150
+ // Annotate the CommonJS export names for ESM import in node:
151
+ 0 && (module.exports = {
152
+ Cookie
153
+ });
154
+ //# sourceMappingURL=cookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/resources/cookie.ts"],"sourcesContent":["import type { CookieResource } from '@tern-secure/types';\n\n//import { eventBus, events } from '../instance/events';\nimport { TernSecureBase } from './Base';\n\nexport type TokenResult = {\n success: boolean;\n token?: string;\n error?: string;\n};\n\ntype CookieTokenResponse = {\n success: boolean;\n token?: string;\n error?: string;\n};\n\nexport class Cookie extends TernSecureBase implements CookieResource {\n pathroot = 'cookies';\n\n idToken?: string;\n sessionToken?: string;\n refreshToken?: string;\n customToken?: string;\n\n constructor() {\n super();\n }\n\n private getTokenInCookie = (tokenName: string) => {\n return this.baseGet({\n path: `${this.pathroot}/get`,\n search: { tokenName },\n });\n };\n\n\n private parseTokenResponse = (\n apiResponse: any,\n tokenType: string,\n ): TokenResult => {\n if (!apiResponse) {\n return {\n success: false,\n error: `${tokenType} not found in httpOnly cookies`,\n };\n }\n\n const { success, token, error } = apiResponse as CookieTokenResponse;\n\n return {\n success,\n token,\n error,\n };\n };\n\n getIdToken = async (): Promise<TokenResult> => {\n const res = await this.getTokenInCookie('idToken');\n //eventBus.emit(events.TokenJwt, { tokenType: 'idToken', response: res });\n return this.parseTokenResponse(res, 'idToken');\n };\n\n getSessionToken = async (): Promise<TokenResult> => {\n try {\n const response = await this.getTokenInCookie('sessionToken');\n\n if (!response || !response.response?.token) {\n return {\n success: false,\n error: 'Session token not found in httpOnly cookies',\n };\n }\n\n return {\n success: true,\n token: response.response.token,\n };\n } catch (error) {\n return {\n success: false,\n error: `Failed to retrieve session token: ${error instanceof Error ? error.message : String(error)}`,\n };\n }\n };\n\n getRefreshToken = async (): Promise<TokenResult> => {\n try {\n const response = await this.getTokenInCookie('refreshToken');\n\n if (!response || !response.response?.token) {\n return {\n success: false,\n error: 'Refresh token not found in httpOnly cookies',\n };\n }\n\n return {\n success: true,\n token: response.response.token,\n };\n } catch (error) {\n return {\n success: false,\n error: `Failed to retrieve refresh token: ${error instanceof Error ? error.message : String(error)}`,\n };\n }\n };\n\n getCustomToken = async (): Promise<TokenResult> => {\n try {\n const response = await this.getTokenInCookie('customToken');\n\n if (!response || !response.response?.token) {\n return {\n success: false,\n error: 'Custom token not found in httpOnly cookies',\n };\n }\n\n return {\n success: true,\n token: response.response.token,\n };\n } catch (error) {\n return {\n success: false,\n error: `Failed to retrieve custom token: ${error instanceof Error ? error.message : String(error)}`,\n };\n }\n };\n\n getAllTokens = async (): Promise<Record<string, TokenResult>> => {\n const [idToken, sessionToken, refreshToken, customToken] = await Promise.all([\n this.getIdToken(),\n this.getSessionToken(),\n this.getRefreshToken(),\n this.getCustomToken(),\n ]);\n\n return {\n idToken,\n sessionToken,\n refreshToken,\n customToken,\n };\n };\n\n hasToken = async (tokenType: keyof CookieResource): Promise<boolean> => {\n switch (tokenType) {\n case 'idToken':\n return (await this.getIdToken()).success;\n case 'sessionToken':\n return (await this.getSessionToken()).success;\n case 'refreshToken':\n return (await this.getRefreshToken()).success;\n case 'customToken':\n return (await this.getCustomToken()).success;\n default:\n return false;\n }\n };\n}\n"],"mappings":"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","names":[]}
@@ -15,18 +15,20 @@ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "defau
15
15
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
16
  var internal_exports = {};
17
17
  module.exports = __toCommonJS(internal_exports);
18
+ __reExport(internal_exports, require("./Session"), module.exports);
18
19
  __reExport(internal_exports, require("./SignUp"), module.exports);
19
20
  __reExport(internal_exports, require("./SignIn"), module.exports);
20
21
  __reExport(internal_exports, require("./Base"), module.exports);
21
- __reExport(internal_exports, require("./AuthCookieManager"), module.exports);
22
+ __reExport(internal_exports, require("../auth/AuthCookieManager"), module.exports);
22
23
  __reExport(internal_exports, require("../utils"), module.exports);
23
24
  __reExport(internal_exports, require("./Error"), module.exports);
24
25
  // Annotate the CommonJS export names for ESM import in node:
25
26
  0 && (module.exports = {
27
+ ...require("./Session"),
26
28
  ...require("./SignUp"),
27
29
  ...require("./SignIn"),
28
30
  ...require("./Base"),
29
- ...require("./AuthCookieManager"),
31
+ ...require("../auth/AuthCookieManager"),
30
32
  ...require("../utils"),
31
33
  ...require("./Error")
32
34
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/resources/internal.ts"],"sourcesContent":["export type { TernSecureAuth } from '../instance/TernAuth';\nexport * from './SignUp';\nexport * from './SignIn';\nexport * from './Base';\nexport * from './AuthCookieManager';\nexport * from '../utils';\nexport * from './Error';"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AACA,6BAAc,qBADd;AAEA,6BAAc,qBAFd;AAGA,6BAAc,mBAHd;AAIA,6BAAc,gCAJd;AAKA,6BAAc,qBALd;AAMA,6BAAc,oBANd;","names":[]}
1
+ {"version":3,"sources":["../../../src/resources/internal.ts"],"sourcesContent":["export type { TernSecureAuth } from '../instance/TernAuth';\nexport * from './Session';\nexport * from './SignUp';\nexport * from './SignIn';\nexport * from './Base';\nexport * from '../auth/AuthCookieManager';\nexport * from '../utils';\nexport * from './Error';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AACA,6BAAc,sBADd;AAEA,6BAAc,qBAFd;AAGA,6BAAc,qBAHd;AAIA,6BAAc,mBAJd;AAKA,6BAAc,sCALd;AAMA,6BAAc,qBANd;AAOA,6BAAc,oBAPd;","names":[]}
@@ -0,0 +1,46 @@
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 jwt_exports = {};
20
+ __export(jwt_exports, {
21
+ decode: () => decode
22
+ });
23
+ module.exports = __toCommonJS(jwt_exports);
24
+ var import_jose = require("jose");
25
+ var import_mapDecode = require("./mapDecode");
26
+ function decode(token) {
27
+ const header = (0, import_jose.decodeProtectedHeader)(token);
28
+ const payload = (0, import_jose.decodeJwt)(token);
29
+ const parts = (token || "").split(".");
30
+ const [signature] = parts;
31
+ const data = {
32
+ header,
33
+ payload,
34
+ signature
35
+ };
36
+ const decoded = (0, import_mapDecode.mapJwtPayloadToDecodedIdToken)(payload);
37
+ return {
38
+ encoded: data,
39
+ decoded
40
+ };
41
+ }
42
+ // Annotate the CommonJS export names for ESM import in node:
43
+ 0 && (module.exports = {
44
+ decode
45
+ });
46
+ //# sourceMappingURL=jwt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/jwt.ts"],"sourcesContent":["import { decodeJwt, decodeProtectedHeader } from 'jose';\n\nimport type { DecodedIdToken, JWTPayload, JWTProtectedHeader } from './mapDecode';\nimport { mapJwtPayloadToDecodedIdToken } from './mapDecode';\n\ntype JWT = {\n encoded: { header: JWTProtectedHeader; payload: JWTPayload; signature: string };\n decoded: DecodedIdToken;\n};\n\nexport function decode(token: string): JWT {\n const header = decodeProtectedHeader(token);\n const payload = decodeJwt(token);\n\n const parts = (token || '').split('.');\n const [signature] = parts;\n\n const data = {\n header,\n payload,\n signature,\n };\n\n const decoded = mapJwtPayloadToDecodedIdToken(payload);\n\n return {\n encoded: data,\n decoded,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiD;AAGjD,uBAA8C;AAOvC,SAAS,OAAO,OAAoB;AACzC,QAAM,aAAS,mCAAsB,KAAK;AAC1C,QAAM,cAAU,uBAAU,KAAK;AAE/B,QAAM,SAAS,SAAS,IAAI,MAAM,GAAG;AACrC,QAAM,CAAC,SAAS,IAAI;AAEpB,QAAM,OAAO;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,cAAU,gDAA8B,OAAO;AAErD,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,33 @@
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 mapDecode_exports = {};
20
+ __export(mapDecode_exports, {
21
+ mapJwtPayloadToDecodedIdToken: () => mapJwtPayloadToDecodedIdToken
22
+ });
23
+ module.exports = __toCommonJS(mapDecode_exports);
24
+ function mapJwtPayloadToDecodedIdToken(payload) {
25
+ const decodedIdToken = payload;
26
+ decodedIdToken.uid = decodedIdToken.sub;
27
+ return decodedIdToken;
28
+ }
29
+ // Annotate the CommonJS export names for ESM import in node:
30
+ 0 && (module.exports = {
31
+ mapJwtPayloadToDecodedIdToken
32
+ });
33
+ //# sourceMappingURL=mapDecode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/mapDecode.ts"],"sourcesContent":["import type { DecodedIdToken, JWTPayload, JWTProtectedHeader } from '@tern-secure/types';\n\nexport function mapJwtPayloadToDecodedIdToken(payload: JWTPayload) {\n const decodedIdToken = payload as DecodedIdToken;\n decodedIdToken.uid = decodedIdToken.sub;\n return decodedIdToken;\n}\n\nexport type { DecodedIdToken, JWTPayload, JWTProtectedHeader };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,SAAS,8BAA8B,SAAqB;AACjE,QAAM,iBAAiB;AACvB,iBAAe,MAAM,eAAe;AACpC,SAAO;AACT;","names":[]}
@@ -1,6 +1,5 @@
1
- import {
2
- cookieHandler
3
- } from "@tern-secure/shared/cookie";
1
+ import { cookieHandler } from "@tern-secure/shared/cookie";
2
+ import { createIdTokenCookie, createSessionCookie } from "./cookies/session";
4
3
  const CSRF_COOKIE_NAME = "_session_terncf";
5
4
  const CSRF_COOKIE_OPTIONS = {
6
5
  secure: true,
@@ -10,8 +9,12 @@ const CSRF_COOKIE_OPTIONS = {
10
9
  };
11
10
  class AuthCookieManager {
12
11
  csrfCookieHandler = cookieHandler(CSRF_COOKIE_NAME);
12
+ sessionCookie;
13
+ idTokenCookie;
13
14
  constructor() {
14
15
  this.ensureCSRFToken();
16
+ this.sessionCookie = createSessionCookie();
17
+ this.idTokenCookie = createIdTokenCookie();
15
18
  }
16
19
  generateCSRFToken() {
17
20
  const array = new Uint8Array(32);
@@ -28,7 +31,7 @@ class AuthCookieManager {
28
31
  }
29
32
  /**
30
33
  * Set CSRFcookie
31
- */
34
+ */
32
35
  setCSRFToken(token) {
33
36
  try {
34
37
  if (token.token) {
@@ -50,6 +53,12 @@ class AuthCookieManager {
50
53
  return void 0;
51
54
  }
52
55
  }
56
+ getSessionCookie() {
57
+ return this.sessionCookie.get();
58
+ }
59
+ getIdTokenCookie() {
60
+ return this.idTokenCookie.get();
61
+ }
53
62
  /**
54
63
  * Clear all authentication cookies
55
64
  */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/auth/AuthCookieManager.ts"],"sourcesContent":["import type { CookieAttributes } from '@tern-secure/shared/cookie';\nimport { cookieHandler } from '@tern-secure/shared/cookie';\n\nimport type { SessionCookieHandler } from './cookies/session';\nimport { createIdTokenCookie, createSessionCookie } from './cookies/session';\n\nconst CSRF_COOKIE_NAME = '_session_terncf';\n\ntype CSRFToken = {\n token: string | null;\n};\n\ntype CookieOptions = CookieAttributes;\n\nconst CSRF_COOKIE_OPTIONS: CookieOptions = {\n secure: true,\n sameSite: 'strict',\n expires: 1 / 24, //1 hour\n};\n\n/**\n * AuthCookieManger class for managing authentication state and cookies\n */\nexport class AuthCookieManager {\n private readonly csrfCookieHandler = cookieHandler(CSRF_COOKIE_NAME);\n private sessionCookie: SessionCookieHandler;\n private idTokenCookie: SessionCookieHandler;\n\n constructor() {\n this.ensureCSRFToken();\n this.sessionCookie = createSessionCookie();\n this.idTokenCookie = createIdTokenCookie();\n }\n\n private generateCSRFToken(): string {\n const array = new Uint8Array(32);\n crypto.getRandomValues(array);\n return Array.from(array, byte => byte.toString(16).padStart(2, '0')).join('');\n }\n\n private ensureCSRFToken(): string {\n let ctoken = this.getCSRFToken();\n if (!ctoken) {\n ctoken = this.generateCSRFToken();\n this.setCSRFToken({ token: ctoken });\n }\n return ctoken;\n }\n\n /**\n * Set CSRFcookie\n */\n\n setCSRFToken(token: CSRFToken): void {\n try {\n if (token.token) {\n this.csrfCookieHandler.set(token.token, CSRF_COOKIE_OPTIONS);\n }\n } catch (error) {\n console.error('Failed to set CSRF token:', error);\n throw new Error('Unable to store CSRF token');\n }\n }\n\n /**\n * Get CSRF token from cookies\n */\n getCSRFToken(): string | undefined {\n try {\n return this.csrfCookieHandler.get();\n } catch (error) {\n console.error('Failed to get CSRF token:', error);\n return undefined;\n }\n }\n\n public getSessionCookie() {\n return this.sessionCookie.get();\n }\n\n public getIdTokenCookie() {\n return this.idTokenCookie.get();\n }\n\n /**\n * Clear all authentication cookies\n */\n clearAuth(): void {\n try {\n this.csrfCookieHandler.remove();\n } catch (error) {\n console.error('Failed to clear auth cookies:', error);\n }\n }\n}\n"],"mappings":"AACA,SAAS,qBAAqB;AAG9B,SAAS,qBAAqB,2BAA2B;AAEzD,MAAM,mBAAmB;AAQzB,MAAM,sBAAqC;AAAA,EACzC,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,SAAS,IAAI;AAAA;AACf;AAKO,MAAM,kBAAkB;AAAA,EACZ,oBAAoB,cAAc,gBAAgB;AAAA,EAC3D;AAAA,EACA;AAAA,EAER,cAAc;AACZ,SAAK,gBAAgB;AACrB,SAAK,gBAAgB,oBAAoB;AACzC,SAAK,gBAAgB,oBAAoB;AAAA,EAC3C;AAAA,EAEQ,oBAA4B;AAClC,UAAM,QAAQ,IAAI,WAAW,EAAE;AAC/B,WAAO,gBAAgB,KAAK;AAC5B,WAAO,MAAM,KAAK,OAAO,UAAQ,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAAA,EAC9E;AAAA,EAEQ,kBAA0B;AAChC,QAAI,SAAS,KAAK,aAAa;AAC/B,QAAI,CAAC,QAAQ;AACX,eAAS,KAAK,kBAAkB;AAChC,WAAK,aAAa,EAAE,OAAO,OAAO,CAAC;AAAA,IACrC;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAMA,aAAa,OAAwB;AACnC,QAAI;AACF,UAAI,MAAM,OAAO;AACf,aAAK,kBAAkB,IAAI,MAAM,OAAO,mBAAmB;AAAA,MAC7D;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,6BAA6B,KAAK;AAChD,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,eAAmC;AACjC,QAAI;AACF,aAAO,KAAK,kBAAkB,IAAI;AAAA,IACpC,SAAS,OAAO;AACd,cAAQ,MAAM,6BAA6B,KAAK;AAChD,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEO,mBAAmB;AACxB,WAAO,KAAK,cAAc,IAAI;AAAA,EAChC;AAAA,EAEO,mBAAmB;AACxB,WAAO,KAAK,cAAc,IAAI;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,YAAkB;AAChB,QAAI;AACF,WAAK,kBAAkB,OAAO;AAAA,IAChC,SAAS,OAAO;AACd,cAAQ,MAAM,iCAAiC,KAAK;AAAA,IACtD;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,58 @@
1
+ import { cookieHandler, getCookieName, getCookiePrefix } from "@tern-secure/shared/cookie";
2
+ const SESSION_COOKIE_NAME = "__session";
3
+ const ID_TOKEN_COOKIE_NAME = "FIREBASE_[DEFAULT]";
4
+ const REFRESH_TOKEN_COOKIE_NAME = "FIREBASEID_[DEFAULT]";
5
+ const CUSTOM_COOKIE_NAME = "__custom";
6
+ const createSessionCookie = () => {
7
+ const sessionCookie = cookieHandler(SESSION_COOKIE_NAME);
8
+ const set = (token) => {
9
+ sessionCookie.set(token, {
10
+ httpOnly: false,
11
+ secure: true,
12
+ sameSite: "strict",
13
+ path: "/"
14
+ });
15
+ };
16
+ const remove = () => {
17
+ sessionCookie.remove({
18
+ path: "/"
19
+ });
20
+ };
21
+ const get = () => {
22
+ return sessionCookie.get();
23
+ };
24
+ return {
25
+ set,
26
+ remove,
27
+ get
28
+ };
29
+ };
30
+ const createIdTokenCookie = () => {
31
+ const prefix = getCookiePrefix();
32
+ const cookieName = getCookieName(ID_TOKEN_COOKIE_NAME, prefix);
33
+ const sessionCookie = cookieHandler(cookieName);
34
+ const set = (token) => {
35
+ sessionCookie.set(token, {
36
+ httpOnly: false,
37
+ secure: true,
38
+ sameSite: "strict",
39
+ path: "/"
40
+ });
41
+ };
42
+ const remove = () => {
43
+ sessionCookie.remove({
44
+ path: "/"
45
+ });
46
+ };
47
+ const get = () => sessionCookie.get();
48
+ return {
49
+ set,
50
+ remove,
51
+ get
52
+ };
53
+ };
54
+ export {
55
+ createIdTokenCookie,
56
+ createSessionCookie
57
+ };
58
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/auth/cookies/session.ts"],"sourcesContent":["import { cookieHandler, getCookieName, getCookiePrefix } from '@tern-secure/shared/cookie';\n\nconst SESSION_COOKIE_NAME = '__session';\nconst ID_TOKEN_COOKIE_NAME = 'FIREBASE_[DEFAULT]';\nconst REFRESH_TOKEN_COOKIE_NAME = 'FIREBASEID_[DEFAULT]';\nconst CUSTOM_COOKIE_NAME = '__custom';\n\nexport type SessionCookieHandler = {\n set: (token: string) => void;\n remove: () => void;\n get: () => string | undefined;\n};\n\nexport const createSessionCookie = (): SessionCookieHandler => {\n const sessionCookie = cookieHandler(SESSION_COOKIE_NAME);\n\n const set = (token: string) => {\n sessionCookie.set(token, {\n httpOnly: false,\n secure: true,\n sameSite: 'strict',\n path: '/',\n });\n };\n\n const remove = () => {\n sessionCookie.remove({\n path: '/',\n });\n };\n\n const get = () => {\n return sessionCookie.get();\n };\n\n return {\n set,\n remove,\n get,\n };\n};\n\nexport const createIdTokenCookie = (): SessionCookieHandler => {\n const prefix = getCookiePrefix();\n const cookieName = getCookieName(ID_TOKEN_COOKIE_NAME, prefix);\n const sessionCookie = cookieHandler(cookieName);\n\n const set = (token: string) => {\n sessionCookie.set(token, {\n httpOnly: false,\n secure: true,\n sameSite: 'strict',\n path: '/',\n });\n };\n\n const remove = () => {\n sessionCookie.remove({\n path: '/',\n });\n };\n\n const get = () => sessionCookie.get();\n\n return {\n set,\n remove,\n get,\n };\n};\n"],"mappings":"AAAA,SAAS,eAAe,eAAe,uBAAuB;AAE9D,MAAM,sBAAsB;AAC5B,MAAM,uBAAuB;AAC7B,MAAM,4BAA4B;AAClC,MAAM,qBAAqB;AAQpB,MAAM,sBAAsB,MAA4B;AAC7D,QAAM,gBAAgB,cAAc,mBAAmB;AAEvD,QAAM,MAAM,CAAC,UAAkB;AAC7B,kBAAc,IAAI,OAAO;AAAA,MACvB,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,QAAM,SAAS,MAAM;AACnB,kBAAc,OAAO;AAAA,MACnB,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,QAAM,MAAM,MAAM;AAChB,WAAO,cAAc,IAAI;AAAA,EAC3B;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,MAAM,sBAAsB,MAA4B;AAC7D,QAAM,SAAS,gBAAgB;AAC/B,QAAM,aAAa,cAAc,sBAAsB,MAAM;AAC7D,QAAM,gBAAgB,cAAc,UAAU;AAE9C,QAAM,MAAM,CAAC,UAAkB;AAC7B,kBAAc,IAAI,OAAO;AAAA,MACvB,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,QAAM,SAAS,MAAM;AACnB,kBAAc,OAAO;AAAA,MACnB,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,QAAM,MAAM,MAAM,cAAc,IAAI;AAEpC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,134 @@
1
+ import { Cookie } from "../resources/cookie";
2
+ import { UserData } from "../resources/UserData";
3
+ class ClientAuthRequest {
4
+ cookie;
5
+ userData;
6
+ constructor() {
7
+ this.cookie = new Cookie();
8
+ this.userData = new UserData();
9
+ }
10
+ /**
11
+ * Get UserData
12
+ */
13
+ async getUserData() {
14
+ try {
15
+ const response = await this.userData.get();
16
+ if (response == null ? void 0 : response.response) {
17
+ return response.response;
18
+ }
19
+ return null;
20
+ } catch (error) {
21
+ console.error("[ClientAuthRequest] Failed to get user data:", error);
22
+ throw error;
23
+ }
24
+ }
25
+ /**
26
+ * Get ID token from httpOnly cookies
27
+ */
28
+ async getIdTokenFromCookie() {
29
+ try {
30
+ return await this.cookie.getIdToken();
31
+ } catch (error) {
32
+ return {
33
+ success: false,
34
+ error: `Failed to retrieve ID token from cookies: ${error instanceof Error ? error.message : String(error)}`
35
+ };
36
+ }
37
+ }
38
+ /**
39
+ * Get session token from httpOnly cookies
40
+ */
41
+ async getSessionTokenFromCookie() {
42
+ try {
43
+ return await this.cookie.getSessionToken();
44
+ } catch (error) {
45
+ return {
46
+ success: false,
47
+ error: `Failed to retrieve session token from cookies: ${error instanceof Error ? error.message : String(error)}`
48
+ };
49
+ }
50
+ }
51
+ /**
52
+ * Get refresh token from httpOnly cookies
53
+ */
54
+ async getRefreshTokenFromCookie() {
55
+ try {
56
+ return await this.cookie.getRefreshToken();
57
+ } catch (error) {
58
+ return {
59
+ success: false,
60
+ error: `Failed to retrieve refresh token from cookies: ${error instanceof Error ? error.message : String(error)}`
61
+ };
62
+ }
63
+ }
64
+ /**
65
+ * Get custom token from httpOnly cookies
66
+ */
67
+ async getCustomTokenFromCookie() {
68
+ try {
69
+ return await this.cookie.getCustomToken();
70
+ } catch (error) {
71
+ return {
72
+ success: false,
73
+ error: `Failed to retrieve custom token from cookies: ${error instanceof Error ? error.message : String(error)}`
74
+ };
75
+ }
76
+ }
77
+ /**
78
+ * Get all tokens from httpOnly cookies
79
+ */
80
+ async getAllTokensFromCookies() {
81
+ try {
82
+ return await this.cookie.getAllTokens();
83
+ } catch (error) {
84
+ const errorMessage = `Failed to retrieve tokens from cookies: ${error instanceof Error ? error.message : String(error)}`;
85
+ return {
86
+ idToken: { success: false, error: errorMessage },
87
+ sessionToken: { success: false, error: errorMessage },
88
+ refreshToken: { success: false, error: errorMessage },
89
+ customToken: { success: false, error: errorMessage }
90
+ };
91
+ }
92
+ }
93
+ /**
94
+ * Check if a specific token exists in cookies
95
+ */
96
+ async hasTokenInCookie(tokenType) {
97
+ try {
98
+ return await this.cookie.hasToken(tokenType);
99
+ } catch (error) {
100
+ console.error(`[ClientAuthRequest] Failed to check ${tokenType} existence:`, error);
101
+ return false;
102
+ }
103
+ }
104
+ /**
105
+ * Get user data using token from cookies
106
+ * First tries to get ID token from cookies, then uses it for user data request
107
+ */
108
+ async getUserDataWithCookieToken() {
109
+ try {
110
+ const idTokenResult = await this.getIdTokenFromCookie();
111
+ if (!idTokenResult.success || !idTokenResult.token) {
112
+ console.warn("[ClientAuthRequest] No ID token available in cookies for user data request");
113
+ return null;
114
+ }
115
+ const userData = new UserData();
116
+ const response = await userData.get();
117
+ if (response == null ? void 0 : response.response) {
118
+ return response.response;
119
+ }
120
+ return null;
121
+ } catch (error) {
122
+ console.error("[ClientAuthRequest] Failed to get user data with cookie token:", error);
123
+ throw error;
124
+ }
125
+ }
126
+ }
127
+ function createClientAuthRequest() {
128
+ return new ClientAuthRequest();
129
+ }
130
+ export {
131
+ ClientAuthRequest,
132
+ createClientAuthRequest
133
+ };
134
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/auth/request.ts"],"sourcesContent":["import type { TernSecureUserData } from '@tern-secure/types';\n\nimport type { TokenResult } from '../resources/cookie';\nimport { Cookie } from '../resources/cookie';\nimport { UserData } from '../resources/UserData';\n\nexport interface UserDataParams {\n idToken: string;\n}\n\n/**\n * Client-side authentication request functionality\n * Uses backend API calls through the configured apiUrl\n */\nexport class ClientAuthRequest {\n private cookie: Cookie;\n private userData: UserData;\n\n constructor() {\n this.cookie = new Cookie();\n this.userData = new UserData();\n }\n\n /**\n * Get UserData\n */\n async getUserData(): Promise<TernSecureUserData | null> {\n try {\n const response = await this.userData.get();\n\n if (response?.response) {\n return response.response as TernSecureUserData;\n }\n\n return null;\n } catch (error) {\n console.error('[ClientAuthRequest] Failed to get user data:', error);\n throw error;\n }\n }\n\n /**\n * Get ID token from httpOnly cookies\n */\n async getIdTokenFromCookie(): Promise<TokenResult> {\n try {\n return await this.cookie.getIdToken();\n } catch (error) {\n return {\n success: false,\n error: `Failed to retrieve ID token from cookies: ${error instanceof Error ? error.message : String(error)}`,\n };\n }\n }\n\n /**\n * Get session token from httpOnly cookies\n */\n async getSessionTokenFromCookie(): Promise<TokenResult> {\n try {\n return await this.cookie.getSessionToken();\n } catch (error) {\n return {\n success: false,\n error: `Failed to retrieve session token from cookies: ${error instanceof Error ? error.message : String(error)}`,\n };\n }\n }\n\n /**\n * Get refresh token from httpOnly cookies\n */\n async getRefreshTokenFromCookie(): Promise<TokenResult> {\n try {\n return await this.cookie.getRefreshToken();\n } catch (error) {\n return {\n success: false,\n error: `Failed to retrieve refresh token from cookies: ${error instanceof Error ? error.message : String(error)}`,\n };\n }\n }\n\n /**\n * Get custom token from httpOnly cookies\n */\n async getCustomTokenFromCookie(): Promise<TokenResult> {\n try {\n return await this.cookie.getCustomToken();\n } catch (error) {\n return {\n success: false,\n error: `Failed to retrieve custom token from cookies: ${error instanceof Error ? error.message : String(error)}`,\n };\n }\n }\n\n /**\n * Get all tokens from httpOnly cookies\n */\n async getAllTokensFromCookies(): Promise<Record<string, TokenResult>> {\n try {\n return await this.cookie.getAllTokens();\n } catch (error) {\n const errorMessage = `Failed to retrieve tokens from cookies: ${error instanceof Error ? error.message : String(error)}`;\n return {\n idToken: { success: false, error: errorMessage },\n sessionToken: { success: false, error: errorMessage },\n refreshToken: { success: false, error: errorMessage },\n customToken: { success: false, error: errorMessage },\n };\n }\n }\n\n /**\n * Check if a specific token exists in cookies\n */\n async hasTokenInCookie(\n tokenType: 'idToken' | 'sessionToken' | 'refreshToken' | 'customToken',\n ): Promise<boolean> {\n try {\n return await this.cookie.hasToken(tokenType);\n } catch (error) {\n console.error(`[ClientAuthRequest] Failed to check ${tokenType} existence:`, error);\n return false;\n }\n }\n\n /**\n * Get user data using token from cookies\n * First tries to get ID token from cookies, then uses it for user data request\n */\n async getUserDataWithCookieToken(): Promise<TernSecureUserData | null> {\n try {\n const idTokenResult = await this.getIdTokenFromCookie();\n\n if (!idTokenResult.success || !idTokenResult.token) {\n console.warn('[ClientAuthRequest] No ID token available in cookies for user data request');\n return null;\n }\n\n const userData = new UserData();\n const response = await userData.get();\n\n if (response?.response) {\n return response.response as TernSecureUserData;\n }\n\n return null;\n } catch (error) {\n console.error('[ClientAuthRequest] Failed to get user data with cookie token:', error);\n throw error;\n }\n }\n}\n\nexport function createClientAuthRequest(): ClientAuthRequest {\n return new ClientAuthRequest();\n}\n"],"mappings":"AAGA,SAAS,cAAc;AACvB,SAAS,gBAAgB;AAUlB,MAAM,kBAAkB;AAAA,EACrB;AAAA,EACA;AAAA,EAER,cAAc;AACZ,SAAK,SAAS,IAAI,OAAO;AACzB,SAAK,WAAW,IAAI,SAAS;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAkD;AACtD,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,SAAS,IAAI;AAEzC,UAAI,qCAAU,UAAU;AACtB,eAAO,SAAS;AAAA,MAClB;AAEA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,cAAQ,MAAM,gDAAgD,KAAK;AACnE,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,uBAA6C;AACjD,QAAI;AACF,aAAO,MAAM,KAAK,OAAO,WAAW;AAAA,IACtC,SAAS,OAAO;AACd,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,6CAA6C,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,MAC5G;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,4BAAkD;AACtD,QAAI;AACF,aAAO,MAAM,KAAK,OAAO,gBAAgB;AAAA,IAC3C,SAAS,OAAO;AACd,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,kDAAkD,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,MACjH;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,4BAAkD;AACtD,QAAI;AACF,aAAO,MAAM,KAAK,OAAO,gBAAgB;AAAA,IAC3C,SAAS,OAAO;AACd,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,kDAAkD,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,MACjH;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,2BAAiD;AACrD,QAAI;AACF,aAAO,MAAM,KAAK,OAAO,eAAe;AAAA,IAC1C,SAAS,OAAO;AACd,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,iDAAiD,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,MAChH;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,0BAAgE;AACpE,QAAI;AACF,aAAO,MAAM,KAAK,OAAO,aAAa;AAAA,IACxC,SAAS,OAAO;AACd,YAAM,eAAe,2CAA2C,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AACtH,aAAO;AAAA,QACL,SAAS,EAAE,SAAS,OAAO,OAAO,aAAa;AAAA,QAC/C,cAAc,EAAE,SAAS,OAAO,OAAO,aAAa;AAAA,QACpD,cAAc,EAAE,SAAS,OAAO,OAAO,aAAa;AAAA,QACpD,aAAa,EAAE,SAAS,OAAO,OAAO,aAAa;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBACJ,WACkB;AAClB,QAAI;AACF,aAAO,MAAM,KAAK,OAAO,SAAS,SAAS;AAAA,IAC7C,SAAS,OAAO;AACd,cAAQ,MAAM,uCAAuC,SAAS,eAAe,KAAK;AAClF,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,6BAAiE;AACrE,QAAI;AACF,YAAM,gBAAgB,MAAM,KAAK,qBAAqB;AAEtD,UAAI,CAAC,cAAc,WAAW,CAAC,cAAc,OAAO;AAClD,gBAAQ,KAAK,4EAA4E;AACzF,eAAO;AAAA,MACT;AAEA,YAAM,WAAW,IAAI,SAAS;AAC9B,YAAM,WAAW,MAAM,SAAS,IAAI;AAEpC,UAAI,qCAAU,UAAU;AACtB,eAAO,SAAS;AAAA,MAClB;AAEA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,cAAQ,MAAM,kEAAkE,KAAK;AACrF,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEO,SAAS,0BAA6C;AAC3D,SAAO,IAAI,kBAAkB;AAC/B;","names":[]}
package/dist/esm/index.js CHANGED
@@ -1,13 +1,14 @@
1
1
  import { TernSecureAuth } from "./instance/TernAuth";
2
2
  import { TernServerAuth } from "./instance/TernAuthServer";
3
3
  import { CoreApiClient, coreApiClient } from "./instance/coreApiClient";
4
- import { SignIn, TernSecureBase } from "./resources/internal";
4
+ import { SignIn, TernSecureBase, buildURL } from "./resources/internal";
5
5
  export {
6
6
  CoreApiClient,
7
7
  SignIn,
8
8
  TernSecureAuth,
9
9
  TernSecureBase,
10
10
  TernServerAuth,
11
+ buildURL,
11
12
  coreApiClient
12
13
  };
13
14
  //# sourceMappingURL=index.js.map