/** * @typedef {TypeError} IdFnNotAFunction * * @desc Error thrown when one tries ot set the id generator function to something that is not a function. * * @example * const loggerFactory = require( "fs-error-logger" ); * //"Not a function!" is not a function * const logger = loggerFactory( { idFn: "Not a function!" } ); * * @example * const loggerFactory = require( "fs-error-logger" ); * const logger = loggerFactory( ); * logger.setIdFn(0); //0 is not a function */ /** * @typedef {TypeError} PathNotAString * * @desc Error thrown when one tries ot set the output folder path with something that is not a string. * * @example * const loggerFactory = require( "fs-error-logger" ); * //{} is not a string * const logger = loggerFactory( { outputFolder: {} } ); * * @example * const loggerFactory = require( "fs-error-logger" ); * const logger = loggerFactory( ); * logger.setOutputFolder(2); //2 is not a string */ /** * @private * @func errorFactory * @param {string} name The name of the error to be created. * @param {string} message The message the error will contain. * @param {Error} [errorType = new Error()] The error type that will be created and returned. * @returns {Error} * * @description Creates an error and returns it. */ const errorFactory = ( name, message, errorType ) => { const error = errorType; error.message = `${message} See https://fl4m3ph03n1x.github.io/fs-error-logger/global.html#${name} for more info on errors.`; error.name = name; return error; }; /** * @private * @func idFnNotAFunction * @param {*} idFn The object that should be a function and isn't. * @returns {TypeError} * * @description Returns an "IdFnNotAFunction" TypeError with an information message on how to fix the issue. */ const idFnNotAFunction = idFn => errorFactory( "IdFnNotAFunction", `'idFn': ${idFn} must be a function!.`, new TypeError() ); /** * @private * @func pathNotAString * @param {*} outputFolderPath The object that should be a * string and isn't. * @returns {TypeError} * * @description Returns an "PathNotAString" TypeError with an information message on how to fix the issue. */ const pathNotAString = outputFolderPath => errorFactory( "PathNotAString", `'outputFolder': ${outputFolderPath} must be a string!`, new TypeError() ); module.exports.idFnNotAFunction = idFnNotAFunction; module.exports.pathNotAString = pathNotAString;