@tern-secure/shared 1.2.0 → 1.2.2

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 (129) hide show
  1. package/dist/browser.d.mts +28 -0
  2. package/dist/browser.d.ts +28 -0
  3. package/dist/browser.js +95 -0
  4. package/dist/browser.js.map +1 -0
  5. package/dist/browser.mjs +66 -0
  6. package/dist/browser.mjs.map +1 -0
  7. package/dist/chunk-2UQ43P4P.mjs +45 -0
  8. package/dist/chunk-2UQ43P4P.mjs.map +1 -0
  9. package/dist/{chunk-HATJQ74R.mjs → chunk-33U3M4YY.mjs} +2 -2
  10. package/dist/chunk-33U3M4YY.mjs.map +1 -0
  11. package/dist/chunk-CGGW4CI3.mjs +265 -0
  12. package/dist/chunk-CGGW4CI3.mjs.map +1 -0
  13. package/dist/{chunk-XCVOYULH.mjs → chunk-PHCVLVZY.mjs} +2 -2
  14. package/dist/{chunk-XCVOYULH.mjs.map → chunk-PHCVLVZY.mjs.map} +1 -1
  15. package/dist/cookie.d.mts +4 -1
  16. package/dist/cookie.d.ts +4 -1
  17. package/dist/cookie.js +35 -2
  18. package/dist/cookie.js.map +1 -1
  19. package/dist/cookie.mjs +33 -1
  20. package/dist/cookie.mjs.map +1 -1
  21. package/dist/derivedAuthState.d.mts +13 -7
  22. package/dist/derivedAuthState.d.ts +13 -7
  23. package/dist/derivedAuthState.js +22 -34
  24. package/dist/derivedAuthState.js.map +1 -1
  25. package/dist/derivedAuthState.mjs +22 -33
  26. package/dist/derivedAuthState.mjs.map +1 -1
  27. package/dist/errors-api.d.mts +49 -0
  28. package/dist/errors-api.d.ts +49 -0
  29. package/dist/errors-api.js +124 -0
  30. package/dist/errors-api.js.map +1 -0
  31. package/dist/errors-api.mjs +91 -0
  32. package/dist/errors-api.mjs.map +1 -0
  33. package/dist/errors.d.mts +17 -0
  34. package/dist/errors.d.ts +17 -0
  35. package/dist/errors.js +139 -0
  36. package/dist/errors.js.map +1 -0
  37. package/dist/errors.mjs +111 -0
  38. package/dist/errors.mjs.map +1 -0
  39. package/dist/eventBus.d.mts +28 -7
  40. package/dist/eventBus.d.ts +28 -7
  41. package/dist/eventBus.js +36 -21
  42. package/dist/eventBus.js.map +1 -1
  43. package/dist/eventBus.mjs +4 -26
  44. package/dist/eventBus.mjs.map +1 -1
  45. package/dist/{types/eventBus.d.ts → eventEmitter.d.mts} +4 -2
  46. package/dist/eventEmitter.d.ts +9 -0
  47. package/dist/eventEmitter.js +57 -0
  48. package/dist/eventEmitter.js.map +1 -0
  49. package/dist/eventEmitter.mjs +32 -0
  50. package/dist/eventEmitter.mjs.map +1 -0
  51. package/dist/loadScript.js +1 -1
  52. package/dist/loadScript.js.map +1 -1
  53. package/dist/loadScript.mjs +1 -1
  54. package/dist/loadTernUIScript.js +5 -3
  55. package/dist/loadTernUIScript.js.map +1 -1
  56. package/dist/loadTernUIScript.mjs +7 -5
  57. package/dist/loadTernUIScript.mjs.map +1 -1
  58. package/dist/pathMatcher.d.mts +14 -0
  59. package/dist/pathMatcher.d.ts +14 -0
  60. package/dist/pathMatcher.js +263 -0
  61. package/dist/pathMatcher.js.map +1 -0
  62. package/dist/pathMatcher.mjs +17 -0
  63. package/dist/pathMatcher.mjs.map +1 -0
  64. package/dist/pathToRegexp.d.mts +81 -0
  65. package/dist/pathToRegexp.d.ts +81 -0
  66. package/dist/pathToRegexp.js +292 -0
  67. package/dist/pathToRegexp.js.map +1 -0
  68. package/dist/pathToRegexp.mjs +9 -0
  69. package/dist/pathToRegexp.mjs.map +1 -0
  70. package/dist/react/index.d.mts +8 -2
  71. package/dist/react/index.d.ts +8 -2
  72. package/dist/react/index.js +28 -2
  73. package/dist/react/index.js.map +1 -1
  74. package/dist/react/index.mjs +25 -2
  75. package/dist/react/index.mjs.map +1 -1
  76. package/dist/resolveVersion.js +1 -1
  77. package/dist/resolveVersion.js.map +1 -1
  78. package/dist/resolveVersion.mjs +1 -1
  79. package/dist/serviceWorker.js +1 -1
  80. package/dist/serviceWorker.js.map +1 -1
  81. package/dist/serviceWorker.mjs +1 -1
  82. package/dist/serviceWorker.mjs.map +1 -1
  83. package/dist/ternStatusEvent.d.mts +15 -0
  84. package/dist/ternStatusEvent.d.ts +15 -0
  85. package/dist/ternStatusEvent.js +81 -0
  86. package/dist/ternStatusEvent.js.map +1 -0
  87. package/dist/ternStatusEvent.mjs +16 -0
  88. package/dist/ternStatusEvent.mjs.map +1 -0
  89. package/dist/url.d.mts +3 -0
  90. package/dist/url.d.ts +3 -0
  91. package/dist/url.js +33 -0
  92. package/dist/url.js.map +1 -0
  93. package/dist/url.mjs +8 -0
  94. package/dist/url.mjs.map +1 -0
  95. package/dist/utils/index.d.mts +5 -0
  96. package/dist/utils/index.d.ts +5 -0
  97. package/dist/utils/index.js +44 -0
  98. package/dist/utils/index.js.map +1 -0
  99. package/dist/utils/index.mjs +17 -0
  100. package/dist/utils/index.mjs.map +1 -0
  101. package/package.json +22 -6
  102. package/dist/chunk-HATJQ74R.mjs.map +0 -1
  103. package/dist/types/cookie.d.ts +0 -12
  104. package/dist/types/cookie.d.ts.map +0 -1
  105. package/dist/types/derivedAuthState.d.ts +0 -7
  106. package/dist/types/derivedAuthState.d.ts.map +0 -1
  107. package/dist/types/eventBus.d.ts.map +0 -1
  108. package/dist/types/loadScript.d.ts +0 -10
  109. package/dist/types/loadScript.d.ts.map +0 -1
  110. package/dist/types/loadTernUIScript.d.ts +0 -20
  111. package/dist/types/loadTernUIScript.d.ts.map +0 -1
  112. package/dist/types/nextjs/client/auth-actions.d.ts +0 -1
  113. package/dist/types/nextjs/client/auth-actions.d.ts.map +0 -1
  114. package/dist/types/react/hooks/index.d.ts +0 -2
  115. package/dist/types/react/hooks/index.d.ts.map +0 -1
  116. package/dist/types/react/hooks/useTernSecure.d.ts +0 -3
  117. package/dist/types/react/hooks/useTernSecure.d.ts.map +0 -1
  118. package/dist/types/react/index.d.ts +0 -4
  119. package/dist/types/react/index.d.ts.map +0 -1
  120. package/dist/types/react/ternsecureCtx.d.ts +0 -26
  121. package/dist/types/react/ternsecureCtx.d.ts.map +0 -1
  122. package/dist/types/react/ternsecureProvider.d.ts +0 -20
  123. package/dist/types/react/ternsecureProvider.d.ts.map +0 -1
  124. package/dist/types/resolveVersion.d.ts +0 -2
  125. package/dist/types/resolveVersion.d.ts.map +0 -1
  126. package/dist/types/retry.d.ts +0 -46
  127. package/dist/types/retry.d.ts.map +0 -1
  128. package/dist/types/serviceWorker.d.ts +0 -12
  129. package/dist/types/serviceWorker.d.ts.map +0 -1
