| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | 'use strict';const isBuiltinModule = require('is-builtin-module');const {matches, STATIC_REQUIRE_SOURCE_SELECTOR} = require('./selectors/index.js');const {replaceStringLiteral} = require('./fix/index.js');const MESSAGE_ID = 'prefer-node-protocol';const messages = {	[MESSAGE_ID]: 'Prefer `node:{{moduleName}}` over `{{moduleName}}`.',};const importExportSourceSelector = [	':matches(ImportDeclaration, ExportNamedDeclaration, ImportExpression)',	' > ',	'Literal.source',].join('');const selector = matches([	importExportSourceSelector,	STATIC_REQUIRE_SOURCE_SELECTOR,]);const create = () => ({	[selector](node) {		const {value} = node;		if (			typeof value !== 'string'			|| value.startsWith('node:')			|| !isBuiltinModule(value)		) {			return;		}		return {			node,			messageId: MESSAGE_ID,			data: {moduleName: value},			/** @param {import('eslint').Rule.RuleFixer} fixer */			fix: fixer => replaceStringLiteral(fixer, node, 'node:', 0, 0),		};	},});/** @type {import('eslint').Rule.RuleModule} */module.exports = {	create,	meta: {		type: 'suggestion',		docs: {			description: 'Prefer using the `node:` protocol when importing Node.js builtin modules.',		},		fixable: 'code',		messages,	},};
 |