@live-change/framework 0.5.24 → 0.6.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/lib/App.js CHANGED
@@ -192,16 +192,16 @@ class App {
192
192
  console.log("TRIGGER ROUTES", data.type, '=>', routes)
193
193
  let promises = []
194
194
  for(const route of routes) {
195
- promises.push(this.triggerService(route.service, { ...data }))
195
+ promises.push(this.triggerService(route.service, { ...data }, true))
196
196
  }
197
197
  const promise = Promise.all(promises)
198
198
  await this.profileLog.endPromise(profileOp, promise)
199
- const result = await promise
199
+ const result = (await promise).flat()
200
200
  console.log("TRIGGER FINISHED!", result)
201
201
  return result
202
202
  }
203
203
 
204
- async triggerService(service, data) {
204
+ async triggerService(service, data, returnArray = false) {
205
205
 
206
206
  if(!data.id) data.id = this.generateUid()
207
207
  data.service = service
@@ -233,7 +233,10 @@ class App {
233
233
  objectObservable.unobserve(observer)
234
234
  })
235
235
  await this.profileLog.endPromise(profileOp, promise)
236
- return promise
236
+
237
+ const result = await promise
238
+ if(!returnArray && Array.isArray(result) && result.length == 1) return result[0]
239
+ return result
237
240
  }
238
241
 
239
242
  async command(data, requestTimeout) {
@@ -23,4 +23,6 @@ module.exports = function(service, definition, app) {
23
23
  delete definition.foreignIndexes
24
24
  delete definition.config
25
25
  delete definition.indexes
26
+ delete definition.endpoints
27
+ delete definition.beforeStartCallbacks
26
28
  }
@@ -85,6 +85,7 @@ class ServiceDefinition {
85
85
  this.processors = []
86
86
  this.authenticators = []
87
87
  this.beforeStartCallbacks = []
88
+ this.endpoints = []
88
89
  this.validators = defaultValidators
89
90
  for(let key in definition) this[key] = definition[key]
90
91
  }
@@ -133,7 +134,8 @@ class ServiceDefinition {
133
134
 
134
135
  trigger(definition) {
135
136
  const trigger = new TriggerDefinition(definition)
136
- this.triggers[trigger.name] = trigger
137
+ //if(this.triggers[trigger.name]) throw new Error('trigger ' + trigger.name + ' already exists')
138
+ this.triggers[trigger.name] = [ ...(this.triggers[trigger.name] || []) , trigger ]
137
139
  return trigger
138
140
  }
139
141
 
@@ -149,6 +151,10 @@ class ServiceDefinition {
149
151
  this.beforeStartCallbacks.push(callback)
150
152
  }
151
153
 
154
+ endpoint(endpoint) {
155
+ this.endpoints.push(endpoint)
156
+ }
157
+
152
158
  toJSON() {
153
159
  let models = {}
154
160
  for(let key in this.models) models[key] = this.models[key].toJSON()
@@ -165,7 +171,7 @@ class ServiceDefinition {
165
171
  let views = {}
166
172
  for(let key in this.views) views[key] = this.views[key].toJSON()
167
173
  let triggers = {}
168
- for(let key in this.triggers) triggers[key] = this.triggers[key].toJSON()
174
+ for(let key in this.triggers) triggers[key] = this.triggers[key].map(t=>t.toJSON())
169
175
  return {
170
176
  ...this,
171
177
  _runtime: undefined,
@@ -7,28 +7,35 @@ class TriggerHandler {
7
7
  this.service = service
8
8
  }
9
9
 
10
- async execute(parameters, emit) {
10
+ async executeSingleTrigger(definition, parameters, emit) {
11
11
  //console.log("PARAMETERS", JSON.stringify(parameters), "DEFN", this.definition.properties)
12
- let preparedParams = await prepareParameters(parameters, this.definition.properties, this.service)
12
+ const preparedParams = await prepareParameters(parameters, definition.properties, this.service)
13
13
  //console.log("PREP PARAMS", preparedParams)
14
14
 
15
- let resultPromise = this.definition.execute({
15
+ let resultPromise = definition.execute({
16
16
  ...preparedParams
17
17
  }, {
18
18
  action: this,
19
19
  service: this.service,
20
- trigger: (...args) => this.service.trigger(...args) /// TODO: collet call traces
20
+ trigger: (...args) => this.service.trigger(...args) /// TODO: collect call traces
21
21
  }, emit)
22
22
 
23
23
  resultPromise = resultPromise.then(async result => {
24
- let processedResult = await processReturn(result, this.definition.returns, this.service)
24
+ const processedResult = await processReturn(result, definition.returns, this.service)
25
25
  return processedResult
26
26
  })
27
27
  resultPromise.catch(error => {
28
- console.error(`Trigger ${this.definition.name} error `, error)
28
+ console.error(`Trigger ${definition.name} error `, error)
29
29
  })
30
30
  return resultPromise
31
31
  }
32
+
33
+ async execute(parameters, emit) {
34
+ const resultsPromises = this.definition.map(defn => this.executeSingleTrigger(defn, parameters, emit))
35
+ const results = await Promise.all(resultsPromises)
36
+ return results
37
+ }
38
+
32
39
  }
33
40
 
34
41
  module.exports = TriggerHandler
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@live-change/framework",
3
- "version": "0.5.24",
3
+ "version": "0.6.0",
4
4
  "description": "Live Change Framework - ultimate solution for real time mobile/web apps",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -21,13 +21,13 @@
21
21
  },
22
22
  "homepage": "https://github.com/live-change/live-change-framework",
23
23
  "devDependencies": {
24
- "@live-change/dao": "0.4.2",
25
- "@live-change/dao-websocket": "0.4.1",
24
+ "@live-change/dao": "0.4.3",
25
+ "@live-change/dao-websocket": "0.4.2",
26
26
  "@live-change/db": "0.5.4",
27
27
  "@live-change/db-store-level": "0.5.4",
28
28
  "@live-change/db-store-lmdb": "0.5.4",
29
29
  "@live-change/sockjs": "^0.4.0-rc.1",
30
- "@live-change/uid": "0.5.20",
30
+ "@live-change/uid": "^0.6.0",
31
31
  "cookie": "^0.4.1",
32
32
  "express": "^4.17.1",
33
33
  "os-service": "^2.2.0",
@@ -35,5 +35,5 @@
35
35
  "tape": "^5.3.2",
36
36
  "websocket": "^1.0.34"
37
37
  },
38
- "gitHead": "2fb6050c59e88d0dd285d640e454819d30130b0b"
38
+ "gitHead": "5e4250b3a6fcf11e46f36e6b9713c2a9f4a4dc92"
39
39
  }