@steedos/service-metadata-triggers 2.1.52 → 2.1.56

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.
@@ -14,8 +14,84 @@ function cacherKey(apiName, when, name) {
14
14
  let key = `$steedos.#${exports.METADATA_TYPE}.${apiName}.${when}.${name}`;
15
15
  return key;
16
16
  }
17
- function getDelKey(metadataApiName) {
18
- return `$steedos.#${exports.METADATA_TYPE}.${metadataApiName}`;
17
+ function getDelKey(metadataType, metadataApiName) {
18
+ return `$steedos.#${metadataType}.${metadataApiName}`;
19
+ }
20
+ function getPatternTriggerKey(when, name) {
21
+ if (!when) {
22
+ when = '*';
23
+ }
24
+ if (!name) {
25
+ name = '*';
26
+ }
27
+ let key = `$steedos.#${exports.METADATA_TYPE}-pattern.${when}.${name}`;
28
+ return key;
29
+ }
30
+ function isPatternTrigger(data) {
31
+ const { listenTo } = data;
32
+ if (listenTo === '*') {
33
+ return true;
34
+ }
35
+ else if (_.isArray(listenTo)) {
36
+ return true;
37
+ }
38
+ else if (_.isRegExp(listenTo)) {
39
+ return true;
40
+ }
41
+ else if (_.isString(listenTo) && listenTo.startsWith("/")) {
42
+ try {
43
+ if (_.isRegExp(eval(listenTo))) {
44
+ return true;
45
+ }
46
+ }
47
+ catch (error) {
48
+ return false;
49
+ }
50
+ return false;
51
+ }
52
+ return false;
53
+ }
54
+ function registerPatternTrigger(broker, data, meta, item) {
55
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
56
+ yield broker.call('metadata.addServiceMetadata', { data: data }, { meta: Object.assign({}, meta, { metadataType: `${exports.METADATA_TYPE}-pattern`, metadataApiName: `${item}.${data.name}` }) });
57
+ yield broker.call('metadata.add', { key: getPatternTriggerKey(item, data.name), data: data }, { meta: meta });
58
+ });
59
+ }
60
+ function getPatternTriggers(ctx) {
61
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
62
+ const patternTriggers = [];
63
+ const { objectApiName, when, name } = ctx.params;
64
+ const result = yield ctx.broker.call('metadata.filter', { key: getPatternTriggerKey(when, name) }, { meta: ctx.meta });
65
+ _.each(result, (item) => {
66
+ if (item && item.metadata) {
67
+ const { metadata } = item;
68
+ try {
69
+ if (metadata.listenTo === '*') {
70
+ patternTriggers.push(item);
71
+ }
72
+ else if (_.isArray(metadata.listenTo) && _.include(metadata.listenTo, objectApiName)) {
73
+ patternTriggers.push(item);
74
+ }
75
+ else if (_.isRegExp(metadata.listenTo) && metadata.listenTo.test(objectApiName)) {
76
+ patternTriggers.push(item);
77
+ }
78
+ else if (_.isString(metadata.listenTo) && metadata.listenTo.startsWith("/")) {
79
+ try {
80
+ if (_.isRegExp(eval(metadata.listenTo)) && eval(metadata.listenTo).test(objectApiName)) {
81
+ patternTriggers.push(item);
82
+ }
83
+ }
84
+ catch (error) {
85
+ }
86
+ }
87
+ }
88
+ catch (error) {
89
+ console.log(`error`, error);
90
+ }
91
+ }
92
+ });
93
+ return patternTriggers;
94
+ });
19
95
  }
