-
- private static isObject(item): boolean {
- return item && typeof item === 'object' && !Array.isArray(item);
- }
-
- private static deepMerge(target: object, ...sources: object[]): object {
- if (!sources.length) {
- return target;
- }
- const source = sources.shift();
-
- if (Configuration.isObject(target) && Configuration.isObject(source)) {
- for (const key in source) {
- if (Configuration.isObject(source[key])) {
- if (!target[key]) {
- Object.assign(target, { [key]: {} });
- }
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
- Configuration.deepMerge(target[key], source[key]);
- } else {
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
- Object.assign(target, { [key]: source[key] });
- }
- }
- }
- return Configuration.deepMerge(target, ...sources);
- }
-
- private static objectHasOwnProperty(object: unknown, property: string): boolean {
- return Object.prototype.hasOwnProperty.call(object, property) as boolean;
- }
-
- private static isUndefined(obj: unknown): boolean {
- return typeof obj === 'undefined';
- }
-
- private static handleFileException(
- logPrefix: string,
- fileType: FileType,
- filePath: string,
- error: NodeJS.ErrnoException,
- params: HandleErrorParams<EmptyObject> = { throwError: true }
- ): void {
- const prefix = logPrefix.length !== 0 ? logPrefix + ' ' : '';
- if (error.code === 'ENOENT') {
- console.error(
- chalk.green(prefix) + chalk.red(fileType + ' file ' + filePath + ' not found: '),
- error
- );
- } else if (error.code === 'EEXIST') {
- console.error(
- chalk.green(prefix) + chalk.red(fileType + ' file ' + filePath + ' already exists: '),
- error
- );
- } else if (error.code === 'EACCES') {
- console.error(
- chalk.green(prefix) + chalk.red(fileType + ' file ' + filePath + ' access denied: '),
- error
- );
- } else {
- console.error(
- chalk.green(prefix) + chalk.red(fileType + ' file ' + filePath + ' error: '),
- error
- );
- }
- if (params?.throwError) {
- throw error;
- }
- }