@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.
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
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/index.ts","../../src/react/ternsecureProvider.tsx","../../src/react/ternsecureCtx.ts","../../src/react/hooks/useTernSecure.ts"],"sourcesContent":["export * from './hooks'\n\nexport {\n useAssertWrappedByTernSecureProvider,\n useTernSecureInstanceContext,\n useTernSecureAuthContext,\n useSessionContext,\n useUserContext,\n SessionContext,\n UserContext,\n TernSecureAuthContext,\n TernSecureInstanceContext\n} from './ternsecureProvider'\n\nexport {\n assertContextExists,\n createContextAndHook\n} from './ternsecureCtx'","'use client'\n\nimport { useContext } from 'react';\nimport type { \n TernSecureAuthProvider,\n TernSecureInstanceTree,\n TernSecureState,\n} from '@tern-secure/types';\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};","'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}","import type { \n TernSecureInstanceTree\n} from \"@tern-secure/types\";\nimport { \n useAssertWrappedByTernSecureProvider, \n useTernSecureInstanceContext \n} from \"../ternsecureProvider\";\n\nexport const useTernSecure = (): 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}"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,IAAAA,gBAA2B;;;ACA3B,mBAAkB;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,aAAAC,QAAM,cAAgD,MAAS;AAC3E,MAAI,cAAc;AAElB,QAAM,SAAS,MAAM;AACnB,UAAM,MAAM,aAAAA,QAAM,WAAW,GAAG;AAChC,gBAAY,KAAK,GAAG,WAAW,YAAY;AAC3C,WAAQ,IAAY;AAAA,EACtB;AAEA,QAAM,yBAAyB,MAAM;AACnC,UAAM,MAAM,aAAAA,QAAM,WAAW,GAAG;AAChC,WAAO,MAAM,IAAI,QAAQ,CAAC;AAAA,EAC5B;AAUA,SAAO,CAAC,KAAK,QAAQ,sBAAsB;AAC7C;;;ADvCA,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,UAAM,0BAAW,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;;;AExCO,IAAM,gBAAgB,MAA8B;AAUvD,uCAAqC,eAAe;AACpD,SAAO,6BAA6B;AACxC;","names":["import_react","React"]}
1
+ {"version":3,"sources":["../../src/react/index.ts","../../src/react/ternSecureProvider.tsx","../../src/react/ternsecureCtx.ts","../../src/react/hooks/useTernSecure.ts","../../src/react/ternSecureAuthProvider.tsx"],"sourcesContent":["export * from './hooks'\n\nexport {\n useAssertWrappedByTernSecureProvider,\n useTernSecureInstanceContext,\n useTernSecureAuthContext,\n useSessionContext,\n useUserContext,\n SessionContext,\n UserContext,\n TernSecureAuthContext,\n TernSecureInstanceContext\n} from './ternSecureProvider'\n\nexport {\n assertContextExists,\n createContextAndHook\n} from './ternsecureCtx'\n\nexport {\n TernSecureAuthCtx,\n useTernSecureAuthCtx,\n useAssertWrappedByTernSecureAuthProvider\n} from './ternSecureAuthProvider'","'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};","'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}","import type { \n TernSecureInstanceTree\n} from \"@tern-secure/types\";\n\nimport { \n useAssertWrappedByTernSecureProvider, \n useTernSecureInstanceContext \n} from \"../ternSecureProvider\";\n\nexport const useTernSecure = (): 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}","'use client'\n\nimport type { \n TernSecureAuth,\n} from '@tern-secure/types';\nimport { useContext } from 'react';\n\nimport { createContextAndHook } from './ternsecureCtx';\n\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\n\n\nexport {\n TernSecureAuthCtx,\n useTernSecureAuthCtx,\n useAssertWrappedByTernSecureAuthProvider,\n};"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACOA,IAAAA,gBAA2B;;;ACL3B,mBAAkB;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,aAAAC,QAAM,cAAgD,MAAS;AAC3E,MAAI,cAAc;AAElB,QAAM,SAAS,MAAM;AACnB,UAAM,MAAM,aAAAA,QAAM,WAAW,GAAG;AAChC,gBAAY,KAAK,GAAG,WAAW,YAAY;AAC3C,WAAQ,IAAY;AAAA,EACtB;AAEA,QAAM,yBAAyB,MAAM;AACnC,UAAM,MAAM,aAAAA,QAAM,WAAW,GAAG;AAChC,WAAO,MAAM,IAAI,QAAQ,CAAC;AAAA,EAC5B;AAUA,SAAO,CAAC,KAAK,QAAQ,sBAAsB;AAC7C;;;ADtCA,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,UAAM,0BAAW,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;;;AExCO,IAAM,gBAAgB,MAA8B;AAUvD,uCAAqC,eAAe;AACpD,SAAO,6BAA6B;AACxC;;;AChBA,IAAAC,gBAA2B;AAK3B,IAAM,CAAC,mBAAmB,oBAAoB,IAC5C,qBAAqC,mBAAmB;AAE1D,SAAS,yCAAyC,iBAA8C;AAE9F,QAAM,UAAM,0BAAW,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;","names":["import_react","React","import_react"]}
@@ -1,4 +1,4 @@
1
- // src/react/ternsecureProvider.tsx
1
+ // src/react/ternSecureProvider.tsx
2
2
  import { useContext } from "react";
3
3
 
4
4
  // src/react/ternsecureCtx.ts
@@ -24,7 +24,7 @@ var createContextAndHook = (displayName, options) => {
24
24
  return [Ctx, useCtx, useCtxWithoutGuarantee];
25
25
  };
26
26
 
27
- // src/react/ternsecureProvider.tsx
27
+ // src/react/ternSecureProvider.tsx
28
28
  var [TernSecureInstanceContext, useTernSecureInstanceContext] = createContextAndHook("TernSecureInstanceContext");
29
29
  var [TernSecureAuthContext, useTernSecureAuthContext] = createContextAndHook("TernSecureAuthContext");
30
30
  var [SessionContext, useSessionContext] = createContextAndHook("SessionContext");
@@ -51,17 +51,40 @@ var useTernSecure = () => {
51
51
  useAssertWrappedByTernSecureProvider("useTernSecure");
52
52
  return useTernSecureInstanceContext();
53
53
  };
54
+
55
+ // src/react/ternSecureAuthProvider.tsx
56
+ import { useContext as useContext2 } from "react";
57
+ var [TernSecureAuthCtx, useTernSecureAuthCtx] = createContextAndHook("TernSecureAuthCtx");
58
+ function useAssertWrappedByTernSecureAuthProvider(displayNameOrFn) {
59
+ const ctx = useContext2(TernSecureAuthCtx);
60
+ if (!ctx) {
61
+ if (typeof displayNameOrFn === "function") {
62
+ displayNameOrFn();
63
+ return;
64
+ }
65
+ throw new Error(
66
+ `${displayNameOrFn} can only be used within the <TernSecureProvider /> component.
67
+
68
+ Possible fixes:
69
+ 1. Ensure that the <TernSecureProvider /> is correctly wrapping your application
70
+ 2. Check for multiple versions of @tern-secure packages in your project`
71
+ );
72
+ }
73
+ }
54
74
  export {
55
75
  SessionContext,
56
76
  TernSecureAuthContext,
77
+ TernSecureAuthCtx,
57
78
  TernSecureInstanceContext,
58
79
  UserContext,
59
80
  assertContextExists,
60
81
  createContextAndHook,
82
+ useAssertWrappedByTernSecureAuthProvider,
61
83
  useAssertWrappedByTernSecureProvider,
62
84
  useSessionContext,
63
85
  useTernSecure,
64
86
  useTernSecureAuthContext,
87
+ useTernSecureAuthCtx,
65
88
  useTernSecureInstanceContext,
66
89
  useUserContext
67
90
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/ternsecureProvider.tsx","../../src/react/ternsecureCtx.ts","../../src/react/hooks/useTernSecure.ts"],"sourcesContent":["'use client'\n\nimport { useContext } from 'react';\nimport type { \n TernSecureAuthProvider,\n TernSecureInstanceTree,\n TernSecureState,\n} from '@tern-secure/types';\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};","'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}","import type { \n TernSecureInstanceTree\n} from \"@tern-secure/types\";\nimport { \n useAssertWrappedByTernSecureProvider, \n useTernSecureInstanceContext \n} from \"../ternsecureProvider\";\n\nexport const useTernSecure = (): 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}"],"mappings":";AAEA,SAAS,kBAAkB;;;ACA3B,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;;;ADvCA,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,MAAM,WAAW,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;;;AExCO,IAAM,gBAAgB,MAA8B;AAUvD,uCAAqC,eAAe;AACpD,SAAO,6BAA6B;AACxC;","names":[]}
1
+ {"version":3,"sources":["../../src/react/ternSecureProvider.tsx","../../src/react/ternsecureCtx.ts","../../src/react/hooks/useTernSecure.ts","../../src/react/ternSecureAuthProvider.tsx"],"sourcesContent":["'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};","'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}","import type { \n TernSecureInstanceTree\n} from \"@tern-secure/types\";\n\nimport { \n useAssertWrappedByTernSecureProvider, \n useTernSecureInstanceContext \n} from \"../ternSecureProvider\";\n\nexport const useTernSecure = (): 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}","'use client'\n\nimport type { \n TernSecureAuth,\n} from '@tern-secure/types';\nimport { useContext } from 'react';\n\nimport { createContextAndHook } from './ternsecureCtx';\n\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\n\n\nexport {\n TernSecureAuthCtx,\n useTernSecureAuthCtx,\n useAssertWrappedByTernSecureAuthProvider,\n};"],"mappings":";AAOA,SAAS,kBAAkB;;;ACL3B,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;;;ADtCA,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,MAAM,WAAW,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;;;AExCO,IAAM,gBAAgB,MAA8B;AAUvD,uCAAqC,eAAe;AACpD,SAAO,6BAA6B;AACxC;;;AChBA,SAAS,cAAAA,mBAAkB;AAK3B,IAAM,CAAC,mBAAmB,oBAAoB,IAC5C,qBAAqC,mBAAmB;AAE1D,SAAS,yCAAyC,iBAA8C;AAE9F,QAAM,MAAMC,YAAW,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;","names":["useContext","useContext"]}
@@ -23,7 +23,7 @@ __export(resolveVersion_exports, {
23
23
  resolveVersion: () => resolveVersion
24
24
  });
25
25
  module.exports = __toCommonJS(resolveVersion_exports);
26
- var resolveVersion = (ternUIVersion, packageVersion = "1.1.2") => {
26
+ var resolveVersion = (ternUIVersion, packageVersion = TERN_UI_VERSION) => {
27
27
  if (ternUIVersion) {
28
28
  return ternUIVersion;
29
29
  }
@@ -1 +1 @@
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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,IAAM,iBAAiB,CAAC,eAAmC,iBAAiB,YAAoB;AACnG,MAAI,eAAe;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AACX;","names":[]}
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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,IAAM,iBAAiB,CAAC,eAAmC,iBAAiB,oBAAoB;AACnG,MAAI,eAAe;AACf,WAAO;AAAA,EACX;AAEA,SAAO;AACX;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveVersion
3
- } from "./chunk-XCVOYULH.mjs";
3
+ } from "./chunk-PHCVLVZY.mjs";
4
4
  export {
5
5
  resolveVersion
6
6
  };
@@ -45,7 +45,7 @@ var getServiceWorkerUrl = (options) => {
45
45
  var reg = (opt) => {
46
46
  const { firebaseConfig } = opt;
47
47
  if ("serviceWorker" in navigator) {
48
- const serializedFirebaseConfig = encodeURIComponent(JSON.stringify(firebaseConfig));
48
+ encodeURIComponent(JSON.stringify(firebaseConfig));
49
49
  const serviceWorkerUrl = getServiceWorkerUrl(opt);
50
50
  navigator.serviceWorker.register(serviceWorkerUrl).then((registration) => console.log("scope is: ", registration.scope));
51
51
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/serviceWorker.ts"],"sourcesContent":["export type ServiceWorkerOptions = {\n firebaseConfig: Record<string, any>;\n scope?: string;\n updateViaCache?: 'imports' | 'all' | 'none';\n domain?: string;\n isTernSecureDev?: boolean;\n localPort?: string;\n};\n\nconst getUrlEndpoint = (): string => {\n const isLocalhost = window.location.hostname === 'localhost';\n return isLocalhost ? 'http://localhost:3000' : `${window.location.origin}`;\n }\n\nconst getServiceWorkerUrl = (options: ServiceWorkerOptions): string => {\n const { firebaseConfig, domain, isTernSecureDev, localPort } = options;\n const serializedConfig = encodeURIComponent(JSON.stringify(firebaseConfig));\n \n let baseUrl: string;\n \n if (isTernSecureDev) {\n const localHost = process.env.TERN_UI_HOST || 'localhost';\n const port = localPort || process.env.TERN_UI_PORT || '3000';\n baseUrl = `http://${localHost}:${port}`;\n } else {\n baseUrl = domain || getUrlEndpoint();\n }\n \n return `${baseUrl}/service-worker.js?firebaseConfig=${serializedConfig}`;\n};\n\nexport const reg = (opt: ServiceWorkerOptions) => {\n const { firebaseConfig } = opt;\n if (\"serviceWorker\" in navigator) {\n const serializedFirebaseConfig = encodeURIComponent(JSON.stringify(firebaseConfig));\n const serviceWorkerUrl = getServiceWorkerUrl(opt);\n \n navigator.serviceWorker\n .register(serviceWorkerUrl)\n .then((registration) => console.log(\"scope is: \", registration.scope));\n }\n}\n\nexport const registerServiceWorker = async (options: ServiceWorkerOptions): Promise<ServiceWorkerRegistration | null> => {\n if (!('serviceWorker' in navigator)) {\n console.warn('[ServiceWorker] Service workers are not supported');\n return null;\n }\n\n const { scope = '/', updateViaCache = 'imports' } = options;\n\n try {\n const serviceWorkerUrl = getServiceWorkerUrl(options);\n \n const registration = await navigator.serviceWorker.register(serviceWorkerUrl, {\n scope,\n updateViaCache,\n });\n\n console.log('[ServiceWorker] Registration successful:', registration);\n return registration;\n } catch (error) {\n console.error('[ServiceWorker] Registration failed:', error);\n throw new Error(`Failed to register service worker: ${error}`);\n }\n};\n\nexport const unregisterServiceWorker = async (): Promise<boolean> => {\n if (!('serviceWorker' in navigator)) {\n return false;\n }\n\n try {\n const registrations = await navigator.serviceWorker.getRegistrations();\n const unregisterPromises = registrations.map(registration => registration.unregister());\n \n await Promise.all(unregisterPromises);\n console.log('[ServiceWorker] All service workers unregistered');\n return true;\n } catch (error) {\n console.error('[ServiceWorker] Failed to unregister service workers:', error);\n return false;\n }\n};"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,IAAM,iBAAiB,MAAc;AACjC,QAAM,cAAc,OAAO,SAAS,aAAa;AACjD,SAAO,cAAc,0BAA0B,GAAG,OAAO,SAAS,MAAM;AAC1E;AAEF,IAAM,sBAAsB,CAAC,YAA0C;AACrE,QAAM,EAAE,gBAAgB,QAAQ,iBAAiB,UAAU,IAAI;AAC/D,QAAM,mBAAmB,mBAAmB,KAAK,UAAU,cAAc,CAAC;AAE1E,MAAI;AAEJ,MAAI,iBAAiB;AACnB,UAAM,YAAY,QAAQ,IAAI,gBAAgB;AAC9C,UAAM,OAAO,aAAa,QAAQ,IAAI,gBAAgB;AACtD,cAAU,UAAU,SAAS,IAAI,IAAI;AAAA,EACvC,OAAO;AACL,cAAU,UAAU,eAAe;AAAA,EACrC;AAEA,SAAO,GAAG,OAAO,qCAAqC,gBAAgB;AACxE;AAEO,IAAM,MAAM,CAAC,QAA8B;AAC9C,QAAM,EAAE,eAAe,IAAI;AAC3B,MAAI,mBAAmB,WAAW;AAC9B,UAAM,2BAA2B,mBAAmB,KAAK,UAAU,cAAc,CAAC;AAClF,UAAM,mBAAmB,oBAAoB,GAAG;AAEhD,cAAU,cACP,SAAS,gBAAgB,EACzB,KAAK,CAAC,iBAAiB,QAAQ,IAAI,cAAc,aAAa,KAAK,CAAC;AAAA,EACvE;AACR;AAEO,IAAM,wBAAwB,OAAO,YAA6E;AACvH,MAAI,EAAE,mBAAmB,YAAY;AACnC,YAAQ,KAAK,mDAAmD;AAChE,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,QAAQ,KAAK,iBAAiB,UAAU,IAAI;AAEpD,MAAI;AACF,UAAM,mBAAmB,oBAAoB,OAAO;AAEpD,UAAM,eAAe,MAAM,UAAU,cAAc,SAAS,kBAAkB;AAAA,MAC5E;AAAA,MACA;AAAA,IACF,CAAC;AAED,YAAQ,IAAI,4CAA4C,YAAY;AACpE,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,wCAAwC,KAAK;AAC3D,UAAM,IAAI,MAAM,sCAAsC,KAAK,EAAE;AAAA,EAC/D;AACF;AAEO,IAAM,0BAA0B,YAA8B;AACnE,MAAI,EAAE,mBAAmB,YAAY;AACnC,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,gBAAgB,MAAM,UAAU,cAAc,iBAAiB;AACrE,UAAM,qBAAqB,cAAc,IAAI,kBAAgB,aAAa,WAAW,CAAC;AAEtF,UAAM,QAAQ,IAAI,kBAAkB;AACpC,YAAQ,IAAI,kDAAkD;AAC9D,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,yDAAyD,KAAK;AAC5E,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/serviceWorker.ts"],"sourcesContent":["export type ServiceWorkerOptions = {\n firebaseConfig: Record<string, any>;\n scope?: string;\n updateViaCache?: 'imports' | 'all' | 'none';\n domain?: string;\n isTernSecureDev?: boolean;\n localPort?: string;\n};\n\nconst getUrlEndpoint = (): string => {\n const isLocalhost = window.location.hostname === 'localhost';\n return isLocalhost ? 'http://localhost:3000' : `${window.location.origin}`;\n }\n\nconst getServiceWorkerUrl = (options: ServiceWorkerOptions): string => {\n const { firebaseConfig, domain, isTernSecureDev, localPort } = options;\n const serializedConfig = encodeURIComponent(JSON.stringify(firebaseConfig));\n \n let baseUrl: string;\n \n if (isTernSecureDev) {\n const localHost = process.env.TERN_UI_HOST || 'localhost';\n const port = localPort || process.env.TERN_UI_PORT || '3000';\n baseUrl = `http://${localHost}:${port}`;\n } else {\n baseUrl = domain || getUrlEndpoint();\n }\n \n return `${baseUrl}/service-worker.js?firebaseConfig=${serializedConfig}`;\n};\n\nexport const reg = (opt: ServiceWorkerOptions) => {\n const { firebaseConfig } = opt;\n if (\"serviceWorker\" in navigator) {\n encodeURIComponent(JSON.stringify(firebaseConfig));\n const serviceWorkerUrl = getServiceWorkerUrl(opt);\n \n navigator.serviceWorker\n .register(serviceWorkerUrl)\n .then((registration) => console.log(\"scope is: \", registration.scope));\n }\n}\n\nexport const registerServiceWorker = async (options: ServiceWorkerOptions): Promise<ServiceWorkerRegistration | null> => {\n if (!('serviceWorker' in navigator)) {\n console.warn('[ServiceWorker] Service workers are not supported');\n return null;\n }\n\n const { scope = '/', updateViaCache = 'imports' } = options;\n\n try {\n const serviceWorkerUrl = getServiceWorkerUrl(options);\n \n const registration = await navigator.serviceWorker.register(serviceWorkerUrl, {\n scope,\n updateViaCache,\n });\n\n console.log('[ServiceWorker] Registration successful:', registration);\n return registration;\n } catch (error) {\n console.error('[ServiceWorker] Registration failed:', error);\n throw new Error(`Failed to register service worker: ${error}`);\n }\n};\n\nexport const unregisterServiceWorker = async (): Promise<boolean> => {\n if (!('serviceWorker' in navigator)) {\n return false;\n }\n\n try {\n const registrations = await navigator.serviceWorker.getRegistrations();\n const unregisterPromises = registrations.map(registration => registration.unregister());\n \n await Promise.all(unregisterPromises);\n console.log('[ServiceWorker] All service workers unregistered');\n return true;\n } catch (error) {\n console.error('[ServiceWorker] Failed to unregister service workers:', error);\n return false;\n }\n};"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,IAAM,iBAAiB,MAAc;AACjC,QAAM,cAAc,OAAO,SAAS,aAAa;AACjD,SAAO,cAAc,0BAA0B,GAAG,OAAO,SAAS,MAAM;AAC1E;AAEF,IAAM,sBAAsB,CAAC,YAA0C;AACrE,QAAM,EAAE,gBAAgB,QAAQ,iBAAiB,UAAU,IAAI;AAC/D,QAAM,mBAAmB,mBAAmB,KAAK,UAAU,cAAc,CAAC;AAE1E,MAAI;AAEJ,MAAI,iBAAiB;AACnB,UAAM,YAAY,QAAQ,IAAI,gBAAgB;AAC9C,UAAM,OAAO,aAAa,QAAQ,IAAI,gBAAgB;AACtD,cAAU,UAAU,SAAS,IAAI,IAAI;AAAA,EACvC,OAAO;AACL,cAAU,UAAU,eAAe;AAAA,EACrC;AAEA,SAAO,GAAG,OAAO,qCAAqC,gBAAgB;AACxE;AAEO,IAAM,MAAM,CAAC,QAA8B;AAChD,QAAM,EAAE,eAAe,IAAI;AAC3B,MAAI,mBAAmB,WAAW;AAChC,uBAAmB,KAAK,UAAU,cAAc,CAAC;AACjD,UAAM,mBAAmB,oBAAoB,GAAG;AAEhD,cAAU,cACT,SAAS,gBAAgB,EACzB,KAAK,CAAC,iBAAiB,QAAQ,IAAI,cAAc,aAAa,KAAK,CAAC;AAAA,EACvE;AACF;AAEO,IAAM,wBAAwB,OAAO,YAA6E;AACvH,MAAI,EAAE,mBAAmB,YAAY;AACnC,YAAQ,KAAK,mDAAmD;AAChE,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,QAAQ,KAAK,iBAAiB,UAAU,IAAI;AAEpD,MAAI;AACF,UAAM,mBAAmB,oBAAoB,OAAO;AAEpD,UAAM,eAAe,MAAM,UAAU,cAAc,SAAS,kBAAkB;AAAA,MAC5E;AAAA,MACA;AAAA,IACF,CAAC;AAED,YAAQ,IAAI,4CAA4C,YAAY;AACpE,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,wCAAwC,KAAK;AAC3D,UAAM,IAAI,MAAM,sCAAsC,KAAK,EAAE;AAAA,EAC/D;AACF;AAEO,IAAM,0BAA0B,YAA8B;AACnE,MAAI,EAAE,mBAAmB,YAAY;AACnC,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,gBAAgB,MAAM,UAAU,cAAc,iBAAiB;AACrE,UAAM,qBAAqB,cAAc,IAAI,kBAAgB,aAAa,WAAW,CAAC;AAEtF,UAAM,QAAQ,IAAI,kBAAkB;AACpC,YAAQ,IAAI,kDAAkD;AAC9D,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,yDAAyD,KAAK;AAC5E,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -19,7 +19,7 @@ var getServiceWorkerUrl = (options) => {
19
19
  var reg = (opt) => {
20
20
  const { firebaseConfig } = opt;
21
21
  if ("serviceWorker" in navigator) {
22
- const serializedFirebaseConfig = encodeURIComponent(JSON.stringify(firebaseConfig));
22
+ encodeURIComponent(JSON.stringify(firebaseConfig));
23
23
  const serviceWorkerUrl = getServiceWorkerUrl(opt);
24
24
  navigator.serviceWorker.register(serviceWorkerUrl).then((registration) => console.log("scope is: ", registration.scope));
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/serviceWorker.ts"],"sourcesContent":["export type ServiceWorkerOptions = {\n firebaseConfig: Record<string, any>;\n scope?: string;\n updateViaCache?: 'imports' | 'all' | 'none';\n domain?: string;\n isTernSecureDev?: boolean;\n localPort?: string;\n};\n\nconst getUrlEndpoint = (): string => {\n const isLocalhost = window.location.hostname === 'localhost';\n return isLocalhost ? 'http://localhost:3000' : `${window.location.origin}`;\n }\n\nconst getServiceWorkerUrl = (options: ServiceWorkerOptions): string => {\n const { firebaseConfig, domain, isTernSecureDev, localPort } = options;\n const serializedConfig = encodeURIComponent(JSON.stringify(firebaseConfig));\n \n let baseUrl: string;\n \n if (isTernSecureDev) {\n const localHost = process.env.TERN_UI_HOST || 'localhost';\n const port = localPort || process.env.TERN_UI_PORT || '3000';\n baseUrl = `http://${localHost}:${port}`;\n } else {\n baseUrl = domain || getUrlEndpoint();\n }\n \n return `${baseUrl}/service-worker.js?firebaseConfig=${serializedConfig}`;\n};\n\nexport const reg = (opt: ServiceWorkerOptions) => {\n const { firebaseConfig } = opt;\n if (\"serviceWorker\" in navigator) {\n const serializedFirebaseConfig = encodeURIComponent(JSON.stringify(firebaseConfig));\n const serviceWorkerUrl = getServiceWorkerUrl(opt);\n \n navigator.serviceWorker\n .register(serviceWorkerUrl)\n .then((registration) => console.log(\"scope is: \", registration.scope));\n }\n}\n\nexport const registerServiceWorker = async (options: ServiceWorkerOptions): Promise<ServiceWorkerRegistration | null> => {\n if (!('serviceWorker' in navigator)) {\n console.warn('[ServiceWorker] Service workers are not supported');\n return null;\n }\n\n const { scope = '/', updateViaCache = 'imports' } = options;\n\n try {\n const serviceWorkerUrl = getServiceWorkerUrl(options);\n \n const registration = await navigator.serviceWorker.register(serviceWorkerUrl, {\n scope,\n updateViaCache,\n });\n\n console.log('[ServiceWorker] Registration successful:', registration);\n return registration;\n } catch (error) {\n console.error('[ServiceWorker] Registration failed:', error);\n throw new Error(`Failed to register service worker: ${error}`);\n }\n};\n\nexport const unregisterServiceWorker = async (): Promise<boolean> => {\n if (!('serviceWorker' in navigator)) {\n return false;\n }\n\n try {\n const registrations = await navigator.serviceWorker.getRegistrations();\n const unregisterPromises = registrations.map(registration => registration.unregister());\n \n await Promise.all(unregisterPromises);\n console.log('[ServiceWorker] All service workers unregistered');\n return true;\n } catch (error) {\n console.error('[ServiceWorker] Failed to unregister service workers:', error);\n return false;\n }\n};"],"mappings":";AASA,IAAM,iBAAiB,MAAc;AACjC,QAAM,cAAc,OAAO,SAAS,aAAa;AACjD,SAAO,cAAc,0BAA0B,GAAG,OAAO,SAAS,MAAM;AAC1E;AAEF,IAAM,sBAAsB,CAAC,YAA0C;AACrE,QAAM,EAAE,gBAAgB,QAAQ,iBAAiB,UAAU,IAAI;AAC/D,QAAM,mBAAmB,mBAAmB,KAAK,UAAU,cAAc,CAAC;AAE1E,MAAI;AAEJ,MAAI,iBAAiB;AACnB,UAAM,YAAY,QAAQ,IAAI,gBAAgB;AAC9C,UAAM,OAAO,aAAa,QAAQ,IAAI,gBAAgB;AACtD,cAAU,UAAU,SAAS,IAAI,IAAI;AAAA,EACvC,OAAO;AACL,cAAU,UAAU,eAAe;AAAA,EACrC;AAEA,SAAO,GAAG,OAAO,qCAAqC,gBAAgB;AACxE;AAEO,IAAM,MAAM,CAAC,QAA8B;AAC9C,QAAM,EAAE,eAAe,IAAI;AAC3B,MAAI,mBAAmB,WAAW;AAC9B,UAAM,2BAA2B,mBAAmB,KAAK,UAAU,cAAc,CAAC;AAClF,UAAM,mBAAmB,oBAAoB,GAAG;AAEhD,cAAU,cACP,SAAS,gBAAgB,EACzB,KAAK,CAAC,iBAAiB,QAAQ,IAAI,cAAc,aAAa,KAAK,CAAC;AAAA,EACvE;AACR;AAEO,IAAM,wBAAwB,OAAO,YAA6E;AACvH,MAAI,EAAE,mBAAmB,YAAY;AACnC,YAAQ,KAAK,mDAAmD;AAChE,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,QAAQ,KAAK,iBAAiB,UAAU,IAAI;AAEpD,MAAI;AACF,UAAM,mBAAmB,oBAAoB,OAAO;AAEpD,UAAM,eAAe,MAAM,UAAU,cAAc,SAAS,kBAAkB;AAAA,MAC5E;AAAA,MACA;AAAA,IACF,CAAC;AAED,YAAQ,IAAI,4CAA4C,YAAY;AACpE,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,wCAAwC,KAAK;AAC3D,UAAM,IAAI,MAAM,sCAAsC,KAAK,EAAE;AAAA,EAC/D;AACF;AAEO,IAAM,0BAA0B,YAA8B;AACnE,MAAI,EAAE,mBAAmB,YAAY;AACnC,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,gBAAgB,MAAM,UAAU,cAAc,iBAAiB;AACrE,UAAM,qBAAqB,cAAc,IAAI,kBAAgB,aAAa,WAAW,CAAC;AAEtF,UAAM,QAAQ,IAAI,kBAAkB;AACpC,YAAQ,IAAI,kDAAkD;AAC9D,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,yDAAyD,KAAK;AAC5E,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/serviceWorker.ts"],"sourcesContent":["export type ServiceWorkerOptions = {\n firebaseConfig: Record<string, any>;\n scope?: string;\n updateViaCache?: 'imports' | 'all' | 'none';\n domain?: string;\n isTernSecureDev?: boolean;\n localPort?: string;\n};\n\nconst getUrlEndpoint = (): string => {\n const isLocalhost = window.location.hostname === 'localhost';\n return isLocalhost ? 'http://localhost:3000' : `${window.location.origin}`;\n }\n\nconst getServiceWorkerUrl = (options: ServiceWorkerOptions): string => {\n const { firebaseConfig, domain, isTernSecureDev, localPort } = options;\n const serializedConfig = encodeURIComponent(JSON.stringify(firebaseConfig));\n \n let baseUrl: string;\n \n if (isTernSecureDev) {\n const localHost = process.env.TERN_UI_HOST || 'localhost';\n const port = localPort || process.env.TERN_UI_PORT || '3000';\n baseUrl = `http://${localHost}:${port}`;\n } else {\n baseUrl = domain || getUrlEndpoint();\n }\n \n return `${baseUrl}/service-worker.js?firebaseConfig=${serializedConfig}`;\n};\n\nexport const reg = (opt: ServiceWorkerOptions) => {\n const { firebaseConfig } = opt;\n if (\"serviceWorker\" in navigator) {\n encodeURIComponent(JSON.stringify(firebaseConfig));\n const serviceWorkerUrl = getServiceWorkerUrl(opt);\n \n navigator.serviceWorker\n .register(serviceWorkerUrl)\n .then((registration) => console.log(\"scope is: \", registration.scope));\n }\n}\n\nexport const registerServiceWorker = async (options: ServiceWorkerOptions): Promise<ServiceWorkerRegistration | null> => {\n if (!('serviceWorker' in navigator)) {\n console.warn('[ServiceWorker] Service workers are not supported');\n return null;\n }\n\n const { scope = '/', updateViaCache = 'imports' } = options;\n\n try {\n const serviceWorkerUrl = getServiceWorkerUrl(options);\n \n const registration = await navigator.serviceWorker.register(serviceWorkerUrl, {\n scope,\n updateViaCache,\n });\n\n console.log('[ServiceWorker] Registration successful:', registration);\n return registration;\n } catch (error) {\n console.error('[ServiceWorker] Registration failed:', error);\n throw new Error(`Failed to register service worker: ${error}`);\n }\n};\n\nexport const unregisterServiceWorker = async (): Promise<boolean> => {\n if (!('serviceWorker' in navigator)) {\n return false;\n }\n\n try {\n const registrations = await navigator.serviceWorker.getRegistrations();\n const unregisterPromises = registrations.map(registration => registration.unregister());\n \n await Promise.all(unregisterPromises);\n console.log('[ServiceWorker] All service workers unregistered');\n return true;\n } catch (error) {\n console.error('[ServiceWorker] Failed to unregister service workers:', error);\n return false;\n }\n};"],"mappings":";AASA,IAAM,iBAAiB,MAAc;AACjC,QAAM,cAAc,OAAO,SAAS,aAAa;AACjD,SAAO,cAAc,0BAA0B,GAAG,OAAO,SAAS,MAAM;AAC1E;AAEF,IAAM,sBAAsB,CAAC,YAA0C;AACrE,QAAM,EAAE,gBAAgB,QAAQ,iBAAiB,UAAU,IAAI;AAC/D,QAAM,mBAAmB,mBAAmB,KAAK,UAAU,cAAc,CAAC;AAE1E,MAAI;AAEJ,MAAI,iBAAiB;AACnB,UAAM,YAAY,QAAQ,IAAI,gBAAgB;AAC9C,UAAM,OAAO,aAAa,QAAQ,IAAI,gBAAgB;AACtD,cAAU,UAAU,SAAS,IAAI,IAAI;AAAA,EACvC,OAAO;AACL,cAAU,UAAU,eAAe;AAAA,EACrC;AAEA,SAAO,GAAG,OAAO,qCAAqC,gBAAgB;AACxE;AAEO,IAAM,MAAM,CAAC,QAA8B;AAChD,QAAM,EAAE,eAAe,IAAI;AAC3B,MAAI,mBAAmB,WAAW;AAChC,uBAAmB,KAAK,UAAU,cAAc,CAAC;AACjD,UAAM,mBAAmB,oBAAoB,GAAG;AAEhD,cAAU,cACT,SAAS,gBAAgB,EACzB,KAAK,CAAC,iBAAiB,QAAQ,IAAI,cAAc,aAAa,KAAK,CAAC;AAAA,EACvE;AACF;AAEO,IAAM,wBAAwB,OAAO,YAA6E;AACvH,MAAI,EAAE,mBAAmB,YAAY;AACnC,YAAQ,KAAK,mDAAmD;AAChE,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,QAAQ,KAAK,iBAAiB,UAAU,IAAI;AAEpD,MAAI;AACF,UAAM,mBAAmB,oBAAoB,OAAO;AAEpD,UAAM,eAAe,MAAM,UAAU,cAAc,SAAS,kBAAkB;AAAA,MAC5E;AAAA,MACA;AAAA,IACF,CAAC;AAED,YAAQ,IAAI,4CAA4C,YAAY;AACpE,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,wCAAwC,KAAK;AAC3D,UAAM,IAAI,MAAM,sCAAsC,KAAK,EAAE;AAAA,EAC/D;AACF;AAEO,IAAM,0BAA0B,YAA8B;AACnE,MAAI,EAAE,mBAAmB,YAAY;AACnC,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,gBAAgB,MAAM,UAAU,cAAc,iBAAiB;AACrE,UAAM,qBAAqB,cAAc,IAAI,kBAAgB,aAAa,WAAW,CAAC;AAEtF,UAAM,QAAQ,IAAI,kBAAkB;AACpC,YAAQ,IAAI,kDAAkD;AAC9D,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,yDAAyD,KAAK;AAC5E,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -0,0 +1,15 @@
1
+ import { TernAuthEventPayload } from '@tern-secure/types';
2
+
3
+ declare const ternEvents: {
4
+ Status: "status";
5
+ };
6
+ declare function createTernAuthEventBus(): {
7
+ on: <Event extends "status">(event: Event, handler: (payload: TernAuthEventPayload[Event]) => void, opts?: {
8
+ notify?: boolean;
9
+ }) => void;
10
+ emit: <Event extends "status">(event: Event, payload: TernAuthEventPayload[Event]) => void;
11
+ off: <Event extends "status">(event: Event, handler?: ((payload: TernAuthEventPayload[Event]) => void) | undefined) => void;
12
+ getListeners: <Event extends "status">(event: Event) => Array<(...args: any[]) => void>;
13
+ };
14
+
15
+ export { createTernAuthEventBus, ternEvents };
@@ -0,0 +1,15 @@
1
+ import { TernAuthEventPayload } from '@tern-secure/types';
2
+
3
+ declare const ternEvents: {
4
+ Status: "status";
5
+ };
6
+ declare function createTernAuthEventBus(): {
7
+ on: <Event extends "status">(event: Event, handler: (payload: TernAuthEventPayload[Event]) => void, opts?: {
8
+ notify?: boolean;
9
+ }) => void;
10
+ emit: <Event extends "status">(event: Event, payload: TernAuthEventPayload[Event]) => void;
11
+ off: <Event extends "status">(event: Event, handler?: ((payload: TernAuthEventPayload[Event]) => void) | undefined) => void;
12
+ getListeners: <Event extends "status">(event: Event) => Array<(...args: any[]) => void>;
13
+ };
14
+
15
+ export { createTernAuthEventBus, ternEvents };
@@ -0,0 +1,81 @@
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/ternStatusEvent.ts
21
+ var ternStatusEvent_exports = {};
22
+ __export(ternStatusEvent_exports, {
23
+ createTernAuthEventBus: () => createTernAuthEventBus,
24
+ ternEvents: () => ternEvents
25
+ });
26
+ module.exports = __toCommonJS(ternStatusEvent_exports);
27
+
28
+ // src/eventBus.ts
29
+ var _off = (eventToHandlersMap, event, handler) => {
30
+ const handlers = eventToHandlersMap.get(event);
31
+ if (handlers) {
32
+ if (handler) {
33
+ handlers.splice(handlers.indexOf(handler) >>> 0, 1);
34
+ } else {
35
+ eventToHandlersMap.set(event, []);
36
+ }
37
+ }
38
+ };
39
+ var _on = (eventToHandlersMap, latestPayloadMap, event, handler, opts) => {
40
+ const { notify } = opts || {};
41
+ let handlers = eventToHandlersMap.get(event);
42
+ if (!handlers) {
43
+ handlers = [];
44
+ eventToHandlersMap.set(event, handlers);
45
+ }
46
+ handlers.push(handler);
47
+ if (notify && latestPayloadMap.has(event)) {
48
+ handler(latestPayloadMap.get(event));
49
+ }
50
+ };
51
+ var _dispatch = (eventToHandlersMap, event, payload) => (eventToHandlersMap.get(event) || []).map((h) => h(payload));
52
+ var createEventBus = () => {
53
+ const eventToHandlersMap = /* @__PURE__ */ new Map();
54
+ const latestPayloadMap = /* @__PURE__ */ new Map();
55
+ const eventToPredispatchHandlersMap = /* @__PURE__ */ new Map();
56
+ const emit = (event, payload) => {
57
+ latestPayloadMap.set(event, payload);
58
+ _dispatch(eventToPredispatchHandlersMap, event, payload);
59
+ _dispatch(eventToHandlersMap, event, payload);
60
+ };
61
+ return {
62
+ on: (...args) => _on(eventToHandlersMap, latestPayloadMap, ...args),
63
+ emit,
64
+ off: (...args) => _off(eventToHandlersMap, ...args),
65
+ getListeners: (event) => eventToHandlersMap.get(event) || []
66
+ };
67
+ };
68
+
69
+ // src/ternStatusEvent.ts
70
+ var ternEvents = {
71
+ Status: "status"
72
+ };
73
+ function createTernAuthEventBus() {
74
+ return createEventBus();
75
+ }
76
+ // Annotate the CommonJS export names for ESM import in node:
77
+ 0 && (module.exports = {
78
+ createTernAuthEventBus,
79
+ ternEvents
80
+ });
81
+ //# sourceMappingURL=ternStatusEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ternStatusEvent.ts","../src/eventBus.ts"],"sourcesContent":["import type { TernAuthEventPayload } from \"@tern-secure/types\";\n\nimport { createEventBus } from \"./eventBus\";\n\n\nexport const ternEvents = {\n Status: 'status',\n} satisfies Record<string, keyof TernAuthEventPayload>;\n\nexport function createTernAuthEventBus() {\n return createEventBus<TernAuthEventPayload>();\n}","type EventHandler<\n Events extends Record<string, unknown>,\n Key extends keyof Events,\n> = (payload: Events[Key]) => void;\n\ntype EventBus<Events extends Record<string, unknown>> = {\n /**\n * Subscribe to an event\n *\n * @param event - The event name to subscribe to\n * @param handler - The callback function to execute when the event is dispatched\n * @param opts - Optional configuration\n * @param opts.notify - If true and the event was previously dispatched, handler will be called immediately with the latest payload\n * @returns void\n */\n on: <Event extends keyof Events>(\n event: Event,\n handler: EventHandler<Events, Event>,\n opts?: { notify?: boolean }\n ) => void;\n\n /**\n * Publish an event with a payload\n * Triggers all registered handlers for the event\n *\n * @param event - The event name to publish\n * @param payload - The data to pass to event handlers\n * @returns void\n */\n emit: <Event extends keyof Events>(\n event: Event,\n payload: Events[Event]\n ) => void;\n off: <Event extends keyof Events>(\n event: Event,\n handler?: EventHandler<Events, Event>\n ) => void;\n getListeners: <Event extends keyof Events>(\n event: Event\n ) => Array<(...args: any[]) => void>;\n};\n\n/**\n * @internal\n */\ntype InternalOn = <\n Events extends Record<string, unknown>,\n Event extends keyof Events,\n>(\n eventToHandlersMap: Map<keyof Events, Array<(...args: any[]) => void>>,\n latestPayloadMap: Map<keyof Events, any>,\n event: Event,\n handler: EventHandler<Events, Event>,\n opts?: { notify?: boolean }\n) => void;\n\n/**\n * @internal\n */\ntype InternalOff = <\n Events extends Record<string, unknown>,\n Event extends keyof Events,\n>(\n eventToHandlersMap: Map<keyof Events, Array<(...args: any[]) => void>>,\n event: Event,\n handler?: EventHandler<Events, Event>\n) => void;\n\n/**\n * @internal\n */\ntype InternalDispatch = <\n Events extends Record<string, unknown>,\n Event extends keyof Events,\n>(\n eventToHandlersMap: Map<keyof Events, Array<(...args: any[]) => void>>,\n event: Event,\n payload: Events[Event]\n) => void;\n\n/**\n * @internal\n */\nconst _off: InternalOff = (eventToHandlersMap, event, handler) => {\n const handlers = eventToHandlersMap.get(event);\n if (handlers) {\n if (handler) {\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\n } else {\n eventToHandlersMap.set(event, []);\n }\n }\n};\n\n/**\n * @internal\n */\nconst _on: InternalOn = (\n eventToHandlersMap,\n latestPayloadMap,\n event,\n handler,\n opts\n) => {\n const { notify } = opts || {};\n let handlers = eventToHandlersMap.get(event);\n\n if (!handlers) {\n handlers = [];\n eventToHandlersMap.set(event, handlers);\n }\n\n handlers.push(handler);\n if (notify && latestPayloadMap.has(event)) {\n handler(latestPayloadMap.get(event));\n }\n};\n\n/**\n * @internal\n */\n\nconst _dispatch: InternalDispatch = (eventToHandlersMap, event, payload) =>\n (eventToHandlersMap.get(event) || []).map((h) => h(payload));\n\nexport const createEventBus = <\n Events extends Record<string, unknown>,\n>(): EventBus<Events> => {\n const eventToHandlersMap = new Map<\n keyof Events,\n Array<(...args: any[]) => void>\n >();\n const latestPayloadMap = new Map<keyof Events, any>();\n const eventToPredispatchHandlersMap = new Map<\n keyof Events,\n Array<(...args: any[]) => void>\n >();\n\n const emit: EventBus<Events>[\"emit\"] = (event, payload) => {\n latestPayloadMap.set(event, payload);\n _dispatch(eventToPredispatchHandlersMap, event, payload);\n _dispatch(eventToHandlersMap, event, payload);\n };\n\n return {\n on: (...args) => _on(eventToHandlersMap, latestPayloadMap, ...args),\n emit,\n off: (...args) => _off(eventToHandlersMap, ...args),\n getListeners: (event) => eventToHandlersMap.get(event) || [],\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACmFA,IAAM,OAAoB,CAAC,oBAAoB,OAAO,YAAY;AAChE,QAAM,WAAW,mBAAmB,IAAI,KAAK;AAC7C,MAAI,UAAU;AACZ,QAAI,SAAS;AACX,eAAS,OAAO,SAAS,QAAQ,OAAO,MAAM,GAAG,CAAC;AAAA,IACpD,OAAO;AACL,yBAAmB,IAAI,OAAO,CAAC,CAAC;AAAA,IAClC;AAAA,EACF;AACF;AAKA,IAAM,MAAkB,CACtB,oBACA,kBACA,OACA,SACA,SACG;AACH,QAAM,EAAE,OAAO,IAAI,QAAQ,CAAC;AAC5B,MAAI,WAAW,mBAAmB,IAAI,KAAK;AAE3C,MAAI,CAAC,UAAU;AACb,eAAW,CAAC;AACZ,uBAAmB,IAAI,OAAO,QAAQ;AAAA,EACxC;AAEA,WAAS,KAAK,OAAO;AACrB,MAAI,UAAU,iBAAiB,IAAI,KAAK,GAAG;AACzC,YAAQ,iBAAiB,IAAI,KAAK,CAAC;AAAA,EACrC;AACF;AAMA,IAAM,YAA8B,CAAC,oBAAoB,OAAO,aAC7D,mBAAmB,IAAI,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;AAEtD,IAAM,iBAAiB,MAEL;AACvB,QAAM,qBAAqB,oBAAI,IAG7B;AACF,QAAM,mBAAmB,oBAAI,IAAuB;AACpD,QAAM,gCAAgC,oBAAI,IAGxC;AAEF,QAAM,OAAiC,CAAC,OAAO,YAAY;AACzD,qBAAiB,IAAI,OAAO,OAAO;AACnC,cAAU,+BAA+B,OAAO,OAAO;AACvD,cAAU,oBAAoB,OAAO,OAAO;AAAA,EAC9C;AAEA,SAAO;AAAA,IACL,IAAI,IAAI,SAAS,IAAI,oBAAoB,kBAAkB,GAAG,IAAI;AAAA,IAClE;AAAA,IACA,KAAK,IAAI,SAAS,KAAK,oBAAoB,GAAG,IAAI;AAAA,IAClD,cAAc,CAAC,UAAU,mBAAmB,IAAI,KAAK,KAAK,CAAC;AAAA,EAC7D;AACF;;;ADjJO,IAAM,aAAa;AAAA,EACtB,QAAQ;AACZ;AAEO,SAAS,yBAAyB;AACrC,SAAO,eAAqC;AAChD;","names":[]}
@@ -0,0 +1,16 @@
1
+ import {
2
+ createEventBus
3
+ } from "./chunk-2UQ43P4P.mjs";
4
+
5
+ // src/ternStatusEvent.ts
6
+ var ternEvents = {
7
+ Status: "status"
8
+ };
9
+ function createTernAuthEventBus() {
10
+ return createEventBus();
11
+ }
12
+ export {
13
+ createTernAuthEventBus,
14
+ ternEvents
15
+ };
16
+ //# sourceMappingURL=ternStatusEvent.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ternStatusEvent.ts"],"sourcesContent":["import type { TernAuthEventPayload } from \"@tern-secure/types\";\n\nimport { createEventBus } from \"./eventBus\";\n\n\nexport const ternEvents = {\n Status: 'status',\n} satisfies Record<string, keyof TernAuthEventPayload>;\n\nexport function createTernAuthEventBus() {\n return createEventBus<TernAuthEventPayload>();\n}"],"mappings":";;;;;AAKO,IAAM,aAAa;AAAA,EACtB,QAAQ;AACZ;AAEO,SAAS,yBAAyB;AACrC,SAAO,eAAqC;AAChD;","names":[]}
package/dist/url.d.mts ADDED
@@ -0,0 +1,3 @@
1
+ declare function stripScheme(url?: string): string;
2
+
3
+ export { stripScheme };
package/dist/url.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ declare function stripScheme(url?: string): string;
2
+
3
+ export { stripScheme };
package/dist/url.js ADDED
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/url.ts
21
+ var url_exports = {};
22
+ __export(url_exports, {
23
+ stripScheme: () => stripScheme
24
+ });
25
+ module.exports = __toCommonJS(url_exports);
26
+ function stripScheme(url = "") {
27
+ return (url || "").replace(/^.+:\/\//, "");
28
+ }
29
+ // Annotate the CommonJS export names for ESM import in node:
30
+ 0 && (module.exports = {
31
+ stripScheme
32
+ });
33
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/url.ts"],"sourcesContent":["export function stripScheme(url = ''): string {\n return (url || '').replace(/^.+:\\/\\//, '');\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,YAAY,MAAM,IAAY;AAC5C,UAAQ,OAAO,IAAI,QAAQ,YAAY,EAAE;AAC3C;","names":[]}
package/dist/url.mjs ADDED
@@ -0,0 +1,8 @@
1
+ // src/url.ts
2
+ function stripScheme(url = "") {
3
+ return (url || "").replace(/^.+:\/\//, "");
4
+ }
5
+ export {
6
+ stripScheme
7
+ };
8
+ //# sourceMappingURL=url.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/url.ts"],"sourcesContent":["export function stripScheme(url = ''): string {\n return (url || '').replace(/^.+:\\/\\//, '');\n}\n"],"mappings":";AAAO,SAAS,YAAY,MAAM,IAAY;AAC5C,UAAQ,OAAO,IAAI,QAAQ,YAAY,EAAE;AAC3C;","names":[]}
@@ -0,0 +1,5 @@
1
+ type VOrFnReturnsV<T> = T | undefined | ((v: URL) => T);
2
+ declare function handleValueOrFn<T>(value: VOrFnReturnsV<T>, url: URL): T | undefined;
3
+ declare function handleValueOrFn<T>(value: VOrFnReturnsV<T>, url: URL, defaultValue: T): T;
4
+
5
+ export { handleValueOrFn };
@@ -0,0 +1,5 @@
1
+ type VOrFnReturnsV<T> = T | undefined | ((v: URL) => T);
2
+ declare function handleValueOrFn<T>(value: VOrFnReturnsV<T>, url: URL): T | undefined;
3
+ declare function handleValueOrFn<T>(value: VOrFnReturnsV<T>, url: URL, defaultValue: T): T;
4
+
5
+ export { handleValueOrFn };
@@ -0,0 +1,44 @@
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/utils/index.ts
21
+ var utils_exports = {};
22
+ __export(utils_exports, {
23
+ handleValueOrFn: () => handleValueOrFn
24
+ });
25
+ module.exports = __toCommonJS(utils_exports);
26
+
27
+ // src/utils/handleValueOrFn.ts
28
+ function handleValueOrFn(value, url, defaultValue) {
29
+ if (typeof value === "function") {
30
+ return value(url);
31
+ }
32
+ if (typeof value !== "undefined") {
33
+ return value;
34
+ }
35
+ if (typeof defaultValue !== "undefined") {
36
+ return defaultValue;
37
+ }
38
+ return void 0;
39
+ }
40
+ // Annotate the CommonJS export names for ESM import in node:
41
+ 0 && (module.exports = {
42
+ handleValueOrFn
43
+ });
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/index.ts","../../src/utils/handleValueOrFn.ts"],"sourcesContent":["export { handleValueOrFn } from './handleValueOrFn';\n\n","type VOrFnReturnsV<T> = T | undefined | ((v: URL) => T);\nexport function handleValueOrFn<T>(value: VOrFnReturnsV<T>, url: URL): T | undefined;\nexport function handleValueOrFn<T>(value: VOrFnReturnsV<T>, url: URL, defaultValue: T): T;\nexport function handleValueOrFn<T>(value: VOrFnReturnsV<T>, url: URL, defaultValue?: unknown): unknown {\n if (typeof value === 'function') {\n return (value as (v: URL) => T)(url);\n }\n\n if (typeof value !== 'undefined') {\n return value;\n }\n\n if (typeof defaultValue !== 'undefined') {\n return defaultValue;\n }\n\n return undefined;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGO,SAAS,gBAAmB,OAAyB,KAAU,cAAiC;AACrG,MAAI,OAAO,UAAU,YAAY;AAC/B,WAAQ,MAAwB,GAAG;AAAA,EACrC;AAEA,MAAI,OAAO,UAAU,aAAa;AAChC,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,iBAAiB,aAAa;AACvC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,17 @@
1
+ // src/utils/handleValueOrFn.ts
2
+ function handleValueOrFn(value, url, defaultValue) {
3
+ if (typeof value === "function") {
4
+ return value(url);
5
+ }
6
+ if (typeof value !== "undefined") {
7
+ return value;
8
+ }
9
+ if (typeof defaultValue !== "undefined") {
10
+ return defaultValue;
11
+ }
12
+ return void 0;
13
+ }
14
+ export {
15
+ handleValueOrFn
16
+ };
17
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/handleValueOrFn.ts"],"sourcesContent":["type VOrFnReturnsV<T> = T | undefined | ((v: URL) => T);\nexport function handleValueOrFn<T>(value: VOrFnReturnsV<T>, url: URL): T | undefined;\nexport function handleValueOrFn<T>(value: VOrFnReturnsV<T>, url: URL, defaultValue: T): T;\nexport function handleValueOrFn<T>(value: VOrFnReturnsV<T>, url: URL, defaultValue?: unknown): unknown {\n if (typeof value === 'function') {\n return (value as (v: URL) => T)(url);\n }\n\n if (typeof value !== 'undefined') {\n return value;\n }\n\n if (typeof defaultValue !== 'undefined') {\n return defaultValue;\n }\n\n return undefined;\n}\n"],"mappings":";AAGO,SAAS,gBAAmB,OAAyB,KAAU,cAAiC;AACrG,MAAI,OAAO,UAAU,YAAY;AAC/B,WAAQ,MAAwB,GAAG;AAAA,EACrC;AAEA,MAAI,OAAO,UAAU,aAAa;AAChC,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,iBAAiB,aAAa;AACvC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tern-secure/shared",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/TernSecure/typescript.git",
@@ -18,13 +18,16 @@
18
18
  "derivedAuthState",
19
19
  "eventBus",
20
20
  "loadScript",
21
+ "pathToRegexp",
22
+ "pathMatcher",
21
23
  "loadTernUIScript",
22
24
  "react",
23
25
  "resolveVersion",
24
- "retry"
26
+ "retry",
27
+ "url",
28
+ "utils"
25
29
  ],
26
30
  "exports": {
27
- "./package.json": "./package.json",
28
31
  ".": {
29
32
  "import": {
30
33
  "types": "./dist/index.d.mts",
@@ -54,7 +57,18 @@
54
57
  "types": "./dist/react/index.d.ts",
55
58
  "default": "./dist/react/index.js"
56
59
  }
57
- }
60
+ },
61
+ "./utils": {
62
+ "import": {
63
+ "types": "./dist/utils/index.d.mts",
64
+ "default": "./dist/utils/index.mjs"
65
+ },
66
+ "require": {
67
+ "types": "./dist/utils/index.d.ts",
68
+ "default": "./dist/utils/index.js"
69
+ }
70
+ },
71
+ "./package.json": "./package.json"
58
72
  },
59
73
  "main": "./dist/index.js",
60
74
  "devDependencies": {
@@ -67,7 +81,7 @@
67
81
  "dependencies": {
68
82
  "js-cookie": "^3.0.5",
69
83
  "tslib": "2.4.1",
70
- "@tern-secure/types": "1.0.4"
84
+ "@tern-secure/types": "1.0.5"
71
85
  },
72
86
  "peerDependencies": {
73
87
  "react": "^19",
@@ -86,9 +100,11 @@
86
100
  },
87
101
  "scripts": {
88
102
  "clean": "rimraf dist",
89
- "build": "pnpm clean && tsup && tsc -p tsconfig.add.json",
103
+ "build": "pnpm clean && tsup",
104
+ "build:add": "tsc -p tsconfig.add.json",
90
105
  "dev": "tsup --watch",
91
106
  "lint": "eslint src",
107
+ "check-types": "pnpm exec tsc --noEmit",
92
108
  "format": "prettier --write \"src/**/*.{ts,tsx}\""
93
109
  }
94
110
  }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/loadScript.ts"],"sourcesContent":[" import { retry } from './retry'\n\n 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 || error}`));\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":";AAUE,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,WAAW,KAAK,EAAE,CAAC;AAAA,MACrF;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":[]}
@@ -1,12 +0,0 @@
1
- type removeCookieParams = {
2
- path?: string;
3
- domain?: string;
4
- };
5
- export declare function cookieHandler(cookieNanme: string): {
6
- set(value: string, options?: Cookies.CookieAttributes): void;
7
- get(): string | undefined;
8
- remove(removeCookieParams?: removeCookieParams): void;
9
- };
10
- export type CookieAttributes = Cookies.CookieAttributes;
11
- export {};
12
- //# sourceMappingURL=cookie.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cookie.d.ts","sourceRoot":"","sources":["../../src/cookie.ts"],"names":[],"mappings":"AAEA,KAAK,kBAAkB,GAAG;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAA;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM;eAE9B,MAAM,YAAW,OAAO,CAAC,gBAAgB,GAAQ,IAAI;;gCAMpC,kBAAkB;EAIrD;AAED,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC"}
@@ -1,7 +0,0 @@
1
- import { TernSecureState } from "@tern-secure/types";
2
- /**
3
- * Default state for derived auth state
4
- */
5
- export declare const DEFAULT_TERN_SECURE_STATE: TernSecureState;
6
- export declare const deriveAuthState: (internalState: TernSecureState | undefined) => TernSecureState;
7
- //# sourceMappingURL=derivedAuthState.d.ts.map