@passflow/core 0.0.1 → 0.2.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.
Files changed (87) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/index.js.map +1 -1
  3. package/dist/index.mjs +3174 -574
  4. package/dist/index.mjs.map +1 -1
  5. package/dist/lib/api/app.d.ts +4 -1
  6. package/dist/lib/api/app.d.ts.map +1 -1
  7. package/dist/lib/api/auth.d.ts +6 -4
  8. package/dist/lib/api/auth.d.ts.map +1 -1
  9. package/dist/lib/api/axios-client.d.ts +26 -4
  10. package/dist/lib/api/axios-client.d.ts.map +1 -1
  11. package/dist/lib/api/index.d.ts +4 -3
  12. package/dist/lib/api/index.d.ts.map +1 -1
  13. package/dist/lib/api/invitation.d.ts +4 -1
  14. package/dist/lib/api/invitation.d.ts.map +1 -1
  15. package/dist/lib/api/model.d.ts +180 -11
  16. package/dist/lib/api/model.d.ts.map +1 -1
  17. package/dist/lib/api/setting.d.ts +4 -1
  18. package/dist/lib/api/setting.d.ts.map +1 -1
  19. package/dist/lib/api/tenant.d.ts +4 -1
  20. package/dist/lib/api/tenant.d.ts.map +1 -1
  21. package/dist/lib/api/two-factor.d.ts +75 -0
  22. package/dist/lib/api/two-factor.d.ts.map +1 -0
  23. package/dist/lib/api/user.d.ts +4 -1
  24. package/dist/lib/api/user.d.ts.map +1 -1
  25. package/dist/lib/constants/index.d.ts +25 -0
  26. package/dist/lib/constants/index.d.ts.map +1 -1
  27. package/dist/lib/device/index.d.ts +17 -0
  28. package/dist/lib/device/index.d.ts.map +1 -0
  29. package/dist/lib/index.d.ts +10 -3
  30. package/dist/lib/index.d.ts.map +1 -1
  31. package/dist/lib/m2m/client.d.ts +196 -0
  32. package/dist/lib/m2m/client.d.ts.map +1 -0
  33. package/dist/lib/m2m/errors.d.ts +107 -0
  34. package/dist/lib/m2m/errors.d.ts.map +1 -0
  35. package/dist/lib/m2m/index.d.ts +27 -0
  36. package/dist/lib/m2m/index.d.ts.map +1 -0
  37. package/dist/lib/m2m/types.d.ts +217 -0
  38. package/dist/lib/m2m/types.d.ts.map +1 -0
  39. package/dist/lib/passflow.d.ts +972 -11
  40. package/dist/lib/passflow.d.ts.map +1 -1
  41. package/dist/lib/services/auth-service.d.ts +29 -4
  42. package/dist/lib/services/auth-service.d.ts.map +1 -1
  43. package/dist/lib/services/index.d.ts +2 -1
  44. package/dist/lib/services/index.d.ts.map +1 -1
  45. package/dist/lib/services/invitation-service.d.ts +2 -2
  46. package/dist/lib/services/tenant-service.d.ts +2 -2
  47. package/dist/lib/services/token-cache-service.d.ts +14 -6
  48. package/dist/lib/services/token-cache-service.d.ts.map +1 -1
  49. package/dist/lib/services/two-factor-service.d.ts +120 -0
  50. package/dist/lib/services/two-factor-service.d.ts.map +1 -0
  51. package/dist/lib/services/user-service.d.ts +1 -1
  52. package/dist/lib/services/user-service.d.ts.map +1 -1
  53. package/dist/lib/storage/index.d.ts +96 -0
  54. package/dist/lib/storage/index.d.ts.map +1 -0
  55. package/dist/lib/store.d.ts +67 -1
  56. package/dist/lib/store.d.ts.map +1 -1
  57. package/dist/lib/token/delivery-manager.d.ts +121 -0
  58. package/dist/lib/token/delivery-manager.d.ts.map +1 -0
  59. package/dist/lib/{token-service → token}/index.d.ts +1 -1
  60. package/dist/lib/token/index.d.ts.map +1 -0
  61. package/dist/lib/token/membership.d.ts.map +1 -0
  62. package/dist/lib/{token-service → token}/service.d.ts +15 -3
  63. package/dist/lib/token/service.d.ts.map +1 -0
  64. package/dist/lib/token/token.d.ts +55 -0
  65. package/dist/lib/token/token.d.ts.map +1 -0
  66. package/dist/lib/types/index.d.ts +5 -3
  67. package/dist/lib/types/index.d.ts.map +1 -1
  68. package/dist/lib/utils/validation.d.ts +54 -0
  69. package/dist/lib/utils/validation.d.ts.map +1 -0
  70. package/dist/tests/storage/fake-storage.d.ts.map +1 -0
  71. package/dist/tests/storage/storage-manager.test.d.ts.map +1 -0
  72. package/dist/tsconfig.tsbuildinfo +1 -1
  73. package/package.json +14 -15
  74. package/dist/lib/device-service/index.d.ts +0 -7
  75. package/dist/lib/device-service/index.d.ts.map +0 -1
  76. package/dist/lib/storage-manager/index.d.ts +0 -37
  77. package/dist/lib/storage-manager/index.d.ts.map +0 -1
  78. package/dist/lib/token-service/index.d.ts.map +0 -1
  79. package/dist/lib/token-service/membership.d.ts.map +0 -1
  80. package/dist/lib/token-service/service.d.ts.map +0 -1
  81. package/dist/lib/token-service/token.d.ts +0 -34
  82. package/dist/lib/token-service/token.d.ts.map +0 -1
  83. package/dist/tests/storage-manager/fake-storage.d.ts.map +0 -1
  84. package/dist/tests/storage-manager/storage-manager.test.d.ts.map +0 -1
  85. /package/dist/lib/{token-service → token}/membership.d.ts +0 -0
  86. /package/dist/tests/{storage-manager → storage}/fake-storage.d.ts +0 -0
  87. /package/dist/tests/{storage-manager → storage}/storage-manager.test.d.ts +0 -0
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Token Delivery Manager
3
+ *
4
+ * Manages token delivery mode state and session validity for the SDK.
5
+ * Supports three delivery modes: JSON body, cookie, and mobile.
6
+ * Persists delivery mode to storage for session continuity.
7
+ *
8
+ * @module token/delivery-manager
9
+ */
10
+ import type { StorageManager } from '../storage';
11
+ export declare enum TokenDeliveryMode {
12
+ JsonBody = "json_body",
13
+ Cookie = "cookie",
14
+ Mobile = "mobile",
15
+ /**
16
+ * BFF (Backend-for-Frontend) mode.
17
+ * Tokens are sent to BFF server which stores them in httpOnly cookies.
18
+ * Only ID token is kept locally for user info display.
19
+ */
20
+ BFF = "bff"
21
+ }
22
+ export declare enum SessionState {
23
+ Unknown = "unknown",// Initial state, not yet determined
24
+ Valid = "valid",// Session is valid (cookie mode trust state)
25
+ Invalid = "invalid"
26
+ }
27
+ export declare class TokenDeliveryManager {
28
+ private storageManager;
29
+ private mode;
30
+ private sessionState;
31
+ private isInitializedFlag;
32
+ private readonly STORAGE_PREFIX;
33
+ private readonly DELIVERY_MODE_KEY;
34
+ private readonly SESSION_STATE_KEY;
35
+ constructor(storageManager: StorageManager);
36
+ /**
37
+ * Set the token delivery mode
38
+ */
39
+ setMode(mode: TokenDeliveryMode): void;
40
+ /**
41
+ * Get the current token delivery mode
42
+ */
43
+ getMode(): TokenDeliveryMode;
44
+ /**
45
+ * Check if currently in cookie mode
46
+ */
47
+ isCookieMode(): boolean;
48
+ /**
49
+ * Check if currently in JSON body mode
50
+ */
51
+ isJsonMode(): boolean;
52
+ /**
53
+ * Check if currently in mobile mode
54
+ */
55
+ isMobileMode(): boolean;
56
+ /**
57
+ * Check if currently in BFF mode
58
+ */
59
+ isBFFMode(): boolean;
60
+ /**
61
+ * Check if delivery mode has been initialized from a server response
62
+ */
63
+ isInitialized(): boolean;
64
+ /**
65
+ * Mark session as valid (successful authentication or token refresh)
66
+ */
67
+ setSessionValid(): void;
68
+ /**
69
+ * Mark session as invalid (received 401 or logout)
70
+ */
71
+ setSessionInvalid(): void;
72
+ /**
73
+ * Reset session state to unknown (used during authentication flows)
74
+ */
75
+ setSessionUnknown(): void;
76
+ /**
77
+ * Check if session is valid
78
+ */
79
+ isSessionValid(): boolean;
80
+ /**
81
+ * Check if session state is unknown (not yet determined)
82
+ */
83
+ isSessionUnknown(): boolean;
84
+ /**
85
+ * Check if session is invalid
86
+ */
87
+ isSessionInvalid(): boolean;
88
+ /**
89
+ * Get current session state
90
+ */
91
+ getSessionState(): SessionState;
92
+ /**
93
+ * Reset delivery manager to initial state
94
+ */
95
+ reset(): void;
96
+ /**
97
+ * Load persisted delivery mode from storage
98
+ */
99
+ private loadPersistedMode;
100
+ /**
101
+ * Load persisted session state from storage
102
+ */
103
+ private loadPersistedSessionState;
104
+ /**
105
+ * Persist delivery mode to storage
106
+ */
107
+ private persistMode;
108
+ /**
109
+ * Persist session state to storage
110
+ */
111
+ private persistSessionState;
112
+ /**
113
+ * Clear persisted delivery mode from storage
114
+ */
115
+ private clearPersistedMode;
116
+ /**
117
+ * Clear persisted session state from storage
118
+ */
119
+ private clearPersistedSessionState;
120
+ }
121
+ //# sourceMappingURL=delivery-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-manager.d.ts","sourceRoot":"","sources":["../../../lib/token/delivery-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,oBAAY,iBAAiB;IAC3B,QAAQ,cAAc;IACtB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB;;;;OAIG;IACH,GAAG,QAAQ;CACZ;AAED,oBAAY,YAAY;IACtB,OAAO,YAAY,CAAE,oCAAoC;IACzD,KAAK,UAAU,CAAE,6CAA6C;IAC9D,OAAO,YAAY;CACpB;AAED,qBAAa,oBAAoB;IASnB,OAAO,CAAC,cAAc;IARlC,OAAO,CAAC,IAAI,CAAiD;IAC7D,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,iBAAiB,CAAS;IAElC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyC;IAC3E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyC;gBAEvD,cAAc,EAAE,cAAc;IAKlD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAMtC;;OAEG;IACH,OAAO,IAAI,iBAAiB;IAI5B;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,eAAe,IAAI,IAAI;IAKvB;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAKzB;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAKzB;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAcjC;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;IACH,OAAO,CAAC,0BAA0B;CAOnC"}
@@ -1,4 +1,4 @@
1
- export * from './service';
2
1
  export * from './membership';
