@tern-secure/auth 1.1.0-canary.v20251020032343 → 1.1.0-canary.v20251023005301

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 (43) hide show
  1. package/dist/cjs/index.js +3 -0
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/instance/TernAuth.js +74 -132
  4. package/dist/cjs/instance/TernAuth.js.map +1 -1
  5. package/dist/cjs/resources/SignIn.js +83 -34
  6. package/dist/cjs/resources/SignIn.js.map +1 -1
  7. package/dist/cjs/utils/construct.js +90 -4
  8. package/dist/cjs/utils/construct.js.map +1 -1
  9. package/dist/cjs/utils/index.js +5 -1
  10. package/dist/cjs/utils/index.js.map +1 -1
  11. package/dist/cjs/utils/redirectUrls.js +155 -0
  12. package/dist/cjs/utils/redirectUrls.js.map +1 -0
  13. package/dist/cjs/utils/windowNavigate.js +45 -0
  14. package/dist/cjs/utils/windowNavigate.js.map +1 -0
  15. package/dist/esm/index.js +2 -0
  16. package/dist/esm/index.js.map +1 -1
  17. package/dist/esm/instance/TernAuth.js +75 -132
  18. package/dist/esm/instance/TernAuth.js.map +1 -1
  19. package/dist/esm/resources/SignIn.js +83 -34
  20. package/dist/esm/resources/SignIn.js.map +1 -1
  21. package/dist/esm/utils/construct.js +83 -4
  22. package/dist/esm/utils/construct.js.map +1 -1
  23. package/dist/esm/utils/index.js +2 -0
  24. package/dist/esm/utils/index.js.map +1 -1
  25. package/dist/esm/utils/redirectUrls.js +131 -0
  26. package/dist/esm/utils/redirectUrls.js.map +1 -0
  27. package/dist/esm/utils/windowNavigate.js +19 -0
  28. package/dist/esm/utils/windowNavigate.js.map +1 -0
  29. package/dist/types/index.d.ts +2 -1
  30. package/dist/types/index.d.ts.map +1 -1
  31. package/dist/types/instance/TernAuth.d.ts +9 -9
  32. package/dist/types/instance/TernAuth.d.ts.map +1 -1
  33. package/dist/types/resources/SignIn.d.ts +25 -4
  34. package/dist/types/resources/SignIn.d.ts.map +1 -1
  35. package/dist/types/utils/construct.d.ts +31 -0
  36. package/dist/types/utils/construct.d.ts.map +1 -1
  37. package/dist/types/utils/index.d.ts +2 -0
  38. package/dist/types/utils/index.d.ts.map +1 -1
  39. package/dist/types/utils/redirectUrls.d.ts +23 -0
  40. package/dist/types/utils/redirectUrls.d.ts.map +1 -0
  41. package/dist/types/utils/windowNavigate.d.ts +12 -0
  42. package/dist/types/utils/windowNavigate.d.ts.map +1 -0
  43. package/package.json +3 -3
@@ -1,4 +1,4 @@
1
- import type { CreateActiveSession, InstanceType, ListenerCallback, SessionResource, SignedInSession, SignInRedirectOptions, SignInResource, SignInResponse, SignOut, SignUpRedirectOptions, SignUpResource, TernAuthSDK, TernSecureAuth as TernSecureAuthInterface, TernSecureAuthOptions, TernSecureUser, TernSecureUserData, UnsubscribeCallback } from '@tern-secure/types';
1
+ import type { CreateActiveSession, InstanceType, ListenerCallback, NavigateOptions, SessionResource, SignedInSession, SignInRedirectOptions, SignInResource, SignInResponse, SignOut, SignUpRedirectOptions, SignUpResource, TernAuthSDK, TernSecureAuth as TernSecureAuthInterface, TernSecureAuthOptions, TernSecureUser, TernSecureUserData, UnsubscribeCallback } from '@tern-secure/types';
2
2
  import type { Auth as TernAuth } from 'firebase/auth';
3
3
  import { AuthCookieManager } from '../resources/internal';
4
4
  import { type ApiClient } from './c_coreApiClient';
