@aws-lambda-powertools/parser
Version:
The parser package for the Powertools for AWS Lambda (TypeScript) library.
47 lines (46 loc) • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EventBridgeEnvelope = void 0;
const errors_js_1 = require("../errors.js");
const index_js_1 = require("../schemas/index.js");
const envelope_js_1 = require("./envelope.js");
/**
* Envelope for EventBridge schema that extracts and parses data from the `detail` key.
*/
exports.EventBridgeEnvelope = {
/**
* This is a discriminator to differentiate whether an envelope returns an array or an object
* @hidden
*/
[envelope_js_1.envelopeDiscriminator]: 'object',
parse(data, schema) {
try {
return index_js_1.EventBridgeSchema.extend({
detail: schema,
}).parse(data).detail;
}
catch (error) {
throw new errors_js_1.ParseError('Failed to parse EventBridge envelope', {
cause: error,
});
}
},
safeParse(data, schema) {
const parsedResult = index_js_1.EventBridgeSchema.extend({
detail: schema,
}).safeParse(data);
if (!parsedResult.success) {
return {
success: false,
error: new errors_js_1.ParseError('Failed to parse EventBridge envelope', {
cause: parsedResult.error,
}),
originalEvent: data,
};
}
return {
success: true,
data: parsedResult.data.detail,
};
},
};