2
+ export * from './service';
3
3
  export * from './token';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/token/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"membership.d.ts","sourceRoot":"","sources":["../../../lib/token/membership.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE;YACN,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;SACzB,CAAC;QACF,WAAW,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;KACxC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,iBAAiB,CAAC;IACvB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,KAAK,iBAAiB,KAAG,cAmBxD,CAAC"}
@@ -1,7 +1,17 @@
1
- import { StorageManager } from '../storage-manager';
1
+ /**
2
+ * Token Service
3
+ *
4
+ * JWT token parsing, validation, and utility functions.
5
+ * Provides platform-agnostic Base64 decoding for SSR/Node.js support.
6
+ * Handles token expiry calculations with configurable buffer time.
7
+ *
8
+ * @module token
9
+ */
10
+ import { StorageManager } from '../storage';
2
11
  import { Token, TokenType } from './token';
3
12
  export declare class TokenService {
4
13
  protected storageManager: StorageManager;
14
+ constructor(storageManager: StorageManager);
5
15
  /**
6
16
  * Checks if a token is not exists or expired.
7
17
  *
@@ -22,9 +32,11 @@ export declare class TokenService {
22
32
  * Checks if a token is expired.
23
33
  *
24
34
  * @param {Token} token - The token to check.
25
- * @returns {boolean} Returns true if the token is expired, false otherwise.
35
+ * @param {number} bufferSeconds - Time buffer in seconds to consider token expired early
36
+ * This prevents race conditions where token expires during request
37
+ * @returns {boolean} Returns true if the token is expired or will expire within buffer time, false otherwise.
26
38
  */
27
- export declare function isTokenExpired(token: Token): boolean;
39
+ export declare function isTokenExpired(token: Token, bufferSeconds?: number): boolean;
28
40
  /**
29
41
  * Parse token from string. Please be aware that this method does not check if the token signature and if the token is valid.
30
42
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../lib/token/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAuB3C,qBAAa,YAAY;IACvB,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;gBAE7B,cAAc,EAAE,cAAc;IAI1C;;;;;OAKG;IACH,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAQ7C;;;;;;OAMG;IACH,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK,GAAG,SAAS;CAKxD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,SAA8B,GAAG,OAAO,CAGjG;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,KAAK,CAwBrD"}
@@ -0,0 +1,55 @@
1
+ import { RawUserMembership, UserMembership } from './membership';
2
+ export type Token = {
3
+ aud: string[];
4
+ exp: number;
5
+ iat: number;
6
+ iss: string;
7
+ jti: string;
8
+ sub: string;
9
+ type: string;
10
+ email?: string;
11
+ phonenumber?: string;
12
+ passflow_tm?: RawUserMembership;
13
+ payload?: unknown;
14
+ membership?: UserMembership;
15
+ };
16
+ export type InvitationToken = Token & {
17
+ email: string;
18
+ inviter_id: string;
19
+ inviter_name: string;
20
+ redirect_url: string;
21
+ tenant_name: string;
22
+ };
23
+ /**
24
+ * Token types used in the Passflow SDK.
25
+ *
26
+ * Note: Some enum values intentionally differ from keys for API compatibility.
27
+ * The values match what the Passflow API returns in token payloads.
28
+ *
29
+ * @example
30
+ * // access_token key maps to 'access' value (API response format)
31
+ * TokenType.access_token === 'access' // true
32
+ */
33
+ export declare enum TokenType {
34
+ /** ID token - contains user identity claims */
35
+ id_token = "id_token",
36
+ /** Access token - for API authorization. Maps to 'access' in API responses */
37
+ access_token = "access",
38
+ /** Refresh token - for obtaining new access tokens. Maps to 'refresh' in API responses */
39
+ refresh_token = "refresh",
40
+ /** Invitation token - for accepting user invitations */
41
+ invite_token = "invite",
42
+ /** Password reset token - for password reset flows */
43
+ reset_token = "reset",
44
+ /** Web cookie token - for web-based session management */
45
+ web_cookie = "web-cookie",
46
+ /** Management token - for administrative operations */
47
+ management = "management",
48
+ /** Sign-in token - for authentication flows */
49
+ signin = "signin",
50
+ /** Actor token - for impersonation and delegated access */
51
+ actor = "actor",
52
+ /** Two-factor authentication challenge token - for 2FA flows */
53
+ two_factor = "2fa"
54
+ }
55
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../lib/token/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEjE,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;GASG;AACH,oBAAY,SAAS;IACnB,+CAA+C;IAC/C,QAAQ,aAAa;IACrB,8EAA8E;IAC9E,YAAY,WAAW;IACvB,0FAA0F;IAC1F,aAAa,YAAY;IACzB,wDAAwD;IACxD,YAAY,WAAW;IACvB,sDAAsD;IACtD,WAAW,UAAU;IACrB,0DAA0D;IAC1D,UAAU,eAAe;IACzB,uDAAuD;IACvD,UAAU,eAAe;IACzB,+CAA+C;IAC/C,MAAM,WAAW;IACjB,2DAA2D;IAC3D,KAAK,UAAU;IACf,gEAAgE;IAChE,UAAU,QAAQ;CACnB"}
@@ -1,12 +1,13 @@
1
- import { Token } from '../token-service';
1
+ import { Token } from '../token';
2
+ import { SessionState, TokenDeliveryMode } from '../token/delivery-manager';
2
3
  export type Tokens = {
3
- access_token: string;
4
+ access_token?: string;
4
5
  id_token?: string;
5
6
  refresh_token?: string;
6
7
  scopes?: string[];
7
8
  };
8
9
  export type ParsedTokens = {
9
- access_token: Token;
10
+ access_token?: Token;
10
11
  id_token?: Token;
11
12
  refresh_token?: Token;
12
13
  scopes?: string[];
@@ -19,4 +20,5 @@ export type SessionParams = {
19
20
  expiredSession?: () => Promise<void>;
20
21
  doRefresh?: boolean;
21
22
  };
23
+ export { TokenDeliveryMode, SessionState };
22
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,MAAM,MAAM,GAAG;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,KAAK,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,YAAY,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9G,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE5E,MAAM,MAAM,MAAM,GAAG;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,YAAY,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9G,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAGF,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Validates JWT token format (not signature, just structure)
3
+ * Checks that the token has 3 parts separated by dots and each part is valid base64url
4
+ *
5
+ * @param token - The token string to validate
6
+ * @returns true if the token has valid JWT format, false otherwise
7
+ */
8
+ export declare function isValidJWTFormat(token: string): boolean;
9
+ /**
10
+ * Sanitizes error messages from URL parameters to prevent XSS
11
+ * Removes HTML tags and limits length
12
+ *
13
+ * @param message - The error message to sanitize
14
+ * @returns Sanitized error message
15
+ */
16
+ export declare function sanitizeErrorMessage(message: string): string;
17
+ /**
18
+ * Validates email format using RFC 5322 simplified pattern
19
+ *
20
+ * @param email - The email string to validate
21
+ * @returns true if valid email format, false otherwise
22
+ */
23
+ export declare function isValidEmail(email: string): boolean;
24
+ /**
25
+ * Validates phone number format (E.164 format)
26
+ *
27
+ * @param phone - The phone number string to validate
28
+ * @returns true if valid phone format, false otherwise
29
+ */
30
+ export declare function isValidPhoneNumber(phone: string): boolean;
31
+ /**
32
+ * Validates username format
33
+ *
34
+ * @param username - The username string to validate
35
+ * @returns true if valid username format, false otherwise
36
+ */
37
+ export declare function isValidUsername(username: string): boolean;
38
+ /**
39
+ * Validates TOTP code format (6 or 8 numeric digits)
40
+ *
41
+ * @param code - The TOTP code to validate
42
+ * @param digits - Expected number of digits (6 or 8, defaults to 6 for backward compatibility)
43
+ * @returns true if valid TOTP code format, false otherwise
44
+ */
45
+ export declare function isValidTOTPCode(code: string, digits?: 6 | 8): boolean;
46
+ /**
47
+ * Normalizes and validates recovery code format
48
+ * Converts to uppercase and removes whitespace
49
+ *
50
+ * @param code - The recovery code to normalize and validate
51
+ * @returns Normalized recovery code if valid, null if invalid
52
+ */
53
+ export declare function normalizeRecoveryCode(code: string): string | null;
54
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../lib/utils/validation.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CASvD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CASnD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQzD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CASzD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,CAAC,GAAG,CAAK,GAAG,OAAO,CAMxE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcjE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake-storage.d.ts","sourceRoot":"","sources":["../../../tests/storage/fake-storage.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW;IACtB,IAAI,sBAA6B;IAEjC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAInC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAG9B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-manager.test.d.ts","sourceRoot":"","sources":["../../../tests/storage/storage-manager.test.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"root":["../lib/index.ts","../lib/passflow.ts","../lib/store.ts","../lib/api/app.ts","../lib/api/auth.ts","../lib/api/axios-client.ts","../lib/api/index.ts","../lib/api/invitation.ts","../lib/api/model.ts","../lib/api/setting.ts","../lib/api/tenant.ts","../lib/api/user.ts","../lib/constants/index.ts","../lib/device-service/index.ts","../lib/services/auth-service.ts","../lib/services/index.ts","../lib/services/invitation-service.ts","../lib/services/logger.ts","../lib/services/tenant-service.ts","../lib/services/tenant-user-membership.ts","../lib/services/token-cache-service.ts","../lib/services/user-service.ts","../lib/storage-manager/index.ts","../lib/token-service/index.ts","../lib/token-service/membership.ts","../lib/token-service/service.ts","../lib/token-service/token.ts","../lib/types/index.ts","../tests/storage-manager/fake-storage.ts","../tests/storage-manager/storage-manager.test.ts"],"version":"5.8.3"}
1
+ {"root":["../lib/index.ts","../lib/passflow.ts","../lib/store.ts","../lib/api/app.ts","../lib/api/auth.ts","../lib/api/axios-client.ts","../lib/api/index.ts","../lib/api/invitation.ts","../lib/api/model.ts","../lib/api/setting.ts","../lib/api/tenant.ts","../lib/api/two-factor.ts","../lib/api/user.ts","../lib/constants/index.ts","../lib/device/index.ts","../lib/m2m/client.ts","../lib/m2m/errors.ts","../lib/m2m/index.ts","../lib/m2m/types.ts","../lib/services/auth-service.ts","../lib/services/index.ts","../lib/services/invitation-service.ts","../lib/services/logger.ts","../lib/services/tenant-service.ts","../lib/services/tenant-user-membership.ts","../lib/services/token-cache-service.ts","../lib/services/two-factor-service.ts","../lib/services/user-service.ts","../lib/storage/index.ts","../lib/token/delivery-manager.ts","../lib/token/index.ts","../lib/token/membership.ts","../lib/token/service.ts","../lib/token/token.ts","../lib/types/index.ts","../lib/utils/validation.ts","../tests/storage/fake-storage.ts","../tests/storage/storage-manager.test.ts"],"errors":true,"version":"5.9.3"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@passflow/core",
3
3
  "description": "Passflow JS SDK",
4
- "version": "0.0.1",
4
+ "version": "0.2.0",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.mjs",
@@ -18,7 +18,9 @@
18
18
  }
19
19
  }
