theprogrammablemind_4wp 7.5.0-beta.1 → 7.5.0-beta.3

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -61,6 +61,6 @@
61
61
  "json-stable-stringify": "^1.0.1",
62
62
  "node-fetch": "^2.6.1"
63
63
  },
64
- "version": "7.5.0-beta.1",
64
+ "version": "7.5.0-beta.3",
65
65
  "license": "ISC"
66
66
  }
package/src/config.js CHANGED
@@ -412,11 +412,11 @@ class Config {
412
412
  }
413
413
 
414
414
  getSemantics (logs = []) {
415
- return new Semantics(this.config.semantics || [], logs, { km: this.name })
415
+ return new Semantics(this.config.semantics, logs, { km: this.name })
416
416
  }
417
417
 
418
418
  getGenerators (logs = []) {
419
- return new Generators(this.config.generators || [], logs, { km: this.name })
419
+ return new Generators(this.config.generators, logs, { km: this.name })
420
420
  }
421
421
 
422
422
  warningNotEvaluated (log, value) {
@@ -593,18 +593,21 @@ class Config {
593
593
  }
594
594
  }
595
595
 
596
- addHierarchyProperties (properties) {
597
- if (typeof properties.child !== 'string') {
596
+ addHierarchyProperties (edge) {
597
+ const { child, parent } = edge
598
+ if (typeof child !== 'string') {
598
599
  throw `addHierarchy expected child property to be a string. got ${JSON.stringify(child)}`
599
600
  }
600
- if (typeof properties.parent !== 'string') {
601
- throw `addHierarchy expected parent properties to be a string. got ${JSON.stringify(parent)}`
601
+ if (typeof parent !== 'string') {
602
+ throw `addHierarchy expected parent property to be a string. got ${JSON.stringify(parent)}`
602
603
  }
603
- if (!this.config.hierarchy) {
604
- this.config.hierarchy = []
604
+ if (global.entodictonDebugHierarchy) {
605
+ if (deepEqual(global.entodictonDebugHierarchy, [child, parent])) {
606
+ debugger; // debug hierarchy hit
607
+ }
605
608
  }
606
- // this.config.hierarchy.push([properties.child, properties.parent])
607
- this.config.hierarchy.push(properties)
609
+ this.config.hierarchy.push(edge)
610
+ // TODO greg11 this.hierarchy.addEdge(edge)
608
611
  this._delta.json.hierarchy.push([child, parent])
609
612
  }
610
613
 
@@ -615,14 +618,13 @@ class Config {
615
618
  if (typeof parent !== 'string') {
616
619
  throw `addHierarchy expected parent to be a string. got ${JSON.stringify(parent)}`
617
620
  }
618
- if (!this.config.hierarchy) {
619
- this.config.hierarchy = []
620
- }
621
+
621
622
  if (global.entodictonDebugHierarchy) {
622
623
  if (deepEqual(global.entodictonDebugHierarchy, [child, parent])) {
623
624
  debugger; // debug hierarchy hit
624
625
  }
625
626
  }
627
+
626
628
  if (this.config.hierarchy.find( (element) => {
627
629
  const hc = hierarchyCanonical(element)
628
630
  if (child == hc.child && parent == hc.parent) {
@@ -633,6 +635,7 @@ class Config {
633
635
  }
634
636
 
635
637
  this.config.hierarchy.push([child, parent])
638
+ // this.hierarchy.addEdge([child, parent])
636
639
  this._delta.json.hierarchy.push([child, parent])
637
640
  }
638
641
 
@@ -953,17 +956,11 @@ class Config {
953
956
  if (!config) {
954
957
  return
955
958
  }
956
- config.operators = config.operators || []
957
- config.bridges = config.bridges || []
958
- config.words = config.words || {}
959
- config.generators = config.generators || []
960
- config.semantics = config.semantics || []
961
-
962
959
  config.operators = config.operators.filter( (element) => !element.development )
963
960
  config.bridges = config.bridges.filter( (element) => !element.development )
964
961
  config.generators = config.generators.filter( (element) => !element.development )
965
962
  config.semantics = config.semantics.filter( (element) => !element.development )
966
- config.hierarchy = (config.hierarchy || []).filter( (element) => !element.development )
963
+ config.hierarchy = (config.hierarchy).filter( (element) => !element.development )
967
964
  for (const word in config.words) {
968
965
  const defs = config.words[word] || []
969
966
  config.words[word] = defs.filter( (def) => !def.development )
@@ -1006,6 +1003,15 @@ class Config {
1006
1003
  'flatten',
1007
1004
  ]
1008
1005
  helpers.validProps(valid, config, 'config')
1006
+
1007
+ config.operators = config.operators || []
1008
+ config.bridges = config.bridges || []
1009
+ config.words = config.words || {}
1010
+ config.generators = config.generators || []
1011
+ config.semantics = config.semantics || []
1012
+ config.hierarchy = config.hierarchy || []
1013
+ config.associations = config.associations || { negative: [], positive: [] }
1014
+ config.priorities = config.priorities || []
1009
1015
  }
1010
1016
 
1011
1017
  this.allowDelta = false
@@ -1083,16 +1089,7 @@ class Config {
1083
1089
  if (config) {
1084
1090
  config = _.cloneDeep(config)
1085
1091
  this.config = config
1086
- if (!this.config.generators) {
1087
- this.config.generators = []
1088
- }
1089
- if (!this.config.semantics) {
1090
- this.config.semantics = []
1091
- }
1092
- if (!this.config.words) {
1093
- // this.config.words = {}
1094
- }
1095
- for (let bridge of (this.config.bridges || [])) {
1092
+ for (let bridge of this.config.bridges) {
1096
1093
  const valid = [ 'before', 'bridge', 'development', 'evaluator', 'generatorp', 'generatorr', 'generators', 'id', 'inverted', 'isA',
1097
1094
  'level', 'optional', 'selector', 'semantic', 'words', /Bridge$/, 'localHierarchy' ]
1098
1095
  helpers.validProps(valid, bridge, 'bridge')
@@ -1178,6 +1175,7 @@ class Config {
1178
1175
  })
1179
1176
  }
1180
1177
  }
1178
+ this.hierarchy = new Digraph(this.config.hierarchy)
1181
1179
  this.initConfig = _.cloneDeep(this.config)
1182
1180
  this.configs.push(new KM({ config: this.config, getCounter: (name) => this.config.getCounter(name), uuid: this._uuid }))
1183
1181
 
@@ -1432,7 +1430,7 @@ class Config {
1432
1430
  this.config.bridges && this.config.bridges.forEach((bridge) => { bridge.uuid = this._uuid })
1433
1431
  this.config.words && setWordsUUIDs(this.config.words, this._uuid)
1434
1432
  this.config.operators && this.config.operators.forEach((operator) => { operator.uuid = this._uuid })
1435
- const ids = Array.from(new Set((this.config.bridges && this.config.bridges.map((bridge) => bridge.id)) || []))
1433
+ const ids = Array.from(new Set(this.config.bridges.map((bridge) => bridge.id)))
1436
1434
  ids.sort()
1437
1435
  this.config.namespaces = {}
1438
1436
  // if (true || ids.length > 0) {
@@ -1648,6 +1646,13 @@ class Config {
1648
1646
  return false
1649
1647
  }
1650
1648
 
1649
+ /* TODO greg11
1650
+ if (!this.hierarchy) {
1651
+ debugBreak()
1652
+ return false
1653
+ }
1654
+ */
1655
+
1651
1656
  for (const key in this.config.words) {
1652
1657
  const values = this.config.words[key]
1653
1658
  if (values.some((word) => (Object.keys(word).includes('uuid') && !word.uuid))) {
@@ -1657,7 +1662,7 @@ class Config {
1657
1662
  }
1658
1663
 
1659
1664
  const kmsUuids = this.configs.map((km) => km.uuid)
1660
- const bridgesUuids = (this.config.bridges && this.config.bridges.map((bridge) => bridge.uuid).filter((uuid) => uuid)) || []
1665
+ const bridgesUuids = this.config.bridges.map((bridge) => bridge.uuid).filter((uuid) => uuid)
1661
1666
  let result = true
1662
1667
  bridgesUuids.forEach((buuid) => {
1663
1668
  if (!kmsUuids.includes(buuid)) {
@@ -1727,6 +1732,7 @@ class Config {
1727
1732
  this.resetDelta()
1728
1733
  const debug = this.config.debug;
1729
1734
  this.config = _.cloneDeep(this.initConfig)
1735
+ this.hierarchy = new Digraph(this.config.hierarchy)
1730
1736
  if (debug) {
1731
1737
  this.config.debug = debug
1732
1738
  }
@@ -1786,8 +1792,8 @@ class Config {
1786
1792
  config.wasInitialized = false
1787
1793
  // TODO change name of config: to baseConfig:
1788
1794
  const kmFn = (name) => this.getConfig(name)
1789
- const hierarchy = new Digraph((config.config || {}).hierarchy || [])
1790
- const args = { isModule, addWord: aw, km: kmFn, hierarchy, config, baseConfig: this, currentConfig: config, uuid: config._uuid, objects: namespacedObjects, namespace, api: config.api }
1795
+ // const hierarchy = new Digraph((config.config || {}).hierarchy)
1796
+ const args = { isModule, addWord: aw, km: kmFn, hierarchy: this.hierarchy, config, baseConfig: this, currentConfig: config, uuid: config._uuid, objects: namespacedObjects, namespace, api: config.api }
1791
1797
  config.initializerFn(args)
1792
1798
  if (config.initAfterApi) {
1793
1799
  initAfterApis.push({ config, args })
@@ -1984,8 +1990,7 @@ class Config {
1984
1990
  }
1985
1991
 
1986
1992
  if (config.hierarchy) {
1987
- let hierarchy = config.hierarchy
1988
- hierarchy = hierarchy.map((h) => {
1993
+ helpers.mapInPlace(config.hierarchy, (h) => {
1989
1994
  if (Array.isArray(h)) {
1990
1995
  return h.map((id) => toNS(id))
1991
1996
  } else {
@@ -1994,7 +1999,6 @@ class Config {
1994
1999
  return Object.assign({}, h, { child: toNS(h.child), parent: toNS(h.parent) })
1995
2000
  }
1996
2001
  })
1997
- config.hierarchy = hierarchy
1998
2002
  }
1999
2003
 
2000
2004
  if (config.priorities) {
package/src/helpers.js CHANGED
@@ -232,7 +232,14 @@ const validProps = (valids, object, type) => {
232
232
  }
233
233
  }
234
234
 
235
+ const mapInPlace = (list, fn) => {
236
+ for (let i = 0; i < list.length; ++i) {
237
+ list[i] =fn(list[i])
238
+ }
239
+ }
240
+
235
241
  module.exports = {
242
+ mapInPlace,
236
243
  validProps,
237
244
  args,
238
245
  safeEquals,