mirror of
https://github.com/n8n-io/n8n.git
synced 2024-11-16 01:24:05 -08:00
56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
|
import { readFileSync, rmSync } from 'fs';
|
||
|
import { UserSettings } from 'n8n-core';
|
||
|
import { getLogger } from '../../Logger';
|
||
|
|
||
|
const PERSONALIZATION_SURVEY_FILENAME = 'personalizationSurvey.json';
|
||
|
|
||
|
export function loadSurveyFromDisk(): string | null {
|
||
|
const userSettingsPath = UserSettings.getUserN8nFolderPath();
|
||
|
try {
|
||
|
const filename = `${userSettingsPath}/${PERSONALIZATION_SURVEY_FILENAME}`;
|
||
|
const surveyFile = readFileSync(filename, 'utf-8');
|
||
|
rmSync(filename);
|
||
|
const personalizationSurvey = JSON.parse(surveyFile) as object;
|
||
|
const kvPairs = Object.entries(personalizationSurvey);
|
||
|
if (!kvPairs.length) {
|
||
|
throw new Error('personalizationSurvey is empty');
|
||
|
} else {
|
||
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||
|
const emptyKeys = kvPairs.reduce((acc, [_key, value]) => {
|
||
|
if (!value || (Array.isArray(value) && !value.length)) {
|
||
|
return acc + 1;
|
||
|
}
|
||
|
return acc;
|
||
|
}, 0);
|
||
|
if (emptyKeys === kvPairs.length) {
|
||
|
throw new Error('incomplete personalizationSurvey');
|
||
|
}
|
||
|
}
|
||
|
return surveyFile;
|
||
|
} catch (error) {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
let logFinishTimeout: NodeJS.Timeout;
|
||
|
const disableLogging = process.argv[1].split('/').includes('jest');
|
||
|
|
||
|
export function logMigrationStart(migrationName: string): void {
|
||
|
if (disableLogging) return;
|
||
|
const logger = getLogger();
|
||
|
if (!logFinishTimeout) {
|
||
|
logger.warn('Migrations in progress, please do NOT stop the process.');
|
||
|
}
|
||
|
logger.debug(`Starting migration ${migrationName}`);
|
||
|
clearTimeout(logFinishTimeout);
|
||
|
}
|
||
|
|
||
|
export function logMigrationEnd(migrationName: string): void {
|
||
|
if (disableLogging) return;
|
||
|
const logger = getLogger();
|
||
|
logger.debug(`Finished migration ${migrationName}`);
|
||
|
logFinishTimeout = setTimeout(() => {
|
||
|
logger.warn('Migrations finished.');
|
||
|
}, 100);
|
||
|
}
|