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