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