theprogrammablemind_4wp 7.7.0-beta.2 → 7.7.0-beta.20

Sign up to get free protection for your applications and to get access to all the features.
package/client.js CHANGED
@@ -30,18 +30,29 @@ const pickObjects = (testConfig, objects) => {
30
30
  return project(objects, getConfig_getObjectsCheck(testConfig))
31
31
  }
32
32
 
33
+ // move ask to the KM's since verbatim is called
33
34
  const getAsk = (config) => (uuid) => (asks) => {
34
35
  for (let ask of asks) {
36
+ let oneShot = true // default
37
+ if (ask.oneShot === false) {
38
+ oneShot = false
39
+ }
35
40
  config.addSemantic({
36
41
  uuid,
37
- oneShot: true,
42
+ oneShot,
38
43
  match: (args) => ask.matchr(args),
39
44
  apply: (args) => ask.applyr(args)
40
45
  })
41
46
  }
47
+ let oneShot = true
48
+ for (let ask of asks) {
49
+ if (ask.oneShot === false) {
50
+ oneShot = false
51
+ }
52
+ }
42
53
  config.addSemantic({
43
54
  uuid,
44
- oneShot: true,
55
+ oneShot,
45
56
  match: ({context}) => context.marker == 'controlEnd' || context.marker == 'controlBetween',
46
57
  apply: (args) => {
47
58
  for (let ask of asks) {
@@ -57,14 +68,18 @@ const getAsk = (config) => (uuid) => (asks) => {
57
68
  }
58
69
  if (matchq(args)) {
59
70
  // args.context.motivationKeep = true
71
+ args.verbatim(applyq(args))
72
+ /*
60
73
  args.context.verbatim = applyq(args)
61
74
  args.context.isResponse = true;
62
75
  delete args.context.controlRemove;
76
+ */
63
77
  args.context.controlKeepMotivation = true;
64
78
  break
65
79
  }
66
80
  }
67
- }
81
+ args.context.cascade = true
82
+ }
68
83
  })
69
84
  }
70
85
 
@@ -169,6 +184,7 @@ const setupArgs = (args, config, logs, hierarchy) => {
169
184
  apis: getAPIs(uuid)
170
185
  }
171
186
  }
187
+ Object.assign(args, args.getUUIDScoped(this.uuid))
172
188
  args.breakOnSemantics = false