20
20
  },
21
- "files": ["dist"],
21
+ "files": [
22
+ "dist"
23
+ ],
22
24
  "scripts": {
23
25
  "dev": "pnpm vite",
24
26
  "watch": "vite build --watch",
@@ -36,24 +38,24 @@
36
38
  "ci": "biome ci ."
37
39
  },
38
40
  "devDependencies": {
39
- "@babel/core": "^7.26.10",
41
+ "@babel/core": "^7.28.6",
40
42
  "@biomejs/biome": "1.9.4",
41
43
  "@types/sinon": "^17.0.4",
42
44
  "@types/uuid": "^10.0.0",
43
- "@vitejs/plugin-vue": "^5.2.3",
44
- "@vitest/coverage-v8": "^3.1.1",
45
- "@vitest/ui": "^3.1.1",
45
+ "@vitejs/plugin-vue": "^5.2.4",
46
+ "@vitest/coverage-v8": "^3.2.4",
47
+ "@vitest/ui": "^3.2.4",
46
48
  "sinon": "^19.0.5",
47
- "typescript": "^5.8.3",
48
- "vite": "^6.2.5",
49
+ "typescript": "^5.9.3",
50
+ "vite": "^6.4.1",
49
51
  "vite-tsconfig-paths": "^5.1.4",
50
- "vitest": "^3.1.1"
52
+ "vitest": "^3.2.4"
51
53
  },
