theprogrammablemind 8.0.0-beta.44 → 8.0.0-beta.45

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 CHANGED
@@ -1107,7 +1107,7 @@ const knowledgeModuleImpl = async ({
1107
1107
  config.stop_auto_rebuild()
1108
1108
  await config.add(...(includes || []))
1109
1109
  if (api) {
1110
- config.setApi(api())
1110
+ config.setApi(api)
1111
1111
  }
1112
1112
  if (multiApiInitializer) {
1113
1113
  await config.setMultiApi(multiApiInitializer)
package/package.json CHANGED
@@ -65,6 +65,6 @@
65
65
  "sort-json": "^2.0.0",
66
66
  "uuid": "^8.3.2"
67
67
  },
68
- "version": "8.0.0-beta.44",
68
+ "version": "8.0.0-beta.45",
69
69
  "license": "UNLICENSED"
70
70
  }
package/src/config.js CHANGED
@@ -774,12 +774,11 @@ const multiApiImpl = (initializer) => {
774
774
  multiApi: true,
775
775
 
776
776
  // multi functions
777
- add: async (config, multiApi, api) => {
777
+ add: async (config, multiApi, api, apiConstructor) => {
778
778
  initializer(config, api)
779
779
  const name = api.getName()
780
780
  multiApi.apis[name] = api
781
- // api.objects = config.get('objects')
782
- // api.config = () => config
781
+ multiApi.apiConstructors[name] = apiConstructor
783
782
  multiApi.current = name
784
783
  },
785
784
 
@@ -802,6 +801,9 @@ const multiApiImpl = (initializer) => {
802
801
  apis: {
803
802
  },
804
803
 
804
+ apiConstructors: {
805
+ },
806
+
805
807
  // api functions
806
808
  api: (multiApi) => multiApi.apis[multiApi.current]
807
809
  })
@@ -1895,7 +1897,7 @@ class Config {
1895
1897
  }
1896
1898
 
1897
1899
  async setMultiApi (initializer) {
1898
- await this.setApi(multiApiImpl(initializer))
1900
+ await this.setApi(() => multiApiImpl(initializer))
1899
1901
  }
1900
1902
 
1901
1903
  get multiApi () {
@@ -1953,15 +1955,27 @@ class Config {
1953
1955
  }
1954
1956
  }
1955
1957
 
1956
- async setApi (value) {
1958
+ async setApi (constructor) {
1959
+ if (typeof constructor !== 'function') {
1960
+ throw new Error(`Expected the argument to be an API constructor for ${this.name}.`)
1961
+ }
1962
+ const value = constructor()
1957
1963
  if (!value.initialize) {
1958
1964
  throw new Error(`Expected the API to have an initialize function for ${this.name}.`)
1959
1965
  }
1960
1966
 
1961
1967
  if (this._api && this._api.multiApi) {
1962
- await this._api.add(this, this._api, value)
1968
+ await this._api.add(this, this._api, value, constructor)
1969
+ const previousApiConstructor = this._apiConstructor
1970
+ this._apiConstructor = (config) => {
1971
+ const api = previousApiConstructor(config)
1972
+ // does this need await?
1973
+ api.add(config, api, constructor(config), constructor)
1974
+ return api
1975
+ }
1963
1976
  } else {
1964
- this._api = _.cloneDeep(value)
1977
+ this._api = value
1978
+ this._apiConstructor = constructor
1965
1979
  await this.rebuild()
1966
1980
  }
1967
1981
  }
@@ -2029,7 +2043,11 @@ class Config {
2029
2043
  cp._uuid = cp.configs[0]._uuid
2030
2044
  // update uuid here set the uuid in the objects and add error checking
2031
2045
  cp.initializerFn = this.initializerFn
2032
- cp._api = _.cloneDeep(this._api)
2046
+ // cp._api = _.cloneDeep(this._api)
2047
+ if (this._apiConstructor) {
2048
+ cp._api = this._apiConstructor(cp)
2049
+ cp._apiConstructor = this._apiConstructor
2050
+ }
2033
2051
  cp._namespace = this._namespace
2034
2052
  cp._eqClasses = this._eqClasses
2035
2053
  cp.name = this.name