// src/utils/enforce-node-specifier.ts import { builtinModules } from "node:module"; function isNodeSpecifier(moduleName) { return moduleName.startsWith("node:"); } function isNativeModule(moduleName) { return builtinModules.includes(moduleName); } var rule = { meta: { type: "problem", docs: { description: "enforce the use of node: specifier for native Node.js modules" }, fixable: "code", schema: [], // no options messages: { enforceNodeSpecifier: `Use 'node:{{name}}' instead of '{{name}}'` } }, create(context) { return { ImportDeclaration(node) { const moduleName = node.source.value; if (typeof moduleName === "string" && isNativeModule(moduleName) && !isNodeSpecifier(moduleName)) { context.report({ node: node.source, messageId: "enforceNodeSpecifier", data: { name: moduleName }, fix(fixer) { return fixer.replaceText(node.source, `'node:${moduleName}'`); } }); } }, CallExpression(node) { if (node.callee.type === "Identifier" && node.callee.name === "require" && node.arguments.length === 1 && node.arguments[0].type === "Literal" && typeof node.arguments[0].value === "string") { const moduleName = node.arguments[0].value; if (isNativeModule(moduleName) && !isNodeSpecifier(moduleName)) { context.report({ node: node.arguments[0], messageId: "enforceNodeSpecifier", data: { name: moduleName }, fix(fixer) { return fixer.replaceText(node.arguments[0], `'node:${moduleName}'`); } }); } } } }; } }; var enforce_node_specifier_default = rule; // src/utils/disallow-node-specifier.ts import { builtinModules as builtinModules2 } from "node:module"; function isNodeSpecifier2(moduleName) { return moduleName.startsWith("node:"); } function isNativeModule2(moduleName) { return builtinModules2.includes(moduleName.replace(/^node:/, "")); } var rule2 = { meta: { type: "problem", docs: { description: "disallow the use of node: specifier for native Node.js modules" }, fixable: "code", schema: [], // no options messages: { disallowNodeSpecifier: `Do not use 'node:{{name}}', use '{{name}}' instead` } }, create(context) { return { ImportDeclaration(node) { const moduleName = node.source.value; if (typeof moduleName === "string" && isNativeModule2(moduleName) && isNodeSpecifier2(moduleName)) { const name = moduleName.replace(/^node:/, ""); context.report({ node: node.source, messageId: "disallowNodeSpecifier", data: { name }, fix(fixer) { return fixer.replaceText(node.source, `'${name}'`); } }); } }, CallExpression(node) { if (node.callee.type === "Identifier" && node.callee.name === "require" && node.arguments.length === 1 && node.arguments[0].type === "Literal" && typeof node.arguments[0].value === "string") { const moduleName = node.arguments[0].value; if (typeof moduleName === "string" && isNativeModule2(moduleName) && isNodeSpecifier2(moduleName)) { const name = moduleName.replace(/^node:/, ""); context.report({ node: node.arguments[0], messageId: "disallowNodeSpecifier", data: { name }, fix(fixer) { return fixer.replaceText(node.arguments[0], `'${name}'`); } }); } } } }; } }; var disallow_node_specifier_default = rule2; // src/index.ts var rules = { "enforce-node-specifier": enforce_node_specifier_default, "disallow-node-specifier": disallow_node_specifier_default }; var src_default = { rules }; export { src_default as default, rules };