UNPKG

@tarantool.io/import-sort-style

Version:

Tarantool' personal style for import-sort.

68 lines (67 loc) 2.41 kB
"use strict"; 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;