package/dist/cookie.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { CookieStore } from '@tern-secure/types';
2
+
1
3
  type removeCookieParams = {
2
4
  path?: string;
3
5
  domain?: string;
@@ -8,5 +10,6 @@ declare function cookieHandler(cookieNanme: string): {
8
10
  remove(removeCookieParams?: removeCookieParams): void;
9
11
  };
10
12
  type CookieAttributes = Cookies.CookieAttributes;
13
+ declare function serverCookieHandler(response: Response): CookieStore;
11
14
 
12
- export { type CookieAttributes, cookieHandler };
15
+ export { type CookieAttributes, cookieHandler, serverCookieHandler };
package/dist/cookie.js CHANGED
@@ -30,7 +30,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/cookie.ts
31
31
  var cookie_exports = {};
32
32
  __export(cookie_exports, {
33
- cookieHandler: () => cookieHandler
33
+ cookieHandler: () => cookieHandler,
34
+ serverCookieHandler: () => serverCookieHandler
34
35
  });
35
36
  module.exports = __toCommonJS(cookie_exports);
36
37
  var import_js_cookie = __toESM(require("js-cookie"));
@@ -47,8 +48,40 @@ function cookieHandler(cookieNanme) {
47
48
  }
48
49
  };
49
50
  }
51
+ function serverCookieHandler(response) {
52
+ const getCookie = async (name) => {
53
+ const cookies = response.headers.get("cookie");
54
+ if (!cookies) return { value: void 0 };
55
+ const match = cookies.match(new RegExp(`${name}=([^;]+)`));
56
+ return { value: match ? decodeURIComponent(match[1]) : void 0 };
57
+ };
58
+ const setCookie = async (name, value, options = {}) => {
59
+ const { maxAge, httpOnly = true, secure = true, sameSite = "strict", path = "/" } = options;
60
+ let cookieString = `${name}=${encodeURIComponent(value)}`;
61
+ if (maxAge) cookieString += `; Max-Age=${maxAge}`;
62
+ if (httpOnly) cookieString += "; HttpOnly";
63
+ if (secure) cookieString += "; Secure";
64
+ if (sameSite) cookieString += `; SameSite=${sameSite}`;
65
+ if (path) cookieString += `; Path=${path}`;
66
+ response.headers.append("Set-Cookie", cookieString);
67
+ };
68
+ const deleteCookie = async (name) => {
69
+ await setCookie(name, "", {
70
+ maxAge: 0,
71
+ httpOnly: true,
72
+ secure: true,
73
+ path: "/"
74
+ });
75
+ };
76
+ return {
77
+ get: getCookie,
78
+ set: setCookie,
79
+ delete: deleteCookie
80
+ };
81
+ }
50
82
  // Annotate the CommonJS export names for ESM import in node:
51
83
  0 && (module.exports = {
52
- cookieHandler
84
+ cookieHandler,
85
+ serverCookieHandler
53
86
  });
54
87
  //# sourceMappingURL=cookie.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cookie.ts"],"sourcesContent":["import Cookies from 'js-cookie';\n\ntype removeCookieParams = {\n path?: string;\n domain?: string;\n}\n\nexport function cookieHandler(cookieNanme: string) {\n return {\n set(value: string, options: Cookies.CookieAttributes = {}): void {\n Cookies.set(cookieNanme, value, options);\n },\n get() {\n return Cookies.get(cookieNanme);\n },\n remove(removeCookieParams?: removeCookieParams) {\n Cookies.remove(cookieNanme, removeCookieParams)\n }\n }\n}\n\nexport type CookieAttributes = Cookies.CookieAttributes;"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAoB;AAOb,SAAS,cAAc,aAAqB;AAC/C,SAAO;AAAA,IACH,IAAI,OAAe,UAAoC,CAAC,GAAS;AAC7D,uBAAAA,QAAQ,IAAI,aAAa,OAAO,OAAO;AAAA,IAC3C;AAAA,IACA,MAAM;AACF,aAAO,iBAAAA,QAAQ,IAAI,WAAW;AAAA,IAClC;AAAA,IACA,OAAO,oBAAyC;AAC5C,uBAAAA,QAAQ,OAAO,aAAa,kBAAkB;AAAA,IAClD;AAAA,EACJ;AACJ;","names":["Cookies"]}
