"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(module, "exports", { enumerable: true, get: function() { return _default; } }); const _util = require("@middy/util"); const _clientservicediscovery = require("@aws-sdk/client-servicediscovery"); const defaults = { AwsClient: _clientservicediscovery.ServiceDiscoveryClient, awsClientOptions: {}, awsClientAssumeRole: undefined, awsClientCapture: undefined, fetchData: {}, disablePrefetch: false, cacheKey: 'cloud-map', cacheKeyExpiry: {}, cacheExpiry: -1, setToContext: false }; const serviceDiscoveryMiddleware = (opts = {})=>{ const options = { ...defaults, ...opts }; const fetch = (request, cachedValues = {})=>{ const values = {}; for (const internalKey of Object.keys(options.fetchData)){ if (cachedValues[internalKey]) continue; values[internalKey] = client.send(new _clientservicediscovery.DiscoverInstancesCommand(options.fetchData[internalKey])).then((resp)=>resp.Instances).catch((e)=>{ const value = (0, _util.getCache)(options.cacheKey).value ?? {}; value[internalKey] = undefined; (0, _util.modifyCache)(options.cacheKey, value); throw e; }); } return values; }; let client; if ((0, _util.canPrefetch)(options)) { client = (0, _util.createPrefetchClient)(options); (0, _util.processCache)(options, fetch); } const serviceDiscoveryMiddlewareBefore = async (request)=>{ if (!client) { client = await (0, _util.createClient)(options, request); } const { value } = (0, _util.processCache)(options, fetch, request); Object.assign(request.internal, value); if (options.setToContext) { const data = await (0, _util.getInternal)(Object.keys(options.fetchData), request); if (options.setToContext) Object.assign(request.context, data); } }; return { before: serviceDiscoveryMiddlewareBefore }; }; const _default = serviceDiscoveryMiddleware;