import chalk from 'chalk'
import { dirname, join, resolve } from 'node:path'
-import { fileURLToPath } from 'node:url'
+import { fileURLToPath, pathToFileURL } from 'node:url'
import { type ElementsPerWorkerType, type FileType, StorageType } from '../types/index.js'
import { WorkerProcessType } from '../worker/index.js'
}
export const buildPerformanceUriFilePath = (file: string): string => {
- return `file://${join(resolve(dirname(fileURLToPath(import.meta.url)), '../'), file)}`
+ return pathToFileURL(resolve(dirname(fileURLToPath(import.meta.url)), '..', file)).toString()
}
export const getDefaultPerformanceStorageUri = (storageType: StorageType): string => {
switch (storageType) {
case StorageType.JSON_FILE:
return buildPerformanceUriFilePath(
- `${Constants.DEFAULT_PERFORMANCE_DIRECTORY}/${Constants.DEFAULT_PERFORMANCE_RECORDS_FILENAME}`
+ join(
+ Constants.DEFAULT_PERFORMANCE_DIRECTORY,
+ Constants.DEFAULT_PERFORMANCE_RECORDS_FILENAME
+ )
)
case StorageType.SQLITE:
return buildPerformanceUriFilePath(
- `${Constants.DEFAULT_PERFORMANCE_DIRECTORY}/${Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME}.db`
+ join(
+ Constants.DEFAULT_PERFORMANCE_DIRECTORY,
+ `${Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME}.db`
+ )
)
default:
throw new Error(`Unsupported storage type '${storageType}'`)
case 'EEXIST':
logMsg = `${fileType} file ${file} already exists: `
break
+ case 'EISDIR':
+ logMsg = `${fileType} file ${file} is a directory: `
+ break
case 'ENOENT':
logMsg = `${fileType} file ${file} not found: `
break
+ case 'ENOSPC':
+ logMsg = `${fileType} file ${file} no space left on device: `
+ break
+ case 'ENOTDIR':
+ logMsg = `${fileType} file ${file} parent is not a directory: `
+ break
case 'EPERM':
logMsg = `${fileType} file ${file} permission denied: `
break
+ case 'EROFS':
+ logMsg = `${fileType} file ${file} read-only file system: `
+ break
default:
logMsg = `${fileType} file ${file} error: `
}
export const checkWorkerElementsPerWorker = (
elementsPerWorker: ElementsPerWorkerType | undefined
): void => {
- if (
- elementsPerWorker != null &&
- elementsPerWorker !== 'auto' &&
- elementsPerWorker !== 'all' &&
- !Number.isSafeInteger(elementsPerWorker)
- ) {
+ if (elementsPerWorker == null || elementsPerWorker === 'auto' || elementsPerWorker === 'all') {
+ return
+ }
+ if (!Number.isSafeInteger(elementsPerWorker)) {
throw new SyntaxError(
`Invalid number of elements per worker '${elementsPerWorker.toString()}' defined in configuration`
)
}
- if (Number.isSafeInteger(elementsPerWorker) && (elementsPerWorker as number) <= 0) {
- throw RangeError(
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
- `Invalid negative or zero number of elements per worker '${elementsPerWorker?.toString()}' defined in configuration`
+ if (elementsPerWorker <= 0) {
+ throw new RangeError(
+ `Invalid negative or zero number of elements per worker '${elementsPerWorker.toString()}' defined in configuration`
)
}
}