serverless-aws-lambda
Version:
AWS Application Load Balancer and API Gateway - Lambda dev tool for Serverless. Allows Express synthax in handlers. Supports packaging, local invoking and offline ALB, APG, S3, SNS, SQS, DynamoDB Stream server mocking.
2 lines (1 loc) • 3.27 kB
JavaScript
;var l=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var Q=(s,i)=>{for(var a in i)l(s,a,{get:i[a],enumerable:!0})},I=(s,i,a,o)=>{if(i&&typeof i=="object"||typeof i=="function")for(let e of q(i))!P.call(s,e)&&e!==a&&l(s,e,{get:()=>i[e],enumerable:!(o=b(i,e))||o.enumerable});return s};var k=s=>I(l({},"__esModule",{value:!0}),s);var M={};Q(M,{default:()=>F,sqsPlugin:()=>S});module.exports=k(M);var A=(s,i)=>(i&&(i.override&&Object.entries(i.override).forEach(a=>{let[o,e]=a;o in s&&(s[o]=e)}),i.default&&Object.entries(i.default).forEach(a=>{let[o,e]=a;s[o]==null&&(s[o]=e)})),s),D=s=>{let{QueueName:i,ContentBasedDeduplication:a,DeduplicationScope:o,DelaySeconds:e,FifoQueue:n,FifoThroughputLimit:r,KmsDataKeyReusePeriodSeconds:t,KmsMasterKeyId:d,MaximumMessageSize:p,MessageRetentionPeriod:m,ReceiveMessageWaitTimeSeconds:g,VisibilityTimeout:h,Tags:u,RedrivePolicy:c}=s,y={QueueName:i};u&&Object.keys(u).length&&(y.tags=u);let f={};return typeof a<"u"&&(f.ContentBasedDeduplication=a),typeof o<"u"&&(f.DeduplicationScope=o),typeof e<"u"&&(f.DelaySeconds=e),typeof n<"u"&&(f.FifoQueue=n),typeof r<"u"&&(f.FifoThroughputLimit=r),typeof t<"u"&&(f.KmsDataKeyReusePeriodSeconds=t),typeof d<"u"&&(f.KmsMasterKeyId=d),typeof p<"u"&&(f.MaximumMessageSize=p),typeof m<"u"&&(f.MessageRetentionPeriod=m),typeof g<"u"&&(f.ReceiveMessageWaitTimeSeconds=g),typeof h<"u"&&(f.VisibilityTimeout=h),typeof c<"u"&&(f.RedrivePolicy=JSON.stringify({deadLetterTargetArn:c.deadLetterTargetArn,maxReceiveCount:c.maxReceiveCount})),i.endsWith(".fifo")&&(f.FifoQueue="true"),Object.keys(f).length&&(y.Attributes=f),y},R=(s,i,a)=>{let o=Object.values(s),e=n=>{if(o.findIndex(t=>t.QueueName==n)==-1){let t={QueueName:n};return o.push(t),!0}};return i.forEach(n=>{n.sns.forEach(r=>{typeof r.redrivePolicy=="string"&&e(r.redrivePolicy)}),n.ddb.forEach(r=>{r.onFailure?.kind=="sqs"&&e(r.onFailure.name)}),n.kinesis.forEach(r=>{r.onFailure?.kind=="sqs"&&e(r.onFailure.name)}),n.onError?.kind=="sqs"&&e(n.onError.name),n.onFailure?.kind=="sqs"&&e(n.onFailure.name),n.onSuccess?.kind=="sqs"&&e(n.onSuccess.name),n.sqs.forEach(r=>{e(r.name)})}),o.forEach(n=>{n.RedrivePolicy&&e(n.RedrivePolicy.name)}),o.map(n=>D(A(n,a)))};var v=require("local-aws-sqs"),S=s=>{let i=(t,d)=>{},a,o,e=[],n=async()=>{r.pluginData.isReady=!0;for(let t of e)try{await t()}catch{}},r={name:"sqs-plugin",pluginData:{isReady:!1,onReady:t=>{typeof t=="function"?e.push(t):console.warn("onReady callback must be a function")}},onInit:function(){if(!this.isDeploying&&!this.isPackaging){let t=this.serverless.service.provider.region;t&&(a=t),this.serverless.providers?.aws?.accountId&&(o=this.serverless.providers.aws.accountId)}},offline:{async onReady(t,d){this.getServices().sqs||await this.setServices({sqs:{region:"us-east-1",endpoint:`http://localhost:${t}/@sqs`,credentials:{accessKeyId:"fake",secretAccessKey:"fake"}}}),i=(0,v.createRequestHandler)({port:t,region:a,accountId:o,validateDlqDestination:!1,emulateQueueCreationLifecycle:!1,baseUrl:"/@sqs/",queues:R(this.resources.sqs,this.lambdas,s)}),n()},request:[{method:"POST",filter:"/@sqs",callback:function(t,d){i(t,d)}}]}};return r},F=S;0&&(module.exports={sqsPlugin});