mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-09-22 05:40:48 +02:00
52 lines
1.6 KiB
JavaScript
52 lines
1.6 KiB
JavaScript
// @ts-check
|
|
|
|
"use strict";
|
|
|
|
// @ts-ignore
|
|
// eslint-disable-next-line camelcase, no-inline-comments, no-undef
|
|
const nativeRequire = (typeof __non_webpack_require__ === "undefined") ? require : /* c8 ignore next */ __non_webpack_require__;
|
|
// Captures the native require implementation (even under webpack).
|
|
|
|
/**
|
|
* @typedef RequireResolveOptions
|
|
* @property {string[]} [paths] Additional paths to resolve from.
|
|
*/
|
|
|
|
/**
|
|
* @callback RequireResolve
|
|
* @param {string} id Module name or path.
|
|
* @param {RequireResolveOptions} options Options to apply.
|
|
* @returns {string} Resolved module path.
|
|
*/
|
|
|
|
/**
|
|
* Resolves modules according to Node's resolution rules.
|
|
*
|
|
* @param {RequireResolve} resolve Node-like require.resolve implementation.
|
|
* @param {string} id Module name or path.
|
|
* @param {string[]} [paths] Additional paths to resolve from.
|
|
* @returns {string} Resolved module path.
|
|
*/
|
|
const resolveModuleCustomResolve = (resolve, id, paths = []) => {
|
|
// resolve.paths is sometimes not present under webpack or VS Code
|
|
// @ts-ignore
|
|
const resolvePaths = resolve.paths?.("") || [];
|
|
const allPaths = [ ...paths, ...resolvePaths ];
|
|
return resolve(id, { "paths": allPaths });
|
|
};
|
|
|
|
/**
|
|
* Resolves modules according to Node's resolution rules.
|
|
*
|
|
* @param {string} id Module name or path.
|
|
* @param {string[]} [paths] Additional paths to resolve from.
|
|
* @returns {string} Resolved module path.
|
|
*/
|
|
const resolveModule = (id, paths) => (
|
|
resolveModuleCustomResolve(nativeRequire.resolve, id, paths)
|
|
);
|
|
|
|
module.exports = {
|
|
resolveModule,
|
|
resolveModuleCustomResolve
|
|
};
|