20
96
  function registerTrigger(broker, data, meta) {
21
97
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
@@ -27,8 +103,13 @@ function registerTrigger(broker, data, meta) {
27
103
  when = data.when;
28
104
  }
29
105
  for (const item of when) {
30
- yield broker.call('metadata.addServiceMetadata', { data: data }, { meta: Object.assign({}, meta, { metadataType: exports.METADATA_TYPE, metadataApiName: `${data.listenTo}.${item}.${data.name}` }) });
31
- yield broker.call('metadata.add', { key: cacherKey(data.listenTo, item, data.name), data: data }, { meta: meta });
106
+ if (isPatternTrigger(data)) {
107
+ yield registerPatternTrigger(broker, data, meta, item);
108
+ }
109
+ else {
110
+ yield broker.call('metadata.addServiceMetadata', { data: data }, { meta: Object.assign({}, meta, { metadataType: exports.METADATA_TYPE, metadataApiName: `${data.listenTo}.${item}.${data.name}` }) });
111
+ yield broker.call('metadata.add', { key: cacherKey(data.listenTo, item, data.name), data: data }, { meta: meta });
112
+ }
32
113
  }
33
114
  return true;
34
115
  });
@@ -41,7 +122,10 @@ exports.ActionHandlers = {
41
122
  },
42
123
  filter(ctx) {
43
124
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
44
- return ctx.broker.call('metadata.filter', { key: cacherKey(ctx.params.objectApiName, ctx.params.when, ctx.params.name) }, { meta: ctx.meta });
125
+ const result = yield ctx.broker.call('metadata.filter', { key: cacherKey(ctx.params.objectApiName, ctx.params.when, ctx.params.name) }, { meta: ctx.meta });
126
+ //get Pattern Triggers
127
+ const patternTriggers = yield getPatternTriggers(ctx);
128
+ return result.concat(patternTriggers);
45
129
  });
46
130
  },
