@tarantool.io/import-sort-style
Version:
Tarantool' personal style for import-sort.
68 lines (67 loc) • 2.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function default_1(styleApi) {
const { and, not, name, dotSegmentCount, hasNoMember, isAbsoluteModule, isNodeModule, isRelativeModule, moduleName, naturally, unicode, startsWith, } = styleApi;
const react = moduleName(startsWith('react'));
const tarantool = moduleName(startsWith('@tarantool.io'));
const local = moduleName(startsWith('~/', 'src'));
const styles = moduleName((text) => !!text.match(/.styles$/));
return [
// import "foo"
{ match: and(hasNoMember, isAbsoluteModule) },
// import "./foo"
{ match: and(hasNoMember, isRelativeModule) },
{ separator: true },
// import … from "fs";
{
match: isNodeModule,
sort: moduleName(naturally),
sortNamedMembers: name(unicode),
},
{ separator: true },
// import … from "react";
// import … from "react-";
{
match: and(isAbsoluteModule, react, not(tarantool), not(local)),
sort: moduleName(naturally),
sortNamedMembers: name(unicode),
},
// import … from "foo";
{
match: and(isAbsoluteModule, not(tarantool), not(local)),
sort: moduleName(naturally),
sortNamedMembers: name(unicode),
},
// import … from "@tarantool";
{
match: and(isAbsoluteModule, tarantool),
sort: moduleName(naturally),
sortNamedMembers: name(unicode),
},
{ separator: true },
// import … from "~/";
// import … from "src/";
{
match: local,
sort: moduleName(naturally),
sortNamedMembers: name(unicode),
},
{ separator: true },
// import … from "../foo";
// import … from "./foo";
{
match: and(isRelativeModule, not(styles)),
sort: [dotSegmentCount, moduleName(naturally)],
sortNamedMembers: name(unicode),
},
{ separator: true },
// import … from "./foo.styles";
{
match: and(isRelativeModule, styles),
sort: [dotSegmentCount, moduleName(naturally)],
sortNamedMembers: name(unicode),
},
{ separator: true },
];
}
exports.default = default_1;