theprogrammablemind_4wp 8.0.0-beta.60 → 8.0.0-beta.62
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/client.js +472 -462
 - package/package.json +1 -1
 - package/src/config.js +20 -0
 
    
        package/client.js
    CHANGED
    
    | 
         @@ -1080,6 +1080,7 @@ const knowledgeModuleImpl = async ({ 
     | 
|
| 
       1080 
1080 
     | 
    
         
             
              config : configStruct,
         
     | 
| 
       1081 
1081 
     | 
    
         
             
              api,
         
     | 
| 
       1082 
1082 
     | 
    
         
             
              initializer,
         
     | 
| 
      
 1083 
     | 
    
         
            +
              terminator,
         
     | 
| 
       1083 
1084 
     | 
    
         
             
              multiApiInitializer,
         
     | 
| 
       1084 
1085 
     | 
    
         | 
| 
       1085 
1086 
     | 
    
         
             
              module: moduleFromJSFile,
         
     | 
| 
         @@ -1111,6 +1112,7 @@ const knowledgeModuleImpl = async ({ 
     | 
|
| 
       1111 
1112 
     | 
    
         | 
| 
       1112 
1113 
     | 
    
         
             
              const createConfig = async () => {
         
     | 
| 
       1113 
1114 
     | 
    
         
             
                const config = new Config(configStruct, moduleFromJSFile, _process)
         
     | 
| 
      
 1115 
     | 
    
         
            +
                config.setTerminator(terminator)
         
     | 
| 
       1114 
1116 
     | 
    
         
             
                config.stop_auto_rebuild()
         
     | 
| 
       1115 
1117 
     | 
    
         
             
                await config.add(...(includes || []))
         
     | 
| 
       1116 
1118 
     | 
    
         
             
                if (api) {
         
     | 
| 
         @@ -1158,547 +1160,555 @@ const knowledgeModuleImpl = async ({ 
     | 
|
| 
       1158 
1160 
     | 
    
         
             
              }
         
     | 
| 
       1159 
1161 
     | 
    
         | 
| 
       1160 
1162 
     | 
    
         
             
              if (isProcess) {
         
     | 
| 
       1161 
     | 
    
         
            -
                 
     | 
| 
       1162 
     | 
    
         
            -
             
     | 
| 
       1163 
     | 
    
         
            -
             
     | 
| 
      
 1163 
     | 
    
         
            +
                let config
         
     | 
| 
      
 1164 
     | 
    
         
            +
                try {
         
     | 
| 
      
 1165 
     | 
    
         
            +
                  const parser = new runtime.ArgumentParser({
         
     | 
| 
      
 1166 
     | 
    
         
            +
                    description: 'Entodicton knowledge module'
         
     | 
| 
      
 1167 
     | 
    
         
            +
                  })
         
     | 
| 
       1164 
1168 
     | 
    
         | 
| 
       1165 
     | 
    
         
            -
             
     | 
| 
       1166 
     | 
    
         
            -
             
     | 
| 
       1167 
     | 
    
         
            -
             
     | 
| 
       1168 
     | 
    
         
            -
             
     | 
| 
       1169 
     | 
    
         
            -
             
     | 
| 
       1170 
     | 
    
         
            -
             
     | 
| 
       1171 
     | 
    
         
            -
             
     | 
| 
       1172 
     | 
    
         
            -
             
     | 
| 
       1173 
     | 
    
         
            -
             
     | 
| 
       1174 
     | 
    
         
            -
             
     | 
| 
       1175 
     | 
    
         
            -
             
     | 
| 
       1176 
     | 
    
         
            -
             
     | 
| 
       1177 
     | 
    
         
            -
             
     | 
| 
       1178 
     | 
    
         
            -
             
     | 
| 
       1179 
     | 
    
         
            -
             
     | 
| 
       1180 
     | 
    
         
            -
             
     | 
| 
       1181 
     | 
    
         
            -
             
     | 
| 
       1182 
     | 
    
         
            -
             
     | 
| 
       1183 
     | 
    
         
            -
             
     | 
| 
       1184 
     | 
    
         
            -
             
     | 
| 
       1185 
     | 
    
         
            -
             
     | 
| 
       1186 
     | 
    
         
            -
             
     | 
| 
       1187 
     | 
    
         
            -
             
     | 
| 
       1188 
     | 
    
         
            -
             
     | 
| 
       1189 
     | 
    
         
            -
             
     | 
| 
       1190 
     | 
    
         
            -
             
     | 
| 
       1191 
     | 
    
         
            -
             
     | 
| 
       1192 
     | 
    
         
            -
             
     | 
| 
       1193 
     | 
    
         
            -
             
     | 
| 
       1194 
     | 
    
         
            -
             
     | 
| 
       1195 
     | 
    
         
            -
             
     | 
| 
       1196 
     | 
    
         
            -
             
     | 
| 
       1197 
     | 
    
         
            -
             
     | 
| 
       1198 
     | 
    
         
            -
             
     | 
| 
       1199 
     | 
    
         
            -
             
     | 
| 
       1200 
     | 
    
         
            -
             
     | 
| 
       1201 
     | 
    
         
            -
             
     | 
| 
       1202 
     | 
    
         
            -
             
     | 
| 
       1203 
     | 
    
         
            -
             
     | 
| 
       1204 
     | 
    
         
            -
             
     | 
| 
       1205 
     | 
    
         
            -
             
     | 
| 
       1206 
     | 
    
         
            -
             
     | 
| 
       1207 
     | 
    
         
            -
             
     | 
| 
       1208 
     | 
    
         
            -
             
     | 
| 
       1209 
     | 
    
         
            -
             
     | 
| 
       1210 
     | 
    
         
            -
             
     | 
| 
       1211 
     | 
    
         
            -
             
     | 
| 
       1212 
     | 
    
         
            -
             
     | 
| 
       1213 
     | 
    
         
            -
             
     | 
| 
       1214 
     | 
    
         
            -
             
     | 
| 
       1215 
     | 
    
         
            -
             
     | 
| 
       1216 
     | 
    
         
            -
             
     | 
| 
      
 1169 
     | 
    
         
            +
                  const helpDebugWord = 'In order to get a debug break when a specific word is created set the DEBUG_WORD environment variable to the JSON of the association to break on. For example DEBUG_WORD=\'"the"\''
         
     | 
| 
      
 1170 
     | 
    
         
            +
                  const helpDebugAssociation = 'In order to get a debug break when a specific association is created set the DEBUG_ASSOCIATION environment variable to the JSON of the association to break on. For example DEBUG_ASSOCIATION=\'[["the", 0], ["mammal", 1]]\''
         
     | 
| 
      
 1171 
     | 
    
         
            +
                  const helpDebugHierarchy = 'In order to get a debug break when a specific hierarchy is created set the DEBUG_HIERARCHY environment variable to the JSON of the child-parent pair to break on. For example DEBUG_HIERARCHY=\'[["cat", 1], ["mammel", 1]]\''
         
     | 
| 
      
 1172 
     | 
    
         
            +
                  const helpDebugPriority = 'In order to get a debug break when a specific set of priorities is created set set DEBUG_PRIORITY environment variable to the JSON of the priorities that you want to break on. For example DEBUG_PRIORITY=\'[["verb", 0], ["article", 0]]\''
         
     | 
| 
      
 1173 
     | 
    
         
            +
                  const helpDebugContextualPriority = 'In order to get a debug break when a specific set of contextual priorities is created set set DEBUG_CONTEXTUAL_PRIORITY environment variable to the JSON of the priorities that you want to break on. For example DEBUG_CONTEXTUAL_PRIORITY=\'{ context: [["verb", 0], ["article", 0], select: 1}\''
         
     | 
| 
      
 1174 
     | 
    
         
            +
                  const helpDebugBridge = 'In order to get a debug break when a specific bridge is created set the DEBUG_BRIDGE environment variable to id to break on. For example DEBUG_BRIDGE=\'car\''
         
     | 
| 
      
 1175 
     | 
    
         
            +
                  const helpDebugOperator = 'In order to get a debug break when a specific hierarcy is created set the DEBUG_OPERATOR environment variable to debug any config loaded. For example DEBUG_OPERATOR=\'([operator] ([arg]))\''
         
     | 
| 
      
 1176 
     | 
    
         
            +
             
     | 
| 
      
 1177 
     | 
    
         
            +
                  parser.add_argument('-tmn', '--testModuleName', { help: 'When running tests instead of using the current modules tests use the specified modules tests' })
         
     | 
| 
      
 1178 
     | 
    
         
            +
                  parser.add_argument('-t', '--test', { action: 'store_true', help: 'Run the tests. Create tests by running with the --query + --save flag' })
         
     | 
| 
      
 1179 
     | 
    
         
            +
                  parser.add_argument('-tv', '--testVerbose', { action: 'store_true', help: 'Run the tests in verbose mode. Create tests by running with the --query or --loop with the --save flag' })
         
     | 
| 
      
 1180 
     | 
    
         
            +
                  // parser.add_argument('-ttr', '--testToRun', { help: 'Only the specified test will be run' })
         
     | 
| 
      
 1181 
     | 
    
         
            +
                  parser.add_argument('-tva', '--testAllVerbose', { action: 'store_true', help: 'Run the tests in verbose mode. All the tests will be run instead of stopping at first failure. Create tests by running with the --query or --loop with the --save flag. if -q is specified the tests will be run for just the specified query.' })
         
     | 
| 
      
 1182 
     | 
    
         
            +
                  parser.add_argument('-tnp', '--testNoParenthesized', { action: 'store_true', help: 'Don\' check parenthesized differences for the tests' })
         
     | 
| 
      
 1183 
     | 
    
         
            +
                  parser.add_argument('-n', '--count', { help: 'Number of times to run the tests. Default is one. Use this to check for flakey test. If possible the system will print out a message with the word "hint" suggesting how to fix the problem' })
         
     | 
| 
      
 1184 
     | 
    
         
            +
                  // parser.add_argument('-b', '--build', { help: 'Specify the template file name of the form <kmName>. There should be a file called <baseKmName>.<kmName>.template.json with the queries to run. For example { queries: [...] }. The template file will be run and generate an instantiation called <baseKmName>.<kmName>.instance.json and a file called <kmName>.js that will load the template file (this is file generated only if not already existing) and a test file called <KmName>.tests.json. This can then be loaded into an instance of the current knowledge module to setup initial conditions.' })
         
     | 
| 
      
 1185 
     | 
    
         
            +
                  parser.add_argument('-rt', '--rebuildTemplate', { action: 'store_true', help: 'Force a template rebuild. Using optimization where if the query/config has not changed it will use the previous value. One there is a change all subsequence query/configs will be run.' })
         
     | 
| 
      
 1186 
     | 
    
         
            +
                  parser.add_argument('-rtf', '--rebuildTemplateFull', { action: 'store_true', help: 'Force a template rebuild. Skip the optimization' })
         
     | 
| 
      
 1187 
     | 
    
         
            +
                  parser.add_argument('-l', '--loop', { action: 'store_true', help: 'Run a loop so that multiply queries may be run' })
         
     | 
| 
      
 1188 
     | 
    
         
            +
                  parser.add_argument('-i', '--info', { action: 'store_true', help: 'Print meta-data for the module' })
         
     | 
| 
      
 1189 
     | 
    
         
            +
                  parser.add_argument('-v', '--vimdiff', { action: 'store_true', help: 'For failures run vimdiff' })
         
     | 
| 
      
 1190 
     | 
    
         
            +
                  parser.add_argument('-g', '--greg', { action: 'store_true', help: 'Set the server to be localhost so I can debug stuff' })
         
     | 
| 
      
 1191 
     | 
    
         
            +
                  parser.add_argument('-cl', '--checkForLoop', { nargs: '?', help: 'Check for loops in the priorities, Optional argument is list of operator keys to consider. For example [["banana", 0], ["food", 1]]' })
         
     | 
| 
      
 1192 
     | 
    
         
            +
                  parser.add_argument('-r', '--reset', { action: 'store_true', help: 'Get the server to bypass the cache and rebuild everything' })
         
     | 
| 
      
 1193 
     | 
    
         
            +
                  parser.add_argument('-q', '--query', { help: 'Run the specified query' })
         
     | 
| 
      
 1194 
     | 
    
         
            +
                  parser.add_argument('-ip ', '--server', { help: 'Server to run against' })
         
     | 
| 
      
 1195 
     | 
    
         
            +
                  parser.add_argument('-qp ', '--queryParams', { help: 'Query params for the server call' })
         
     | 
| 
      
 1196 
     | 
    
         
            +
                  parser.add_argument('-dt', '--deleteTest', { help: 'Delete the specified query from the tests file.' })
         
     | 
| 
      
 1197 
     | 
    
         
            +
                  parser.add_argument('--parenthesized', { action: 'store_true', help: 'Show the generated phrases with parenthesis.' })
         
     | 
| 
      
 1198 
     | 
    
         
            +
                  parser.add_argument('-c', '--clean', { help: 'Remove data from the test files. a === association' })
         
     | 
| 
      
 1199 
     | 
    
         
            +
                  parser.add_argument('-od', '--objectDiff', { action: 'store_true', help: 'When showing the objects use a colour diff' })
         
     | 
| 
      
 1200 
     | 
    
         
            +
                  parser.add_argument('-p', '--print', { help: 'Print the specified elements c === config, w === words, b === bridges, o === operators d === objects (d for data), h === hierarchy, g === generators, s === semantics, l === load t=tests ordering p === priorities a == associations j == JSON sent to server. for example --print wb' })
         
     | 
| 
      
 1201 
     | 
    
         
            +
                  parser.add_argument('-s', '--save', { action: 'store_true', help: 'When running with the --query flag this will save the current run to the test file. When running without the --query flag all tests will be run and resaved.' })
         
     | 
| 
      
 1202 
     | 
    
         
            +
                  parser.add_argument('-sd', '--saveDeveloper', { action: 'store_true', help: 'Same as -s but the query will not show up in the info command.' })
         
     | 
| 
      
 1203 
     | 
    
         
            +
                  parser.add_argument('-dl', '--debugLoops', { action: 'store_true', help: 'When running with the --debugLoops flag the logs calls to semantics and generators will be immediately written to the console ' })
         
     | 
| 
      
 1204 
     | 
    
         
            +
                  parser.add_argument('-d', '--debug', { action: 'store_true', help: 'When running with the --debug flag this set the debug flag in the config' })
         
     | 
| 
      
 1205 
     | 
    
         
            +
                  parser.add_argument('-da', '--debugAssociation', { action: 'store_true', help: helpDebugAssociation })
         
     | 
| 
      
 1206 
     | 
    
         
            +
                  parser.add_argument('-dw', '--debugWord', { action: 'store_true', help: helpDebugWord })
         
     | 
| 
      
 1207 
     | 
    
         
            +
                  parser.add_argument('-dh', '--debugHierarchy', { action: 'store_true', help: helpDebugHierarchy })
         
     | 
| 
      
 1208 
     | 
    
         
            +
                  parser.add_argument('-dp', '--debugPriority', { action: 'store_true', help: helpDebugPriority })
         
     | 
| 
      
 1209 
     | 
    
         
            +
                  parser.add_argument('-dcp', '--debugContextualPriority', { action: 'store_true', help: helpDebugContextualPriority })
         
     | 
| 
      
 1210 
     | 
    
         
            +
                  parser.add_argument('-db', '--debugBridge', { action: 'store_true', help: helpDebugBridge })
         
     | 
| 
      
 1211 
     | 
    
         
            +
                  parser.add_argument('-do', '--debugOperator', { action: 'store_true', help: helpDebugOperator })
         
     | 
| 
      
 1212 
     | 
    
         
            +
                  parser.add_argument('-ep', '--explainPriorities', { action: 'store_true', help: 'The server will return all priorities including the generated one along with an explanation of there they came from' })
         
     | 
| 
      
 1213 
     | 
    
         
            +
                  parser.add_argument('-dic', '--debugIncludeConvolutions', { nargs: '?', help: 'When running with the --debugIncludeConvolutions flag the logs will include convolutions which are somewhat annoyingly verbose. Default is false' })
         
     | 
| 
      
 1214 
     | 
    
         
            +
             
     | 
| 
      
 1215 
     | 
    
         
            +
                  const args = parser.parse_args()
         
     | 
| 
      
 1216 
     | 
    
         
            +
                  args.count = args.count || 1
         
     | 
| 
      
 1217 
     | 
    
         
            +
             
     | 
| 
      
 1218 
     | 
    
         
            +
                  if (args.rebuildTemplateFull) {
         
     | 
| 
      
 1219 
     | 
    
         
            +
                    args.rebuildTemplate = true
         
     | 
| 
      
 1220 
     | 
    
         
            +
                  }
         
     | 
| 
       1217 
1221 
     | 
    
         | 
| 
       1218 
     | 
    
         
            -
             
     | 
| 
       1219 
     | 
    
         
            -
             
     | 
| 
       1220 
     | 
    
         
            -
             
     | 
| 
       1221 
     | 
    
         
            -
             
     | 
| 
      
 1222 
     | 
    
         
            +
                  // dont debug the load of the KM's if rebuild template is on since we want to debug the template rebuild not the load
         
     | 
| 
      
 1223 
     | 
    
         
            +
                  if (args.rebuildTemplate) {
         
     | 
| 
      
 1224 
     | 
    
         
            +
                    global.pauseDebugging = true
         
     | 
| 
      
 1225 
     | 
    
         
            +
                  }
         
     | 
| 
       1222 
1226 
     | 
    
         | 
| 
       1223 
     | 
    
         
            -
             
     | 
| 
       1224 
     | 
    
         
            -
             
     | 
| 
       1225 
     | 
    
         
            -
             
     | 
| 
      
 1227 
     | 
    
         
            +
                  config = await createConfig()
         
     | 
| 
      
 1228 
     | 
    
         
            +
                  setupConfig(config)
         
     | 
| 
      
 1229 
     | 
    
         
            +
                  processResults = processResults({ config, errorHandler })
         
     | 
| 
       1226 
1230 
     | 
    
         | 
| 
       1227 
     | 
    
         
            -
             
     | 
| 
       1228 
     | 
    
         
            -
             
     | 
| 
       1229 
     | 
    
         
            -
             
     | 
| 
      
 1231 
     | 
    
         
            +
                  if (args.rebuildTemplate) {
         
     | 
| 
      
 1232 
     | 
    
         
            +
                    global.pauseDebugging = false
         
     | 
| 
      
 1233 
     | 
    
         
            +
                  }
         
     | 
| 
       1230 
1234 
     | 
    
         | 
| 
       1231 
     | 
    
         
            -
             
     | 
| 
      
 1235 
     | 
    
         
            +
                  // setup();
         
     | 
| 
       1232 
1236 
     | 
    
         | 
| 
       1233 
     | 
    
         
            -
             
     | 
| 
       1234 
     | 
    
         
            -
             
     | 
| 
       1235 
     | 
    
         
            -
             
     | 
| 
       1236 
     | 
    
         
            -
             
     | 
| 
       1237 
     | 
    
         
            -
             
     | 
| 
       1238 
     | 
    
         
            -
             
     | 
| 
       1239 
     | 
    
         
            -
             
     | 
| 
       1240 
     | 
    
         
            -
             
     | 
| 
       1241 
     | 
    
         
            -
             
     | 
| 
       1242 
     | 
    
         
            -
             
     | 
| 
       1243 
     | 
    
         
            -
             
     | 
| 
       1244 
     | 
    
         
            -
             
     | 
| 
       1245 
     | 
    
         
            -
             
     | 
| 
       1246 
     | 
    
         
            -
             
     | 
| 
       1247 
     | 
    
         
            -
             
     | 
| 
      
 1237 
     | 
    
         
            +
                  if (args.parenthesized) {
         
     | 
| 
      
 1238 
     | 
    
         
            +
                    config.parenthesized = true
         
     | 
| 
      
 1239 
     | 
    
         
            +
                  }
         
     | 
| 
      
 1240 
     | 
    
         
            +
                  if (args.checkForLoop) {
         
     | 
| 
      
 1241 
     | 
    
         
            +
                    try {
         
     | 
| 
      
 1242 
     | 
    
         
            +
                      args.checkForLoop = JSON.parse(args.checkForLoop)
         
     | 
| 
      
 1243 
     | 
    
         
            +
                      const isKey = (what) => {
         
     | 
| 
      
 1244 
     | 
    
         
            +
                        if (!Array.isArray(what)) {
         
     | 
| 
      
 1245 
     | 
    
         
            +
                          return false
         
     | 
| 
      
 1246 
     | 
    
         
            +
                        }
         
     | 
| 
      
 1247 
     | 
    
         
            +
                        if (what.length !== 2) {
         
     | 
| 
      
 1248 
     | 
    
         
            +
                          return false
         
     | 
| 
      
 1249 
     | 
    
         
            +
                        }
         
     | 
| 
      
 1250 
     | 
    
         
            +
                        if (!typeof what[0] == 'string') {
         
     | 
| 
      
 1251 
     | 
    
         
            +
                          return false
         
     | 
| 
      
 1252 
     | 
    
         
            +
                        }
         
     | 
| 
      
 1253 
     | 
    
         
            +
                        if (!typeof what[1] == 'number') {
         
     | 
| 
      
 1254 
     | 
    
         
            +
                          return false
         
     | 
| 
      
 1255 
     | 
    
         
            +
                        }
         
     | 
| 
      
 1256 
     | 
    
         
            +
                        return true
         
     | 
| 
       1248 
1257 
     | 
    
         
             
                      }
         
     | 
| 
       1249 
     | 
    
         
            -
                      if (! 
     | 
| 
       1250 
     | 
    
         
            -
                         
     | 
| 
      
 1258 
     | 
    
         
            +
                      if (!Array.isArray(args.checkForLoop) || args.checkForLoop.some((value) => !isKey(value))) {
         
     | 
| 
      
 1259 
     | 
    
         
            +
                        throw new Error('Error for the checkForLoop argument. Expected a JSON array of operator keys of the form "[<id>, <level>]"')
         
     | 
| 
       1251 
1260 
     | 
    
         
             
                      }
         
     | 
| 
       1252 
     | 
    
         
            -
             
     | 
| 
       1253 
     | 
    
         
            -
                    }
         
     | 
| 
       1254 
     | 
    
         
            -
                    if (!Array.isArray(args.checkForLoop) || args.checkForLoop.some((value) => !isKey(value))) {
         
     | 
| 
      
 1261 
     | 
    
         
            +
                    } catch (e) {
         
     | 
| 
       1255 
1262 
     | 
    
         
             
                      throw new Error('Error for the checkForLoop argument. Expected a JSON array of operator keys of the form "[<id>, <level>]"')
         
     | 
| 
       1256 
1263 
     | 
    
         
             
                    }
         
     | 
| 
       1257 
     | 
    
         
            -
                  }  
     | 
| 
       1258 
     | 
    
         
            -
                     
     | 
| 
      
 1264 
     | 
    
         
            +
                  } else {
         
     | 
| 
      
 1265 
     | 
    
         
            +
                    if (process.argv.includes('--checkForLoop') || process.argv.includes('-cl')) {
         
     | 
| 
      
 1266 
     | 
    
         
            +
                      args.checkForLoop = true
         
     | 
| 
      
 1267 
     | 
    
         
            +
                    }
         
     | 
| 
       1259 
1268 
     | 
    
         
             
                  }
         
     | 
| 
       1260 
     | 
    
         
            -
             
     | 
| 
       1261 
     | 
    
         
            -
             
     | 
| 
       1262 
     | 
    
         
            -
                     
     | 
| 
      
 1269 
     | 
    
         
            +
                  if (args.debugAssociation) {
         
     | 
| 
      
 1270 
     | 
    
         
            +
                    console.log(helpDebugAssociation)
         
     | 
| 
      
 1271 
     | 
    
         
            +
                    runtime.process.exit(-1)
         
     | 
| 
      
 1272 
     | 
    
         
            +
                  }
         
     | 
| 
      
 1273 
     | 
    
         
            +
                  if (args.debugWord) {
         
     | 
| 
      
 1274 
     | 
    
         
            +
                    console.log(helpDebugWord)
         
     | 
| 
      
 1275 
     | 
    
         
            +
                    runtime.process.exit(-1)
         
     | 
| 
      
 1276 
     | 
    
         
            +
                  }
         
     | 
| 
      
 1277 
     | 
    
         
            +
                  if (args.debugHierarchy) {
         
     | 
| 
      
 1278 
     | 
    
         
            +
                    console.log(helpDebugHierarchy)
         
     | 
| 
      
 1279 
     | 
    
         
            +
                    runtime.process.exit(-1)
         
     | 
| 
      
 1280 
     | 
    
         
            +
                  }
         
     | 
| 
      
 1281 
     | 
    
         
            +
                  if (args.debugPriority) {
         
     | 
| 
      
 1282 
     | 
    
         
            +
                    console.log(helpDebugPriority)
         
     | 
| 
      
 1283 
     | 
    
         
            +
                    runtime.process.exit(-1)
         
     | 
| 
      
 1284 
     | 
    
         
            +
                  }
         
     | 
| 
      
 1285 
     | 
    
         
            +
                  if (args.debugBridge) {
         
     | 
| 
      
 1286 
     | 
    
         
            +
                    console.log(helpDebugBridge)
         
     | 
| 
      
 1287 
     | 
    
         
            +
                    runtime.process.exit(-1)
         
     | 
| 
      
 1288 
     | 
    
         
            +
                  }
         
     | 
| 
      
 1289 
     | 
    
         
            +
                  if (args.debugOperator) {
         
     | 
| 
      
 1290 
     | 
    
         
            +
                    console.log(helpDebugOperator)
         
     | 
| 
      
 1291 
     | 
    
         
            +
                    runtime.process.exit(-1)
         
     | 
| 
       1263 
1292 
     | 
    
         
             
                  }
         
     | 
| 
       1264 
     | 
    
         
            -
                }
         
     | 
| 
       1265 
     | 
    
         
            -
                if (args.debugAssociation) {
         
     | 
| 
       1266 
     | 
    
         
            -
                  console.log(helpDebugAssociation)
         
     | 
| 
       1267 
     | 
    
         
            -
                  runtime.process.exit(-1)
         
     | 
| 
       1268 
     | 
    
         
            -
                }
         
     | 
| 
       1269 
     | 
    
         
            -
                if (args.debugWord) {
         
     | 
| 
       1270 
     | 
    
         
            -
                  console.log(helpDebugWord)
         
     | 
| 
       1271 
     | 
    
         
            -
                  runtime.process.exit(-1)
         
     | 
| 
       1272 
     | 
    
         
            -
                }
         
     | 
| 
       1273 
     | 
    
         
            -
                if (args.debugHierarchy) {
         
     | 
| 
       1274 
     | 
    
         
            -
                  console.log(helpDebugHierarchy)
         
     | 
| 
       1275 
     | 
    
         
            -
                  runtime.process.exit(-1)
         
     | 
| 
       1276 
     | 
    
         
            -
                }
         
     | 
| 
       1277 
     | 
    
         
            -
                if (args.debugPriority) {
         
     | 
| 
       1278 
     | 
    
         
            -
                  console.log(helpDebugPriority)
         
     | 
| 
       1279 
     | 
    
         
            -
                  runtime.process.exit(-1)
         
     | 
| 
       1280 
     | 
    
         
            -
                }
         
     | 
| 
       1281 
     | 
    
         
            -
                if (args.debugBridge) {
         
     | 
| 
       1282 
     | 
    
         
            -
                  console.log(helpDebugBridge)
         
     | 
| 
       1283 
     | 
    
         
            -
                  runtime.process.exit(-1)
         
     | 
| 
       1284 
     | 
    
         
            -
                }
         
     | 
| 
       1285 
     | 
    
         
            -
                if (args.debugOperator) {
         
     | 
| 
       1286 
     | 
    
         
            -
                  console.log(helpDebugOperator)
         
     | 
| 
       1287 
     | 
    
         
            -
                  runtime.process.exit(-1)
         
     | 
| 
       1288 
     | 
    
         
            -
                }
         
     | 
| 
       1289 
1293 
     | 
    
         | 
| 
       1290 
     | 
    
         
            -
             
     | 
| 
       1291 
     | 
    
         
            -
             
     | 
| 
       1292 
     | 
    
         
            -
             
     | 
| 
       1293 
     | 
    
         
            -
             
     | 
| 
      
 1294 
     | 
    
         
            +
                  if (args.clean) {
         
     | 
| 
      
 1295 
     | 
    
         
            +
                    const tests = JSON.parse(runtime.fs.readFileSync(testConfig.name))
         
     | 
| 
      
 1296 
     | 
    
         
            +
                    for (const test of tests) {
         
     | 
| 
      
 1297 
     | 
    
         
            +
                      delete test.associations
         
     | 
| 
      
 1298 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1299 
     | 
    
         
            +
                    writeTestFile(testConfig.name, tests)
         
     | 
| 
      
 1300 
     | 
    
         
            +
                    console.log(`Cleaned ${testConfig.name}`)
         
     | 
| 
      
 1301 
     | 
    
         
            +
                    return
         
     | 
| 
       1294 
1302 
     | 
    
         
             
                  }
         
     | 
| 
       1295 
     | 
    
         
            -
                  writeTestFile(testConfig.name, tests)
         
     | 
| 
       1296 
     | 
    
         
            -
                  console.log(`Cleaned ${testConfig.name}`)
         
     | 
| 
       1297 
     | 
    
         
            -
                  return
         
     | 
| 
       1298 
     | 
    
         
            -
                }
         
     | 
| 
       1299 
1303 
     | 
    
         | 
| 
       1300 
     | 
    
         
            -
             
     | 
| 
       1301 
     | 
    
         
            -
             
     | 
| 
       1302 
     | 
    
         
            -
             
     | 
| 
       1303 
     | 
    
         
            -
             
     | 
| 
       1304 
     | 
    
         
            -
             
     | 
| 
       1305 
     | 
    
         
            -
             
     | 
| 
       1306 
     | 
    
         
            -
             
     | 
| 
      
 1304 
     | 
    
         
            +
                  if (args.deleteTest) {
         
     | 
| 
      
 1305 
     | 
    
         
            +
                    let tests = JSON.parse(runtime.fs.readFileSync(testConfig.name))
         
     | 
| 
      
 1306 
     | 
    
         
            +
                    tests = tests.filter((test) => test.query !== args.deleteTest)
         
     | 
| 
      
 1307 
     | 
    
         
            +
                    writeTestFile(testConfig.name, tests)
         
     | 
| 
      
 1308 
     | 
    
         
            +
                    console.log(`Remove the test for "${args.deleteTest}"`)
         
     | 
| 
      
 1309 
     | 
    
         
            +
                    return
         
     | 
| 
      
 1310 
     | 
    
         
            +
                  }
         
     | 
| 
       1307 
1311 
     | 
    
         | 
| 
       1308 
     | 
    
         
            -
             
     | 
| 
       1309 
     | 
    
         
            -
             
     | 
| 
       1310 
     | 
    
         
            -
             
     | 
| 
       1311 
     | 
    
         
            -
             
     | 
| 
       1312 
     | 
    
         
            -
             
     | 
| 
       1313 
     | 
    
         
            -
             
     | 
| 
       1314 
     | 
    
         
            -
             
     | 
| 
       1315 
     | 
    
         
            -
             
     | 
| 
       1316 
     | 
    
         
            -
             
     | 
| 
       1317 
     | 
    
         
            -
             
     | 
| 
      
 1312 
     | 
    
         
            +
                  const options = { rebuild: false }
         
     | 
| 
      
 1313 
     | 
    
         
            +
                  if (args.rebuildTemplate) {
         
     | 
| 
      
 1314 
     | 
    
         
            +
                    options.rebuild = true
         
     | 
| 
      
 1315 
     | 
    
         
            +
                  }
         
     | 
| 
      
 1316 
     | 
    
         
            +
                  if (args.greg) {
         
     | 
| 
      
 1317 
     | 
    
         
            +
                    config.server('http://localhost:3000', '6804954f-e56d-471f-bbb8-08e3c54d9321')
         
     | 
| 
      
 1318 
     | 
    
         
            +
                  }
         
     | 
| 
      
 1319 
     | 
    
         
            +
                  if (args.server) {
         
     | 
| 
      
 1320 
     | 
    
         
            +
                    config.server(args.server)
         
     | 
| 
      
 1321 
     | 
    
         
            +
                  }
         
     | 
| 
       1318 
1322 
     | 
    
         | 
| 
       1319 
     | 
    
         
            -
             
     | 
| 
       1320 
     | 
    
         
            -
             
     | 
| 
       1321 
     | 
    
         
            -
             
     | 
| 
      
 1323 
     | 
    
         
            +
                  if (args.queryParams) {
         
     | 
| 
      
 1324 
     | 
    
         
            +
                    config.setQueryParams(args.queryParams)
         
     | 
| 
      
 1325 
     | 
    
         
            +
                  }
         
     | 
| 
       1322 
1326 
     | 
    
         | 
| 
       1323 
     | 
    
         
            -
             
     | 
| 
       1324 
     | 
    
         
            -
             
     | 
| 
       1325 
     | 
    
         
            -
             
     | 
| 
      
 1327 
     | 
    
         
            +
                  if (args.debug) {
         
     | 
| 
      
 1328 
     | 
    
         
            +
                    config.config.debug = true
         
     | 
| 
      
 1329 
     | 
    
         
            +
                  }
         
     | 
| 
       1326 
1330 
     | 
    
         | 
| 
       1327 
     | 
    
         
            -
             
     | 
| 
       1328 
     | 
    
         
            -
             
     | 
| 
       1329 
     | 
    
         
            -
             
     | 
| 
      
 1331 
     | 
    
         
            +
                  if (args.reset) {
         
     | 
| 
      
 1332 
     | 
    
         
            +
                    config.config.skip_cache = true
         
     | 
| 
      
 1333 
     | 
    
         
            +
                  }
         
     | 
| 
       1330 
1334 
     | 
    
         | 
| 
       1331 
     | 
    
         
            -
             
     | 
| 
       1332 
     | 
    
         
            -
             
     | 
| 
       1333 
     | 
    
         
            -
             
     | 
| 
      
 1335 
     | 
    
         
            +
                  if (args.explainPriorities) {
         
     | 
| 
      
 1336 
     | 
    
         
            +
                    config.config.explain_priorities = true
         
     | 
| 
      
 1337 
     | 
    
         
            +
                  }
         
     | 
| 
       1334 
1338 
     | 
    
         | 
| 
       1335 
     | 
    
         
            -
             
     | 
| 
      
 1339 
     | 
    
         
            +
                  config.config.debugIncludeConvolutions = args.debugIncludeConvolutions || process.argv.includes('--debugIncludeConvolutions') || process.argv.includes('-dic')
         
     | 
| 
       1336 
1340 
     | 
    
         | 
| 
       1337 
     | 
    
         
            -
             
     | 
| 
       1338 
     | 
    
         
            -
             
     | 
| 
       1339 
     | 
    
         
            -
             
     | 
| 
       1340 
     | 
    
         
            -
             
     | 
| 
       1341 
     | 
    
         
            -
                  }
         
     | 
| 
       1342 
     | 
    
         
            -
                  configPrinted = true
         
     | 
| 
       1343 
     | 
    
         
            -
                  if (args.print) {
         
     | 
| 
       1344 
     | 
    
         
            -
                    if (args.print.includes('t')) {
         
     | 
| 
       1345 
     | 
    
         
            -
                      console.log('Test queries')
         
     | 
| 
       1346 
     | 
    
         
            -
                      let counter = 0
         
     | 
| 
       1347 
     | 
    
         
            -
                      for (const test of config.tests) {
         
     | 
| 
       1348 
     | 
    
         
            -
                        console.log(`${counter} - ${test.query}`)
         
     | 
| 
       1349 
     | 
    
         
            -
                        counter += 1
         
     | 
| 
       1350 
     | 
    
         
            -
                      }
         
     | 
| 
       1351 
     | 
    
         
            -
                    }
         
     | 
| 
       1352 
     | 
    
         
            -
                    if (args.print.includes('c')) {
         
     | 
| 
       1353 
     | 
    
         
            -
                      const { data } = setupProcessB({ config })
         
     | 
| 
       1354 
     | 
    
         
            -
                      console.log('Config as sent to server')
         
     | 
| 
       1355 
     | 
    
         
            -
                      console.log(JSON.stringify(data, null, 2))
         
     | 
| 
      
 1341 
     | 
    
         
            +
                  let configPrinted = false
         
     | 
| 
      
 1342 
     | 
    
         
            +
                  const printConfig = () => {
         
     | 
| 
      
 1343 
     | 
    
         
            +
                    if (configPrinted) {
         
     | 
| 
      
 1344 
     | 
    
         
            +
                      return
         
     | 
| 
       1356 
1345 
     | 
    
         
             
                    }
         
     | 
| 
      
 1346 
     | 
    
         
            +
                    configPrinted = true
         
     | 
| 
      
 1347 
     | 
    
         
            +
                    if (args.print) {
         
     | 
| 
      
 1348 
     | 
    
         
            +
                      if (args.print.includes('t')) {
         
     | 
| 
      
 1349 
     | 
    
         
            +
                        console.log('Test queries')
         
     | 
| 
      
 1350 
     | 
    
         
            +
                        let counter = 0
         
     | 
| 
      
 1351 
     | 
    
         
            +
                        for (const test of config.tests) {
         
     | 
| 
      
 1352 
     | 
    
         
            +
                          console.log(`${counter} - ${test.query}`)
         
     | 
| 
      
 1353 
     | 
    
         
            +
                          counter += 1
         
     | 
| 
      
 1354 
     | 
    
         
            +
                        }
         
     | 
| 
      
 1355 
     | 
    
         
            +
                      }
         
     | 
| 
      
 1356 
     | 
    
         
            +
                      if (args.print.includes('c')) {
         
     | 
| 
      
 1357 
     | 
    
         
            +
                        const { data } = setupProcessB({ config })
         
     | 
| 
      
 1358 
     | 
    
         
            +
                        console.log('Config as sent to server')
         
     | 
| 
      
 1359 
     | 
    
         
            +
                        console.log(JSON.stringify(data, null, 2))
         
     | 
| 
      
 1360 
     | 
    
         
            +
                      }
         
     | 
| 
       1357 
1361 
     | 
    
         | 
| 
       1358 
     | 
    
         
            -
             
     | 
| 
       1359 
     | 
    
         
            -
             
     | 
| 
       1360 
     | 
    
         
            -
             
     | 
| 
       1361 
     | 
    
         
            -
             
     | 
| 
      
 1362 
     | 
    
         
            +
                      if (args.print.includes('l')) {
         
     | 
| 
      
 1363 
     | 
    
         
            +
                        console.log('Module load ordering')
         
     | 
| 
      
 1364 
     | 
    
         
            +
                        for (const km of config.configs) {
         
     | 
| 
      
 1365 
     | 
    
         
            +
                          console.log(`  ${km.name}`)
         
     | 
| 
      
 1366 
     | 
    
         
            +
                        }
         
     | 
| 
       1362 
1367 
     | 
    
         
             
                      }
         
     | 
| 
       1363 
     | 
    
         
            -
             
     | 
| 
       1364 
     | 
    
         
            -
             
     | 
| 
       1365 
     | 
    
         
            -
             
     | 
| 
       1366 
     | 
    
         
            -
             
     | 
| 
       1367 
     | 
    
         
            -
             
     | 
| 
       1368 
     | 
    
         
            -
                         
     | 
| 
      
 1368 
     | 
    
         
            +
                      if (args.print.includes('w')) {
         
     | 
| 
      
 1369 
     | 
    
         
            +
                        // { literals: Object, patterns: Array(2), hierarchy: Array(97) }
         
     | 
| 
      
 1370 
     | 
    
         
            +
                        console.log('literals')
         
     | 
| 
      
 1371 
     | 
    
         
            +
                        for (const word in config.config.words.literals) {
         
     | 
| 
      
 1372 
     | 
    
         
            +
                          console.log('  ' + word.concat(...config.config.words.literals[word].map((def, i) => ((i > 0) ? ' '.repeat(4+word.length) : '  ') + JSON.stringify(def) + '\n')))
         
     | 
| 
      
 1373 
     | 
    
         
            +
                        }
         
     | 
| 
      
 1374 
     | 
    
         
            +
                        console.log('patterns')
         
     | 
| 
      
 1375 
     | 
    
         
            +
                        for (const pattern of config.config.words.patterns) {
         
     | 
| 
      
 1376 
     | 
    
         
            +
                          console.log('  ' + JSON.stringify(pattern))
         
     | 
| 
      
 1377 
     | 
    
         
            +
                        }
         
     | 
| 
       1369 
1378 
     | 
    
         
             
                      }
         
     | 
| 
       1370 
     | 
    
         
            -
                       
     | 
| 
       1371 
     | 
    
         
            -
             
     | 
| 
       1372 
     | 
    
         
            -
             
     | 
| 
      
 1379 
     | 
    
         
            +
                      if (args.print.includes('b')) {
         
     | 
| 
      
 1380 
     | 
    
         
            +
                        for (const bridge of config.config.bridges) {
         
     | 
| 
      
 1381 
     | 
    
         
            +
                          console.log(JSON.stringify(bridge))
         
     | 
| 
      
 1382 
     | 
    
         
            +
                        }
         
     | 
| 
       1373 
1383 
     | 
    
         
             
                      }
         
     | 
| 
       1374 
     | 
    
         
            -
             
     | 
| 
       1375 
     | 
    
         
            -
             
     | 
| 
       1376 
     | 
    
         
            -
             
     | 
| 
       1377 
     | 
    
         
            -
                         
     | 
| 
      
 1384 
     | 
    
         
            +
                      if (args.print.includes('o')) {
         
     | 
| 
      
 1385 
     | 
    
         
            +
                        for (const operator of config.config.operators) {
         
     | 
| 
      
 1386 
     | 
    
         
            +
                          console.log(JSON.stringify(operator))
         
     | 
| 
      
 1387 
     | 
    
         
            +
                        }
         
     | 
| 
       1378 
1388 
     | 
    
         
             
                      }
         
     | 
| 
       1379 
     | 
    
         
            -
             
     | 
| 
       1380 
     | 
    
         
            -
             
     | 
| 
       1381 
     | 
    
         
            -
             
     | 
| 
       1382 
     | 
    
         
            -
                        console.log(JSON.stringify(operator))
         
     | 
| 
      
 1389 
     | 
    
         
            +
                      if (args.print.includes('j')) {
         
     | 
| 
      
 1390 
     | 
    
         
            +
                        const { data } = setupProcessB({ config })
         
     | 
| 
      
 1391 
     | 
    
         
            +
                        console.log(JSON.stringify(data, null, 2))
         
     | 
| 
       1383 
1392 
     | 
    
         
             
                      }
         
     | 
| 
       1384 
     | 
    
         
            -
             
     | 
| 
       1385 
     | 
    
         
            -
             
     | 
| 
       1386 
     | 
    
         
            -
             
     | 
| 
       1387 
     | 
    
         
            -
             
     | 
| 
       1388 
     | 
    
         
            -
             
     | 
| 
       1389 
     | 
    
         
            -
             
     | 
| 
       1390 
     | 
    
         
            -
             
     | 
| 
       1391 
     | 
    
         
            -
             
     | 
| 
       1392 
     | 
    
         
            -
                      for (const property of properties) {
         
     | 
| 
       1393 
     | 
    
         
            -
                        console.log(`  ${property} ===============`)
         
     | 
| 
       1394 
     | 
    
         
            -
                        for (const association of config.config.associations[property]) {
         
     | 
| 
       1395 
     | 
    
         
            -
                          console.log(`  ${JSON.stringify(association)}`)
         
     | 
| 
      
 1393 
     | 
    
         
            +
                      if (args.print.includes('a')) {
         
     | 
| 
      
 1394 
     | 
    
         
            +
                        console.log('associations ================')
         
     | 
| 
      
 1395 
     | 
    
         
            +
                        const properties = ['negative', 'positive']
         
     | 
| 
      
 1396 
     | 
    
         
            +
                        for (const property of properties) {
         
     | 
| 
      
 1397 
     | 
    
         
            +
                          console.log(`  ${property} ===============`)
         
     | 
| 
      
 1398 
     | 
    
         
            +
                          for (const association of config.config.associations[property]) {
         
     | 
| 
      
 1399 
     | 
    
         
            +
                            console.log(`  ${JSON.stringify(association)}`)
         
     | 
| 
      
 1400 
     | 
    
         
            +
                          }
         
     | 
| 
       1396 
1401 
     | 
    
         
             
                        }
         
     | 
| 
       1397 
1402 
     | 
    
         
             
                      }
         
     | 
| 
       1398 
     | 
    
         
            -
             
     | 
| 
       1399 
     | 
    
         
            -
             
     | 
| 
       1400 
     | 
    
         
            -
                      console.log(JSON.stringify(config.config.objects, null, 2))
         
     | 
| 
       1401 
     | 
    
         
            -
                    }
         
     | 
| 
       1402 
     | 
    
         
            -
                    if (args.print.includes('p')) {
         
     | 
| 
       1403 
     | 
    
         
            -
                      for (const priority of config.config.priorities) {
         
     | 
| 
       1404 
     | 
    
         
            -
                        console.log(JSON.stringify(priority))
         
     | 
| 
      
 1403 
     | 
    
         
            +
                      if (args.print.includes('d')) {
         
     | 
| 
      
 1404 
     | 
    
         
            +
                        console.log(JSON.stringify(config.config.objects, null, 2))
         
     | 
| 
       1405 
1405 
     | 
    
         
             
                      }
         
     | 
| 
       1406 
     | 
    
         
            -
             
     | 
| 
       1407 
     | 
    
         
            -
             
     | 
| 
       1408 
     | 
    
         
            -
             
     | 
| 
       1409 
     | 
    
         
            -
                         
     | 
| 
      
 1406 
     | 
    
         
            +
                      if (args.print.includes('p')) {
         
     | 
| 
      
 1407 
     | 
    
         
            +
                        for (const priority of config.config.priorities) {
         
     | 
| 
      
 1408 
     | 
    
         
            +
                          console.log(JSON.stringify(priority))
         
     | 
| 
      
 1409 
     | 
    
         
            +
                        }
         
     | 
| 
       1410 
1410 
     | 
    
         
             
                      }
         
     | 
| 
       1411 
     | 
    
         
            -
             
     | 
| 
       1412 
     | 
    
         
            -
             
     | 
| 
       1413 
     | 
    
         
            -
             
     | 
| 
       1414 
     | 
    
         
            -
                      for (const semantic of easyToRead) {
         
     | 
| 
       1415 
     | 
    
         
            -
                        semantic.match = semantic.match.toString()
         
     | 
| 
       1416 
     | 
    
         
            -
                        semantic.apply = semantic.apply.toString()
         
     | 
| 
       1417 
     | 
    
         
            -
                        if (semantic.applyWrapped) {
         
     | 
| 
       1418 
     | 
    
         
            -
                          semantic.applyWrapped = semantic.applyWrapped.toString()
         
     | 
| 
      
 1411 
     | 
    
         
            +
                      if (args.print.includes('h')) {
         
     | 
| 
      
 1412 
     | 
    
         
            +
                        for (const edge of config.config.hierarchy) {
         
     | 
| 
      
 1413 
     | 
    
         
            +
                          console.log(JSON.stringify(edge))
         
     | 
| 
       1419 
1414 
     | 
    
         
             
                        }
         
     | 
| 
       1420 
1415 
     | 
    
         
             
                      }
         
     | 
| 
       1421 
     | 
    
         
            -
                       
     | 
| 
       1422 
     | 
    
         
            -
             
     | 
| 
       1423 
     | 
    
         
            -
             
     | 
| 
       1424 
     | 
    
         
            -
             
     | 
| 
       1425 
     | 
    
         
            -
             
     | 
| 
       1426 
     | 
    
         
            -
             
     | 
| 
       1427 
     | 
    
         
            -
             
     | 
| 
      
 1416 
     | 
    
         
            +
                      if (args.print.includes('g')) {
         
     | 
| 
      
 1417 
     | 
    
         
            +
                        const easyToRead = _.cloneDeep(config.config.generators)
         
     | 
| 
      
 1418 
     | 
    
         
            +
                        for (const semantic of easyToRead) {
         
     | 
| 
      
 1419 
     | 
    
         
            +
                          semantic.match = semantic.match.toString()
         
     | 
| 
      
 1420 
     | 
    
         
            +
                          semantic.apply = semantic.apply.toString()
         
     | 
| 
      
 1421 
     | 
    
         
            +
                          if (semantic.applyWrapped) {
         
     | 
| 
      
 1422 
     | 
    
         
            +
                            semantic.applyWrapped = semantic.applyWrapped.toString()
         
     | 
| 
      
 1423 
     | 
    
         
            +
                          }
         
     | 
| 
      
 1424 
     | 
    
         
            +
                        }
         
     | 
| 
      
 1425 
     | 
    
         
            +
                        console.dir(easyToRead)
         
     | 
| 
      
 1426 
     | 
    
         
            +
                      }
         
     | 
| 
      
 1427 
     | 
    
         
            +
                      if (args.print.includes('s')) {
         
     | 
| 
      
 1428 
     | 
    
         
            +
                        const easyToRead = _.cloneDeep(config.config.semantics)
         
     | 
| 
      
 1429 
     | 
    
         
            +
                        for (const semantic of easyToRead) {
         
     | 
| 
      
 1430 
     | 
    
         
            +
                          semantic.match = semantic.match.toString()
         
     | 
| 
      
 1431 
     | 
    
         
            +
                          semantic.apply = semantic.apply.toString()
         
     | 
| 
      
 1432 
     | 
    
         
            +
                        }
         
     | 
| 
      
 1433 
     | 
    
         
            +
                        console.dir(easyToRead)
         
     | 
| 
       1428 
1434 
     | 
    
         
             
                      }
         
     | 
| 
       1429 
     | 
    
         
            -
                      console.dir(easyToRead)
         
     | 
| 
       1430 
1435 
     | 
    
         
             
                    }
         
     | 
| 
       1431 
1436 
     | 
    
         
             
                  }
         
     | 
| 
       1432 
     | 
    
         
            -
                }
         
     | 
| 
       1433 
1437 
     | 
    
         | 
| 
       1434 
     | 
    
         
            -
             
     | 
| 
      
 1438 
     | 
    
         
            +
                  checkTemplate(template)
         
     | 
| 
       1435 
1439 
     | 
    
         | 
| 
       1436 
     | 
    
         
            -
             
     | 
| 
       1437 
     | 
    
         
            -
             
     | 
| 
       1438 
     | 
    
         
            -
             
     | 
| 
       1439 
     | 
    
         
            -
             
     | 
| 
       1440 
     | 
    
         
            -
             
     | 
| 
       1441 
     | 
    
         
            -
             
     | 
| 
       1442 
     | 
    
         
            -
             
     | 
| 
       1443 
     | 
    
         
            -
             
     | 
| 
       1444 
     | 
    
         
            -
             
     | 
| 
      
 1440 
     | 
    
         
            +
                  if (template) {
         
     | 
| 
      
 1441 
     | 
    
         
            +
                    let needsRebuild
         
     | 
| 
      
 1442 
     | 
    
         
            +
                    if (args.rebuildTemplate && !args.rebuildTemplateFull) {
         
     | 
| 
      
 1443 
     | 
    
         
            +
                      // get the startOfChanges for the partial rebuild
         
     | 
| 
      
 1444 
     | 
    
         
            +
                      needsRebuild = config.needsRebuild(template.template, template.instance, { ...options, rebuild: false })
         
     | 
| 
      
 1445 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 1446 
     | 
    
         
            +
                      // do a check or full rebuild
         
     | 
| 
      
 1447 
     | 
    
         
            +
                      needsRebuild = config.needsRebuild(template.template, template.instance, options)
         
     | 
| 
      
 1448 
     | 
    
         
            +
                    }
         
     | 
| 
       1445 
1449 
     | 
    
         | 
| 
       1446 
     | 
    
         
            -
             
     | 
| 
       1447 
     | 
    
         
            -
             
     | 
| 
       1448 
     | 
    
         
            -
             
     | 
| 
      
 1450 
     | 
    
         
            +
                    if (needsRebuild.needsRebuild) {
         
     | 
| 
      
 1451 
     | 
    
         
            +
                      if (needsRebuild.previousResultss) {
         
     | 
| 
      
 1452 
     | 
    
         
            +
                        console.log('Rebuild using the optimization to use previous results until a change is hit. For a full rebuild use -rtf')
         
     | 
| 
      
 1453 
     | 
    
         
            +
                      }
         
     | 
| 
      
 1454 
     | 
    
         
            +
                      console.log(`This module "${config.name}" needs rebuilding all other arguments will be ignored. Try again after the template is rebuilt.`)
         
     | 
| 
      
 1455 
     | 
    
         
            +
                      options.rebuild = true
         
     | 
| 
      
 1456 
     | 
    
         
            +
                      config.config.rebuild = true
         
     | 
| 
      
 1457 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1458 
     | 
    
         
            +
                    try {
         
     | 
| 
      
 1459 
     | 
    
         
            +
                      await config.load(rebuildTemplate, template.template, template.instance, { rebuild: needsRebuild.needsRebuild || options.rebuild, previousResultss: needsRebuild.previousResultss, startOfChanges: needsRebuild.startOfChanges })
         
     | 
| 
      
 1460 
     | 
    
         
            +
                    } catch (e) {
         
     | 
| 
      
 1461 
     | 
    
         
            +
                      console.error(`Error loading template for ${config.name}. ${e.error ? e.error : e}${e.stack ? e.stack : ''}`)
         
     | 
| 
      
 1462 
     | 
    
         
            +
                      runtime.process.exit(-1)
         
     | 
| 
      
 1463 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1464 
     | 
    
         
            +
                    if (!args.query) {
         
     | 
| 
      
 1465 
     | 
    
         
            +
                      printConfig()
         
     | 
| 
      
 1466 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1467 
     | 
    
         
            +
                    if (needsRebuild.needsRebuild) {
         
     | 
| 
      
 1468 
     | 
    
         
            +
                      return
         
     | 
| 
       1449 
1469 
     | 
    
         
             
                    }
         
     | 
| 
       1450 
     | 
    
         
            -
                    console.log(`This module "${config.name}" needs rebuilding all other arguments will be ignored. Try again after the template is rebuilt.`)
         
     | 
| 
       1451 
     | 
    
         
            -
                    options.rebuild = true
         
     | 
| 
       1452 
     | 
    
         
            -
                    config.config.rebuild = true
         
     | 
| 
       1453 
1470 
     | 
    
         
             
                  }
         
     | 
| 
       1454 
     | 
    
         
            -
             
     | 
| 
       1455 
     | 
    
         
            -
             
     | 
| 
       1456 
     | 
    
         
            -
             
     | 
| 
       1457 
     | 
    
         
            -
                    console.error(`Error loading template for ${config.name}. ${e.error ? e.error : e}${e.stack ? e.stack : ''}`)
         
     | 
| 
       1458 
     | 
    
         
            -
                    runtime.process.exit(-1)
         
     | 
| 
      
 1471 
     | 
    
         
            +
             
     | 
| 
      
 1472 
     | 
    
         
            +
                  if (args.retrain) {
         
     | 
| 
      
 1473 
     | 
    
         
            +
                    config.config.retrain = true
         
     | 
| 
       1459 
1474 
     | 
    
         
             
                  }
         
     | 
| 
       1460 
     | 
    
         
            -
             
     | 
| 
       1461 
     | 
    
         
            -
             
     | 
| 
      
 1475 
     | 
    
         
            +
             
     | 
| 
      
 1476 
     | 
    
         
            +
                  if (args.saveDeveloper) {
         
     | 
| 
      
 1477 
     | 
    
         
            +
                    args.save = true
         
     | 
| 
       1462 
1478 
     | 
    
         
             
                  }
         
     | 
| 
       1463 
     | 
    
         
            -
                  if ( 
     | 
| 
       1464 
     | 
    
         
            -
                     
     | 
| 
      
 1479 
     | 
    
         
            +
                  if (args.test || args.testVerbose || args.testAllVerbose || args.save) {
         
     | 
| 
      
 1480 
     | 
    
         
            +
                    global.transitoryMode = true
         
     | 
| 
       1465 
1481 
     | 
    
         
             
                  }
         
     | 
| 
       1466 
     | 
    
         
            -
             
     | 
| 
       1467 
     | 
    
         
            -
             
     | 
| 
       1468 
     | 
    
         
            -
             
     | 
| 
       1469 
     | 
    
         
            -
                   
     | 
| 
       1470 
     | 
    
         
            -
             
     | 
| 
       1471 
     | 
    
         
            -
             
     | 
| 
       1472 
     | 
    
         
            -
             
     | 
| 
       1473 
     | 
    
         
            -
             
     | 
| 
       1474 
     | 
    
         
            -
             
     | 
| 
       1475 
     | 
    
         
            -
             
     | 
| 
       1476 
     | 
    
         
            -
             
     | 
| 
       1477 
     | 
    
         
            -
             
     | 
| 
       1478 
     | 
    
         
            -
             
     | 
| 
       1479 
     | 
    
         
            -
             
     | 
| 
       1480 
     | 
    
         
            -
             
     | 
| 
       1481 
     | 
    
         
            -
                // } else if (args.build) {
         
     | 
| 
       1482 
     | 
    
         
            -
                } else if (args.info) {
         
     | 
| 
       1483 
     | 
    
         
            -
                  showInfo(description, section, config)
         
     | 
| 
       1484 
     | 
    
         
            -
                } else if (args.test || args.testVerbose || args.testAllVerbose) {
         
     | 
| 
       1485 
     | 
    
         
            -
                  // TODO make test always a string
         
     | 
| 
       1486 
     | 
    
         
            -
                  if (typeof test === 'string') {
         
     | 
| 
       1487 
     | 
    
         
            -
                    const l = (n, hasError) => {
         
     | 
| 
       1488 
     | 
    
         
            -
                      if (n === 0) {
         
     | 
| 
       1489 
     | 
    
         
            -
                        if (hasError) {
         
     | 
| 
       1490 
     | 
    
         
            -
                          runtime.process.exit(-1)
         
     | 
| 
      
 1482 
     | 
    
         
            +
                  if (!args.query && !args.test && !args.info && (args.save || args.saveDeveloper)) {
         
     | 
| 
      
 1483 
     | 
    
         
            +
                    global.transitoryMode = true
         
     | 
| 
      
 1484 
     | 
    
         
            +
                    saveTests(config, test, testConfig, args.saveDeveloper)
         
     | 
| 
      
 1485 
     | 
    
         
            +
                  // } else if (args.build) {
         
     | 
| 
      
 1486 
     | 
    
         
            +
                  } else if (args.info) {
         
     | 
| 
      
 1487 
     | 
    
         
            +
                    showInfo(description, section, config)
         
     | 
| 
      
 1488 
     | 
    
         
            +
                  } else if (args.test || args.testVerbose || args.testAllVerbose) {
         
     | 
| 
      
 1489 
     | 
    
         
            +
                    // TODO make test always a string
         
     | 
| 
      
 1490 
     | 
    
         
            +
                    if (typeof test === 'string') {
         
     | 
| 
      
 1491 
     | 
    
         
            +
                      const l = async (n, hasError) => {
         
     | 
| 
      
 1492 
     | 
    
         
            +
                        if (n === 0) {
         
     | 
| 
      
 1493 
     | 
    
         
            +
                          if (hasError) {
         
     | 
| 
      
 1494 
     | 
    
         
            +
                            runtime.process.exit(-1)
         
     | 
| 
      
 1495 
     | 
    
         
            +
                          }
         
     | 
| 
      
 1496 
     | 
    
         
            +
                          return
         
     | 
| 
       1491 
1497 
     | 
    
         
             
                        }
         
     | 
| 
       1492 
     | 
    
         
            -
                         
     | 
| 
       1493 
     | 
    
         
            -
             
     | 
| 
       1494 
     | 
    
         
            -
             
     | 
| 
       1495 
     | 
    
         
            -
             
     | 
| 
       1496 
     | 
    
         
            -
             
     | 
| 
       1497 
     | 
    
         
            -
                         
     | 
| 
       1498 
     | 
    
         
            -
                        test  
     | 
| 
       1499 
     | 
    
         
            -
             
     | 
| 
       1500 
     | 
    
         
            -
             
     | 
| 
       1501 
     | 
    
         
            -
             
     | 
| 
       1502 
     | 
    
         
            -
             
     | 
| 
       1503 
     | 
    
         
            -
             
     | 
| 
       1504 
     | 
    
         
            -
             
     | 
| 
       1505 
     | 
    
         
            -
             
     | 
| 
       1506 
     | 
    
         
            -
                          for (const result of results) {
         
     | 
| 
       1507 
     | 
    
         
            -
                            if (JSON.stringify(result.expected.paraphrases) !== JSON.stringify(result.actual.paraphrases)) {
         
     | 
| 
       1508 
     | 
    
         
            -
                              result.hasError = true
         
     | 
| 
       1509 
     | 
    
         
            -
                            }
         
     | 
| 
       1510 
     | 
    
         
            -
                            if (!args.testNoParenthesized) {
         
     | 
| 
       1511 
     | 
    
         
            -
                              if (JSON.stringify(result.expected.paraphrasesParenthesized) !== JSON.stringify(result.actual.paraphrasesParenthesized)) {
         
     | 
| 
      
 1498 
     | 
    
         
            +
                        let useTestConfig = testConfig
         
     | 
| 
      
 1499 
     | 
    
         
            +
                        if (args.testModuleName) {
         
     | 
| 
      
 1500 
     | 
    
         
            +
                          useTestConfig = config.getConfigs()[args.testModuleName].getTestConfig()
         
     | 
| 
      
 1501 
     | 
    
         
            +
                          useTestConfig.testModuleName = args.testModuleName
         
     | 
| 
      
 1502 
     | 
    
         
            +
                          test = useTestConfig.name
         
     | 
| 
      
 1503 
     | 
    
         
            +
                        }
         
     | 
| 
      
 1504 
     | 
    
         
            +
                        await runTests(config, test, { args, debug: args.debug, testConfig: useTestConfig, verbose: args.testVerbose || args.testAllVerbose, stopAtFirstError: !args.testAllVerbose }).then((results) => {
         
     | 
| 
      
 1505 
     | 
    
         
            +
                          let newError = false
         
     | 
| 
      
 1506 
     | 
    
         
            +
                          if (results.length > 0) {
         
     | 
| 
      
 1507 
     | 
    
         
            +
                            let headerShown = false
         
     | 
| 
      
 1508 
     | 
    
         
            +
             
     | 
| 
      
 1509 
     | 
    
         
            +
                            let hasError = false
         
     | 
| 
      
 1510 
     | 
    
         
            +
                            for (const result of results) {
         
     | 
| 
      
 1511 
     | 
    
         
            +
                              if (JSON.stringify(result.expected.paraphrases) !== JSON.stringify(result.actual.paraphrases)) {
         
     | 
| 
       1512 
1512 
     | 
    
         
             
                                result.hasError = true
         
     | 
| 
       1513 
1513 
     | 
    
         
             
                              }
         
     | 
| 
       1514 
     | 
    
         
            -
                              if ( 
     | 
| 
      
 1514 
     | 
    
         
            +
                              if (!args.testNoParenthesized) {
         
     | 
| 
      
 1515 
     | 
    
         
            +
                                if (JSON.stringify(result.expected.paraphrasesParenthesized) !== JSON.stringify(result.actual.paraphrasesParenthesized)) {
         
     | 
| 
      
 1516 
     | 
    
         
            +
                                  result.hasError = true
         
     | 
| 
      
 1517 
     | 
    
         
            +
                                }
         
     | 
| 
      
 1518 
     | 
    
         
            +
                                if (JSON.stringify(result.expected.generatedParenthesized) !== JSON.stringify(result.actual.generatedParenthesized)) {
         
     | 
| 
      
 1519 
     | 
    
         
            +
                                  result.hasError = true
         
     | 
| 
      
 1520 
     | 
    
         
            +
                                }
         
     | 
| 
      
 1521 
     | 
    
         
            +
                              }
         
     | 
| 
      
 1522 
     | 
    
         
            +
                              if (JSON.stringify(result.expected.responses) !== JSON.stringify(result.actual.responses)) {
         
     | 
| 
       1515 
1523 
     | 
    
         
             
                                result.hasError = true
         
     | 
| 
       1516 
1524 
     | 
    
         
             
                              }
         
     | 
| 
      
 1525 
     | 
    
         
            +
                              if (JSON.stringify(result.expected.checked) !== JSON.stringify(result.actual.checked)) {
         
     | 
| 
      
 1526 
     | 
    
         
            +
                                result.hasError = true
         
     | 
| 
      
 1527 
     | 
    
         
            +
                              }
         
     | 
| 
      
 1528 
     | 
    
         
            +
                              if (!sameJSON(result.expected.checkedContexts, result.actual.checkedContexts)) {
         
     | 
| 
      
 1529 
     | 
    
         
            +
                                result.hasError = true
         
     | 
| 
      
 1530 
     | 
    
         
            +
                              }
         
     | 
| 
      
 1531 
     | 
    
         
            +
                              if (result.hasError) {
         
     | 
| 
      
 1532 
     | 
    
         
            +
                                hasError = true
         
     | 
| 
      
 1533 
     | 
    
         
            +
                              }
         
     | 
| 
       1517 
1534 
     | 
    
         
             
                            }
         
     | 
| 
       1518 
     | 
    
         
            -
                            if (JSON.stringify(result.expected.responses) !== JSON.stringify(result.actual.responses)) {
         
     | 
| 
       1519 
     | 
    
         
            -
                              result.hasError = true
         
     | 
| 
       1520 
     | 
    
         
            -
                            }
         
     | 
| 
       1521 
     | 
    
         
            -
                            if (JSON.stringify(result.expected.checked) !== JSON.stringify(result.actual.checked)) {
         
     | 
| 
       1522 
     | 
    
         
            -
                              result.hasError = true
         
     | 
| 
       1523 
     | 
    
         
            -
                            }
         
     | 
| 
       1524 
     | 
    
         
            -
                            if (!sameJSON(result.expected.checkedContexts, result.actual.checkedContexts)) {
         
     | 
| 
       1525 
     | 
    
         
            -
                              result.hasError = true
         
     | 
| 
       1526 
     | 
    
         
            -
                            }
         
     | 
| 
       1527 
     | 
    
         
            -
                            if (result.hasError) {
         
     | 
| 
       1528 
     | 
    
         
            -
                              hasError = true
         
     | 
| 
       1529 
     | 
    
         
            -
                            }
         
     | 
| 
       1530 
     | 
    
         
            -
                          }
         
     | 
| 
       1531 
1535 
     | 
    
         | 
| 
       1532 
     | 
    
         
            -
             
     | 
| 
       1533 
     | 
    
         
            -
             
     | 
| 
       1534 
     | 
    
         
            -
             
     | 
| 
       1535 
     | 
    
         
            -
             
     | 
| 
       1536 
     | 
    
         
            -
             
     | 
| 
       1537 
     | 
    
         
            -
             
     | 
| 
      
 1536 
     | 
    
         
            +
                            if (hasError) {
         
     | 
| 
      
 1537 
     | 
    
         
            +
                              console.log('**************************** ERRORS ************************')
         
     | 
| 
      
 1538 
     | 
    
         
            +
                              for (const result of results) {
         
     | 
| 
      
 1539 
     | 
    
         
            +
                                console.log('Utterance: ', result.utterance)
         
     | 
| 
      
 1540 
     | 
    
         
            +
                                const show = (label, expected, actual) => {
         
     | 
| 
      
 1541 
     | 
    
         
            +
                                  if (JSON.stringify(expected) !== JSON.stringify(actual)) {
         
     | 
| 
      
 1542 
     | 
    
         
            +
                                    if (!headerShown) {
         
     | 
| 
      
 1543 
     | 
    
         
            +
                                      console.log('  Failure')
         
     | 
| 
      
 1544 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 1545 
     | 
    
         
            +
                                    console.log(`    expected ${label}`, expected)
         
     | 
| 
      
 1546 
     | 
    
         
            +
                                    console.log(`    actual ${label}  `, actual)
         
     | 
| 
      
 1547 
     | 
    
         
            +
                                    newError = true
         
     | 
| 
      
 1548 
     | 
    
         
            +
                                    headerShown = true
         
     | 
| 
      
 1549 
     | 
    
         
            +
                                    if (args.vimdiff) {
         
     | 
| 
      
 1550 
     | 
    
         
            +
                                      vimdiff(actual, expected, `"${result.utterance}" - ${label}`)
         
     | 
| 
      
 1551 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 1552 
     | 
    
         
            +
                                    result.hasError = true
         
     | 
| 
      
 1553 
     | 
    
         
            +
                                  }
         
     | 
| 
      
 1554 
     | 
    
         
            +
                                }
         
     | 
| 
      
 1555 
     | 
    
         
            +
                                show('paraphrases', result.expected.paraphrases, result.actual.paraphrases)
         
     | 
| 
      
 1556 
     | 
    
         
            +
                                if (!args.testNoParenthesized) {
         
     | 
| 
      
 1557 
     | 
    
         
            +
                                  show('paraphrases parenthesized', result.expected.paraphrasesParenthesized, result.actual.paraphrasesParenthesized)
         
     | 
| 
      
 1558 
     | 
    
         
            +
                                }
         
     | 
| 
      
 1559 
     | 
    
         
            +
                                show('responses', result.expected.responses, result.actual.responses)
         
     | 
| 
      
 1560 
     | 
    
         
            +
                                if (!args.testNoParenthesized) {
         
     | 
| 
      
 1561 
     | 
    
         
            +
                                  show('responses parenthesized', result.expected.generatedParenthesized, result.actual.generatedParenthesized)
         
     | 
| 
      
 1562 
     | 
    
         
            +
                                }
         
     | 
| 
      
 1563 
     | 
    
         
            +
                                /*
         
     | 
| 
      
 1564 
     | 
    
         
            +
                                if (JSON.stringify(result.expected.paraphrases) !== JSON.stringify(result.actual.paraphrases)) {
         
     | 
| 
       1538 
1565 
     | 
    
         
             
                                  if (!headerShown) {
         
     | 
| 
       1539 
1566 
     | 
    
         
             
                                    console.log('  Failure')
         
     | 
| 
       1540 
1567 
     | 
    
         
             
                                  }
         
     | 
| 
       1541 
     | 
    
         
            -
                                  console.log( 
     | 
| 
       1542 
     | 
    
         
            -
                                  console.log( 
     | 
| 
      
 1568 
     | 
    
         
            +
                                  console.log('    expected paraphrases', result.expected.paraphrases)
         
     | 
| 
      
 1569 
     | 
    
         
            +
                                  console.log('    actual paraphrases  ', result.actual.paraphrases)
         
     | 
| 
       1543 
1570 
     | 
    
         
             
                                  newError = true
         
     | 
| 
       1544 
1571 
     | 
    
         
             
                                  headerShown = true
         
     | 
| 
       1545 
     | 
    
         
            -
                                  if (args.vimdiff) {
         
     | 
| 
       1546 
     | 
    
         
            -
                                    vimdiff(actual, expected, `"${result.utterance}" - ${label}`)
         
     | 
| 
       1547 
     | 
    
         
            -
                                  }
         
     | 
| 
       1548 
     | 
    
         
            -
                                  result.hasError = true
         
     | 
| 
       1549 
     | 
    
         
            -
                                }
         
     | 
| 
       1550 
     | 
    
         
            -
                              }
         
     | 
| 
       1551 
     | 
    
         
            -
                              show('paraphrases', result.expected.paraphrases, result.actual.paraphrases)
         
     | 
| 
       1552 
     | 
    
         
            -
                              if (!args.testNoParenthesized) {
         
     | 
| 
       1553 
     | 
    
         
            -
                                show('paraphrases parenthesized', result.expected.paraphrasesParenthesized, result.actual.paraphrasesParenthesized)
         
     | 
| 
       1554 
     | 
    
         
            -
                              }
         
     | 
| 
       1555 
     | 
    
         
            -
                              show('responses', result.expected.responses, result.actual.responses)
         
     | 
| 
       1556 
     | 
    
         
            -
                              if (!args.testNoParenthesized) {
         
     | 
| 
       1557 
     | 
    
         
            -
                                show('responses parenthesized', result.expected.generatedParenthesized, result.actual.generatedParenthesized)
         
     | 
| 
       1558 
     | 
    
         
            -
                              }
         
     | 
| 
       1559 
     | 
    
         
            -
                              /*
         
     | 
| 
       1560 
     | 
    
         
            -
                              if (JSON.stringify(result.expected.paraphrases) !== JSON.stringify(result.actual.paraphrases)) {
         
     | 
| 
       1561 
     | 
    
         
            -
                                if (!headerShown) {
         
     | 
| 
       1562 
     | 
    
         
            -
                                  console.log('  Failure')
         
     | 
| 
       1563 
1572 
     | 
    
         
             
                                }
         
     | 
| 
       1564 
     | 
    
         
            -
                                 
     | 
| 
       1565 
     | 
    
         
            -
             
     | 
| 
       1566 
     | 
    
         
            -
             
     | 
| 
       1567 
     | 
    
         
            -
             
     | 
| 
       1568 
     | 
    
         
            -
             
     | 
| 
       1569 
     | 
    
         
            -
             
     | 
| 
       1570 
     | 
    
         
            -
             
     | 
| 
       1571 
     | 
    
         
            -
                                   
     | 
| 
      
 1573 
     | 
    
         
            +
                                if (JSON.stringify(result.expected.responses) !== JSON.stringify(result.actual.responses)) {
         
     | 
| 
      
 1574 
     | 
    
         
            +
                                  if (!headerShown) {
         
     | 
| 
      
 1575 
     | 
    
         
            +
                                    console.log('  Failure')
         
     | 
| 
      
 1576 
     | 
    
         
            +
                                  }
         
     | 
| 
      
 1577 
     | 
    
         
            +
                                  console.log('    expected responses  ', result.expected.responses)
         
     | 
| 
      
 1578 
     | 
    
         
            +
                                  console.log('    actual responses    ', result.actual.responses)
         
     | 
| 
      
 1579 
     | 
    
         
            +
                                  newError = true
         
     | 
| 
      
 1580 
     | 
    
         
            +
                                  headerShown = true
         
     | 
| 
       1572 
1581 
     | 
    
         
             
                                }
         
     | 
| 
       1573 
     | 
    
         
            -
                                 
     | 
| 
       1574 
     | 
    
         
            -
                                 
     | 
| 
       1575 
     | 
    
         
            -
             
     | 
| 
       1576 
     | 
    
         
            -
             
     | 
| 
       1577 
     | 
    
         
            -
             
     | 
| 
       1578 
     | 
    
         
            -
             
     | 
| 
       1579 
     | 
    
         
            -
             
     | 
| 
       1580 
     | 
    
         
            -
             
     | 
| 
       1581 
     | 
    
         
            -
                                   
     | 
| 
      
 1582 
     | 
    
         
            +
                                */
         
     | 
| 
      
 1583 
     | 
    
         
            +
                                if (JSON.stringify(result.expected.checked) !== JSON.stringify(result.actual.checked)) {
         
     | 
| 
      
 1584 
     | 
    
         
            +
                                  if (!headerShown) {
         
     | 
| 
      
 1585 
     | 
    
         
            +
                                    console.log('  Failure')
         
     | 
| 
      
 1586 
     | 
    
         
            +
                                  }
         
     | 
| 
      
 1587 
     | 
    
         
            +
                                  const widths = [4, 18, 72]
         
     | 
| 
      
 1588 
     | 
    
         
            +
                                  const lines = new Lines(widths)
         
     | 
| 
      
 1589 
     | 
    
         
            +
                                  lines.setElement(1, 1, 'expected checked objects')
         
     | 
| 
      
 1590 
     | 
    
         
            +
                                  lines.setElement(2, 2, JSON.stringify(result.expected.checked, null, 2))
         
     | 
| 
      
 1591 
     | 
    
         
            +
                                  lines.log()
         
     | 
| 
      
 1592 
     | 
    
         
            +
                                  lines.setElement(1, 1, 'actual checked objects')
         
     | 
| 
      
 1593 
     | 
    
         
            +
                                  lines.setElement(2, 2, JSON.stringify(result.actual.checked, null, 2))
         
     | 
| 
      
 1594 
     | 
    
         
            +
                                  lines.log()
         
     | 
| 
      
 1595 
     | 
    
         
            +
                                  if (args.vimdiff) {
         
     | 
| 
      
 1596 
     | 
    
         
            +
                                    show('checked properties for objects', result.expected.checked, result.actual.checked)
         
     | 
| 
      
 1597 
     | 
    
         
            +
                                  }
         
     | 
| 
      
 1598 
     | 
    
         
            +
                                  newError = true
         
     | 
| 
      
 1599 
     | 
    
         
            +
                                  headerShown = true
         
     | 
| 
       1582 
1600 
     | 
    
         
             
                                }
         
     | 
| 
       1583 
     | 
    
         
            -
                                 
     | 
| 
       1584 
     | 
    
         
            -
             
     | 
| 
       1585 
     | 
    
         
            -
             
     | 
| 
       1586 
     | 
    
         
            -
             
     | 
| 
       1587 
     | 
    
         
            -
             
     | 
| 
       1588 
     | 
    
         
            -
             
     | 
| 
       1589 
     | 
    
         
            -
             
     | 
| 
       1590 
     | 
    
         
            -
             
     | 
| 
       1591 
     | 
    
         
            -
             
     | 
| 
       1592 
     | 
    
         
            -
                                   
     | 
| 
      
 1601 
     | 
    
         
            +
                                if (!sameJSON(result.expected.checkedContexts, result.actual.checkedContexts)) {
         
     | 
| 
      
 1602 
     | 
    
         
            +
                                  if (!headerShown) {
         
     | 
| 
      
 1603 
     | 
    
         
            +
                                    console.log('  Failure')
         
     | 
| 
      
 1604 
     | 
    
         
            +
                                  }
         
     | 
| 
      
 1605 
     | 
    
         
            +
                                  const widths = [4, 18, 72]
         
     | 
| 
      
 1606 
     | 
    
         
            +
                                  const lines = new Lines(widths)
         
     | 
| 
      
 1607 
     | 
    
         
            +
                                  lines.setElement(1, 1, 'expected checked contexts', true)
         
     | 
| 
      
 1608 
     | 
    
         
            +
                                  lines.setElement(2, 2, JSON.stringify(result.expected.checkedContexts, null, 2))
         
     | 
| 
      
 1609 
     | 
    
         
            +
                                  lines.log()
         
     | 
| 
      
 1610 
     | 
    
         
            +
                                  lines.setElement(1, 1, 'actual checked contexts', true)
         
     | 
| 
      
 1611 
     | 
    
         
            +
                                  lines.setElement(2, 2, JSON.stringify(result.actual.checkedContexts, null, 2))
         
     | 
| 
      
 1612 
     | 
    
         
            +
                                  lines.log()
         
     | 
| 
      
 1613 
     | 
    
         
            +
                                  if (args.vimdiff) {
         
     | 
| 
      
 1614 
     | 
    
         
            +
                                    show('checked properties for context', result.expected.checkedContexts, result.actual.checkedContexts)
         
     | 
| 
      
 1615 
     | 
    
         
            +
                                  }
         
     | 
| 
      
 1616 
     | 
    
         
            +
                                  newError = true
         
     | 
| 
      
 1617 
     | 
    
         
            +
                                  headerShown = true
         
     | 
| 
       1593 
1618 
     | 
    
         
             
                                }
         
     | 
| 
       1594 
     | 
    
         
            -
                                newError = true
         
     | 
| 
       1595 
     | 
    
         
            -
                                headerShown = true
         
     | 
| 
       1596 
1619 
     | 
    
         
             
                              }
         
     | 
| 
       1597 
     | 
    
         
            -
             
     | 
| 
       1598 
     | 
    
         
            -
             
     | 
| 
       1599 
     | 
    
         
            -
             
     | 
| 
      
 1620 
     | 
    
         
            +
                            } else {
         
     | 
| 
      
 1621 
     | 
    
         
            +
                              if (results.length > 0 && args.vimdiff) {
         
     | 
| 
      
 1622 
     | 
    
         
            +
                                for (const result of results) {
         
     | 
| 
      
 1623 
     | 
    
         
            +
                                  vimdiff(result.actual, result.expected)
         
     | 
| 
       1600 
1624 
     | 
    
         
             
                                }
         
     | 
| 
       1601 
     | 
    
         
            -
                                const widths = [4, 18, 72]
         
     | 
| 
       1602 
     | 
    
         
            -
                                const lines = new Lines(widths)
         
     | 
| 
       1603 
     | 
    
         
            -
                                lines.setElement(1, 1, 'expected checked contexts', true)
         
     | 
| 
       1604 
     | 
    
         
            -
                                lines.setElement(2, 2, JSON.stringify(result.expected.checkedContexts, null, 2))
         
     | 
| 
       1605 
     | 
    
         
            -
                                lines.log()
         
     | 
| 
       1606 
     | 
    
         
            -
                                lines.setElement(1, 1, 'actual checked contexts', true)
         
     | 
| 
       1607 
     | 
    
         
            -
                                lines.setElement(2, 2, JSON.stringify(result.actual.checkedContexts, null, 2))
         
     | 
| 
       1608 
     | 
    
         
            -
                                lines.log()
         
     | 
| 
       1609 
     | 
    
         
            -
                                if (args.vimdiff) {
         
     | 
| 
       1610 
     | 
    
         
            -
                                  show('checked properties for context', result.expected.checkedContexts, result.actual.checkedContexts)
         
     | 
| 
       1611 
     | 
    
         
            -
                                }
         
     | 
| 
       1612 
     | 
    
         
            -
                                newError = true
         
     | 
| 
       1613 
     | 
    
         
            -
                                headerShown = true
         
     | 
| 
       1614 
1625 
     | 
    
         
             
                              }
         
     | 
| 
       1615 
1626 
     | 
    
         
             
                            }
         
     | 
| 
       1616 
     | 
    
         
            -
             
     | 
| 
       1617 
     | 
    
         
            -
             
     | 
| 
       1618 
     | 
    
         
            -
             
     | 
| 
       1619 
     | 
    
         
            -
             
     | 
| 
      
 1627 
     | 
    
         
            +
                            if (hasError) {
         
     | 
| 
      
 1628 
     | 
    
         
            +
                              if (!headerShown) {
         
     | 
| 
      
 1629 
     | 
    
         
            +
                                if (!(useTestConfig.check && useTestConfig.check.length > 0)) {
         
     | 
| 
      
 1630 
     | 
    
         
            +
                                  console.log('There are failures due to things other than paraphrases, responses and checked properties being different. They are not shown because you ran -tv or -tva which only shows difference in paraphrase and results. Usually what I do is -s and do a diff to make sure there are no other problems. If the paraphrases or results were different they would have shown here.')
         
     | 
| 
      
 1631 
     | 
    
         
            +
                                }
         
     | 
| 
       1620 
1632 
     | 
    
         
             
                              }
         
     | 
| 
       1621 
     | 
    
         
            -
                            }
         
     | 
| 
       1622 
     | 
    
         
            -
                          }
         
     | 
| 
       1623 
     | 
    
         
            -
                          if (hasError) {
         
     | 
| 
       1624 
     | 
    
         
            -
                            if (!headerShown) {
         
     | 
| 
       1625 
1633 
     | 
    
         
             
                              if (!(useTestConfig.check && useTestConfig.check.length > 0)) {
         
     | 
| 
       1626 
     | 
    
         
            -
                                console.log(' 
     | 
| 
       1627 
     | 
    
         
            -
             
     | 
| 
       1628 
     | 
    
         
            -
             
     | 
| 
       1629 
     | 
    
         
            -
             
     | 
| 
       1630 
     | 
    
         
            -
             
     | 
| 
       1631 
     | 
    
         
            -
             
     | 
| 
       1632 
     | 
    
         
            -
             
     | 
| 
       1633 
     | 
    
         
            -
                              for (const result of results) {
         
     | 
| 
       1634 
     | 
    
         
            -
                                if (result.hasError) {
         
     | 
| 
       1635 
     | 
    
         
            -
                                  errorCount += 1
         
     | 
| 
      
 1634 
     | 
    
         
            +
                                console.log('use -v arg to write files expected.json and actual.json in the current directory for detailed comparison. Or do -s and then git diff the changes.')
         
     | 
| 
      
 1635 
     | 
    
         
            +
                                // console.log(JSON.stringify(contexts))
         
     | 
| 
      
 1636 
     | 
    
         
            +
                                let errorCount = 0
         
     | 
| 
      
 1637 
     | 
    
         
            +
                                for (const result of results) {
         
     | 
| 
      
 1638 
     | 
    
         
            +
                                  if (result.hasError) {
         
     | 
| 
      
 1639 
     | 
    
         
            +
                                    errorCount += 1
         
     | 
| 
      
 1640 
     | 
    
         
            +
                                  }
         
     | 
| 
       1636 
1641 
     | 
    
         
             
                                }
         
     | 
| 
      
 1642 
     | 
    
         
            +
                                console.log(`**************************** THERE WERE ${errorCount} TEST FAILURES ************************`)
         
     | 
| 
       1637 
1643 
     | 
    
         
             
                              }
         
     | 
| 
       1638 
     | 
    
         
            -
                              console.log(`**************************** THERE WERE ${errorCount} TEST FAILURES ************************`)
         
     | 
| 
       1639 
1644 
     | 
    
         
             
                            }
         
     | 
| 
       1640 
1645 
     | 
    
         
             
                          }
         
     | 
| 
       1641 
     | 
    
         
            -
             
     | 
| 
       1642 
     | 
    
         
            -
             
     | 
| 
       1643 
     | 
    
         
            -
                         
     | 
| 
       1644 
     | 
    
         
            -
             
     | 
| 
       1645 
     | 
    
         
            -
             
     | 
| 
       1646 
     | 
    
         
            -
             
     | 
| 
       1647 
     | 
    
         
            -
                         
     | 
| 
      
 1646 
     | 
    
         
            +
                          // const contexts = { failures: results }
         
     | 
| 
      
 1647 
     | 
    
         
            +
                          l(n - 1, hasError || newError)
         
     | 
| 
      
 1648 
     | 
    
         
            +
                        }).catch((error) => {
         
     | 
| 
      
 1649 
     | 
    
         
            +
                          console.error(error)
         
     | 
| 
      
 1650 
     | 
    
         
            +
                          runtime.process.exit(-1)
         
     | 
| 
      
 1651 
     | 
    
         
            +
                          errorHandler(error)
         
     | 
| 
      
 1652 
     | 
    
         
            +
                        })
         
     | 
| 
      
 1653 
     | 
    
         
            +
                      }
         
     | 
| 
      
 1654 
     | 
    
         
            +
                      await l(args.count, false)
         
     | 
| 
      
 1655 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 1656 
     | 
    
         
            +
                      test()
         
     | 
| 
      
 1657 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1658 
     | 
    
         
            +
                  } else if (args.loop) {
         
     | 
| 
      
 1659 
     | 
    
         
            +
                    const readline = runtime.readline.createInterface({ input: runtime.process.stdin, output: runtime.process.stdout })
         
     | 
| 
      
 1660 
     | 
    
         
            +
                    const f = () => readline.question('Enter query? (newline to quit) ', query => {
         
     | 
| 
      
 1661 
     | 
    
         
            +
                      query = query.trim()
         
     | 
| 
      
 1662 
     | 
    
         
            +
                      if (query.length === 0) {
         
     | 
| 
      
 1663 
     | 
    
         
            +
                        return readline.close()
         
     | 
| 
      
 1664 
     | 
    
         
            +
                      }
         
     | 
| 
      
 1665 
     | 
    
         
            +
                      const promise = _process(config, query, { testsFN: test }).then((results) => {
         
     | 
| 
      
 1666 
     | 
    
         
            +
                        console.log(results.responses.join(' '))
         
     | 
| 
       1648 
1667 
     | 
    
         
             
                      })
         
     | 
| 
      
 1668 
     | 
    
         
            +
                      if (!('then' in promise)) {
         
     | 
| 
      
 1669 
     | 
    
         
            +
                        throw new Error('Return a promise from process in the definition of knowledgeModule')
         
     | 
| 
      
 1670 
     | 
    
         
            +
                      }
         
     | 
| 
      
 1671 
     | 
    
         
            +
                      promise
         
     | 
| 
      
 1672 
     | 
    
         
            +
                        .then(() => {
         
     | 
| 
      
 1673 
     | 
    
         
            +
                          f()
         
     | 
| 
      
 1674 
     | 
    
         
            +
                        })
         
     | 
| 
      
 1675 
     | 
    
         
            +
                        .catch((e) => {
         
     | 
| 
      
 1676 
     | 
    
         
            +
                          if (e.errno == 'ECONNREFUSED') {
         
     | 
| 
      
 1677 
     | 
    
         
            +
                            console.log(e)
         
     | 
| 
      
 1678 
     | 
    
         
            +
                            readline.close()
         
     | 
| 
      
 1679 
     | 
    
         
            +
                          } else {
         
     | 
| 
      
 1680 
     | 
    
         
            +
                            console.log(e)
         
     | 
| 
      
 1681 
     | 
    
         
            +
                            f()
         
     | 
| 
      
 1682 
     | 
    
         
            +
                          }
         
     | 
| 
      
 1683 
     | 
    
         
            +
                        })
         
     | 
| 
      
 1684 
     | 
    
         
            +
                    })
         
     | 
| 
      
 1685 
     | 
    
         
            +
                    f()
         
     | 
| 
      
 1686 
     | 
    
         
            +
                  } else if (args.query) {
         
     | 
| 
      
 1687 
     | 
    
         
            +
                    let useTestConfig = testConfig
         
     | 
| 
      
 1688 
     | 
    
         
            +
                    if (args.testModuleName) {
         
     | 
| 
      
 1689 
     | 
    
         
            +
                      config.testConfig.testModuleName = args.testModuleName
         
     | 
| 
      
 1690 
     | 
    
         
            +
                      config.testConfig.checks = config.getConfigs()[args.testModuleName].getTestConfig().checks
         
     | 
| 
      
 1691 
     | 
    
         
            +
                      // useTestConfig = config.getConfigs()[args.testModuleName].getTestConfig()
         
     | 
| 
      
 1692 
     | 
    
         
            +
                      // useTestConfig.testModuleName = args.testModuleName
         
     | 
| 
       1649 
1693 
     | 
    
         
             
                    }
         
     | 
| 
       1650 
     | 
    
         
            -
                     
     | 
| 
       1651 
     | 
    
         
            -
             
     | 
| 
       1652 
     | 
    
         
            -
                     
     | 
| 
       1653 
     | 
    
         
            -
             
     | 
| 
       1654 
     | 
    
         
            -
                } else if (args.loop) {
         
     | 
| 
       1655 
     | 
    
         
            -
                  const readline = runtime.readline.createInterface({ input: runtime.process.stdin, output: runtime.process.stdout })
         
     | 
| 
       1656 
     | 
    
         
            -
                  const f = () => readline.question('Enter query? (newline to quit) ', query => {
         
     | 
| 
       1657 
     | 
    
         
            -
                    query = query.trim()
         
     | 
| 
       1658 
     | 
    
         
            -
                    if (query.length === 0) {
         
     | 
| 
       1659 
     | 
    
         
            -
                      return readline.close()
         
     | 
| 
      
 1694 
     | 
    
         
            +
                    const objects = getObjects(config.config.objects)(config.uuid)
         
     | 
| 
      
 1695 
     | 
    
         
            +
                    // for the compare
         
     | 
| 
      
 1696 
     | 
    
         
            +
                    if (args.objectDiff) {
         
     | 
| 
      
 1697 
     | 
    
         
            +
                      global.beforeObjects = _.cloneDeep(objects)
         
     | 
| 
       1660 
1698 
     | 
    
         
             
                    }
         
     | 
| 
       1661 
     | 
    
         
            -
                     
     | 
| 
       1662 
     | 
    
         
            -
                       
     | 
| 
       1663 
     | 
    
         
            -
                    })
         
     | 
| 
       1664 
     | 
    
         
            -
             
     | 
| 
       1665 
     | 
    
         
            -
                      throw new Error('Return a promise from process in the definition of knowledgeModule')
         
     | 
| 
      
 1699 
     | 
    
         
            +
                    try {
         
     | 
| 
      
 1700 
     | 
    
         
            +
                      await processResults(_process(config, args.query, { commandLineArgs: args, dontAddAssociations: args.dontAddAssociations, writeTests: args.save || args.saveDeveloper, saveDeveloper: args.saveDeveloper, testConfig, testsFN: test }))
         
     | 
| 
      
 1701 
     | 
    
         
            +
                    } catch (error) {
         
     | 
| 
      
 1702 
     | 
    
         
            +
                      console.log('Error', error)
         
     | 
| 
       1666 
1703 
     | 
    
         
             
                    }
         
     | 
| 
       1667 
     | 
    
         
            -
                    promise
         
     | 
| 
       1668 
     | 
    
         
            -
                      .then(() => {
         
     | 
| 
       1669 
     | 
    
         
            -
                        f()
         
     | 
| 
       1670 
     | 
    
         
            -
                      })
         
     | 
| 
       1671 
     | 
    
         
            -
                      .catch((e) => {
         
     | 
| 
       1672 
     | 
    
         
            -
                        if (e.errno == 'ECONNREFUSED') {
         
     | 
| 
       1673 
     | 
    
         
            -
                          console.log(e)
         
     | 
| 
       1674 
     | 
    
         
            -
                          readline.close()
         
     | 
| 
       1675 
     | 
    
         
            -
                        } else {
         
     | 
| 
       1676 
     | 
    
         
            -
                          console.log(e)
         
     | 
| 
       1677 
     | 
    
         
            -
                          f()
         
     | 
| 
       1678 
     | 
    
         
            -
                        }
         
     | 
| 
       1679 
     | 
    
         
            -
                      })
         
     | 
| 
       1680 
     | 
    
         
            -
                  })
         
     | 
| 
       1681 
     | 
    
         
            -
                  f()
         
     | 
| 
       1682 
     | 
    
         
            -
                } else if (args.query) {
         
     | 
| 
       1683 
     | 
    
         
            -
                  let useTestConfig = testConfig
         
     | 
| 
       1684 
     | 
    
         
            -
                  if (args.testModuleName) {
         
     | 
| 
       1685 
     | 
    
         
            -
                    config.testConfig.testModuleName = args.testModuleName
         
     | 
| 
       1686 
     | 
    
         
            -
                    config.testConfig.checks = config.getConfigs()[args.testModuleName].getTestConfig().checks
         
     | 
| 
       1687 
     | 
    
         
            -
                    // useTestConfig = config.getConfigs()[args.testModuleName].getTestConfig()
         
     | 
| 
       1688 
     | 
    
         
            -
                    // useTestConfig.testModuleName = args.testModuleName
         
     | 
| 
       1689 
1704 
     | 
    
         
             
                  }
         
     | 
| 
       1690 
     | 
    
         
            -
                   
     | 
| 
       1691 
     | 
    
         
            -
             
     | 
| 
       1692 
     | 
    
         
            -
                   
     | 
| 
       1693 
     | 
    
         
            -
             
     | 
| 
       1694 
     | 
    
         
            -
             
     | 
| 
       1695 
     | 
    
         
            -
                  try {
         
     | 
| 
       1696 
     | 
    
         
            -
                    await processResults(_process(config, args.query, { commandLineArgs: args, dontAddAssociations: args.dontAddAssociations, writeTests: args.save || args.saveDeveloper, saveDeveloper: args.saveDeveloper, testConfig, testsFN: test }))
         
     | 
| 
       1697 
     | 
    
         
            -
                  } catch (error) {
         
     | 
| 
       1698 
     | 
    
         
            -
                    console.log('Error', error)
         
     | 
| 
      
 1705 
     | 
    
         
            +
                  printConfig()
         
     | 
| 
      
 1706 
     | 
    
         
            +
                } finally {
         
     | 
| 
      
 1707 
     | 
    
         
            +
                  debugger
         
     | 
| 
      
 1708 
     | 
    
         
            +
                  if (config) {
         
     | 
| 
      
 1709 
     | 
    
         
            +
                    config.terminate()
         
     | 
| 
       1699 
1710 
     | 
    
         
             
                  }
         
     | 
| 
       1700 
1711 
     | 
    
         
             
                }
         
     | 
| 
       1701 
     | 
    
         
            -
                printConfig()
         
     | 
| 
       1702 
1712 
     | 
    
         
             
              } else {
         
     | 
| 
       1703 
1713 
     | 
    
         
             
                const initConfig = async (config) => {
         
     | 
| 
       1704 
1714 
     | 
    
         
             
                  if (template) {
         
     | 
    
        package/package.json
    CHANGED
    
    
    
        package/src/config.js
    CHANGED
    
    | 
         @@ -1807,6 +1807,24 @@ class Config { 
     | 
|
| 
       1807 
1807 
     | 
    
         
             
                config.words.hierarchy = hierarchyPrime
         
     | 
| 
       1808 
1808 
     | 
    
         
             
              }
         
     | 
| 
       1809 
1809 
     | 
    
         | 
| 
      
 1810 
     | 
    
         
            +
              terminate() {
         
     | 
| 
      
 1811 
     | 
    
         
            +
                this.configs.forEach((km) => {
         
     | 
| 
      
 1812 
     | 
    
         
            +
                  const config = km.config
         
     | 
| 
      
 1813 
     | 
    
         
            +
                  debugger
         
     | 
| 
      
 1814 
     | 
    
         
            +
                  if (!config.terminatorFn) {
         
     | 
| 
      
 1815 
     | 
    
         
            +
                    this.terminatorFn(this)
         
     | 
| 
      
 1816 
     | 
    
         
            +
                  } else {
         
     | 
| 
      
 1817 
     | 
    
         
            +
                    config.terminatorFn(this)
         
     | 
| 
      
 1818 
     | 
    
         
            +
                  }
         
     | 
| 
      
 1819 
     | 
    
         
            +
                })
         
     | 
| 
      
 1820 
     | 
    
         
            +
              }
         
     | 
| 
      
 1821 
     | 
    
         
            +
             
     | 
| 
      
 1822 
     | 
    
         
            +
              setTerminator(terminatorFn) {
         
     | 
| 
      
 1823 
     | 
    
         
            +
                if (terminatorFn) {
         
     | 
| 
      
 1824 
     | 
    
         
            +
                  this.terminatorFn = terminatorFn
         
     | 
| 
      
 1825 
     | 
    
         
            +
                }
         
     | 
| 
      
 1826 
     | 
    
         
            +
              }
         
     | 
| 
      
 1827 
     | 
    
         
            +
             
     | 
| 
       1810 
1828 
     | 
    
         
             
              // configs = [ { config, namespace } ... ]
         
     | 
| 
       1811 
1829 
     | 
    
         
             
              constructor (config, module, clientProcess) {
         
     | 
| 
       1812 
1830 
     | 
    
         
             
                if (config instanceof Config) {
         
     | 
| 
         @@ -1873,6 +1891,7 @@ class Config { 
     | 
|
| 
       1873 
1891 
     | 
    
         
             
                    currentConfig.wasInitialized = true
         
     | 
| 
       1874 
1892 
     | 
    
         
             
                  }
         
     | 
| 
       1875 
1893 
     | 
    
         
             
                }
         
     | 
| 
      
 1894 
     | 
    
         
            +
                this.terminatorFn = () => {}
         
     | 
| 
       1876 
1895 
     | 
    
         
             
                if (config) {
         
     | 
| 
       1877 
1896 
     | 
    
         
             
                  this.name = config.name
         
     | 
| 
       1878 
1897 
     | 
    
         
             
                }
         
     | 
| 
         @@ -2080,6 +2099,7 @@ class Config { 
     | 
|
| 
       2080 
2099 
     | 
    
         
             
                cp._uuid = cp.configs[0]._uuid
         
     | 
| 
       2081 
2100 
     | 
    
         
             
                // update uuid here set the uuid in the objects and add error checking
         
     | 
| 
       2082 
2101 
     | 
    
         
             
                cp.initializerFn = this.initializerFn
         
     | 
| 
      
 2102 
     | 
    
         
            +
                cp.terminatorFn = this.terminatorFn
         
     | 
| 
       2083 
2103 
     | 
    
         
             
                // cp._api = _.cloneDeep(this._api)
         
     | 
| 
       2084 
2104 
     | 
    
         
             
                if (this._apiConstructor) {
         
     | 
| 
       2085 
2105 
     | 
    
         
             
                  cp._api = this._apiConstructor(cp)
         
     |