47
131
  add(ctx) {
@@ -82,13 +166,13 @@ exports.ActionHandlers = {
82
166
  refresh(ctx) {
83
167
  var e_1, _a;
84
168
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
85
- const { isClear, metadataApiNames } = ctx.params;
169
+ const { isClear, metadataApiNames, metadataType } = ctx.params;
86
170
  if (isClear) {
87
171
  try {
88
172
  for (var metadataApiNames_1 = tslib_1.__asyncValues(metadataApiNames), metadataApiNames_1_1; metadataApiNames_1_1 = yield metadataApiNames_1.next(), !metadataApiNames_1_1.done;) {
89
173
  const metadataApiName = metadataApiNames_1_1.value;
90
174
  try {
91
- yield ctx.broker.call('metadata.delete', { key: getDelKey(metadataApiName) }, { meta: ctx.meta });
175
+ yield ctx.broker.call('metadata.delete', { key: getDelKey(metadataType, metadataApiName) }, { meta: ctx.meta });
92
176
  }
93
177
  catch (error) {
94
178
  ctx.broker.logger.info(error.message);
@@ -1 +1 @@
1
- {"version":3,"file":"actionsHandler.js","sourceRoot":"","sources":["../src/actionsHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actionsHandler.js","sourceRoot":"","sources":["../src/actionsHandler.ts"],"names":[],"mappings":"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"}
@@ -166,6 +166,13 @@ module.exports = {
166
166
  return yield actionsHandler_1.ActionHandlers.refresh(ctx);
167
167
  });
168
168
  }
169
+ },
170
+ [`$METADATA.${actionsHandler_1.METADATA_TYPE}-pattern.*`]: {
171
+ handler(ctx) {
172
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
173
+ return yield actionsHandler_1.ActionHandlers.refresh(ctx);
174
+ });
175
+ }
169
176
  }
170
177
  },
171
178
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"triggers.service.js","sourceRoot":"","sources":["../src/triggers.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"triggers.service.js","sourceRoot":"","sources":["../src/triggers.service.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AACb,qDAAiE;AAEjE,MAAM,CAAC,OAAO,GAAG;IAChB,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,SAAS;IACpB;;OAEG;IACH,QAAQ,EAAE;QACT,eAAe;QACf,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI;QAE9B,aAAa;QACb,EAAE,EAAE,SAAS;QAEb,6GAA6G;QAC7G,GAAG,EAAE,EAAE;QAEP,MAAM,EAAE;YACP;gBACC,IAAI,EAAE,MAAM;gBAEZ,SAAS,EAAE;oBACV,IAAI;iBACJ;gBAED,kHAAkH;gBAClH,GAAG,EAAE,EAAE;gBAEP,8HAA8H;gBAC9H,WAAW,EAAE,IAAI;gBAEjB,2JAA2J;gBAC3J,cAAc,EAAE,KAAK;gBAErB,sJAAsJ;gBACtJ,aAAa,EAAE,KAAK;gBAEpB,2FAA2F;gBAC3F,0EAA0E;gBAC1E,WAAW,EAAE,IAAI;gBAEjB,OAAO,EAAE,EAER;gBAED;;;;;;;;;;;qBAWK;gBAEL;;;;;;;;;;qBAUK;gBAEL,sGAAsG;gBACtG,cAAc,EAAE,EAAE;gBAElB,WAAW,EAAE;oBACZ,IAAI,EAAE;wBACL,MAAM,EAAE,KAAK;wBACb,KAAK,EAAE,KAAK;qBACZ;oBACD,UAAU,EAAE;wBACX,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,KAAK;qBACZ;iBACD;gBAED,4GAA4G;gBAC5G,aAAa,EAAE,KAAK;gBAEpB,yBAAyB;gBACzB,OAAO,EAAE,IAAI;aACb;SACD;QAED,mGAAmG;QACnG,eAAe,EAAE,KAAK;QACtB,iFAAiF;QACjF,gBAAgB,EAAE,IAAI;QACtB,4EAA4E;QAC5E,eAAe,EAAE,IAAI;QAGrB,2HAA2H;QAC3H,MAAM,EAAE;YACP,MAAM,EAAE,QAAQ;YAEhB,oCAAoC;YACpC,OAAO,EAAE,EAAE;SACX;KACD;IAED;;OAEG;IACH,YAAY,EAAE,CAAC,UAAU,CAAC;IAE1B;;OAEG;IACH,OAAO,EAAE;QACR;;;;WAIS;QACH,GAAG,EAAE;YACD,IAAI,EAAE;gBACF,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,MAAM;aACf;YACV,MAAM,EAAE;gBACP,aAAa,EAAE,QAAQ;gBACvB,IAAI,EAAC,QAAQ;gBACb,IAAI,EAAC,QAAQ;aACb;YACc,OAAO,CAAC,GAAG;;oBACb,OAAO,MAAM,+BAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzC,CAAC;aAAA;SACJ;QACP,MAAM,EAAE;YACP,MAAM,EAAE;gBACP,aAAa,EAAE,QAAQ;gBACvB,IAAI,EAAC,QAAQ;aACb;YACc,OAAO,CAAC,GAAG;;oBACb,OAAO,MAAM,+BAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC5C,CAAC;aAAA;SACJ;QACD,GAAG,EAAE;YACV,MAAM,EAAE;gBACP,IAAI,EAAE,QAAQ;aACd;YACc,OAAO,CAAC,GAAG;;oBACb,OAAO,MAAM,+BAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzC,CAAC;aAAA;SACJ;QACD,MAAM,EAAE;YACb,MAAM,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,QAAQ;aACjB;YACc,OAAO,CAAC,GAAG;;oBACb,OAAO,MAAM,+BAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC5C,CAAC;aAAA;SACJ;QACD,MAAM,EAAE;YACb,MAAM,EAAE;gBACP,IAAI,EAAE,QAAQ;aACd;YACc,OAAO,CAAC,GAAG;;oBACb,OAAO,MAAM,+BAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC5C,CAAC;aAAA;SACJ;KACP;IAED,MAAM,EAAE;QACP,CAAC,aAAa,8BAAa,IAAI,CAAC,EAAE;YAClB,OAAO,CAAC,GAAG;;oBACb,OAAO,MAAM,+BAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7C,CAAC;aAAA;SACJ;QACP,CAAC,aAAa,8BAAa,YAAY,CAAC,EAAE;YAC1B,OAAO,CAAC,GAAG;;oBACb,OAAO,MAAM,+BAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7C,CAAC;aAAA;SACJ;KACP;IAED;;OAEG;IACH,OAAO,EAAE,EAER;IAED;;OAEG;IACG,OAAO;;YACZ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAEhB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QAC1B,CAAC;KAAA;IAED;;OAEG;IACG,OAAO;;QAEb,CAAC;KAAA;IAED;;OAEG;IACG,OAAO;;QAEb,CAAC;KAAA;CACD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-metadata-triggers",
3
- "version": "2.1.52",
3
+ "version": "2.1.56",
4
4
  "description": "",
5
5
  "main": "lib/triggers.service.js",
6
6
  "scripts": {
@@ -41,5 +41,5 @@
41
41
  "publishConfig": {
42
42
  "access": "public"
43
43
  },
44
- "gitHead": "cc48f943b363921f18933d1e9d5d77dd5cb2185c"
44
+ "gitHead": "a8eed2e9927d67c38df80be1474cb6b7f5b0159c"
45
45
  }
@@ -29,8 +29,76 @@ function cacherKey(apiName: string, when: string, name: string): string{
29
29
  return key
30
30
  }
31
31
 
32
- function getDelKey(metadataApiName: string){
33
- return `$steedos.#${METADATA_TYPE}.${metadataApiName}`;
32
+ function getDelKey(metadataType, metadataApiName: string){
33
+ return `$steedos.#${metadataType}.${metadataApiName}`;
34
+ }
35
+
36
+ function getPatternTriggerKey( when: string, name: string): string{
37
+ if(!when){
38
+ when = '*'
39
+ }
40
+ if(!name){
41
+ name = '*'
42
+ }
43
+ let key = `$steedos.#${METADATA_TYPE}-pattern.${when}.${name}`;
44
+ return key
45
+ }
46
+
47
+ function isPatternTrigger(data){
48
+ const {listenTo} = data;
49
+ if(listenTo === '*'){
50
+ return true;
51
+ }else if(_.isArray(listenTo)){
52
+ return true;
53
+ }else if(_.isRegExp(listenTo)){
54
+ return true;
55
+ }else if(_.isString(listenTo) && listenTo.startsWith("/")){
56
+ try {
57
+ if(_.isRegExp(eval(listenTo))){
58
+ return true;
59
+ }
60
+ } catch (error) {
61
+ return false
62
+ }
63
+ return false;
64
+ }
65
+ return false;
66
+ }
67
+
68
+ async function registerPatternTrigger(broker, data, meta, item){
69
+ await broker.call('metadata.addServiceMetadata', {data: data}, {meta: Object.assign({}, meta, {metadataType: `${METADATA_TYPE}-pattern`, metadataApiName: `${item}.${data.name}`})})
70
+ await broker.call('metadata.add', {key: getPatternTriggerKey(item, data.name), data: data}, {meta: meta});
71
+ }
72
+
73
+ async function getPatternTriggers(ctx){
74
+ const patternTriggers = [];
75
+ const {objectApiName, when , name } = ctx.params;
76
+ const result = await ctx.broker.call('metadata.filter', {key: getPatternTriggerKey(when, name)}, {meta: ctx.meta});
77
+
78
+ _.each(result, (item)=>{
79
+ if(item && item.metadata){
80
+ const { metadata } = item
81
+ try {
82
+ if(metadata.listenTo === '*'){
83
+ patternTriggers.push(item);
84
+ }else if(_.isArray(metadata.listenTo) && _.include(metadata.listenTo, objectApiName)){
85
+ patternTriggers.push(item);
86
+ }else if(_.isRegExp(metadata.listenTo) && metadata.listenTo.test(objectApiName)){
87
+ patternTriggers.push(item);
88
+ }else if(_.isString(metadata.listenTo) && metadata.listenTo.startsWith("/")){
89
+ try {
90
+ if(_.isRegExp(eval(metadata.listenTo)) && eval(metadata.listenTo).test(objectApiName)){
91
+ patternTriggers.push(item);
92
+ }
93
+ } catch (error) {
94
+ }
95
+ }
96
+ } catch (error) {
97
+ console.log(`error`, error);
98
+ }
99
+ }
100
+ })
101
+ return patternTriggers;
34
102
  }
35
103
 
36
104
  async function registerTrigger(broker, data, meta){
@@ -41,8 +109,12 @@ async function registerTrigger(broker, data, meta){
41
109
  when = data.when;
42
110
  }
43
111
  for (const item of when) {
44
- await broker.call('metadata.addServiceMetadata', {data: data}, {meta: Object.assign({}, meta, {metadataType: METADATA_TYPE, metadataApiName: `${data.listenTo}.${item}.${data.name}`})})
45
- await broker.call('metadata.add', {key: cacherKey(data.listenTo, item, data.name), data: data}, {meta: meta});
112
+ if(isPatternTrigger(data)){
113
+ await registerPatternTrigger(broker, data, meta, item)
114
+ }else{
115
+ await broker.call('metadata.addServiceMetadata', {data: data}, {meta: Object.assign({}, meta, {metadataType: METADATA_TYPE, metadataApiName: `${data.listenTo}.${item}.${data.name}`})})
116
+ await broker.call('metadata.add', {key: cacherKey(data.listenTo, item, data.name), data: data}, {meta: meta});
117
+ }
46
118
  }
47
119
  return true
48
120
  }
@@ -52,7 +124,10 @@ export const ActionHandlers = {
52
124
  return ctx.broker.call('metadata.get', {key: cacherKey(ctx.params.objectApiName, ctx.params.when, ctx.params.name)}, {meta: ctx.meta})
53
125
  },
54
126
  async filter(ctx: any): Promise<Array<MetadataObject>> {
55
- return ctx.broker.call('metadata.filter', {key: cacherKey(ctx.params.objectApiName, ctx.params.when, ctx.params.name)}, {meta: ctx.meta})
127
+ const result = await ctx.broker.call('metadata.filter', {key: cacherKey(ctx.params.objectApiName, ctx.params.when, ctx.params.name)}, {meta: ctx.meta});
128
+ //get Pattern Triggers
129
+ const patternTriggers = await getPatternTriggers(ctx);
130
+ return result.concat(patternTriggers);
56
131
  },
57
132
  async add(ctx: any): Promise<boolean>{
58
133
  return await registerTrigger(ctx.broker, ctx.params.data, ctx.meta)
@@ -81,11 +156,11 @@ export const ActionHandlers = {
81
156
  return true;
82
157
  },
83
158
  async refresh(ctx){
84
- const { isClear, metadataApiNames } = ctx.params
159
+ const { isClear, metadataApiNames, metadataType } = ctx.params
85
160
  if(isClear){
86
161
  for await (const metadataApiName of metadataApiNames) {
87
162
  try {
88
- await ctx.broker.call('metadata.delete', {key: getDelKey(metadataApiName)}, {meta: ctx.meta})
163
+ await ctx.broker.call('metadata.delete', {key: getDelKey(metadataType, metadataApiName)}, {meta: ctx.meta})
89
164
  } catch (error) {
90
165
  ctx.broker.logger.info(error.message)
91
166
  }
@@ -178,6 +178,11 @@ module.exports = {
178
178
  async handler(ctx) {
179
179
  return await ActionHandlers.refresh(ctx);
180
180
  }
181
+ },
182
+ [`$METADATA.${METADATA_TYPE}-pattern.*`]: {
183
+ async handler(ctx) {
184
+ return await ActionHandlers.refresh(ctx);
185
+ }
181
186
  }
182
187
  },
183
188