Constnium/node_modules/eslint-plugin-import/lib/rules/named.js

141 lines
16 KiB
JavaScript
Raw Normal View History

2022-06-23 02:27:43 +02:00
'use strict';var _slicedToArray = function () {function sliceIterator(arr, i) {var _arr = [];var _n = true;var _d = false;var _e = undefined;try {for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {_arr.push(_s.value);if (i && _arr.length === i) break;}} catch (err) {_d = true;_e = err;} finally {try {if (!_n && _i["return"]) _i["return"]();} finally {if (_d) throw _e;}}return _arr;}return function (arr, i) {if (Array.isArray(arr)) {return arr;} else if (Symbol.iterator in Object(arr)) {return sliceIterator(arr, i);} else {throw new TypeError("Invalid attempt to destructure non-iterable instance");}};}();var _path = require('path');var path = _interopRequireWildcard(_path);
var _ExportMap = require('../ExportMap');var _ExportMap2 = _interopRequireDefault(_ExportMap);
var _docsUrl = require('../docsUrl');var _docsUrl2 = _interopRequireDefault(_docsUrl);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { 'default': obj };}function _interopRequireWildcard(obj) {if (obj && obj.__esModule) {return obj;} else {var newObj = {};if (obj != null) {for (var key in obj) {if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];}}newObj['default'] = obj;return newObj;}}
module.exports = {
meta: {
type: 'problem',
docs: {
url: (0, _docsUrl2['default'])('named') },
schema: [
{
type: 'object',
properties: {
commonjs: {
type: 'boolean' } },
additionalProperties: false }] },
create: function () {function create(context) {
var options = context.options[0] || {};
function checkSpecifiers(key, type, node) {
// ignore local exports and type imports/exports
if (
node.source == null ||
node.importKind === 'type' ||
node.importKind === 'typeof' ||
node.exportKind === 'type')
{
return;
}
if (!node.specifiers.some(function (im) {return im.type === type;})) {
return; // no named imports/exports
}
var imports = _ExportMap2['default'].get(node.source.value, context);
if (imports == null || imports.parseGoal === 'ambiguous') {
return;
}
if (imports.errors.length) {
imports.reportErrors(context, node);
return;
}
node.specifiers.forEach(function (im) {
if (
im.type !== type
// ignore type imports
|| im.importKind === 'type' || im.importKind === 'typeof')
{
return;
}
var name = im[key].name || im[key].value;
var deepLookup = imports.hasDeep(name);
if (!deepLookup.found) {
if (deepLookup.path.length > 1) {
var deepPath = deepLookup.path.
map(function (i) {return path.relative(path.dirname(context.getPhysicalFilename ? context.getPhysicalFilename() : context.getFilename()), i.path);}).
join(' -> ');
context.report(im[key], String(name) + ' not found via ' + String(deepPath));
} else {
context.report(im[key], name + ' not found in \'' + node.source.value + '\'');
}
}
});
}
function checkRequire(node) {
if (
!options.commonjs ||
node.type !== 'VariableDeclarator'
// return if it's not an object destructure or it's an empty object destructure
|| !node.id || node.id.type !== 'ObjectPattern' || node.id.properties.length === 0
// return if there is no call expression on the right side
|| !node.init || node.init.type !== 'CallExpression')
{
return;
}
var call = node.init;var _call$arguments = _slicedToArray(
call.arguments, 1),source = _call$arguments[0];
var variableImports = node.id.properties;
var variableExports = _ExportMap2['default'].get(source.value, context);
if (
// return if it's not a commonjs require statement
call.callee.type !== 'Identifier' || call.callee.name !== 'require' || call.arguments.length !== 1
// return if it's not a string source
|| source.type !== 'Literal' ||
variableExports == null ||
variableExports.parseGoal === 'ambiguous')
{
return;
}
if (variableExports.errors.length) {
variableExports.reportErrors(context, node);
return;
}
variableImports.forEach(function (im) {
if (im.type !== 'Property' || !im.key || im.key.type !== 'Identifier') {
return;
}
var deepLookup = variableExports.hasDeep(im.key.name);
if (!deepLookup.found) {
if (deepLookup.path.length > 1) {
var deepPath = deepLookup.path.
map(function (i) {return path.relative(path.dirname(context.getFilename()), i.path);}).
join(' -> ');
context.report(im.key, String(im.key.name) + ' not found via ' + String(deepPath));
} else {
context.report(im.key, im.key.name + ' not found in \'' + source.value + '\'');
}
}
});
}
return {
ImportDeclaration: checkSpecifiers.bind(null, 'imported', 'ImportSpecifier'),
ExportNamedDeclaration: checkSpecifiers.bind(null, 'local', 'ExportSpecifier'),
VariableDeclarator: checkRequire };
}return create;}() };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uYW1lZC5qcyJdLCJuYW1lcyI6WyJwYXRoIiwibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJ0eXBlIiwiZG9jcyIsInVybCIsInNjaGVtYSIsInByb3BlcnRpZXMiLCJjb21tb25qcyIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiY3JlYXRlIiwiY29udGV4dCIsIm9wdGlvbnMiLCJjaGVja1NwZWNpZmllcnMiLCJrZXkiLCJub2RlIiwic291cmNlIiwiaW1wb3J0S2luZCIsImV4cG9ydEtpbmQiLCJzcGVjaWZpZXJzIiwic29tZSIsImltIiwiaW1wb3J0cyIsIkV4cG9ydHMiLCJnZXQiLCJ2YWx1ZSIsInBhcnNlR29hbCIsImVycm9ycyIsImxlbmd0aCIsInJlcG9ydEVycm9ycyIsImZvckVhY2giLCJuYW1lIiwiZGVlcExvb2t1cCIsImhhc0RlZXAiLCJmb3VuZCIsImRlZXBQYXRoIiwibWFwIiwicmVsYXRpdmUiLCJkaXJuYW1lIiwiZ2V0UGh5c2ljYWxGaWxlbmFtZSIsImdldEZpbGVuYW1lIiwiaSIsImpvaW4iLCJyZXBvcnQiLCJjaGVja1JlcXVpcmUiLCJpZCIsImluaXQiLCJjYWxsIiwiYXJndW1lbnRzIiwidmFyaWFibGVJbXBvcnRzIiwidmFyaWFibGVFeHBvcnRzIiwiY2FsbGVlIiwiSW1wb3J0RGVjbGFyYXRpb24iLCJiaW5kIiwiRXhwb3J0TmFtZWREZWNsYXJhdGlvbiIsIlZhcmlhYmxlRGVjbGFyYXRvciJdLCJtYXBwaW5ncyI6InFvQkFBQSw0QixJQUFZQSxJO0FBQ1oseUM7QUFDQSxxQzs7QUFFQUMsT0FBT0MsT0FBUCxHQUFpQjtBQUNmQyxRQUFNO0FBQ0pDLFVBQU0sU0FERjtBQUVKQyxVQUFNO0FBQ0pDLFdBQUssMEJBQVEsT0FBUixDQURELEVBRkY7O0FBS0pDLFlBQVE7QUFDTjtBQUNFSCxZQUFNLFFBRFI7QUFFRUksa0JBQVk7QUFDVkMsa0JBQVU7QUFDUkwsZ0JBQU0sU0FERSxFQURBLEVBRmQ7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