1
+ {"version":3,"sources":["../src/cookie.ts"],"sourcesContent":["import type { CookieOptions, CookieStore } from '@tern-secure/types';\nimport Cookies from 'js-cookie';\n\ntype removeCookieParams = {\n path?: string;\n domain?: string;\n};\n\nexport function cookieHandler(cookieNanme: string) {\n return {\n set(value: string, options: Cookies.CookieAttributes = {}): void {\n Cookies.set(cookieNanme, value, options);\n },\n get() {\n return Cookies.get(cookieNanme);\n },\n remove(removeCookieParams?: removeCookieParams) {\n Cookies.remove(cookieNanme, removeCookieParams);\n },\n };\n}\n\nexport type CookieAttributes = Cookies.CookieAttributes;\n\nexport function serverCookieHandler(response: Response): CookieStore {\n const getCookie = async (name: string): Promise<{ value: string | undefined }> => {\n const cookies = response.headers.get('cookie');\n if (!cookies) return { value: undefined };\n\n const match = cookies.match(new RegExp(`${name}=([^;]+)`));\n return { value: match ? decodeURIComponent(match[1]) : undefined };\n };\n\n const setCookie = async (\n name: string,\n value: string,\n options: CookieOptions = {},\n ): Promise<void> => {\n const { maxAge, httpOnly = true, secure = true, sameSite = 'strict', path = '/' } = options;\n\n let cookieString = `${name}=${encodeURIComponent(value)}`;\n\n if (maxAge) cookieString += `; Max-Age=${maxAge}`;\n if (httpOnly) cookieString += '; HttpOnly';\n if (secure) cookieString += '; Secure';\n if (sameSite) cookieString += `; SameSite=${sameSite}`;\n if (path) cookieString += `; Path=${path}`;\n\n response.headers.append('Set-Cookie', cookieString);\n };\n\n const deleteCookie = async (name: string): Promise<void> => {\n await setCookie(name, '', {\n maxAge: 0,\n httpOnly: true,\n secure: true,\n path: '/',\n });\n };\n\n return {\n get: getCookie,\n set: setCookie,\n delete: deleteCookie,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,uBAAoB;AAOb,SAAS,cAAc,aAAqB;AACjD,SAAO;AAAA,IACL,IAAI,OAAe,UAAoC,CAAC,GAAS;AAC/D,uBAAAA,QAAQ,IAAI,aAAa,OAAO,OAAO;AAAA,IACzC;AAAA,IACA,MAAM;AACJ,aAAO,iBAAAA,QAAQ,IAAI,WAAW;AAAA,IAChC;AAAA,IACA,OAAO,oBAAyC;AAC9C,uBAAAA,QAAQ,OAAO,aAAa,kBAAkB;AAAA,IAChD;AAAA,EACF;AACF;AAIO,SAAS,oBAAoB,UAAiC;AACnE,QAAM,YAAY,OAAO,SAAyD;AAChF,UAAM,UAAU,SAAS,QAAQ,IAAI,QAAQ;AAC7C,QAAI,CAAC,QAAS,QAAO,EAAE,OAAO,OAAU;AAExC,UAAM,QAAQ,QAAQ,MAAM,IAAI,OAAO,GAAG,IAAI,UAAU,CAAC;AACzD,WAAO,EAAE,OAAO,QAAQ,mBAAmB,MAAM,CAAC,CAAC,IAAI,OAAU;AAAA,EACnE;AAEA,QAAM,YAAY,OAChB,MACA,OACA,UAAyB,CAAC,MACR;AAClB,UAAM,EAAE,QAAQ,WAAW,MAAM,SAAS,MAAM,WAAW,UAAU,OAAO,IAAI,IAAI;AAEpF,QAAI,eAAe,GAAG,IAAI,IAAI,mBAAmB,KAAK,CAAC;AAEvD,QAAI,OAAQ,iBAAgB,aAAa,MAAM;AAC/C,QAAI,SAAU,iBAAgB;AAC9B,QAAI,OAAQ,iBAAgB;AAC5B,QAAI,SAAU,iBAAgB,cAAc,QAAQ;AACpD,QAAI,KAAM,iBAAgB,UAAU,IAAI;AAExC,aAAS,QAAQ,OAAO,cAAc,YAAY;AAAA,EACpD;AAEA,QAAM,eAAe,OAAO,SAAgC;AAC1D,UAAM,UAAU,MAAM,IAAI;AAAA,MACxB,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AACF;","names":["Cookies"]}
package/dist/cookie.mjs CHANGED
@@ -13,7 +13,39 @@ function cookieHandler(cookieNanme) {
13
13
  }
14
14
  };
15
15
  }
16
+ function serverCookieHandler(response) {
17
+ const getCookie = async (name) => {
18
+ const cookies = response.headers.get("cookie");
19
+ if (!cookies) return { value: void 0 };
20
+ const match = cookies.match(new RegExp(`${name}=([^;]+)`));
21
+ return { value: match ? decodeURIComponent(match[1]) : void 0 };
22
+ };
23
+ const setCookie = async (name, value, options = {}) => {
24
+ const { maxAge, httpOnly = true, secure = true, sameSite = "strict", path = "/" } = options;
25
+ let cookieString = `${name}=${encodeURIComponent(value)}`;
26
+ if (maxAge) cookieString += `; Max-Age=${maxAge}`;
27
+ if (httpOnly) cookieString += "; HttpOnly";
28
+ if (secure) cookieString += "; Secure";
29
+ if (sameSite) cookieString += `; SameSite=${sameSite}`;
30
+ if (path) cookieString += `; Path=${path}`;
31
+ response.headers.append("Set-Cookie", cookieString);
32
+ };
33
+ const deleteCookie = async (name) => {
34
+ await setCookie(name, "", {
35
+ maxAge: 0,
36
+ httpOnly: true,
37
+ secure: true,
38
+ path: "/"
39
+ });
40
+ };
41
+ return {
42
+ get: getCookie,
43
+ set: setCookie,
44
+ delete: deleteCookie
45
+ };
46
+ }
16
47
  export {
17
- cookieHandler
48
+ cookieHandler,
49
+ serverCookieHandler
18
50
  };
19
51
  //# sourceMappingURL=cookie.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cookie.ts"],"sourcesContent":["import Cookies from 'js-cookie';\n\ntype removeCookieParams = {\n path?: string;\n domain?: string;\n}\n\nexport function cookieHandler(cookieNanme: string) {\n return {\n set(value: string, options: Cookies.CookieAttributes = {}): void {\n Cookies.set(cookieNanme, value, options);\n },\n get() {\n return Cookies.get(cookieNanme);\n },\n remove(removeCookieParams?: removeCookieParams) {\n Cookies.remove(cookieNanme, removeCookieParams)\n }\n }\n}\n\nexport type CookieAttributes = Cookies.CookieAttributes;"],"mappings":";AAAA,OAAO,aAAa;AAOb,SAAS,cAAc,aAAqB;AAC/C,SAAO;AAAA,IACH,IAAI,OAAe,UAAoC,CAAC,GAAS;AAC7D,cAAQ,IAAI,aAAa,OAAO,OAAO;AAAA,IAC3C;AAAA,IACA,MAAM;AACF,aAAO,QAAQ,IAAI,WAAW;AAAA,IAClC;AAAA,IACA,OAAO,oBAAyC;AAC5C,cAAQ,OAAO,aAAa,kBAAkB;AAAA,IAClD;AAAA,EACJ;AACJ;","names":[]}
