UNPKG

@atlaskit/eslint-plugin-design-system

Version:

The essential plugin for use with the Atlassian Design System.

63 lines 2.7 kB
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; };