@ez4/aws-topic 0.42.0 → 0.43.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 +137 -134
- package/dist/main.mjs +121 -120
- package/dist/triggers/defaults.d.ts +4 -0
- package/package.json +16 -16
package/dist/main.cjs
CHANGED
|
@@ -1,145 +1,148 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
typeof e=="object"||typeof e=="function")for(let n of
|
|
3
|
-
|
|
4
|
-
TopicServiceType:()=>
|
|
5
|
-
createTopic:()=>
|
|
6
|
-
isSubscriptionState:()=>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
e,r]=await Promise.all([(0,
|
|
10
|
-
[{permissions:["sns:Publish"],resourceIds:t.map(o=>
|
|
11
|
-
cyDocument");var
|
|
12
|
-
topicArn:(await d().send(new
|
|
13
|
-
true",FifoThroughputScope:"MessageGroup",FifoTopic:"true"}},Tags:(0,
|
|
1
|
+
"use strict";var O=Object.defineProperty;var lt=Object.getOwnPropertyDescriptor;var gt=Object.getOwnPropertyNames;var yt=Object.prototype.hasOwnProperty;var i=(t,e)=>O(t,"name",{value:e,configurable:!0});var dt=(t,e)=>{for(var r in e)O(t,r,{get:e[r],enumerable:!0})},Tt=(t,e,r,o)=>{if(e&&
|
|
2
|
+
typeof e=="object"||typeof e=="function")for(let n of gt(e))!yt.call(t,n)&&n!==r&&
|
|
3
|
+
O(t,n,{get:()=>e[n],enumerable:!(o=lt(e,n))||o.enumerable});return t};var bt=t=>Tt(O({},"__esModule",{value:!0}),t);var kt={};dt(kt,{SubscriptionServiceName:()=>m,SubscriptionServiceType:()=>T,TopicServiceName:()=>l,
|
|
4
|
+
TopicServiceType:()=>g,createSubscription:()=>$,createSubscriptionFunction:()=>ee,
|
|
5
|
+
createTopic:()=>L,createTopicStateId:()=>j,getTopic:()=>Nt,getTopicArn:()=>Y,getTopicState:()=>X,
|
|
6
|
+
isSubscriptionState:()=>Mt,isTopicState:()=>q,registerTriggers:()=>Ft});module.exports=
|
|
7
|
+
bt(kt);var Xe=require("@ez4/aws-common"),Ye=require("@ez4/aws-identity"),et=require("@ez4/aws-function"),
|
|
8
|
+
tt=require("@ez4/aws-queue"),rt=require("@ez4/topic/library"),ot=require("@ez4/project/library");var ge=require("@ez4/aws-common");var S=require("@ez4/aws-common"),D=require("@ez4/aws-identity"),fe=require("@ez4/utils");var E=require("@ez4/aws-identity");var w=i((t,e,r)=>`arn:aws:sns:${e}:${r}:${t}`,"buildTopicArn"),ne=i(async t=>{let[
|
|
9
|
+
e,r]=await Promise.all([(0,E.getRegion)(),(0,E.getAccountId)()]);return(0,E.createPolicyDocument)(
|
|
10
|
+
[{permissions:["sns:Publish"],resourceIds:t.map(o=>w(`${o}-*`,e,r))}])},"getPoli\
|
|
11
|
+
cyDocument");var f=require("@aws-sdk/client-sns"),W=require("@ez4/aws-common");var pe=require("@ez4/aws-common"),ce=require("@aws-sdk/client-sns");var d=i(()=>new ce.SNSClient((0,pe.getAwsClientOptions)()),"getSNSClient");var se=i(async(t,e)=>{t.update("Creating topic");let{topicName:r,fifoMode:o}=e;return{
|
|
12
|
+
topicArn:(await d().send(new f.CreateTopicCommand({Name:r,Attributes:{...o&&{ContentBasedDeduplication:"\
|
|
13
|
+
true",FifoThroughputScope:"MessageGroup",FifoTopic:"true"}},Tags:(0,W.getTagList)(
|
|
14
14
|
{...e.tags,ManagedBy:"EZ4"})}))).TopicArn}},"createTopic"),ae=i(async(t,e)=>{t.update(
|
|
15
|
-
"Deleting topic");try{return await d().send(new
|
|
16
|
-
!0}catch(r){if(!(r instanceof
|
|
17
|
-
ic"),me=i(async(t,e,r)=>{t.update("Tag topic"),await d().send(new
|
|
18
|
-
{ResourceArn:e,Tags:(0,
|
|
19
|
-
async(t,e,r)=>{t.update("Untag topic"),await d().send(new
|
|
20
|
-
{ResourceArn:e,TagKeys:r}))},"untagTopic");var l="AWS:SNS/Topic",
|
|
21
|
-
getTopicHandler"),
|
|
22
|
-
"equalsResource"),
|
|
23
|
-
o={...e.parameters,dependencies:e.dependencies},n=(0,
|
|
24
|
-
return{...n,name:r.topicName}},"previewResource"),
|
|
25
|
-
throw new
|
|
26
|
-
source"),le=i(t=>{let{parameters:e}=t;return
|
|
27
|
-
topicName,"creation",async r=>{if(e.import){let[n,
|
|
28
|
-
(0,
|
|
29
|
-
r,e);return{topicArn:o}})},"createResource"),
|
|
30
|
-
{topicName:n}=o;if(!r)throw new
|
|
31
|
-
resolve(r):
|
|
32
|
-
o,e.parameters),r))},"updateResource"),
|
|
33
|
-
!e||r.import||await
|
|
34
|
-
await ae(o,e.topicArn)})},"deleteResource"),
|
|
35
|
-
r.tags,o.tags,n=>me(t,e,n),n=>ue(t,e,n))},"checkTagUpdates");var
|
|
36
|
-
endpoint:n}=e;return{subscriptionArn:(await d().send(new
|
|
15
|
+
"Deleting topic");try{return await d().send(new f.DeleteTopicCommand({TopicArn:e})),
|
|
16
|
+
!0}catch(r){if(!(r instanceof f.NotFoundException))throw r;return!1}},"deleteTop\
|
|
17
|
+
ic"),me=i(async(t,e,r)=>{t.update("Tag topic"),await d().send(new f.TagResourceCommand(
|
|
18
|
+
{ResourceArn:e,Tags:(0,W.getTagList)({...r,ManagedBy:"EZ4"})}))},"tagTopic"),ue=i(
|
|
19
|
+
async(t,e,r)=>{t.update("Untag topic"),await d().send(new f.UntagResourceCommand(
|
|
20
|
+
{ResourceArn:e,TagKeys:r}))},"untagTopic");var l="AWS:SNS/Topic",g="aws:sns.topic";var Se=i(()=>({equals:vt,create:le,replace:Et,preview:xt,update:wt,delete:Rt}),"\
|
|
21
|
+
getTopicHandler"),vt=i((t,e)=>!!t.result&&t.result.topicArn===e.result?.topicArn,
|
|
22
|
+
"equalsResource"),xt=i((t,e)=>{let r={...t.parameters,dependencies:t.dependencies},
|
|
23
|
+
o={...e.parameters,dependencies:e.dependencies},n=(0,fe.deepCompare)(r,o);if(n.counts)
|
|
24
|
+
return{...n,name:r.topicName}},"previewResource"),Et=i(async(t,e)=>{if(e.result)
|
|
25
|
+
throw new S.ReplaceResourceError(l,t.entryId,e.entryId);return le(t)},"replaceRe\
|
|
26
|
+
source"),le=i(t=>{let{parameters:e}=t;return S.OperationLogger.logExecution(l,e.
|
|
27
|
+
topicName,"creation",async r=>{if(e.import){let[n,c]=await Promise.all([(0,D.getRegion)(),
|
|
28
|
+
(0,D.getAccountId)()]);return{topicArn:w(e.topicName,n,c)}}let{topicArn:o}=await se(
|
|
29
|
+
r,e);return{topicArn:o}})},"createResource"),wt=i((t,e)=>{let{result:r,parameters:o}=t,
|
|
30
|
+
{topicName:n}=o;if(!r)throw new S.CorruptedResourceError(l,n);return o.import?Promise.
|
|
31
|
+
resolve(r):S.OperationLogger.logExecution(l,n,"updates",async c=>(await At(c,r.topicArn,
|
|
32
|
+
o,e.parameters),r))},"updateResource"),Rt=i(async t=>{let{result:e,parameters:r}=t;
|
|
33
|
+
!e||r.import||await S.OperationLogger.logExecution(l,r.topicName,"deletion",async o=>{
|
|
34
|
+
await ae(o,e.topicArn)})},"deleteResource"),At=i(async(t,e,r,o)=>{await(0,S.applyTagUpdates)(
|
|
35
|
+
r.tags,o.tags,n=>me(t,e,n),n=>ue(t,e,n))},"checkTagUpdates");var ye=i(()=>{(0,ge.tryRegisterProvider)(g,Se())},"registerTopicProvider");var we=require("@ez4/aws-common");var h=require("@ez4/aws-common"),ve=require("@ez4/utils");var v=require("@ez4/aws-common");var R=require("@aws-sdk/client-sns");var de=i(async(t,e)=>{t.update("Creating topic subscription");let{topicArn:r,protocol:o,
|
|
36
|
+
endpoint:n}=e;return{subscriptionArn:(await d().send(new R.SubscribeCommand({TopicArn:r,
|
|
37
37
|
Protocol:o,Endpoint:n,ReturnSubscriptionArn:!0,Attributes:{...o==="sqs"&&{RawMessageDelivery:"\
|
|
38
38
|
true"}}}))).SubscriptionArn}},"createSubscription"),Te=i(async(t,e)=>{t.update("\
|
|
39
|
-
Deleting topic subscription");try{return await d().send(new
|
|
40
|
-
{SubscriptionArn:e})),!0}catch(r){if(!(r instanceof
|
|
41
|
-
return!1}},"deleteSubscription");var be=i((t,e)=>{if(!(0,
|
|
42
|
-
t ${e} is not supported.`);let{service:r}=(0,
|
|
43
|
-
a":case"sqs":return r}throw new
|
|
44
|
-
supported.`)},"getSubscriptionProtocol");var m="AWS:SNS/Subscription",T="aws:sns.subscription";var
|
|
45
|
-
getSubscriptionHandler"),
|
|
46
|
-
subscriptionArn,"equalsResource"),
|
|
47
|
-
dependencies},o={...e.parameters,dependencies:e.dependencies},n=(0,
|
|
39
|
+
Deleting topic subscription");try{return await d().send(new R.UnsubscribeCommand(
|
|
40
|
+
{SubscriptionArn:e})),!0}catch(r){if(!(r instanceof R.NotFoundException))throw r;
|
|
41
|
+
return!1}},"deleteSubscription");var be=i((t,e)=>{if(!(0,v.isArn)(e))throw new v.InvalidParameterError(t,`endpoin\
|
|
42
|
+
t ${e} is not supported.`);let{service:r}=(0,v.parseArn)(e);switch(r){case"lambd\
|
|
43
|
+
a":case"sqs":return r}throw new v.InvalidParameterError(t,`protocol ${r} is not \
|
|
44
|
+
supported.`)},"getSubscriptionProtocol");var m="AWS:SNS/Subscription",T="aws:sns.subscription";var xe=i(()=>({equals:Ct,create:Ee,replace:ht,preview:Pt,update:Lt,delete:It}),"\
|
|
45
|
+
getSubscriptionHandler"),Ct=i((t,e)=>!!t.result&&t.result.subscriptionArn===e.result?.
|
|
46
|
+
subscriptionArn,"equalsResource"),Pt=i((t,e)=>{let r={...t.parameters,dependencies:t.
|
|
47
|
+
dependencies},o={...e.parameters,dependencies:e.dependencies},n=(0,ve.deepCompare)(
|
|
48
48
|
r,o,{exclude:{getTopicArn:!0,getEndpoint:!0}});if(n.counts)return{...n,name:r.fromService}},
|
|
49
|
-
"previewResource"),
|
|
49
|
+
"previewResource"),ht=i(async(t,e,r)=>{if(e.result)throw new h.ReplaceResourceError(
|
|
50
50
|
m,t.entryId,e.entryId);return Ee(t,r)},"replaceResource"),Ee=i((t,e)=>{let{parameters:r}=t;
|
|
51
|
-
return
|
|
52
|
-
|
|
53
|
-
o,{protocol:be(m,
|
|
54
|
-
endpoint:
|
|
55
|
-
let{result:e,parameters:r}=t;e&&await
|
|
56
|
-
"deletion",async o=>{await Te(o,e.subscriptionArn)})},"deleteResource");var Re=i(()=>{(0,we.tryRegisterProvider)(T,
|
|
57
|
-
`Topic service ${e} wasn't found.`)}};var
|
|
58
|
-
|
|
59
|
-
o))throw new
|
|
60
|
-
|
|
61
|
-
Arn");return o.topicArn},"getTopicArn");var
|
|
62
|
-
n=
|
|
63
|
-
...e,topicName:o}})},"createTopic"),
|
|
64
|
-
o:null},"getTopic");var N=require("@ez4/project/library"),
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
s=(0,
|
|
51
|
+
return h.OperationLogger.logExecution(m,r.fromService,"creation",async o=>{let[n,
|
|
52
|
+
c]=await Promise.all([r.getTopicArn(e),r.getEndpoint(e)]),{subscriptionArn:p}=await de(
|
|
53
|
+
o,{protocol:be(m,c),topicArn:n,endpoint:c});return{subscriptionArn:p,topicArn:n,
|
|
54
|
+
endpoint:c}})},"createResource"),Lt=i(async()=>{},"updateResource"),It=i(async t=>{
|
|
55
|
+
let{result:e,parameters:r}=t;e&&await h.OperationLogger.logExecution(m,r.fromService,
|
|
56
|
+
"deletion",async o=>{await Te(o,e.subscriptionArn)})},"deleteResource");var Re=i(()=>{(0,we.tryRegisterProvider)(T,xe())},"registerSubscriptionProvider");var K=require("@ez4/topic/library"),Ge=require("@ez4/project/library");var Ce=require("@ez4/stateful"),Pe=require("@ez4/utils");var Ae=require("@ez4/aws-common"),k=require("@ez4/utils");var M=class extends Error{static{i(this,"TopicNotFoundError")}constructor(e){super(
|
|
57
|
+
`Topic service ${e} wasn't found.`)}};var j=i((t,e=!0)=>(0,k.hashData)(g,e?(0,k.toKebabCase)(t):t),"createTopicStateId"),
|
|
58
|
+
q=i(t=>t.type===g,"isTopicState"),X=i((t,e,r)=>{let o=t.getServiceState(e,r);if(!q(
|
|
59
|
+
o))throw new M(e);return o},"getTopicState"),Y=i((t,e,r)=>{let o=r.getDependencies(
|
|
60
|
+
g).at(0)?.result;if(!o?.topicArn)throw new Ae.IncompleteResourceError(t,e,"topic\
|
|
61
|
+
Arn");return o.topicArn},"getTopicArn");var L=i((t,e)=>{let r=(0,Pe.toKebabCase)(e.topicName),o=e.fifoMode?`${r}.fifo`:r,
|
|
62
|
+
n=j(o,!1);return(0,Ce.attachEntry)(t,{type:g,entryId:n,dependencies:[],parameters:{
|
|
63
|
+
...e,topicName:o}})},"createTopic"),Nt=i((t,e)=>{let r=j(e),o=t[r];return o&&q(o)?
|
|
64
|
+
o:null},"getTopic");var N=require("@ez4/project/library"),H=require("@ez4/aws-function"),F=require("@ez4/topic/library"),
|
|
65
|
+
G=require("@ez4/aws-common"),re=require("@ez4/aws-identity"),$e=require("@ez4/aws-logs"),
|
|
66
|
+
oe=require("@ez4/aws-queue");var ze=require("@ez4/aws-function"),Oe=require("@ez4/utils"),De=require("@ez4/project");var he=require("node:path"),Le=require("@ez4/project/library"),Ie=require("@ez4/aws-function"),
|
|
67
|
+
Ne=require("@ez4/aws-common");var Fe=i(async(t,e)=>{let{handler:r,listener:o,messageSchema:n,context:c,debug:p}=t,
|
|
68
|
+
s=(0,Le.getDefinitionsObject)(e);return(0,Ne.getFunctionBundle)(Ie.MappingServiceName,
|
|
69
69
|
{templateFile:(0,he.join)(__dirname,"../lib/message.ts"),filePrefix:"sns",define:{
|
|
70
|
-
...s,__EZ4_SCHEMA:n?JSON.stringify(n):"undefined"},handler:r,listener:o,context:
|
|
71
|
-
debug:
|
|
70
|
+
...s,__EZ4_SCHEMA:n?JSON.stringify(n):"undefined"},handler:r,listener:o,context:c,
|
|
71
|
+
debug:p})},"bundleSubscriptionFunction");var ee=i((t,e,r,o)=>{let{handler:n,variables:c,debug:p,architecture:s,messageSchema:u}=o;
|
|
72
72
|
return(0,ze.createFunction)(t,e,r,{handlerName:"snsEntryPoint",sourceFile:n.sourceFile,
|
|
73
|
-
functionName:o.functionName,description:o.description,
|
|
74
|
-
|
|
75
|
-
tags:o.tags,getFunctionVariables:i(()=>
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
"
|
|
79
|
-
"getFunctionHash")})},"
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
73
|
+
functionName:o.functionName,description:o.description,logLevel:p?De.LogLevel.Debug:
|
|
74
|
+
o.logLevel,architecture:o.architecture,runtime:o.runtime,release:o.release,timeout:o.
|
|
75
|
+
timeout,memory:o.memory,files:o.files,tags:o.tags,getFunctionVariables:i(()=>c.reduce(
|
|
76
|
+
(a,z)=>({...a,...z}),{}),"getFunctionVariables"),getFunctionBundle:i(a=>Fe(o,[...a.
|
|
77
|
+
getDependencies(),...a.getConnections()]),"getFunctionBundle"),getFunctionFiles:i(
|
|
78
|
+
()=>[n.sourceFile,n.dependencies],"getFunctionFiles"),getFunctionHash:i(()=>(0,Oe.hashObject)(
|
|
79
|
+
{architecture:s,messageSchema:u,debug:p}),"getFunctionHash")})},"createSubscript\
|
|
80
|
+
ionFunction");var y=require("@ez4/aws-function"),C=require("@ez4/aws-queue"),A=require("@ez4/aws-identity"),
|
|
81
|
+
Me=require("@ez4/stateful"),ke=require("@ez4/utils");var $=i((t,e,r,o)=>{let n=e.parameters.topicName,c=[e.entryId,r.entryId];if((0,y.isFunctionState)(
|
|
82
|
+
r)){let s=(0,y.getPermission)(t,e,r)??(0,y.createPermission)(t,e,r,{fromService:o.
|
|
83
|
+
fromService,getPermission:i(async()=>{let[u,a]=await Promise.all([(0,A.getRegion)(),
|
|
84
|
+
(0,A.getAccountId)()]);return{sourceArn:w(n,u,a),principal:"sns.amazonaws.com"}},
|
|
85
|
+
"getPermission")});c.push(s.entryId)}if((0,C.isQueueState)(r)){let s=(0,C.attachQueuePolicy)(
|
|
86
|
+
t,r,e,{fromService:o.fromService,toService:n,policyGetters:[async()=>{let[u,a]=await Promise.
|
|
87
|
+
all([(0,A.getRegion)(),(0,A.getAccountId)()]);return{principal:"sns.amazonaws.co\
|
|
88
|
+
m",sourceArn:w(n,u,a)}}]});c.push(s.entryId)}let p=(0,ke.hashData)(T,e.entryId,r.
|
|
89
|
+
entryId);return(0,Me.attachEntry)(t,{type:T,entryId:p,dependencies:c,parameters:{
|
|
90
|
+
...o,getTopicArn:i(s=>Y(l,p,s),"getTopicArn"),getEndpoint:i(s=>(0,y.isFunctionState)(
|
|
91
|
+
r)?(0,y.getFunctionArn)(m,p,s):(0,C.getQueueArn)(m,p,s),"getEndpoint")}})},"crea\
|
|
92
|
+
teSubscription");var je=require("@ez4/project/library"),Q=require("@ez4/utils");var te=i((t,e)=>`${(0,Q.toKebabCase)(t.name)}-${(0,Q.toKebabCase)(e)}`,"getInter\
|
|
93
|
+
nalName"),qe=i((t,e,r)=>`${(0,je.getServiceName)(t,r)}-${(0,Q.toKebabCase)(e)}`,
|
|
93
94
|
"getFunctionName");var I=class extends Error{static{i(this,"RoleMissingError")}constructor(){super(
|
|
94
|
-
"Execution role for SNS is missing.")}};var
|
|
95
|
-
p.
|
|
96
|
-
p.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
o)
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
r)
|
|
127
|
-
let{
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
95
|
+
"Execution role for SNS is missing.")}};var x=require("@ez4/aws-function"),b;(p=>(p.LogLevel=x.FunctionDefaults.LogLevel,
|
|
96
|
+
p.LogRetention=x.FunctionDefaults.LogRetention,p.Architecture=x.FunctionDefaults.
|
|
97
|
+
Architecture,p.Runtime=x.FunctionDefaults.Runtime,p.Timeout=x.FunctionDefaults.Timeout,
|
|
98
|
+
p.Memory=x.FunctionDefaults.Memory))(b||={});var _=i((t,e,r,o,n)=>{if(!n.role||!(0,re.isRoleState)(n.role))throw new I;for(let c of e.
|
|
99
|
+
subscriptions)switch(c.type){default:throw new G.InvalidParameterError(m,"subscr\
|
|
100
|
+
iption not supported.");case F.TopicSubscriptionType.Lambda:{if(e.fifoMode)throw new G.InvalidParameterError(
|
|
101
|
+
m,"lambda subscription not supported for FIFO topics.");let{handler:p,listener:s}=c,
|
|
102
|
+
u=te(e,p.name),a=(0,H.tryGetFunctionState)(n,u,o);if(!a){let z=qe(e,p.name,o),it=n.
|
|
103
|
+
getDependencyFiles(p.file),P=o.defaults,{runtime:nt=P?.runtime??b.Runtime,architecture:pt=P?.
|
|
104
|
+
architecture??b.Architecture,logRetention:ct=P?.logRetention??b.LogRetention,logLevel:st=P?.
|
|
105
|
+
logLevel??b.LogLevel,memory:at=P?.memory??b.Memory,timeout:mt=b.Timeout,files:ut,
|
|
106
|
+
vpc:ft}=c,St=(0,$e.createLogGroup)(t,{groupName:z,retention:ct,tags:o.tags});a=ee(
|
|
107
|
+
t,n.role,St,{functionName:z,description:p.description,messageSchema:e.schema,context:e.
|
|
108
|
+
context,release:o.release,debug:o.debug,tags:o.tags,variables:[o.variables,e.variables,
|
|
109
|
+
c.variables],architecture:pt,logLevel:st,runtime:nt,timeout:mt,memory:at,files:ut,
|
|
110
|
+
vpc:ft,handler:{sourceFile:p.file,functionName:p.name,module:p.module,dependencies:it},
|
|
111
|
+
listener:s&&{functionName:s.name,sourceFile:s.file,module:s.module}}),n.setServiceState(
|
|
112
|
+
u,o,a)}$(t,r,a,{fromService:a.parameters.functionName});break}case F.TopicSubscriptionType.
|
|
113
|
+
Queue:{let p=(0,oe.getQueueState)(n,c.service,o);$(t,r,p,{fromService:p.parameters.
|
|
114
|
+
queueName});break}}},"prepareSubscriptions"),U=i((t,e,r,o)=>{if(!o.role||!(0,re.isRoleState)(
|
|
115
|
+
o.role))throw new I;let n=(0,N.isLinkedContextVpcRequired)(e.context);for(let c of e.
|
|
116
|
+
subscriptions)switch(c.type){default:throw new G.InvalidParameterError(m,"subscr\
|
|
117
|
+
iption not supported.");case F.TopicSubscriptionType.Lambda:{let p=te(e,c.handler.
|
|
118
|
+
name),s=(0,H.getFunctionState)(o,p,r);(0,N.linkServiceContext)(t,s.entryId,e.context),
|
|
119
|
+
s.parameters.vpc||(s.parameters.vpc=n);break}case F.TopicSubscriptionType.Queue:{
|
|
120
|
+
let p=(0,oe.getQueueState)(o,c.service,r);(0,N.linkServiceContext)(t,p.entryId,e.
|
|
121
|
+
context);break}}},"connectSubscriptions");var Qe=require("@ez4/project/library");var B=i((t,e,r)=>{let n=X(t,e.name,r).entryId,c=(0,Qe.getDefinitionName)(n,"topi\
|
|
122
|
+
cArn"),p=JSON.stringify(e.fifoMode??null),s=JSON.stringify(e.schema);return{module:"\
|
|
123
|
+
Client",from:"@ez4/aws-topic/client",constructor:`@{EZ4_MODULE_IMPORT}.make(${c}\
|
|
124
|
+
, ${s}, ${p})`,dependencyIds:[n],connectionIds:[n]}},"prepareLinkedClient");var He=i(t=>{let{service:e,options:r,context:o}=t;return(0,K.isTopicService)(e)?
|
|
125
|
+
B(o,e,r):null},"prepareLinkedServices"),_e=i(t=>{let{state:e,service:r,options:o,
|
|
126
|
+
context:n}=t;if(!(0,K.isTopicService)(r))return!1;let{fifoMode:c}=r,p=L(e,{topicName:(0,Ge.getServiceName)(
|
|
127
|
+
r,o),fifoMode:!!c,tags:o.tags});return n.setServiceState(r,o,p),_(e,r,p,o,n),!0},
|
|
128
|
+
"prepareServices"),Ue=i(t=>{let{state:e,service:r,options:o,context:n}=t;(0,K.isTopicService)(
|
|
129
|
+
r)&&U(e,r,o,n)},"connectServices");var ie=require("@ez4/project/library"),Be=require("@ez4/project/library"),V=require("@ez4/topic/library");var Ke=i(t=>{let{service:e,options:r,context:o}=t;if(!(0,V.isTopicImport)(e))return null;
|
|
130
|
+
let{project:n}=e,{imports:c}=r;if(!c||!c[n])throw new ie.MissingImportedProjectError(
|
|
131
|
+
n);return B(o,e,r)},"prepareLinkedImports"),Ve=i(t=>{let{state:e,service:r,options:o,
|
|
132
|
+
context:n}=t;if(!(0,V.isTopicImport)(r))return!1;let{reference:c,project:p}=r,{imports:s}=o;
|
|
133
|
+
if(!s||!s[p])throw new ie.MissingImportedProjectError(p);let u=L(e,{topicName:(0,Be.getServiceName)(
|
|
134
|
+
c,s[p]),fifoMode:!!r.fifoMode,import:!0});return n.setServiceState(r,o,u),_(e,r,
|
|
135
|
+
u,o,n),!0},"prepareImports"),Ze=i(t=>{let{state:e,service:r,options:o,context:n}=t;
|
|
136
|
+
(0,V.isTopicImport)(r)&&U(e,r,o,n)},"connectImports");var Z=require("@ez4/topic/library"),J=require("@ez4/aws-identity"),Je=require("@ez4/project/library");var We=i(async t=>{let{state:e,serviceType:r,options:o}=t;if(r!==Z.ServiceType&&
|
|
137
|
+
r!==Z.ImportType)return null;let n=Object.values({options:o,...o.imports}).map(s=>(0,Je.getServiceName)(
|
|
138
|
+
"",s)),[c]=n,p=`${c}-topic-policy`;return(0,J.tryGetPolicy)(e,p)??(0,J.createPolicy)(
|
|
139
|
+
e,{tags:o.tags,policyDocument:await ne(n),policyName:p})},"prepareExecutionPolic\
|
|
140
|
+
y");var Ft=i(()=>{(0,Xe.registerTriggers)(),(0,Ye.registerTriggers)(),(0,et.registerTriggers)(),
|
|
141
|
+
(0,tt.registerTriggers)(),(0,rt.registerTriggers)(),(0,ot.tryCreateTrigger)("@ez\
|
|
142
|
+
4/aws-topic",{"deploy:prepareExecutionPolicy":We,"deploy:prepareLinkedService":zt,
|
|
143
|
+
"deploy:prepareResources":Ot,"deploy:connectResources":Dt}),ye(),Re()},"register\
|
|
144
|
+
Triggers"),zt=i(t=>He(t)??Ke(t)??null,"prepareLinkedService"),Ot=i(t=>_e(t)||Ve(
|
|
145
|
+
t),"prepareQueueResources"),Dt=i(t=>{Ue(t),Ze(t)},"connectQueueResources");var Mt=i(t=>t.type===T,"isSubscriptionState");0&&(module.exports={SubscriptionServiceName,SubscriptionServiceType,TopicServiceName,
|
|
143
146
|
TopicServiceType,createSubscription,createSubscriptionFunction,createTopic,createTopicStateId,
|
|
144
147
|
getTopic,getTopicArn,getTopicState,isSubscriptionState,isTopicState,registerTriggers});
|
|
145
148
|
//# sourceMappingURL=main.cjs.map
|
package/dist/main.mjs
CHANGED
|
@@ -1,133 +1,134 @@
|
|
|
1
|
-
var
|
|
2
|
-
import{registerTriggers as
|
|
3
|
-
import{registerTriggers as
|
|
4
|
-
import{getAccountId as
|
|
5
|
-
e,r]=await Promise.all([
|
|
6
|
-
map(o=>d(`${o}-*`,e,r))}])},"getPolicyDocument");import{CreateTopicCommand as
|
|
7
|
-
UntagResourceCommand as
|
|
8
|
-
getTagList as j}from"@ez4/aws-common";import{getAwsClientOptions as
|
|
9
|
-
topicArn:(await
|
|
1
|
+
var Le=Object.defineProperty;var i=(t,e)=>Le(t,"name",{value:e,configurable:!0});import{registerTriggers as Ut}from"@ez4/aws-common";import{registerTriggers as Bt}from"@ez4/aws-identity";
|
|
2
|
+
import{registerTriggers as Kt}from"@ez4/aws-function";import{registerTriggers as Vt}from"@ez4/aws-queue";
|
|
3
|
+
import{registerTriggers as Zt}from"@ez4/topic/library";import{tryCreateTrigger as Jt}from"@ez4/project/library";import{tryRegisterProvider as Xe}from"@ez4/aws-common";import{applyTagUpdates as $e,CorruptedResourceError as Qe,OperationLogger as h,ReplaceResourceError as Ge}from"@ez4/aws-common";
|
|
4
|
+
import{getAccountId as He,getRegion as _e}from"@ez4/aws-identity";import{deepCompare as Ue}from"@ez4/utils";import{getAccountId as Ie,getRegion as Ne,createPolicyDocument as Fe}from"@ez4/aws-identity";var d=i((t,e,r)=>`arn:aws:sns:${e}:${r}:${t}`,"buildTopicArn"),k=i(async t=>{let[
|
|
5
|
+
e,r]=await Promise.all([Ne(),Ie()]);return Fe([{permissions:["sns:Publish"],resourceIds:t.
|
|
6
|
+
map(o=>d(`${o}-*`,e,r))}])},"getPolicyDocument");import{CreateTopicCommand as De,DeleteTopicCommand as Me,TagResourceCommand as ke,
|
|
7
|
+
UntagResourceCommand as je,NotFoundException as qe}from"@aws-sdk/client-sns";import{
|
|
8
|
+
getTagList as j}from"@ez4/aws-common";import{getAwsClientOptions as ze}from"@ez4/aws-common";import{SNSClient as Oe}from"@aws-sdk/client-sns";var f=i(()=>new Oe(ze()),"getSNSClient");var q=i(async(t,e)=>{t.update("Creating topic");let{topicName:r,fifoMode:o}=e;return{
|
|
9
|
+
topicArn:(await f().send(new De({Name:r,Attributes:{...o&&{ContentBasedDeduplication:"\
|
|
10
10
|
true",FifoThroughputScope:"MessageGroup",FifoTopic:"true"}},Tags:j({...e.tags,ManagedBy:"\
|
|
11
11
|
EZ4"})}))).TopicArn}},"createTopic"),$=i(async(t,e)=>{t.update("Deleting topic");
|
|
12
|
-
try{return await
|
|
13
|
-
throw r;return!1}},"deleteTopic"),Q=i(async(t,e,r)=>{t.update("Tag topic"),await
|
|
14
|
-
send(new
|
|
15
|
-
t.update("Untag topic"),await
|
|
16
|
-
gTopic");var
|
|
17
|
-
tTopicHandler"),
|
|
18
|
-
equalsResource"),
|
|
19
|
-
o={...e.parameters,dependencies:e.dependencies},n=
|
|
20
|
-
name:r.topicName}},"previewResource"),
|
|
21
|
-
|
|
22
|
-
return
|
|
23
|
-
all([
|
|
24
|
-
return{topicArn:o}})},"createResource"),
|
|
25
|
-
{topicName:n}=o;if(!r)throw new
|
|
26
|
-
|
|
27
|
-
ce"),
|
|
28
|
-
|
|
29
|
-
async(t,e,r,o)=>{await
|
|
30
|
-
es");var U=i(()=>{
|
|
31
|
-
deepCompare as
|
|
32
|
-
endpoint:n}=e;return{subscriptionArn:(await
|
|
12
|
+
try{return await f().send(new Me({TopicArn:e})),!0}catch(r){if(!(r instanceof qe))
|
|
13
|
+
throw r;return!1}},"deleteTopic"),Q=i(async(t,e,r)=>{t.update("Tag topic"),await f().
|
|
14
|
+
send(new ke({ResourceArn:e,Tags:j({...r,ManagedBy:"EZ4"})}))},"tagTopic"),G=i(async(t,e,r)=>{
|
|
15
|
+
t.update("Untag topic"),await f().send(new je({ResourceArn:e,TagKeys:r}))},"unta\
|
|
16
|
+
gTopic");var S="AWS:SNS/Topic",l="aws:sns.topic";var H=i(()=>({equals:Be,create:_,replace:Ve,preview:Ke,update:Ze,delete:Je}),"ge\
|
|
17
|
+
tTopicHandler"),Be=i((t,e)=>!!t.result&&t.result.topicArn===e.result?.topicArn,"\
|
|
18
|
+
equalsResource"),Ke=i((t,e)=>{let r={...t.parameters,dependencies:t.dependencies},
|
|
19
|
+
o={...e.parameters,dependencies:e.dependencies},n=Ue(r,o);if(n.counts)return{...n,
|
|
20
|
+
name:r.topicName}},"previewResource"),Ve=i(async(t,e)=>{if(e.result)throw new Ge(
|
|
21
|
+
S,t.entryId,e.entryId);return _(t)},"replaceResource"),_=i(t=>{let{parameters:e}=t;
|
|
22
|
+
return h.logExecution(S,e.topicName,"creation",async r=>{if(e.import){let[n,c]=await Promise.
|
|
23
|
+
all([_e(),He()]);return{topicArn:d(e.topicName,n,c)}}let{topicArn:o}=await q(r,e);
|
|
24
|
+
return{topicArn:o}})},"createResource"),Ze=i((t,e)=>{let{result:r,parameters:o}=t,
|
|
25
|
+
{topicName:n}=o;if(!r)throw new Qe(S,n);return o.import?Promise.resolve(r):h.logExecution(
|
|
26
|
+
S,n,"updates",async c=>(await We(c,r.topicArn,o,e.parameters),r))},"updateResour\
|
|
27
|
+
ce"),Je=i(async t=>{let{result:e,parameters:r}=t;!e||r.import||await h.logExecution(
|
|
28
|
+
S,r.topicName,"deletion",async o=>{await $(o,e.topicArn)})},"deleteResource"),We=i(
|
|
29
|
+
async(t,e,r,o)=>{await $e(r.tags,o.tags,n=>Q(t,e,n),n=>G(t,e,n))},"checkTagUpdat\
|
|
30
|
+
es");var U=i(()=>{Xe(l,H())},"registerTopicProvider");import{tryRegisterProvider as ut}from"@ez4/aws-common";import{OperationLogger as J,ReplaceResourceError as it}from"@ez4/aws-common";import{
|
|
31
|
+
deepCompare as nt}from"@ez4/utils";import{InvalidParameterError as V,isArn as rt,parseArn as ot}from"@ez4/aws-common";import{NotFoundException as Ye,SubscribeCommand as et,UnsubscribeCommand as tt}from"@aws-sdk/client-sns";var B=i(async(t,e)=>{t.update("Creating topic subscription");let{topicArn:r,protocol:o,
|
|
32
|
+
endpoint:n}=e;return{subscriptionArn:(await f().send(new et({TopicArn:r,Protocol:o,
|
|
33
33
|
Endpoint:n,ReturnSubscriptionArn:!0,Attributes:{...o==="sqs"&&{RawMessageDelivery:"\
|
|
34
34
|
true"}}}))).SubscriptionArn}},"createSubscription"),K=i(async(t,e)=>{t.update("D\
|
|
35
|
-
eleting topic subscription");try{return await
|
|
36
|
-
!0}catch(r){if(!(r instanceof
|
|
35
|
+
eleting topic subscription");try{return await f().send(new tt({SubscriptionArn:e})),
|
|
36
|
+
!0}catch(r){if(!(r instanceof Ye))throw r;return!1}},"deleteSubscription");var Z=i((t,e)=>{if(!rt(e))throw new V(t,`endpoint ${e} is not supported.`);let{service:r}=ot(
|
|
37
37
|
e);switch(r){case"lambda":case"sqs":return r}throw new V(t,`protocol ${r} is not\
|
|
38
|
-
supported.`)},"getSubscriptionProtocol");var m="AWS:SNS/Subscription",y="aws:sns.subscription";var W=i(()=>({equals:
|
|
39
|
-
tSubscriptionHandler"),
|
|
40
|
-
subscriptionArn,"equalsResource"),
|
|
41
|
-
dependencies},o={...e.parameters,dependencies:e.dependencies},n=
|
|
38
|
+
supported.`)},"getSubscriptionProtocol");var m="AWS:SNS/Subscription",y="aws:sns.subscription";var W=i(()=>({equals:pt,create:X,replace:st,preview:ct,update:at,delete:mt}),"ge\
|
|
39
|
+
tSubscriptionHandler"),pt=i((t,e)=>!!t.result&&t.result.subscriptionArn===e.result?.
|
|
40
|
+
subscriptionArn,"equalsResource"),ct=i((t,e)=>{let r={...t.parameters,dependencies:t.
|
|
41
|
+
dependencies},o={...e.parameters,dependencies:e.dependencies},n=nt(r,o,{exclude:{
|
|
42
42
|
getTopicArn:!0,getEndpoint:!0}});if(n.counts)return{...n,name:r.fromService}},"p\
|
|
43
|
-
reviewResource"),
|
|
43
|
+
reviewResource"),st=i(async(t,e,r)=>{if(e.result)throw new it(m,t.entryId,e.entryId);
|
|
44
44
|
return X(t,r)},"replaceResource"),X=i((t,e)=>{let{parameters:r}=t;return J.logExecution(
|
|
45
|
-
m,r.fromService,"creation",async o=>{let[n,
|
|
46
|
-
r.getEndpoint(e)]),{subscriptionArn:
|
|
47
|
-
return{subscriptionArn:
|
|
48
|
-
"updateResource"),
|
|
45
|
+
m,r.fromService,"creation",async o=>{let[n,c]=await Promise.all([r.getTopicArn(e),
|
|
46
|
+
r.getEndpoint(e)]),{subscriptionArn:p}=await B(o,{protocol:Z(m,c),topicArn:n,endpoint:c});
|
|
47
|
+
return{subscriptionArn:p,topicArn:n,endpoint:c}})},"createResource"),at=i(async()=>{},
|
|
48
|
+
"updateResource"),mt=i(async t=>{let{result:e,parameters:r}=t;e&&await J.logExecution(
|
|
49
49
|
m,r.fromService,"deletion",async o=>{await K(o,e.subscriptionArn)})},"deleteReso\
|
|
50
|
-
urce");var Y=i(()=>{
|
|
51
|
-
toKebabCase as
|
|
52
|
-
`Topic service ${e} wasn't found.`)}};var
|
|
53
|
-
icState"),ee=i((t,e,r)=>{let o=t.getServiceState(e,r);if(!I(o))throw new
|
|
50
|
+
urce");var Y=i(()=>{ut(y,W())},"registerSubscriptionProvider");import{isTopicService as D}from"@ez4/topic/library";import{getServiceName as jt}from"@ez4/project/library";import{attachEntry as gt}from"@ez4/stateful";import{toKebabCase as yt}from"@ez4/utils";import{IncompleteResourceError as ft}from"@ez4/aws-common";import{hashData as St,
|
|
51
|
+
toKebabCase as lt}from"@ez4/utils";var E=class extends Error{static{i(this,"TopicNotFoundError")}constructor(e){super(
|
|
52
|
+
`Topic service ${e} wasn't found.`)}};var L=i((t,e=!0)=>St(l,e?lt(t):t),"createTopicStateId"),I=i(t=>t.type===l,"isTop\
|
|
53
|
+
icState"),ee=i((t,e,r)=>{let o=t.getServiceState(e,r);if(!I(o))throw new E(e);return o},
|
|
54
54
|
"getTopicState"),te=i((t,e,r)=>{let o=r.getDependencies(l).at(0)?.result;if(!o?.
|
|
55
|
-
topicArn)throw new
|
|
55
|
+
topicArn)throw new ft(t,e,"topicArn");return o.topicArn},"getTopicArn");var w=i((t,e)=>{let r=yt(e.topicName),o=e.fifoMode?`${r}.fifo`:r,n=L(o,!1);return gt(
|
|
56
56
|
t,{type:l,entryId:n,dependencies:[],parameters:{...e,topicName:o}})},"createTopi\
|
|
57
|
-
c"),
|
|
58
|
-
import{getFunctionState as
|
|
59
|
-
import{TopicSubscriptionType as
|
|
60
|
-
import{isRoleState as ae}from"@ez4/aws-identity";import{createLogGroup as
|
|
61
|
-
import{getQueueState as me}from"@ez4/aws-queue";import{createFunction as
|
|
62
|
-
import{
|
|
63
|
-
|
|
57
|
+
c"),no=i((t,e)=>{let r=L(e),o=t[r];return o&&I(o)?o:null},"getTopic");import{isLinkedContextVpcRequired as zt,linkServiceContext as se}from"@ez4/project/library";
|
|
58
|
+
import{getFunctionState as Ot,tryGetFunctionState as Dt}from"@ez4/aws-function";
|
|
59
|
+
import{TopicSubscriptionType as R}from"@ez4/topic/library";import{InvalidParameterError as O}from"@ez4/aws-common";
|
|
60
|
+
import{isRoleState as ae}from"@ez4/aws-identity";import{createLogGroup as Mt}from"@ez4/aws-logs";
|
|
61
|
+
import{getQueueState as me}from"@ez4/aws-queue";import{createFunction as xt}from"@ez4/aws-function";import{hashObject as Et}from"@ez4/utils";
|
|
62
|
+
import{LogLevel as wt}from"@ez4/project";import{join as dt}from"node:path";import{getDefinitionsObject as Tt}from"@ez4/project/library";
|
|
63
|
+
import{MappingServiceName as bt}from"@ez4/aws-function";import{getFunctionBundle as vt}from"@ez4/aws-common";var re=i(async(t,e)=>{let{handler:r,listener:o,messageSchema:n,context:c,debug:p}=t,
|
|
64
|
+
s=Tt(e);return vt(bt,{templateFile:dt(import.meta.dirname,"../lib/message.ts"),filePrefix:"\
|
|
64
65
|
sns",define:{...s,__EZ4_SCHEMA:n?JSON.stringify(n):"undefined"},handler:r,listener:o,
|
|
65
|
-
context:
|
|
66
|
-
return
|
|
67
|
-
functionName,description:o.description,
|
|
68
|
-
release:o.release,timeout:o.timeout,memory:o.memory,
|
|
69
|
-
()=>
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
()=>
|
|
73
|
-
|
|
74
|
-
import{attachQueuePolicy as
|
|
75
|
-
import{getAccountId as ne,getRegion as pe}from"@ez4/aws-identity";import{attachEntry as
|
|
76
|
-
import{hashData as
|
|
77
|
-
let s=
|
|
78
|
-
a
|
|
79
|
-
zonaws.com"}},"getPermission")});
|
|
80
|
-
fromService,toService:n,policyGetters:[async()=>{let[a
|
|
81
|
-
ne()]);return{principal:"sns.amazonaws.com",sourceArn:d(n,a
|
|
82
|
-
let
|
|
83
|
-
...o,getTopicArn:i(s=>te(
|
|
84
|
-
|
|
85
|
-
-${
|
|
86
|
-
"Execution role for SNS is missing.")}};import{FunctionDefaults as
|
|
87
|
-
LogRetention,p.Architecture=
|
|
88
|
-
p.Memory=
|
|
89
|
-
switch(
|
|
90
|
-
if(e.fifoMode)throw new
|
|
91
|
-
let{handler:
|
|
92
|
-
be=n.getDependencyFiles(
|
|
93
|
-
architecture:Ee=
|
|
94
|
-
g.
|
|
95
|
-
retention:
|
|
96
|
-
messageSchema:e.schema,context:e.context,release:o.release,
|
|
97
|
-
tags,variables:[o.variables,e.variables,
|
|
98
|
-
timeout:Ae,memory:Re,vpc:
|
|
99
|
-
module,dependencies:be},listener:s&&{functionName:s.
|
|
100
|
-
module}}),n.setServiceState(
|
|
101
|
-
break}case
|
|
102
|
-
break}}},"prepareSubscriptions"),
|
|
103
|
-
let n=
|
|
104
|
-
m,"subscription not supported.");case
|
|
105
|
-
c,r);se(t,s.entryId,e.context),s.parameters.vpc||(s.parameters.
|
|
106
|
-
Queue:{let
|
|
107
|
-
|
|
66
|
+
context:c,debug:p})},"bundleSubscriptionFunction");var oe=i((t,e,r,o)=>{let{handler:n,variables:c,debug:p,architecture:s,messageSchema:u}=o;
|
|
67
|
+
return xt(t,e,r,{handlerName:"snsEntryPoint",sourceFile:n.sourceFile,functionName:o.
|
|
68
|
+
functionName,description:o.description,logLevel:p?wt.Debug:o.logLevel,architecture:o.
|
|
69
|
+
architecture,runtime:o.runtime,release:o.release,timeout:o.timeout,memory:o.memory,
|
|
70
|
+
files:o.files,tags:o.tags,getFunctionVariables:i(()=>c.reduce((a,x)=>({...a,...x}),
|
|
71
|
+
{}),"getFunctionVariables"),getFunctionBundle:i(a=>re(o,[...a.getDependencies(),
|
|
72
|
+
...a.getConnections()]),"getFunctionBundle"),getFunctionFiles:i(()=>[n.sourceFile,
|
|
73
|
+
n.dependencies],"getFunctionFiles"),getFunctionHash:i(()=>Et({architecture:s,messageSchema:u,
|
|
74
|
+
debug:p}),"getFunctionHash")})},"createSubscriptionFunction");import{createPermission as Rt,getFunctionArn as At,getPermission as Ct,isFunctionState as ie}from"@ez4/aws-function";
|
|
75
|
+
import{attachQueuePolicy as Pt,getQueueArn as ht,isQueueState as Lt}from"@ez4/aws-queue";
|
|
76
|
+
import{getAccountId as ne,getRegion as pe}from"@ez4/aws-identity";import{attachEntry as It}from"@ez4/stateful";
|
|
77
|
+
import{hashData as Nt}from"@ez4/utils";var N=i((t,e,r,o)=>{let n=e.parameters.topicName,c=[e.entryId,r.entryId];if(ie(r)){
|
|
78
|
+
let s=Ct(t,e,r)??Rt(t,e,r,{fromService:o.fromService,getPermission:i(async()=>{let[
|
|
79
|
+
u,a]=await Promise.all([pe(),ne()]);return{sourceArn:d(n,u,a),principal:"sns.ama\
|
|
80
|
+
zonaws.com"}},"getPermission")});c.push(s.entryId)}if(Lt(r)){let s=Pt(t,r,e,{fromService:o.
|
|
81
|
+
fromService,toService:n,policyGetters:[async()=>{let[u,a]=await Promise.all([pe(),
|
|
82
|
+
ne()]);return{principal:"sns.amazonaws.com",sourceArn:d(n,u,a)}}]});c.push(s.entryId)}
|
|
83
|
+
let p=Nt(y,e.entryId,r.entryId);return It(t,{type:y,entryId:p,dependencies:c,parameters:{
|
|
84
|
+
...o,getTopicArn:i(s=>te(S,p,s),"getTopicArn"),getEndpoint:i(s=>ie(r)?At(m,p,s):
|
|
85
|
+
ht(m,p,s),"getEndpoint")}})},"createSubscription");import{getServiceName as Ft}from"@ez4/project/library";import{toKebabCase as F}from"@ez4/utils";var z=i((t,e)=>`${F(t.name)}-${F(e)}`,"getInternalName"),ce=i((t,e,r)=>`${Ft(t,r)}\
|
|
86
|
+
-${F(e)}`,"getFunctionName");var v=class extends Error{static{i(this,"RoleMissingError")}constructor(){super(
|
|
87
|
+
"Execution role for SNS is missing.")}};import{FunctionDefaults as T}from"@ez4/aws-function";var g;(p=>(p.LogLevel=T.LogLevel,
|
|
88
|
+
p.LogRetention=T.LogRetention,p.Architecture=T.Architecture,p.Runtime=T.Runtime,
|
|
89
|
+
p.Timeout=T.Timeout,p.Memory=T.Memory))(g||={});var A=i((t,e,r,o,n)=>{if(!n.role||!ae(n.role))throw new v;for(let c of e.subscriptions)
|
|
90
|
+
switch(c.type){default:throw new O(m,"subscription not supported.");case R.Lambda:{
|
|
91
|
+
if(e.fifoMode)throw new O(m,"lambda subscription not supported for FIFO topics.");
|
|
92
|
+
let{handler:p,listener:s}=c,u=z(e,p.name),a=Dt(n,u,o);if(!a){let x=ce(e,p.name,o),
|
|
93
|
+
be=n.getDependencyFiles(p.file),b=o.defaults,{runtime:ve=b?.runtime??g.Runtime,architecture:xe=b?.
|
|
94
|
+
architecture??g.Architecture,logRetention:Ee=b?.logRetention??g.LogRetention,logLevel:we=b?.
|
|
95
|
+
logLevel??g.LogLevel,memory:Re=b?.memory??g.Memory,timeout:Ae=g.Timeout,files:Ce,
|
|
96
|
+
vpc:Pe}=c,he=Mt(t,{groupName:x,retention:Ee,tags:o.tags});a=oe(t,n.role,he,{functionName:x,
|
|
97
|
+
description:p.description,messageSchema:e.schema,context:e.context,release:o.release,
|
|
98
|
+
debug:o.debug,tags:o.tags,variables:[o.variables,e.variables,c.variables],architecture:xe,
|
|
99
|
+
logLevel:we,runtime:ve,timeout:Ae,memory:Re,files:Ce,vpc:Pe,handler:{sourceFile:p.
|
|
100
|
+
file,functionName:p.name,module:p.module,dependencies:be},listener:s&&{functionName:s.
|
|
101
|
+
name,sourceFile:s.file,module:s.module}}),n.setServiceState(u,o,a)}N(t,r,a,{fromService:a.
|
|
102
|
+
parameters.functionName});break}case R.Queue:{let p=me(n,c.service,o);N(t,r,p,{fromService:p.
|
|
103
|
+
parameters.queueName});break}}},"prepareSubscriptions"),C=i((t,e,r,o)=>{if(!o.role||
|
|
104
|
+
!ae(o.role))throw new v;let n=zt(e.context);for(let c of e.subscriptions)switch(c.
|
|
105
|
+
type){default:throw new O(m,"subscription not supported.");case R.Lambda:{let p=z(
|
|
106
|
+
e,c.handler.name),s=Ot(o,p,r);se(t,s.entryId,e.context),s.parameters.vpc||(s.parameters.
|
|
107
|
+
vpc=n);break}case R.Queue:{let p=me(o,c.service,r);se(t,p.entryId,e.context);break}}},
|
|
108
|
+
"connectSubscriptions");import{getDefinitionName as kt}from"@ez4/project/library";var P=i((t,e,r)=>{let n=ee(t,e.name,r).entryId,c=kt(n,"topicArn"),p=JSON.stringify(
|
|
108
109
|
e.fifoMode??null),s=JSON.stringify(e.schema);return{module:"Client",from:"@ez4/a\
|
|
109
|
-
ws-topic/client",constructor:`@{EZ4_MODULE_IMPORT}.make(${
|
|
110
|
-
n],connectionIds:[n]}},"prepareLinkedClient");var ue=i(t=>{let{service:e,options:r,context:o}=t;return
|
|
111
|
-
epareLinkedServices"),
|
|
112
|
-
r))return!1;let{fifoMode:
|
|
113
|
-
return n.setServiceState(r,o,
|
|
114
|
-
state:e,service:r,options:o,context:n}=t;
|
|
115
|
-
import{isTopicImport as
|
|
116
|
-
{imports:
|
|
117
|
-
s"),
|
|
118
|
-
reference:
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
tryGetPolicy as
|
|
123
|
-
let n=Object.values({options:o,...o.imports}).map(s=>
|
|
124
|
-
ic-policy`;return
|
|
125
|
-
"prepareExecutionPolicy");var
|
|
126
|
-
tionPolicy":Te,"deploy:prepareLinkedService":
|
|
127
|
-
ploy:connectResources":
|
|
128
|
-
"prepareLinkedService"),
|
|
129
|
-
t),de(t)},"connectQueueResources");var
|
|
130
|
-
l as TopicServiceType,N as createSubscription,oe as createSubscriptionFunction,
|
|
131
|
-
|
|
132
|
-
I as isTopicState,
|
|
110
|
+
ws-topic/client",constructor:`@{EZ4_MODULE_IMPORT}.make(${c}, ${s}, ${p})`,dependencyIds:[
|
|
111
|
+
n],connectionIds:[n]}},"prepareLinkedClient");var ue=i(t=>{let{service:e,options:r,context:o}=t;return D(e)?P(o,e,r):null},"pr\
|
|
112
|
+
epareLinkedServices"),fe=i(t=>{let{state:e,service:r,options:o,context:n}=t;if(!D(
|
|
113
|
+
r))return!1;let{fifoMode:c}=r,p=w(e,{topicName:jt(r,o),fifoMode:!!c,tags:o.tags});
|
|
114
|
+
return n.setServiceState(r,o,p),A(e,r,p,o,n),!0},"prepareServices"),Se=i(t=>{let{
|
|
115
|
+
state:e,service:r,options:o,context:n}=t;D(r)&&C(e,r,o,n)},"connectServices");import{MissingImportedProjectError as le}from"@ez4/project/library";import{getServiceName as qt}from"@ez4/project/library";
|
|
116
|
+
import{isTopicImport as M}from"@ez4/topic/library";var ge=i(t=>{let{service:e,options:r,context:o}=t;if(!M(e))return null;let{project:n}=e,
|
|
117
|
+
{imports:c}=r;if(!c||!c[n])throw new le(n);return P(o,e,r)},"prepareLinkedImport\
|
|
118
|
+
s"),ye=i(t=>{let{state:e,service:r,options:o,context:n}=t;if(!M(r))return!1;let{
|
|
119
|
+
reference:c,project:p}=r,{imports:s}=o;if(!s||!s[p])throw new le(p);let u=w(e,{topicName:qt(
|
|
120
|
+
c,s[p]),fifoMode:!!r.fifoMode,import:!0});return n.setServiceState(r,o,u),A(e,r,
|
|
121
|
+
u,o,n),!0},"prepareImports"),de=i(t=>{let{state:e,service:r,options:o,context:n}=t;
|
|
122
|
+
M(r)&&C(e,r,o,n)},"connectImports");import{ServiceType as $t,ImportType as Qt}from"@ez4/topic/library";import{createPolicy as Gt,
|
|
123
|
+
tryGetPolicy as Ht}from"@ez4/aws-identity";import{getServiceName as _t}from"@ez4/project/library";var Te=i(async t=>{let{state:e,serviceType:r,options:o}=t;if(r!==$t&&r!==Qt)return null;
|
|
124
|
+
let n=Object.values({options:o,...o.imports}).map(s=>_t("",s)),[c]=n,p=`${c}-top\
|
|
125
|
+
ic-policy`;return Ht(e,p)??Gt(e,{tags:o.tags,policyDocument:await k(n),policyName:p})},
|
|
126
|
+
"prepareExecutionPolicy");var ki=i(()=>{Ut(),Bt(),Kt(),Vt(),Zt(),Jt("@ez4/aws-topic",{"deploy:prepareExecu\
|
|
127
|
+
tionPolicy":Te,"deploy:prepareLinkedService":Wt,"deploy:prepareResources":Xt,"de\
|
|
128
|
+
ploy:connectResources":Yt}),U(),Y()},"registerTriggers"),Wt=i(t=>ue(t)??ge(t)??null,
|
|
129
|
+
"prepareLinkedService"),Xt=i(t=>fe(t)||ye(t),"prepareQueueResources"),Yt=i(t=>{Se(
|
|
130
|
+
t),de(t)},"connectQueueResources");var Qi=i(t=>t.type===y,"isSubscriptionState");export{m as SubscriptionServiceName,y as SubscriptionServiceType,S as TopicServiceName,
|
|
131
|
+
l as TopicServiceType,N as createSubscription,oe as createSubscriptionFunction,w as createTopic,
|
|
132
|
+
L as createTopicStateId,no as getTopic,te as getTopicArn,ee as getTopicState,Qi as isSubscriptionState,
|
|
133
|
+
I as isTopicState,ki as registerTriggers};
|
|
133
134
|
//# sourceMappingURL=main.mjs.map
|
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.43.0",
|
|
5
5
|
"author": "Silas B.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -50,20 +50,20 @@
|
|
|
50
50
|
"@types/aws-lambda": "^8.10.156"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@aws-sdk/client-sns": "^3.
|
|
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/common": "^0.
|
|
60
|
-
"@ez4/project": "^0.
|
|
61
|
-
"@ez4/queue": "^0.
|
|
62
|
-
"@ez4/schema": "^0.
|
|
63
|
-
"@ez4/stateful": "^0.
|
|
64
|
-
"@ez4/topic": "^0.
|
|
65
|
-
"@ez4/transform": "^0.
|
|
66
|
-
"@ez4/utils": "^0.
|
|
67
|
-
"@ez4/validator": "^0.
|
|
53
|
+
"@aws-sdk/client-sns": "^3.996.0",
|
|
54
|
+
"@ez4/aws-common": "^0.43.0",
|
|
55
|
+
"@ez4/aws-identity": "^0.43.0",
|
|
56
|
+
"@ez4/aws-function": "^0.43.0",
|
|
57
|
+
"@ez4/aws-logs": "^0.43.0",
|
|
58
|
+
"@ez4/aws-queue": "^0.43.0",
|
|
59
|
+
"@ez4/common": "^0.43.0",
|
|
60
|
+
"@ez4/project": "^0.43.0",
|
|
61
|
+
"@ez4/queue": "^0.43.0",
|
|
62
|
+
"@ez4/schema": "^0.43.0",
|
|
63
|
+
"@ez4/stateful": "^0.43.0",
|
|
64
|
+
"@ez4/topic": "^0.43.0",
|
|
65
|
+
"@ez4/transform": "^0.43.0",
|
|
66
|
+
"@ez4/utils": "^0.43.0",
|
|
67
|
+
"@ez4/validator": "^0.43.0"
|
|
68
68
|
}
|
|
69
69
|
}
|