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