@passflow/core 0.0.1 → 0.2.8
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/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3230 -639
- package/dist/index.mjs.map +1 -1
- package/dist/lib/api/app.d.ts +4 -1
- package/dist/lib/api/app.d.ts.map +1 -1
- package/dist/lib/api/auth.d.ts +6 -4
- package/dist/lib/api/auth.d.ts.map +1 -1
- package/dist/lib/api/axios-client.d.ts +26 -4
- package/dist/lib/api/axios-client.d.ts.map +1 -1
- package/dist/lib/api/index.d.ts +4 -3
- package/dist/lib/api/index.d.ts.map +1 -1
- package/dist/lib/api/invitation.d.ts +4 -1
- package/dist/lib/api/invitation.d.ts.map +1 -1
- package/dist/lib/api/model.d.ts +180 -11
- package/dist/lib/api/model.d.ts.map +1 -1
- package/dist/lib/api/setting.d.ts +4 -1
- package/dist/lib/api/setting.d.ts.map +1 -1
- package/dist/lib/api/tenant.d.ts +4 -1
- package/dist/lib/api/tenant.d.ts.map +1 -1
- package/dist/lib/api/two-factor.d.ts +75 -0
- package/dist/lib/api/two-factor.d.ts.map +1 -0
- package/dist/lib/api/user.d.ts +4 -1
- package/dist/lib/api/user.d.ts.map +1 -1
- package/dist/lib/constants/index.d.ts +25 -0
- package/dist/lib/constants/index.d.ts.map +1 -1
- package/dist/lib/device/index.d.ts +17 -0
- package/dist/lib/device/index.d.ts.map +1 -0
- package/dist/lib/index.d.ts +10 -3
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/m2m/client.d.ts +196 -0
- package/dist/lib/m2m/client.d.ts.map +1 -0
- package/dist/lib/m2m/errors.d.ts +107 -0
- package/dist/lib/m2m/errors.d.ts.map +1 -0
- package/dist/lib/m2m/index.d.ts +27 -0
- package/dist/lib/m2m/index.d.ts.map +1 -0
- package/dist/lib/m2m/types.d.ts +217 -0
- package/dist/lib/m2m/types.d.ts.map +1 -0
- package/dist/lib/passflow.d.ts +972 -11
- package/dist/lib/passflow.d.ts.map +1 -1
- package/dist/lib/services/auth-service.d.ts +29 -4
- package/dist/lib/services/auth-service.d.ts.map +1 -1
- package/dist/lib/services/index.d.ts +2 -1
- package/dist/lib/services/index.d.ts.map +1 -1
- package/dist/lib/services/invitation-service.d.ts +2 -2
- package/dist/lib/services/tenant-service.d.ts +2 -2
- package/dist/lib/services/token-cache-service.d.ts +14 -6
- package/dist/lib/services/token-cache-service.d.ts.map +1 -1
- package/dist/lib/services/two-factor-service.d.ts +120 -0
- package/dist/lib/services/two-factor-service.d.ts.map +1 -0
- package/dist/lib/services/user-service.d.ts +1 -1
- package/dist/lib/services/user-service.d.ts.map +1 -1
- package/dist/lib/storage/index.d.ts +96 -0
- package/dist/lib/storage/index.d.ts.map +1 -0
- package/dist/lib/store.d.ts +67 -1
- package/dist/lib/store.d.ts.map +1 -1
- package/dist/lib/token/delivery-manager.d.ts +121 -0
- package/dist/lib/token/delivery-manager.d.ts.map +1 -0
- package/dist/lib/{token-service → token}/index.d.ts +1 -1
- package/dist/lib/token/index.d.ts.map +1 -0
- package/dist/lib/token/membership.d.ts.map +1 -0
- package/dist/lib/{token-service → token}/service.d.ts +15 -3
- package/dist/lib/token/service.d.ts.map +1 -0
- package/dist/lib/token/token.d.ts +55 -0
- package/dist/lib/token/token.d.ts.map +1 -0
- package/dist/lib/types/index.d.ts +5 -3
- package/dist/lib/types/index.d.ts.map +1 -1
- package/dist/lib/utils/validation.d.ts +54 -0
- package/dist/lib/utils/validation.d.ts.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +13 -15
- package/dist/lib/device-service/index.d.ts +0 -7
- package/dist/lib/device-service/index.d.ts.map +0 -1
- package/dist/lib/storage-manager/index.d.ts +0 -37
- package/dist/lib/storage-manager/index.d.ts.map +0 -1
- package/dist/lib/token-service/index.d.ts.map +0 -1
- package/dist/lib/token-service/membership.d.ts.map +0 -1
- package/dist/lib/token-service/service.d.ts.map +0 -1
- package/dist/lib/token-service/token.d.ts +0 -34
- package/dist/lib/token-service/token.d.ts.map +0 -1
- package/dist/tests/storage-manager/fake-storage.d.ts +0 -7
- package/dist/tests/storage-manager/fake-storage.d.ts.map +0 -1
- package/dist/tests/storage-manager/storage-manager.test.d.ts +0 -2
- package/dist/tests/storage-manager/storage-manager.test.d.ts.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/dist/lib/{token-service → token}/membership.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passflow.d.ts","sourceRoot":"","sources":["../../lib/passflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAGhB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,6BAA6B,EAClC,KAAK,cAAc,EAEnB,4BAA4B,EAC5B,KAAK,uCAAuC,EAC5C,KAAK,mCAAmC,EACxC,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,EACjC,KAAK,yCAAyC,EAC9C,KAAK,iCAAiC,EACtC,KAAK,qCAAqC,EAC1C,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,
|
|
1
|
+
{"version":3,"file":"passflow.d.ts","sourceRoot":"","sources":["../../lib/passflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AuthAPI, PassflowAuthorizationResponse, PassflowFederatedAuthExtendedPayload, PassflowFederatedAuthPayload, PassflowPasskeyAuthenticateStartPayload, PassflowPasskeyRegisterStartPayload, PassflowPasswordlessResponse, PassflowPasswordlessSignInCompletePayload, PassflowPasswordlessSignInPayload, PassflowSendPasswordResetEmailPayload, PassflowSignInPayload, PassflowSignUpPayload, PassflowSuccessResponse, PassflowValidationResponse } from '../api';
|
|
2
|
-
import { DeviceService } from '../device
|
|
3
|
-
import { StorageManager } from '../storage
|
|
1
|
+
import { AuthAPI, PassflowAuthorizationResponse, PassflowFederatedAuthExtendedPayload, PassflowFederatedAuthPayload, PassflowPasskeyAuthenticateStartPayload, PassflowPasskeyRegisterStartPayload, PassflowPasswordlessResponse, PassflowPasswordlessSignInCompletePayload, PassflowPasswordlessSignInPayload, PassflowSendPasswordResetEmailPayload, PassflowSignInPayload, PassflowSignUpPayload, PassflowSuccessResponse, PassflowValidationResponse, TokenExchangeConfig } from '../api';
|
|
2
|
+
import { DeviceService } from '../device';
|
|
3
|
+
import { StorageManager } from '../storage';
|
|
4
4
|
import { PassflowStore } from '../store';
|
|
5
5
|
import { ParsedTokens, Tokens } from '../types';
|
|
6
6
|
import { TokenCacheService } from './token-cache-service';
|
|
@@ -19,13 +19,35 @@ export declare class AuthService {
|
|
|
19
19
|
private url;
|
|
20
20
|
private sessionCallbacks;
|
|
21
21
|
private appId?;
|
|
22
|
+
private tokenDeliveryManager;
|
|
23
|
+
private tokenExchangeConfig?;
|
|
22
24
|
constructor(authApi: AuthAPI, deviceService: DeviceService, storageManager: StorageManager, subscribeStore: PassflowStore, tokenCacheService: TokenCacheService, scopes: string[], createTenantForNewUser: boolean, origin: string, url: string, sessionCallbacks: {
|
|
23
25
|
createSession?: ({ tokens, parsedTokens }: {
|
|
24
26
|
tokens?: Tokens;
|
|
25
27
|
parsedTokens?: ParsedTokens;
|
|
26
28
|
}) => Promise<void>;
|
|
27
29
|
expiredSession?: () => Promise<void>;
|
|
28
|
-
}, appId?: string | undefined);
|
|
30
|
+
}, appId?: string | undefined, tokenExchangeConfig?: TokenExchangeConfig);
|
|
31
|
+
/**
|
|
32
|
+
* Initialize session state on page load for cookie/BFF mode
|
|
33
|
+
*/
|
|
34
|
+
private initializeSession;
|
|
35
|
+
/**
|
|
36
|
+
* Restore session for cookie/BFF mode on page load
|
|
37
|
+
* Validates that HttpOnly cookies are still valid
|
|
38
|
+
* @returns true if session is valid, false otherwise
|
|
39
|
+
*/
|
|
40
|
+
restoreSession(): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Process successful authentication response
|
|
43
|
+
* Handles token storage, session state, CSRF tokens
|
|
44
|
+
* In BFF mode, forwards tokens to BFF server
|
|
45
|
+
*/
|
|
46
|
+
private processAuthResponse;
|
|
47
|
+
/**
|
|
48
|
+
* Forward tokens to BFF server for httpOnly cookie storage
|
|
49
|
+
*/
|
|
50
|
+
private forwardTokensToBFF;
|
|
29
51
|
signIn(payload: PassflowSignInPayload): Promise<PassflowAuthorizationResponse>;
|
|
30
52
|
signUp(payload: PassflowSignUpPayload): Promise<PassflowAuthorizationResponse>;
|
|
31
53
|
passwordlessSignIn(payload: PassflowPasswordlessSignInPayload): Promise<PassflowPasswordlessResponse>;
|
|
@@ -53,6 +75,7 @@ export declare class AuthService {
|
|
|
53
75
|
}): void;
|
|
54
76
|
/**
|
|
55
77
|
* Check if user is authenticated
|
|
78
|
+
* CRITICAL: Cookie/BFF mode checks ID token + session state, NOT access_token
|
|
56
79
|
*/
|
|
57
80
|
isAuthenticated(parsedTokens: ParsedTokens): boolean;
|
|
58
81
|
/**
|
|
@@ -61,6 +84,8 @@ export declare class AuthService {
|
|
|
61
84
|
submitSessionCheck(doRefresh?: boolean): Promise<Tokens | undefined>;
|
|
62
85
|
/**
|
|
63
86
|
* Get tokens and refresh if needed
|
|
87
|
+
* Cookie/BFF mode: Returns ID token only (access/refresh in HttpOnly cookies)
|
|
88
|
+
* JSON mode: Returns all tokens from localStorage
|
|
64
89
|
*/
|
|
65
90
|
getTokens(doRefresh: boolean): Promise<Tokens | undefined>;
|
|
66
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-service.d.ts","sourceRoot":"","sources":["../../../lib/services/auth-service.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,OAAO,EAEP,6BAA6B,EAE7B,oCAAoC,EACpC,4BAA4B,EAC5B,uCAAuC,EACvC,mCAAmC,EACnC,4BAA4B,EAC5B,yCAAyC,EACzC,iCAAiC,EACjC,qCAAqC,EACrC,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,
|
|
1
|
+
{"version":3,"file":"auth-service.d.ts","sourceRoot":"","sources":["../../../lib/services/auth-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ export * from './auth-service';
|
|
|
2
2
|
export * from './invitation-service';
|
|
3
3
|
export * from './tenant-service';
|
|
4
4
|
export * from './tenant-user-membership';
|
|
5
|
-
export * from './user-service';
|
|
6
5
|
export * from './token-cache-service';
|
|
6
|
+
export * from './two-factor-service';
|
|
7
|
+
export * from './user-service';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
|
|
@@ -3,8 +3,8 @@ import type { InvitationAPI, InvitationsPaginatedList, InviteLinkResponse, Passf
|
|
|
3
3
|
* Service for managing invitations
|
|
4
4
|
*/
|
|
5
5
|
export declare class InvitationService {
|
|
6
|
-
private
|
|
7
|
-
constructor(
|
|
6
|
+
private invitationApi;
|
|
7
|
+
constructor(invitationApi: InvitationAPI);
|
|
8
8
|
/**
|
|
9
9
|
* Requests an invitation link that can be used to invite users
|
|
10
10
|
* @param payload Request invitation payload
|
|
@@ -5,10 +5,10 @@ import { TenantUserMembership } from './tenant-user-membership';
|
|
|
5
5
|
* Service for managing tenants
|
|
6
6
|
*/
|
|
7
7
|
export declare class TenantService {
|
|
8
|
-
private
|
|
8
|
+
private tenantApi;
|
|
9
9
|
private scopes;
|
|
10
10
|
private logger;
|
|
11
|
-
constructor(
|
|
11
|
+
constructor(tenantApi: TenantAPI, scopes: string[], logger?: Logger);
|
|
12
12
|
/**
|
|
13
13
|
* Handle Passflow API errors
|
|
14
14
|
* @param error The error object
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AuthAPI } from '../api';
|
|
2
|
-
import { StorageManager } from '../storage
|
|
2
|
+
import { StorageManager } from '../storage';
|
|
3
3
|
import { PassflowStore } from '../store';
|
|
4
4
|
import type { ParsedTokens, Tokens } from '../types';
|
|
5
5
|
export declare class TokenCacheService {
|
|
@@ -10,17 +10,25 @@ export declare class TokenCacheService {
|
|
|
10
10
|
parsedTokensCache: ParsedTokens | undefined;
|
|
11
11
|
private checkInterval;
|
|
12
12
|
private readonly CHECK_INTERVAL;
|
|
13
|
+
private visibilityChangeHandler;
|
|
13
14
|
isRefreshing: boolean;
|
|
14
|
-
|
|
15
|
+
tokenExpiredFlag: boolean;
|
|
15
16
|
constructor(storageManager: StorageManager, authApi: AuthAPI, subscribeStore: PassflowStore);
|
|
16
17
|
initialize(): void;
|
|
17
18
|
private refreshTokensCache;
|
|
18
19
|
startTokenCheck(): void;
|
|
20
|
+
private setupVisibilityListener;
|
|
21
|
+
private setupPageUnloadHandler;
|
|
19
22
|
private stopTokenCheck;
|
|
23
|
+
/**
|
|
24
|
+
* Cleanup method to stop all intervals and remove event listeners.
|
|
25
|
+
* Should be called when the service is no longer needed.
|
|
26
|
+
*/
|
|
27
|
+
destroy(): void;
|
|
20
28
|
setTokensCache(tokens: Tokens | undefined): void;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
getTokens(): Tokens | undefined;
|
|
30
|
+
getTokensWithRefresh(): Promise<Tokens | undefined>;
|
|
31
|
+
getParsedTokens(): ParsedTokens | undefined;
|
|
32
|
+
isExpired(): boolean;
|
|
25
33
|
}
|
|
26
34
|
//# sourceMappingURL=token-cache-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-cache-service.d.ts","sourceRoot":"","sources":["../../../lib/services/token-cache-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"token-cache-service.d.ts","sourceRoot":"","sources":["../../../lib/services/token-cache-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAA+B,aAAa,EAAE,MAAM,UAAU,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAErD,qBAAa,iBAAiB;IAW1B,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,cAAc;IAZxB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,iBAAiB,EAAE,YAAY,GAAG,SAAS,CAAC;IAE5C,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,uBAAuB,CAA6B;IAC5D,YAAY,UAAS;IACrB,gBAAgB,UAAS;gBAGf,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,aAAa;IAOvC,UAAU;YAqCI,kBAAkB;IA0BhC,eAAe;IA0Bf,OAAO,CAAC,uBAAuB;IAsB/B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,cAAc;IAYtB;;;OAGG;IACH,OAAO;IAIP,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAmBhD,SAAS;IAIH,oBAAoB;IA8B1B,eAAe;IAIf,SAAS;CAaV"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { TwoFactorConfirmResponse, TwoFactorDisableResponse, TwoFactorRecoveryResponse, TwoFactorRegenerateResponse, TwoFactorSetupMagicLinkSession, TwoFactorSetupMagicLinkValidationResponse, TwoFactorSetupResponse, TwoFactorStatusResponse, TwoFactorVerifyResponse } from '../api/model';
|
|
2
|
+
import { TwoFactorApiClient } from '../api/two-factor';
|
|
3
|
+
import { PassflowStore } from '../store';
|
|
4
|
+
/**
|
|
5
|
+
* Service for managing Two-Factor Authentication
|
|
6
|
+
*/
|
|
7
|
+
export declare class TwoFactorService {
|
|
8
|
+
private twoFactorApi;
|
|
9
|
+
private subscribeStore;
|
|
10
|
+
private partialAuthState?;
|
|
11
|
+
private readonly PARTIAL_AUTH_TIMEOUT_MS;
|
|
12
|
+
private readonly SESSION_STORAGE_KEY;
|
|
13
|
+
private totpDigits;
|
|
14
|
+
private magicLinkSession?;
|
|
15
|
+
constructor(twoFactorApi: TwoFactorApiClient, subscribeStore: PassflowStore);
|
|
16
|
+
/**
|
|
17
|
+
* Emit error event and throw the error
|
|
18
|
+
* Helper method to ensure errors are properly emitted to subscribers
|
|
19
|
+
*/
|
|
20
|
+
private emitErrorAndThrow;
|
|
21
|
+
/**
|
|
22
|
+
* Get 2FA enrollment status for current user
|
|
23
|
+
*/
|
|
24
|
+
getStatus(): Promise<TwoFactorStatusResponse>;
|
|
25
|
+
/**
|
|
26
|
+
* Begin 2FA setup process
|
|
27
|
+
* Returns secret and QR code for authenticator app
|
|
28
|
+
*/
|
|
29
|
+
beginSetup(): Promise<TwoFactorSetupResponse>;
|
|
30
|
+
/**
|
|
31
|
+
* Confirm 2FA setup with TOTP code
|
|
32
|
+
* Returns recovery codes that MUST be displayed to user
|
|
33
|
+
*/
|
|
34
|
+
confirmSetup(code: string): Promise<TwoFactorConfirmResponse>;
|
|
35
|
+
/**
|
|
36
|
+
* Verify TOTP code during login
|
|
37
|
+
* Completes authentication if successful
|
|
38
|
+
*/
|
|
39
|
+
verify(code: string): Promise<TwoFactorVerifyResponse>;
|
|
40
|
+
/**
|
|
41
|
+
* Use recovery code for authentication
|
|
42
|
+
* Completes authentication if successful
|
|
43
|
+
*/
|
|
44
|
+
useRecoveryCode(code: string): Promise<TwoFactorRecoveryResponse>;
|
|
45
|
+
/**
|
|
46
|
+
* Disable 2FA (requires TOTP verification)
|
|
47
|
+
*/
|
|
48
|
+
disable(code: string): Promise<TwoFactorDisableResponse>;
|
|
49
|
+
/**
|
|
50
|
+
* Regenerate recovery codes
|
|
51
|
+
*/
|
|
52
|
+
regenerateRecoveryCodes(code: string): Promise<TwoFactorRegenerateResponse>;
|
|
53
|
+
/**
|
|
54
|
+
* Check if 2FA verification is required (local state check)
|
|
55
|
+
* Returns true if user has signed in but needs 2FA verification
|
|
56
|
+
*/
|
|
57
|
+
isVerificationRequired(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Set partial auth state when login requires 2FA
|
|
60
|
+
* Called internally via event listener when AuthService emits TwoFactorRequired
|
|
61
|
+
*/
|
|
62
|
+
setPartialAuthState(email?: string, challengeId?: string, tfaToken?: string): void;
|
|
63
|
+
/**
|
|
64
|
+
* Clear partial auth state
|
|
65
|
+
* Called on logout or successful verification
|
|
66
|
+
*/
|
|
67
|
+
clearPartialAuthState(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Attempt to recover partial auth state from sessionStorage
|
|
70
|
+
* Called before verification operations to handle page refresh
|
|
71
|
+
*/
|
|
72
|
+
private recoverPartialAuthState;
|
|
73
|
+
/**
|
|
74
|
+
* Validate magic link token for 2FA setup
|
|
75
|
+
*
|
|
76
|
+
* This method validates an admin-generated magic link token and
|
|
77
|
+
* creates a scoped session (scope: "2fa_setup") that can ONLY be
|
|
78
|
+
* used for completing 2FA setup operations.
|
|
79
|
+
*
|
|
80
|
+
* Session characteristics:
|
|
81
|
+
* - Stored in memory only (no persistence across page reloads)
|
|
82
|
+
* - Short-lived (typically 1 hour expiration)
|
|
83
|
+
* - Cannot be refreshed
|
|
84
|
+
* - Cannot be promoted to full authentication
|
|
85
|
+
* - Only valid for 2FA setup endpoints
|
|
86
|
+
*
|
|
87
|
+
* @param token - Magic link token from URL parameter
|
|
88
|
+
* @returns Validation response with session details
|
|
89
|
+
*/
|
|
90
|
+
validateTwoFactorSetupMagicLink(token: string): Promise<TwoFactorSetupMagicLinkValidationResponse>;
|
|
91
|
+
/**
|
|
92
|
+
* Get current magic link session (if any)
|
|
93
|
+
* Used by React SDK to access session token for API calls
|
|
94
|
+
*
|
|
95
|
+
* @returns Active magic link session or null if none/expired
|
|
96
|
+
*/
|
|
97
|
+
getMagicLinkSession(): TwoFactorSetupMagicLinkSession | null;
|
|
98
|
+
/**
|
|
99
|
+
* Clear magic link session
|
|
100
|
+
* Called after successful setup completion or on error
|
|
101
|
+
*/
|
|
102
|
+
clearMagicLinkSession(): void;
|
|
103
|
+
/**
|
|
104
|
+
* Check if magic link session is active
|
|
105
|
+
* Used by React SDK to determine if form can use magic link auth
|
|
106
|
+
*/
|
|
107
|
+
hasMagicLinkSession(): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Get the session token from magic link session (if active)
|
|
110
|
+
* Used by AxiosClient for injecting auth header on 2FA setup endpoints
|
|
111
|
+
*/
|
|
112
|
+
getMagicLinkSessionToken(): string | null;
|
|
113
|
+
/**
|
|
114
|
+
* Get configured TOTP digit count
|
|
115
|
+
* Returns the number of digits (6 or 8) for TOTP codes
|
|
116
|
+
* Useful for UI components that need to render the correct number of input fields
|
|
117
|
+
*/
|
|
118
|
+
getTotpDigits(): 6 | 8;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=two-factor-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"two-factor-service.d.ts","sourceRoot":"","sources":["../../../lib/services/two-factor-service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,8BAA8B,EAC9B,yCAAyC,EACzC,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAiB,aAAa,EAAE,MAAM,UAAU,CAAC;AA0BxD;;GAEG;AACH,qBAAa,gBAAgB;IAazB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;IAbxB,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAiB;IACzD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA4B;IAIhE,OAAO,CAAC,UAAU,CAAY;IAG9B,OAAO,CAAC,gBAAgB,CAAC,CAAiC;gBAGhD,YAAY,EAAE,kBAAkB,EAChC,cAAc,EAAE,aAAa;IAgBvC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAanD;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAcnD;;;OAGG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC;IA2BnE;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmC5D;;;OAGG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAmDvE;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAe9D;;OAEG;IACG,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC;IA2BjF;;;OAGG;IACH,sBAAsB,IAAI,OAAO;IAiBjC;;;OAGG;IACH,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IA0BlF;;;OAGG;IACH,qBAAqB,IAAI,IAAI;IAW7B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAgC/B;;;;;;;;;;;;;;;;OAgBG;IACG,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,yCAAyC,CAAC;IAgCxG;;;;;OAKG;IACH,mBAAmB,IAAI,8BAA8B,GAAG,IAAI;IAY5D;;;OAGG;IACH,qBAAqB,IAAI,IAAI;IAI7B;;;OAGG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;;OAGG;IACH,wBAAwB,IAAI,MAAM,GAAG,IAAI;IAKzC;;;;OAIG;IACH,aAAa,IAAI,CAAC,GAAG,CAAC;CAGvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-service.d.ts","sourceRoot":"","sources":["../../../lib/services/user-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,uBAAuB,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAE9D;;GAEG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,aAAa;gBADb,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa;IAGtC;;;OAGG;IACH,eAAe;IAIf;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIpF;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAItE;;;;OAIG;IACG,cAAc,CAAC,EACnB,cAAc,EACd,eAAe,EACf,kBAAkB,GACnB,GAAE;QACD,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,IAAI,CAAC;CAevB;AAGD,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"user-service.d.ts","sourceRoot":"","sources":["../../../lib/services/user-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,uBAAuB,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAE9D;;GAEG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,aAAa;gBADb,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa;IAGtC;;;OAGG;IACH,eAAe;IAIf;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIpF;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAItE;;;;OAIG;IACG,cAAc,CAAC,EACnB,cAAc,EACd,eAAe,EACf,kBAAkB,GACnB,GAAE;QACD,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,IAAI,CAAC;CAevB;AAGD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage Manager
|
|
3
|
+
*
|
|
4
|
+
* Abstraction layer over browser localStorage for token and data persistence.
|
|
5
|
+
* Supports custom storage implementations for testing and alternative platforms.
|
|
6
|
+
* Handles key prefixing for multi-app scenarios.
|
|
7
|
+
*
|
|
8
|
+
* @module storage
|
|
9
|
+
*/
|
|
10
|
+
import { TokenType } from '../token';
|
|
11
|
+
import { TokenDeliveryMode, Tokens } from '../types';
|
|
12
|
+
export type Storage = {
|
|
13
|
+
setItem: (key: string, value: string) => void;
|
|
14
|
+
getItem: (key: string) => string | null;
|
|
15
|
+
removeItem: (key: string) => void;
|
|
16
|
+
};
|
|
17
|
+
export interface StorageManagerParams {
|
|
18
|
+
storage?: Storage;
|
|
19
|
+
prefix?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class StorageManager {
|
|
22
|
+
private keyStoragePrefix;
|
|
23
|
+
readonly scopes: string;
|
|
24
|
+
readonly deviceId: string;
|
|
25
|
+
readonly invitationToken: string;
|
|
26
|
+
readonly previousRedirectUrl: string;
|
|
27
|
+
private readonly STORAGE_PREFIX;
|
|
28
|
+
private readonly ID_TOKEN_KEY;
|
|
29
|
+
private readonly CSRF_TOKEN_KEY;
|
|
30
|
+
private readonly DELIVERY_MODE_KEY;
|
|
31
|
+
private storage;
|
|
32
|
+
constructor({ storage, prefix }?: StorageManagerParams);
|
|
33
|
+
/**
|
|
34
|
+
* Save tokens to storage with conditional logic based on delivery mode
|
|
35
|
+
* In cookie/BFF mode: ONLY save ID token (not access/refresh tokens)
|
|
36
|
+
* In JSON mode: save all tokens (existing behavior)
|
|
37
|
+
*/
|
|
38
|
+
saveTokens(tokens: Tokens, deliveryMode?: TokenDeliveryMode): void;
|
|
39
|
+
getToken(tokenType: TokenType): string | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Get tokens from storage with conditional logic based on delivery mode
|
|
42
|
+
* In cookie/BFF mode: return ID token only (access/refresh in HttpOnly cookies)
|
|
43
|
+
* In JSON mode: return all stored tokens (existing behavior)
|
|
44
|
+
*/
|
|
45
|
+
getTokens(): Tokens | undefined;
|
|
46
|
+
getScopes(): string[] | undefined;
|
|
47
|
+
deleteToken(tokenType: TokenType): void;
|
|
48
|
+
deleteTokens(): void;
|
|
49
|
+
getDeviceId(): string | undefined;
|
|
50
|
+
setDeviceId(deviceId: string): void;
|
|
51
|
+
deleteDeviceId(): void;
|
|
52
|
+
setInvitationToken(token: string): void;
|
|
53
|
+
getInvitationToken(): string | undefined;
|
|
54
|
+
deleteInvitationToken(): void;
|
|
55
|
+
setPreviousRedirectUrl(url: string): void;
|
|
56
|
+
getPreviousRedirectUrl(): string | undefined;
|
|
57
|
+
deletePreviousRedirectUrl(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Set the token delivery mode in storage
|
|
60
|
+
*/
|
|
61
|
+
setDeliveryMode(mode: TokenDeliveryMode): void;
|
|
62
|
+
/**
|
|
63
|
+
* Get the token delivery mode from storage
|
|
64
|
+
*/
|
|
65
|
+
getDeliveryMode(): TokenDeliveryMode | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Clear the delivery mode from storage
|
|
68
|
+
*/
|
|
69
|
+
clearDeliveryMode(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Get the ID token from storage (cookie mode)
|
|
72
|
+
*/
|
|
73
|
+
getIdToken(): string | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* Set the ID token in storage (cookie mode)
|
|
76
|
+
*/
|
|
77
|
+
setIdToken(token: string): void;
|
|
78
|
+
/**
|
|
79
|
+
* Clear the ID token from storage
|
|
80
|
+
*/
|
|
81
|
+
clearIdToken(): void;
|
|
82
|
+
/**
|
|
83
|
+
* Get the CSRF token from storage
|
|
84
|
+
*/
|
|
85
|
+
getCsrfToken(): string | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Set the CSRF token in storage
|
|
88
|
+
*/
|
|
89
|
+
setCsrfToken(token: string): void;
|
|
90
|
+
/**
|
|
91
|
+
* Clear the CSRF token from storage
|
|
92
|
+
*/
|
|
93
|
+
clearCsrfToken(): void;
|
|
94
|
+
private getKeyForTokenType;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAErD,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACxC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,gBAAgB,CAAM;IAC9B,QAAQ,CAAC,MAAM,SAA2C;IAC1D,QAAQ,CAAC,QAAQ,SAA8C;IAC/D,QAAQ,CAAC,eAAe,SAAqD;IAC7E,QAAQ,CAAC,mBAAmB,SAAyD;IAGrF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IACjE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsC;IACrE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyC;IAE3E,OAAO,CAAC,OAAO,CAAU;gBAEb,EAAE,OAAO,EAAE,MAAM,EAAE,GAAE,oBAAyB;IAK1D;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,iBAAiB,GAAG,IAAI;IAkBlE,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;IAKlD;;;;OAIG;IACH,SAAS,IAAI,MAAM,GAAG,SAAS;IAwB/B,SAAS,IAAI,MAAM,EAAE,GAAG,SAAS;IAIjC,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAKvC,YAAY,IAAI,IAAI;IAWpB,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAInC,cAAc,IAAI,IAAI;IAItB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvC,kBAAkB,IAAI,MAAM,GAAG,SAAS;IAIxC,qBAAqB,IAAI,IAAI;IAI7B,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzC,sBAAsB,IAAI,MAAM,GAAG,SAAS;IAI5C,yBAAyB,IAAI,IAAI;IAMjC;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAQ9C;;OAEG;IACH,eAAe,IAAI,iBAAiB,GAAG,SAAS;IAYhD;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAUzB;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,SAAS;IAShC;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ/B;;OAEG;IACH,YAAY,IAAI,IAAI;IAUpB;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IASlC;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQjC;;OAEG;IACH,cAAc,IAAI,IAAI;IAQtB,OAAO,CAAC,kBAAkB;CAG3B"}
|
package/dist/lib/store.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passflow Store
|
|
3
|
+
*
|
|
4
|
+
* Event subscription system using the Observer pattern.
|
|
5
|
+
* Manages authentication event notifications to subscribers.
|
|
6
|
+
* Supports filtered subscriptions for specific event types.
|
|
7
|
+
*
|
|
8
|
+
* @module store
|
|
9
|
+
*/
|
|
1
10
|
import { ParsedTokens, Tokens } from './types';
|
|
2
11
|
/**
|
|
3
12
|
* Passflow event types
|
|
@@ -8,10 +17,21 @@ export declare enum PassflowEvent {
|
|
|
8
17
|
Register = "register",
|
|
9
18
|
RegisterStart = "register:start",
|
|
10
19
|
SignOut = "signout",
|
|
20
|
+
SessionRestored = "session:restored",
|
|
11
21
|
Error = "error",
|
|
12
22
|
Refresh = "refresh",
|
|
13
23
|
RefreshStart = "refresh:start",
|
|
14
|
-
TokenCacheExpired = "token-cache-expired"
|
|
24
|
+
TokenCacheExpired = "token-cache-expired",
|
|
25
|
+
TwoFactorRequired = "2fa:required",
|
|
26
|
+
TwoFactorSetupStarted = "2fa:setup_started",
|
|
27
|
+
TwoFactorEnabled = "2fa:enabled",
|
|
28
|
+
TwoFactorDisabled = "2fa:disabled",
|
|
29
|
+
TwoFactorVerified = "2fa:verified",
|
|
30
|
+
TwoFactorRecoveryUsed = "2fa:recovery_used",
|
|
31
|
+
TwoFactorRecoveryCodesLow = "2fa:recovery_low",
|
|
32
|
+
TwoFactorRecoveryCodesExhausted = "2fa:recovery_exhausted",
|
|
33
|
+
TwoFactorSetupMagicLinkValidated = "2fa:magic_link_validated",
|
|
34
|
+
TwoFactorSetupMagicLinkFailed = "2fa:magic_link_failed"
|
|
15
35
|
}
|
|
16
36
|
/**
|
|
17
37
|
* Error payload interface for structured error information
|
|
@@ -44,6 +64,12 @@ export type PassflowEventPayload = {
|
|
|
44
64
|
[PassflowEvent.SignOut]: {
|
|
45
65
|
userId?: string;
|
|
46
66
|
};
|
|
67
|
+
[PassflowEvent.SessionRestored]: {
|
|
68
|
+
id: string;
|
|
69
|
+
email?: string;
|
|
70
|
+
username?: string;
|
|
71
|
+
[key: string]: unknown;
|
|
72
|
+
};
|
|
47
73
|
[PassflowEvent.Error]: ErrorPayload;
|
|
48
74
|
[PassflowEvent.Refresh]: {
|
|
49
75
|
tokens?: Tokens;
|
|
@@ -55,6 +81,46 @@ export type PassflowEventPayload = {
|
|
|
55
81
|
[PassflowEvent.TokenCacheExpired]: {
|
|
56
82
|
isExpired: boolean;
|
|
57
83
|
};
|
|
84
|
+
[PassflowEvent.TwoFactorRequired]: {
|
|
85
|
+
email: string;
|
|
86
|
+
challengeId: string;
|
|
87
|
+
tfaToken: string;
|
|
88
|
+
};
|
|
89
|
+
[PassflowEvent.TwoFactorSetupStarted]: {
|
|
90
|
+
secret: string;
|
|
91
|
+
};
|
|
92
|
+
[PassflowEvent.TwoFactorEnabled]: {
|
|
93
|
+
recoveryCodes: string[];
|
|
94
|
+
clearRecoveryCodes: () => void;
|
|
95
|
+
};
|
|
96
|
+
[PassflowEvent.TwoFactorDisabled]: Record<string, never>;
|
|
97
|
+
[PassflowEvent.TwoFactorVerified]: {
|
|
98
|
+
tokens?: Tokens;
|
|
99
|
+
};
|
|
100
|
+
[PassflowEvent.TwoFactorRecoveryUsed]: {
|
|
101
|
+
tokens?: Tokens;
|
|
102
|
+
remainingCodes: number;
|
|
103
|
+
};
|
|
104
|
+
[PassflowEvent.TwoFactorRecoveryCodesLow]: {
|
|
105
|
+
tokens?: Tokens;
|
|
106
|
+
remainingCodes: number;
|
|
107
|
+
};
|
|
108
|
+
[PassflowEvent.TwoFactorRecoveryCodesExhausted]: {
|
|
109
|
+
tokens?: Tokens;
|
|
110
|
+
};
|
|
111
|
+
[PassflowEvent.TwoFactorSetupMagicLinkValidated]: {
|
|
112
|
+
userId: string;
|
|
113
|
+
appId?: string | null;
|
|
114
|
+
expiresIn: number;
|
|
115
|
+
sessionToken: string;
|
|
116
|
+
};
|
|
117
|
+
[PassflowEvent.TwoFactorSetupMagicLinkFailed]: {
|
|
118
|
+
error: {
|
|
119
|
+
code: 'INVALID_TOKEN' | 'EXPIRED_TOKEN' | 'REVOKED_TOKEN' | 'RATE_LIMITED' | 'SERVER_ERROR';
|
|
120
|
+
message: string;
|
|
121
|
+
retryAfter?: number;
|
|
122
|
+
};
|
|
123
|
+
};
|
|
58
124
|
};
|
|
59
125
|
/**
|
|
60
126
|
* Passflow subscriber interface
|
package/dist/lib/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../lib/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE/C;;GAEG;AACH,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,WAAW,iBAAiB;IAC5B,QAAQ,aAAa;IACrB,aAAa,mBAAmB;IAChC,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,YAAY,kBAAkB;IAC9B,iBAAiB,wBAAwB;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../lib/store.ts"],"names":[],"mappings":"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"}
|