@ez4/aws-topic 0.36.0 → 0.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.cjs +48 -48
- package/dist/main.mjs +23 -22
- package/dist/subscription/function/types.d.ts +3 -2
- package/package.json +14 -14
package/dist/main.cjs
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
"use strict";var I=Object.defineProperty;var ot=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyNames;var nt=Object.prototype.hasOwnProperty;var i=(e,t)=>I(e,"name",{value:t,configurable:!0});var pt=(e,t)=>{for(var r in t)I(e,r,{get:t[r],enumerable:!0})},st=(e,t,r,o)=>{if(t&&
|
|
2
2
|
typeof t=="object"||typeof t=="function")for(let n of it(t))!nt.call(e,n)&&n!==r&&
|
|
3
|
-
I(e,n,{get:()=>t[n],enumerable:!(o=ot(t,n))||o.enumerable});return e};var ct=e=>st(I({},"__esModule",{value:!0}),e);var Pt={};pt(Pt,{SubscriptionServiceName:()=>a,SubscriptionServiceType:()=>d,TopicServiceName:()=>
|
|
4
|
-
TopicServiceType:()=>y,createSubscription:()=>k,createSubscriptionFunction:()=>
|
|
5
|
-
createTopic:()=>A,createTopicStateId:()=>M,getTopic:()=>xt,getTopicArn:()=>
|
|
3
|
+
I(e,n,{get:()=>t[n],enumerable:!(o=ot(t,n))||o.enumerable});return e};var ct=e=>st(I({},"__esModule",{value:!0}),e);var Pt={};pt(Pt,{SubscriptionServiceName:()=>a,SubscriptionServiceType:()=>d,TopicServiceName:()=>f,
|
|
4
|
+
TopicServiceType:()=>y,createSubscription:()=>k,createSubscriptionFunction:()=>V,
|
|
5
|
+
createTopic:()=>A,createTopicStateId:()=>M,getTopic:()=>xt,getTopicArn:()=>J,getTopicState:()=>Z,
|
|
6
6
|
isSubscriptionState:()=>At,isTopicState:()=>O,registerTriggers:()=>vt});module.exports=
|
|
7
|
-
ct(Pt);var
|
|
7
|
+
ct(Pt);var Je=require("@ez4/aws-common"),Ve=require("@ez4/aws-identity"),We=require("@ez4/aws-function"),
|
|
8
8
|
Xe=require("@ez4/aws-queue"),Ye=require("@ez4/topic/library"),et=require("@ez4/project/library");var ue=require("@ez4/aws-common");var F=require("@ez4/aws-common"),z=require("@ez4/aws-identity"),ce=require("@ez4/utils");var x=require("@ez4/aws-identity");var v=i((e,t,r)=>`arn:aws:sns:${t}:${r}:${e}`,"buildTopicArn"),oe=i(async e=>{let[
|
|
9
9
|
t,r]=await Promise.all([(0,x.getRegion)(),(0,x.getAccountId)()]);return(0,x.createPolicyDocument)(
|
|
10
10
|
[{permissions:["sns:Publish"],resourceIds:e.map(o=>v(`${o}-*`,t,r))}])},"getPoli\
|
|
11
|
-
cyDocument");var m=require("@aws-sdk/client-sns"),u=require("@ez4/aws-common");var
|
|
12
|
-
logCreate(
|
|
11
|
+
cyDocument");var m=require("@aws-sdk/client-sns"),u=require("@ez4/aws-common");var f="AWS:SNS/Topic",y="aws:sns.topic";var h=new m.SNSClient({}),ie=i(async e=>{let{topicName:t,fifoMode:r}=e;return u.Logger.
|
|
12
|
+
logCreate(f,t),{topicArn:(await h.send(new m.CreateTopicCommand({Name:t,Attributes:{
|
|
13
13
|
...r&&{ContentBasedDeduplication:"true",FifoThroughputScope:"MessageGroup",FifoTopic:"\
|
|
14
14
|
true"}},Tags:(0,u.getTagList)({...e.tags,ManagedBy:"EZ4"})}))).TopicArn}},"creat\
|
|
15
15
|
eTopic"),ne=i(async e=>{let t=(0,u.tryParseArn)(e)?.resourceName??e;u.Logger.logDelete(
|
|
16
|
-
|
|
16
|
+
f,t);try{return await h.send(new m.DeleteTopicCommand({TopicArn:e})),!0}catch(r){
|
|
17
17
|
if(!(r instanceof m.NotFoundException))throw r;return!1}},"deleteTopic"),pe=i(async(e,t)=>{
|
|
18
|
-
let r=(0,u.tryParseArn)(e)?.resourceName??e;u.Logger.logTag(
|
|
18
|
+
let r=(0,u.tryParseArn)(e)?.resourceName??e;u.Logger.logTag(f,r),await h.send(new m.TagResourceCommand(
|
|
19
19
|
{ResourceArn:e,Tags:(0,u.getTagList)({...t,ManagedBy:"EZ4"})}))},"tagTopic"),se=i(
|
|
20
|
-
async(e,t)=>{let r=(0,u.tryParseArn)(e)?.resourceName??e;u.Logger.logUntag(
|
|
20
|
+
async(e,t)=>{let r=(0,u.tryParseArn)(e)?.resourceName??e;u.Logger.logUntag(f,r),
|
|
21
21
|
await h.send(new m.UntagResourceCommand({ResourceArn:e,TagKeys:t}))},"untagTopic");var ae=i(()=>({equals:at,create:me,replace:ut,preview:mt,update:St,delete:ft}),"\
|
|
22
22
|
getTopicHandler"),at=i((e,t)=>!!e.result&&e.result.topicArn===t.result?.topicArn,
|
|
23
23
|
"equalsResource"),mt=i((e,t)=>{let r={...e.parameters,dependencies:e.dependencies},
|
|
24
24
|
o={...t.parameters,dependencies:t.dependencies},n=(0,ce.deepCompare)(r,o);if(n.counts)
|
|
25
25
|
return{...n,name:r.topicName}},"previewResource"),ut=i(async(e,t)=>{if(t.result)
|
|
26
|
-
throw new F.ReplaceResourceError(
|
|
26
|
+
throw new F.ReplaceResourceError(f,e.entryId,t.entryId);return me(e)},"replaceRe\
|
|
27
27
|
source"),me=i(async e=>{let t=e.parameters;if(t.import){let[o,n]=await Promise.all(
|
|
28
28
|
[(0,z.getRegion)(),(0,z.getAccountId)()]);return{topicArn:v(t.topicName,o,n)}}let{
|
|
29
29
|
topicArn:r}=await ie(t);return{topicArn:r}},"createResource"),St=i(async(e,t)=>{
|
|
@@ -52,8 +52,8 @@ parameters,[o,n]=await Promise.all([r.getTopicArn(t),r.getEndpoint(t)]),{subscri
|
|
|
52
52
|
"createResource"),Tt=i(async()=>{},"updateResource"),bt=i(async e=>{let{result:t}=e;
|
|
53
53
|
t&&await ye(t.subscriptionArn)},"deleteResource");var Ee=i(()=>{(0,ve.tryRegisterProvider)(d,be())},"registerSubscriptionProvider");var _=require("@ez4/topic/library"),je=require("@ez4/project/library");var Re=require("@ez4/stateful"),Ae=require("@ez4/utils");var we=require("@ez4/aws-common"),L=require("@ez4/utils");var D=class extends Error{static{i(this,"TopicNotFoundError")}constructor(t){super(
|
|
54
54
|
`Topic service ${t} wasn't found.`)}};var M=i((e,t=!0)=>(0,L.hashData)(y,t?(0,L.toKebabCase)(e):e),"createTopicStateId"),
|
|
55
|
-
O=i(e=>e.type===y,"isTopicState"),
|
|
56
|
-
o))throw new D(t);return o},"getTopicState"),
|
|
55
|
+
O=i(e=>e.type===y,"isTopicState"),Z=i((e,t,r)=>{let o=e.getServiceState(t,r);if(!O(
|
|
56
|
+
o))throw new D(t);return o},"getTopicState"),J=i((e,t,r)=>{let o=r.getDependencies(
|
|
57
57
|
y).at(0)?.result;if(!o?.topicArn)throw new we.IncompleteResourceError(e,t,"topic\
|
|
58
58
|
Arn");return o.topicArn},"getTopicArn");var A=i((e,t)=>{let r=(0,Ae.toKebabCase)(t.topicName),o=t.fifoMode?`${r}.fifo`:r,
|
|
59
59
|
n=M(o,!1);return(0,Re.attachEntry)(e,{type:y,entryId:n,dependencies:[],parameters:{
|
|
@@ -65,51 +65,51 @@ Ie=require("@ez4/aws-common");var he=i(async(e,t)=>{let{handler:r,listener:o,mes
|
|
|
65
65
|
c=(0,Ce.getDefinitionsObject)(t);return(0,Ie.getFunctionBundle)(Ne.MappingServiceName,
|
|
66
66
|
{templateFile:(0,Pe.join)(__dirname,"../lib/message.ts"),filePrefix:"sns",define:{
|
|
67
67
|
...c,__EZ4_SCHEMA:n?JSON.stringify(n):"undefined"},handler:r,listener:o,context:p,
|
|
68
|
-
debug:s})},"bundleSubscriptionFunction");var
|
|
68
|
+
debug:s})},"bundleSubscriptionFunction");var V=i((e,t,r,o)=>{let{handler:n,variables:p,messageSchema:s}=o;return(0,Fe.createFunction)(
|
|
69
69
|
e,t,r,{handlerName:"snsEntryPoint",sourceFile:n.sourceFile,functionName:o.functionName,
|
|
70
|
-
description:o.description,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
"
|
|
70
|
+
description:o.description,timeout:o.timeout,memory:o.memory,debug:o.debug,tags:o.
|
|
71
|
+
tags,getFunctionVariables:i(()=>p.reduce((c,S)=>({...c,...S}),{}),"getFunctionVa\
|
|
72
|
+
riables"),getFunctionFiles:i(()=>[n.sourceFile,n.dependencies],"getFunctionFiles"),
|
|
73
|
+
getFunctionBundle:i(c=>he(o,[...c.getDependencies(),...c.getConnections()]),"get\
|
|
74
|
+
FunctionBundle"),getFunctionHash:i(()=>(0,ze.hashObject)({messageSchema:s}),"get\
|
|
75
|
+
FunctionHash")})},"createSubscriptionFunction");var g=require("@ez4/aws-function"),R=require("@ez4/aws-queue"),w=require("@ez4/aws-identity"),
|
|
75
76
|
De=require("@ez4/stateful"),Le=require("@ez4/utils");var k=i((e,t,r,o)=>{let n=t.parameters.topicName,p=[t.entryId,r.entryId];if((0,g.isFunctionState)(
|
|
76
77
|
r)){let c=(0,g.getPermission)(e,t,r)??(0,g.createPermission)(e,t,r,{fromService:o.
|
|
77
|
-
fromService,getPermission:i(async()=>{let[
|
|
78
|
-
(0,w.getAccountId)()]);return{sourceArn:v(n,
|
|
78
|
+
fromService,getPermission:i(async()=>{let[S,l]=await Promise.all([(0,w.getRegion)(),
|
|
79
|
+
(0,w.getAccountId)()]);return{sourceArn:v(n,S,l),principal:"sns.amazonaws.com"}},
|
|
79
80
|
"getPermission")});p.push(c.entryId)}if((0,R.isQueueState)(r)){let c=(0,R.attachQueuePolicy)(
|
|
80
|
-
e,r,t,{fromService:o.fromService,policyGetters:[async()=>{let[
|
|
81
|
+
e,r,t,{fromService:o.fromService,policyGetters:[async()=>{let[S,l]=await Promise.
|
|
81
82
|
all([(0,w.getRegion)(),(0,w.getAccountId)()]);return{principal:"sns.amazonaws.co\
|
|
82
|
-
m",sourceArn:v(n,
|
|
83
|
+
m",sourceArn:v(n,S,l)}}]});p.push(c.entryId)}let s=(0,Le.hashData)(d,t.entryId,r.
|
|
83
84
|
entryId);return(0,De.attachEntry)(e,{type:d,entryId:s,dependencies:p,parameters:{
|
|
84
|
-
...o,getTopicArn:i(c=>
|
|
85
|
+
...o,getTopicArn:i(c=>J(f,s,c),"getTopicArn"),getEndpoint:i(c=>(0,g.isFunctionState)(
|
|
85
86
|
r)?(0,g.getFunctionArn)(a,s,c):(0,R.getQueueArn)(a,s,c),"getEndpoint")}})},"crea\
|
|
86
|
-
teSubscription");var Me=require("@ez4/project/library"),$=require("@ez4/utils");var
|
|
87
|
+
teSubscription");var Me=require("@ez4/project/library"),$=require("@ez4/utils");var W=i((e,t)=>`${(0,$.toKebabCase)(e.name)}-${(0,$.toKebabCase)(t)}`,"getIntern\
|
|
87
88
|
alName"),Oe=i((e,t,r)=>`${(0,Me.getServiceName)(e,r)}-${(0,$.toKebabCase)(t)}`,"\
|
|
88
89
|
getFunctionName");var P=class extends Error{static{i(this,"RoleMissingError")}constructor(){super(
|
|
89
90
|
"Execution role for SNS is missing.")}};var C;(o=>(o.LogRetention=90,o.Timeout=90,o.Memory=192))(C||={});var q=i((e,t,r,o,n)=>{if(!n.role||!(0,Y.isRoleState)(n.role))throw new P;for(let p of t.
|
|
90
91
|
subscriptions)switch(p.type){default:throw new j.InvalidParameterError(a,"subscr\
|
|
91
92
|
iption not supported.");case N.TopicSubscriptionType.Lambda:{if(t.fifoMode)throw new j.InvalidParameterError(
|
|
92
93
|
a,"lambda subscription not supported for FIFO topics.");let{handler:s,listener:c}=p,
|
|
93
|
-
|
|
94
|
+
S=W(t,s.name),l=(0,Q.tryGetFunctionState)(n,S,o);if(!l){let re=Oe(t,s.name,o),tt=n.
|
|
94
95
|
getDependencyFiles(s.file),rt=(0,ke.createLogGroup)(e,{retention:p.logRetention??
|
|
95
|
-
C.LogRetention,groupName:re,tags:o.tags});l=
|
|
96
|
+
C.LogRetention,groupName:re,tags:o.tags});l=V(e,n.role,rt,{functionName:re,description:s.
|
|
96
97
|
description,messageSchema:t.schema,timeout:p.timeout??C.Timeout,memory:p.memory??
|
|
97
|
-
C.Memory,context:t.context,debug:o.debug,tags:o.tags,
|
|
98
|
-
functionName:s.name,module:s.module,dependencies:tt},
|
|
99
|
-
name,sourceFile:c.file,module:c.module},
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
lient",module:"Client"}},"prepareLinkedClient");var Qe=i(e=>{let{service:t,options:r,context:o}=e;return(0,_.isTopicService)(t)?
|
|
98
|
+
C.Memory,context:t.context,debug:o.debug,tags:o.tags,variables:[o.variables,t.variables,
|
|
99
|
+
p.variables],handler:{sourceFile:s.file,functionName:s.name,module:s.module,dependencies:tt},
|
|
100
|
+
listener:c&&{functionName:c.name,sourceFile:c.file,module:c.module}}),n.setServiceState(
|
|
101
|
+
l,S,o)}k(e,r,l,{fromService:l.parameters.functionName});break}case N.TopicSubscriptionType.
|
|
102
|
+
Queue:{let s=(0,ee.getQueueState)(n,p.service,o);k(e,r,s,{fromService:s.parameters.
|
|
103
|
+
queueName});break}}},"prepareSubscriptions"),G=i((e,t,r,o)=>{if(!o.role||!(0,Y.isRoleState)(
|
|
104
|
+
o.role))throw new P;for(let n of t.subscriptions)switch(n.type){default:throw new j.InvalidParameterError(
|
|
105
|
+
a,"subscription not supported.");case N.TopicSubscriptionType.Lambda:{let p=W(t,
|
|
106
|
+
n.handler.name),s=(0,Q.getFunctionState)(o,p,r);(0,X.linkServiceContext)(e,s.entryId,
|
|
107
|
+
t.context);break}case N.TopicSubscriptionType.Queue:{let p=(0,ee.getQueueState)(
|
|
108
|
+
o,n.service,r);(0,X.linkServiceContext)(e,p.entryId,t.context);break}}},"connect\
|
|
109
|
+
Subscriptions");var $e=require("@ez4/project/library");var H=i((e,t,r)=>{let n=Z(e,t.name,r).entryId,p=(0,$e.getDefinitionName)(n,"topi\
|
|
110
|
+
cArn"),s=JSON.stringify(t.fifoMode??null),c=JSON.stringify(t.schema);return{module:"\
|
|
111
|
+
Client",from:"@ez4/aws-topic/client",constructor:`@{EZ4_MODULE_IMPORT}.make(${p}\
|
|
112
|
+
, ${c}, ${s})`,connectionIds:[n],dependencyIds:[n]}},"prepareLinkedClient");var Qe=i(e=>{let{service:t,options:r,context:o}=e;return(0,_.isTopicService)(t)?
|
|
113
113
|
H(o,t,r):null},"prepareLinkedServices"),qe=i(e=>{let{state:t,service:r,options:o,
|
|
114
114
|
context:n}=e;if(!(0,_.isTopicService)(r))return!1;let{fifoMode:p}=r,s=A(t,{topicName:(0,je.getServiceName)(
|
|
115
115
|
r,o),fifoMode:!!p,tags:o.tags});return n.setServiceState(s,r,o),q(t,r,s,o,n),!0},
|
|
@@ -118,16 +118,16 @@ r)&&G(t,r,o,n)},"connectServices");var te=require("@ez4/project/library"),He=req
|
|
|
118
118
|
let{project:n}=t,{imports:p}=r;if(!p||!p[n])throw new te.MissingImportedProjectError(
|
|
119
119
|
n);return H(o,t,p[n])},"prepareLinkedImports"),Ue=i(e=>{let{state:t,service:r,options:o,
|
|
120
120
|
context:n}=e;if(!(0,U.isTopicImport)(r))return!1;let{reference:p,project:s}=r,{imports:c}=o;
|
|
121
|
-
if(!c||!c[s])throw new te.MissingImportedProjectError(s);let
|
|
122
|
-
p,c[s]),fifoMode:!!r.fifoMode,import:!0});return n.setServiceState(
|
|
123
|
-
|
|
124
|
-
(0,U.isTopicImport)(r)&&G(t,r,o,n)},"connectImports");var B=require("@ez4/topic/library"),K=require("@ez4/aws-identity"),Ke=require("@ez4/project/library");var
|
|
121
|
+
if(!c||!c[s])throw new te.MissingImportedProjectError(s);let S=A(t,{topicName:(0,He.getServiceName)(
|
|
122
|
+
p,c[s]),fifoMode:!!r.fifoMode,import:!0});return n.setServiceState(S,r,o),q(t,r,
|
|
123
|
+
S,o,n),!0},"prepareImports"),Be=i(e=>{let{state:t,service:r,options:o,context:n}=e;
|
|
124
|
+
(0,U.isTopicImport)(r)&&G(t,r,o,n)},"connectImports");var B=require("@ez4/topic/library"),K=require("@ez4/aws-identity"),Ke=require("@ez4/project/library");var Ze=i(async e=>{let{state:t,serviceType:r,options:o}=e;if(r!==B.ServiceType&&
|
|
125
125
|
r!==B.ImportType)return null;let n=Object.values({options:o,...o.imports}).map(c=>(0,Ke.getServiceName)(
|
|
126
126
|
"",c)),[p]=n,s=`${p}-topic-policy`;return(0,K.tryGetPolicy)(t,s)??(0,K.createPolicy)(
|
|
127
127
|
t,{tags:o.tags,policyDocument:await oe(n),policyName:s})},"prepareExecutionPolic\
|
|
128
|
-
y");var vt=i(()=>{(0,
|
|
128
|
+
y");var vt=i(()=>{(0,Je.registerTriggers)(),(0,Ve.registerTriggers)(),(0,We.registerTriggers)(),
|
|
129
129
|
(0,Xe.registerTriggers)(),(0,Ye.registerTriggers)(),(0,et.tryCreateTrigger)("@ez\
|
|
130
|
-
4/aws-topic",{"deploy:prepareExecutionPolicy":
|
|
130
|
+
4/aws-topic",{"deploy:prepareExecutionPolicy":Ze,"deploy:prepareLinkedService":Et,
|
|
131
131
|
"deploy:prepareResources":wt,"deploy:connectResources":Rt}),Se(),Ee()},"register\
|
|
132
132
|
Triggers"),Et=i(e=>Qe(e)??_e(e)??null,"prepareLinkedService"),wt=i(e=>qe(e)||Ue(
|
|
133
133
|
e),"prepareQueueResources"),Rt=i(e=>{Ge(e),Be(e)},"connectQueueResources");var At=i(e=>e.type===d,"isSubscriptionState");0&&(module.exports={SubscriptionServiceName,SubscriptionServiceType,TopicServiceName,
|
package/dist/main.mjs
CHANGED
|
@@ -24,26 +24,26 @@ o,n)}}let{topicArn:r}=await $(t);return{topicArn:r}},"createResource"),Qe=i(asyn
|
|
|
24
24
|
let{result:r,parameters:o}=e;r&&!o.import&&await Ge(r.topicArn,o,t.parameters)},
|
|
25
25
|
"updateResource"),qe=i(async e=>{let{result:t,parameters:r}=e;t&&!r.import&&await j(
|
|
26
26
|
t.topicArn)},"deleteResource"),Ge=i(async(e,t,r)=>{await ze(t.tags,r.tags,o=>Q(e,
|
|
27
|
-
o),o=>q(e,o))},"checkTagUpdates");var _=i(()=>{He(f,G())},"registerTopicProvider");import{tryRegisterProvider as ot}from"@ez4/aws-common";import{ReplaceResourceError as
|
|
28
|
-
import{Logger as U,tryParseArn as B}from"@ez4/aws-common";var a="AWS:SNS/Subscription",l="aws:sns.subscription";var K=new Ue({});var
|
|
27
|
+
o),o=>q(e,o))},"checkTagUpdates");var _=i(()=>{He(f,G())},"registerTopicProvider");import{tryRegisterProvider as ot}from"@ez4/aws-common";import{ReplaceResourceError as Ve}from"@ez4/aws-common";import{deepCompare as We}from"@ez4/utils";import{InvalidParameterError as V,isArn as Ze,parseArn as Je}from"@ez4/aws-common";import{NotFoundException as _e,SNSClient as Ue,SubscribeCommand as Be,UnsubscribeCommand as Ke}from"@aws-sdk/client-sns";
|
|
28
|
+
import{Logger as U,tryParseArn as B}from"@ez4/aws-common";var a="AWS:SNS/Subscription",l="aws:sns.subscription";var K=new Ue({});var Z=i(async e=>{let t=B(e.topicArn)?.resourceName??e.topicArn;U.logCreate(a,t);
|
|
29
29
|
let{topicArn:r,protocol:o,endpoint:n}=e;return{subscriptionArn:(await K.send(new Be(
|
|
30
30
|
{TopicArn:r,Protocol:o,Endpoint:n,ReturnSubscriptionArn:!0,Attributes:{...o==="s\
|
|
31
|
-
qs"&&{RawMessageDelivery:"true"}}}))).SubscriptionArn}},"createSubscription"),
|
|
31
|
+
qs"&&{RawMessageDelivery:"true"}}}))).SubscriptionArn}},"createSubscription"),J=i(
|
|
32
32
|
async e=>{let t=B(e)?.resourceName??e;U.logDelete(a,t);try{return await K.send(new Ke(
|
|
33
33
|
{SubscriptionArn:e})),!0}catch(r){if(!(r instanceof _e))throw r;return!1}},"dele\
|
|
34
|
-
teSubscription");var
|
|
35
|
-
t);switch(r){case"lambda":case"sqs":return r}throw new
|
|
34
|
+
teSubscription");var W=i((e,t)=>{if(!Ze(t))throw new V(e,`endpoint ${t} is not supported.`);let{service:r}=Je(
|
|
35
|
+
t);switch(r){case"lambda":case"sqs":return r}throw new V(e,`protocol ${r} is not\
|
|
36
36
|
supported.`)},"getSubscriptionProtocol");var X=i(()=>({equals:Xe,create:Y,replace:et,preview:Ye,update:tt,delete:rt}),"ge\
|
|
37
37
|
tSubscriptionHandler"),Xe=i((e,t)=>!!e.result&&e.result.subscriptionArn===t.result?.
|
|
38
38
|
subscriptionArn,"equalsResource"),Ye=i((e,t)=>{let r={...e.parameters,dependencies:e.
|
|
39
|
-
dependencies},o={...t.parameters,dependencies:t.dependencies},n=
|
|
39
|
+
dependencies},o={...t.parameters,dependencies:t.dependencies},n=We(r,o,{exclude:{
|
|
40
40
|
getTopicArn:!0,getEndpoint:!0}});if(n.counts)return{...n,name:r.fromService}},"p\
|
|
41
|
-
reviewResource"),et=i(async(e,t,r)=>{if(t.result)throw new
|
|
41
|
+
reviewResource"),et=i(async(e,t,r)=>{if(t.result)throw new Ve(a,e.entryId,t.entryId);
|
|
42
42
|
return Y(e,r)},"replaceResource"),Y=i(async(e,t)=>{let r=e.parameters,[o,n]=await Promise.
|
|
43
|
-
all([r.getTopicArn(t),r.getEndpoint(t)]),{subscriptionArn:p}=await
|
|
43
|
+
all([r.getTopicArn(t),r.getEndpoint(t)]),{subscriptionArn:p}=await Z({protocol:W(
|
|
44
44
|
a,n),topicArn:o,endpoint:n});return{subscriptionArn:p,topicArn:o,endpoint:n}},"c\
|
|
45
45
|
reateResource"),tt=i(async()=>{},"updateResource"),rt=i(async e=>{let{result:t}=e;
|
|
46
|
-
t&&await
|
|
46
|
+
t&&await J(t.subscriptionArn)},"deleteResource");var ee=i(()=>{ot(l,X())},"registerSubscriptionProvider");import{isTopicService as D}from"@ez4/topic/library";import{getServiceName as Nt}from"@ez4/project/library";import{attachEntry as st}from"@ez4/stateful";import{toKebabCase as ct}from"@ez4/utils";import{IncompleteResourceError as it}from"@ez4/aws-common";import{hashData as nt,
|
|
47
47
|
toKebabCase as pt}from"@ez4/utils";var x=class extends Error{static{i(this,"TopicNotFoundError")}constructor(t){super(
|
|
48
48
|
`Topic service ${t} wasn't found.`)}};var C=i((e,t=!0)=>nt(f,t?pt(e):e),"createTopicStateId"),N=i(e=>e.type===f,"isTop\
|
|
49
49
|
icState"),te=i((e,t,r)=>{let o=e.getServiceState(t,r);if(!N(o))throw new x(t);return o},
|
|
@@ -57,13 +57,14 @@ import{createLogGroup as Pt}from"@ez4/aws-logs";import{getQueueState as ue}from"
|
|
|
57
57
|
import{MappingServiceName as ut}from"@ez4/aws-function";import{getFunctionBundle as St}from"@ez4/aws-common";var oe=i(async(e,t)=>{let{handler:r,listener:o,messageSchema:n,context:p,debug:s}=e,
|
|
58
58
|
c=mt(t);return St(ut,{templateFile:at(import.meta.dirname,"../lib/message.ts"),filePrefix:"\
|
|
59
59
|
sns",define:{...c,__EZ4_SCHEMA:n?JSON.stringify(n):"undefined"},handler:r,listener:o,
|
|
60
|
-
context:p,debug:s})},"bundleSubscriptionFunction");var ie=i((e,t,r,o)=>{let{handler:n,messageSchema:
|
|
61
|
-
snsEntryPoint",sourceFile:n.sourceFile,functionName:o.functionName,
|
|
62
|
-
description
|
|
63
|
-
tags
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
60
|
+
context:p,debug:s})},"bundleSubscriptionFunction");var ie=i((e,t,r,o)=>{let{handler:n,variables:p,messageSchema:s}=o;return ft(e,t,
|
|
61
|
+
r,{handlerName:"snsEntryPoint",sourceFile:n.sourceFile,functionName:o.functionName,
|
|
62
|
+
description:o.description,timeout:o.timeout,memory:o.memory,debug:o.debug,tags:o.
|
|
63
|
+
tags,getFunctionVariables:i(()=>p.reduce((c,m)=>({...c,...m}),{}),"getFunctionVa\
|
|
64
|
+
riables"),getFunctionFiles:i(()=>[n.sourceFile,n.dependencies],"getFunctionFiles"),
|
|
65
|
+
getFunctionBundle:i(c=>oe(o,[...c.getDependencies(),...c.getConnections()]),"get\
|
|
66
|
+
FunctionBundle"),getFunctionHash:i(()=>lt({messageSchema:s}),"getFunctionHash")})},
|
|
67
|
+
"createSubscriptionFunction");import{createPermission as yt,getFunctionArn as gt,getPermission as dt,isFunctionState as ne}from"@ez4/aws-function";
|
|
67
68
|
import{attachQueuePolicy as Tt,getQueueArn as bt,isQueueState as xt}from"@ez4/aws-queue";
|
|
68
69
|
import{getAccountId as pe,getRegion as se}from"@ez4/aws-identity";import{attachEntry as vt}from"@ez4/stateful";
|
|
69
70
|
import{hashData as Et}from"@ez4/utils";var I=i((e,t,r,o)=>{let n=t.parameters.topicName,p=[t.entryId,r.entryId];if(ne(r)){
|
|
@@ -83,9 +84,9 @@ let{handler:s,listener:c}=p,m=F(t,s.name),u=At(n,m,o);if(!u){let M=ce(t,s.name,o
|
|
|
83
84
|
xe=n.getDependencyFiles(s.file),ve=Pt(e,{retention:p.logRetention??d.LogRetention,
|
|
84
85
|
groupName:M,tags:o.tags});u=ie(e,n.role,ve,{functionName:M,description:s.description,
|
|
85
86
|
messageSchema:t.schema,timeout:p.timeout??d.Timeout,memory:p.memory??d.Memory,context:t.
|
|
86
|
-
context,debug:o.debug,tags:o.tags,
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
context,debug:o.debug,tags:o.tags,variables:[o.variables,t.variables,p.variables],
|
|
88
|
+
handler:{sourceFile:s.file,functionName:s.name,module:s.module,dependencies:xe},
|
|
89
|
+
listener:c&&{functionName:c.name,sourceFile:c.file,module:c.module}}),n.setServiceState(
|
|
89
90
|
u,m,o)}I(e,r,u,{fromService:u.parameters.functionName});break}case E.Queue:{let s=ue(
|
|
90
91
|
n,p.service,o);I(e,r,s,{fromService:s.parameters.queueName});break}}},"prepareSu\
|
|
91
92
|
bscriptions"),R=i((e,t,r,o)=>{if(!o.role||!me(o.role))throw new g;for(let n of t.
|
|
@@ -93,9 +94,9 @@ subscriptions)switch(n.type){default:throw new z(a,"subscription not supported."
|
|
|
93
94
|
Lambda:{let p=F(t,n.handler.name),s=Rt(o,p,r);ae(e,s.entryId,t.context);break}case E.
|
|
94
95
|
Queue:{let p=ue(o,n.service,r);ae(e,p.entryId,t.context);break}}},"connectSubscr\
|
|
95
96
|
iptions");import{getDefinitionName as Ct}from"@ez4/project/library";var A=i((e,t,r)=>{let n=te(e,t.name,r).entryId,p=Ct(n,"topicArn"),s=JSON.stringify(
|
|
96
|
-
t.fifoMode??null),c=JSON.stringify(t.schema);return{
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
t.fifoMode??null),c=JSON.stringify(t.schema);return{module:"Client",from:"@ez4/a\
|
|
98
|
+
ws-topic/client",constructor:`@{EZ4_MODULE_IMPORT}.make(${p}, ${c}, ${s})`,connectionIds:[
|
|
99
|
+
n],dependencyIds:[n]}},"prepareLinkedClient");var Se=i(e=>{let{service:t,options:r,context:o}=e;return D(t)?A(o,t,r):null},"pr\
|
|
99
100
|
epareLinkedServices"),fe=i(e=>{let{state:t,service:r,options:o,context:n}=e;if(!D(
|
|
100
101
|
r))return!1;let{fifoMode:p}=r,s=v(t,{topicName:Nt(r,o),fifoMode:!!p,tags:o.tags});
|
|
101
102
|
return n.setServiceState(s,r,o),w(t,r,s,o,n),!0},"prepareServices"),le=i(e=>{let{
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import type { FunctionParameters, FunctionVariables } from '@ez4/aws-function';
|
|
1
2
|
import type { TopicMessageSchema } from '@ez4/topic/library';
|
|
2
|
-
import type { FunctionParameters } from '@ez4/aws-function';
|
|
3
3
|
import type { ContextSource } from '@ez4/project/library';
|
|
4
4
|
export type SubscriptionFunction = {
|
|
5
5
|
functionName: string;
|
|
@@ -9,10 +9,11 @@ export type SubscriptionFunction = {
|
|
|
9
9
|
export type SubscriptionEntryPoint = SubscriptionFunction & {
|
|
10
10
|
dependencies: string[];
|
|
11
11
|
};
|
|
12
|
-
export type SubscriptionFunctionParameters = Omit<FunctionParameters, 'getFunctionFiles' | 'getFunctionBundle' | 'getFunctionHash' | 'sourceFile' | 'handlerName'> & {
|
|
12
|
+
export type SubscriptionFunctionParameters = Omit<FunctionParameters, 'getFunctionFiles' | 'getFunctionBundle' | 'getFunctionHash' | 'getFunctionVariables' | 'sourceFile' | 'handlerName'> & {
|
|
13
13
|
handler: SubscriptionEntryPoint;
|
|
14
14
|
listener?: SubscriptionFunction;
|
|
15
15
|
messageSchema?: TopicMessageSchema;
|
|
16
16
|
context?: Record<string, ContextSource>;
|
|
17
|
+
variables: (FunctionVariables | undefined)[];
|
|
17
18
|
debug?: boolean;
|
|
18
19
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ez4/aws-topic",
|
|
3
3
|
"description": "EZ4: Self-managed AWS SNS topics provider",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.37.0",
|
|
5
5
|
"author": "Silas B.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -51,18 +51,18 @@
|
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@aws-sdk/client-sns": "^3.913.0",
|
|
54
|
-
"@ez4/aws-common": "^0.
|
|
55
|
-
"@ez4/aws-identity": "^0.
|
|
56
|
-
"@ez4/aws-function": "^0.
|
|
57
|
-
"@ez4/aws-logs": "^0.
|
|
58
|
-
"@ez4/aws-queue": "^0.
|
|
59
|
-
"@ez4/topic": "^0.
|
|
60
|
-
"@ez4/project": "^0.
|
|
61
|
-
"@ez4/queue": "^0.
|
|
62
|
-
"@ez4/schema": "^0.
|
|
63
|
-
"@ez4/stateful": "^0.
|
|
64
|
-
"@ez4/transform": "^0.
|
|
65
|
-
"@ez4/validator": "^0.
|
|
66
|
-
"@ez4/utils": "^0.
|
|
54
|
+
"@ez4/aws-common": "^0.37.0",
|
|
55
|
+
"@ez4/aws-identity": "^0.37.0",
|
|
56
|
+
"@ez4/aws-function": "^0.37.0",
|
|
57
|
+
"@ez4/aws-logs": "^0.37.0",
|
|
58
|
+
"@ez4/aws-queue": "^0.37.0",
|
|
59
|
+
"@ez4/topic": "^0.37.0",
|
|
60
|
+
"@ez4/project": "^0.37.0",
|
|
61
|
+
"@ez4/queue": "^0.37.0",
|
|
62
|
+
"@ez4/schema": "^0.37.0",
|
|
63
|
+
"@ez4/stateful": "^0.37.0",
|
|
64
|
+
"@ez4/transform": "^0.37.0",
|
|
65
|
+
"@ez4/validator": "^0.37.0",
|
|
66
|
+
"@ez4/utils": "^0.37.0"
|
|
67
67
|
}
|
|
68
68
|
}
|