@tern-secure/shared 1.2.0 → 1.2.1
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.
- package/dist/browser.d.mts +28 -0
- package/dist/browser.d.ts +28 -0
- package/dist/browser.js +95 -0
- package/dist/browser.js.map +1 -0
- package/dist/browser.mjs +66 -0
- package/dist/browser.mjs.map +1 -0
- package/dist/chunk-2UQ43P4P.mjs +45 -0
- package/dist/chunk-2UQ43P4P.mjs.map +1 -0
- package/dist/{chunk-HATJQ74R.mjs → chunk-33U3M4YY.mjs} +2 -2
- package/dist/chunk-33U3M4YY.mjs.map +1 -0
- package/dist/chunk-CGGW4CI3.mjs +265 -0
- package/dist/chunk-CGGW4CI3.mjs.map +1 -0
- package/dist/{chunk-XCVOYULH.mjs → chunk-PHCVLVZY.mjs} +2 -2
- package/dist/{chunk-XCVOYULH.mjs.map → chunk-PHCVLVZY.mjs.map} +1 -1
- package/dist/cookie.d.mts +4 -1
- package/dist/cookie.d.ts +4 -1
- package/dist/cookie.js +35 -2
- package/dist/cookie.js.map +1 -1
- package/dist/cookie.mjs +33 -1
- package/dist/cookie.mjs.map +1 -1
- package/dist/derivedAuthState.d.mts +13 -7
- package/dist/derivedAuthState.d.ts +13 -7
- package/dist/derivedAuthState.js +22 -34
- package/dist/derivedAuthState.js.map +1 -1
- package/dist/derivedAuthState.mjs +22 -33
- package/dist/derivedAuthState.mjs.map +1 -1
- package/dist/errors-api.d.mts +49 -0
- package/dist/errors-api.d.ts +49 -0
- package/dist/errors-api.js +124 -0
- package/dist/errors-api.js.map +1 -0
- package/dist/errors-api.mjs +91 -0
- package/dist/errors-api.mjs.map +1 -0
- package/dist/errors.d.mts +17 -0
- package/dist/errors.d.ts +17 -0
- package/dist/errors.js +139 -0
- package/dist/errors.js.map +1 -0
- package/dist/errors.mjs +111 -0
- package/dist/errors.mjs.map +1 -0
- package/dist/eventBus.d.mts +28 -7
- package/dist/eventBus.d.ts +28 -7
- package/dist/eventBus.js +36 -21
- package/dist/eventBus.js.map +1 -1
- package/dist/eventBus.mjs +4 -26
- package/dist/eventBus.mjs.map +1 -1
- package/dist/{types/eventBus.d.ts → eventEmitter.d.mts} +4 -2
- package/dist/eventEmitter.d.ts +9 -0
- package/dist/eventEmitter.js +57 -0
- package/dist/eventEmitter.js.map +1 -0
- package/dist/eventEmitter.mjs +32 -0
- package/dist/eventEmitter.mjs.map +1 -0
- package/dist/loadScript.js +1 -1
- package/dist/loadScript.js.map +1 -1
- package/dist/loadScript.mjs +1 -1
- package/dist/loadTernUIScript.js +5 -3
- package/dist/loadTernUIScript.js.map +1 -1
- package/dist/loadTernUIScript.mjs +7 -5
- package/dist/loadTernUIScript.mjs.map +1 -1
- package/dist/pathMatcher.d.mts +14 -0
- package/dist/pathMatcher.d.ts +14 -0
- package/dist/pathMatcher.js +263 -0
- package/dist/pathMatcher.js.map +1 -0
- package/dist/pathMatcher.mjs +17 -0
- package/dist/pathMatcher.mjs.map +1 -0
- package/dist/pathToRegexp.d.mts +81 -0
- package/dist/pathToRegexp.d.ts +81 -0
- package/dist/pathToRegexp.js +292 -0
- package/dist/pathToRegexp.js.map +1 -0
- package/dist/pathToRegexp.mjs +9 -0
- package/dist/pathToRegexp.mjs.map +1 -0
- package/dist/react/index.d.mts +8 -2
- package/dist/react/index.d.ts +8 -2
- package/dist/react/index.js +28 -2
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +25 -2
- package/dist/react/index.mjs.map +1 -1
- package/dist/resolveVersion.js +1 -1
- package/dist/resolveVersion.js.map +1 -1
- package/dist/resolveVersion.mjs +1 -1
- package/dist/serviceWorker.js +1 -1
- package/dist/serviceWorker.js.map +1 -1
- package/dist/serviceWorker.mjs +1 -1
- package/dist/serviceWorker.mjs.map +1 -1
- package/dist/ternStatusEvent.d.mts +15 -0
- package/dist/ternStatusEvent.d.ts +15 -0
- package/dist/ternStatusEvent.js +81 -0
- package/dist/ternStatusEvent.js.map +1 -0
- package/dist/ternStatusEvent.mjs +16 -0
- package/dist/ternStatusEvent.mjs.map +1 -0
- package/dist/url.d.mts +3 -0
- package/dist/url.d.ts +3 -0
- package/dist/url.js +33 -0
- package/dist/url.js.map +1 -0
- package/dist/url.mjs +8 -0
- package/dist/url.mjs.map +1 -0
- package/dist/utils/index.d.mts +5 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.js +44 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.mjs +17 -0
- package/dist/utils/index.mjs.map +1 -0
- package/package.json +22 -6
- package/dist/chunk-HATJQ74R.mjs.map +0 -1
- package/dist/types/cookie.d.ts +0 -12
- package/dist/types/cookie.d.ts.map +0 -1
- package/dist/types/derivedAuthState.d.ts +0 -7
- package/dist/types/derivedAuthState.d.ts.map +0 -1
- package/dist/types/eventBus.d.ts.map +0 -1
- package/dist/types/loadScript.d.ts +0 -10
- package/dist/types/loadScript.d.ts.map +0 -1
- package/dist/types/loadTernUIScript.d.ts +0 -20
- package/dist/types/loadTernUIScript.d.ts.map +0 -1
- package/dist/types/nextjs/client/auth-actions.d.ts +0 -1
- package/dist/types/nextjs/client/auth-actions.d.ts.map +0 -1
- package/dist/types/react/hooks/index.d.ts +0 -2
- package/dist/types/react/hooks/index.d.ts.map +0 -1
- package/dist/types/react/hooks/useTernSecure.d.ts +0 -3
- package/dist/types/react/hooks/useTernSecure.d.ts.map +0 -1
- package/dist/types/react/index.d.ts +0 -4
- package/dist/types/react/index.d.ts.map +0 -1
- package/dist/types/react/ternsecureCtx.d.ts +0 -26
- package/dist/types/react/ternsecureCtx.d.ts.map +0 -1
- package/dist/types/react/ternsecureProvider.d.ts +0 -20
- package/dist/types/react/ternsecureProvider.d.ts.map +0 -1
- package/dist/types/resolveVersion.d.ts +0 -2
- package/dist/types/resolveVersion.d.ts.map +0 -1
- package/dist/types/retry.d.ts +0 -46
- package/dist/types/retry.d.ts.map +0 -1
- package/dist/types/serviceWorker.d.ts +0 -12
- 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
|
package/dist/cookie.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cookie.ts"],"sourcesContent":["import Cookies from 'js-cookie';\n\ntype removeCookieParams = {\n
|
|
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
|
package/dist/cookie.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cookie.ts"],"sourcesContent":["import Cookies from 'js-cookie';\n\ntype removeCookieParams = {\n
|
|
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 {
|
|
1
|
+
import { TernSecureResources, InitialState, TernSecureUser } from '@tern-secure/types';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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 {
|
|
15
|
+
export { deriveAuthState };
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TernSecureResources, InitialState, TernSecureUser } from '@tern-secure/types';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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 {
|
|
15
|
+
export { deriveAuthState };
|
package/dist/derivedAuthState.js
CHANGED
|
@@ -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
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
|
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
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
|
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":[]}
|