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