@massimo.mazzoleni/cognito-max 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/README.md +2410 -0
- package/dist/chunk-AD7T42HJ.js +3 -0
- package/dist/chunk-AD7T42HJ.js.map +1 -0
- package/dist/chunk-DKPFVGTY.js +683 -0
- package/dist/chunk-DKPFVGTY.js.map +1 -0
- package/dist/chunk-N4OQLBV6.js +135 -0
- package/dist/chunk-N4OQLBV6.js.map +1 -0
- package/dist/client-63FraVdm.d.ts +69 -0
- package/dist/client-BAoL8h4E.d.cts +69 -0
- package/dist/core/index.cjs +696 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.cts +3 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -0
- package/dist/errors-BkUDHleb.d.cts +22 -0
- package/dist/errors-BkUDHleb.d.ts +22 -0
- package/dist/index.cjs +696 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/react/index.cjs +844 -0
- package/dist/react/index.cjs.map +1 -0
- package/dist/react/index.d.cts +104 -0
- package/dist/react/index.d.ts +104 -0
- package/dist/react/index.js +64 -0
- package/dist/react/index.js.map +1 -0
- package/dist/types-bxA1vonL.d.cts +113 -0
- package/dist/types-bxA1vonL.d.ts +113 -0
- package/dist/ui/index.cjs +1183 -0
- package/dist/ui/index.cjs.map +1 -0
- package/dist/ui/index.d.cts +241 -0
- package/dist/ui/index.d.ts +241 -0
- package/dist/ui/index.js +1109 -0
- package/dist/ui/index.js.map +1 -0
- package/package.json +81 -0
- package/src/core/client.ts +604 -0
- package/src/core/errors.ts +91 -0
- package/src/core/event-bus.ts +41 -0
- package/src/core/index.ts +5 -0
- package/src/core/internal/converters.ts +32 -0
- package/src/core/storage.ts +79 -0
- package/src/core/types.ts +87 -0
- package/src/index.ts +1 -0
- package/src/react/components/ProtectedRoute.tsx +56 -0
- package/src/react/context.tsx +126 -0
- package/src/react/hooks/useAuth.ts +75 -0
- package/src/react/hooks/useMfa.ts +19 -0
- package/src/react/hooks/useSession.ts +16 -0
- package/src/react/hooks/useUser.ts +24 -0
- package/src/react/index.ts +10 -0
- package/src/ui/components/ChangePasswordForm.tsx +105 -0
- package/src/ui/components/ForgotPasswordForm.tsx +159 -0
- package/src/ui/components/MfaSetupWizard.tsx +136 -0
- package/src/ui/components/RegisterForm.tsx +159 -0
- package/src/ui/components/SignInForm.tsx +296 -0
- package/src/ui/hooks/useChangePasswordForm.ts +81 -0
- package/src/ui/hooks/useForgotPasswordForm.ts +109 -0
- package/src/ui/hooks/useMfaSetup.ts +93 -0
- package/src/ui/hooks/useRegisterForm.ts +120 -0
- package/src/ui/hooks/useSignInForm.ts +245 -0
- package/src/ui/index.ts +31 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/core/errors.ts","../../src/core/storage.ts","../../src/core/event-bus.ts","../../src/core/internal/converters.ts","../../src/core/client.ts"],"names":["CognitoUserPool","AuthenticationDetails","CognitoUserAttribute","GetUserCommand","CognitoIdentityProviderClient","CognitoUser","CognitoRefreshToken"],"mappings":"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","file":"index.cjs","sourcesContent":["export type AuthErrorCode =\n | 'NOT_AUTHORIZED'\n | 'USER_NOT_FOUND'\n | 'USER_NOT_CONFIRMED'\n | 'INVALID_PARAMETER'\n | 'INVALID_PASSWORD'\n | 'CODE_MISMATCH'\n | 'EXPIRED_CODE'\n | 'CODE_DELIVERY_FAILURE'\n | 'LIMIT_EXCEEDED'\n | 'TOO_MANY_REQUESTS'\n | 'TOO_MANY_FAILED_ATTEMPTS'\n | 'PASSWORD_RESET_REQUIRED'\n | 'MFA_METHOD_NOT_FOUND'\n | 'SOFTWARE_TOKEN_MFA_NOT_FOUND'\n | 'SESSION_EXPIRED'\n | 'NETWORK_ERROR'\n | 'UNKNOWN'\n\nexport class CognitoAuthError extends Error {\n override readonly name = 'CognitoAuthError'\n\n constructor(\n message: string,\n public readonly code: AuthErrorCode,\n public readonly originalError?: unknown,\n ) {\n super(message)\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\nexport class SessionExpiredError extends CognitoAuthError {\n constructor() {\n super('La sessione è scaduta, effettua nuovamente il login', 'SESSION_EXPIRED')\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\nexport class NotAuthorizedError extends CognitoAuthError {\n constructor(message = 'Credenziali non valide') {\n super(message, 'NOT_AUTHORIZED')\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\nexport class UserNotConfirmedError extends CognitoAuthError {\n constructor() {\n super('Account non confermato. Controlla la tua email.', 'USER_NOT_CONFIRMED')\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\nexport class InvalidCodeError extends CognitoAuthError {\n constructor(expired = false) {\n super(\n expired ? 'Il codice è scaduto' : 'Codice non valido',\n expired ? 'EXPIRED_CODE' : 'CODE_MISMATCH',\n )\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\n// Maps raw Cognito SDK error names to our typed errors\nexport function mapCognitoError(error: unknown): CognitoAuthError {\n if (error instanceof CognitoAuthError) return error\n\n const name: string = (error as any)?.name ?? (error as any)?.code ?? ''\n const message: string = (error as any)?.message ?? 'Si è verificato un errore di autenticazione'\n\n const codeMap: Record<string, AuthErrorCode> = {\n NotAuthorizedException: 'NOT_AUTHORIZED',\n UserNotFoundException: 'USER_NOT_FOUND',\n UserNotConfirmedException: 'USER_NOT_CONFIRMED',\n InvalidParameterException: 'INVALID_PARAMETER',\n InvalidPasswordException: 'INVALID_PASSWORD',\n CodeMismatchException: 'CODE_MISMATCH',\n ExpiredCodeException: 'EXPIRED_CODE',\n CodeDeliveryFailureException: 'CODE_DELIVERY_FAILURE',\n LimitExceededException: 'LIMIT_EXCEEDED',\n TooManyRequestsException: 'TOO_MANY_REQUESTS',\n TooManyFailedAttemptsException: 'TOO_MANY_FAILED_ATTEMPTS',\n PasswordResetRequiredException: 'PASSWORD_RESET_REQUIRED',\n MFAMethodNotFoundException: 'MFA_METHOD_NOT_FOUND',\n SoftwareTokenMFANotFoundException: 'SOFTWARE_TOKEN_MFA_NOT_FOUND',\n NetworkError: 'NETWORK_ERROR',\n FetchError: 'NETWORK_ERROR',\n }\n\n return new CognitoAuthError(message, codeMap[name] ?? 'UNKNOWN', error)\n}\n","export interface StorageAdapter {\n getItem(key: string): string | null\n setItem(key: string, value: string): void\n removeItem(key: string): void\n clear?(): void\n}\n\nexport class LocalStorageAdapter implements StorageAdapter {\n getItem(key: string): string | null {\n return localStorage.getItem(key)\n }\n setItem(key: string, value: string): void {\n localStorage.setItem(key, value)\n }\n removeItem(key: string): void {\n localStorage.removeItem(key)\n }\n clear(): void {\n localStorage.clear()\n }\n}\n\nexport class SessionStorageAdapter implements StorageAdapter {\n getItem(key: string): string | null {\n return sessionStorage.getItem(key)\n }\n setItem(key: string, value: string): void {\n sessionStorage.setItem(key, value)\n }\n removeItem(key: string): void {\n sessionStorage.removeItem(key)\n }\n clear(): void {\n sessionStorage.clear()\n }\n}\n\n// Safe for SSR / Node.js environments\nexport class InMemoryStorageAdapter implements StorageAdapter {\n private readonly store = new Map<string, string>()\n\n getItem(key: string): string | null {\n return this.store.get(key) ?? null\n }\n setItem(key: string, value: string): void {\n this.store.set(key, value)\n }\n removeItem(key: string): void {\n this.store.delete(key)\n }\n clear(): void {\n this.store.clear()\n }\n}\n\n// Uses localStorage when available, falls back to in-memory (e.g. SSR)\nexport class AutoStorageAdapter implements StorageAdapter {\n private readonly delegate: StorageAdapter\n\n constructor() {\n this.delegate =\n typeof window !== 'undefined' && window.localStorage\n ? new LocalStorageAdapter()\n : new InMemoryStorageAdapter()\n }\n\n getItem(key: string): string | null {\n return this.delegate.getItem(key)\n }\n setItem(key: string, value: string): void {\n this.delegate.setItem(key, value)\n }\n removeItem(key: string): void {\n this.delegate.removeItem(key)\n }\n clear(): void {\n this.delegate.clear?.()\n }\n}\n","type Listener<T> = T extends void ? () => void : (payload: T) => void\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class TypedEventEmitter<TEvents extends Record<keyof TEvents, any>> {\n private readonly _listeners = new Map<keyof TEvents, Set<(...args: any[]) => void>>()\n\n on<K extends keyof TEvents>(event: K, listener: Listener<TEvents[K]>): () => void {\n if (!this._listeners.has(event)) {\n this._listeners.set(event, new Set())\n }\n this._listeners.get(event)!.add(listener as (...args: any[]) => void)\n return () => this.off(event, listener)\n }\n\n off<K extends keyof TEvents>(event: K, listener: Listener<TEvents[K]>): void {\n this._listeners.get(event)?.delete(listener as (...args: any[]) => void)\n }\n\n once<K extends keyof TEvents>(event: K, listener: Listener<TEvents[K]>): () => void {\n const unsub = this.on(event, ((...args: any[]) => {\n unsub()\n ;(listener as any)(...args)\n }) as Listener<TEvents[K]>)\n return unsub\n }\n\n protected emit<K extends keyof TEvents>(\n event: K,\n ...args: TEvents[K] extends void ? [] : [TEvents[K]]\n ): void {\n this._listeners.get(event)?.forEach(l => l(...args))\n }\n\n removeAllListeners(event?: keyof TEvents): void {\n if (event !== undefined) {\n this._listeners.delete(event)\n } else {\n this._listeners.clear()\n }\n }\n}\n","import type { CognitoUserSession } from 'amazon-cognito-identity-js'\nimport type { AuthSession, AuthUser } from '../types'\n\nexport function buildAuthSession(session: CognitoUserSession): AuthSession {\n const expiresAt = new Date(session.getAccessToken().getExpiration() * 1000)\n return {\n accessToken: session.getAccessToken().getJwtToken(),\n idToken: session.getIdToken().getJwtToken(),\n refreshToken: session.getRefreshToken().getToken(),\n expiresAt,\n isValid: () => session.isValid(),\n }\n}\n\nexport function buildAuthUser(session: CognitoUserSession, fallbackUsername: string): AuthUser {\n // Estraiamo tutte le info dall'ID token senza roundtrip API\n const payload = session.getIdToken().decodePayload() as Record<string, unknown>\n\n const str = (v: unknown): string => (v != null ? String(v) : '')\n const bool = (v: unknown): boolean => v === true || v === 'true'\n\n return {\n sub: str(payload['sub']),\n username: str(payload['cognito:username'] ?? fallbackUsername),\n email: str(payload['email']),\n emailVerified: bool(payload['email_verified']),\n groups: Array.isArray(payload['cognito:groups'])\n ? (payload['cognito:groups'] as string[])\n : [],\n attributes: Object.fromEntries(Object.entries(payload).map(([k, v]) => [k, str(v)])),\n }\n}\n","import {\n AuthenticationDetails,\n CognitoRefreshToken,\n CognitoUser,\n CognitoUserAttribute,\n CognitoUserPool,\n CognitoUserSession,\n} from 'amazon-cognito-identity-js'\nimport {\n CognitoIdentityProviderClient,\n GetUserCommand,\n} from '@aws-sdk/client-cognito-identity-provider'\n\nimport { TypedEventEmitter } from './event-bus'\nimport { mapCognitoError, CognitoAuthError, SessionExpiredError } from './errors'\nimport { AutoStorageAdapter } from './storage'\nimport { buildAuthSession, buildAuthUser } from './internal/converters'\nimport type {\n AuthConfig,\n AuthEvents,\n AuthSession,\n AuthState,\n AuthUser,\n MfaPreference,\n MfaSetupResult,\n MfaType,\n ResolvedAuthConfig,\n SignInResult,\n} from './types'\n\nfunction validateConfig(config: AuthConfig): void {\n const missing = (['userPoolId', 'clientId', 'region'] as const).filter(k => !config[k])\n if (missing.length) {\n throw new CognitoAuthError(\n `AuthConfig incompleto — campi obbligatori mancanti: ${missing.join(', ')}`,\n 'INVALID_PARAMETER',\n )\n }\n if (!/^[a-z]{2}-[a-z]+-\\d$/.test(config.region)) {\n throw new CognitoAuthError(\n `AuthConfig.region non valido: \"${config.region}\" (es. eu-west-1)`,\n 'INVALID_PARAMETER',\n )\n }\n}\n\n\nexport class CognitoAuthClient extends TypedEventEmitter<AuthEvents> {\n protected readonly config: ResolvedAuthConfig\n private _state: AuthState = 'idle'\n private readonly _pool: CognitoUserPool\n private _idpClient: CognitoIdentityProviderClient | null = null\n // Mappa challengeSession-id → CognitoUser in-flight (MFA / new-password challenge)\n private readonly _pendingChallenges = new Map<string, CognitoUser>()\n private _refreshTimer: ReturnType<typeof setTimeout> | null = null\n\n constructor(config: AuthConfig) {\n super()\n validateConfig(config)\n this.config = {\n autoRefresh: true,\n refreshMarginSeconds: 300,\n totpIssuer: config.clientId,\n storage: new AutoStorageAdapter(),\n ...config,\n }\n this._pool = new CognitoUserPool({\n UserPoolId: this.config.userPoolId,\n ClientId: this.config.clientId,\n // amazon-cognito-identity-js ICognitoStorage coincide con il nostro StorageAdapter\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Storage: this.config.storage as any,\n })\n }\n\n // ─── State ─────────────────────────────────────────────────────────────────\n\n get state(): AuthState {\n return this._state\n }\n\n protected setState(next: AuthState): void {\n if (this._state === next) return\n this._state = next\n this.emit('stateChanged', next)\n }\n\n // ─── Sign-in ───────────────────────────────────────────────────────────────\n\n async signIn(email: string, password: string): Promise<SignInResult> {\n this.setState('loading')\n const cognitoUser = this._makeCognitoUser(email)\n const authDetails = new AuthenticationDetails({ Username: email, Password: password })\n\n return new Promise<SignInResult>((resolve, reject) => {\n cognitoUser.authenticateUser(authDetails, {\n onSuccess: (session) => {\n resolve(this._onAuthSuccess(cognitoUser, session))\n },\n onFailure: (err) => {\n this.setState('unauthenticated')\n reject(mapCognitoError(err))\n },\n mfaRequired: () => {\n this.setState('mfa_required')\n const challengeSession = this._storeChallengeUser(cognitoUser)\n const result: SignInResult = { status: 'MFA_REQUIRED', mfaType: 'SMS', challengeSession }\n this.emit('mfaRequired', { mfaType: 'SMS', challengeSession })\n resolve(result)\n },\n totpRequired: () => {\n this.setState('mfa_required')\n const challengeSession = this._storeChallengeUser(cognitoUser)\n const result: SignInResult = { status: 'MFA_REQUIRED', mfaType: 'TOTP', challengeSession }\n this.emit('mfaRequired', { mfaType: 'TOTP', challengeSession })\n resolve(result)\n },\n newPasswordRequired: (_userAttributes, requiredAttributes) => {\n this.setState('new_password_required')\n const challengeSession = this._storeChallengeUser(cognitoUser)\n const required: string[] = Array.isArray(requiredAttributes) ? requiredAttributes : []\n this.emit('newPasswordRequired', { requiredAttributes: required, challengeSession })\n resolve({ status: 'NEW_PASSWORD_REQUIRED', requiredAttributes: required, challengeSession })\n },\n // Cognito richiede il setup TOTP prima di completare il login\n mfaSetup: () => {\n this.setState('mfa_required')\n const challengeSession = this._storeChallengeUser(cognitoUser)\n resolve({ status: 'MFA_SETUP_REQUIRED', challengeSession })\n },\n })\n })\n }\n\n async respondToMfaChallenge(\n challengeSession: string,\n code: string,\n mfaType: MfaType,\n ): Promise<SignInResult> {\n const cognitoUser = this._takeChallengeUser(challengeSession)\n const sdkType = mfaType === 'TOTP' ? 'SOFTWARE_TOKEN_MFA' : 'SMS_MFA'\n\n return new Promise<SignInResult>((resolve, reject) => {\n cognitoUser.sendMFACode(\n code,\n {\n onSuccess: (session) => resolve(this._onAuthSuccess(cognitoUser, session)),\n onFailure: (err) => {\n this.setState('unauthenticated')\n reject(mapCognitoError(err))\n },\n },\n sdkType,\n )\n })\n }\n\n async respondToNewPasswordChallenge(\n challengeSession: string,\n newPassword: string,\n userAttributes?: Record<string, string>,\n ): Promise<SignInResult> {\n const cognitoUser = this._takeChallengeUser(challengeSession)\n\n return new Promise<SignInResult>((resolve, reject) => {\n cognitoUser.completeNewPasswordChallenge(\n newPassword,\n userAttributes ?? {}, // es. { name, family_name, given_name }\n {\n onSuccess: (session) => resolve(this._onAuthSuccess(cognitoUser, session)),\n onFailure: (err) => {\n this.setState('unauthenticated')\n reject(mapCognitoError(err))\n },\n // Cognito può richiedere MFA anche dopo il cambio password forzato\n mfaRequired: () => {\n this.setState('mfa_required')\n const newSession = this._storeChallengeUser(cognitoUser)\n this.emit('mfaRequired', { mfaType: 'SMS', challengeSession: newSession })\n resolve({ status: 'MFA_REQUIRED', mfaType: 'SMS', challengeSession: newSession })\n },\n totpRequired: () => {\n this.setState('mfa_required')\n const newSession = this._storeChallengeUser(cognitoUser)\n this.emit('mfaRequired', { mfaType: 'TOTP', challengeSession: newSession })\n resolve({ status: 'MFA_REQUIRED', mfaType: 'TOTP', challengeSession: newSession })\n },\n },\n )\n })\n }\n\n async signOut(global = false): Promise<void> {\n this._clearRefreshTimer()\n this._pendingChallenges.clear()\n\n const cognitoUser = this._pool.getCurrentUser()\n if (!cognitoUser) {\n this.setState('unauthenticated')\n this.emit('signedOut')\n return\n }\n\n if (global) {\n await new Promise<void>((resolve, reject) => {\n cognitoUser.globalSignOut({\n onSuccess: () => {\n this.setState('unauthenticated')\n this.emit('signedOut')\n resolve()\n },\n onFailure: (err) => reject(mapCognitoError(err)),\n })\n })\n } else {\n cognitoUser.signOut()\n this.setState('unauthenticated')\n this.emit('signedOut')\n }\n }\n\n // ─── Registration ──────────────────────────────────────────────────────────\n\n async signUp(\n email: string,\n password: string,\n attributes: Record<string, string> = {},\n ): Promise<void> {\n const userAttributes = Object.entries({ email, ...attributes }).map(\n ([Name, Value]) => new CognitoUserAttribute({ Name, Value }),\n )\n\n await new Promise<void>((resolve, reject) => {\n this._pool.signUp(email, password, userAttributes, [], (err) => {\n if (err) return reject(mapCognitoError(err))\n resolve()\n })\n })\n }\n\n async confirmSignUp(email: string, code: string): Promise<void> {\n const cognitoUser = this._makeCognitoUser(email)\n await new Promise<void>((resolve, reject) => {\n cognitoUser.confirmRegistration(code, true, (err) => {\n if (err) return reject(mapCognitoError(err))\n resolve()\n })\n })\n }\n\n async resendConfirmationCode(email: string): Promise<void> {\n const cognitoUser = this._makeCognitoUser(email)\n await new Promise<void>((resolve, reject) => {\n cognitoUser.resendConfirmationCode((err) => {\n if (err) return reject(mapCognitoError(err))\n resolve()\n })\n })\n }\n\n // ─── Password ──────────────────────────────────────────────────────────────\n\n async forgotPassword(email: string): Promise<void> {\n const cognitoUser = this._makeCognitoUser(email)\n await new Promise<void>((resolve, reject) => {\n cognitoUser.forgotPassword({\n // inputVerificationCode → il codice è stato inviato all'email/telefono\n inputVerificationCode: () => resolve(),\n onSuccess: () => resolve(),\n onFailure: (err) => reject(mapCognitoError(err)),\n })\n })\n }\n\n async confirmForgotPassword(\n email: string,\n code: string,\n newPassword: string,\n ): Promise<void> {\n const cognitoUser = this._makeCognitoUser(email)\n await new Promise<void>((resolve, reject) => {\n cognitoUser.confirmPassword(code, newPassword, {\n onSuccess: () => resolve(),\n onFailure: (err) => reject(mapCognitoError(err)),\n })\n })\n }\n\n async changePassword(currentPassword: string, newPassword: string): Promise<void> {\n const cognitoUser = await this._getAuthenticatedUser()\n await new Promise<void>((resolve, reject) => {\n cognitoUser.changePassword(currentPassword, newPassword, (err) => {\n if (err) return reject(mapCognitoError(err))\n resolve()\n })\n })\n }\n\n // ─── Session & User ────────────────────────────────────────────────────────\n\n async getSession(): Promise<AuthSession> {\n const cognitoUser = this._pool.getCurrentUser()\n if (!cognitoUser) throw new SessionExpiredError()\n\n const raw = await this._getRawSession(cognitoUser)\n this._scheduleRefresh(cognitoUser, raw)\n return buildAuthSession(raw)\n }\n\n async getCurrentUser(): Promise<AuthUser | null> {\n const cognitoUser = this._pool.getCurrentUser()\n if (!cognitoUser) return null\n\n try {\n const session = await this._getRawSession(cognitoUser)\n this.setState('authenticated')\n return buildAuthUser(session, cognitoUser.getUsername())\n } catch {\n return null\n }\n }\n\n async getUserAttributes(): Promise<Record<string, string>> {\n const cognitoUser = await this._getAuthenticatedUser()\n return new Promise((resolve, reject) => {\n cognitoUser.getUserAttributes((err, result) => {\n if (err) return reject(mapCognitoError(err))\n resolve(Object.fromEntries((result ?? []).map(a => [a.getName(), a.getValue()])))\n })\n })\n }\n\n async updateUserAttributes(attributes: Record<string, string>): Promise<void> {\n const cognitoUser = await this._getAuthenticatedUser()\n const attrs = Object.entries(attributes).map(\n ([Name, Value]) => new CognitoUserAttribute({ Name, Value }),\n )\n await new Promise<void>((resolve, reject) => {\n cognitoUser.updateAttributes(attrs, (err) => {\n if (err) return reject(mapCognitoError(err))\n resolve()\n })\n })\n }\n\n async verifyUserAttribute(\n attribute: 'email' | 'phone_number',\n code: string,\n ): Promise<void> {\n const cognitoUser = await this._getAuthenticatedUser()\n await new Promise<void>((resolve, reject) => {\n cognitoUser.verifyAttribute(attribute, code, {\n onSuccess: () => resolve(),\n onFailure: (err) => reject(mapCognitoError(err)),\n })\n })\n }\n\n async sendAttributeVerificationCode(attribute: 'email' | 'phone_number'): Promise<void> {\n const cognitoUser = await this._getAuthenticatedUser()\n await new Promise<void>((resolve, reject) => {\n cognitoUser.getAttributeVerificationCode(attribute, {\n onSuccess: () => resolve(),\n onFailure: (err) => reject(mapCognitoError(err)),\n inputVerificationCode: () => resolve(),\n })\n })\n }\n\n async deleteUser(): Promise<void> {\n const cognitoUser = await this._getAuthenticatedUser()\n this._clearRefreshTimer()\n await new Promise<void>((resolve, reject) => {\n cognitoUser.deleteUser((err) => {\n if (err) return reject(mapCognitoError(err))\n this.setState('unauthenticated')\n this.emit('signedOut')\n resolve()\n })\n })\n }\n\n // ─── MFA ───────────────────────────────────────────────────────────────────\n\n async setupTotp(): Promise<MfaSetupResult> {\n const cognitoUser = await this._getAuthenticatedUser()\n return new Promise<MfaSetupResult>((resolve, reject) => {\n cognitoUser.associateSoftwareToken({\n associateSecretCode: (secretCode: string) => {\n const issuer = encodeURIComponent(this.config.totpIssuer)\n const account = encodeURIComponent(cognitoUser.getUsername())\n const qrCodeUri =\n `otpauth://totp/${issuer}:${account}` +\n `?secret=${secretCode}&issuer=${issuer}`\n resolve({ secretCode, qrCodeUri })\n },\n onFailure: (err: Error) => reject(mapCognitoError(err)),\n })\n })\n }\n\n async verifyTotpSetup(code: string): Promise<void> {\n const cognitoUser = await this._getAuthenticatedUser()\n return new Promise<void>((resolve, reject) => {\n cognitoUser.verifySoftwareToken(code, this.config.totpIssuer, {\n onSuccess: () => resolve(),\n onFailure: (err: Error) => reject(mapCognitoError(err)),\n })\n })\n }\n\n async getMfaPreference(): Promise<MfaPreference> {\n const session = await this.getSession()\n try {\n const response = await this._getIdpClient().send(\n new GetUserCommand({ AccessToken: session.accessToken }),\n )\n const enabled: string[] = response.UserMFASettingList ?? []\n const preferred: string | null = response.PreferredMfaSetting ?? null\n const toSdkType = (s: string | null): MfaType | null =>\n s === 'SOFTWARE_TOKEN_MFA' ? 'TOTP' : s === 'SMS_MFA' ? 'SMS' : null\n return {\n enabled: enabled.length > 0,\n preferred: toSdkType(preferred),\n totp: enabled.includes('SOFTWARE_TOKEN_MFA'),\n sms: enabled.includes('SMS_MFA'),\n }\n } catch (err) {\n throw mapCognitoError(err)\n }\n }\n\n async setMfaPreference(type: MfaType): Promise<void> {\n const cognitoUser = await this._getAuthenticatedUser()\n const smsMfa = { Enabled: type === 'SMS', PreferredMfa: type === 'SMS' }\n const totpMfa = { Enabled: type === 'TOTP', PreferredMfa: type === 'TOTP' }\n return new Promise<void>((resolve, reject) => {\n cognitoUser.setUserMfaPreference(smsMfa, totpMfa, (err: Error | undefined) => {\n if (err) return reject(mapCognitoError(err))\n resolve()\n })\n })\n }\n\n async disableMfa(): Promise<void> {\n const cognitoUser = await this._getAuthenticatedUser()\n const off = { Enabled: false, PreferredMfa: false }\n return new Promise<void>((resolve, reject) => {\n cognitoUser.setUserMfaPreference(off, off, (err: Error | undefined) => {\n if (err) return reject(mapCognitoError(err))\n resolve()\n })\n })\n }\n\n // ─── TOTP setup durante il challenge login ─────────────────────────────────\n\n /**\n * Ottiene il secretCode/QR URI per il setup TOTP durante il flusso di login\n * (quando signIn restituisce MFA_SETUP_REQUIRED). Non richiede una sessione\n * autenticata: usa il CognitoUser in attesa nel challenge.\n */\n async setupTotpChallenge(challengeSession: string): Promise<MfaSetupResult> {\n const cognitoUser = this._peekChallengeUser(challengeSession)\n return new Promise<MfaSetupResult>((resolve, reject) => {\n cognitoUser.associateSoftwareToken({\n associateSecretCode: (secretCode: string) => {\n const issuer = encodeURIComponent(this.config.totpIssuer)\n const account = encodeURIComponent(cognitoUser.getUsername())\n const qrCodeUri =\n `otpauth://totp/${issuer}:${account}` +\n `?secret=${secretCode}&issuer=${issuer}`\n resolve({ secretCode, qrCodeUri })\n },\n onFailure: (err: Error) => reject(mapCognitoError(err)),\n })\n })\n }\n\n /**\n * Verifica il codice TOTP e completa il login. Dopo questa chiamata la\n * sessione è autenticata e il challenge viene rimosso dalla mappa.\n */\n async verifyTotpChallenge(challengeSession: string, code: string): Promise<SignInResult> {\n const cognitoUser = this._takeChallengeUser(challengeSession)\n return new Promise<SignInResult>((resolve, reject) => {\n cognitoUser.verifySoftwareToken(code, this.config.totpIssuer, {\n onSuccess: (session: CognitoUserSession) => resolve(this._onAuthSuccess(cognitoUser, session)),\n onFailure: (err: Error) => reject(mapCognitoError(err)),\n })\n })\n }\n\n // ─── Private helpers ───────────────────────────────────────────────────────\n\n private _getIdpClient(): CognitoIdentityProviderClient {\n if (!this._idpClient) {\n this._idpClient = new CognitoIdentityProviderClient({ region: this.config.region })\n }\n return this._idpClient\n }\n\n private _makeCognitoUser(username: string): CognitoUser {\n return new CognitoUser({\n Username: username,\n Pool: this._pool,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Storage: this.config.storage as any,\n })\n }\n\n private _storeChallengeUser(cognitoUser: CognitoUser): string {\n const id = crypto.randomUUID()\n this._pendingChallenges.set(id, cognitoUser)\n return id\n }\n\n private _takeChallengeUser(challengeSession: string): CognitoUser {\n const user = this._pendingChallenges.get(challengeSession)\n if (!user) {\n throw new CognitoAuthError(\n 'Challenge session non valida o scaduta',\n 'UNKNOWN',\n )\n }\n this._pendingChallenges.delete(challengeSession)\n return user\n }\n\n /** Legge il CognitoUser senza rimuoverlo dalla mappa (per setupTotpChallenge). */\n private _peekChallengeUser(challengeSession: string): CognitoUser {\n const user = this._pendingChallenges.get(challengeSession)\n if (!user) {\n throw new CognitoAuthError(\n 'Challenge session non valida o scaduta',\n 'UNKNOWN',\n )\n }\n return user\n }\n\n private _onAuthSuccess(cognitoUser: CognitoUser, session: CognitoUserSession): SignInResult {\n const authSession = buildAuthSession(session)\n const authUser = buildAuthUser(session, cognitoUser.getUsername())\n this.setState('authenticated')\n this.emit('signedIn', authUser)\n this._scheduleRefresh(cognitoUser, session)\n return { status: 'SUCCESS', user: authUser, session: authSession }\n }\n\n private _getRawSession(cognitoUser: CognitoUser): Promise<CognitoUserSession> {\n return new Promise((resolve, reject) => {\n cognitoUser.getSession((err: Error | null, session: CognitoUserSession | null) => {\n if (err || !session) {\n return reject(err ? mapCognitoError(err) : new SessionExpiredError())\n }\n if (!session.isValid()) {\n return reject(new SessionExpiredError())\n }\n resolve(session)\n })\n })\n }\n\n private async _getAuthenticatedUser(): Promise<CognitoUser> {\n const cognitoUser = this._pool.getCurrentUser()\n if (!cognitoUser) throw new SessionExpiredError()\n // getSession gestisce internamente il refresh se il token è scaduto\n await this._getRawSession(cognitoUser)\n return cognitoUser\n }\n\n private _scheduleRefresh(cognitoUser: CognitoUser, session: CognitoUserSession): void {\n if (!this.config.autoRefresh) return\n this._clearRefreshTimer()\n\n const expiresAt = session.getAccessToken().getExpiration() * 1000\n const refreshIn = expiresAt - Date.now() - this.config.refreshMarginSeconds * 1000\n\n if (refreshIn <= 0) return\n\n this._refreshTimer = setTimeout(() => {\n const refreshToken = new CognitoRefreshToken({\n RefreshToken: session.getRefreshToken().getToken(),\n })\n cognitoUser.refreshSession(refreshToken, (err, newSession: CognitoUserSession) => {\n if (err) {\n this.emit('sessionExpired')\n this.setState('unauthenticated')\n return\n }\n this.emit('tokenRefreshed', buildAuthSession(newSession))\n this._scheduleRefresh(cognitoUser, newSession)\n })\n }, refreshIn)\n }\n\n private _clearRefreshTimer(): void {\n if (this._refreshTimer !== null) {\n clearTimeout(this._refreshTimer)\n this._refreshTimer = null\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { A as AuthConfig, a as AuthEvents, b as AuthSession, c as AuthState, d as AuthUser, e as AutoStorageAdapter, I as InMemoryStorageAdapter, L as LocalStorageAdapter, M as MfaPreference, f as MfaSetupResult, g as MfaType, R as ResolvedAuthConfig, S as SessionStorageAdapter, h as SignInResult, i as StorageAdapter } from '../types-bxA1vonL.cjs';
|
|
2
|
+
export { A as AuthErrorCode, C as CognitoAuthError, I as InvalidCodeError, N as NotAuthorizedError, S as SessionExpiredError, U as UserNotConfirmedError, m as mapCognitoError } from '../errors-BkUDHleb.cjs';
|
|
3
|
+
export { C as CognitoAuthClient, T as TypedEventEmitter } from '../client-BAoL8h4E.cjs';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { A as AuthConfig, a as AuthEvents, b as AuthSession, c as AuthState, d as AuthUser, e as AutoStorageAdapter, I as InMemoryStorageAdapter, L as LocalStorageAdapter, M as MfaPreference, f as MfaSetupResult, g as MfaType, R as ResolvedAuthConfig, S as SessionStorageAdapter, h as SignInResult, i as StorageAdapter } from '../types-bxA1vonL.js';
|
|
2
|
+
export { A as AuthErrorCode, C as CognitoAuthError, I as InvalidCodeError, N as NotAuthorizedError, S as SessionExpiredError, U as UserNotConfirmedError, m as mapCognitoError } from '../errors-BkUDHleb.js';
|
|
3
|
+
export { C as CognitoAuthClient, T as TypedEventEmitter } from '../client-63FraVdm.js';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import '../chunk-AD7T42HJ.js';
|
|
2
|
+
export { AutoStorageAdapter, CognitoAuthClient, CognitoAuthError, InMemoryStorageAdapter, InvalidCodeError, LocalStorageAdapter, NotAuthorizedError, SessionExpiredError, SessionStorageAdapter, TypedEventEmitter, UserNotConfirmedError, mapCognitoError } from '../chunk-DKPFVGTY.js';
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
type AuthErrorCode = 'NOT_AUTHORIZED' | 'USER_NOT_FOUND' | 'USER_NOT_CONFIRMED' | 'INVALID_PARAMETER' | 'INVALID_PASSWORD' | 'CODE_MISMATCH' | 'EXPIRED_CODE' | 'CODE_DELIVERY_FAILURE' | 'LIMIT_EXCEEDED' | 'TOO_MANY_REQUESTS' | 'TOO_MANY_FAILED_ATTEMPTS' | 'PASSWORD_RESET_REQUIRED' | 'MFA_METHOD_NOT_FOUND' | 'SOFTWARE_TOKEN_MFA_NOT_FOUND' | 'SESSION_EXPIRED' | 'NETWORK_ERROR' | 'UNKNOWN';
|
|
2
|
+
declare class CognitoAuthError extends Error {
|
|
3
|
+
readonly code: AuthErrorCode;
|
|
4
|
+
readonly originalError?: unknown | undefined;
|
|
5
|
+
readonly name = "CognitoAuthError";
|
|
6
|
+
constructor(message: string, code: AuthErrorCode, originalError?: unknown | undefined);
|
|
7
|
+
}
|
|
8
|
+
declare class SessionExpiredError extends CognitoAuthError {
|
|
9
|
+
constructor();
|
|
10
|
+
}
|
|
11
|
+
declare class NotAuthorizedError extends CognitoAuthError {
|
|
12
|
+
constructor(message?: string);
|
|
13
|
+
}
|
|
14
|
+
declare class UserNotConfirmedError extends CognitoAuthError {
|
|
15
|
+
constructor();
|
|
16
|
+
}
|
|
17
|
+
declare class InvalidCodeError extends CognitoAuthError {
|
|
18
|
+
constructor(expired?: boolean);
|
|
19
|
+
}
|
|
20
|
+
declare function mapCognitoError(error: unknown): CognitoAuthError;
|
|
21
|
+
|
|
22
|
+
export { type AuthErrorCode as A, CognitoAuthError as C, InvalidCodeError as I, NotAuthorizedError as N, SessionExpiredError as S, UserNotConfirmedError as U, mapCognitoError as m };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
type AuthErrorCode = 'NOT_AUTHORIZED' | 'USER_NOT_FOUND' | 'USER_NOT_CONFIRMED' | 'INVALID_PARAMETER' | 'INVALID_PASSWORD' | 'CODE_MISMATCH' | 'EXPIRED_CODE' | 'CODE_DELIVERY_FAILURE' | 'LIMIT_EXCEEDED' | 'TOO_MANY_REQUESTS' | 'TOO_MANY_FAILED_ATTEMPTS' | 'PASSWORD_RESET_REQUIRED' | 'MFA_METHOD_NOT_FOUND' | 'SOFTWARE_TOKEN_MFA_NOT_FOUND' | 'SESSION_EXPIRED' | 'NETWORK_ERROR' | 'UNKNOWN';
|
|
2
|
+
declare class CognitoAuthError extends Error {
|
|
3
|
+
readonly code: AuthErrorCode;
|
|
4
|
+
readonly originalError?: unknown | undefined;
|
|
5
|
+
readonly name = "CognitoAuthError";
|
|
6
|
+
constructor(message: string, code: AuthErrorCode, originalError?: unknown | undefined);
|
|
7
|
+
}
|
|
8
|
+
declare class SessionExpiredError extends CognitoAuthError {
|
|
9
|
+
constructor();
|
|
10
|
+
}
|
|
11
|
+
declare class NotAuthorizedError extends CognitoAuthError {
|
|
12
|
+
constructor(message?: string);
|
|
13
|
+
}
|
|
14
|
+
declare class UserNotConfirmedError extends CognitoAuthError {
|
|
15
|
+
constructor();
|
|
16
|
+
}
|
|
17
|
+
declare class InvalidCodeError extends CognitoAuthError {
|
|
18
|
+
constructor(expired?: boolean);
|
|
19
|
+
}
|
|
20
|
+
declare function mapCognitoError(error: unknown): CognitoAuthError;
|
|
21
|
+
|
|
22
|
+
export { type AuthErrorCode as A, CognitoAuthError as C, InvalidCodeError as I, NotAuthorizedError as N, SessionExpiredError as S, UserNotConfirmedError as U, mapCognitoError as m };
|