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