@@ -22,9 +22,9 @@ export declare class TernSecureAuth implements TernSecureAuthInterface {
22
22
  error: Error | null;
23
23
  user: TernSecureUser | null | undefined;
24
24
  __internal_country?: string | null;
25
- signIn: SignInResource;
26
- signUp: SignUpResource;
27
- session: SessionResource;
25
+ signIn: SignInResource | null | undefined;
26
+ signUp: SignUpResource | null | undefined;
27
+ session: SessionResource | null | undefined;
28
28
  get isReady(): boolean;
29
29
  get status(): TernSecureAuthInterface['status'];
30
30
  get version(): string;
@@ -44,9 +44,11 @@ export declare class TernSecureAuth implements TernSecureAuthInterface {
44
44
  authCookieManager(): AuthCookieManager | undefined;
45
45
  _internal_getOption<K extends keyof TernSecureAuthOptions>(key: K): TernSecureAuthOptions[K];
46
46
  _internal_getAllOptions(): Readonly<TernSecureAuthOptions>;
47
- static getorCreateInstance(options?: TernSecureAuthOptions): TernSecureAuth;
47
+ static getOrCreateInstance(options?: TernSecureAuthOptions): TernSecureAuth;
48
48
  static clearInstance(): void;
49
49
  static initialize(options: TernSecureAuthOptions): TernSecureAuth;
50
+ initialize: (options?: TernSecureAuthOptions) => Promise<void>;
51
+ static create(options: TernSecureAuthOptions): TernSecureAuth;
50
52
  private initializeFirebaseApp;
51
53
  /**
52
54
  * use when cookie are not httpOnly
@@ -71,13 +73,11 @@ export declare class TernSecureAuth implements TernSecureAuthInterface {
71
73
  on: TernSecureAuthInterface['on'];
72
74
  off: TernSecureAuthInterface['off'];
73
75
  createActiveSession: CreateActiveSession;
74
- initialize(options: TernSecureAuthOptions): Promise<void>;
75
- static create(options: TernSecureAuthOptions): TernSecureAuth;
76
- _initialize: (options: TernSecureAuthOptions) => void;
76
+ navigate: (to: string | undefined, options?: NavigateOptions) => Promise<unknown>;
77
77
  constructUrlWithAuthRedirect: (to: string) => string;
78
78
  redirectToSignIn: (options?: SignInRedirectOptions) => Promise<unknown>;
79
79
  redirectToSignUp: (options?: SignUpRedirectOptions) => Promise<unknown>;
80
- redirectAfterSignIn: () => Promise<void>;
80
+ redirectAfterSignIn: () => Promise<unknown>;
81
81
  redirectAfterSignUp: () => void;
82
82
  constructSignInUrl: (options?: SignInRedirectOptions) => string;
83
83
  constructSignUpUrl: (options?: SignUpRedirectOptions) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"TernAuth.d.ts","sourceRoot":"","sources":["../../../src/instance/TernAuth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TernAuth.d.ts","sourceRoot":"","sources":["../../../src/instance/TernAuth.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ResendEmailVerification, SignInFormValues, SignInResource, SignInResponse as SignInResponseFromTypes, SignInStatus } from '@tern-secure/types';
1
+ import type { ResendEmailVerification, SignInFormValues, SignInResource, SignInResponse as SignInResponseFromTypes, SignInStatus, SocialProviderOptions } from '@tern-secure/types';
2
2
  import type { Auth, UserCredential } from 'firebase/auth';
3
3
  import { TernSecureBase } from './Base';
4
4
  type SignInResponse = SignInResponseFromTypes;
@@ -7,6 +7,10 @@ export type SignInParams = {
7
7
  idToken: string;
8
8
  csrfToken: string | undefined;
9
9
  };
10
+ /**
11
+ * Supported OAuth providers
12
+ */
13
+ export type SupportedProvider = 'google' | 'apple' | 'microsoft' | 'github' | 'twitter' | 'facebook' | string;
10
14
  export declare class SignIn extends TernSecureBase implements SignInResource {
11
15
  pathRoot: string;
12
16
  status?: SignInStatus | undefined;
@@ -17,14 +21,31 @@ export declare class SignIn extends TernSecureBase implements SignInResource {
17
21
  signInWithCredential: (credential: UserCredential) => Promise<import("..").ApiResponseJSON<any> | null>;
18
22
  withEmailAndPassword: (params: SignInFormValues) => Promise<SignInResponse>;
19
23
  withCredential: (params: SignInFormValues) => Promise<void>;
20
- withSocialProvider: (provider: string, options?: {
21
- mode?: "popup" | "redirect";
22
- }) => Promise<SignInResponse | void>;
24
+ withSocialProvider: (provider: SupportedProvider, options?: SocialProviderOptions) => Promise<SignInResponse | void>;
23
25
  completeMfaSignIn: (_mfaToken: string, _mfaContext?: any) => Promise<SignInResponse>;
24
26
  sendPasswordResetEmail: (email: string) => Promise<void>;
25
27
  resendEmailVerification: () => Promise<ResendEmailVerification>;
26
28
  private getProviderConfig;
27
29
  private authRedirectResult;
30
+ /**
31
+ * Sets custom OAuth parameters on the provider if provided by consumer
32
+ * @param provider - Firebase auth provider instance
33
+ * @param customParameters - Consumer-provided OAuth parameters
34
+ */
35
+ private setProviderCustomParameters;
36
+ /**
37
+ * Adds OAuth scopes to the provider if provided by consumer
38
+ * Handles provider-specific scope setting logic
39
+ * @param provider - Firebase auth provider instance
40
+ * @param scopes - Array of OAuth scopes to request
41
+ */
42
+ private setProviderScopes;
43
+ /**
44
+ * Configures OAuth provider with consumer-provided options
45
+ * @param provider - Firebase auth provider instance
46
+ * @param options - Consumer options containing custom parameters and scopes
47
+ */
48
+ private configureProvider;
28
49
  private executeAuthMethod;
29
50
  private _signInWithRedirect;
30
51
  private _signInWithPopUp;
@@ -1 +1 @@
1
- {"version":3,"file":"SignIn.d.ts","sourceRoot":"","sources":["../../../src/resources/SignIn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,cAAc,IAAI,uBAAuB,EACzC,YAAY,EAEb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAW1D,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,KAAK,cAAc,GAAG,uBAAuB,CAAC;AAO9C,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC;AAE1C,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAAC;AASF,qBAAa,MAAO,SAAQ,cAAe,YAAW,cAAc;IAClE,QAAQ,SAA6B;IAErC,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAClC,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,YAAY,CAA+B;gBAEvC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS;IAMrD,oBAAoB,GAAU,YAAY,cAAc,uDAWtD;IAEF,oBAAoB,GAAU,QAAQ,gBAAgB,KAAG,OAAO,CAAC,cAAc,CAAC,CAwB9E;IAEF,cAAc,GAAU,QAAQ,gBAAgB,KAAG,OAAO,CAAC,IAAI,CAAC,CAS9D;IAEF,kBAAkB,GAChB,UAAU,MAAM,EAChB,UAAU;QACR,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;KAC7B,KACA,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CA4B/B;IAEF,iBAAiB,GAAU,WAAW,MAAM,EAAE,cAAc,GAAG,KAAG,OAAO,CAAC,cAAc,CAAC,CAEvF;IAEF,sBAAsB,GAAU,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;IAEF,uBAAuB,QAAa,OAAO,CAAC,uBAAuB,CAAC,CAuBlE;IAEF,OAAO,CAAC,iBAAiB;YA0BX,kBAAkB;YAwBlB,iBAAiB;YAmBjB,mBAAmB;YAInB,gBAAgB;IAIjB,mBAAmB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAGnE"}
1
+ {"version":3,"file":"SignIn.d.ts","sourceRoot":"","sources":["../../../src/resources/SignIn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,cAAc,IAAI,uBAAuB,EACzC,YAAY,EACZ,qBAAqB,EAEtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAW1D,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,KAAK,cAAc,GAAG,uBAAuB,CAAC;AAO9C,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC;AAE1C,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAAC;AASF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,OAAO,GACP,WAAW,GACX,QAAQ,GACR,SAAS,GACT,UAAU,GACV,MAAM,CAAC;AAGX,qBAAa,MAAO,SAAQ,cAAe,YAAW,cAAc;IAClE,QAAQ,SAA6B;IAErC,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAClC,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,YAAY,CAA+B;gBAEvC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS;IAMrD,oBAAoB,GAAU,YAAY,cAAc,uDAWtD;IAEF,oBAAoB,GAAU,QAAQ,gBAAgB,KAAG,OAAO,CAAC,cAAc,CAAC,CAwB9E;IAEF,cAAc,GAAU,QAAQ,gBAAgB,KAAG,OAAO,CAAC,IAAI,CAAC,CAS9D;IAEF,kBAAkB,GAChB,UAAU,iBAAiB,EAC3B,UAAS,qBAA0B,KAClC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAsB/B;IAEF,iBAAiB,GAAU,WAAW,MAAM,EAAE,cAAc,GAAG,KAAG,OAAO,CAAC,cAAc,CAAC,CAEvF;IAEF,sBAAsB,GAAU,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;IAEF,uBAAuB,QAAa,OAAO,CAAC,uBAAuB,CAAC,CAuBlE;IAEF,OAAO,CAAC,iBAAiB;YA+BX,kBAAkB;IAwBhC;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAWnC;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,iBAAiB,CAkCvB;YAEY,mBAAmB;YAOnB,gBAAgB;IAOjB,mBAAmB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAGnE"}
@@ -63,5 +63,36 @@ export declare const getPreviousPath: () => string | null;
63
63
  */
64
64
  export declare const getValidRedirectUrl: (searchParams: URLSearchParams, configuredRedirect?: string) => string;
65
65
  export declare function toURL(url: string | URL): URL;
66
+ /**
67
+ *
68
+ * stripOrigin(url: URL | string): string
69
+ *
70
+ * Strips the origin part of a URL and preserves path, search and hash is applicable
71
+ *
72
+ * References:
73
+ * https://developer.mozilla.org/en-US/docs/Web/API/URL
74
+ *
75
+ * @param {URL | string} url
76
+ * @returns {string} Returns the URL href without the origin
77
+ */
78
+ export declare function stripOrigin(url: URL | string): string;
79
+ /**
80
+ * trimTrailingSlash(path: string): string
81
+ *
82
+ * Strips the trailing slashes from a string
83
+ *
84
+ * @returns {string} Returns the string without trailing slashes
85
+ * @param path
86
+ */
87
+ export declare const trimTrailingSlash: (path: string) => string;
88
+ export declare function isValidUrl(val: unknown): val is string;
89
+ export declare function relativeToAbsoluteUrl(url: string, origin: string | URL): URL;
90
+ /**
91
+ * Check for potentially problematic URLs that could have been crafted to intentionally bypass the origin check. Note that the URLs passed to this
92
+ * function are assumed to be from an "allowed origin", so we are not executing origin-specific checks here.
93
+ */
94
+ export declare function isProblematicUrl(url: URL): boolean;
95
+ export declare function hasBannedProtocol(val: string | URL): boolean;
96
+ export declare const isAllowedRedirect: (allowedRedirectOrigins: Array<string | RegExp> | undefined, currentOrigin: string) => (_url: URL | string) => boolean;
66
97
  export {};
67
98
  //# sourceMappingURL=construct.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"construct.d.ts","sourceRoot":"","sources":["../../../src/utils/construct.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,6BAA6B,GAAG;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,UAAU,cAAe,SAAQ,OAAO,CAAC,GAAG,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EACb,eAAe,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAED,UAAU,eAAe,CAAC,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,CAAC;CACf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,EACxC,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B,CAAC,SAAS,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC;AA8EjC;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,WAO5C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,aAAa,MAAM,EAAE,cAAc,MAAM,KAAG,OAQ3E,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,SAAS,6BAA6B,KAAG,MAsBxE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,IAIhD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,QAAO,MAAM,GAAG,IAK3C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,cAAc,eAAe,EAC7B,qBAAqB,MAAM,KAC1B,MAcF,CAAC;AAsBF,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,CAE5C"}
1
+ {"version":3,"file":"construct.d.ts","sourceRoot":"","sources":["../../../src/utils/construct.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,6BAA6B,GAAG;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,UAAU,cAAe,SAAQ,OAAO,CAAC,GAAG,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EACb,eAAe,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAED,UAAU,eAAe,CAAC,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,CAAC;CACf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,EACxC,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B,CAAC,SAAS,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC;AAsEjC;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,WAO5C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,aAAa,MAAM,EAAE,cAAc,MAAM,KAAG,OAQ3E,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,SAAS,6BAA6B,KAAG,MAsBxE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,IAIhD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,QAAO,MAAM,GAAG,IAK3C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,cAAc,eAAe,EAC7B,qBAAqB,MAAM,KAC1B,MAcF,CAAC;AAsBF,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,CAE5C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,MAAM,CAGrD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,MAEhD,CAAC;AAEF,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAWtD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,CAM5E;AAUD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAYlD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,WAMlD;AAED,eAAO,MAAM,iBAAiB,GAC3B,wBAAwB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,EAAE,eAAe,MAAM,MACjF,MAAM,GAAG,GAAG,MAAM,YA2BlB,CAAC"}
@@ -1,3 +1,5 @@
1
1
  export * from './construct';
2
2
  export * from './querystring';
3
+ export * from './redirectUrls';
4
+ export * from './windowNavigate';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { RedirectOptions, TernSecureAuthOptions } from '@tern-secure/types';
2
+ /**
3
+ * RedirectUrls class handles all redirect URL construction logic
4
+ * for sign-in, sign-up, and post-authentication flows.
5
+ *
6
+ * This class centralizes the redirect logic previously scattered across
7
+ * multiple methods, making it reusable and maintainable.
8
+ */
9
+ export declare class RedirectUrls {
10
+ #private;
11
+ private static keys;
12
+ private static preserved;
13
+ private readonly options;
14
+ private readonly fromOptions;
15
+ private readonly fromProps;
16
+ private readonly fromSearchParams;
17
+ constructor(options: TernSecureAuthOptions, props?: RedirectOptions, searchParams?: any);
18
+ getAfterSignInUrl(): string;
19
+ getAfterSignUpUrl(): string;
20
+ getPreservedSearchParams(): URLSearchParams;
21
+ toSearchParams(): URLSearchParams;
22
+ }
23
+ //# sourceMappingURL=redirectUrls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redirectUrls.d.ts","sourceRoot":"","sources":["../../../src/utils/redirectUrls.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAIjF;;;;;;GAMG;AACH,qBAAa,YAAY;;IACvB,OAAO,CAAC,MAAM,CAAC,IAAI,CAQjB;IAEF,OAAO,CAAC,MAAM,CAAC,SAAS,CAAmB;IAE3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoD;gBAEzE,OAAO,EAAE,qBAAqB,EAAE,KAAK,GAAE,eAAoB,EAAE,YAAY,GAAE,GAAQ;IAO/F,iBAAiB;IAIjB,iBAAiB;IAIjB,wBAAwB;IAIxB,cAAc;CA6If"}
@@ -0,0 +1,12 @@
1
+ export declare const BEFORE_UNLOAD_EVENT = "ternsecure:beforeunload";
2
+ /**
3
+ * Additional protocols can be provided using the `allowedRedirectProtocols` option.
4
+ */
5
+ export declare const ALLOWED_PROTOCOLS: string[];
6
+ /**
7
+ * Helper utility to navigate via window.location.href. Also dispatches a ternsecure:beforeunload custom event.
8
+ *
9
+ * Note that this utility should **never** be called with a user-provided URL. We make no specific checks against the contents of the URL here and assume it is safe.
10
+ */
11
+ export declare function windowNavigate(to: URL | string): void;
12
+ //# sourceMappingURL=windowNavigate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windowNavigate.d.ts","sourceRoot":"","sources":["../../../src/utils/windowNavigate.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,iBAAiB,UAM7B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAIrD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tern-secure/auth",
3
- "version": "1.1.0-canary.v20251020032343",
3
+ "version": "1.1.0-canary.v20251023005301",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/TernSecure/auth.git",
@@ -25,8 +25,8 @@
25
25
  "dependencies": {
26
26
  "server-only": "^0.0.1",
27
27
  "tslib": "2.4.1",
28
- "@tern-secure/shared": "1.3.0-canary.v20251020032343",
29
- "@tern-secure/types": "1.1.0-canary.v20251020032343"
28
+ "@tern-secure/shared": "1.3.0-canary.v20251023005301",
29
+ "@tern-secure/types": "1.1.0-canary.v20251023005301"
30
30
  },
31
31
  "devDependencies": {
32
32
  "firebase": "^12.0.0",