theprogrammablemind_4wp 7.5.4-beta.5 → 7.5.4-beta.7

Sign up to get free protection for your applications and to get access to all the features.
package/client.js CHANGED
@@ -518,7 +518,7 @@ const processInstance = (config, instance) => {
518
518
  for (const results of (instance.resultss || [])) {
519
519
  if (results.extraConfig) {
520
520
  // config.addInternal(results, useOldVersion = true, skipObjects = false, includeNamespaces = true, allowNameToBeNull = false)
521
- config.addInternal(results)
521
+ config.addInternal(results, { handleCalculatedProps: true } )
522
522
  } else {
523
523
  processContextsB({ config, hierarchy, json: results/*, generators, semantics */ })
524
524
  }
@@ -1662,7 +1662,14 @@ function where(goUp = 2) {
1662
1662
  const e = new Error();
1663
1663
  const regexForm1 = /\((.*):(\d+):(\d+)\)$/
1664
1664
  const regexForm2 = /at (.*):(\d+):(\d+)$/
1665
- const line = e.stack.split("\n")[goUp];
1665
+ const lines = e.stack.split("\n")
1666
+ let line
1667
+ for (line of lines.slice(1)) {
1668
+ if (!(line.includes("config.js:") || line.includes("client.js:"))) {
1669
+ break;
1670
+ }
1671
+ }
1672
+ // const line = e.stack.split("\n")[goUp];
1666
1673
  const match = regexForm1.exec(line) || regexForm2.exec(line);
1667
1674
  if (match) {
1668
1675
  return `${match[1]}:${match[2]}`
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.5",
65
+ "version": "7.5.4-beta.7",
66
66
  "license": "ISC"
67
67
  }
package/src/config.js CHANGED
@@ -74,31 +74,57 @@ const handleBridgeProps = (config, bridge) => {
74
74
  }
75
75
  if (bridge.generatorp) {
76
76
  config.config.generators.unshift({
77
- where: bridge.generatorp.where || client.where(3),
77
+ where: bridge.generatorp.where || bridge.where || client.where(4),
78
78
  match: ({context}) => bridge.id == context.marker && context.paraphrase,
79
79
  apply: (args) => bridge.generatorp(args),
80
+ applyWrapped: bridge.generatorp,
81
+ property: 'generatorp',
80
82
  })
81
83
  }
82
84
  if (bridge.generatorr) {
83
85
  config.config.generators.unshift({
84
86
  // TODO merge response and isResponse
85
- where: bridge.generatorr.where || client.where(3),
87
+ where: bridge.generatorr.where || bridge.where || client.where(3),
86
88
  match: ({context}) => bridge.id == context.marker && !context.paraphrase && (context.response || context.isResponse),
87
89
  apply: (args) => bridge.generatorr(args),
90
+ applyWrapped: bridge.generatorr,
91
+ property: 'generatorr',
88
92
  })
89
93
  }
90
94
  if (bridge.evaluator) {
91
95
  config.config.semantics.unshift({
92
- where: bridge.evaluator.where || client.where(3),
96
+ where: bridge.evaluator.where || bridge.where || client.where(3),
93
97
  match: ({context}) => bridge.id == context.marker && context.evaluate,
94
98
  apply: (args) => bridge.evaluator(args),
99
+ applyWrapped: bridge.evaluator,
100
+ property: 'evaluator',
95
101
  })
96
102
  }
97
103
  if (bridge.semantic) {
98
104
  config.config.semantics.unshift({
99
- where: bridge.semantic.where || client.where(3),
105
+ where: bridge.semantic.where || bridge.where || client.where(3),
100
106
  match: ({context}) => bridge.id == context.marker,
101
107
  apply: (args) => bridge.semantic(args),
108
+ applyWrapped: bridge.semantic,
109
+ property: 'semantic',
110
+ })
111
+ }
112
+ }
113
+
114
+ const handleCalculatedProps = (baseConfig, moreConfig) => {
115
+ for (let bridge of moreConfig.bridges) {
116
+ const valid = [ 'before', 'bridge', 'development', 'evaluator', 'generatorp', 'generatorr', 'generators', 'id', 'convolution', 'inverted', 'isA', 'children', 'parents',
117
+ 'level', 'optional', 'selector', 'semantic', 'words', /Bridge$/, 'localHierarchy', 'where' ]
118
+ helpers.validProps(valid, bridge, 'bridge')
119
+ handleBridgeProps(baseConfig, bridge)
120
+ }
121
+ if (moreConfig.operators) {
122
+ moreConfig.operators = moreConfig.operators.map((operator) => {
123
+ if (typeof operator === 'string') {
124
+ return { pattern: operator }
125
+ } else {
126
+ return operator
127
+ }
102
128
  })
103
129
  }
104
130
  }
@@ -1244,133 +1270,12 @@ class Config {
1244
1270
  if (config) {
1245
1271
  config = _.cloneDeep(config)
1246
1272
  this.config = config
1247
- for (let bridge of this.config.bridges) {
1248
- const valid = [ 'before', 'bridge', 'development', 'evaluator', 'generatorp', 'generatorr', 'generators', 'id', 'convolution', 'inverted', 'isA', 'children', 'parents',
1249
- 'level', 'optional', 'selector', 'semantic', 'words', /Bridge$/, 'localHierarchy' ]
1250
- helpers.validProps(valid, bridge, 'bridge')
1251
- /* moved
1252
- if (!bridge.bridge) {
1253
- bridge.bridge = "{ ...next(operator) }"
1254
- }
1255
- */
1256
- handleBridgeProps(this, bridge)
1257
-
1258
- /* moved
1259
- if (!bridge.level) {
1260
- bridge.level = 0
1261
- }
1262
- */
1263
- /*
1264
- if (bridge.generator) {
1265
- this.config.generators.push({
1266
- match: ({context}) => bridge.id == context.marker,
1267
- apply: (args) => bridge.generator(args),
1268
- })
1269
- }
1270
- */
1271
- /* moved
1272
- if (bridge.children) {
1273
- for (let child of bridge.children) {
1274
- this.addHierarchy(child, bridge.id)
1275
- }
1276
- }
1277
- if (bridge.parents) {
1278
- for (let parent of bridge.parents) {
1279
- this.addHierarchy(bridge.id, parent)
1280
- }
1281
- }
1282
- if (bridge.isA) {
1283
- for (let parent of bridge.isA) {
1284
- this.addHierarchy(bridge.id, parent)
1285
- }
1286
- }
1287
- */
1288
- /* moved
1289
- if (bridge.before) {
1290
- for (let after of bridge.before) {
1291
- if (typeof after == 'string') {
1292
- after = [after, 0]
1293
- }
1294
- this.addPriorities([after, [bridge.id, bridge.level]])
1295
- }
1296
- }
1297
- if (bridge.words) {
1298
- for (let def of bridge.words) {
1299
- if (typeof def == 'string') {
1300
- this.addWordInternal(def, {"id": bridge.id, "initial": `{ value: "${def}"}` })
1301
- } else {
1302
- const word = def.word
1303
- def = { initial: JSON.stringify(def), id: bridge.id, word: undefined }
1304
- this.addWordInternal(word, def)
1305
- }
1306
- }
1307
- }
1308
- if (bridge.generator) {
1309
- this.config.generators.unshift(bridge.generator)
1310
- }
1311
- */
1312
- /* moved
1313
- if (bridge.generators) {
1314
- const generators = [...bridge.generators]
1315
- generators.reverse()
1316
- for (let generator of generators) {
1317
- this.config.generators.unshift(generator)
1318
- }
1319
- }
1320
- if (bridge.generatorp) {
1321
- this.config.generators.unshift({
1322
- where: bridge.generatorp.where || client.where(3),
1323
- match: ({context}) => bridge.id == context.marker && context.paraphrase,
1324
- apply: (args) => bridge.generatorp(args),
1325
- })
1326
- }
1327
- if (bridge.generatorr) {
1328
- this.config.generators.unshift({
1329
- // TODO merge response and isResponse
1330
- where: bridge.generatorr.where || client.where(3),
1331
- match: ({context}) => bridge.id == context.marker && !context.paraphrase && (context.response || context.isResponse),
1332
- apply: (args) => bridge.generatorr(args),
1333
- })
1334
- }
1335
- if (bridge.evaluator) {
1336
- this.config.semantics.unshift({
1337
- where: bridge.evaluator.where || client.where(3),
1338
- match: ({context}) => bridge.id == context.marker && context.evaluate,
1339
- apply: (args) => bridge.evaluator(args),
1340
- })
1341
- }
1342
- if (bridge.semantic) {
1343
- this.config.semantics.unshift({
1344
- where: bridge.semantic.where || client.where(3),
1345
- match: ({context}) => bridge.id == context.marker,
1346
- apply: (args) => bridge.semantic(args),
1347
- })
1348
- }
1349
- */
1350
- }
1351
- if (config.operators) {
1352
- config.operators = config.operators.map((operator) => {
1353
- if (typeof operator === 'string') {
1354
- return { pattern: operator }
1355
- } else {
1356
- return operator
1357
- }
1358
- })
1359
- }
1273
+ handleCalculatedProps(this, config)
1360
1274
  }
1361
1275
  this.hierarchy = new Digraph(this.config.hierarchy)
1362
1276
  this.initConfig = _.cloneDeep(this.config)
1363
1277
  this.configs.push(new KM({ config: this.config, getCounter: (name) => this.config.getCounter(name), uuid: this._uuid }))
1364
1278
 
1365
- /*
1366
- if (config) {
1367
- this.configs.push(new KM({config, isSelf: true}))
1368
- this.addInternal(Object.assign({}, config), false)
1369
- } else {
1370
- this.configs.push( new KM({config: this.config, isSelf: true}) )
1371
- }
1372
- */
1373
-
1374
1279
  this.setUUIDs()
1375
1280
  this.initDefaults()
1376
1281
  if (!this.config.objects.namespaced) {
@@ -2026,7 +1931,6 @@ class Config {
2026
1931
  } else {
2027
1932
  addInternals.unshift(config)
2028
1933
  }
2029
- // this.addInternal(config, true, false, false, true)
2030
1934
  } else {
2031
1935
  if (interleaved) {
2032
1936
  addInternals.unshift(null)
@@ -2049,7 +1953,7 @@ class Config {
2049
1953
  if (!interleaved) {
2050
1954
  for (const config of addInternals) {
2051
1955
  if (!reverseIt) {
2052
- this.addInternal(config, true, false, false, true)
1956
+ this.addInternal(config, { includeNamespace: false, allowNameToBeNull: true })
2053
1957
  } else {
2054
1958
  this.addInternalR(config, true, false, false, true)
2055
1959
  }
@@ -2201,7 +2105,7 @@ class Config {
2201
2105
 
2202
2106
  this.applyNamespace(configPrime, km.namespace, km.uuid)
2203
2107
  first = false
2204
- this.addInternal(configPrime, false, true)
2108
+ this.addInternal(configPrime, { useOldVersion: false, skipObjects: true })
2205
2109
  applyUUID(configPrime, km.uuid)
2206
2110
  })
2207
2111
 
@@ -2491,7 +2395,7 @@ class Config {
2491
2395
  }
2492
2396
 
2493
2397
  // TODO get rid of useOldVersion arg
2494
- addInternal (more, useOldVersion = true, skipObjects = false, includeNamespaces = true, allowNameToBeNull = false) {
2398
+ addInternal (more, { useOldVersion = true, skipObjects = false, includeNamespaces = true, allowNameToBeNull = false, handleCalculatedProps : hcps = false } = {}) {
2495
2399
  if (more instanceof Config) {
2496
2400
  more.initialize({ force: false })
2497
2401
  if (useOldVersion) {
@@ -2501,6 +2405,10 @@ class Config {
2501
2405
  more = _.cloneDeep(more.initConfig)
2502
2406
  }
2503
2407
  }
2408
+ if (hcps) {
2409
+ handleCalculatedProps(this, more)
2410
+ applyUUID(more, this._uuid)
2411
+ }
2504
2412
  for (const key of Object.keys(more)) {
2505
2413
  const value = more[key]
2506
2414
  // TODO remove name and description on the config bag
package/src/generators.js CHANGED
@@ -6,9 +6,11 @@ class Generator {
6
6
  // constructor ({ match, apply, uuid, index, km, priority, notes }) {
7
7
  constructor (generator) {
8
8
  generator = normalizeGenerator(generator)
9
- const { match, apply, uuid, index, km, priority, where, notes, debug } = generator
9
+ const { match, apply, uuid, index, km, priority, where, notes, debug, applyWrapped, property } = generator
10
10
  this.match = match
11
11
  this._apply = apply
12
+ this._applyWrapped = applyWrapped
13
+ this.property = property
12
14
  this.uuid = uuid
13
15
  this.index = index
14
16
  this.km = km
@@ -39,7 +41,7 @@ class Generator {
39
41
  }
40
42
 
41
43
  toString () {
42
- return `Generator(${this.match}, ${this._apply})`
44
+ return `Generator(${this.match}, ${this._applyWrapped || this._apply})${this.property ? `\nsee the ${this.property} property` : ''}`
43
45
  }
44
46
 
45
47
  matches (baseArgs, objects, context, hierarchy, config, options = {}) {
package/src/semantics.js CHANGED
@@ -6,9 +6,11 @@ class Semantic {
6
6
  // constructor ({match, apply, uuid, index, km, notes}) {
7
7
  constructor (semantic) {
8
8
  semantic = normalizeSemantic(semantic)
9
- const { match, apply, uuid, index, km, notes, priority, debug, where } = semantic
9
+ const { match, apply, uuid, index, km, notes, priority, debug, where, applyWrapped, property } = semantic
10
10
  this.matcher = match
11
11
  this._apply = apply
12
+ this._applyWrapped = applyWrapped
13
+ this.property = property
12
14
  this.uuid = uuid
13
15
  this.index = index
14
16
  this.km = km
@@ -27,7 +29,7 @@ class Semantic {
27
29
  }
28
30
 
29
31
  toString () {
30
- return `Semantic(${this.matcher}, ${this._apply})`
32
+ return `Semantic(${this.matcher}, ${this._applyWrapped || this._apply})${this.property ? `\nsee the ${this.property} property` : ''}`
31
33
  }
32
34
 
33
35
  getAPI (config) {