173
189
  args.theDebugger = {
174
190
  breakOnSemantics: (value) => args.breakOnSemantics = value
@@ -621,6 +637,15 @@ const loadInstance = (config, instance) => {
621
637
  // config.addInternal(results, useOldVersion = true, skipObjects = false, includeNamespaces = true, allowNameToBeNull = false)
622
638
  // config.addInternal(config.template.queries[i], { handleCalculatedProps: true } )
623
639
  config.addInternal(instance.template.queries[i], { addFirst: true, handleCalculatedProps: true } )
640
+ } else if (results.apply) {
641
+ const objects = config.get('objects')
642
+ const args = { objects, getObjects: getObjects(objects) }
643
+ if (instance.queries) {
644
+ args.isInstance = `instance${i}`
645
+ args.instance = instance.queries[i]
646
+ }
647
+ setupArgs(args, config, config.logs, hierarchy)
648
+ results.apply(args)
624
649
  } else {
625
650
  if (results.skipSemantics) {
626
651
  config.config.skipSemantics = results.skipSemantics
@@ -1195,9 +1220,9 @@ const defaultInnerProcess = (config, errorHandler, responses) => {
1195
1220
  }
1196
1221
 
1197
1222
  if (responses.explain_priorities) {
1198
- console.log("Explain Priorities (listed from lower priority to higher priority)")
1199
- for ([inputss, outpus, reason] of responses.explain_priorities) {
1200
- console.log(` ${JSON.stringify(inputss)} reason: ${reason}`)
1223
+ console.log("Explain Priorities")
1224
+ for ([inputs, output, reason] of responses.explain_priorities) {
1225
+ console.log(` inputs: ${JSON.stringify(inputs)} output: ${JSON.stringify(output)} reason: ${reason}`)
1201
1226
  }
1202
1227
  }
1203
1228
  const objects = config.get('objects').namespaced[config.uuid]
@@ -1325,6 +1350,15 @@ const rebuildTemplate = async ({ config, target, previousResultss, startOfChange
1325
1350
  config.config.skipSemantics = null
1326
1351
  errorHandler(error)
1327
1352
  }
1353
+ } else if (typeof queryOrExtraConfig == 'function') {
1354
+ console.log('calling initialize function')
1355
+ const initFunction = queryOrExtraConfig
1356
+ const objects = config.get('objects')
1357
+ const args = { objects, getObjects: getObjects(objects) }
1358
+ setupArgs(args, config, config.logs, hierarchy)
1359
+ initFunction(args)
1360
+ accumulators[property].push({ apply: queryOrExtraConfig })
1361
+ await looper(queries)
1328
1362
  } else {
1329
1363
  // extra config is def from a time like operators or bridges or words etc
1330
1364
  // it will just get added to the config
@@ -1357,8 +1391,11 @@ const rebuildTemplate = async ({ config, target, previousResultss, startOfChange
1357
1391
  const stabilizeOutput = (template) => {
1358
1392
  stabilizeAssociations(template.associations)
1359
1393
  const stabilize = (results) => {
1360
- for (let result of results) {
1361
- if (result.extraConfig) {
1394
+ for (let i = 0; i < results.length; ++i) {
1395
+ const result = results[i]
1396
+ if (result.apply) {
1397
+ result.apply = result.apply.toString()
1398
+ } else if (result.extraConfig) {
1362
1399
  } else {
1363
1400
  delete result.load_cache_time
1364
1401
  delete result.times
@@ -1643,6 +1680,10 @@ const knowledgeModuleImpl = async ({
1643
1680
  config.config.debug = true
1644
1681
  }
1645
1682
 
1683
+ if (args.reset) {
1684
+ config.config.skip_cache = true
1685
+ }
1686
+
1646
1687
  if (args.explainPriorities) {
1647
1688
  config.config.explain_priorities = true
1648
1689
  }
@@ -1763,7 +1804,7 @@ const knowledgeModuleImpl = async ({
1763
1804
  try {
1764
1805
  config.load(template.template, template.instance, { rebuild: needsRebuild.needsRebuild || options.rebuild, previousResultss: needsRebuild.previousResultss, startOfChanges: needsRebuild.startOfChanges })
1765
1806
  } catch( e ) {
1766
- console.error(`Error loading template for ${config.name}. ${e.error ? e.error : e}`)
1807
+ console.error(`Error loading template for ${config.name}. ${e.error ? e.error : e}${e.stack ? e.stack : ''}`)
1767
1808
  runtime.process.exit(-1)
1768
1809
  }
1769
1810
  if (!args.query) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "devDependencies": {
3
3
  "eslint-plugin-import": "^2.23.4",
4
- "jest": "^26.6.3",
4
+ "jest": "^29.7.0",
5
5
  "@typescript-eslint/parser": "^4.28.4",
6
6
  "@typescript-eslint/eslint-plugin": "^4.28.4",
7
7
  "eslint-plugin-node": "^11.1.0",
@@ -65,6 +65,6 @@
65
65
  "json-stable-stringify": "^1.0.1",
66
66
  "node-fetch": "^2.6.1"
67
67
  },
68
- "version": "7.7.0-beta.2",
68
+ "version": "7.7.0-beta.20",
69
69
  "license": "ISC"
70
70
  }
package/src/config.js CHANGED
@@ -983,6 +983,18 @@ class Config {
983
983
  if (typeof queryOrConfig == 'string') {
984
984
  const query = queryOrConfig
985
985
  return query
986
+ } else if (typeof queryOrConfig == 'function') {
987
+ if (options.isModule) {
988
+ return { apply: 'function in the browser has webpack rewrites so can not be compared' }
989
+ } else {
990
+ return { apply: queryOrConfig.toString() }
991
+ }
992
+ } else if (queryOrConfig.apply) {
993
+ if (options.isModule) {
994
+ return { apply: 'function in the browser has webpack rewrites so can not be compared' }
995
+ } else {
996
+ return { apply: queryOrConfig.apply }
997
+ }
986
998
  } else {
987
999
  const config = { ...queryOrConfig }
988
1000
  delete config.where
@@ -1068,6 +1080,12 @@ class Config {
1068
1080
  startOfChanges = iq
1069
1081
  }
1070
1082
  }
1083
+
1084
+ if (startOfChanges) {
1085
+ console.log('templateQueries[startOfChanges]', templateQueries[startOfChanges]);
1086
+ console.log('instanceQueries[startOfChanges]', instanceQueries[startOfChanges]);
1087
+ }
1088
+
1071
1089
  // things were deleted case
1072
1090
  if (templateQueries.length < instanceQueries.length) {
1073
1091
  startOfChanges = instanceQueries.length
@@ -1138,6 +1156,13 @@ class Config {
1138
1156
  return !properties.find( (property) => instance[property] && instance[property].length > 0 )
1139
1157
  }
1140
1158
  if (!isEmpty(instance)) {
1159
+ // fix up apply functions
1160
+ for (let i = 0; i < instance.resultss.length; ++i) {
1161
+ const result = instance.resultss[i]
1162
+ if (result.apply) {
1163
+ result.apply = template.queries[i]
1164
+ }
1165
+ }
1141
1166
  instance.name = this.name
1142
1167
  this.initInstances.push(instance)
1143
1168
  this.instances.push(instance)
@@ -2237,8 +2262,6 @@ class Config {
2237
2262
  const addInternals = []
2238
2263
  const inits = []
2239
2264
  const initAfterApis = []
2240
- const reverseIt = true
2241
- const interleaved = true
2242
2265
  this.configs.forEach((km) => {
2243
2266
  const namespace = km.namespace
2244
2267
  this.config.objects.namespaced[km._uuid] = {}
@@ -2304,58 +2327,30 @@ class Config {
2304
2327
  inits.unshift( () => config._api.initialize({ config: this, km: kmFn, ...args, api: config._api }) )
2305
2328
  // config._api.initialize({ config, api: config._api })
2306
2329
  } else {
2307
- if (interleaved) {
2308
- inits.unshift(null)
2309
- }
2330
+ inits.unshift(null)
2310
2331
  }
2311
2332
  // config._api.objects = namespacedObjects
2312
2333
  // config._api.config = () => this
2313
2334
  // config._api.uuid = config._uuid
2314
2335
  } else {
2315
- if (interleaved) {
2316
- inits.unshift(null)
2317
- }
2336
+ inits.unshift(null)
2318
2337
  }
2319
2338
  config.setUUIDs()
2320
2339
  config.applyNamespace(config.config, namespace, config.uuid)
2321
2340
  if (!isSelf) {
2322
- if (!reverseIt) {
2323
- addInternals.push(config)
2324
- } else {
2325
- addInternals.unshift(config)
2326
- }
2341
+ addInternals.unshift(config)
2327
2342
  } else {
2328
- if (interleaved) {
2329
- addInternals.unshift(null)
2330
- }
2343
+ addInternals.unshift(null)
2331
2344
  }
2332
2345
  km.valid()
2333
2346
  })
2334
2347
 
2335
2348
  const generators = this.config.generators
2336
2349
  const semantics = this.config.semantics
2337
- if (reverseIt) {
2338
- this.config.generators = []
2339
- this.config.semantics = []
2340
- }
2350
+ this.config.generators = []
2351
+ this.config.semantics = []
2341
2352
 
2342
- if (!interleaved) {
2343
- for (const config of addInternals) {
2344
- if (!reverseIt) {
2345
- this.addInternal(config, { includeNamespace: false, allowNameToBeNull: true })
2346
- } else {
2347
- this.addInternalR(config, true, false, false, true)
2348
- }
2349
- }
2350
- // console.log('inits from config', inits)
2351
- for (const init of inits) {
2352
- init()
2353
- }
2354
- for (let init of initAfterApis) {
2355
- init.config.initializerFn({ ...init.args, kms: this.getConfigs(), isAfterApi: true })
2356
- }
2357
- this.instances.forEach((instance) => client.loadInstance(this, instance))
2358
- } else {
2353
+ {
2359
2354
  const base = {
2360
2355
  operators: this.config.operators,
2361
2356
  bridges: this.config.bridges,
@@ -2371,13 +2366,16 @@ class Config {
2371
2366
  this.config.priorities = []
2372
2367
  this.config.associations = { positive: [], negative: [] }
2373
2368
  this.config.words = {}
2374
-
2369
+
2375
2370
  for (let i = 0; i < addInternals.length; ++i) {
2376
2371
  let name;
2377
2372
  if (addInternals[i]) {
2378
2373
  this.addInternalR(addInternals[i], true, false, false, true)
2379
2374
  name = addInternals[i].name
2380
2375
  } else{
2376
+ // the ones defined in config must come after the ones in the templates
2377
+ this.config.generators = generators.concat(this.config.generators)
2378
+ this.config.semantics = semantics.concat(this.config.semantics)
2381
2379
  this.addInternalR(base, true, false, false, true)
2382
2380
  name = this.name
2383
2381
  }
@@ -2398,10 +2396,6 @@ class Config {
2398
2396
  }
2399
2397
  }
2400
2398
 
2401
- if (reverseIt) {
2402
- this.config.generators = generators.concat(this.config.generators)
2403
- this.config.semantics = semantics.concat(this.config.semantics)
2404
- }
2405
2399
  this.hierarchy.edges = this.config.hierarchy
2406
2400
  this.valid()
2407
2401
  this.checkBridges()
package/src/helpers.js CHANGED
@@ -272,6 +272,8 @@ const mapInPlace = (list, fn) => {
272
272
  const updateQueries = (queryOrConfig) => {
273
273
  if (typeof queryOrConfig == 'string' || queryOrConfig.query) {
274
274
  return queryOrConfig
275
+ } else if (typeof queryOrConfig == 'function') {
276
+ return { apply: queryOrConfig.toString() }
275
277
  } else {
276
278
  const config = queryOrConfig
277
279
  return functionsToStrings(config)