UNPKG

recoder-code

Version:

🚀 AI-powered development platform - Chat with 32+ models, build projects, automate workflows. Free models included!

125 lines (124 loc) • 4.53 kB
import { constructStack } from "@smithy/middleware-stack"; import { SMITHY_CONTEXT_KEY } from "@smithy/types"; import { schemaLogFilter } from "./schemaLogFilter"; export class Command { constructor() { this.middlewareStack = constructStack(); } static classBuilder() { return new ClassBuilder(); } resolveMiddlewareWithContext(clientStack, configuration, options, { middlewareFn, clientName, commandName, inputFilterSensitiveLog, outputFilterSensitiveLog, smithyContext, additionalContext, CommandCtor, }) { for (const mw of middlewareFn.bind(this)(CommandCtor, clientStack, configuration, options)) { this.middlewareStack.use(mw); } const stack = clientStack.concat(this.middlewareStack); const { logger } = configuration; const handlerExecutionContext = { logger, clientName, commandName, inputFilterSensitiveLog, outputFilterSensitiveLog, [SMITHY_CONTEXT_KEY]: { commandInstance: this, ...smithyContext, }, ...additionalContext, }; const { requestHandler } = configuration; return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext); } } class ClassBuilder { constructor() { this._init = () => { }; this._ep = {}; this._middlewareFn = () => []; this._commandName = ""; this._clientName = ""; this._additionalContext = {}; this._smithyContext = {}; this._inputFilterSensitiveLog = undefined; this._outputFilterSensitiveLog = undefined; this._serializer = null; this._deserializer = null; } init(cb) { this._init = cb; } ep(endpointParameterInstructions) { this._ep = endpointParameterInstructions; return this; } m(middlewareSupplier) { this._middlewareFn = middlewareSupplier; return this; } s(service, operation, smithyContext = {}) { this._smithyContext = { service, operation, ...smithyContext, }; return this; } c(additionalContext = {}) { this._additionalContext = additionalContext; return this; } n(clientName, commandName) { this._clientName = clientName; this._commandName = commandName; return this; } f(inputFilter = (_) => _, outputFilter = (_) => _) { this._inputFilterSensitiveLog = inputFilter; this._outputFilterSensitiveLog = outputFilter; return this; } ser(serializer) { this._serializer = serializer; return this; } de(deserializer) { this._deserializer = deserializer; return this; } sc(operation) { this._operationSchema = operation; this._smithyContext.operationSchema = operation; return this; } build() { const closure = this; let CommandRef; return (CommandRef = class extends Command { static getEndpointParameterInstructions() { return closure._ep; } constructor(...[input]) { super(); this.serialize = closure._serializer; this.deserialize = closure._deserializer; this.input = input ?? {}; closure._init(this); this.schema = closure._operationSchema; } resolveMiddleware(stack, configuration, options) { return this.resolveMiddlewareWithContext(stack, configuration, options, { CommandCtor: CommandRef, middlewareFn: closure._middlewareFn, clientName: closure._clientName, commandName: closure._commandName, inputFilterSensitiveLog: closure._inputFilterSensitiveLog ?? (closure._operationSchema ? schemaLogFilter.bind(null, closure._operationSchema.input) : (_) => _), outputFilterSensitiveLog: closure._outputFilterSensitiveLog ?? (closure._operationSchema ? schemaLogFilter.bind(null, closure._operationSchema.output) : (_) => _), smithyContext: closure._smithyContext, additionalContext: closure._additionalContext, }); } }); } }