theprogrammablemind_4wp 7.5.4-beta.4 → 7.5.4-beta.5

Sign up to get free protection for your applications and to get access to all the features.
package/client.js CHANGED
@@ -8,7 +8,7 @@ const _ = require('lodash')
8
8
  const stringify = require('json-stable-stringify')
9
9
  const Lines = require('./lines')
10
10
  const flattens = require('./src/flatten')
11
- const { appendNoDups, InitCalls } = require('./src/helpers')
11
+ const { appendNoDups, InitCalls, updateQueries } = require('./src/helpers')
12
12
  const runtime = require('./runtime')
13
13
  const sortJson = runtime.sortJson
14
14
 
@@ -1143,7 +1143,7 @@ const build = async ({ config, target, template, errorHandler = defaultErrorHand
1143
1143
  return template
1144
1144
  };
1145
1145
  stabilizeOutput(accumulators)
1146
- runtime.fs.writeFileSync(instanceName, JSON.stringify(Object.assign({ queries: template.queries }, accumulators), 0, 2))
1146
+ runtime.fs.writeFileSync(instanceName, JSON.stringify(Object.assign({ queries: template.queries.map(updateQueries) }, accumulators), 0, 2))
1147
1147
 
1148
1148
  // km tests file
1149
1149
  const testsName = `./${target}.test.json`
package/package.json CHANGED
@@ -62,6 +62,6 @@
62
62
  "json-stable-stringify": "^1.0.1",
63
63
  "node-fetch": "^2.6.1"
64
64
  },
65
- "version": "7.5.4-beta.4",
65
+ "version": "7.5.4-beta.5",
66
66
  "license": "ISC"
67
67
  }
package/src/config.js CHANGED
@@ -5,7 +5,6 @@ const { Generators } = require('./generators')
5
5
  const client = require('../client')
6
6
  const Digraph = require('./digraph')
7
7
  const helpers = require('./helpers')
8
- const deepEqual = require('deep-equal')
9
8
  const runtime = require('../runtime')
10
9
  const _ = require('lodash')
11
10
 
@@ -646,12 +645,13 @@ class Config {
646
645
  }
647
646
  const instanceFragments = (instance.fragments || []).map((fragment) => fragment.key || fragment.query).map( toCanonical )
648
647
  const templateFragments = (template.fragments || []).concat(this.dynamicFragments).map( toCanonical )
649
- const sameFragments = deepEqual(templateFragments, instanceFragments)
650
- const sameQueries = deepEqual((template.queries || []), (instance.queries || []))
648
+ const sameFragments = helpers.safeEquals(templateFragments, instanceFragments)
649
+ const sameQueries = helpers.safeEquals((template.queries || []).map(helpers.updateQueries), (instance.queries || []))
651
650
  return !(instance && sameQueries && sameFragments)
652
651
  }
653
652
 
654
653
  load (template, instance, options = { rebuild: false } ) {
654
+ this.template = template
655
655
  this.logs.push(`loading template for ${this.name}`)
656
656
  if (instance && instance.associations && !options.rebuild) {
657
657
  this.addAssociations(instance.associations)
@@ -713,7 +713,7 @@ class Config {
713
713
  }
714
714
  }
715
715
  if (global.entodictonDebugAssociation) {
716
- if (deepEqual(global.entodictonDebugAssociation, association)) {
716
+ if (helpers.safeEquals(global.entodictonDebugAssociation, association)) {
717
717
  debugger; // debug association hit
718
718
  }
719
719
  }
@@ -748,7 +748,7 @@ class Config {
748
748
  throw `addHierarchy expected parent property to be a string. got ${JSON.stringify(parent)}`
749
749
  }
750
750
  if (global.entodictonDebugHierarchy) {
751
- if (deepEqual(global.entodictonDebugHierarchy, [child, parent])) {
751
+ if ((helpers.safeEquals.entodictonDebugHierarchy, [child, parent])) {
752
752
  debugger; // debug hierarchy hit
753
753
  }
754
754
  }
@@ -766,7 +766,7 @@ class Config {
766
766
  }
767
767
 
768
768
  if (global.entodictonDebugHierarchy) {
769
- if (deepEqual(global.entodictonDebugHierarchy, [child, parent])) {
769
+ if (helpers.safeEquals(global.entodictonDebugHierarchy, [child, parent])) {
770
770
  debugger; // debug hierarchy hit
771
771
  }
772
772
  }
package/src/helpers.js CHANGED
@@ -44,10 +44,23 @@ const appendNoDups = (l1, l2) => {
44
44
  }
45
45
 
46
46
  const safeEquals = (v1, v2) => {
47
- if (!deepEqual(stringify(v1), stringify(v2))) {
47
+ if (typeof v1 !== typeof v2) {
48
48
  return false
49
49
  }
50
- return true
50
+
51
+ const type = typeof v1
52
+ if (type == 'number' || type == 'string') {
53
+ return v1 == v2
54
+ } else if (type == 'function') {
55
+ return v1.toString() == v2.toString()
56
+ } else {
57
+ for (let key in v1) {
58
+ if (!safeEquals(v1[key], v2[key])) {
59
+ return false
60
+ }
61
+ }
62
+ return true
63
+ }
51
64
  }
52
65
 
53
66
  /*
@@ -238,7 +251,66 @@ const mapInPlace = (list, fn) => {
238
251
  }
239
252
  }
240
253
 
254
+ const updateQueries = (queryOrConfig) => {
255
+ if (typeof queryOrConfig == 'string' || queryOrConfig.query) {
256
+ return queryOrConfig
257
+ } else {
258
+ const config = queryOrConfig
259
+ return functionsToStrings(config)
260
+ }
261
+ }
262
+
263
+ const functionsToStrings = (config) => {
264
+ config = {...config}
265
+ const mapGenerator = (generator) => {
266
+ if (generator.apply) {
267
+ return { ...generator, match: generator.match.toString(), apply: generator.apply.toString() }
268
+ } else {
269
+ return [ generator[0].toString(), generator[1].toString() ]
270
+ }
271
+ }
272
+ if (config.generators) {
273
+ config.generators = config.generators.map( mapGenerator )
274
+ }
275
+ if (config.semantics) {
276
+ config.semantics = config.semantics.map( (semantic) => {
277
+ if (semantic.apply) {
278
+ return { ...semantic, match: semantic.match.toString(), apply: semantic.apply.toString() }
279
+ } else {
280
+ return [ semantic[0].toString(), semantic[1].toString() ]
281
+ }
282
+ })
283
+ }
284
+ if (config.bridges) {
285
+ config.bridges = config.bridges.map( (bridge) => {
286
+ bridge = {...bridge}
287
+ if (bridge.generator) {
288
+ bridge.generator = bridge.generator.toString()
289
+ }
290
+ if (bridge.generators) {
291
+ bridge.generators = bridge.generators.map( mapGenerator )
292
+ }
293
+ if (bridge.generatorp) {
294
+ bridge.generatorp = bridge.generatorp.toString()
295
+ }
296
+ if (bridge.generatorr) {
297
+ bridge.generatorr = bridge.generatorr.toString()
298
+ }
299
+ if (bridge.semantic) {
300
+ bridge.semantic = bridge.semantic.toString()
301
+ }
302
+ if (bridge.evaluator) {
303
+ bridge.evaluator = bridge.evaluator.toString()
304
+ }
305
+ return bridge
306
+ })
307
+ }
308
+ return config
309
+ }
310
+
241
311
  module.exports = {
312
+ functionsToStrings,
313
+ updateQueries,
242
314
  mapInPlace,
243
315
  validProps,
244
316
  args,