UNPKG

@energica-city/shared-amplify-utils

Version:

Shared utilities for AWS Amplify projects

41 lines 6.43 kB
/** * REST Middleware Module * * Comprehensive middleware components for AWS API Gateway REST APIs including * error handling, request logging, validation, middleware chain utilities, and * model initialization. * * @example * ```typescript * import { * createRestChain, * createRestErrorHandler, * createRestRequestLogger, * createRestRequestValidator, * createRestModelInitializer * } from '@your-org/shared-utilities/middleware/rest'; * * // Create middleware chain * const chain = createRestChain<MyModelTypes>(); * * // Add middleware * chain.use('errorHandler', createRestErrorHandler()); * chain.use('logger', createRestRequestLogger()); * chain.use('validator', createRestRequestValidator({ body: mySchema })); * chain.use('models', createRestModelInitializer(modelConfig)); * * // Export Lambda handler * export const handler = wrapRestHandler(chain, myHandler); * ``` * * @module RestMiddleware */ export { createRestErrorHandler, HttpErrors, createHttpError, } from './RestErrorHandler'; export { createRestRequestLogger } from './RestRequestLogger'; export { createRestRequestValidator, getValidatedBody, getValidatedQuery, getValidatedPath, getValidatedHeaders, } from './RestRequestValidator'; export { ValidationPatterns } from '../utils/validation'; export { createRestModelInitializer } from './RestModelInitializer'; export { createRestChain, wrapRestHandler, getModelsFromInput, getModelFromInput, } from './RestMiddlewareChain'; export { buildRestContext, extractEventInfo, setupStructuredLogging, initializeRestMiddleware, isDevelopment, getErrorMessage, getErrorStack, parseJsonBody, parseJsonBodyWithFallback, createValidationError, createErrorResponse, createSuccessResponse, getRequestId, validateBasicRequestInfo, buildValidationErrorContext, HTTP_STATUS, ERROR_CODES, } from './utils'; export { throwError, extractErrorMessage, createErrorContext, } from '../../error'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9taWRkbGV3YXJlL3Jlc3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQkc7QUFFSCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFOUQsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixtQkFBbUIsR0FDcEIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsaUJBQWlCLEdBQ2xCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLHdCQUF3QixFQUN4QixhQUFhLEVBQ2IsZUFBZSxFQUNmLGFBQWEsRUFDYixhQUFhLEVBQ2IseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLFlBQVksRUFDWix3QkFBd0IsRUFDeEIsMkJBQTJCLEVBQzNCLFdBQVcsRUFDWCxXQUFXLEdBR1osTUFBTSxTQUFTLENBQUM7QUFpQmpCLE9BQU8sRUFDTCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLGtCQUFrQixHQUNuQixNQUFNLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUkVTVCBNaWRkbGV3YXJlIE1vZHVsZVxuICpcbiAqIENvbXByZWhlbnNpdmUgbWlkZGxld2FyZSBjb21wb25lbnRzIGZvciBBV1MgQVBJIEdhdGV3YXkgUkVTVCBBUElzIGluY2x1ZGluZ1xuICogZXJyb3IgaGFuZGxpbmcsIHJlcXVlc3QgbG9nZ2luZywgdmFsaWRhdGlvbiwgbWlkZGxld2FyZSBjaGFpbiB1dGlsaXRpZXMsIGFuZFxuICogbW9kZWwgaW5pdGlhbGl6YXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7XG4gKiAgIGNyZWF0ZVJlc3RDaGFpbixcbiAqICAgY3JlYXRlUmVzdEVycm9ySGFuZGxlcixcbiAqICAgY3JlYXRlUmVzdFJlcXVlc3RMb2dnZXIsXG4gKiAgIGNyZWF0ZVJlc3RSZXF1ZXN0VmFsaWRhdG9yLFxuICogICBjcmVhdGVSZXN0TW9kZWxJbml0aWFsaXplclxuICogfSBmcm9tICdAeW91ci1vcmcvc2hhcmVkLXV0aWxpdGllcy9taWRkbGV3YXJlL3Jlc3QnO1xuICpcbiAqIC8vIENyZWF0ZSBtaWRkbGV3YXJlIGNoYWluXG4gKiBjb25zdCBjaGFpbiA9IGNyZWF0ZVJlc3RDaGFpbjxNeU1vZGVsVHlwZXM+KCk7XG4gKlxuICogLy8gQWRkIG1pZGRsZXdhcmVcbiAqIGNoYWluLnVzZSgnZXJyb3JIYW5kbGVyJywgY3JlYXRlUmVzdEVycm9ySGFuZGxlcigpKTtcbiAqIGNoYWluLnVzZSgnbG9nZ2VyJywgY3JlYXRlUmVzdFJlcXVlc3RMb2dnZXIoKSk7XG4gKiBjaGFpbi51c2UoJ3ZhbGlkYXRvcicsIGNyZWF0ZVJlc3RSZXF1ZXN0VmFsaWRhdG9yKHsgYm9keTogbXlTY2hlbWEgfSkpO1xuICogY2hhaW4udXNlKCdtb2RlbHMnLCBjcmVhdGVSZXN0TW9kZWxJbml0aWFsaXplcihtb2RlbENvbmZpZykpO1xuICpcbiAqIC8vIEV4cG9ydCBMYW1iZGEgaGFuZGxlclxuICogZXhwb3J0IGNvbnN0IGhhbmRsZXIgPSB3cmFwUmVzdEhhbmRsZXIoY2hhaW4sIG15SGFuZGxlcik7XG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlIFJlc3RNaWRkbGV3YXJlXG4gKi9cblxuZXhwb3J0IHtcbiAgY3JlYXRlUmVzdEVycm9ySGFuZGxlcixcbiAgSHR0cEVycm9ycyxcbiAgY3JlYXRlSHR0cEVycm9yLFxufSBmcm9tICcuL1Jlc3RFcnJvckhhbmRsZXInO1xuXG5leHBvcnQgeyBjcmVhdGVSZXN0UmVxdWVzdExvZ2dlciB9IGZyb20gJy4vUmVzdFJlcXVlc3RMb2dnZXInO1xuXG5leHBvcnQge1xuICBjcmVhdGVSZXN0UmVxdWVzdFZhbGlkYXRvcixcbiAgZ2V0VmFsaWRhdGVkQm9keSxcbiAgZ2V0VmFsaWRhdGVkUXVlcnksXG4gIGdldFZhbGlkYXRlZFBhdGgsXG4gIGdldFZhbGlkYXRlZEhlYWRlcnMsXG59IGZyb20gJy4vUmVzdFJlcXVlc3RWYWxpZGF0b3InO1xuXG5leHBvcnQgeyBWYWxpZGF0aW9uUGF0dGVybnMgfSBmcm9tICcuLi91dGlscy92YWxpZGF0aW9uJztcblxuZXhwb3J0IHsgY3JlYXRlUmVzdE1vZGVsSW5pdGlhbGl6ZXIgfSBmcm9tICcuL1Jlc3RNb2RlbEluaXRpYWxpemVyJztcblxuZXhwb3J0IHtcbiAgY3JlYXRlUmVzdENoYWluLFxuICB3cmFwUmVzdEhhbmRsZXIsXG4gIGdldE1vZGVsc0Zyb21JbnB1dCxcbiAgZ2V0TW9kZWxGcm9tSW5wdXQsXG59IGZyb20gJy4vUmVzdE1pZGRsZXdhcmVDaGFpbic7XG5cbmV4cG9ydCB7XG4gIGJ1aWxkUmVzdENvbnRleHQsXG4gIGV4dHJhY3RFdmVudEluZm8sXG4gIHNldHVwU3RydWN0dXJlZExvZ2dpbmcsXG4gIGluaXRpYWxpemVSZXN0TWlkZGxld2FyZSxcbiAgaXNEZXZlbG9wbWVudCxcbiAgZ2V0RXJyb3JNZXNzYWdlLFxuICBnZXRFcnJvclN0YWNrLFxuICBwYXJzZUpzb25Cb2R5LFxuICBwYXJzZUpzb25Cb2R5V2l0aEZhbGxiYWNrLFxuICBjcmVhdGVWYWxpZGF0aW9uRXJyb3IsXG4gIGNyZWF0ZUVycm9yUmVzcG9uc2UsXG4gIGNyZWF0ZVN1Y2Nlc3NSZXNwb25zZSxcbiAgZ2V0UmVxdWVzdElkLFxuICB2YWxpZGF0ZUJhc2ljUmVxdWVzdEluZm8sXG4gIGJ1aWxkVmFsaWRhdGlvbkVycm9yQ29udGV4dCxcbiAgSFRUUF9TVEFUVVMsXG4gIEVSUk9SX0NPREVTLFxuICB0eXBlIFZhbGlkYXRpb25FcnJvckNvbmZpZyxcbiAgdHlwZSBFcnJvclJlc3BvbnNlQ29uZmlnLFxufSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IHR5cGUge1xuICBSZXN0RXJyb3JIYW5kbGVyQ29uZmlnLFxuICBSZXN0UmVxdWVzdExvZ2dlckNvbmZpZyxcbiAgUmVzdFJlcXVlc3RWYWxpZGF0aW9uQ29uZmlnLFxuICBSZXN0TWlkZGxld2FyZUNoYWluLFxuICBSZXN0TWlkZGxld2FyZSxcbiAgUmVzdEV2ZW50LFxuICBSZXN0UmVzcG9uc2UsXG4gIFJlc3RIYW5kbGVyUmV0dXJuLFxuICBSZXN0SW5wdXRXaXRoTW9kZWxzLFxuICBSZXN0SW5wdXRXaXRoVmFsaWRhdGlvbixcbiAgVmFsaWRhdGlvbkVycm9yRGV0YWlsLFxuICBEZWZhdWx0TW9kZWxUeXBlcyxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCB7XG4gIHRocm93RXJyb3IsXG4gIGV4dHJhY3RFcnJvck1lc3NhZ2UsXG4gIGNyZWF0ZUVycm9yQ29udGV4dCxcbn0gZnJvbSAnLi4vLi4vZXJyb3InO1xuIl19