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