@atlaskit/eslint-plugin-design-system
Version:
The essential plugin for use with the Atlassian Design System.
63 lines • 2.7 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
import { isNodeOfType } from 'eslint-codemod-utils';
export var 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;
};
export var 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 (isNodeOfType(spec, 'ImportDefaultSpecifier')) {
appendImport(imports, 'Form', spec.local.name);
return;
}
if (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 (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 = _slicedToArray(_ref, 2),
importName = _ref2[0],
importSources = _ref2[1];
if (!importSources.includes(source)) {
return;
}
node.specifiers.forEach(function (spec) {
if (isNodeOfType(spec, 'ImportDefaultSpecifier')) {
appendImport(imports, importName, spec.local.name);
}
});
});
return imports;
};