52
54
  "dependencies": {
53
- "@simplewebauthn/browser": "^13.1.0",
55
+ "@simplewebauthn/browser": "^13.2.2",
54
56
  "@simplewebauthn/types": "^12.0.0",
55
- "axios": "^1.8.4",
56
- "dayjs": "^1.11.13",
57
+ "axios": "^1.13.2",
58
+ "dayjs": "^1.11.19",
57
59
  "uuid": "^11.1.0"
58
60
  },
59
61
  "authors": [
@@ -74,8 +76,5 @@
74
76
  "type": "git",
75
77
  "url": "git+https://github.com/MadAppGang/passflow-js-sdk.git"
76
78
  },
77
- "pnpm": {
78
- "overrides": {}
79
- },
80
79
  "packageManager": "pnpm@10.8.0"
81
80
  }
@@ -1,7 +0,0 @@
1
- export declare class DeviceService {
2
- private storageManager;
3
- constructor();
4
- getDeviceId(): string;
5
- generateUniqueDeviceId(): string;
6
- }
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/device-service/index.ts"],"names":[],"mappings":"AAIA,qBAAa,aAAa;IACxB,OAAO,CAAC,cAAc,CAAiB;;IAMvC,WAAW,IAAI,MAAM;IAUrB,sBAAsB,IAAI,MAAM;CAGjC"}
@@ -1,37 +0,0 @@
1
- import { TokenType } from '../token-service';
2
- import { Tokens } from '../types';
3
- export type Storage = {
4
- setItem: (key: string, value: string) => void;
5
- getItem: (key: string) => string | null;
6
- removeItem: (key: string) => void;
7
- };
8
- export interface StorageManagerParams {
9
- storage?: Storage;
10
- prefix?: string;
11
- }
12
- export declare class StorageManager {
13
- private keyStoragePrefix;
14
- readonly scopes: string;
15
- readonly deviceId: string;
16
- readonly invitationToken: string;
17
- readonly previousRedirectUrl: string;
18
- private storage;
19
- constructor({ storage, prefix }?: StorageManagerParams);
20
- saveTokens(tokens: Tokens): void;
21
- getToken(tokenType: TokenType): string | undefined;
22
- getTokens(): Tokens | undefined;
23
- getScopes(): string[] | undefined;
24
- deleteToken(tokenType: TokenType): void;
25
- deleteTokens(): void;
26
- getDeviceId(): string | undefined;
27
- setDeviceId(deviceId: string): void;
28
- deleteDeviceId(): void;
29
- setInvitationToken(token: string): void;
30
- getInvitationToken(): string | undefined;
31
- deleteInvitationToken(): void;
32
- setPreviousRedirectUrl(url: string): void;
33
- getPreviousRedirectUrl(): string | undefined;
34
- deletePreviousRedirectUrl(): void;
35
- private getKeyForTokenType;
36
- }
37
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/storage-manager/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,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;IAErF,OAAO,CAAC,OAAO,CAAU;gBAEb,EAAE,OAAO,EAAE,MAAM,EAAE,GAAE,oBAAyB;IAK1D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQhC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;IAKlD,SAAS,IAAI,MAAM,GAAG,SAAS;IAW/B,SAAS,IAAI,MAAM,EAAE,GAAG,SAAS;IAIjC,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAKvC,YAAY,IAAI,IAAI;IAOpB,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;IAIjC,OAAO,CAAC,kBAAkB;CAG3B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/token-service/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"membership.d.ts","sourceRoot":"","sources":["../../../lib/token-service/membership.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE;YACN,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;SACzB,CAAC;QACF,WAAW,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;KACxC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,iBAAiB,CAAC;IACvB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,KAAK,iBAAiB,KAAG,cAmBxD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../lib/token-service/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE3C,qBAAa,YAAY;IACvB,SAAS,CAAC,cAAc,iBAAwB;IAEhD;;;;;OAKG;IACH,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAQ7C;;;;;;OAMG;IACH,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK,GAAG,SAAS;CAKxD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAGpD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,KAAK,CAiBrD"}
@@ -1,34 +0,0 @@
1
- import { RawUserMembership, UserMembership } from '../token-service/membership';
2
- export type Token = {
3
- aud: string[];
4
- exp: number;
5
- iat: number;
6
- iss: string;
7
- jti: string;
8
- sub: string;
9
- type: string;
10
- email?: string;
11
- phonenumber?: string;
12
- passflow_tm?: RawUserMembership;
13
- payload?: unknown;
14
- membership?: UserMembership;
15
- };
16
- export type InvitationToken = Token & {
17
- email: string;
18
- inviter_id: string;
19
- inviter_name: string;
20
- redirect_url: string;
21
- tenant_name: string;
22
- };
23
- export declare enum TokenType {
24
- id_token = "id_token",
25
- access_token = "access",
26
- refresh_token = "refresh",
27
- invite_token = "invite",
28
- reset_token = "reset",
29
- web_cookie = "web-cookie",
30
- management = "management",
31
- signin = "signin",
32
- actor = "actor"
33
- }
34
- //# sourceMappingURL=token.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../lib/token-service/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAEhF,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,oBAAY,SAAS;IACnB,QAAQ,aAAa;IACrB,YAAY,WAAW;IACvB,aAAa,YAAY;IACzB,YAAY,WAAW;IACvB,WAAW,UAAU;IACrB,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fake-storage.d.ts","sourceRoot":"","sources":["../../../tests/storage-manager/fake-storage.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW;IACtB,IAAI,sBAA6B;IAEjC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAInC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAG9B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage-manager.test.d.ts","sourceRoot":"","sources":["../../../tests/storage-manager/storage-manager.test.ts"],"names":[],"mappings":""}