@ianvs/prettier-plugin-sort-imports
Version:
A prettier plugins to sort imports in provided RegEx order
60 lines (59 loc) • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.hasPlugin = exports.getExperimentalParserPlugins = void 0;
/**
* Returns a list of babel parser plugin names
* @param importOrderParserPlugins array of experimental babel parser plugins
* @returns list of parser plugins to be passed to babel parser
*/
const getExperimentalParserPlugins = (importOrderParserPlugins) => {
return importOrderParserPlugins.map((pluginNameOrJson) => {
// ParserPlugin can be either a string or and array of [name: string, options: object]
// in prettier options the array will be sent in a JSON string
const isParserPluginWithOptions = pluginNameOrJson.startsWith('[');
let plugin;
if (isParserPluginWithOptions) {
try {
plugin = JSON.parse(pluginNameOrJson);
}
catch (e) {
throw Error('Invalid JSON in importOrderParserPlugins: ' +
pluginNameOrJson);
}
}
else {
plugin = pluginNameOrJson;
}
return plugin;
});
};
exports.getExperimentalParserPlugins = getExperimentalParserPlugins;
/**
* Checks whether a specified plugin is included in importOrderParserPlugins.
* More fancy than just a `.includes()` because importOrderParserPlugins can contain plugins with configuration
*
* @param importOrderParserPlugins array of experimental babel parser plugins
* @returns true if the plugin is in the list
*/
const hasPlugin = (importOrderParserPlugins, pluginName) => {
for (const pluginNameOrJson of importOrderParserPlugins) {
const isParserPluginWithOptions = pluginNameOrJson.startsWith('[');
let plugin;
if (isParserPluginWithOptions) {
try {
plugin = JSON.parse(pluginNameOrJson)[0];
}
catch (e) {
throw Error('Invalid JSON in importOrderParserPlugins: ' +
pluginNameOrJson);
}
}
else {
plugin = pluginNameOrJson;
}
if (plugin === pluginName)
return true;
}
return false;
};
exports.hasPlugin = hasPlugin;