theprogrammablemind 7.5.0-beta.1 → 7.5.0-beta.3

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/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,