@ez4/aws-topic 0.36.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.cjs CHANGED
@@ -1,29 +1,29 @@
1
1
  "use strict";var I=Object.defineProperty;var ot=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyNames;var nt=Object.prototype.hasOwnProperty;var i=(e,t)=>I(e,"name",{value:t,configurable:!0});var pt=(e,t)=>{for(var r in t)I(e,r,{get:t[r],enumerable:!0})},st=(e,t,r,o)=>{if(t&&
2
2
  typeof t=="object"||typeof t=="function")for(let n of it(t))!nt.call(e,n)&&n!==r&&
3
- I(e,n,{get:()=>t[n],enumerable:!(o=ot(t,n))||o.enumerable});return e};var ct=e=>st(I({},"__esModule",{value:!0}),e);var Pt={};pt(Pt,{SubscriptionServiceName:()=>a,SubscriptionServiceType:()=>d,TopicServiceName:()=>S,
4
- TopicServiceType:()=>y,createSubscription:()=>k,createSubscriptionFunction:()=>W,
5
- createTopic:()=>A,createTopicStateId:()=>M,getTopic:()=>xt,getTopicArn:()=>Z,getTopicState:()=>J,
3
+ I(e,n,{get:()=>t[n],enumerable:!(o=ot(t,n))||o.enumerable});return e};var ct=e=>st(I({},"__esModule",{value:!0}),e);var Pt={};pt(Pt,{SubscriptionServiceName:()=>a,SubscriptionServiceType:()=>d,TopicServiceName:()=>f,
4
+ TopicServiceType:()=>y,createSubscription:()=>k,createSubscriptionFunction:()=>V,
5
+ createTopic:()=>A,createTopicStateId:()=>M,getTopic:()=>xt,getTopicArn:()=>J,getTopicState:()=>Z,
6
6
  isSubscriptionState:()=>At,isTopicState:()=>O,registerTriggers:()=>vt});module.exports=
7
- ct(Pt);var Ze=require("@ez4/aws-common"),We=require("@ez4/aws-identity"),Ve=require("@ez4/aws-function"),
7
+ ct(Pt);var Je=require("@ez4/aws-common"),Ve=require("@ez4/aws-identity"),We=require("@ez4/aws-function"),
8
8
  Xe=require("@ez4/aws-queue"),Ye=require("@ez4/topic/library"),et=require("@ez4/project/library");var ue=require("@ez4/aws-common");var F=require("@ez4/aws-common"),z=require("@ez4/aws-identity"),ce=require("@ez4/utils");var x=require("@ez4/aws-identity");var v=i((e,t,r)=>`arn:aws:sns:${t}:${r}:${e}`,"buildTopicArn"),oe=i(async e=>{let[
9
9
  t,r]=await Promise.all([(0,x.getRegion)(),(0,x.getAccountId)()]);return(0,x.createPolicyDocument)(
10
10
  [{permissions:["sns:Publish"],resourceIds:e.map(o=>v(`${o}-*`,t,r))}])},"getPoli\
11
- cyDocument");var m=require("@aws-sdk/client-sns"),u=require("@ez4/aws-common");var S="AWS:SNS/Topic",y="aws:sns.topic";var h=new m.SNSClient({}),ie=i(async e=>{let{topicName:t,fifoMode:r}=e;return u.Logger.
12
- logCreate(S,t),{topicArn:(await h.send(new m.CreateTopicCommand({Name:t,Attributes:{
11
+ cyDocument");var m=require("@aws-sdk/client-sns"),u=require("@ez4/aws-common");var f="AWS:SNS/Topic",y="aws:sns.topic";var h=new m.SNSClient({}),ie=i(async e=>{let{topicName:t,fifoMode:r}=e;return u.Logger.
12
+ logCreate(f,t),{topicArn:(await h.send(new m.CreateTopicCommand({Name:t,Attributes:{
13
13
  ...r&&{ContentBasedDeduplication:"true",FifoThroughputScope:"MessageGroup",FifoTopic:"\
14
14
  true"}},Tags:(0,u.getTagList)({...e.tags,ManagedBy:"EZ4"})}))).TopicArn}},"creat\
15
15
  eTopic"),ne=i(async e=>{let t=(0,u.tryParseArn)(e)?.resourceName??e;u.Logger.logDelete(
16
- S,t);try{return await h.send(new m.DeleteTopicCommand({TopicArn:e})),!0}catch(r){
16
+ f,t);try{return await h.send(new m.DeleteTopicCommand({TopicArn:e})),!0}catch(r){
17
17
  if(!(r instanceof m.NotFoundException))throw r;return!1}},"deleteTopic"),pe=i(async(e,t)=>{
18
- let r=(0,u.tryParseArn)(e)?.resourceName??e;u.Logger.logTag(S,r),await h.send(new m.TagResourceCommand(
18
+ let r=(0,u.tryParseArn)(e)?.resourceName??e;u.Logger.logTag(f,r),await h.send(new m.TagResourceCommand(
19
19
  {ResourceArn:e,Tags:(0,u.getTagList)({...t,ManagedBy:"EZ4"})}))},"tagTopic"),se=i(
20
- async(e,t)=>{let r=(0,u.tryParseArn)(e)?.resourceName??e;u.Logger.logUntag(S,r),
20
+ async(e,t)=>{let r=(0,u.tryParseArn)(e)?.resourceName??e;u.Logger.logUntag(f,r),
21
21
  await h.send(new m.UntagResourceCommand({ResourceArn:e,TagKeys:t}))},"untagTopic");var ae=i(()=>({equals:at,create:me,replace:ut,preview:mt,update:St,delete:ft}),"\
22
22
  getTopicHandler"),at=i((e,t)=>!!e.result&&e.result.topicArn===t.result?.topicArn,
23
23
  "equalsResource"),mt=i((e,t)=>{let r={...e.parameters,dependencies:e.dependencies},
24
24
  o={...t.parameters,dependencies:t.dependencies},n=(0,ce.deepCompare)(r,o);if(n.counts)
25
25
  return{...n,name:r.topicName}},"previewResource"),ut=i(async(e,t)=>{if(t.result)
26
- throw new F.ReplaceResourceError(S,e.entryId,t.entryId);return me(e)},"replaceRe\
26
+ throw new F.ReplaceResourceError(f,e.entryId,t.entryId);return me(e)},"replaceRe\
27
27
  source"),me=i(async e=>{let t=e.parameters;if(t.import){let[o,n]=await Promise.all(
28
28
  [(0,z.getRegion)(),(0,z.getAccountId)()]);return{topicArn:v(t.topicName,o,n)}}let{
29
29
  topicArn:r}=await ie(t);return{topicArn:r}},"createResource"),St=i(async(e,t)=>{
@@ -52,8 +52,8 @@ parameters,[o,n]=await Promise.all([r.getTopicArn(t),r.getEndpoint(t)]),{subscri
52
52
  "createResource"),Tt=i(async()=>{},"updateResource"),bt=i(async e=>{let{result:t}=e;
53
53
  t&&await ye(t.subscriptionArn)},"deleteResource");var Ee=i(()=>{(0,ve.tryRegisterProvider)(d,be())},"registerSubscriptionProvider");var _=require("@ez4/topic/library"),je=require("@ez4/project/library");var Re=require("@ez4/stateful"),Ae=require("@ez4/utils");var we=require("@ez4/aws-common"),L=require("@ez4/utils");var D=class extends Error{static{i(this,"TopicNotFoundError")}constructor(t){super(
54
54
  `Topic service ${t} wasn't found.`)}};var M=i((e,t=!0)=>(0,L.hashData)(y,t?(0,L.toKebabCase)(e):e),"createTopicStateId"),
55
- O=i(e=>e.type===y,"isTopicState"),J=i((e,t,r)=>{let o=e.getServiceState(t,r);if(!O(
56
- o))throw new D(t);return o},"getTopicState"),Z=i((e,t,r)=>{let o=r.getDependencies(
55
+ O=i(e=>e.type===y,"isTopicState"),Z=i((e,t,r)=>{let o=e.getServiceState(t,r);if(!O(
56
+ o))throw new D(t);return o},"getTopicState"),J=i((e,t,r)=>{let o=r.getDependencies(
57
57
  y).at(0)?.result;if(!o?.topicArn)throw new we.IncompleteResourceError(e,t,"topic\
58
58
  Arn");return o.topicArn},"getTopicArn");var A=i((e,t)=>{let r=(0,Ae.toKebabCase)(t.topicName),o=t.fifoMode?`${r}.fifo`:r,
59
59
  n=M(o,!1);return(0,Re.attachEntry)(e,{type:y,entryId:n,dependencies:[],parameters:{
@@ -65,51 +65,51 @@ Ie=require("@ez4/aws-common");var he=i(async(e,t)=>{let{handler:r,listener:o,mes
65
65
  c=(0,Ce.getDefinitionsObject)(t);return(0,Ie.getFunctionBundle)(Ne.MappingServiceName,
66
66
  {templateFile:(0,Pe.join)(__dirname,"../lib/message.ts"),filePrefix:"sns",define:{
67
67
  ...c,__EZ4_SCHEMA:n?JSON.stringify(n):"undefined"},handler:r,listener:o,context:p,
68
- debug:s})},"bundleSubscriptionFunction");var W=i((e,t,r,o)=>{let{handler:n,messageSchema:p}=o;return(0,Fe.createFunction)(
68
+ debug:s})},"bundleSubscriptionFunction");var V=i((e,t,r,o)=>{let{handler:n,variables:p,messageSchema:s}=o;return(0,Fe.createFunction)(
69
69
  e,t,r,{handlerName:"snsEntryPoint",sourceFile:n.sourceFile,functionName:o.functionName,
70
- description:o.description,variables:o.variables,timeout:o.timeout,memory:o.memory,
71
- debug:o.debug,tags:o.tags,getFunctionFiles:i(()=>[n.sourceFile,n.dependencies],"\
72
- getFunctionFiles"),getFunctionBundle:i(s=>he(o,[...s.getDependencies(),...s.getConnections()]),
73
- "getFunctionBundle"),getFunctionHash:i(()=>(0,ze.hashObject)({messageSchema:p}),
74
- "getFunctionHash")})},"createSubscriptionFunction");var g=require("@ez4/aws-function"),R=require("@ez4/aws-queue"),w=require("@ez4/aws-identity"),
70
+ description:o.description,timeout:o.timeout,memory:o.memory,debug:o.debug,tags:o.
71
+ tags,getFunctionVariables:i(()=>p.reduce((c,S)=>({...c,...S}),{}),"getFunctionVa\
72
+ riables"),getFunctionFiles:i(()=>[n.sourceFile,n.dependencies],"getFunctionFiles"),
73
+ getFunctionBundle:i(c=>he(o,[...c.getDependencies(),...c.getConnections()]),"get\
74
+ FunctionBundle"),getFunctionHash:i(()=>(0,ze.hashObject)({messageSchema:s}),"get\
75
+ FunctionHash")})},"createSubscriptionFunction");var g=require("@ez4/aws-function"),R=require("@ez4/aws-queue"),w=require("@ez4/aws-identity"),
75
76
  De=require("@ez4/stateful"),Le=require("@ez4/utils");var k=i((e,t,r,o)=>{let n=t.parameters.topicName,p=[t.entryId,r.entryId];if((0,g.isFunctionState)(
76
77
  r)){let c=(0,g.getPermission)(e,t,r)??(0,g.createPermission)(e,t,r,{fromService:o.
77
- fromService,getPermission:i(async()=>{let[f,l]=await Promise.all([(0,w.getRegion)(),
78
- (0,w.getAccountId)()]);return{sourceArn:v(n,f,l),principal:"sns.amazonaws.com"}},
78
+ fromService,getPermission:i(async()=>{let[S,l]=await Promise.all([(0,w.getRegion)(),
79
+ (0,w.getAccountId)()]);return{sourceArn:v(n,S,l),principal:"sns.amazonaws.com"}},
79
80
  "getPermission")});p.push(c.entryId)}if((0,R.isQueueState)(r)){let c=(0,R.attachQueuePolicy)(
80
- e,r,t,{fromService:o.fromService,policyGetters:[async()=>{let[f,l]=await Promise.
81
+ e,r,t,{fromService:o.fromService,policyGetters:[async()=>{let[S,l]=await Promise.
81
82
  all([(0,w.getRegion)(),(0,w.getAccountId)()]);return{principal:"sns.amazonaws.co\
82
- m",sourceArn:v(n,f,l)}}]});p.push(c.entryId)}let s=(0,Le.hashData)(d,t.entryId,r.
83
+ m",sourceArn:v(n,S,l)}}]});p.push(c.entryId)}let s=(0,Le.hashData)(d,t.entryId,r.
83
84
  entryId);return(0,De.attachEntry)(e,{type:d,entryId:s,dependencies:p,parameters:{
84
- ...o,getTopicArn:i(c=>Z(S,s,c),"getTopicArn"),getEndpoint:i(c=>(0,g.isFunctionState)(
85
+ ...o,getTopicArn:i(c=>J(f,s,c),"getTopicArn"),getEndpoint:i(c=>(0,g.isFunctionState)(
85
86
  r)?(0,g.getFunctionArn)(a,s,c):(0,R.getQueueArn)(a,s,c),"getEndpoint")}})},"crea\
86
- teSubscription");var Me=require("@ez4/project/library"),$=require("@ez4/utils");var V=i((e,t)=>`${(0,$.toKebabCase)(e.name)}-${(0,$.toKebabCase)(t)}`,"getIntern\
87
+ teSubscription");var Me=require("@ez4/project/library"),$=require("@ez4/utils");var W=i((e,t)=>`${(0,$.toKebabCase)(e.name)}-${(0,$.toKebabCase)(t)}`,"getIntern\
87
88
  alName"),Oe=i((e,t,r)=>`${(0,Me.getServiceName)(e,r)}-${(0,$.toKebabCase)(t)}`,"\
88
89
  getFunctionName");var P=class extends Error{static{i(this,"RoleMissingError")}constructor(){super(
89
90
  "Execution role for SNS is missing.")}};var C;(o=>(o.LogRetention=90,o.Timeout=90,o.Memory=192))(C||={});var q=i((e,t,r,o,n)=>{if(!n.role||!(0,Y.isRoleState)(n.role))throw new P;for(let p of t.
90
91
  subscriptions)switch(p.type){default:throw new j.InvalidParameterError(a,"subscr\
91
92
  iption not supported.");case N.TopicSubscriptionType.Lambda:{if(t.fifoMode)throw new j.InvalidParameterError(
92
93
  a,"lambda subscription not supported for FIFO topics.");let{handler:s,listener:c}=p,
93
- f=V(t,s.name),l=(0,Q.tryGetFunctionState)(n,f,o);if(!l){let re=Oe(t,s.name,o),tt=n.
94
+ S=W(t,s.name),l=(0,Q.tryGetFunctionState)(n,S,o);if(!l){let re=Oe(t,s.name,o),tt=n.
94
95
  getDependencyFiles(s.file),rt=(0,ke.createLogGroup)(e,{retention:p.logRetention??
95
- C.LogRetention,groupName:re,tags:o.tags});l=W(e,n.role,rt,{functionName:re,description:s.
96
+ C.LogRetention,groupName:re,tags:o.tags});l=V(e,n.role,rt,{functionName:re,description:s.
96
97
  description,messageSchema:t.schema,timeout:p.timeout??C.Timeout,memory:p.memory??
97
- C.Memory,context:t.context,debug:o.debug,tags:o.tags,handler:{sourceFile:s.file,
98
- functionName:s.name,module:s.module,dependencies:tt},listener:c&&{functionName:c.
99
- name,sourceFile:c.file,module:c.module},variables:{...o.variables,...t.variables,
100
- ...p.variables}}),n.setServiceState(l,f,o)}k(e,r,l,{fromService:l.parameters.functionName});
101
- break}case N.TopicSubscriptionType.Queue:{let s=(0,ee.getQueueState)(n,p.service,
102
- o);k(e,r,s,{fromService:s.parameters.queueName});break}}},"prepareSubscriptions"),
103
- G=i((e,t,r,o)=>{if(!o.role||!(0,Y.isRoleState)(o.role))throw new P;for(let n of t.
104
- subscriptions)switch(n.type){default:throw new j.InvalidParameterError(a,"subscr\
105
- iption not supported.");case N.TopicSubscriptionType.Lambda:{let p=V(t,n.handler.
106
- name),s=(0,Q.getFunctionState)(o,p,r);(0,X.linkServiceContext)(e,s.entryId,t.context);
107
- break}case N.TopicSubscriptionType.Queue:{let p=(0,ee.getQueueState)(o,n.service,
108
- r);(0,X.linkServiceContext)(e,p.entryId,t.context);break}}},"connectSubscription\
109
- s");var $e=require("@ez4/project/library");var H=i((e,t,r)=>{let n=J(e,t.name,r).entryId,p=(0,$e.getDefinitionName)(n,"topi\
110
- cArn"),s=JSON.stringify(t.fifoMode??null),c=JSON.stringify(t.schema);return{connectionIds:[
111
- n],dependencyIds:[n],constructor:`make(${p}, ${c}, ${s})`,from:"@ez4/aws-topic/c\
112
- lient",module:"Client"}},"prepareLinkedClient");var Qe=i(e=>{let{service:t,options:r,context:o}=e;return(0,_.isTopicService)(t)?
98
+ C.Memory,context:t.context,debug:o.debug,tags:o.tags,variables:[o.variables,t.variables,
99
+ p.variables],handler:{sourceFile:s.file,functionName:s.name,module:s.module,dependencies:tt},
100
+ listener:c&&{functionName:c.name,sourceFile:c.file,module:c.module}}),n.setServiceState(
101
+ l,S,o)}k(e,r,l,{fromService:l.parameters.functionName});break}case N.TopicSubscriptionType.
102
+ Queue:{let s=(0,ee.getQueueState)(n,p.service,o);k(e,r,s,{fromService:s.parameters.
103
+ queueName});break}}},"prepareSubscriptions"),G=i((e,t,r,o)=>{if(!o.role||!(0,Y.isRoleState)(
104
+ o.role))throw new P;for(let n of t.subscriptions)switch(n.type){default:throw new j.InvalidParameterError(
105
+ a,"subscription not supported.");case N.TopicSubscriptionType.Lambda:{let p=W(t,
106
+ n.handler.name),s=(0,Q.getFunctionState)(o,p,r);(0,X.linkServiceContext)(e,s.entryId,
107
+ t.context);break}case N.TopicSubscriptionType.Queue:{let p=(0,ee.getQueueState)(
108
+ o,n.service,r);(0,X.linkServiceContext)(e,p.entryId,t.context);break}}},"connect\
109
+ Subscriptions");var $e=require("@ez4/project/library");var H=i((e,t,r)=>{let n=Z(e,t.name,r).entryId,p=(0,$e.getDefinitionName)(n,"topi\
110
+ cArn"),s=JSON.stringify(t.fifoMode??null),c=JSON.stringify(t.schema);return{module:"\
111
+ Client",from:"@ez4/aws-topic/client",constructor:`@{EZ4_MODULE_IMPORT}.make(${p}\
112
+ , ${c}, ${s})`,connectionIds:[n],dependencyIds:[n]}},"prepareLinkedClient");var Qe=i(e=>{let{service:t,options:r,context:o}=e;return(0,_.isTopicService)(t)?
113
113
  H(o,t,r):null},"prepareLinkedServices"),qe=i(e=>{let{state:t,service:r,options:o,
114
114
  context:n}=e;if(!(0,_.isTopicService)(r))return!1;let{fifoMode:p}=r,s=A(t,{topicName:(0,je.getServiceName)(
115
115
  r,o),fifoMode:!!p,tags:o.tags});return n.setServiceState(s,r,o),q(t,r,s,o,n),!0},
@@ -118,16 +118,16 @@ r)&&G(t,r,o,n)},"connectServices");var te=require("@ez4/project/library"),He=req
118
118
  let{project:n}=t,{imports:p}=r;if(!p||!p[n])throw new te.MissingImportedProjectError(
119
119
  n);return H(o,t,p[n])},"prepareLinkedImports"),Ue=i(e=>{let{state:t,service:r,options:o,
120
120
  context:n}=e;if(!(0,U.isTopicImport)(r))return!1;let{reference:p,project:s}=r,{imports:c}=o;
121
- if(!c||!c[s])throw new te.MissingImportedProjectError(s);let f=A(t,{topicName:(0,He.getServiceName)(
122
- p,c[s]),fifoMode:!!r.fifoMode,import:!0});return n.setServiceState(f,r,o),q(t,r,
123
- f,o,n),!0},"prepareImports"),Be=i(e=>{let{state:t,service:r,options:o,context:n}=e;
124
- (0,U.isTopicImport)(r)&&G(t,r,o,n)},"connectImports");var B=require("@ez4/topic/library"),K=require("@ez4/aws-identity"),Ke=require("@ez4/project/library");var Je=i(async e=>{let{state:t,serviceType:r,options:o}=e;if(r!==B.ServiceType&&
121
+ if(!c||!c[s])throw new te.MissingImportedProjectError(s);let S=A(t,{topicName:(0,He.getServiceName)(
122
+ p,c[s]),fifoMode:!!r.fifoMode,import:!0});return n.setServiceState(S,r,o),q(t,r,
123
+ S,o,n),!0},"prepareImports"),Be=i(e=>{let{state:t,service:r,options:o,context:n}=e;
124
+ (0,U.isTopicImport)(r)&&G(t,r,o,n)},"connectImports");var B=require("@ez4/topic/library"),K=require("@ez4/aws-identity"),Ke=require("@ez4/project/library");var Ze=i(async e=>{let{state:t,serviceType:r,options:o}=e;if(r!==B.ServiceType&&
125
125
  r!==B.ImportType)return null;let n=Object.values({options:o,...o.imports}).map(c=>(0,Ke.getServiceName)(
126
126
  "",c)),[p]=n,s=`${p}-topic-policy`;return(0,K.tryGetPolicy)(t,s)??(0,K.createPolicy)(
127
127
  t,{tags:o.tags,policyDocument:await oe(n),policyName:s})},"prepareExecutionPolic\
128
- y");var vt=i(()=>{(0,Ze.registerTriggers)(),(0,We.registerTriggers)(),(0,Ve.registerTriggers)(),
128
+ y");var vt=i(()=>{(0,Je.registerTriggers)(),(0,Ve.registerTriggers)(),(0,We.registerTriggers)(),
129
129
  (0,Xe.registerTriggers)(),(0,Ye.registerTriggers)(),(0,et.tryCreateTrigger)("@ez\
130
- 4/aws-topic",{"deploy:prepareExecutionPolicy":Je,"deploy:prepareLinkedService":Et,
130
+ 4/aws-topic",{"deploy:prepareExecutionPolicy":Ze,"deploy:prepareLinkedService":Et,
131
131
  "deploy:prepareResources":wt,"deploy:connectResources":Rt}),Se(),Ee()},"register\
132
132
  Triggers"),Et=i(e=>Qe(e)??_e(e)??null,"prepareLinkedService"),wt=i(e=>qe(e)||Ue(
133
133
  e),"prepareQueueResources"),Rt=i(e=>{Ge(e),Be(e)},"connectQueueResources");var At=i(e=>e.type===d,"isSubscriptionState");0&&(module.exports={SubscriptionServiceName,SubscriptionServiceType,TopicServiceName,
package/dist/main.mjs CHANGED
@@ -24,26 +24,26 @@ o,n)}}let{topicArn:r}=await $(t);return{topicArn:r}},"createResource"),Qe=i(asyn
24
24
  let{result:r,parameters:o}=e;r&&!o.import&&await Ge(r.topicArn,o,t.parameters)},
25
25
  "updateResource"),qe=i(async e=>{let{result:t,parameters:r}=e;t&&!r.import&&await j(
26
26
  t.topicArn)},"deleteResource"),Ge=i(async(e,t,r)=>{await ze(t.tags,r.tags,o=>Q(e,
27
- o),o=>q(e,o))},"checkTagUpdates");var _=i(()=>{He(f,G())},"registerTopicProvider");import{tryRegisterProvider as ot}from"@ez4/aws-common";import{ReplaceResourceError as We}from"@ez4/aws-common";import{deepCompare as Ve}from"@ez4/utils";import{InvalidParameterError as W,isArn as Je,parseArn as Ze}from"@ez4/aws-common";import{NotFoundException as _e,SNSClient as Ue,SubscribeCommand as Be,UnsubscribeCommand as Ke}from"@aws-sdk/client-sns";
28
- import{Logger as U,tryParseArn as B}from"@ez4/aws-common";var a="AWS:SNS/Subscription",l="aws:sns.subscription";var K=new Ue({});var J=i(async e=>{let t=B(e.topicArn)?.resourceName??e.topicArn;U.logCreate(a,t);
27
+ o),o=>q(e,o))},"checkTagUpdates");var _=i(()=>{He(f,G())},"registerTopicProvider");import{tryRegisterProvider as ot}from"@ez4/aws-common";import{ReplaceResourceError as Ve}from"@ez4/aws-common";import{deepCompare as We}from"@ez4/utils";import{InvalidParameterError as V,isArn as Ze,parseArn as Je}from"@ez4/aws-common";import{NotFoundException as _e,SNSClient as Ue,SubscribeCommand as Be,UnsubscribeCommand as Ke}from"@aws-sdk/client-sns";
28
+ import{Logger as U,tryParseArn as B}from"@ez4/aws-common";var a="AWS:SNS/Subscription",l="aws:sns.subscription";var K=new Ue({});var Z=i(async e=>{let t=B(e.topicArn)?.resourceName??e.topicArn;U.logCreate(a,t);
29
29
  let{topicArn:r,protocol:o,endpoint:n}=e;return{subscriptionArn:(await K.send(new Be(
30
30
  {TopicArn:r,Protocol:o,Endpoint:n,ReturnSubscriptionArn:!0,Attributes:{...o==="s\
31
- qs"&&{RawMessageDelivery:"true"}}}))).SubscriptionArn}},"createSubscription"),Z=i(
31
+ qs"&&{RawMessageDelivery:"true"}}}))).SubscriptionArn}},"createSubscription"),J=i(
32
32
  async e=>{let t=B(e)?.resourceName??e;U.logDelete(a,t);try{return await K.send(new Ke(
33
33
  {SubscriptionArn:e})),!0}catch(r){if(!(r instanceof _e))throw r;return!1}},"dele\
34
- teSubscription");var V=i((e,t)=>{if(!Je(t))throw new W(e,`endpoint ${t} is not supported.`);let{service:r}=Ze(
35
- t);switch(r){case"lambda":case"sqs":return r}throw new W(e,`protocol ${r} is not\
34
+ teSubscription");var W=i((e,t)=>{if(!Ze(t))throw new V(e,`endpoint ${t} is not supported.`);let{service:r}=Je(
35
+ t);switch(r){case"lambda":case"sqs":return r}throw new V(e,`protocol ${r} is not\
36
36
  supported.`)},"getSubscriptionProtocol");var X=i(()=>({equals:Xe,create:Y,replace:et,preview:Ye,update:tt,delete:rt}),"ge\
37
37
  tSubscriptionHandler"),Xe=i((e,t)=>!!e.result&&e.result.subscriptionArn===t.result?.
38
38
  subscriptionArn,"equalsResource"),Ye=i((e,t)=>{let r={...e.parameters,dependencies:e.
39
- dependencies},o={...t.parameters,dependencies:t.dependencies},n=Ve(r,o,{exclude:{
39
+ dependencies},o={...t.parameters,dependencies:t.dependencies},n=We(r,o,{exclude:{
40
40
  getTopicArn:!0,getEndpoint:!0}});if(n.counts)return{...n,name:r.fromService}},"p\
41
- reviewResource"),et=i(async(e,t,r)=>{if(t.result)throw new We(a,e.entryId,t.entryId);
41
+ reviewResource"),et=i(async(e,t,r)=>{if(t.result)throw new Ve(a,e.entryId,t.entryId);
42
42
  return Y(e,r)},"replaceResource"),Y=i(async(e,t)=>{let r=e.parameters,[o,n]=await Promise.
43
- all([r.getTopicArn(t),r.getEndpoint(t)]),{subscriptionArn:p}=await J({protocol:V(
43
+ all([r.getTopicArn(t),r.getEndpoint(t)]),{subscriptionArn:p}=await Z({protocol:W(
44
44
  a,n),topicArn:o,endpoint:n});return{subscriptionArn:p,topicArn:o,endpoint:n}},"c\
45
45
  reateResource"),tt=i(async()=>{},"updateResource"),rt=i(async e=>{let{result:t}=e;
46
- t&&await Z(t.subscriptionArn)},"deleteResource");var ee=i(()=>{ot(l,X())},"registerSubscriptionProvider");import{isTopicService as D}from"@ez4/topic/library";import{getServiceName as Nt}from"@ez4/project/library";import{attachEntry as st}from"@ez4/stateful";import{toKebabCase as ct}from"@ez4/utils";import{IncompleteResourceError as it}from"@ez4/aws-common";import{hashData as nt,
46
+ t&&await J(t.subscriptionArn)},"deleteResource");var ee=i(()=>{ot(l,X())},"registerSubscriptionProvider");import{isTopicService as D}from"@ez4/topic/library";import{getServiceName as Nt}from"@ez4/project/library";import{attachEntry as st}from"@ez4/stateful";import{toKebabCase as ct}from"@ez4/utils";import{IncompleteResourceError as it}from"@ez4/aws-common";import{hashData as nt,
47
47
  toKebabCase as pt}from"@ez4/utils";var x=class extends Error{static{i(this,"TopicNotFoundError")}constructor(t){super(
48
48
  `Topic service ${t} wasn't found.`)}};var C=i((e,t=!0)=>nt(f,t?pt(e):e),"createTopicStateId"),N=i(e=>e.type===f,"isTop\
49
49
  icState"),te=i((e,t,r)=>{let o=e.getServiceState(t,r);if(!N(o))throw new x(t);return o},
@@ -57,13 +57,14 @@ import{createLogGroup as Pt}from"@ez4/aws-logs";import{getQueueState as ue}from"
57
57
  import{MappingServiceName as ut}from"@ez4/aws-function";import{getFunctionBundle as St}from"@ez4/aws-common";var oe=i(async(e,t)=>{let{handler:r,listener:o,messageSchema:n,context:p,debug:s}=e,
58
58
  c=mt(t);return St(ut,{templateFile:at(import.meta.dirname,"../lib/message.ts"),filePrefix:"\
59
59
  sns",define:{...c,__EZ4_SCHEMA:n?JSON.stringify(n):"undefined"},handler:r,listener:o,
60
- context:p,debug:s})},"bundleSubscriptionFunction");var ie=i((e,t,r,o)=>{let{handler:n,messageSchema:p}=o;return ft(e,t,r,{handlerName:"\
61
- snsEntryPoint",sourceFile:n.sourceFile,functionName:o.functionName,description:o.
62
- description,variables:o.variables,timeout:o.timeout,memory:o.memory,debug:o.debug,
63
- tags:o.tags,getFunctionFiles:i(()=>[n.sourceFile,n.dependencies],"getFunctionFil\
64
- es"),getFunctionBundle:i(s=>oe(o,[...s.getDependencies(),...s.getConnections()]),
65
- "getFunctionBundle"),getFunctionHash:i(()=>lt({messageSchema:p}),"getFunctionHas\
66
- h")})},"createSubscriptionFunction");import{createPermission as yt,getFunctionArn as gt,getPermission as dt,isFunctionState as ne}from"@ez4/aws-function";
60
+ context:p,debug:s})},"bundleSubscriptionFunction");var ie=i((e,t,r,o)=>{let{handler:n,variables:p,messageSchema:s}=o;return ft(e,t,
61
+ r,{handlerName:"snsEntryPoint",sourceFile:n.sourceFile,functionName:o.functionName,
62
+ description:o.description,timeout:o.timeout,memory:o.memory,debug:o.debug,tags:o.
63
+ tags,getFunctionVariables:i(()=>p.reduce((c,m)=>({...c,...m}),{}),"getFunctionVa\
64
+ riables"),getFunctionFiles:i(()=>[n.sourceFile,n.dependencies],"getFunctionFiles"),
65
+ getFunctionBundle:i(c=>oe(o,[...c.getDependencies(),...c.getConnections()]),"get\
66
+ FunctionBundle"),getFunctionHash:i(()=>lt({messageSchema:s}),"getFunctionHash")})},
67
+ "createSubscriptionFunction");import{createPermission as yt,getFunctionArn as gt,getPermission as dt,isFunctionState as ne}from"@ez4/aws-function";
67
68
  import{attachQueuePolicy as Tt,getQueueArn as bt,isQueueState as xt}from"@ez4/aws-queue";
68
69
  import{getAccountId as pe,getRegion as se}from"@ez4/aws-identity";import{attachEntry as vt}from"@ez4/stateful";
69
70
  import{hashData as Et}from"@ez4/utils";var I=i((e,t,r,o)=>{let n=t.parameters.topicName,p=[t.entryId,r.entryId];if(ne(r)){
@@ -83,9 +84,9 @@ let{handler:s,listener:c}=p,m=F(t,s.name),u=At(n,m,o);if(!u){let M=ce(t,s.name,o
83
84
  xe=n.getDependencyFiles(s.file),ve=Pt(e,{retention:p.logRetention??d.LogRetention,
84
85
  groupName:M,tags:o.tags});u=ie(e,n.role,ve,{functionName:M,description:s.description,
85
86
  messageSchema:t.schema,timeout:p.timeout??d.Timeout,memory:p.memory??d.Memory,context:t.
86
- context,debug:o.debug,tags:o.tags,handler:{sourceFile:s.file,functionName:s.name,
87
- module:s.module,dependencies:xe},listener:c&&{functionName:c.name,sourceFile:c.file,
88
- module:c.module},variables:{...o.variables,...t.variables,...p.variables}}),n.setServiceState(
87
+ context,debug:o.debug,tags:o.tags,variables:[o.variables,t.variables,p.variables],
88
+ handler:{sourceFile:s.file,functionName:s.name,module:s.module,dependencies:xe},
89
+ listener:c&&{functionName:c.name,sourceFile:c.file,module:c.module}}),n.setServiceState(
89
90
  u,m,o)}I(e,r,u,{fromService:u.parameters.functionName});break}case E.Queue:{let s=ue(
90
91
  n,p.service,o);I(e,r,s,{fromService:s.parameters.queueName});break}}},"prepareSu\
91
92
  bscriptions"),R=i((e,t,r,o)=>{if(!o.role||!me(o.role))throw new g;for(let n of t.
@@ -93,9 +94,9 @@ subscriptions)switch(n.type){default:throw new z(a,"subscription not supported."
93
94
  Lambda:{let p=F(t,n.handler.name),s=Rt(o,p,r);ae(e,s.entryId,t.context);break}case E.
94
95
  Queue:{let p=ue(o,n.service,r);ae(e,p.entryId,t.context);break}}},"connectSubscr\
95
96
  iptions");import{getDefinitionName as Ct}from"@ez4/project/library";var A=i((e,t,r)=>{let n=te(e,t.name,r).entryId,p=Ct(n,"topicArn"),s=JSON.stringify(
96
- t.fifoMode??null),c=JSON.stringify(t.schema);return{connectionIds:[n],dependencyIds:[
97
- n],constructor:`make(${p}, ${c}, ${s})`,from:"@ez4/aws-topic/client",module:"Cli\
98
- ent"}},"prepareLinkedClient");var Se=i(e=>{let{service:t,options:r,context:o}=e;return D(t)?A(o,t,r):null},"pr\
97
+ t.fifoMode??null),c=JSON.stringify(t.schema);return{module:"Client",from:"@ez4/a\
98
+ ws-topic/client",constructor:`@{EZ4_MODULE_IMPORT}.make(${p}, ${c}, ${s})`,connectionIds:[
99
+ n],dependencyIds:[n]}},"prepareLinkedClient");var Se=i(e=>{let{service:t,options:r,context:o}=e;return D(t)?A(o,t,r):null},"pr\
99
100
  epareLinkedServices"),fe=i(e=>{let{state:t,service:r,options:o,context:n}=e;if(!D(
100
101
  r))return!1;let{fifoMode:p}=r,s=v(t,{topicName:Nt(r,o),fifoMode:!!p,tags:o.tags});
101
102
  return n.setServiceState(s,r,o),w(t,r,s,o,n),!0},"prepareServices"),le=i(e=>{let{
@@ -1,5 +1,5 @@
1
+ import type { FunctionParameters, FunctionVariables } from '@ez4/aws-function';
1
2
  import type { TopicMessageSchema } from '@ez4/topic/library';
2
- import type { FunctionParameters } from '@ez4/aws-function';
3
3
  import type { ContextSource } from '@ez4/project/library';
4
4
  export type SubscriptionFunction = {
5
5
  functionName: string;
@@ -9,10 +9,11 @@ export type SubscriptionFunction = {
9
9
  export type SubscriptionEntryPoint = SubscriptionFunction & {
10
10
  dependencies: string[];
11
11
  };
12
- export type SubscriptionFunctionParameters = Omit<FunctionParameters, 'getFunctionFiles' | 'getFunctionBundle' | 'getFunctionHash' | 'sourceFile' | 'handlerName'> & {
12
+ export type SubscriptionFunctionParameters = Omit<FunctionParameters, 'getFunctionFiles' | 'getFunctionBundle' | 'getFunctionHash' | 'getFunctionVariables' | 'sourceFile' | 'handlerName'> & {
13
13
  handler: SubscriptionEntryPoint;
14
14
  listener?: SubscriptionFunction;
15
15
  messageSchema?: TopicMessageSchema;
16
16
  context?: Record<string, ContextSource>;
17
+ variables: (FunctionVariables | undefined)[];
17
18
  debug?: boolean;
18
19
  };
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.36.0",
4
+ "version": "0.37.0",
5
5
  "author": "Silas B.",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -51,18 +51,18 @@
51
51
  },
52
52
  "dependencies": {
53
53
  "@aws-sdk/client-sns": "^3.913.0",
54
- "@ez4/aws-common": "^0.36.0",
55
- "@ez4/aws-identity": "^0.36.0",
56
- "@ez4/aws-function": "^0.36.0",
57
- "@ez4/aws-logs": "^0.36.0",
58
- "@ez4/aws-queue": "^0.36.0",
59
- "@ez4/topic": "^0.36.0",
60
- "@ez4/project": "^0.36.0",
61
- "@ez4/queue": "^0.36.0",
62
- "@ez4/schema": "^0.36.0",
63
- "@ez4/stateful": "^0.36.0",
64
- "@ez4/transform": "^0.36.0",
65
- "@ez4/validator": "^0.36.0",
66
- "@ez4/utils": "^0.36.0"
54
+ "@ez4/aws-common": "^0.37.0",
55
+ "@ez4/aws-identity": "^0.37.0",
56
+ "@ez4/aws-function": "^0.37.0",
57
+ "@ez4/aws-logs": "^0.37.0",
58
+ "@ez4/aws-queue": "^0.37.0",
59
+ "@ez4/topic": "^0.37.0",
60
+ "@ez4/project": "^0.37.0",
61
+ "@ez4/queue": "^0.37.0",
62
+ "@ez4/schema": "^0.37.0",
63
+ "@ez4/stateful": "^0.37.0",
64
+ "@ez4/transform": "^0.37.0",
65
+ "@ez4/validator": "^0.37.0",
66
+ "@ez4/utils": "^0.37.0"
67
67
  }
68
68
  }