in src/core.js [46:131]
constructor(coreConfig) {
this.debug = coreConfig.debug || false;
this.verbose = coreConfig.verbose || false;
this.quiet = coreConfig.quiet || false;
this.config = {};
assert(coreConfig, 'coreConfig is missing');
this.coreConfig = coreConfig;
this.overallGathererNames = ['docai'];
// Initialize helper. Use Node helper by default.
coreConfig.helper = coreConfig.helper || 'sheets';
this.log(`Use helper: ${coreConfig.helper}`);
switch (coreConfig.helper.toLowerCase()) {
case 'sheets':
let { SheetsApiHandler } = require('./helpers/sheets-helper');
this.apiHandler = new SheetsApiHandler();
break;
case 'fake':
// Use a dummy ApiHandler for test purpose.
let ApiHandler = require('./helpers/api-handler');
this.apiHandler = new ApiHandler();
break;
default:
throw new Error(
`Helper ${coreConfig.helper} is not supported.`);
break;
}
if (coreConfig.connector === 'fake') {
this.connector = {
getEnvVars: () => { },
};
} else {
this.connector = this.getConnector(coreConfig["sheets"]);
}
this.envVars = this.connector.getEnvVars();
// Initialize extensions.
this.log(`Use extensions: ${coreConfig.extensions}`);
this.extensions = {};
if (coreConfig.extensions) {
coreConfig.extensions.forEach(extension => {
let ExtensionClass;
let extConfig = coreConfig[extension] || {};
// Adding mandatory properties.
extConfig.connector = this.connector;
extConfig.apiHandler = this.apiHandler;
extConfig.debug = this.debug;
switch (extension) {
case 'sheets':
ExtensionClass = require('./extensions/sheets-extension');
break;
case 'docai':
ExtensionClass = require('./extensions/docai-extension');
break;
default:
try {
ExtensionClass = require('./extensions/' + extension);
} catch (e) {
console.error(e);
throw new Error(`Unable to load extension: ./extensions/${extension}`);
}
break;
}
this.extensions[extension] = new ExtensionClass(extConfig,
this.envVars);
});
}
// Initialize overall gatherers from coreConfig.
this.gatherers = {};
// The frequency of when to write data back via a connector.
// E.g. batchUpdateBuffer = 10 means for every 10 run or retrieve, it will
// update the data by calling connector.updateSourceList or updateResultList.
// When batchUpdateBuffer is 0, it will write back after all iteration.
this.batchUpdateBuffer = coreConfig.batchUpdateBuffer || 10;
}