UNPKG

eslint-plugin-esm

Version:
26 lines 3.88 kB
import path from "node:path"; import { create, createRule, getRuleName, getSourceType } from "../common.js"; export const noExternalSrcImports = createRule({ name: getRuleName(import.meta.url), message: "Disallow importing from outside the src directory.", create: (context) => create(context, check), }); function check(filename, source) { if (getSourceType(source) !== "local") { return false; } const srcPath = /^.*?\/src\//.exec(filename)?.[0]; if (srcPath) { const sourcePath = path.resolve(path.dirname(filename), source); // Disallow importing the nearest package.json. Use [module.findPackageJSON](https://nodejs.org/api/module.html#modulefindpackagejsonspecifier-base) or [package-up](https://github.com/sindresorhus/package-up) instead. // if (sourcePath === path.join(path.dirname(srcPath), "package.json")) { // // Allow importing the nearest package.json // return false; // } if (!sourcePath.startsWith(srcPath)) { return true; } } return false; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tZXh0ZXJuYWwtc3JjLWltcG9ydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVsZXMvbm8tZXh0ZXJuYWwtc3JjLWltcG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxDQUFDO0lBQzdDLElBQUksRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEMsT0FBTyxFQUFFLG9EQUFvRDtJQUM3RCxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO0NBQzVDLENBQUMsQ0FBQztBQUVILFNBQVMsS0FBSyxDQUFDLFFBQWdCLEVBQUUsTUFBYztJQUM3QyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRSx5TkFBeU47UUFDek4seUVBQXlFO1FBQ3pFLGdEQUFnRDtRQUNoRCxrQkFBa0I7UUFDbEIsSUFBSTtRQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGNyZWF0ZSwgY3JlYXRlUnVsZSwgZ2V0UnVsZU5hbWUsIGdldFNvdXJjZVR5cGUgfSBmcm9tIFwiLi4vY29tbW9uLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBub0V4dGVybmFsU3JjSW1wb3J0cyA9IGNyZWF0ZVJ1bGUoe1xuICBuYW1lOiBnZXRSdWxlTmFtZShpbXBvcnQubWV0YS51cmwpLFxuICBtZXNzYWdlOiBcIkRpc2FsbG93IGltcG9ydGluZyBmcm9tIG91dHNpZGUgdGhlIHNyYyBkaXJlY3RvcnkuXCIsXG4gIGNyZWF0ZTogKGNvbnRleHQpID0+IGNyZWF0ZShjb250ZXh0LCBjaGVjayksXG59KTtcblxuZnVuY3Rpb24gY2hlY2soZmlsZW5hbWU6IHN0cmluZywgc291cmNlOiBzdHJpbmcpIHtcbiAgaWYgKGdldFNvdXJjZVR5cGUoc291cmNlKSAhPT0gXCJsb2NhbFwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHNyY1BhdGggPSAvXi4qP1xcL3NyY1xcLy8uZXhlYyhmaWxlbmFtZSk/LlswXTtcbiAgaWYgKHNyY1BhdGgpIHtcbiAgICBjb25zdCBzb3VyY2VQYXRoID0gcGF0aC5yZXNvbHZlKHBhdGguZGlybmFtZShmaWxlbmFtZSksIHNvdXJjZSk7XG4gICAgLy8gRGlzYWxsb3cgaW1wb3J0aW5nIHRoZSBuZWFyZXN0IHBhY2thZ2UuanNvbi4gVXNlIFttb2R1bGUuZmluZFBhY2thZ2VKU09OXShodHRwczovL25vZGVqcy5vcmcvYXBpL21vZHVsZS5odG1sI21vZHVsZWZpbmRwYWNrYWdlanNvbnNwZWNpZmllci1iYXNlKSBvciBbcGFja2FnZS11cF0oaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9wYWNrYWdlLXVwKSBpbnN0ZWFkLlxuICAgIC8vIGlmIChzb3VyY2VQYXRoID09PSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKHNyY1BhdGgpLCBcInBhY2thZ2UuanNvblwiKSkge1xuICAgIC8vICAgLy8gQWxsb3cgaW1wb3J0aW5nIHRoZSBuZWFyZXN0IHBhY2thZ2UuanNvblxuICAgIC8vICAgcmV0dXJuIGZhbHNlO1xuICAgIC8vIH1cbiAgICBpZiAoIXNvdXJjZVBhdGguc3RhcnRzV2l0aChzcmNQYXRoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbiJdfQ==