@energica-city/shared-amplify-utils
Version:
Shared utilities for AWS Amplify projects
41 lines • 6.43 kB
JavaScript
/**
* 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