@lutherts/get-sourcecode
v0.1.34
Published
Retrieves the ESLint-generated SourceCode object of a JS/TS/JSX/TSX file.
Downloads
316
Maintainers
Readme
Retrieves the ESLint-generated SourceCode object of a JS/TS/JSX/TSX file.
/* getSourceCodeFromCode */
/**
* $COMMENT#TSDOC#SRC#LIB#DEFS#UTILS#PUBLIC#GETSOURCECODEFROMCODE
*
* @param code - $COMMENT#TSDOC#SRC#LIB#PARAMS#UTILS#PUBLIC#CODE
* @returns $COMMENT#TSDOC#SRC#LIB#RETURNS#UTILS#PUBLIC#GETSOURCECODEFROMCODE
*
* @public
*/
export const getSourceCodeFromCode = /** @template {string} T */ (
/** @type {T} */ code,
) => {
// input validations
if (typeof code !== "string")
return makeSuccessFalseTypeError(
CODE_SUPPOSED_TO_BE_STRING_MESSAGE,
errorMessages_errorStatuses[CODE_SUPPOSED_TO_BE_STRING_MESSAGE],
);
// input operations
const linter = new Linter();
linter.verify(code, { languageOptions, linterOptions });
const sourceCode = linter.getSourceCode();
if (!sourceCode)
return makeSuccessFalseTypeError(
JS_TS_JSX_TSX_COULDNT_BE_PARSED_MESSAGE,
errorMessages_errorStatuses[JS_TS_JSX_TSX_COULDNT_BE_PARSED_MESSAGE],
);
return /** @type {const} */ ({
sourceCode,
...successTrue,
});
};
/* getSourceCodeFromPath */
/**
* $COMMENT#TSDOC#SRC#LIB#DEFS#UTILS#PUBLIC#GETSOURCECODEFROMPATH
*
* @param absolutePath - $COMMENT#TSDOC#SRC#LIB#PARAMS#UTILS#PUBLIC#ABSOLUTEPATH
* @returns $COMMENT#TSDOC#SRC#LIB#RETURNS#UTILS#PUBLIC#GETSOURCECODEFROMPATH
*
* @public
*/
export const getSourceCodeFromPath = /** @template {string} T */ (
/** @type {T} */ absolutePath,
) => {
// input validations
if (typeof absolutePath !== "string")
return makeSuccessFalseTypeError(
ABSOLUTE_PATH_SUPPOSED_TO_BE_STRING_MESSAGE,
errorMessages_errorStatuses[ABSOLUTE_PATH_SUPPOSED_TO_BE_STRING_MESSAGE],
);
if (!path.isAbsolute(absolutePath))
return makeSuccessFalseTypeError(
ABSOLUTE_PATH_SUPPOSED_TO_BE_ABSOLUTE_MESSAGE,
errorMessages_errorStatuses[
ABSOLUTE_PATH_SUPPOSED_TO_BE_ABSOLUTE_MESSAGE
],
);
// input operations
let code = /** @type {string | undefined} */ (undefined);
try {
code = fs.readFileSync(absolutePath, "utf8");
} catch {
return makeSuccessFalseTypeError(
ABSOLUTE_PATH_COULDNT_BE_READ_MESSAGE,
errorMessages_errorStatuses[ABSOLUTE_PATH_COULDNT_BE_READ_MESSAGE],
);
}
return getSourceCodeFromCode(code);
};