1
+ {"version":3,"sources":["../src/cookie.ts"],"sourcesContent":["import type { CookieOptions, CookieStore } from '@tern-secure/types';\nimport Cookies from 'js-cookie';\n\ntype removeCookieParams = {\n path?: string;\n domain?: string;\n};\n\nexport function cookieHandler(cookieNanme: string) {\n return {\n set(value: string, options: Cookies.CookieAttributes = {}): void {\n Cookies.set(cookieNanme, value, options);\n },\n get() {\n return Cookies.get(cookieNanme);\n },\n remove(removeCookieParams?: removeCookieParams) {\n Cookies.remove(cookieNanme, removeCookieParams);\n },\n };\n}\n\nexport type CookieAttributes = Cookies.CookieAttributes;\n\nexport function serverCookieHandler(response: Response): CookieStore {\n const getCookie = async (name: string): Promise<{ value: string | undefined }> => {\n const cookies = response.headers.get('cookie');\n if (!cookies) return { value: undefined };\n\n const match = cookies.match(new RegExp(`${name}=([^;]+)`));\n return { value: match ? decodeURIComponent(match[1]) : undefined };\n };\n\n const setCookie = async (\n name: string,\n value: string,\n options: CookieOptions = {},\n ): Promise<void> => {\n const { maxAge, httpOnly = true, secure = true, sameSite = 'strict', path = '/' } = options;\n\n let cookieString = `${name}=${encodeURIComponent(value)}`;\n\n if (maxAge) cookieString += `; Max-Age=${maxAge}`;\n if (httpOnly) cookieString += '; HttpOnly';\n if (secure) cookieString += '; Secure';\n if (sameSite) cookieString += `; SameSite=${sameSite}`;\n if (path) cookieString += `; Path=${path}`;\n\n response.headers.append('Set-Cookie', cookieString);\n };\n\n const deleteCookie = async (name: string): Promise<void> => {\n await setCookie(name, '', {\n maxAge: 0,\n httpOnly: true,\n secure: true,\n path: '/',\n });\n };\n\n return {\n get: getCookie,\n set: setCookie,\n delete: deleteCookie,\n };\n}\n"],"mappings":";AACA,OAAO,aAAa;AAOb,SAAS,cAAc,aAAqB;AACjD,SAAO;AAAA,IACL,IAAI,OAAe,UAAoC,CAAC,GAAS;AAC/D,cAAQ,IAAI,aAAa,OAAO,OAAO;AAAA,IACzC;AAAA,IACA,MAAM;AACJ,aAAO,QAAQ,IAAI,WAAW;AAAA,IAChC;AAAA,IACA,OAAO,oBAAyC;AAC9C,cAAQ,OAAO,aAAa,kBAAkB;AAAA,IAChD;AAAA,EACF;AACF;AAIO,SAAS,oBAAoB,UAAiC;AACnE,QAAM,YAAY,OAAO,SAAyD;AAChF,UAAM,UAAU,SAAS,QAAQ,IAAI,QAAQ;AAC7C,QAAI,CAAC,QAAS,QAAO,EAAE,OAAO,OAAU;AAExC,UAAM,QAAQ,QAAQ,MAAM,IAAI,OAAO,GAAG,IAAI,UAAU,CAAC;AACzD,WAAO,EAAE,OAAO,QAAQ,mBAAmB,MAAM,CAAC,CAAC,IAAI,OAAU;AAAA,EACnE;AAEA,QAAM,YAAY,OAChB,MACA,OACA,UAAyB,CAAC,MACR;AAClB,UAAM,EAAE,QAAQ,WAAW,MAAM,SAAS,MAAM,WAAW,UAAU,OAAO,IAAI,IAAI;AAEpF,QAAI,eAAe,GAAG,IAAI,IAAI,mBAAmB,KAAK,CAAC;AAEvD,QAAI,OAAQ,iBAAgB,aAAa,MAAM;AAC/C,QAAI,SAAU,iBAAgB;AAC9B,QAAI,OAAQ,iBAAgB;AAC5B,QAAI,SAAU,iBAAgB,cAAc,QAAQ;AACpD,QAAI,KAAM,iBAAgB,UAAU,IAAI;AAExC,aAAS,QAAQ,OAAO,cAAc,YAAY;AAAA,EACpD;AAEA,QAAM,eAAe,OAAO,SAAgC;AAC1D,UAAM,UAAU,MAAM,IAAI;AAAA,MACxB,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AACF;","names":[]}
@@ -1,9 +1,15 @@
1
- import { TernSecureState } from '@tern-secure/types';
1
+ import { TernSecureResources, InitialState, TernSecureUser } from '@tern-secure/types';
2
2
 
3
- /**
4
- * Default state for derived auth state
5
- */
6
- declare const DEFAULT_TERN_SECURE_STATE: TernSecureState;
7
- declare const deriveAuthState: (internalState: TernSecureState | undefined) => TernSecureState;
3
+ declare const deriveAuthState: (authState: TernSecureResources, initialState: InitialState | undefined) => {
4
+ userId: string | null;
5
+ token: any;
6
+ email: string | null;
7
+ user: TernSecureUser;
8
+ } | {
9
+ userId: string | null | undefined;
10
+ token: Promise<string> | null;
11
+ email: string | null;
12
+ user: TernSecureUser | null | undefined;
13
+ };
8
14
 
9
- export { DEFAULT_TERN_SECURE_STATE, deriveAuthState };
15
+ export { deriveAuthState };
@@ -1,9 +1,15 @@
1
- import { TernSecureState } from '@tern-secure/types';
1
+ import { TernSecureResources, InitialState, TernSecureUser } from '@tern-secure/types';
2
2
 
3
- /**
4
- * Default state for derived auth state
5
- */
6
- declare const DEFAULT_TERN_SECURE_STATE: TernSecureState;
7
- declare const deriveAuthState: (internalState: TernSecureState | undefined) => TernSecureState;
3
+ declare const deriveAuthState: (authState: TernSecureResources, initialState: InitialState | undefined) => {
4
+ userId: string | null;
5
+ token: any;
6
+ email: string | null;
7
+ user: TernSecureUser;
8
+ } | {
9
+ userId: string | null | undefined;
10
+ token: Promise<string> | null;
11
+ email: string | null;
12
+ user: TernSecureUser | null | undefined;
13
+ };
8
14
 
9
- export { DEFAULT_TERN_SECURE_STATE, deriveAuthState };
15
+ export { deriveAuthState };
@@ -20,53 +20,41 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/derivedAuthState.ts
21
21
  var derivedAuthState_exports = {};
22
22
  __export(derivedAuthState_exports, {
23
- DEFAULT_TERN_SECURE_STATE: () => DEFAULT_TERN_SECURE_STATE,
24
23
  deriveAuthState: () => deriveAuthState
25
24
  });
26
25
  module.exports = __toCommonJS(derivedAuthState_exports);
