Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
async updateDatabase() {
// Download and extract the database package from npm
logger.info( `Downloading database update to ${this.tempFolder}` )
await remove( this.tempFolder )
await extract( databasePackage, this.tempFolder )
logger.info( 'Hot-patching database module' )
// Disconnect the Shabad OS database connection
await knex.destroy()
// Move across the updated npm database module
await move( this.tempFolder, DATABASE_FOLDER, { overwrite: true } )
// Reimport the database
//! Relies on knex being reinitialised globally
importFresh( '@shabados/database' )
}
function _requireFromProject(modulePath, projectRoot, exp) {
try {
let fullPath = ProjectUtils.resolveModule(modulePath, projectRoot, exp);
// Clear the require cache for this module so get a fresh version of it
// without requiring the user to restart Expo CLI
return importFresh(fullPath);
} catch (e) {
return null;
}
}
export default (file, program, appConfig) => {
const context = getContext();
let configFile = file;
if (['.js', '.json'].indexOf(extname(file)) < 0) {
configFile += '.js';
}
// 为了测试方便,增加 `process.env.CONTEXT`
const pathInProject = resolve(context ? join(context, configFile) : configFile);
const pathInLib = resolve(__dirname, '..', configFile);
// 此处不能使用 require.cache
// 因为该方法依赖 process.env.CONTEXT
// 而在跑测试用例时会在不同的用例设置不同的 process.env.CONTEXT
// 使用 require.cache 就会导致除第一次外的所有结果都从缓存中加载,从而引发错误
let defaultConfig = importFresh(pathInLib);
defaultConfig = defaultConfig.default || defaultConfig;
if (isFunction(defaultConfig)) {
defaultConfig = defaultConfig(program, appConfig);
}
if (existsSync(pathInProject)) {
let projectConfig = require(pathInProject);
projectConfig = projectConfig.default || projectConfig;
return isFunction(projectConfig) ?
projectConfig(defaultConfig, program, appConfig) :
projectConfig;
}
return defaultConfig;
};
test('don\'t apply dimmed styling on gray strings, see https://github.com/chalk/chalk/issues/58', t => {
process.env.TERM = 'dumb';
const chalk = importFresh('..');
t.is(chalk.gray.dim('foo'), '\u001B[90mfoo\u001B[22m\u001B[39m');
});
test('detect a simple term if TERM isn\'t set', t => {
delete process.env.TERM;
const chalk = importFresh('..');
t.is(chalk.blue('foo'), '\u001B[94mfoo\u001B[39m');
});
loadJSConfigFile(filePath: string) {
this.ctx.logger.debug(`Loading JS config file: ${filePath}`);
try {
return importFresh(filePath);
} catch (e) {
this.ctx.logger.debug(`Error reading JavaScript file: ${filePath}`);
e.message = `Cannot read config file: ${filePath}\nError: ${e.message}`;
throw e;
}
}
export function loadJSConfigFile(filePath: string): Object {
const resolvedFilePath = path.resolve(filePath);
log.debug(
`Loading JS config file: "${filePath}" ` +
`(resolved to "${resolvedFilePath}")`);
let configObject;
try {
configObject = importFresh(resolvedFilePath);
} catch (error) {
log.debug('Handling error:', error);
throw new UsageError(
`Cannot read config file: ${resolvedFilePath}\n` +
`Error: ${error.message}`);
}
if (filePath.endsWith('package.json')) {
log.debug('Looking for webExt key inside package.json file');
configObject = configObject.webExt || {};
}
if (Object.keys(configObject).length === 0) {
log.debug(`Config file ${resolvedFilePath} did not define any options. ` +
'Did you set module.exports = {...}?');
}
return configObject;
}