prettier-plugin-sorted
Version:
Sort your JavaScript and TypeScript imports with prettier with automatic alias support
81 lines (70 loc) • 3.15 kB
JavaScript
import path from 'path';
import sortImports from 'import-sort';
import { getConfig } from 'import-sort-config';
import { parsers as parsers$1 } from 'prettier/parser-babel';
import { parsers as parsers$2 } from 'prettier/parser-typescript';
import invariant from 'tiny-invariant';
function _extends() {
_extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
var msg = function msg(message) {
return "prettier-config-monots SORTER: " + message;
};
var DEFAULT_PARSER = 'typescript';
var DEFAULT_STYLE = 'custom';
var defaultConfig = {
'.js, .jsx, .es6, .es, .mjs, .ts, .tsx': {
parser: DEFAULT_PARSER,
style: DEFAULT_STYLE,
options: {}
}
};
var getAndCheckConfig = function getAndCheckConfig(extension, fileDirectory) {
var resolvedConfig = getConfig(extension, fileDirectory, defaultConfig);
!resolvedConfig ? process.env.NODE_ENV !== "production" ? invariant(false, msg("No configuration found for file type " + extension)) : invariant(false) : void 0;
var rawParser = resolvedConfig.config.parser;
var rawStyle = resolvedConfig.config.style;
!rawParser ? process.env.NODE_ENV !== "production" ? invariant(false, "No parser defined for file type " + extension) : invariant(false) : void 0;
!rawStyle ? process.env.NODE_ENV !== "production" ? invariant(false, "No style defined for file type " + extension) : invariant(false) : void 0;
var parser = resolvedConfig.parser,
style = resolvedConfig.style;
!parser ? process.env.NODE_ENV !== "production" ? invariant(false, "Parser \"" + rawParser + "\" could not be resolved") : invariant(false) : void 0;
!(style !== null && style !== void 0 ? style : style === rawStyle) ? process.env.NODE_ENV !== "production" ? invariant(false, "Style \"" + rawStyle + "\" could not be resolved") : invariant(false) : void 0;
return resolvedConfig;
};
var organizeImports = function organizeImports(unsortedCode, extension) {
// this throw exceptions up to prettier
var config = getAndCheckConfig(extension, path.resolve(__dirname, '..', '..'));
var _config$parser = config.parser,
parser = _config$parser === void 0 ? DEFAULT_PARSER : _config$parser,
_config$style = config.style,
style = _config$style === void 0 ? DEFAULT_STYLE : _config$style,
rawConfig = config.config;
var sortResult = sortImports(unsortedCode, parser, style, "dummy" + extension, rawConfig.options);
return sortResult.code;
};
var parsers = {
typescript: /*#__PURE__*/_extends({}, parsers$2.typescript, {
preprocess: function preprocess(text) {
return organizeImports(text, '.ts');
}
}),
babel: /*#__PURE__*/_extends({}, parsers$1.babel, {
preprocess: function preprocess(text) {
return organizeImports(text, '.js');
}
})
};
export { defaultConfig, parsers };
//# sourceMappingURL=prettier-plugin-sorted.esm.js.map