27
- var DEFAULT_TERN_SECURE_STATE = {
28
- userId: null,
29
- isLoaded: false,
30
- error: null,
31
- isValid: false,
32
- isVerified: false,
33
- isAuthenticated: false,
34
- token: null,
35
- email: null,
36
- status: "loading",
37
- user: null
38
- };
39
- var deriveAuthState = (internalState) => {
40
- if (!internalState) {
41
- console.warn("[deriveAuthState] internalState is undefined or null. Returning default state.");
42
- return DEFAULT_TERN_SECURE_STATE;
26
+ var deriveAuthState = (authState, initialState) => {
27
+ if (initialState) {
28
+ return fromInitialState(initialState);
43
29
  }
44
- const userId = internalState.userId || null;
45
- const isLoaded = internalState.isLoaded || false;
46
- const isValid = internalState.isValid || false;
47
- const isVerified = internalState.isVerified || false;
48
- const isAuthenticated = internalState.isAuthenticated || false;
49
- const token = internalState.token || null;
50
- const email = internalState.email || null;
51
- const error = internalState.error || null;
52
- const status = internalState.status || "loading";
53
- const user = internalState.user || null;
30
+ return fromClientSideState(authState);
31
+ };
32
+ var fromInitialState = (initialState) => {
33
+ const userId = initialState.userId;
34
+ const token = initialState.token;
35
+ const email = initialState.email;
36
+ const user = initialState.user;
37
+ return {
38
+ userId,
39
+ token,
40
+ email,
41
+ user
42
+ };
43
+ };
44
+ var fromClientSideState = (authState) => {
45
+ const userId = authState.user ? authState.user.uid : authState.user;
46
+ const token = authState.user ? authState.user.getIdToken() : null;
47
+ const email = authState.user ? authState.user.email : null;
48
+ const user = authState.user;
54
49
  return {
55
50
  userId,
56
- isLoaded,
57
- isValid,
58
- isVerified,
59
- isAuthenticated,
60
51
  token,
61
52
  email,
62
- error,
63
- status,
64
53
  user
65
54
  };
66
55
  };
67
56
  // Annotate the CommonJS export names for ESM import in node:
68
57
  0 && (module.exports = {
69
- DEFAULT_TERN_SECURE_STATE,
70
58
  deriveAuthState
71
59
  });
72
60
  //# sourceMappingURL=derivedAuthState.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/derivedAuthState.ts"],"sourcesContent":["import { \n TernSecureState,\n TernSecureUser\n //DEFAULT_TERN_SECURE_STATE\n} from \"@tern-secure/types\";\n\n\n/**\n * Default state for derived auth state\n */\n//export const DEFAULT_DERIVED_AUTH_STATE = DEFAULT_TERN_SECURE_STATE\n\nexport const DEFAULT_TERN_SECURE_STATE: TernSecureState = {\n userId: null,\n isLoaded: false,\n error: null,\n isValid: false,\n isVerified: false,\n isAuthenticated: false,\n token: null,\n email: null,\n status: \"loading\",\n user: null\n};\n\n\nexport const deriveAuthState = (internalState: TernSecureState | undefined ): TernSecureState => {\n \n if (!internalState) {\n console.warn('[deriveAuthState] internalState is undefined or null. Returning default state.');\n return DEFAULT_TERN_SECURE_STATE\n }\n\n const userId = internalState.userId || null;\n const isLoaded = internalState.isLoaded || false;\n const isValid = internalState.isValid || false;\n const isVerified = internalState.isVerified || false;\n const isAuthenticated = internalState.isAuthenticated || false;\n const token = internalState.token || null;\n const email = internalState.email || null;\n const error = internalState.error || null;\n const status = internalState.status || \"loading\";\n const user = internalState.user || null;\n\n return {\n userId,\n isLoaded,\n isValid,\n isVerified,\n isAuthenticated,\n token,\n email,\n error,\n status,\n user\n }\n};"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYO,IAAM,4BAA6C;AAAA,EACxD,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AACR;AAGO,IAAM,kBAAkB,CAAC,kBAAiE;AAE/F,MAAI,CAAC,eAAe;AAClB,YAAQ,KAAK,gFAAgF;AAC7F,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,cAAc,UAAU;AACvC,QAAM,WAAW,cAAc,YAAY;AAC3C,QAAM,UAAU,cAAc,WAAW;AACzC,QAAM,aAAa,cAAc,cAAc;AAC/C,QAAM,kBAAkB,cAAc,mBAAmB;AACzD,QAAM,QAAQ,cAAc,SAAS;AACrC,QAAM,QAAQ,cAAc,SAAS;AACrC,QAAM,QAAQ,cAAc,SAAS;AACrC,QAAM,SAAS,cAAc,UAAU;AACvC,QAAM,OAAO,cAAc,QAAQ;AAEnC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/derivedAuthState.ts"],"sourcesContent":["import type { \n InitialState,\n TernSecureResources,\n TernSecureUser,\n} from \"@tern-secure/types\";\n\n\nexport const deriveAuthState = (authState: TernSecureResources, initialState: InitialState | undefined ) => {\n if (initialState) {\n return fromInitialState(initialState);\n }\n return fromClientSideState(authState);\n};\n\nconst fromInitialState = (initialState: InitialState) => {\n const userId = initialState.userId;\n const token = initialState.token;\n const email = initialState.email;\n const user = initialState.user as TernSecureUser;\n \n return {\n userId,\n token,\n email,\n user\n }\n}\n\n\nconst fromClientSideState = (authState: TernSecureResources) => {\n const userId: string | null | undefined = authState.user ? authState.user.uid : authState.user;\n const token = authState.user ? authState.user.getIdToken() : null;\n const email = authState.user ? authState.user.email : null;\n const user = authState.user;\n\n return {\n userId,\n token,\n email,\n user\n };\n};"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOO,IAAM,kBAAkB,CAAC,WAAgC,iBAA4C;AAC1G,MAAI,cAAc;AAChB,WAAO,iBAAiB,YAAY;AAAA,EACtC;AACA,SAAO,oBAAoB,SAAS;AACtC;AAEA,IAAM,mBAAmB,CAAC,iBAA+B;AACvD,QAAM,SAAS,aAAa;AAC5B,QAAM,QAAQ,aAAa;AAC3B,QAAM,QAAQ,aAAa;AAC3B,QAAM,OAAO,aAAa;AAE1B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAGA,IAAM,sBAAsB,CAAC,cAAmC;AAC9D,QAAM,SAAoC,UAAU,OAAO,UAAU,KAAK,MAAM,UAAU;AAC1F,QAAM,QAAQ,UAAU,OAAO,UAAU,KAAK,WAAW,IAAI;AAC7D,QAAM,QAAQ,UAAU,OAAO,UAAU,KAAK,QAAQ;AACtD,QAAM,OAAO,UAAU;AAEvB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -1,46 +1,35 @@
1
1
  // src/derivedAuthState.ts
2
- var DEFAULT_TERN_SECURE_STATE = {
3
- userId: null,
4
- isLoaded: false,
5
- error: null,
6
- isValid: false,
7
- isVerified: false,
8
- isAuthenticated: false,
9
- token: null,
10
- email: null,
11
- status: "loading",
12
- user: null
13
- };
14
- var deriveAuthState = (internalState) => {
15
- if (!internalState) {
16
- console.warn("[deriveAuthState] internalState is undefined or null. Returning default state.");
17
- return DEFAULT_TERN_SECURE_STATE;
2
+ var deriveAuthState = (authState, initialState) => {
3
+ if (initialState) {
4
+ return fromInitialState(initialState);
18
5
  }
19
- const userId = internalState.userId || null;
20
- const isLoaded = internalState.isLoaded || false;
21
- const isValid = internalState.isValid || false;
22
- const isVerified = internalState.isVerified || false;
23
- const isAuthenticated = internalState.isAuthenticated || false;
24
- const token = internalState.token || null;
25
- const email = internalState.email || null;
26
- const error = internalState.error || null;
27
- const status = internalState.status || "loading";
28
- const user = internalState.user || null;
6
+ return fromClientSideState(authState);
7
+ };
8
+ var fromInitialState = (initialState) => {
9
+ const userId = initialState.userId;
10
+ const token = initialState.token;
11
+ const email = initialState.email;
12
+ const user = initialState.user;
13
+ return {
14
+ userId,
15
+ token,
16
+ email,
17
+ user
18
+ };
19
+ };
20
+ var fromClientSideState = (authState) => {
21
+ const userId = authState.user ? authState.user.uid : authState.user;
22
+ const token = authState.user ? authState.user.getIdToken() : null;
23
+ const email = authState.user ? authState.user.email : null;
24
+ const user = authState.user;
29
25
  return {
30
26
  userId,
31
- isLoaded,
32
- isValid,
33
- isVerified,
34
- isAuthenticated,
35
27
  token,
36
28
  email,
37
- error,
38
- status,
39
29
  user
40
30
  };
41
31
  };
42
32
  export {
43
- DEFAULT_TERN_SECURE_STATE,
44
33
  deriveAuthState
45
34
  };
46
35
  //# sourceMappingURL=derivedAuthState.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/derivedAuthState.ts"],"sourcesContent":["import { \n TernSecureState,\n TernSecureUser\n //DEFAULT_TERN_SECURE_STATE\n} from \"@tern-secure/types\";\n\n\n/**\n * Default state for derived auth state\n */\n//export const DEFAULT_DERIVED_AUTH_STATE = DEFAULT_TERN_SECURE_STATE\n\nexport const DEFAULT_TERN_SECURE_STATE: TernSecureState = {\n userId: null,\n isLoaded: false,\n error: null,\n isValid: false,\n isVerified: false,\n isAuthenticated: false,\n token: null,\n email: null,\n status: \"loading\",\n user: null\n};\n\n\nexport const deriveAuthState = (internalState: TernSecureState | undefined ): TernSecureState => {\n \n if (!internalState) {\n console.warn('[deriveAuthState] internalState is undefined or null. Returning default state.');\n return DEFAULT_TERN_SECURE_STATE\n }\n\n const userId = internalState.userId || null;\n const isLoaded = internalState.isLoaded || false;\n const isValid = internalState.isValid || false;\n const isVerified = internalState.isVerified || false;\n const isAuthenticated = internalState.isAuthenticated || false;\n const token = internalState.token || null;\n const email = internalState.email || null;\n const error = internalState.error || null;\n const status = internalState.status || \"loading\";\n const user = internalState.user || null;\n\n return {\n userId,\n isLoaded,\n isValid,\n isVerified,\n isAuthenticated,\n token,\n email,\n error,\n status,\n user\n }\n};"],"mappings":";AAYO,IAAM,4BAA6C;AAAA,EACxD,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AACR;AAGO,IAAM,kBAAkB,CAAC,kBAAiE;AAE/F,MAAI,CAAC,eAAe;AAClB,YAAQ,KAAK,gFAAgF;AAC7F,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,cAAc,UAAU;AACvC,QAAM,WAAW,cAAc,YAAY;AAC3C,QAAM,UAAU,cAAc,WAAW;AACzC,QAAM,aAAa,cAAc,cAAc;AAC/C,QAAM,kBAAkB,cAAc,mBAAmB;AACzD,QAAM,QAAQ,cAAc,SAAS;AACrC,QAAM,QAAQ,cAAc,SAAS;AACrC,QAAM,QAAQ,cAAc,SAAS;AACrC,QAAM,SAAS,cAAc,UAAU;AACvC,QAAM,OAAO,cAAc,QAAQ;AAEnC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/derivedAuthState.ts"],"sourcesContent":["import type { \n InitialState,\n TernSecureResources,\n TernSecureUser,\n} from \"@tern-secure/types\";\n\n\nexport const deriveAuthState = (authState: TernSecureResources, initialState: InitialState | undefined ) => {\n if (initialState) {\n return fromInitialState(initialState);\n }\n return fromClientSideState(authState);\n};\n\nconst fromInitialState = (initialState: InitialState) => {\n const userId = initialState.userId;\n const token = initialState.token;\n const email = initialState.email;\n const user = initialState.user as TernSecureUser;\n \n return {\n userId,\n token,\n email,\n user\n }\n}\n\n\nconst fromClientSideState = (authState: TernSecureResources) => {\n const userId: string | null | undefined = authState.user ? authState.user.uid : authState.user;\n const token = authState.user ? authState.user.getIdToken() : null;\n const email = authState.user ? authState.user.email : null;\n const user = authState.user;\n\n return {\n userId,\n token,\n email,\n user\n };\n};"],"mappings":";AAOO,IAAM,kBAAkB,CAAC,WAAgC,iBAA4C;AAC1G,MAAI,cAAc;AAChB,WAAO,iBAAiB,YAAY;AAAA,EACtC;AACA,SAAO,oBAAoB,SAAS;AACtC;AAEA,IAAM,mBAAmB,CAAC,iBAA+B;AACvD,QAAM,SAAS,aAAa;AAC5B,QAAM,QAAQ,aAAa;AAC3B,QAAM,QAAQ,aAAa;AAC3B,QAAM,OAAO,aAAa;AAE1B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAGA,IAAM,sBAAsB,CAAC,cAAmC;AAC9D,QAAM,SAAoC,UAAU,OAAO,UAAU,KAAK,MAAM,UAAU;AAC1F,QAAM,QAAQ,UAAU,OAAO,UAAU,KAAK,WAAW,IAAI;AAC7D,QAAM,QAAQ,UAAU,OAAO,UAAU,KAAK,QAAQ;AACtD,QAAM,OAAO,UAAU;AAEvB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,49 @@
1
+ import { TernSecureAPIError, TernSecureApiErrorJSON } from '@tern-secure/types';
2
+
3
+ declare function isUnauthorizedError(e: any): boolean;
4
+ declare function isCaptchaError(e: TernSecureAPIResponseError): boolean;
5
+ declare function is4xxError(e: any): boolean;
6
+ declare function isNetworkError(e: any): boolean;
7
+ declare function parseErrors(data?: TernSecureApiErrorJSON[]): TernSecureAPIError[];
8
+ declare function parseError(error: TernSecureApiErrorJSON): TernSecureAPIError;
9
+ declare function errorToJSON(error: TernSecureAPIError | null): TernSecureApiErrorJSON;
10
+ interface TernSecureAPIResponseOptions {
11
+ data: TernSecureApiErrorJSON[];
12
+ status: number;
13
+ retryAfter?: number;
14
+ }
15
+ declare class TernSecureAPIResponseError extends Error {
16
+ ternSecureError: true;
17
+ status: number;
18
+ message: string;
19
+ retryAfter?: number;
20
+ errors: TernSecureAPIError[];
21
+ constructor(message: string, { data, status, retryAfter }: TernSecureAPIResponseOptions);
22
+ toString: () => string;
23
+ }
24
+ declare class TernSecureRuntimeError extends Error {
25
+ ternSecureRuntimeError: true;
26
+ /**
27
+ * The error message.
28
+ *
29
+ * @type {string}
30
+ */
31
+ message: string;
32
+ /**
33
+ * A unique code identifying the error, can be used for localization.
34
+ *
35
+ * @type {string}
36
+ */
37
+ code: string;
38
+ constructor(message: string, { code }: {
39
+ code: string;
40
+ });
41
+ /**
42
+ * Returns a string representation of the error.
43
+ *
44
+ * @returns {string} A formatted string with the error name and message.
45
+ */
46
+ toString: () => string;
47
+ }
48
+
49
+ export { TernSecureAPIResponseError, TernSecureRuntimeError, errorToJSON, is4xxError, isCaptchaError, isNetworkError, isUnauthorizedError, parseError, parseErrors };
@@ -0,0 +1,49 @@
1
+ import { TernSecureAPIError, TernSecureApiErrorJSON } from '@tern-secure/types';
2
+
3
+ declare function isUnauthorizedError(e: any): boolean;
4
+ declare function isCaptchaError(e: TernSecureAPIResponseError): boolean;
5
+ declare function is4xxError(e: any): boolean;
6
+ declare function isNetworkError(e: any): boolean;
7
+ declare function parseErrors(data?: TernSecureApiErrorJSON[]): TernSecureAPIError[];
8
+ declare function parseError(error: TernSecureApiErrorJSON): TernSecureAPIError;
9
+ declare function errorToJSON(error: TernSecureAPIError | null): TernSecureApiErrorJSON;
10
+ interface TernSecureAPIResponseOptions {
11
+ data: TernSecureApiErrorJSON[];
12
+ status: number;
13
+ retryAfter?: number;
14
+ }
15
+ declare class TernSecureAPIResponseError extends Error {
16
+ ternSecureError: true;
17
+ status: number;
18
+ message: string;
19
+ retryAfter?: number;
20
+ errors: TernSecureAPIError[];
21
+ constructor(message: string, { data, status, retryAfter }: TernSecureAPIResponseOptions);
22
+ toString: () => string;
23
+ }
24
+ declare class TernSecureRuntimeError extends Error {
25
+ ternSecureRuntimeError: true;
26
+ /**
27
+ * The error message.
28
+ *
29
+ * @type {string}
30
+ */
31
+ message: string;
32
+ /**
33
+ * A unique code identifying the error, can be used for localization.
34
+ *
35
+ * @type {string}
36
+ */
37
+ code: string;
38
+ constructor(message: string, { code }: {
39
+ code: string;
40
+ });
41
+ /**
42
+ * Returns a string representation of the error.
43
+ *
44
+ * @returns {string} A formatted string with the error name and message.
45
+ */
46
+ toString: () => string;
47
+ }
48
+
49
+ export { TernSecureAPIResponseError, TernSecureRuntimeError, errorToJSON, is4xxError, isCaptchaError, isNetworkError, isUnauthorizedError, parseError, parseErrors };
@@ -0,0 +1,124 @@
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
+
20
+ // src/errors-api.ts
21
+ var errors_api_exports = {};
22
+ __export(errors_api_exports, {
23
+ TernSecureAPIResponseError: () => TernSecureAPIResponseError,
24
+ TernSecureRuntimeError: () => TernSecureRuntimeError,
25
+ errorToJSON: () => errorToJSON,
26
+ is4xxError: () => is4xxError,
27
+ isCaptchaError: () => isCaptchaError,
28
+ isNetworkError: () => isNetworkError,
29
+ isUnauthorizedError: () => isUnauthorizedError,
30
+ parseError: () => parseError,
31
+ parseErrors: () => parseErrors
32
+ });
33
+ module.exports = __toCommonJS(errors_api_exports);
34
+ function isUnauthorizedError(e) {
35
+ var _a, _b;
36
+ const status = e == null ? void 0 : e.status;
37
+ const code = (_b = (_a = e == null ? void 0 : e.errors) == null ? void 0 : _a[0]) == null ? void 0 : _b.code;
38
+ return code === "authentication_invalid" && status === 401;
39
+ }
40
+ function isCaptchaError(e) {
41
+ return ["captcha_invalid", "captcha_not_enabled", "captcha_missing_token"].includes(e.errors[0].code);
42
+ }
43
+ function is4xxError(e) {
44
+ const status = e == null ? void 0 : e.status;
45
+ return !!status && status >= 400 && status < 500;
46
+ }
47
+ function isNetworkError(e) {
48
+ const message = (`${e.message}${e.name}` || "").toLowerCase().replace(/\s+/g, "");
49
+ return message.includes("networkerror");
50
+ }
51
+ function parseErrors(data = []) {
52
+ return data.length > 0 ? data.map(parseError) : [];
53
+ }
54
+ function parseError(error) {
55
+ return {
56
+ code: error.code,
57
+ message: error.message
58
+ };
59
+ }
60
+ function errorToJSON(error) {
61
+ return {
62
+ code: (error == null ? void 0 : error.code) || "",
63
+ message: (error == null ? void 0 : error.message) || ""
64
+ };
65
+ }
66
+ var TernSecureAPIResponseError = class _TernSecureAPIResponseError extends Error {
67
+ constructor(message, { data, status, retryAfter }) {
68
+ super(message);
69
+ this.toString = () => {
70
+ const message = `[${this.name}]
71
+ Message:${this.message}
72
+ Status:${this.status}
73
+ Serialized errors: ${this.errors.map(
74
+ (e) => JSON.stringify(e)
75
+ )}`;
76
+ return message;
77
+ };
78
+ Object.setPrototypeOf(this, _TernSecureAPIResponseError.prototype);
79
+ this.status = status;
80
+ this.message = message;
81
+ this.retryAfter = retryAfter;
82
+ this.ternSecureError = true;
83
+ this.errors = parseErrors(data);
84
+ }
85
+ };
86
+ var TernSecureRuntimeError = class _TernSecureRuntimeError extends Error {
87
+ constructor(message, { code }) {
88
+ const prefix = "\u{1F512} TernSecure:";
89
+ const regex = new RegExp(prefix.replace(" ", "\\s*"), "i");
90
+ const sanitized = message.replace(regex, "");
91
+ const _message = `${prefix} ${sanitized.trim()}
92
+
93
+ (code="${code}")
94
+ `;
95
+ super(_message);
96
+ /**
97
+ * Returns a string representation of the error.
98
+ *
99
+ * @returns {string} A formatted string with the error name and message.
100
+ */
101
+ this.toString = () => {
102
+ return `[${this.name}]
103
+ Message:${this.message}`;
104
+ };
105
+ Object.setPrototypeOf(this, _TernSecureRuntimeError.prototype);
106
+ this.code = code;
107
+ this.message = _message;
108
+ this.ternSecureRuntimeError = true;
109
+ this.name = "TernSecureRuntimeError";
110
+ }
111
+ };
112
+ // Annotate the CommonJS export names for ESM import in node:
113
+ 0 && (module.exports = {
114
+ TernSecureAPIResponseError,
115
+ TernSecureRuntimeError,
116
+ errorToJSON,
117
+ is4xxError,
118
+ isCaptchaError,
119
+ isNetworkError,
120
+ isUnauthorizedError,
121
+ parseError,
122
+ parseErrors
123
+ });
124
+ //# sourceMappingURL=errors-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors-api.ts"],"sourcesContent":["import type { TernSecureAPIError, TernSecureApiErrorJSON} from \"@tern-secure/types\";\n\nexport function isUnauthorizedError(e: any): boolean {\n const status = e?.status;\n const code = e?.errors?.[0]?.code;\n return code === 'authentication_invalid' && status === 401;\n}\n\nexport function isCaptchaError(e: TernSecureAPIResponseError): boolean {\n return ['captcha_invalid', 'captcha_not_enabled', 'captcha_missing_token'].includes(e.errors[0].code);\n}\n\nexport function is4xxError(e: any): boolean {\n const status = e?.status;\n return !!status && status >= 400 && status < 500;\n}\n\nexport function isNetworkError(e: any): boolean {\n // TODO: revise during error handling epic\n const message = (`${e.message}${e.name}` || '').toLowerCase().replace(/\\s+/g, '');\n return message.includes('networkerror');\n}\n\nexport function parseErrors(data: TernSecureApiErrorJSON[] = []): TernSecureAPIError[] {\n return data.length > 0 ? data.map(parseError) : [];\n}\n\n\nexport function parseError(error: TernSecureApiErrorJSON): TernSecureAPIError {\n return {\n code: error.code,\n message: error.message,\n };\n}\n\nexport function errorToJSON(error: TernSecureAPIError | null): TernSecureApiErrorJSON {\n return {\n code: error?.code || '',\n message: error?.message || '',\n };\n}\n\ninterface TernSecureAPIResponseOptions {\n data: TernSecureApiErrorJSON[];\n status: number;\n retryAfter?: number;\n}\n\n\n\nexport class TernSecureAPIResponseError extends Error {\n ternSecureError: true;\n\n status: number;\n message: string;\n retryAfter?: number;\n\n errors: TernSecureAPIError[];\n\n constructor(message: string, { data, status, retryAfter }: TernSecureAPIResponseOptions) {\n super(message);\n\n Object.setPrototypeOf(this, TernSecureAPIResponseError.prototype);\n\n this.status = status;\n this.message = message;\n this.retryAfter = retryAfter;\n this.ternSecureError = true;\n this.errors = parseErrors(data);\n }\n\n public toString = () => {\n const message = `[${this.name}]\\nMessage:${this.message}\\nStatus:${this.status}\\nSerialized errors: ${this.errors.map(\n e => JSON.stringify(e),\n )}`;\n\n return message;\n };\n}\n\n\n\nexport class TernSecureRuntimeError extends Error {\n ternSecureRuntimeError: true;\n\n /**\n * The error message.\n *\n * @type {string}\n */\n message: string;\n\n /**\n * A unique code identifying the error, can be used for localization.\n *\n * @type {string}\n */\n code: string;\n\n constructor(message: string, { code }: { code: string }) {\n const prefix = '🔒 TernSecure:';\n const regex = new RegExp(prefix.replace(' ', '\\\\s*'), 'i');\n const sanitized = message.replace(regex, '');\n const _message = `${prefix} ${sanitized.trim()}\\n\\n(code=\"${code}\")\\n`;\n super(_message);\n\n Object.setPrototypeOf(this, TernSecureRuntimeError.prototype);\n\n this.code = code;\n this.message = _message;\n this.ternSecureRuntimeError = true;\n this.name = 'TernSecureRuntimeError';\n }\n\n /**\n * Returns a string representation of the error.\n *\n * @returns {string} A formatted string with the error name and message.\n */\n public toString = () => {\n return `[${this.name}]\\nMessage:${this.message}`;\n };\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,SAAS,oBAAoB,GAAiB;AAFrD;AAGE,QAAM,SAAS,uBAAG;AAClB,QAAM,QAAO,kCAAG,WAAH,mBAAY,OAAZ,mBAAgB;AAC7B,SAAO,SAAS,4BAA4B,WAAW;AACzD;AAEO,SAAS,eAAe,GAAwC;AACrE,SAAO,CAAC,mBAAmB,uBAAuB,uBAAuB,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,IAAI;AACtG;AAEO,SAAS,WAAW,GAAiB;AAC1C,QAAM,SAAS,uBAAG;AAClB,SAAO,CAAC,CAAC,UAAU,UAAU,OAAO,SAAS;AAC/C;AAEO,SAAS,eAAe,GAAiB;AAE9C,QAAM,WAAW,GAAG,EAAE,OAAO,GAAG,EAAE,IAAI,MAAM,IAAI,YAAY,EAAE,QAAQ,QAAQ,EAAE;AAChF,SAAO,QAAQ,SAAS,cAAc;AACxC;AAEO,SAAS,YAAY,OAAiC,CAAC,GAAyB;AACrF,SAAO,KAAK,SAAS,IAAI,KAAK,IAAI,UAAU,IAAI,CAAC;AACnD;AAGO,SAAS,WAAW,OAAmD;AAC5E,SAAO;AAAA,IACL,MAAM,MAAM;AAAA,IACZ,SAAS,MAAM;AAAA,EACjB;AACF;AAEO,SAAS,YAAY,OAA0D;AACpF,SAAO;AAAA,IACL,OAAM,+BAAO,SAAQ;AAAA,IACrB,UAAS,+BAAO,YAAW;AAAA,EAC7B;AACF;AAUO,IAAM,6BAAN,MAAM,oCAAmC,MAAM;AAAA,EASpD,YAAY,SAAiB,EAAE,MAAM,QAAQ,WAAW,GAAiC;AACvF,UAAM,OAAO;AAWf,SAAO,WAAW,MAAM;AACtB,YAAM,UAAU,IAAI,KAAK,IAAI;AAAA,UAAc,KAAK,OAAO;AAAA,SAAY,KAAK,MAAM;AAAA,qBAAwB,KAAK,OAAO;AAAA,QAChH,OAAK,KAAK,UAAU,CAAC;AAAA,MACvB,CAAC;AAED,aAAO;AAAA,IACT;AAfE,WAAO,eAAe,MAAM,4BAA2B,SAAS;AAEhE,SAAK,SAAS;AACd,SAAK,UAAU;AACf,SAAK,aAAa;AAClB,SAAK,kBAAkB;AACvB,SAAK,SAAS,YAAY,IAAI;AAAA,EAChC;AASF;AAIO,IAAM,yBAAN,MAAM,gCAA+B,MAAM;AAAA,EAiBhD,YAAY,SAAiB,EAAE,KAAK,GAAqB;AACvD,UAAM,SAAS;AACf,UAAM,QAAQ,IAAI,OAAO,OAAO,QAAQ,KAAK,MAAM,GAAG,GAAG;AACzD,UAAM,YAAY,QAAQ,QAAQ,OAAO,EAAE;AAC3C,UAAM,WAAW,GAAG,MAAM,IAAI,UAAU,KAAK,CAAC;AAAA;AAAA,SAAc,IAAI;AAAA;AAChE,UAAM,QAAQ;AAehB;AAAA;AAAA;AAAA;AAAA;AAAA,SAAO,WAAW,MAAM;AACtB,aAAO,IAAI,KAAK,IAAI;AAAA,UAAc,KAAK,OAAO;AAAA,IAChD;AAfE,WAAO,eAAe,MAAM,wBAAuB,SAAS;AAE5D,SAAK,OAAO;AACZ,SAAK,UAAU;AACf,SAAK,yBAAyB;AAC9B,SAAK,OAAO;AAAA,EACd;AAUF;","names":[]}