@tern-secure/shared 1.3.0-canary.v20251108045933 → 1.3.0-canary.v20251125170702
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/chunk-B2SN66XE.mjs +25 -0
- package/dist/chunk-B2SN66XE.mjs.map +1 -0
- package/dist/{chunk-33U3M4YY.mjs → chunk-IGYBIQYE.mjs} +14 -7
- package/dist/chunk-IGYBIQYE.mjs.map +1 -0
- package/dist/chunk-N2V3PKFE.mjs +61 -0
- package/dist/chunk-N2V3PKFE.mjs.map +1 -0
- package/dist/errors.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/errors.mjs +1 -1
- package/dist/errors.mjs.map +1 -1
- package/dist/loadScript.js +68 -6
- package/dist/loadScript.js.map +1 -1
- package/dist/loadScript.mjs +2 -1
- package/dist/loadTernUIScript.d.mts +14 -6
- package/dist/loadTernUIScript.d.ts +14 -6
- package/dist/loadTernUIScript.js +122 -29
- package/dist/loadTernUIScript.js.map +1 -1
- package/dist/loadTernUIScript.mjs +43 -23
- package/dist/loadTernUIScript.mjs.map +1 -1
- package/dist/react/index.d.mts +19 -1
- package/dist/react/index.d.ts +19 -1
- package/dist/react/index.js +26 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +23 -1
- package/dist/react/index.mjs.map +1 -1
- package/dist/resolveVersion.d.mts +2 -1
- package/dist/resolveVersion.d.ts +2 -1
- package/dist/resolveVersion.js +16 -2
- package/dist/resolveVersion.js.map +1 -1
- package/dist/resolveVersion.mjs +3 -1
- package/dist/retry.mjs +3 -56
- package/dist/retry.mjs.map +1 -1
- package/dist/url.d.mts +2 -1
- package/dist/url.d.ts +2 -1
- package/dist/url.js +4 -0
- package/dist/url.js.map +1 -1
- package/dist/url.mjs +3 -0
- package/dist/url.mjs.map +1 -1
- package/package.json +3 -2
- package/dist/chunk-33U3M4YY.mjs.map +0 -1
- package/dist/chunk-PHCVLVZY.mjs +0 -12
- package/dist/chunk-PHCVLVZY.mjs.map +0 -1
package/dist/react/index.mjs
CHANGED
|
@@ -43,7 +43,7 @@ Possible fixes:
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
// src/react/
|
|
46
|
+
// src/react/ternsecureProvider.tsx
|
|
47
47
|
import { useContext as useContext2 } from "react";
|
|
48
48
|
var [TernSecureInstanceContext, useTernSecureInstanceContext] = createContextAndHook("TernSecureInstanceContext");
|
|
49
49
|
var [TernSecureAuthContext, useTernSecureAuthContext] = createContextAndHook("TernSecureAuthContext");
|
|
@@ -71,6 +71,25 @@ var useTernSecure = () => {
|
|
|
71
71
|
useAssertWrappedByTernSecureAuthProvider("useTernSecure");
|
|
72
72
|
return useTernSecureAuthCtx();
|
|
73
73
|
};
|
|
74
|
+
|
|
75
|
+
// src/react/hooks/useDeepEqualMemo.ts
|
|
76
|
+
import { dequal as deepEqual } from "dequal";
|
|
77
|
+
import React2 from "react";
|
|
78
|
+
var useDeepEqualMemoize = (value) => {
|
|
79
|
+
const ref = React2.useRef(value);
|
|
80
|
+
if (!deepEqual(value, ref.current)) {
|
|
81
|
+
ref.current = value;
|
|
82
|
+
}
|
|
83
|
+
return React2.useMemo(() => ref.current, [ref.current]);
|
|
84
|
+
};
|
|
85
|
+
var useDeepEqualMemo = (factory, dependencyArray) => {
|
|
86
|
+
return React2.useMemo(factory, useDeepEqualMemoize(dependencyArray));
|
|
87
|
+
};
|
|
88
|
+
var isDeeplyEqual = deepEqual;
|
|
89
|
+
|
|
90
|
+
// src/react/hooks/useSafeLayoutEffect.tsx
|
|
91
|
+
import React3 from "react";
|
|
92
|
+
var useSafeLayoutEffect = typeof window !== "undefined" ? React3.useLayoutEffect : React3.useEffect;
|
|
74
93
|
export {
|
|
75
94
|
SessionContext,
|
|
76
95
|
TernSecureAuthContext,
|
|
@@ -79,8 +98,11 @@ export {
|
|
|
79
98
|
UserContext,
|
|
80
99
|
assertContextExists,
|
|
81
100
|
createContextAndHook,
|
|
101
|
+
isDeeplyEqual,
|
|
82
102
|
useAssertWrappedByTernSecureAuthProvider,
|
|
83
103
|
useAssertWrappedByTernSecureProvider,
|
|
104
|
+
useDeepEqualMemo,
|
|
105
|
+
useSafeLayoutEffect,
|
|
84
106
|
useSessionContext,
|
|
85
107
|
useTernSecure,
|
|
86
108
|
useTernSecureAuthContext,
|
package/dist/react/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/react/ternSecureAuthProvider.tsx","../../src/react/ternsecureCtx.ts","../../src/react/
|
|
1
|
+
{"version":3,"sources":["../../src/react/ternSecureAuthProvider.tsx","../../src/react/ternsecureCtx.ts","../../src/react/ternsecureProvider.tsx","../../src/react/hooks/useTernSecure.ts","../../src/react/hooks/useDeepEqualMemo.ts","../../src/react/hooks/useSafeLayoutEffect.tsx"],"sourcesContent":["'use client';\n\nimport type { TernSecureAuth } from '@tern-secure/types';\nimport { useContext } from 'react';\n\nimport { createContextAndHook } from './ternsecureCtx';\n\nconst [TernSecureAuthCtx, useTernSecureAuthCtx] =\n createContextAndHook<TernSecureAuth>('TernSecureAuthCtx');\n\nfunction useAssertWrappedByTernSecureAuthProvider(displayNameOrFn: string | (() => void)): void {\n //const ctx = useTernSecureInstanceContext();\n const ctx = useContext(TernSecureAuthCtx);\n\n if (!ctx) {\n if (typeof displayNameOrFn === 'function') {\n displayNameOrFn();\n return;\n }\n\n throw new Error(\n `${displayNameOrFn} can only be used within the <TernSecureProvider /> component.\n \nPossible fixes:\n1. Ensure that the <TernSecureProvider /> is correctly wrapping your application\n2. Check for multiple versions of @tern-secure packages in your project`,\n );\n }\n}\n\nexport { TernSecureAuthCtx, useTernSecureAuthCtx, useAssertWrappedByTernSecureAuthProvider };\n","'use client'\n\nimport React from 'react';\n\n/**\n * Assert that the context value exists, otherwise throw an error.\n *\n * @internal\n */\nexport function assertContextExists(contextVal: unknown, msgOrCtx: string | React.Context<any>): asserts contextVal {\n if (!contextVal) {\n throw typeof msgOrCtx === 'string' ? new Error(msgOrCtx) : new Error(`${msgOrCtx.displayName} not found`);\n }\n}\ntype Options = { assertCtxFn?: (v: unknown, msg: string) => void };\ntype ContextAndHook<T> = React.Context<{ value: T } | undefined>;\ntype UseCtxFn<T> = () => T;\n\n/**\n * Create and return a Context and two hooks that return the context value.\n * The Context type is derived from the type passed in by the user.\n *\n * The first hook returned guarantees that the context exists so the returned value is always `CtxValue`\n * The second hook makes no guarantees, so the returned value can be `CtxValue | undefined`\n *\n * @internal\n */\n\nexport const createContextAndHook = <CtxValue>(\n displayName: string,\n options?: Options,\n): [ContextAndHook<CtxValue>, UseCtxFn<CtxValue>, UseCtxFn<CtxValue | Partial<CtxValue>>] => {\n const { assertCtxFn = assertContextExists } = options || {};\n const Ctx = React.createContext<{ value: CtxValue } | undefined >(undefined);\n Ctx.displayName = displayName;\n\n const useCtx = () => {\n const ctx = React.useContext(Ctx);\n assertCtxFn(ctx, `${displayName} not found`);\n return (ctx as any).value as CtxValue;\n };\n\n const useCtxWithoutGuarantee = () => {\n const ctx = React.useContext(Ctx);\n return ctx ? ctx.value : {}\n };\n\n /**\n * Assert that the context value exists, otherwise throw an error.\n if (ctx === undefined) {\n throw new Error(`use${name} must be used within a ${name}Provider`);\n }\n return ctx.value;\n */\n\n return [Ctx, useCtx, useCtxWithoutGuarantee];\n}","'use client'\n\nimport type { \n TernSecureAuthProvider,\n TernSecureInstanceTree,\n TernSecureState,\n} from '@tern-secure/types';\nimport { useContext } from 'react';\n\nimport { createContextAndHook } from './ternsecureCtx';\n\nexport type TernSecureAuthContextType = {\n authProvider: TernSecureAuthProvider | null | undefined;\n authState: TernSecureState;\n}\n\n\n// Create TernSecure instance context\nconst [TernSecureInstanceContext, useTernSecureInstanceContext] = \n createContextAndHook<TernSecureInstanceTree>('TernSecureInstanceContext');\n\nconst [TernSecureAuthContext, useTernSecureAuthContext] =\n createContextAndHook<TernSecureAuthContextType>('TernSecureAuthContext');\n\nconst [SessionContext, useSessionContext] = \ncreateContextAndHook<TernSecureInstanceTree['auth']['session']>('SessionContext');\n\nconst [UserContext, useUserContext] = \ncreateContextAndHook<TernSecureInstanceTree['auth']['user']>('UserContext');\n\n// Assert helper\nfunction useAssertWrappedByTernSecureProvider(displayNameOrFn: string | (() => void)): void {\n //const ctx = useTernSecureInstanceContext();\n const ctx = useContext(TernSecureInstanceContext);\n \n if (!ctx) {\n if (typeof displayNameOrFn === 'function') {\n displayNameOrFn();\n return;\n }\n\n throw new Error(\n `${displayNameOrFn} can only be used within the <TernSecureProvider /> component.\n \nPossible fixes:\n1. Ensure that the <TernSecureProvider /> is correctly wrapping your application\n2. Check for multiple versions of @tern-secure packages in your project`\n );\n }\n}\n\n\nexport {\n TernSecureInstanceContext,\n TernSecureAuthContext,\n SessionContext,\n UserContext,\n useTernSecureAuthContext,\n useSessionContext,\n useUserContext,\n useTernSecureInstanceContext,\n useAssertWrappedByTernSecureProvider\n};","import type { TernSecureAuth, TernSecureInstanceTree } from '@tern-secure/types';\n\nimport {\n useAssertWrappedByTernSecureAuthProvider,\n useTernSecureAuthCtx,\n} from '../ternSecureAuthProvider';\nimport {\n useAssertWrappedByTernSecureProvider,\n useTernSecureInstanceContext,\n} from '../ternsecureProvider';\n\n/**\n * @deprecated this was a previous version with cdn. now since in this package we dont use cdn, create a new hook that uuses TernSecureAuth and rename this to useTernSecure_Deprecated\n *\n */\nexport const useTernSecure_Deprecated = (): TernSecureInstanceTree => {\n /**\n * if no assertion is needed, you can use the following:\n * const instance = useTernSecureInstanceContext();\n * if (!instance) {\n * throw new Error('useTernSecure must be used within a TernSecureProvider');\n * }\n * return instance;\n */\n\n useAssertWrappedByTernSecureProvider('useTernSecure');\n return useTernSecureInstanceContext();\n};\n\n\n/**\n * New hook that uses TernSecureAuth\n */\nexport const useTernSecure = (): TernSecureAuth => {\n /**\n * if no assertion is needed, you can use the following:\n * const instance = useTernSecureInstanceContext();\n * if (!instance) {\n * throw new Error('useTernSecure must be used within a TernSecureProvider');\n * }\n * return instance;\n */\n\n useAssertWrappedByTernSecureAuthProvider('useTernSecure');\n return useTernSecureAuthCtx();\n};\n","import { dequal as deepEqual } from 'dequal';\nimport React from 'react';\n\ntype UseMemoFactory<T> = () => T;\ntype UseMemoDependencyArray = Exclude<Parameters<typeof React.useMemo>[1], 'undefined'>;\ntype UseDeepEqualMemo = <T>(factory: UseMemoFactory<T>, dependencyArray: UseMemoDependencyArray) => T;\n\nconst useDeepEqualMemoize = <T>(value: T) => {\n const ref = React.useRef<T>(value);\n if (!deepEqual(value, ref.current)) {\n ref.current = value;\n }\n return React.useMemo(() => ref.current, [ref.current]);\n};\n\n/**\n * @internal\n */\nexport const useDeepEqualMemo: UseDeepEqualMemo = (factory, dependencyArray) => {\n return React.useMemo(factory, useDeepEqualMemoize(dependencyArray));\n};\n\n/**\n * @internal\n */\nexport const isDeeplyEqual = deepEqual;\n","import React from 'react';\n\n/**\n * @internal\n */\nexport const useSafeLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n"],"mappings":";AAGA,SAAS,kBAAkB;;;ACD3B,OAAO,WAAW;AAOX,SAAS,oBAAoB,YAAqB,UAA2D;AAClH,MAAI,CAAC,YAAY;AACf,UAAM,OAAO,aAAa,WAAW,IAAI,MAAM,QAAQ,IAAI,IAAI,MAAM,GAAG,SAAS,WAAW,YAAY;AAAA,EAC1G;AACF;AAeO,IAAM,uBAAuB,CAClC,aACA,YAC2F;AAC3F,QAAM,EAAE,cAAc,oBAAoB,IAAI,WAAW,CAAC;AAC1D,QAAM,MAAM,MAAM,cAAgD,MAAS;AAC3E,MAAI,cAAc;AAElB,QAAM,SAAS,MAAM;AACnB,UAAM,MAAM,MAAM,WAAW,GAAG;AAChC,gBAAY,KAAK,GAAG,WAAW,YAAY;AAC3C,WAAQ,IAAY;AAAA,EACtB;AAEA,QAAM,yBAAyB,MAAM;AACnC,UAAM,MAAM,MAAM,WAAW,GAAG;AAChC,WAAO,MAAM,IAAI,QAAQ,CAAC;AAAA,EAC5B;AAUA,SAAO,CAAC,KAAK,QAAQ,sBAAsB;AAC7C;;;ADjDA,IAAM,CAAC,mBAAmB,oBAAoB,IAC5C,qBAAqC,mBAAmB;AAE1D,SAAS,yCAAyC,iBAA8C;AAE9F,QAAM,MAAM,WAAW,iBAAiB;AAExC,MAAI,CAAC,KAAK;AACR,QAAI,OAAO,oBAAoB,YAAY;AACzC,sBAAgB;AAChB;AAAA,IACF;AAEA,UAAM,IAAI;AAAA,MACR,GAAG,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,IAKpB;AAAA,EACF;AACF;;;AErBA,SAAS,cAAAA,mBAAkB;AAW3B,IAAM,CAAC,2BAA2B,4BAA4B,IAC5D,qBAA6C,2BAA2B;AAE1E,IAAM,CAAC,uBAAuB,wBAAwB,IACpD,qBAAgD,uBAAuB;AAEzE,IAAM,CAAC,gBAAgB,iBAAiB,IACxC,qBAAgE,gBAAgB;AAEhF,IAAM,CAAC,aAAa,cAAc,IAClC,qBAA6D,aAAa;AAG1E,SAAS,qCAAqC,iBAA8C;AAE1F,QAAM,MAAMC,YAAW,yBAAyB;AAEhD,MAAI,CAAC,KAAK;AACR,QAAI,OAAO,oBAAoB,YAAY;AACzC,sBAAgB;AAChB;AAAA,IACF;AAEA,UAAM,IAAI;AAAA,MACR,GAAG,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,IAKpB;AAAA,EACF;AACF;;;AChBO,IAAM,gBAAgB,MAAsB;AAUjD,2CAAyC,eAAe;AACxD,SAAO,qBAAqB;AAC9B;;;AC7CA,SAAS,UAAU,iBAAiB;AACpC,OAAOC,YAAW;AAMlB,IAAM,sBAAsB,CAAI,UAAa;AAC3C,QAAM,MAAMA,OAAM,OAAU,KAAK;AACjC,MAAI,CAAC,UAAU,OAAO,IAAI,OAAO,GAAG;AAClC,QAAI,UAAU;AAAA,EAChB;AACA,SAAOA,OAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,IAAI,OAAO,CAAC;AACvD;AAKO,IAAM,mBAAqC,CAAC,SAAS,oBAAoB;AAC9E,SAAOA,OAAM,QAAQ,SAAS,oBAAoB,eAAe,CAAC;AACpE;AAKO,IAAM,gBAAgB;;;ACzB7B,OAAOC,YAAW;AAKX,IAAM,sBAAsB,OAAO,WAAW,cAAcA,OAAM,kBAAkBA,OAAM;","names":["useContext","useContext","React","React"]}
|
package/dist/resolveVersion.d.ts
CHANGED
package/dist/resolveVersion.js
CHANGED
|
@@ -20,17 +20,31 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/resolveVersion.ts
|
|
21
21
|
var resolveVersion_exports = {};
|
|
22
22
|
__export(resolveVersion_exports, {
|
|
23
|
+
getMajorVersion: () => getMajorVersion,
|
|
23
24
|
resolveVersion: () => resolveVersion
|
|
24
25
|
});
|
|
25
26
|
module.exports = __toCommonJS(resolveVersion_exports);
|
|
26
|
-
var resolveVersion = (ternUIVersion, packageVersion =
|
|
27
|
+
var resolveVersion = (ternUIVersion, packageVersion = "1.1.0-canary.v20251125170702") => {
|
|
27
28
|
if (ternUIVersion) {
|
|
28
29
|
return ternUIVersion;
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
+
const prereleaseTag = getPrereleaseTag(packageVersion);
|
|
32
|
+
if (prereleaseTag) {
|
|
33
|
+
if (prereleaseTag === "snapshot") {
|
|
34
|
+
return "1.1.0-canary.v20251125170702";
|
|
35
|
+
}
|
|
36
|
+
return prereleaseTag;
|
|
37
|
+
}
|
|
38
|
+
return getMajorVersion(packageVersion);
|
|
39
|
+
};
|
|
40
|
+
var getPrereleaseTag = (packageVersion) => {
|
|
41
|
+
var _a;
|
|
42
|
+
return (_a = packageVersion.trim().replace(/^v/, "").match(/-(.+?)(\.|$)/)) == null ? void 0 : _a[1];
|
|
31
43
|
};
|
|
44
|
+
var getMajorVersion = (packageVersion) => packageVersion.trim().replace(/^v/, "").split(".")[0];
|
|
32
45
|
// Annotate the CommonJS export names for ESM import in node:
|
|
33
46
|
0 && (module.exports = {
|
|
47
|
+
getMajorVersion,
|
|
34
48
|
resolveVersion
|
|
35
49
|
});
|
|
36
50
|
//# sourceMappingURL=resolveVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/resolveVersion.ts"],"sourcesContent":["\nexport const resolveVersion = (ternUIVersion: string | undefined, packageVersion = TERN_UI_VERSION) => {\n
|
|
1
|
+
{"version":3,"sources":["../src/resolveVersion.ts"],"sourcesContent":["\nexport const resolveVersion = (ternUIVersion: string | undefined, packageVersion = TERN_UI_VERSION) => {\n if (ternUIVersion) {\n return ternUIVersion\n }\n\n const prereleaseTag = getPrereleaseTag(packageVersion);\n if (prereleaseTag) {\n if (prereleaseTag === 'snapshot') {\n return TERN_UI_VERSION;\n }\n\n return prereleaseTag;\n }\n\n return getMajorVersion(packageVersion);\n}\n\nconst getPrereleaseTag = (packageVersion: string) =>\n packageVersion\n .trim()\n .replace(/^v/, '')\n .match(/-(.+?)(\\.|$)/)?.[1];\n\nexport const getMajorVersion = (packageVersion: string) => packageVersion.trim().replace(/^v/, '').split('.')[0];"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,IAAM,iBAAiB,CAAC,eAAmC,iBAAiB,mCAAoB;AACrG,MAAI,eAAe;AACjB,WAAO;AAAA,EACT;AAEA,QAAM,gBAAgB,iBAAiB,cAAc;AACrD,MAAI,eAAe;AACjB,QAAI,kBAAkB,YAAY;AAChC,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAEA,SAAO,gBAAgB,cAAc;AACvC;AAEA,IAAM,mBAAmB,CAAC,mBAAwB;AAlBlD;AAmBE,8BACG,KAAK,EACL,QAAQ,MAAM,EAAE,EAChB,MAAM,cAAc,MAHvB,mBAG2B;AAAA;AAEtB,IAAM,kBAAkB,CAAC,mBAA2B,eAAe,KAAK,EAAE,QAAQ,MAAM,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC;","names":[]}
|
package/dist/resolveVersion.mjs
CHANGED
package/dist/retry.mjs
CHANGED
|
@@ -1,59 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
maxDelayBetweenRetries: 0,
|
|
5
|
-
factor: 2,
|
|
6
|
-
shouldRetry: (_, iteration) => iteration < 5,
|
|
7
|
-
retryImmediately: false,
|
|
8
|
-
jitter: true
|
|
9
|
-
};
|
|
10
|
-
var RETRY_IMMEDIATELY_DELAY = 100;
|
|
11
|
-
var sleep = async (ms) => new Promise((s) => setTimeout(s, ms));
|
|
12
|
-
var applyJitter = (delay, jitter) => {
|
|
13
|
-
return jitter ? delay * (1 + Math.random()) : delay;
|
|
14
|
-
};
|
|
15
|
-
var createExponentialDelayAsyncFn = (opts) => {
|
|
16
|
-
let timesCalled = 0;
|
|
17
|
-
const calculateDelayInMs = () => {
|
|
18
|
-
const constant = opts.initialDelay;
|
|
19
|
-
const base = opts.factor;
|
|
20
|
-
let delay = constant * Math.pow(base, timesCalled);
|
|
21
|
-
delay = applyJitter(delay, opts.jitter);
|
|
22
|
-
return Math.min(opts.maxDelayBetweenRetries || delay, delay);
|
|
23
|
-
};
|
|
24
|
-
return async () => {
|
|
25
|
-
await sleep(calculateDelayInMs());
|
|
26
|
-
timesCalled++;
|
|
27
|
-
};
|
|
28
|
-
};
|
|
29
|
-
var retry = async (callback, options = {}) => {
|
|
30
|
-
let iterations = 0;
|
|
31
|
-
const { shouldRetry, initialDelay, maxDelayBetweenRetries, factor, retryImmediately, jitter } = {
|
|
32
|
-
...defaultOptions,
|
|
33
|
-
...options
|
|
34
|
-
};
|
|
35
|
-
const delay = createExponentialDelayAsyncFn({
|
|
36
|
-
initialDelay,
|
|
37
|
-
maxDelayBetweenRetries,
|
|
38
|
-
factor,
|
|
39
|
-
jitter
|
|
40
|
-
});
|
|
41
|
-
while (true) {
|
|
42
|
-
try {
|
|
43
|
-
return await callback();
|
|
44
|
-
} catch (e) {
|
|
45
|
-
iterations++;
|
|
46
|
-
if (!shouldRetry(e, iterations)) {
|
|
47
|
-
throw e;
|
|
48
|
-
}
|
|
49
|
-
if (retryImmediately && iterations === 1) {
|
|
50
|
-
await sleep(applyJitter(RETRY_IMMEDIATELY_DELAY, jitter));
|
|
51
|
-
} else {
|
|
52
|
-
await delay();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
};
|
|
1
|
+
import {
|
|
2
|
+
retry
|
|
3
|
+
} from "./chunk-N2V3PKFE.mjs";
|
|
57
4
|
export {
|
|
58
5
|
retry
|
|
59
6
|
};
|
package/dist/retry.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/url.d.mts
CHANGED
package/dist/url.d.ts
CHANGED
package/dist/url.js
CHANGED
|
@@ -20,14 +20,18 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/url.ts
|
|
21
21
|
var url_exports = {};
|
|
22
22
|
__export(url_exports, {
|
|
23
|
+
isAbsoluteUrl: () => isAbsoluteUrl,
|
|
23
24
|
stripScheme: () => stripScheme
|
|
24
25
|
});
|
|
25
26
|
module.exports = __toCommonJS(url_exports);
|
|
26
27
|
function stripScheme(url = "") {
|
|
27
28
|
return (url || "").replace(/^.+:\/\//, "");
|
|
28
29
|
}
|
|
30
|
+
var ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\d+\-.]*?:/;
|
|
31
|
+
var isAbsoluteUrl = (url) => ABSOLUTE_URL_REGEX.test(url);
|
|
29
32
|
// Annotate the CommonJS export names for ESM import in node:
|
|
30
33
|
0 && (module.exports = {
|
|
34
|
+
isAbsoluteUrl,
|
|
31
35
|
stripScheme
|
|
32
36
|
});
|
|
33
37
|
//# sourceMappingURL=url.js.map
|
package/dist/url.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/url.ts"],"sourcesContent":["export function stripScheme(url = ''): string {\n return (url || '').replace(/^.+:\\/\\//, '');\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,YAAY,MAAM,IAAY;AAC5C,UAAQ,OAAO,IAAI,QAAQ,YAAY,EAAE;AAC3C;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/url.ts"],"sourcesContent":["export function stripScheme(url = ''): string {\n return (url || '').replace(/^.+:\\/\\//, '');\n}\n\n\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\nexport const isAbsoluteUrl = (url: string) => ABSOLUTE_URL_REGEX.test(url);"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,YAAY,MAAM,IAAY;AAC5C,UAAQ,OAAO,IAAI,QAAQ,YAAY,EAAE;AAC3C;AAKA,IAAM,qBAAqB;AACpB,IAAM,gBAAgB,CAAC,QAAgB,mBAAmB,KAAK,GAAG;","names":[]}
|
package/dist/url.mjs
CHANGED
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
function stripScheme(url = "") {
|
|
3
3
|
return (url || "").replace(/^.+:\/\//, "");
|
|
4
4
|
}
|
|
5
|
+
var ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\d+\-.]*?:/;
|
|
6
|
+
var isAbsoluteUrl = (url) => ABSOLUTE_URL_REGEX.test(url);
|
|
5
7
|
export {
|
|
8
|
+
isAbsoluteUrl,
|
|
6
9
|
stripScheme
|
|
7
10
|
};
|
|
8
11
|
//# sourceMappingURL=url.mjs.map
|
package/dist/url.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/url.ts"],"sourcesContent":["export function stripScheme(url = ''): string {\n return (url || '').replace(/^.+:\\/\\//, '');\n}"],"mappings":";AAAO,SAAS,YAAY,MAAM,IAAY;AAC5C,UAAQ,OAAO,IAAI,QAAQ,YAAY,EAAE;AAC3C;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/url.ts"],"sourcesContent":["export function stripScheme(url = ''): string {\n return (url || '').replace(/^.+:\\/\\//, '');\n}\n\n\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\nexport const isAbsoluteUrl = (url: string) => ABSOLUTE_URL_REGEX.test(url);"],"mappings":";AAAO,SAAS,YAAY,MAAM,IAAY;AAC5C,UAAQ,OAAO,IAAI,QAAQ,YAAY,EAAE;AAC3C;AAKA,IAAM,qBAAqB;AACpB,IAAM,gBAAgB,CAAC,QAAgB,mBAAmB,KAAK,GAAG;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tern-secure/shared",
|
|
3
|
-
"version": "1.3.0-canary.
|
|
3
|
+
"version": "1.3.0-canary.v20251125170702",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/TernSecure/auth.git",
|
|
@@ -90,10 +90,11 @@
|
|
|
90
90
|
"typescript": "^5.7.2"
|
|
91
91
|
},
|
|
92
92
|
"dependencies": {
|
|
93
|
+
"dequal": "2.0.3",
|
|
93
94
|
"glob-to-regexp": "0.4.1",
|
|
94
95
|
"js-cookie": "^3.0.5",
|
|
95
96
|
"tslib": "2.8.1",
|
|
96
|
-
"@tern-secure/types": "1.1.0-canary.
|
|
97
|
+
"@tern-secure/types": "1.1.0-canary.v20251125170702"
|
|
97
98
|
},
|
|
98
99
|
"peerDependencies": {
|
|
99
100
|
"react": "^19.0.0 || ^19.0.0-0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/loadScript.ts"],"sourcesContent":["type LoadScriptOptions = {\n async?: boolean;\n defer?: boolean;\n crossOrigin?: 'anonymous' | 'use-credentials';\n nonce?: string;\n beforeLoad?: (script: HTMLScriptElement) => void;\n };\n\n export async function loadScript(src ='', options: LoadScriptOptions): Promise<HTMLScriptElement> {\n const { async, defer, crossOrigin, nonce, beforeLoad } = options;\n\n const load = () => {\n return new Promise<HTMLScriptElement>((resolve, reject) => {\n if (!src) {\n reject(new Error('Script src is required'));\n }\n\n if (!document || !document.body) {\n reject(new Error('Document body is not available'));\n }\n\n const script = document.createElement('script');\n\n if (crossOrigin) script.setAttribute('crossorigin', crossOrigin);\n script.async = async || false;\n script.defer = defer || false;\n\n let resolved = false;\n let timeoutId: NodeJS.Timeout | null = null;\n\n const cleanup = () => {\n script.removeEventListener('load', handleLoad);\n script.removeEventListener('error', handleError);\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n \n const handleLoad = () => {\n if (resolved) return;\n console.log(`[loadScript] Script loaded successfully: ${src}`);\n\n resolved = true;\n cleanup();\n resolve(script);\n };\n \n const handleError = (error: ErrorEvent) => {\n if (resolved) return;\n resolved = true;\n cleanup();\n script.remove();\n console.error(`[loadScript] Failed to load script: ${src}`, error);\n reject(new Error(`Failed to load script: ${src}, Error: ${error.message}`));\n };\n \n script.addEventListener('load', handleLoad);\n script.addEventListener('error', handleError);\n\n script.src = src;\n script.nonce = nonce;\n beforeLoad?.(script);\n\n console.log(`[loadScript] Appending script to document body: ${src}`);\n document.body.appendChild(script)\n });\n };\n\n return load()\n\n //return retry(load, { shouldRetry: (_, iterations) => iterations <=5 });\n }"],"mappings":";AAQE,eAAsB,WAAW,MAAK,IAAI,SAAwD;AAChG,QAAM,EAAE,OAAO,OAAO,aAAa,OAAO,WAAW,IAAI;AAEzD,QAAM,OAAO,MAAM;AACjB,WAAO,IAAI,QAA2B,CAAC,SAAS,WAAW;AACzD,UAAI,CAAC,KAAK;AACR,eAAO,IAAI,MAAM,wBAAwB,CAAC;AAAA,MAC5C;AAEA,UAAI,CAAC,YAAY,CAAC,SAAS,MAAM;AAC/B,eAAO,IAAI,MAAM,gCAAgC,CAAC;AAAA,MACpD;AAEA,YAAM,SAAS,SAAS,cAAc,QAAQ;AAE9C,UAAI,YAAa,QAAO,aAAa,eAAe,WAAW;AAC/D,aAAO,QAAQ,SAAS;AACxB,aAAO,QAAQ,SAAS;AAExB,UAAI,WAAW;AACf,UAAI,YAAmC;AAEvC,YAAM,UAAU,MAAM;AACpB,eAAO,oBAAoB,QAAQ,UAAU;AAC7C,eAAO,oBAAoB,SAAS,WAAW;AAC/C,YAAI,WAAW;AACb,uBAAa,SAAS;AACtB,sBAAY;AAAA,QACd;AAAA,MACF;AAEA,YAAM,aAAa,MAAM;AACvB,YAAI,SAAU;AACd,gBAAQ,IAAI,4CAA4C,GAAG,EAAE;AAE7D,mBAAW;AACX,gBAAQ;AACR,gBAAQ,MAAM;AAAA,MAChB;AAEA,YAAM,cAAc,CAAC,UAAsB;AACzC,YAAI,SAAU;AACd,mBAAW;AACX,gBAAQ;AACR,eAAO,OAAO;AACd,gBAAQ,MAAM,uCAAuC,GAAG,IAAI,KAAK;AACjE,eAAO,IAAI,MAAM,0BAA0B,GAAG,YAAY,MAAM,OAAO,EAAE,CAAC;AAAA,MAC5E;AAEA,aAAO,iBAAiB,QAAQ,UAAU;AAC1C,aAAO,iBAAiB,SAAS,WAAW;AAE5C,aAAO,MAAM;AACb,aAAO,QAAQ;AACf,+CAAa;AAEb,cAAQ,IAAI,mDAAmD,GAAG,EAAE;AACpE,eAAS,KAAK,YAAY,MAAM;AAAA,IAClC,CAAC;AAAA,EACH;AAEA,SAAO,KAAK;AAGd;","names":[]}
|
package/dist/chunk-PHCVLVZY.mjs
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// src/resolveVersion.ts
|
|
2
|
-
var resolveVersion = (ternUIVersion, packageVersion = TERN_UI_VERSION) => {
|
|
3
|
-
if (ternUIVersion) {
|
|
4
|
-
return ternUIVersion;
|
|
5
|
-
}
|
|
6
|
-
return packageVersion;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
export {
|
|
10
|
-
resolveVersion
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=chunk-PHCVLVZY.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/resolveVersion.ts"],"sourcesContent":["\nexport const resolveVersion = (ternUIVersion: string | undefined, packageVersion = TERN_UI_VERSION) => {\n if (ternUIVersion) {\n return ternUIVersion\n }\n\n return packageVersion;\n}"],"mappings":";AACO,IAAM,iBAAiB,CAAC,eAAmC,iBAAiB,oBAAoB;AACnG,MAAI,eAAe;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AACX;","names":[]}
|