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 +1 -1
- package/src/config.js +41 -37
- package/src/helpers.js +7 -0
package/package.json
CHANGED
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
|
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
|
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 (
|
597
|
-
|
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
|
601
|
-
throw `addHierarchy expected parent
|
601
|
+
if (typeof parent !== 'string') {
|
602
|
+
throw `addHierarchy expected parent property to be a string. got ${JSON.stringify(parent)}`
|
602
603
|
}
|
603
|
-
if (
|
604
|
-
|
604
|
+
if (global.entodictonDebugHierarchy) {
|
605
|
+
if (deepEqual(global.entodictonDebugHierarchy, [child, parent])) {
|
606
|
+
debugger; // debug hierarchy hit
|
607
|
+
}
|
605
608
|
}
|
606
|
-
|
607
|
-
this.
|
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
|
-
|
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
|
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
|
-
|
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(
|
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 =
|
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
|
-
|
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,
|