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