UNPKG

@aws-lambda-powertools/parser

Version:
623 lines (622 loc) 22.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PreTokenGenerationTriggerRequestSchema = exports.PreTokenGenerationTriggerGroupConfigurationSchema = exports.PreTokenGenerationTriggerSchemaV2AndV3 = exports.PreTokenGenerationTriggerSchemaV1 = exports.VerifyAuthChallengeTriggerSchema = exports.CreateAuthChallengeTriggerSchema = exports.DefineAuthChallengeTriggerSchema = exports.ChallengeResultSchema = exports.CustomSMSSenderTriggerSchema = exports.CustomEmailSenderTriggerSchema = exports.CustomMessageTriggerSchema = exports.MigrateUserTriggerSchema = exports.PostAuthenticationTriggerSchema = exports.PreAuthenticationTriggerSchema = exports.PostConfirmationTriggerSchema = exports.PreSignupTriggerSchema = exports.CognitoTriggerBaseSchema = void 0; const zod_1 = require("zod"); /** * Base schema including the common parameters for all Cognito trigger events. * * @see {@link https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html#cognito-user-pools-lambda-trigger-syntax-shared | Amazon Cognito Developer Guide} */ const CognitoTriggerBaseSchema = zod_1.z.object({ version: zod_1.z.string(), triggerSource: zod_1.z.string(), region: zod_1.z.string(), userPoolId: zod_1.z.string(), userName: zod_1.z.string().optional(), callerContext: zod_1.z.object({ awsSdkVersion: zod_1.z.string(), clientId: zod_1.z.string(), }), request: zod_1.z.object({}), response: zod_1.z.object({}), }); exports.CognitoTriggerBaseSchema = CognitoTriggerBaseSchema; /** * A zod schema for a Cognito Pre-Signup trigger event. * * @example * ```json * { * "version": "1", * "triggerSource": "PreSignUp_SignUp", * "region": "us-east-1", * "userPoolId": "us-east-1_ABC123", * "userName": "johndoe", * "callerContext": { * "awsSdkVersion": "2.814.0", * "clientId": "client123" * }, * "request": { * "userAttributes": { * "email": "johndoe@example.com", * "name": "John Doe" * }, * "validationData": null, * "clientMetadata": { * "someKey": "someValue" * } * }, * "response": { * "autoConfirmUser": false, * "autoVerifyEmail": false, * "autoVerifyPhone": false * } * } * ``` * * @see {@link https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-sign-up.html | Amazon Cognito Developer Guide} */ const PreSignupTriggerSchema = CognitoTriggerBaseSchema.extend({ triggerSource: zod_1.z.literal('PreSignUp_SignUp'), request: zod_1.z.object({ userAttributes: zod_1.z.record(zod_1.z.string(), zod_1.z.string()), validationData: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).nullable(), clientMetadata: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(), userNotFound: zod_1.z.boolean().optional(), }), response: zod_1.z.object({ autoConfirmUser: zod_1.z.literal(false), autoVerifyEmail: zod_1.z.literal(false), autoVerifyPhone: zod_1.z.literal(false), }), }); exports.PreSignupTriggerSchema = PreSignupTriggerSchema; /** * A zod schema for a Cognito Post-Confirmation trigger event. * * @example * ```json * { * "version": "1", * "triggerSource": "PostConfirmation_ConfirmSignUp", * "region": "us-east-1", * "userPoolId": "us-east-1_ABC123", * "userName": "johndoe", * "callerContext": { * "awsSdkVersion": "2.814.0", * "clientId": "client123" * }, * "request": { * "userAttributes": { * "email": "user@example.com", * "name": "John Doe" * }, * "clientMetadata": { * "customKey": "customValue" * } * }, * "response": {} * } * ``` * * @see {@link https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-post-confirmation.html | Amazon Cognito Developer Guide} */ const PostConfirmationTriggerSchema = CognitoTriggerBaseSchema.extend({ triggerSource: zod_1.z.literal('PostConfirmation_ConfirmSignUp'), request: zod_1.z.object({ userAttributes: zod_1.z.record(zod_1.z.string(), zod_1.z.string()), clientMetadata: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(), }), response: zod_1.z.object({}), }); exports.PostConfirmationTriggerSchema = PostConfirmationTriggerSchema; /** * A zod schema for a Cognito Pre-Authentication trigger event. * * @example * ```json * { * "version": "1", * "triggerSource": "PreAuthentication_Authentication", * "region": "us-east-1", * "userPoolId": "us-east-1_ABC123", * "request": { * "userAttributes": { * "email": "user@example.com", * "name": "John Doe" * }, * "validationData": { * "someKey": "someValue" * }, * "userNotFound": false * }, * "response": {} * } * ``` * * * @see {@link https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-authentication.html | Amazon Cognito Developer Guide} */ const PreAuthenticationTriggerSchema = CognitoTriggerBaseSchema.extend({ triggerSource: zod_1.z.literal('PreAuthentication_Authentication'), request: zod_1.z.object({ userAttributes: zod_1.z.record(zod_1.z.string(), zod_1.z.string()), validationData: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(), userNotFound: zod_1.z.boolean().optional(), }), response: zod_1.z.object({}), }); exports.PreAuthenticationTriggerSchema = PreAuthenticationTriggerSchema; /** * A zod schema for a Cognito Post-Authentication trigger event. * * @example * ```json * { * "version": "1", * "triggerSource": "PostAuthentication_Authentication", * "region": "us-east-1", * "userPoolId": "us-east-1_ABC123", * "userName": "johndoe", * "callerContext": { * "awsSdkVersion": "2.814.0", * "clientId": "client123" * }, * "request": { * "userAttributes": { * "email": "user@example.com", * "name": "John Doe" * }, * "newDeviceUsed": true, * "clientMetadata": { * "customKey": "customValue" * } * }, * "response": {} * } * ``` * * @see {@link https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-post-authentication.html | Amazon Cognito Developer Guide} */ const PostAuthenticationTriggerSchema = CognitoTriggerBaseSchema.extend({ triggerSource: zod_1.z.literal('PostAuthentication_Authentication'), request: zod_1.z.object({ userAttributes: zod_1.z.record(zod_1.z.string(), zod_1.z.string()), newDeviceUsed: zod_1.z.boolean().optional(), clientMetadata: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(), }), }); exports.PostAuthenticationTriggerSchema = PostAuthenticationTriggerSchema; /** * A zod schema for a Cognito Pre-Token Generation trigger event group configuration. * * Use this schema to extend the {@link PreTokenGenerationTriggerRequestSchema} for the `groupConfiguration` property. */ const PreTokenGenerationTriggerGroupConfigurationSchema = zod_1.z.object({ groupsToOverride: zod_1.z.array(zod_1.z.string()), iamRolesToOverride: zod_1.z.array(zod_1.z.string()), preferredRole: zod_1.z.string().optional(), }); exports.PreTokenGenerationTriggerGroupConfigurationSchema = PreTokenGenerationTriggerGroupConfigurationSchema; /** * A zod schema for a Cognito Pre-Token Generation trigger event request. * * Use this schema to extend the {@link PreTokenGenerationTriggerSchemaV1} and {@link PreTokenGenerationTriggerSchemaV2AndV3} for the `request` property. */ const PreTokenGenerationTriggerRequestSchema = zod_1.z.object({ userAttributes: zod_1.z.record(zod_1.z.string(), zod_1.z.string()), groupConfiguration: PreTokenGenerationTriggerGroupConfigurationSchema, clientMetadata: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(), }); exports.PreTokenGenerationTriggerRequestSchema = PreTokenGenerationTriggerRequestSchema; /** * A zod schema for a Cognito Pre-Token Generation trigger event (version 1). * * @example * ```json * { * "version": "1", * "triggerSource": "TokenGeneration_Authentication", * "region": "us-east-1", * "userPoolId": "us-east-1_ABC123", * "userName": "johndoe", * "callerContext": { * "awsSdkVersion": "2.814.0", * "clientId": "client123" * }, * "request": { * "userAttributes": { "string": "string" }, * "groupConfiguration": { * "groupsToOverride": [ "string", "string" ], * "iamRolesToOverride": [ "string", "string" ], * "preferredRole": "string" * }, * "clientMetadata": { "string": "string" } * }, * "response": {} * } * ``` * * @see {@link https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-token-generation.html | Amazon Cognito Developer Guide} */ const PreTokenGenerationTriggerSchemaV1 = CognitoTriggerBaseSchema.extend({ request: PreTokenGenerationTriggerRequestSchema, }); exports.PreTokenGenerationTriggerSchemaV1 = PreTokenGenerationTriggerSchemaV1; /** * A zod schema for a Cognito Pre-Token Generation trigger event (version 2 and 3). * * @example * ```json * { * "version": "2", * "triggerSource": "TokenGeneration_Authentication", * "region": "us-east-1", * "userPoolId": "us-east-1_ABC123", * "userName": "johndoe", * "callerContext": { * "awsSdkVersion": "2.814.0", * "clientId": "client123" * }, * "request": { * "userAttributes": { "string": "string" }, * "groupConfiguration": { * "groupsToOverride": [ "string", "string" ], * "iamRolesToOverride": [ "string", "string" ], * "preferredRole": "string" * }, * "scopes": [ "string", "string" ], * "clientMetadata": { "string": "string" } * }, * "response": {} * } * ``` * * @see {@link https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-token-generation.html | Amazon Cognito Developer Guide} */ const PreTokenGenerationTriggerSchemaV2AndV3 = CognitoTriggerBaseSchema.extend({ request: PreTokenGenerationTriggerRequestSchema.extend({ scopes: zod_1.z.array(zod_1.z.string()).optional(), }), }); exports.PreTokenGenerationTriggerSchemaV2AndV3 = PreTokenGenerationTriggerSchemaV2AndV3; /** * A zod schema for a Cognito Migrate User trigger event. * * @example * ```json * { * "version": "1", * "triggerSource": "UserMigration_Authentication", * "region": "us-east-1", * "userPoolId": "us-east-1_ABC123", * "userName": "johndoe", * "callerContext": { * "awsSdkVersion": "2.814.0", * "clientId": "client123" * }, * "request": { * "password": "string", * "validationData": { "key": "value" }, * "clientMetadata": { "key": "value" } * }, * "response": { * "userAttributes": null, * "finalUserStatus": null, * "messageAction": null, * "desiredDeliveryMediums": null, * "forceAliasCreation": null, * "enableSMSMFA": null * } * } * ``` * * @see {@link https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-migrate-user.html | Amazon Cognito Developer Guide} */ const MigrateUserTriggerSchema = CognitoTriggerBaseSchema.extend({ userName: zod_1.z.string(), request: zod_1.z.object({ password: zod_1.z.string(), validationData: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(), clientMetadata: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(), }), response: zod_1.z.object({ userAttributes: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).nullable(), finalUserStatus: zod_1.z.string().nullable(), messageAction: zod_1.z.string().nullable(), desiredDeliveryMediums: zod_1.z.array(zod_1.z.string()).nullable(), forceAliasCreation: zod_1.z.boolean().nullable(), enableSMSMFA: zod_1.z.boolean().nullable(), }), }); exports.MigrateUserTriggerSchema = MigrateUserTriggerSchema; /** * A zod schema for a Cognito Custom Message trigger event. * * @example * ```json * { * "version": "1", * "triggerSource": "CustomMessage_SignUp", * "region": "us-east-1", * "userPoolId": "us-east-1_ABC123", * "userName": "johndoe", * "callerContext": { * "awsSdkVersion": "2.814.0", * "clientId": "client123" * }, * "request": { * "userAttributes": { * "email": "user@example.com", * "name": "John Doe" * }, * "codeParameter": "{####}", * "usernameParameter": "string", * "linkParameter": "string", * "usernameParameter": null * }, * "response": { * "smsMessage": null, * "emailMessage": null, * "emailSubject": null, * } * } * ``` * * @see {@link https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-custom-message.html | Amazon Cognito Developer Guide} */ const CustomMessageTriggerSchema = CognitoTriggerBaseSchema.extend({ request: zod_1.z.object({ userAttributes: zod_1.z.record(zod_1.z.string(), zod_1.z.string()), codeParameter: zod_1.z.string(), linkParameter: zod_1.z.string().nullable(), usernameParameter: zod_1.z.string().nullable(), clientMetadata: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(), }), response: zod_1.z.object({ smsMessage: zod_1.z.string().nullable(), emailMessage: zod_1.z.string().nullable(), emailSubject: zod_1.z.string().nullable(), }), }); exports.CustomMessageTriggerSchema = CustomMessageTriggerSchema; /** * A zod schema for a Cognito Custom Email Sender trigger event. * * @example * ```json * { * "version": "1", * "triggerSource": "CustomEmailSender_SignUp", * "region": "us-east-1", * "userPoolId": "us-east-1_ABC123", * "userName": "johndoe", * "callerContext": { * "awsSdkVersion": "2.814.0", * "clientId": "client123" * }, * "request": { * "type": "customEmailSenderRequestV1", * "code": "string", * "clientMetadata": { "string": "string" }, * "userAttributes": { "string": "string" } * }, * "response": {} * } * ``` * * @see {@link https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-custom-email-sender.html | Amazon Cognito Developer Guide} */ const CustomEmailSenderTriggerSchema = CognitoTriggerBaseSchema.extend({ triggerSource: zod_1.z.literal('CustomEmailSender_SignUp'), request: zod_1.z.object({ type: zod_1.z.literal('customEmailSenderRequestV1'), code: zod_1.z.string(), clientMetadata: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(), userAttributes: zod_1.z.record(zod_1.z.string(), zod_1.z.string()), }), }); exports.CustomEmailSenderTriggerSchema = CustomEmailSenderTriggerSchema; /** * A zod schema for a Cognito Custom SMS Sender trigger event. * * @example * ```json * { * "version": "1", * "triggerSource": "CustomSMSSender_SignUp", * "region": "us-east-1", * "userPoolId": "us-east-1_ABC123", * "userName": "johndoe", * "callerContext": { * "awsSdkVersion": "2.814.0", * "clientId": "client123" * }, * "request": { * "type": "customSMSSenderRequestV1", * "code": "string", * "clientMetadata": { * "string": "string" * }, * "userAttributes": { "string": "string" } * }, * "response": {} * } * ``` * * @see {@link https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-custom-sms-sender.html | Amazon Cognito Developer Guide} */ const CustomSMSSenderTriggerSchema = CognitoTriggerBaseSchema.extend({ triggerSource: zod_1.z.literal('CustomSMSSender_SignUp'), request: zod_1.z.object({ type: zod_1.z.literal('customSMSSenderRequestV1'), code: zod_1.z.string(), clientMetadata: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(), userAttributes: zod_1.z.record(zod_1.z.string(), zod_1.z.string()), }), }); exports.CustomSMSSenderTriggerSchema = CustomSMSSenderTriggerSchema; /** * A zod schema for a Cognito Challenge Result. */ const ChallengeResultSchema = zod_1.z.object({ challengeName: zod_1.z.union([ zod_1.z.literal('CUSTOM_CHALLENGE'), zod_1.z.literal('SRP_A'), zod_1.z.literal('PASSWORD_VERIFIER'), zod_1.z.literal('SMS_MFA'), zod_1.z.literal('EMAIL_OTP'), zod_1.z.literal('SOFTWARE_TOKEN_MFA'), zod_1.z.literal('DEVICE_SRP_AUTH'), zod_1.z.literal('DEVICE_PASSWORD_VERIFIER'), zod_1.z.literal('ADMIN_NO_SRP_AUTH'), ]), challengeResult: zod_1.z.boolean(), challengeMetadata: zod_1.z.string().optional(), }); exports.ChallengeResultSchema = ChallengeResultSchema; /** * A zod schema for a Cognito Define Auth Challenge trigger event. * * @example * ```json * { * "version": "1", * "triggerSource": "DefineAuthChallenge_Authentication", * "region": "us-east-1", * "userPoolId": "us-east-1_ABC123", * "userName": "johndoe", * "callerContext": { * "awsSdkVersion": "2.814.0", * "clientId": "client123" * }, * "request": { * "userAttributes": { "email": "user@example.com", "name": "John Doe" }, * "session": [ * { * "challengeName": "SRP_A", * "challengeResult": true, * "challengeMetadata": "metadata" * } * ], * "clientMetadata": { "key": "value" }, * "userNotFound": false * }, * "response": { * "challengeName": "PASSWORD_VERIFIER", * "issueTokens": false, * "failAuthentication": false * } * } * ``` * * @see {@link https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-define-auth-challenge.html | Amazon Cognito Developer Guide} */ const DefineAuthChallengeTriggerSchema = CognitoTriggerBaseSchema.extend({ triggerSource: zod_1.z.literal('DefineAuthChallenge_Authentication'), request: zod_1.z.object({ userAttributes: zod_1.z.record(zod_1.z.string(), zod_1.z.string()), session: zod_1.z.array(ChallengeResultSchema).min(1), clientMetadata: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(), userNotFound: zod_1.z.boolean().optional(), }), response: zod_1.z.object({ challengeName: zod_1.z.string().nullish(), issueTokens: zod_1.z.boolean().nullish(), failAuthentication: zod_1.z.boolean().nullish(), }), }); exports.DefineAuthChallengeTriggerSchema = DefineAuthChallengeTriggerSchema; /** * A zod schema for a Cognito Create Auth Challenge trigger event. * * @example * ```json * { * "version": "1", * "triggerSource": "CreateAuthChallenge_Authentication", * "region": "us-east-1", * "userPoolId": "us-east-1_ABC123", * "userName": "johndoe", * "callerContext": { * "awsSdkVersion": "2.814.0", * "clientId": "client123" * }, * "request": { * "userAttributes": { "email": "user@example.com", "name": "John Doe" }, * "challengeName": "CUSTOM_CHALLENGE", * "session": [ * { "challengeName": "SRP_A", "challengeResult": true, "challengeMetadata": "metadata" } * ], * "clientMetadata": { "key": "value" }, * "userNotFound": false * }, * "response": { * "publicChallengeParameters": { "captchaUrl": "url/123.jpg" }, * "privateChallengeParameters": { "answer": "5" }, * "challengeMetadata": "custom metadata" * } * } * ``` * * @see {@link https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-create-auth-challenge.html | Amazon Cognito Developer Guide} */ const CreateAuthChallengeTriggerSchema = CognitoTriggerBaseSchema.extend({ triggerSource: zod_1.z.literal('CreateAuthChallenge_Authentication'), request: zod_1.z.object({ userAttributes: zod_1.z.record(zod_1.z.string(), zod_1.z.string()), challengeName: zod_1.z.string(), session: zod_1.z.array(ChallengeResultSchema).min(1), clientMetadata: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(), userNotFound: zod_1.z.boolean().optional(), }), response: zod_1.z.object({ publicChallengeParameters: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).nullish(), privateChallengeParameters: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).nullish(), challengeMetadata: zod_1.z.string().nullish(), }), }); exports.CreateAuthChallengeTriggerSchema = CreateAuthChallengeTriggerSchema; /** * A zod schema for a Cognito Verify Auth Challenge Response trigger event. * * @example * ```json * { * "version": "1", * "triggerSource": "VerifyAuthChallengeResponse_Authentication", * "region": "us-east-1", * "userPoolId": "us-east-1_ABC123", * "userName": "johndoe", * "callerContext": { * "awsSdkVersion": "2.814.0", * "clientId": "client123" * }, * "request": { * "userAttributes": { "email": "user@example.com", "name": "John Doe" }, * "privateChallengeParameters": { "answer": "expectedAnswer" }, * "challengeAnswer": "userAnswer", * "clientMetadata": { "key": "value" }, * "userNotFound": false * }, * "response": { * "answerCorrect": true * } * } * ``` * * @see {@link https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-verify-auth-challenge-response.html | Amazon Cognito Developer Guide} */ const VerifyAuthChallengeTriggerSchema = CognitoTriggerBaseSchema.extend({ triggerSource: zod_1.z.literal('VerifyAuthChallengeResponse_Authentication'), request: zod_1.z.object({ userAttributes: zod_1.z.record(zod_1.z.string(), zod_1.z.string()), privateChallengeParameters: zod_1.z.record(zod_1.z.string(), zod_1.z.string()), challengeAnswer: zod_1.z.string(), clientMetadata: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(), userNotFound: zod_1.z.boolean().optional(), }), response: zod_1.z.object({ answerCorrect: zod_1.z.boolean(), }), }); exports.VerifyAuthChallengeTriggerSchema = VerifyAuthChallengeTriggerSchema;