@tern-secure/auth 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/global.d.js +2 -0
- package/dist/cjs/global.d.js.map +1 -0
- package/dist/cjs/index.js +42 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/instance/TernAuth.js +471 -0
- package/dist/cjs/instance/TernAuth.js.map +1 -0
- package/dist/cjs/instance/TernAuthServer.js +95 -0
- package/dist/cjs/instance/TernAuthServer.js.map +1 -0
- package/dist/cjs/instance/coreApiClient.example.js +96 -0
- package/dist/cjs/instance/coreApiClient.example.js.map +1 -0
- package/dist/cjs/instance/coreApiClient.js +255 -0
- package/dist/cjs/instance/coreApiClient.js.map +1 -0
- package/dist/cjs/instance/events.js +38 -0
- package/dist/cjs/instance/events.js.map +1 -0
- package/dist/cjs/resources/AuthCookieManager.js +89 -0
- package/dist/cjs/resources/AuthCookieManager.js.map +1 -0
- package/dist/cjs/resources/Base.js +125 -0
- package/dist/cjs/resources/Base.js.map +1 -0
- package/dist/cjs/resources/Error.js +31 -0
- package/dist/cjs/resources/Error.js.map +1 -0
- package/dist/cjs/resources/SignIn.js +224 -0
- package/dist/cjs/resources/SignIn.js.map +1 -0
- package/dist/cjs/resources/SignUp.js +43 -0
- package/dist/cjs/resources/SignUp.js.map +1 -0
- package/dist/cjs/resources/index.js +23 -0
- package/dist/cjs/resources/index.js.map +1 -0
- package/dist/cjs/resources/internal.js +33 -0
- package/dist/cjs/resources/internal.js.map +1 -0
- package/dist/cjs/utils/construct.js +174 -0
- package/dist/cjs/utils/construct.js.map +1 -0
- package/dist/cjs/utils/index.js +25 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/querystring.js +70 -0
- package/dist/cjs/utils/querystring.js.map +1 -0
- package/dist/esm/global.d.js +1 -0
- package/dist/esm/global.d.js.map +1 -0
- package/dist/esm/index.js +13 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/instance/TernAuth.js +455 -0
- package/dist/esm/instance/TernAuth.js.map +1 -0
- package/dist/esm/instance/TernAuthServer.js +73 -0
- package/dist/esm/instance/TernAuthServer.js.map +1 -0
- package/dist/esm/instance/coreApiClient.example.js +70 -0
- package/dist/esm/instance/coreApiClient.example.js.map +1 -0
- package/dist/esm/instance/coreApiClient.js +226 -0
- package/dist/esm/instance/coreApiClient.js.map +1 -0
- package/dist/esm/instance/events.js +13 -0
- package/dist/esm/instance/events.js.map +1 -0
- package/dist/esm/resources/AuthCookieManager.js +67 -0
- package/dist/esm/resources/AuthCookieManager.js.map +1 -0
- package/dist/esm/resources/Base.js +101 -0
- package/dist/esm/resources/Base.js.map +1 -0
- package/dist/esm/resources/Error.js +9 -0
- package/dist/esm/resources/Error.js.map +1 -0
- package/dist/esm/resources/SignIn.js +208 -0
- package/dist/esm/resources/SignIn.js.map +1 -0
- package/dist/esm/resources/SignUp.js +19 -0
- package/dist/esm/resources/SignUp.js.map +1 -0
- package/dist/esm/resources/index.js +2 -0
- package/dist/esm/resources/index.js.map +1 -0
- package/dist/esm/resources/internal.js +7 -0
- package/dist/esm/resources/internal.js.map +1 -0
- package/dist/esm/utils/construct.js +143 -0
- package/dist/esm/utils/construct.js.map +1 -0
- package/dist/esm/utils/index.js +3 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/querystring.js +45 -0
- package/dist/esm/utils/querystring.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/instance/TernAuth.d.ts +62 -0
- package/dist/types/instance/TernAuth.d.ts.map +1 -0
- package/dist/types/instance/TernAuthServer.d.ts +32 -0
- package/dist/types/instance/TernAuthServer.d.ts.map +1 -0
- package/dist/types/instance/coreApiClient.d.ts +65 -0
- package/dist/types/instance/coreApiClient.d.ts.map +1 -0
- package/dist/types/instance/coreApiClient.example.d.ts +8 -0
- package/dist/types/instance/coreApiClient.example.d.ts.map +1 -0
- package/dist/types/instance/events.d.ts +27 -0
- package/dist/types/instance/events.d.ts.map +1 -0
- package/dist/types/resources/AuthCookieManager.d.ts +26 -0
- package/dist/types/resources/AuthCookieManager.d.ts.map +1 -0
- package/dist/types/resources/Base.d.ts +40 -0
- package/dist/types/resources/Base.d.ts.map +1 -0
- package/dist/types/resources/Error.d.ts +2 -0
- package/dist/types/resources/Error.d.ts.map +1 -0
- package/dist/types/resources/SignIn.d.ts +32 -0
- package/dist/types/resources/SignIn.d.ts.map +1 -0
- package/dist/types/resources/SignUp.d.ts +14 -0
- package/dist/types/resources/SignUp.d.ts.map +1 -0
- package/dist/types/resources/index.d.ts +2 -0
- package/dist/types/resources/index.d.ts.map +1 -0
- package/dist/types/resources/internal.d.ts +8 -0
- package/dist/types/resources/internal.d.ts.map +1 -0
- package/dist/types/utils/construct.d.ts +67 -0
- package/dist/types/utils/construct.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +3 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/querystring.d.ts +7 -0
- package/dist/types/utils/querystring.d.ts.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { TernSecureApiErrorJSON } from '@tern-secure/types';
|
|
2
|
+
export type HTTPMethod = 'CONNECT' | 'DELETE' | 'GET' | 'HEAD' | 'OPTIONS' | 'PATCH' | 'POST' | 'PUT' | 'TRACE';
|
|
3
|
+
export type ApiRequestInit = RequestInit & {
|
|
4
|
+
path?: string;
|
|
5
|
+
search?: ConstructorParameters<typeof URLSearchParams>[0];
|
|
6
|
+
sessionId?: string;
|
|
7
|
+
url?: URL;
|
|
8
|
+
};
|
|
9
|
+
export interface ApiResponseJSON<T> {
|
|
10
|
+
response: T;
|
|
11
|
+
errors?: TernSecureApiErrorJSON[];
|
|
12
|
+
}
|
|
13
|
+
export type ApiResponse<T> = Response & {
|
|
14
|
+
payload: ApiResponseJSON<T> | null;
|
|
15
|
+
};
|
|
16
|
+
export type ApiRequestCallback<T> = (request: ApiRequestInit, response?: ApiResponse<T>) => unknown;
|
|
17
|
+
export interface RequestOptions {
|
|
18
|
+
timeoutMs?: number;
|
|
19
|
+
maxTries?: number;
|
|
20
|
+
initialDelay?: number;
|
|
21
|
+
factor?: number;
|
|
22
|
+
maxDelay?: number;
|
|
23
|
+
failureThreshold?: number;
|
|
24
|
+
recoveryTimeoutMs?: number;
|
|
25
|
+
apiUrl?: string;
|
|
26
|
+
frontendApi?: string;
|
|
27
|
+
}
|
|
28
|
+
export type BeforeRequestHook = () => boolean | Promise<boolean>;
|
|
29
|
+
export type AfterResponseHook = (response: ApiResponse<any>) => boolean | Promise<boolean>;
|
|
30
|
+
export declare class NetworkError extends Error {
|
|
31
|
+
url: string;
|
|
32
|
+
original: Error;
|
|
33
|
+
constructor(url: string, original: Error);
|
|
34
|
+
}
|
|
35
|
+
export declare class TimeoutError extends Error {
|
|
36
|
+
constructor();
|
|
37
|
+
}
|
|
38
|
+
export declare class CircuitOpenError extends Error {
|
|
39
|
+
constructor();
|
|
40
|
+
}
|
|
41
|
+
export declare class HTTPError extends Error {
|
|
42
|
+
status: number;
|
|
43
|
+
url: string;
|
|
44
|
+
body?: any | undefined;
|
|
45
|
+
constructor(status: number, url: string, body?: any | undefined);
|
|
46
|
+
}
|
|
47
|
+
export declare class CoreApiClient {
|
|
48
|
+
private options;
|
|
49
|
+
private circuitBreaker;
|
|
50
|
+
private beforeRequestHooks;
|
|
51
|
+
private afterResponseHooks;
|
|
52
|
+
constructor(options?: RequestOptions);
|
|
53
|
+
onBeforeRequest(hook: BeforeRequestHook): void;
|
|
54
|
+
onAfterResponse(hook: AfterResponseHook): void;
|
|
55
|
+
private runBeforeRequestHooks;
|
|
56
|
+
private runAfterResponseHooks;
|
|
57
|
+
private checkCircuitBreaker;
|
|
58
|
+
private recordSuccess;
|
|
59
|
+
private recordFailure;
|
|
60
|
+
private shouldRetry;
|
|
61
|
+
private retryWithBackoff;
|
|
62
|
+
request<T>(init: ApiRequestInit, opts?: RequestOptions): Promise<ApiResponse<T>>;
|
|
63
|
+
}
|
|
64
|
+
export declare const coreApiClient: CoreApiClient;
|
|
65
|
+
//# sourceMappingURL=coreApiClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coreApiClient.d.ts","sourceRoot":"","sources":["../../../src/instance/coreApiClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example usage of CoreApiClient
|
|
3
|
+
*/
|
|
4
|
+
declare function basicExample(): Promise<void>;
|
|
5
|
+
declare function clientWithHooksExample(): Promise<void>;
|
|
6
|
+
declare function postExample(): Promise<void>;
|
|
7
|
+
export { basicExample, clientWithHooksExample, postExample };
|
|
8
|
+
//# sourceMappingURL=coreApiClient.example.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coreApiClient.example.d.ts","sourceRoot":"","sources":["../../../src/instance/coreApiClient.example.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,iBAAe,YAAY,kBAe1B;AAGD,iBAAe,sBAAsB,kBA+BpC;AAGD,iBAAe,WAAW,kBAkBzB;AAED,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { TernSecureUser } from "@tern-secure/types";
|
|
2
|
+
import type { IdTokenResult } from "firebase/auth";
|
|
3
|
+
export declare const events: {
|
|
4
|
+
readonly UserChanged: "user:userChanged";
|
|
5
|
+
readonly UserSignOut: "user:userSignOut";
|
|
6
|
+
readonly SessionChanged: "session:sessionChanged";
|
|
7
|
+
readonly TokenRefreshed: "token:tokenRefreshed";
|
|
8
|
+
};
|
|
9
|
+
type TokenUpdatePayload = {
|
|
10
|
+
token: IdTokenResult | null;
|
|
11
|
+
};
|
|
12
|
+
type InternalEvents = {
|
|
13
|
+
[events.UserChanged]: TernSecureUser | null;
|
|
14
|
+
[events.UserSignOut]: null;
|
|
15
|
+
[events.SessionChanged]: null;
|
|
16
|
+
[events.TokenRefreshed]: TokenUpdatePayload;
|
|
17
|
+
};
|
|
18
|
+
export declare const eventBus: {
|
|
19
|
+
on: <Event extends keyof InternalEvents>(event: Event, handler: (payload: InternalEvents[Event]) => void, opts?: {
|
|
20
|
+
notify?: boolean;
|
|
21
|
+
}) => void;
|
|
22
|
+
emit: <Event extends keyof InternalEvents>(event: Event, payload: InternalEvents[Event]) => void;
|
|
23
|
+
off: <Event extends keyof InternalEvents>(event: Event, handler?: ((payload: InternalEvents[Event]) => void) | undefined) => void;
|
|
24
|
+
getListeners: <Event extends keyof InternalEvents>(event: Event) => Array<(...args: any[]) => void>;
|
|
25
|
+
};
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/instance/events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,eAAO,MAAM,MAAM;;;;;CAKT,CAAC;AAEX,KAAK,kBAAkB,GAAG;IAAE,KAAK,EAAE,aAAa,GAAG,IAAI,CAAA;CAAE,CAAC;AAG1D,KAAK,cAAc,GAAG;IACpB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5C,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAC3B,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAC9B,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,kBAAkB,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,QAAQ;;cACZ,CAAC;;;;+EAAghB,GAAG;CADre,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
type CSRFToken = {
|
|
2
|
+
token: string | null;
|
|
3
|
+
};
|
|
4
|
+
/**
|
|
5
|
+
* AuthCookieManger class for managing authentication state and cookies
|
|
6
|
+
*/
|
|
7
|
+
export declare class AuthCookieManager {
|
|
8
|
+
private readonly csrfCookieHandler;
|
|
9
|
+
constructor();
|
|
10
|
+
private generateCSRFToken;
|
|
11
|
+
private ensureCSRFToken;
|
|
12
|
+
/**
|
|
13
|
+
* Set CSRFcookie
|
|
14
|
+
*/
|
|
15
|
+
setCSRFToken(token: CSRFToken): void;
|
|
16
|
+
/**
|
|
17
|
+
* Get CSRF token from cookies
|
|
18
|
+
*/
|
|
19
|
+
getCSRFToken(): string | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Clear all authentication cookies
|
|
22
|
+
*/
|
|
23
|
+
clearAuth(): void;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=AuthCookieManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthCookieManager.d.ts","sourceRoot":"","sources":["../../../src/resources/AuthCookieManager.ts"],"names":[],"mappings":"AAMA,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAA;AAUD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmC;;IAOrE,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,eAAe;IAUvB;;MAEE;IAEF,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAYpC;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAUlC;;OAEG;IACH,SAAS,IAAI,IAAI;CAOlB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ApiRequestInit, ApiResponseJSON } from '../instance/coreApiClient';
|
|
2
|
+
import type { AuthCookieManager, TernSecureAuth } from './internal';
|
|
3
|
+
export type HTTPMethod = 'CONNECT' | 'DELETE' | 'GET' | 'HEAD' | 'OPTIONS' | 'PATCH' | 'POST' | 'PUT' | 'TRACE';
|
|
4
|
+
export type PostMutateParams = {
|
|
5
|
+
action?: string | undefined;
|
|
6
|
+
body?: any;
|
|
7
|
+
method?: HTTPMethod | undefined;
|
|
8
|
+
path?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare abstract class TernSecureBase {
|
|
11
|
+
static ternsecure: TernSecureAuth;
|
|
12
|
+
static get apiUrl(): string;
|
|
13
|
+
static get authCookieManager(): AuthCookieManager | undefined;
|
|
14
|
+
protected get authCookieManager(): AuthCookieManager | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Core method to fetch data from API endpoints using coreApiClient
|
|
17
|
+
* This method handles the complete request lifecycle including error handling
|
|
18
|
+
*/
|
|
19
|
+
static fetchFromCoreApi(requestInit: ApiRequestInit): Promise<ApiResponseJSON<any> | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Convenience method for making POST requests
|
|
22
|
+
*/
|
|
23
|
+
static basePost(params: PostMutateParams): Promise<ApiResponseJSON<any> | null>;
|
|
24
|
+
/**
|
|
25
|
+
* Instance method to fetch data from API endpoints
|
|
26
|
+
*/
|
|
27
|
+
protected fetchFromCoreApi(requestInit: ApiRequestInit): Promise<ApiResponseJSON<any> | null>;
|
|
28
|
+
/**
|
|
29
|
+
* Instance method for making POST requests
|
|
30
|
+
*/
|
|
31
|
+
protected basePost(params: PostMutateParams): Promise<ApiResponseJSON<any> | null>;
|
|
32
|
+
/**
|
|
33
|
+
* Protected instance method for making POST requests with specific path and body
|
|
34
|
+
* This is designed to be used by child classes like SignIn
|
|
35
|
+
*/
|
|
36
|
+
protected _post(params: PostMutateParams): Promise<ApiResponseJSON<any> | null>;
|
|
37
|
+
static makeApiRequest(requestInit: ApiRequestInit): Promise<ApiResponseJSON<any> | null>;
|
|
38
|
+
protected makeApiRequest(requestInit: ApiRequestInit): Promise<ApiResponseJSON<any> | null>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=Base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Base.d.ts","sourceRoot":"","sources":["../../../src/resources/Base.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAe,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG9F,OAAO,KAAK,EAAE,iBAAiB,EAAC,cAAc,EAAE,MAAM,YAAY,CAAC;AAEnE,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,QAAQ,GACR,KAAK,GACL,MAAM,GACN,SAAS,GACT,OAAO,GACP,MAAM,GACN,KAAK,GACL,OAAO,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,8BAAsB,cAAc;IAClC,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC;IAElC,MAAM,KAAK,MAAM,WAEhB;IAED,MAAM,KAAK,iBAAiB,IAAI,iBAAiB,GAAG,SAAS,CAE5D;IACD,SAAS,KAAK,iBAAiB,IAAI,iBAAiB,GAAG,SAAS,CAE/D;IAED;;;OAGG;WACU,gBAAgB,CAAC,WAAW,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAqDhG;;OAEG;WACU,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAIrF;;OAEG;cACa,gBAAgB,CAC9B,WAAW,EAAE,cAAc,GAC1B,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAIvC;;OAEG;cACa,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAIxF;;;OAGG;cACa,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;WAOxE,cAAc,CAAC,WAAW,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;cAI9E,cAAc,CAC5B,WAAW,EAAE,cAAc,GAC1B,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CAGxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Error.d.ts","sourceRoot":"","sources":["../../../src/resources/Error.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ResendEmailVerification, SignInFormValuesTree, SignInResource, SignInResponseTree, SignInStatus } from "@tern-secure/types";
|
|
2
|
+
import type { Auth, UserCredential } from "firebase/auth";
|
|
3
|
+
import { TernSecureBase } from "./Base";
|
|
4
|
+
export type TernRequestInit = RequestInit;
|
|
5
|
+
export type SignInParams = {
|
|
6
|
+
idToken: string;
|
|
7
|
+
csrfToken: string | undefined;
|
|
8
|
+
};
|
|
9
|
+
export declare class SignIn extends TernSecureBase implements SignInResource {
|
|
10
|
+
pathRoot: string;
|
|
11
|
+
status?: SignInStatus | undefined;
|
|
12
|
+
private auth;
|
|
13
|
+
private csrfToken;
|
|
14
|
+
private _currentUser;
|
|
15
|
+
constructor(auth: Auth, csrfToken: string | undefined);
|
|
16
|
+
signInWithCredential: (credential: UserCredential) => Promise<import("..").ApiResponseJSON<any> | null>;
|
|
17
|
+
withEmailAndPassword: (params: SignInFormValuesTree) => Promise<SignInResponseTree>;
|
|
18
|
+
withCredential: (params: SignInFormValuesTree) => Promise<void>;
|
|
19
|
+
withSocialProvider: (provider: string, options?: {
|
|
20
|
+
mode?: "popup" | "redirect";
|
|
21
|
+
}) => Promise<SignInResponseTree | void>;
|
|
22
|
+
completeMfaSignIn: (_mfaToken: string, _mfaContext?: any) => Promise<SignInResponseTree>;
|
|
23
|
+
sendPasswordResetEmail: (email: string) => Promise<void>;
|
|
24
|
+
resendEmailVerification: () => Promise<ResendEmailVerification>;
|
|
25
|
+
private getProviderConfig;
|
|
26
|
+
private authRedirectResult;
|
|
27
|
+
private executeAuthMethod;
|
|
28
|
+
private _signInWithRedirect;
|
|
29
|
+
private _signInWithPopUp;
|
|
30
|
+
checkRedirectResult(): Promise<SignInResponseTree | null>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=SignIn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignIn.d.ts","sourceRoot":"","sources":["../../../src/resources/SignIn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,YAAY,EAEb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,IAAI,EACJ,cAAc,EAAC,MAAM,eAAe,CAAC;AAWvC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAOxC,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;AAWF,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;IAOrD,oBAAoB,GAAU,YAAY,cAAc,uDAWtD;IAKF,oBAAoB,GAClB,QAAQ,oBAAoB,KAC3B,OAAO,CAAC,kBAAkB,CAAC,CA2B5B;IAEF,cAAc,GAAU,QAAQ,oBAAoB,KAAG,OAAO,CAAC,IAAI,CAAC,CAalE;IAEF,kBAAkB,GAChB,UAAU,MAAM,EAChB,UAAU;QACR,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;KAC7B,KACA,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA6BnC;IAEF,iBAAiB,GACf,WAAW,MAAM,EACjB,cAAc,GAAG,KAChB,OAAO,CAAC,kBAAkB,CAAC,CAE5B;IAEF,sBAAsB,GAAU,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;IAEF,uBAAuB,QAAa,OAAO,CAAC,uBAAuB,CAAC,CA2BlE;IAEF,OAAO,CAAC,iBAAiB;YA0BX,kBAAkB;YAuBlB,iBAAiB;YAoBjB,mBAAmB;YAMnB,gBAAgB;IAMjB,mBAAmB,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;CAGvE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SignUpResource, SignUpStatus } from '@tern-secure/types';
|
|
2
|
+
import type { Auth } from 'firebase/auth';
|
|
3
|
+
export declare class SignUp implements SignUpResource {
|
|
4
|
+
status?: SignUpStatus | null;
|
|
5
|
+
username?: string | null;
|
|
6
|
+
firstName?: string | null;
|
|
7
|
+
lastName?: string | null;
|
|
8
|
+
email: string | null;
|
|
9
|
+
private auth;
|
|
10
|
+
private ternSecureConfig?;
|
|
11
|
+
constructor(auth: Auth);
|
|
12
|
+
withSocialProvider(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=SignUp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignUp.d.ts","sourceRoot":"","sources":["../../../src/resources/SignUp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,cAAc,EACd,YAAY,EAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,qBAAa,MAAO,YAAW,cAAc;IACzC,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,CAAQ;IACpC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAQ;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAQ;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAO;IAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5B,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,gBAAgB,CAAC,CAAmB;gBAEhC,IAAI,EAAE,IAAI;IAIxB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resources/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type { TernSecureAuth } from '../instance/TernAuth';
|
|
2
|
+
export * from './SignUp';
|
|
3
|
+
export * from './SignIn';
|
|
4
|
+
export * from './Base';
|
|
5
|
+
export * from './AuthCookieManager';
|
|
6
|
+
export * from '../utils';
|
|
7
|
+
export * from './Error';
|
|
8
|
+
//# sourceMappingURL=internal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/resources/internal.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export type constructUrlWithRedirectProps = {
|
|
2
|
+
signInUrl: string;
|
|
3
|
+
signInPathParam?: string;
|
|
4
|
+
currentPath: string;
|
|
5
|
+
signUpUrl?: string;
|
|
6
|
+
signUpPathParam?: string;
|
|
7
|
+
};
|
|
8
|
+
interface BuildURLParams extends Partial<URL> {
|
|
9
|
+
base?: string;
|
|
10
|
+
hashPath?: string;
|
|
11
|
+
hashSearch?: string;
|
|
12
|
+
hashSearchParams?: URLSearchParams | Record<string, string> | Array<URLSearchParams | Record<string, string>>;
|
|
13
|
+
}
|
|
14
|
+
interface BuildURLOptions<T> {
|
|
15
|
+
skipOrigin?: boolean;
|
|
16
|
+
stringify?: T;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* buildURL(params: URLParams, options: BuildURLOptions): string
|
|
21
|
+
*
|
|
22
|
+
* Builds a URL safely by using the native URL() constructor. It can
|
|
23
|
+
* also build a secondary path and search URL that lives inside the hash
|
|
24
|
+
* of the main URL. For example:
|
|
25
|
+
*
|
|
26
|
+
* https://foo.com/bar?qux=42#/hash-bar?hash-qux=42
|
|
27
|
+
*
|
|
28
|
+
* References:
|
|
29
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/URL
|
|
30
|
+
*
|
|
31
|
+
* @param {BuildURLParams} params
|
|
32
|
+
* @param {BuildURLOptions} options
|
|
33
|
+
* @returns {URL | string} Returns the URL href
|
|
34
|
+
*/
|
|
35
|
+
export declare function buildURL<B extends boolean>(params: BuildURLParams, options?: BuildURLOptions<B>): B extends true ? string : URL;
|
|
36
|
+
/**
|
|
37
|
+
* Constructs a full URL with the current origin
|
|
38
|
+
* @param path - The path to construct the URL for
|
|
39
|
+
* @returns The full URL with origin
|
|
40
|
+
*/
|
|
41
|
+
export declare const constructFullUrl: (path: string) => string;
|
|
42
|
+
/**
|
|
43
|
+
* Checks if the current URL has a redirect loop
|
|
44
|
+
* @param currentPath - The current pathname
|
|
45
|
+
* @param redirectPath - The path we're trying to redirect to
|
|
46
|
+
* @returns boolean indicating if there's a redirect loop
|
|
47
|
+
*/
|
|
48
|
+
export declare const hasRedirectLoop: (currentPath: string, redirectPath: string) => boolean;
|
|
49
|
+
export declare const urlWithRedirect: (options: constructUrlWithRedirectProps) => string;
|
|
50
|
+
/**
|
|
51
|
+
* Stores the current path before signing out
|
|
52
|
+
*/
|
|
53
|
+
export declare const storePreviousPath: (path: string) => void;
|
|
54
|
+
/**
|
|
55
|
+
* Gets the stored previous path
|
|
56
|
+
*/
|
|
57
|
+
export declare const getPreviousPath: () => string | null;
|
|
58
|
+
/**
|
|
59
|
+
* Gets a validated redirect URL ensuring it's from the same origin
|
|
60
|
+
* @param redirectUrl - The URL to validate
|
|
61
|
+
* @param searchParams - The search parameters to check for redirect
|
|
62
|
+
* @returns A validated redirect URL
|
|
63
|
+
*/
|
|
64
|
+
export declare const getValidRedirectUrl: (searchParams: URLSearchParams, configuredRedirect?: string) => string;
|
|
65
|
+
export declare function toURL(url: string | URL): URL;
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=construct.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"construct.d.ts","sourceRoot":"","sources":["../../../src/utils/construct.ts"],"names":[],"mappings":"AAEA,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,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC/G;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;AAoGjC;;;;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,MAgBxE,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,GAAI,cAAc,eAAe,EAAE,qBAAqB,MAAM,KAAG,MAchG,CAAC;AAsBF,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,CAE5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const getQueryParams: (queryString: string) => Record<string, string>;
|
|
2
|
+
type StringifyQueryParamsOptions = {
|
|
3
|
+
keyEncoder?: (key: string) => string;
|
|
4
|
+
};
|
|
5
|
+
export declare const stringifyQueryParams: (params: Record<string, string | undefined | null | object | boolean | Array<string | undefined | null>> | null | undefined | string, opts?: StringifyQueryParamsOptions) => string;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=querystring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"querystring.d.ts","sourceRoot":"","sources":["../../../src/utils/querystring.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,GAAI,aAAa,MAAM,KAgBpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAClD,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,QACI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC,GAC/F,IAAI,GACJ,SAAS,GACT,MAAM,EACV,OAAM,2BAAgC,WA0BvC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tern-secure/auth",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"repository": {
|
|
5
|
+
"type": "git",
|
|
6
|
+
"url": "git+https://github.com/TernSecure/typescript.git",
|
|
7
|
+
"directory": "packages/auth"
|
|
8
|
+
},
|
|
9
|
+
"publishConfig": {
|
|
10
|
+
"access": "public"
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"dist"
|
|
14
|
+
],
|
|
15
|
+
"license": "ISC",
|
|
16
|
+
"description": "Firebase authentication client ready to use functions",
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./dist/types/index.d.ts",
|
|
20
|
+
"import": "./dist/esm/index.js",
|
|
21
|
+
"require": "./dist/cjs/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./package.json": "./package.json"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"server-only": "^0.0.1",
|
|
27
|
+
"tslib": "2.4.1",
|
|
28
|
+
"@tern-secure/shared": "1.2.0",
|
|
29
|
+
"@tern-secure/types": "1.0.4"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"firebase": "^12.0.0",
|
|
33
|
+
"jose": "^5.10.0",
|
|
34
|
+
"next": "15.3.2"
|
|
35
|
+
},
|
|
36
|
+
"peerDependencies": {
|
|
37
|
+
"firebase": "^11.0.0"
|
|
38
|
+
},
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=20"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"clean": "rimraf dist",
|
|
44
|
+
"build": "pnpm clean && tsup",
|
|
45
|
+
"build:add": "tsc -p tsconfig.add.json",
|
|
46
|
+
"dev": "tsup --watch",
|
|
47
|
+
"lint": "eslint src",
|
|
48
|
+
"check-types": "pnpm exec tsc --noEmit"
|
|
49
|
+
}
|
|
50
|
+
}
|