@ez4/aws-topic 0.42.0 → 0.44.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 gt=Object.getOwnPropertyDescriptor;var yt=Object.getOwnPropertyNames;var dt=Object.prototype.hasOwnProperty;var i=(t,e)=>O(t,"name",{value:e,configurable:!0});var Tt=(t,e)=>{for(var r in e)O(t,r,{get:e[r],enumerable:!0})},bt=(t,e,r,o)=>{if(e&&
|
|
2
|
+
typeof e=="object"||typeof e=="function")for(let n of yt(e))!dt.call(t,n)&&n!==r&&
|
|
3
|
+
O(t,n,{get:()=>e[n],enumerable:!(o=gt(e,n))||o.enumerable});return t};var vt=t=>bt(O({},"__esModule",{value:!0}),t);var jt={};Tt(jt,{SubscriptionServiceName:()=>m,SubscriptionServiceType:()=>T,TopicServiceName:()=>l,
|
|
4
|
+
TopicServiceType:()=>g,createSubscription:()=>$,createSubscriptionFunction:()=>ee,
|
|
5
|
+
createTopic:()=>L,createTopicStateId:()=>j,getTopic:()=>Ft,getTopicArn:()=>Y,getTopicState:()=>X,
|
|
6
|
+
isSubscriptionState:()=>kt,isTopicState:()=>q,registerTriggers:()=>zt});module.exports=
|
|
7
|
+
vt(jt);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:xt,create:le,replace:wt,preview:Et,update:Rt,delete:At}),"\
|
|
21
|
+
getTopicHandler"),xt=i((t,e)=>!!t.result&&t.result.topicArn===e.result?.topicArn,
|
|
22
|
+
"equalsResource"),Et=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"),wt=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"),Rt=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 Ct(c,r.topicArn,
|
|
32
|
+
o,e.parameters),r))},"updateResource"),At=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"),Ct=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:Pt,create:Ee,replace:Lt,preview:ht,update:It,delete:Nt}),"\
|
|
45
|
+
getSubscriptionHandler"),Pt=i((t,e)=>!!t.result&&t.result.subscriptionArn===e.result?.
|
|
46
|
+
subscriptionArn,"equalsResource"),ht=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"),Lt=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"),It=i(async()=>{},"updateResource"),Nt=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"),Ft=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,vpc:o.vpc,getFunctionVariables:i(
|
|
76
|
+
()=>c.reduce((a,z)=>({...a,...z}),{}),"getFunctionVariables"),getFunctionBundle:i(
|
|
77
|
+
a=>Fe(o,[...a.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
|
-
tags
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
o)
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
e.context)
|
|
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,debug:ut=o.
|
|
106
|
+
debug,files:ft,vpc:St}=c,lt=(0,$e.createLogGroup)(t,{groupName:z,retention:ct,tags:o.
|
|
107
|
+
tags});a=ee(t,n.role,lt,{functionName:z,description:p.description,messageSchema:e.
|
|
108
|
+
schema,context:e.context,release:o.release,tags:o.tags,variables:[o.variables,e.
|
|
109
|
+
variables,c.variables],architecture:pt,logLevel:st,runtime:nt,timeout:mt,memory:at,
|
|
110
|
+
files:ft,debug:ut,vpc:St,handler:{sourceFile:p.file,functionName:p.name,module:p.
|
|
111
|
+
module,dependencies:it},listener:s&&{functionName:s.name,sourceFile:s.file,module:s.
|
|
112
|
+
module}}),n.setServiceState(u,o,a)}$(t,r,a,{fromService:a.parameters.functionName});
|
|
113
|
+
break}case F.TopicSubscriptionType.Queue:{let p=(0,oe.getQueueState)(n,c.service,
|
|
114
|
+
o);$(t,r,p,{fromService:p.parameters.queueName});break}}},"prepareSubscriptions"),
|
|
115
|
+
U=i((t,e,r,o)=>{if(!o.role||!(0,re.isRoleState)(o.role))throw new I;let n=(0,N.isLinkedContextVpcRequired)(
|
|
116
|
+
e.context);for(let c of e.subscriptions)switch(c.type){default:throw new G.InvalidParameterError(
|
|
117
|
+
m,"subscription not supported.");case F.TopicSubscriptionType.Lambda:{let p=te(e,
|
|
118
|
+
c.handler.name),s=(0,H.getFunctionState)(o,p,r);(0,N.linkServiceContext)(t,s.entryId,
|
|
119
|
+
e.context),s.parameters.vpc||(s.parameters.vpc=n);break}case F.TopicSubscriptionType.
|
|
120
|
+
Queue:{let p=(0,oe.getQueueState)(o,c.service,r);(0,N.linkServiceContext)(t,p.entryId,
|
|
121
|
+
e.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 zt=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":Ot,
|
|
143
|
+
"deploy:prepareResources":Dt,"deploy:connectResources":Mt}),ye(),Re()},"register\
|
|
144
|
+
Triggers"),Ot=i(t=>He(t)??Ke(t)??null,"prepareLinkedService"),Dt=i(t=>_e(t)||Ve(
|
|
145
|
+
t),"prepareQueueResources"),Mt=i(t=>{Ue(t),Ze(t)},"connectQueueResources");var kt=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 Ie=Object.defineProperty;var i=(t,e)=>Ie(t,"name",{value:e,configurable:!0});import{registerTriggers as Bt}from"@ez4/aws-common";import{registerTriggers as Kt}from"@ez4/aws-identity";
|
|
2
|
+
import{registerTriggers as Vt}from"@ez4/aws-function";import{registerTriggers as Zt}from"@ez4/aws-queue";
|
|
3
|
+
import{registerTriggers as Jt}from"@ez4/topic/library";import{tryCreateTrigger as Wt}from"@ez4/project/library";import{tryRegisterProvider as Ye}from"@ez4/aws-common";import{applyTagUpdates as Qe,CorruptedResourceError as Ge,OperationLogger as h,ReplaceResourceError as He}from"@ez4/aws-common";
|
|
4
|
+
import{getAccountId as _e,getRegion as Ue}from"@ez4/aws-identity";import{deepCompare as Be}from"@ez4/utils";import{getAccountId as Ne,getRegion as Fe,createPolicyDocument as ze}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([Fe(),Ne()]);return ze([{permissions:["sns:Publish"],resourceIds:t.
|
|
6
|
+
map(o=>d(`${o}-*`,e,r))}])},"getPolicyDocument");import{CreateTopicCommand as Me,DeleteTopicCommand as ke,TagResourceCommand as je,
|
|
7
|
+
UntagResourceCommand as qe,NotFoundException as $e}from"@aws-sdk/client-sns";import{
|
|
8
|
+
getTagList as j}from"@ez4/aws-common";import{getAwsClientOptions as Oe}from"@ez4/aws-common";import{SNSClient as De}from"@aws-sdk/client-sns";var f=i(()=>new De(Oe()),"getSNSClient");var q=i(async(t,e)=>{t.update("Creating topic");let{topicName:r,fifoMode:o}=e;return{
|
|
9
|
+
topicArn:(await f().send(new Me({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 ke({TopicArn:e})),!0}catch(r){if(!(r instanceof $e))
|
|
13
|
+
throw r;return!1}},"deleteTopic"),Q=i(async(t,e,r)=>{t.update("Tag topic"),await f().
|
|
14
|
+
send(new je({ResourceArn:e,Tags:j({...r,ManagedBy:"EZ4"})}))},"tagTopic"),G=i(async(t,e,r)=>{
|
|
15
|
+
t.update("Untag topic"),await f().send(new qe({ResourceArn:e,TagKeys:r}))},"unta\
|
|
16
|
+
gTopic");var S="AWS:SNS/Topic",l="aws:sns.topic";var H=i(()=>({equals:Ke,create:_,replace:Ze,preview:Ve,update:Je,delete:We}),"ge\
|
|
17
|
+
tTopicHandler"),Ke=i((t,e)=>!!t.result&&t.result.topicArn===e.result?.topicArn,"\
|
|
18
|
+
equalsResource"),Ve=i((t,e)=>{let r={...t.parameters,dependencies:t.dependencies},
|
|
19
|
+
o={...e.parameters,dependencies:e.dependencies},n=Be(r,o);if(n.counts)return{...n,
|
|
20
|
+
name:r.topicName}},"previewResource"),Ze=i(async(t,e)=>{if(e.result)throw new He(
|
|
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([Ue(),_e()]);return{topicArn:d(e.topicName,n,c)}}let{topicArn:o}=await q(r,e);
|
|
24
|
+
return{topicArn:o}})},"createResource"),Je=i((t,e)=>{let{result:r,parameters:o}=t,
|
|
25
|
+
{topicName:n}=o;if(!r)throw new Ge(S,n);return o.import?Promise.resolve(r):h.logExecution(
|
|
26
|
+
S,n,"updates",async c=>(await Xe(c,r.topicArn,o,e.parameters),r))},"updateResour\
|
|
27
|
+
ce"),We=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"),Xe=i(
|
|
29
|
+
async(t,e,r,o)=>{await Qe(r.tags,o.tags,n=>Q(t,e,n),n=>G(t,e,n))},"checkTagUpdat\
|
|
30
|
+
es");var U=i(()=>{Ye(l,H())},"registerTopicProvider");import{tryRegisterProvider as ft}from"@ez4/aws-common";import{OperationLogger as J,ReplaceResourceError as nt}from"@ez4/aws-common";import{
|
|
31
|
+
deepCompare as pt}from"@ez4/utils";import{InvalidParameterError as V,isArn as ot,parseArn as it}from"@ez4/aws-common";import{NotFoundException as et,SubscribeCommand as tt,UnsubscribeCommand as rt}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 tt({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 rt({SubscriptionArn:e})),
|
|
36
|
+
!0}catch(r){if(!(r instanceof et))throw r;return!1}},"deleteSubscription");var Z=i((t,e)=>{if(!ot(e))throw new V(t,`endpoint ${e} is not supported.`);let{service:r}=it(
|
|
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:ct,create:X,replace:at,preview:st,update:mt,delete:ut}),"ge\
|
|
39
|
+
tSubscriptionHandler"),ct=i((t,e)=>!!t.result&&t.result.subscriptionArn===e.result?.
|
|
40
|
+
subscriptionArn,"equalsResource"),st=i((t,e)=>{let r={...t.parameters,dependencies:t.
|
|
41
|
+
dependencies},o={...e.parameters,dependencies:e.dependencies},n=pt(r,o,{exclude:{
|
|
42
42
|
getTopicArn:!0,getEndpoint:!0}});if(n.counts)return{...n,name:r.fromService}},"p\
|
|
43
|
-
reviewResource"),
|
|
43
|
+
reviewResource"),at=i(async(t,e,r)=>{if(e.result)throw new nt(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"),mt=i(async()=>{},
|
|
48
|
+
"updateResource"),ut=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(()=>{ft(y,W())},"registerSubscriptionProvider");import{isTopicService as D}from"@ez4/topic/library";import{getServiceName as qt}from"@ez4/project/library";import{attachEntry as yt}from"@ez4/stateful";import{toKebabCase as dt}from"@ez4/utils";import{IncompleteResourceError as St}from"@ez4/aws-common";import{hashData as lt,
|
|
51
|
+
toKebabCase as gt}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)=>lt(l,e?gt(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 St(t,e,"topicArn");return o.topicArn},"getTopicArn");var w=i((t,e)=>{let r=dt(e.topicName),o=e.fifoMode?`${r}.fifo`:r,n=L(o,!1);return yt(
|
|
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"),po=i((t,e)=>{let r=L(e),o=t[r];return o&&I(o)?o:null},"getTopic");import{isLinkedContextVpcRequired as Ot,linkServiceContext as se}from"@ez4/project/library";
|
|
58
|
+
import{getFunctionState as Dt,tryGetFunctionState as Mt}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 kt}from"@ez4/aws-logs";
|
|
61
|
+
import{getQueueState as me}from"@ez4/aws-queue";import{createFunction as Et}from"@ez4/aws-function";import{hashObject as wt}from"@ez4/utils";
|
|
62
|
+
import{LogLevel as Rt}from"@ez4/project";import{join as Tt}from"node:path";import{getDefinitionsObject as bt}from"@ez4/project/library";
|
|
63
|
+
import{MappingServiceName as vt}from"@ez4/aws-function";import{getFunctionBundle as xt}from"@ez4/aws-common";var re=i(async(t,e)=>{let{handler:r,listener:o,messageSchema:n,context:c,debug:p}=t,
|
|
64
|
+
s=bt(e);return xt(vt,{templateFile:Tt(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
|
-
|
|
97
|
-
tags,variables:[o.variables,e.variables,
|
|
98
|
-
timeout:Ae,memory:Re,
|
|
99
|
-
|
|
100
|
-
module}}),n.setServiceState(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
c,r);se(t,s.entryId,
|
|
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 Et(t,e,r,{handlerName:"snsEntryPoint",sourceFile:n.sourceFile,functionName:o.
|
|
68
|
+
functionName,description:o.description,logLevel:p?Rt.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,vpc:o.vpc,getFunctionVariables:i(()=>c.reduce((a,x)=>({
|
|
71
|
+
...a,...x}),{}),"getFunctionVariables"),getFunctionBundle:i(a=>re(o,[...a.getDependencies(),
|
|
72
|
+
...a.getConnections()]),"getFunctionBundle"),getFunctionFiles:i(()=>[n.sourceFile,
|
|
73
|
+
n.dependencies],"getFunctionFiles"),getFunctionHash:i(()=>wt({architecture:s,messageSchema:u,
|
|
74
|
+
debug:p}),"getFunctionHash")})},"createSubscriptionFunction");import{createPermission as At,getFunctionArn as Ct,getPermission as Pt,isFunctionState as ie}from"@ez4/aws-function";
|
|
75
|
+
import{attachQueuePolicy as ht,getQueueArn as Lt,isQueueState as It}from"@ez4/aws-queue";
|
|
76
|
+
import{getAccountId as ne,getRegion as pe}from"@ez4/aws-identity";import{attachEntry as Nt}from"@ez4/stateful";
|
|
77
|
+
import{hashData as Ft}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=Pt(t,e,r)??At(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(It(r)){let s=ht(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=Ft(y,e.entryId,r.entryId);return Nt(t,{type:y,entryId:p,dependencies:c,parameters:{
|
|
84
|
+
...o,getTopicArn:i(s=>te(S,p,s),"getTopicArn"),getEndpoint:i(s=>ie(r)?Ct(m,p,s):
|
|
85
|
+
Lt(m,p,s),"getEndpoint")}})},"createSubscription");import{getServiceName as zt}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)=>`${zt(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=Mt(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,debug:Ce=o.
|
|
96
|
+
debug,files:Pe,vpc:he}=c,Le=kt(t,{groupName:x,retention:Ee,tags:o.tags});a=oe(t,
|
|
97
|
+
n.role,Le,{functionName:x,description:p.description,messageSchema:e.schema,context:e.
|
|
98
|
+
context,release:o.release,tags:o.tags,variables:[o.variables,e.variables,c.variables],
|
|
99
|
+
architecture:xe,logLevel:we,runtime:ve,timeout:Ae,memory:Re,files:Pe,debug:Ce,vpc:he,
|
|
100
|
+
handler:{sourceFile:p.file,functionName:p.name,module:p.module,dependencies:be},
|
|
101
|
+
listener:s&&{functionName:s.name,sourceFile:s.file,module:s.module}}),n.setServiceState(
|
|
102
|
+
u,o,a)}N(t,r,a,{fromService:a.parameters.functionName});break}case R.Queue:{let p=me(
|
|
103
|
+
n,c.service,o);N(t,r,p,{fromService:p.parameters.queueName});break}}},"prepareSu\
|
|
104
|
+
bscriptions"),C=i((t,e,r,o)=>{if(!o.role||!ae(o.role))throw new v;let n=Ot(e.context);
|
|
105
|
+
for(let c of e.subscriptions)switch(c.type){default:throw new O(m,"subscription \
|
|
106
|
+
not supported.");case R.Lambda:{let p=z(e,c.handler.name),s=Dt(o,p,r);se(t,s.entryId,
|
|
107
|
+
e.context),s.parameters.vpc||(s.parameters.vpc=n);break}case R.Queue:{let p=me(o,
|
|
108
|
+
c.service,r);se(t,p.entryId,e.context);break}}},"connectSubscriptions");import{getDefinitionName as jt}from"@ez4/project/library";var P=i((t,e,r)=>{let n=ee(t,e.name,r).entryId,c=jt(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:qt(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 $t}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:$t(
|
|
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 Qt,ImportType as Gt}from"@ez4/topic/library";import{createPolicy as Ht,
|
|
123
|
+
tryGetPolicy as _t}from"@ez4/aws-identity";import{getServiceName as Ut}from"@ez4/project/library";var Te=i(async t=>{let{state:e,serviceType:r,options:o}=t;if(r!==Qt&&r!==Gt)return null;
|
|
124
|
+
let n=Object.values({options:o,...o.imports}).map(s=>Ut("",s)),[c]=n,p=`${c}-top\
|
|
125
|
+
ic-policy`;return _t(e,p)??Ht(e,{tags:o.tags,policyDocument:await k(n),policyName:p})},
|
|
126
|
+
"prepareExecutionPolicy");var ji=i(()=>{Bt(),Kt(),Vt(),Zt(),Jt(),Wt("@ez4/aws-topic",{"deploy:prepareExecu\
|
|
127
|
+
tionPolicy":Te,"deploy:prepareLinkedService":Xt,"deploy:prepareResources":Yt,"de\
|
|
128
|
+
ploy:connectResources":er}),U(),Y()},"registerTriggers"),Xt=i(t=>ue(t)??ge(t)??null,
|
|
129
|
+
"prepareLinkedService"),Yt=i(t=>fe(t)||ye(t),"prepareQueueResources"),er=i(t=>{Se(
|
|
130
|
+
t),de(t)},"connectQueueResources");var Gi=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,po as getTopic,te as getTopicArn,ee as getTopicState,Gi as isSubscriptionState,
|
|
133
|
+
I as isTopicState,ji 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.44.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.44.0",
|
|
55
|
+
"@ez4/aws-identity": "^0.44.0",
|
|
56
|
+
"@ez4/aws-function": "^0.44.0",
|
|
57
|
+
"@ez4/aws-logs": "^0.44.0",
|
|
58
|
+
"@ez4/aws-queue": "^0.44.0",
|
|
59
|
+
"@ez4/common": "^0.44.0",
|
|
60
|
+
"@ez4/project": "^0.44.0",
|
|
61
|
+
"@ez4/queue": "^0.44.0",
|
|
62
|
+
"@ez4/schema": "^0.44.0",
|
|
63
|
+
"@ez4/stateful": "^0.44.0",
|
|
64
|
+
"@ez4/topic": "^0.44.0",
|
|
65
|
+
"@ez4/transform": "^0.44.0",
|
|
66
|
+
"@ez4/utils": "^0.44.0",
|
|
67
|
+
"@ez4/validator": "^0.44.0"
|
|
68
68
|
}
|
|
69
69
|
}
|