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