@aws-lambda-powertools/parser
Version:
The parser package for the Powertools for AWS Lambda (TypeScript) library.
623 lines (622 loc) • 22.2 kB
JavaScript
"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;