@live-change/framework 0.5.27 → 0.6.2

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/index.js CHANGED
@@ -13,6 +13,7 @@ module.exports.utils = require('./lib/utils.js')
13
13
  module.exports.validation = require('./lib/utils/validation.js')
14
14
  module.exports.rangeProperties = module.exports.utils.rangeProperties
15
15
  module.exports.encodeIdentifier = module.exports.utils.encodeIdentifier
16
+ module.exports.extractRange = module.exports.utils.extractRange
16
17
 
17
18
 
18
19
  module.exports.ActionDefinition = require('./lib/definition/ActionDefinition.js')
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) {
@@ -134,7 +134,8 @@ class ServiceDefinition {
134
134
 
135
135
  trigger(definition) {
136
136
  const trigger = new TriggerDefinition(definition)
137
- 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 ]
138
139
  return trigger
139
140
  }
140
141
 
@@ -170,7 +171,7 @@ class ServiceDefinition {
170
171
  let views = {}
171
172
  for(let key in this.views) views[key] = this.views[key].toJSON()
172
173
  let triggers = {}
173
- 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())
174
175
  return {
175
176
  ...this,
176
177
  _runtime: undefined,
@@ -88,7 +88,7 @@ class LiveDao extends LcDao.DaoProxy {
88
88
  this.disposed = true
89
89
  this.started = false
90
90
  for(const observation of this.credentialsObservations) {
91
- observation.observable.unobserver(observation.observer)
91
+ observation.observable.unobserve(observation.observer)
92
92
  }
93
93
  super.dispose()
94
94
  }
@@ -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/lib/utils.js CHANGED
@@ -253,9 +253,20 @@ function encodeIdentifier(parts) {
253
253
  return parts.map(p => JSON.stringify(p)).join(':')
254
254
  }
255
255
 
256
+ function extractRange(properties) {
257
+ return {
258
+ gt: properties.gt,
259
+ gte: properties.gte,
260
+ lt: properties.lt,
261
+ lte: properties.lte,
262
+ reverse: properties.reverse,
263
+ limit: properties.limit
264
+ }
265
+ }
266
+
256
267
  module.exports = {
257
268
  typeName, toJSON, setDifference, mapDifference, crudChanges,
258
269
  getProperty, setProperty, getField, setField, isObject, mergeDeep, generateDefault,
259
270
  prefixRange, rangeProperties, fieldListToFieldsObject,
260
- encodeIdentifier
271
+ encodeIdentifier, extractRange
261
272
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@live-change/framework",
3
- "version": "0.5.27",
3
+ "version": "0.6.2",
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.2",
24
+ "@live-change/dao": "0.4.6",
25
+ "@live-change/dao-websocket": "0.4.6",
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.27",
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": "8cdab8d362794c923e765193d2e786fb29587877"
38
+ "gitHead": "02153d427b43f1766ee50d90cb531f63adeb7b0b"
39
39
  }