@atlaskit/eslint-plugin-design-system
Version:
The essential plugin for use with the Atlassian Design System.
70 lines (69 loc) • 3.12 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getFormImportLocalNames = exports.FORM_PACKAGE = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _eslintCodemodUtils = require("eslint-codemod-utils");
var FORM_PACKAGE = exports.FORM_PACKAGE = '@atlaskit/form';
var namedBarrelImports = new Set(['Field', 'MessageWrapper', 'ErrorMessage', 'HelperMessage', 'ValidMessage', 'CheckboxField', 'RangeField', 'CharacterCounterField']);
var namedMessagesImports = new Set(['MessageWrapper', 'ErrorMessage', 'HelperMessage', 'ValidMessage']);
var defaultImportSources = {
Form: ['@atlaskit/form/form', '@atlaskit/form/Form'],
Field: ['@atlaskit/form/field', '@atlaskit/form/Field'],
MessageWrapper: [],
ErrorMessage: [],
HelperMessage: [],
ValidMessage: [],
CheckboxField: ['@atlaskit/form/checkbox-field', '@atlaskit/form/CheckboxField'],
RangeField: ['@atlaskit/form/range-field', '@atlaskit/form/RangeField'],
CharacterCounterField: ['@atlaskit/form/character-counter-field', '@atlaskit/form/CharacterCounterField']
};
var appendImport = function appendImport(imports, importName, localName) {
var _imports$importName;
var existing = (_imports$importName = imports[importName]) !== null && _imports$importName !== void 0 ? _imports$importName : [];
existing.push(localName);
imports[importName] = existing;
};
var getFormImportLocalNames = exports.getFormImportLocalNames = function getFormImportLocalNames(node) {
var source = node.source.value;
if (typeof source !== 'string' || !node.specifiers.length) {
return {};
}
var imports = {};
if (source === FORM_PACKAGE) {
node.specifiers.forEach(function (spec) {
if ((0, _eslintCodemodUtils.isNodeOfType)(spec, 'ImportDefaultSpecifier')) {
appendImport(imports, 'Form', spec.local.name);
return;
}
if ((0, _eslintCodemodUtils.isNodeOfType)(spec, 'ImportSpecifier') && 'name' in spec.imported && namedBarrelImports.has(spec.imported.name)) {
appendImport(imports, spec.imported.name, spec.local.name);
}
});
return imports;
}
if (source === '@atlaskit/form/messages' || source === '@atlaskit/form/Messages') {
node.specifiers.forEach(function (spec) {
if ((0, _eslintCodemodUtils.isNodeOfType)(spec, 'ImportSpecifier') && 'name' in spec.imported && namedMessagesImports.has(spec.imported.name)) {
appendImport(imports, spec.imported.name, spec.local.name);
}
});
return imports;
}
Object.entries(defaultImportSources).forEach(function (_ref) {
var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
importName = _ref2[0],
importSources = _ref2[1];
if (!importSources.includes(source)) {
return;
}
node.specifiers.forEach(function (spec) {
if ((0, _eslintCodemodUtils.isNodeOfType)(spec, 'ImportDefaultSpecifier')) {
appendImport(imports, importName, spec.local.name);
}
});
});
return imports;
};