eslint-plugin-arrow-return-style-x
Version:
Enforce arrow function return style and automatically fix it
80 lines (78 loc) • 2.1 kB
JavaScript
import { runAsWorker } from "synckit";
//#region workers/prettier-worker.ts
let prettier;
let prettierLoadAttempted = false;
/**
* Handles format request type.
*
* @param request - The format request to process.
* @returns Promise resolving to format result.
*/
async function handleFormatRequest(request) {
if (!prettier) throw new Error("Prettier not loaded");
let config = await prettier.resolveConfig(request.filePath ?? "package.json", { editorconfig: true });
if (request.configOverride) config = {
...config,
...request.configOverride
};
const formatted = await prettier.format(request.code, {
...config,
filepath: request.filePath
});
const lines = formatted.trim().split("\n");
const isMultiline = lines.length > 1;
const lineLength = lines[0]?.length ?? 0;
return {
formatted: formatted.trim(),
isMultiline,
lineLength,
success: true
};
}
/**
* Handles resolveConfig request type.
*
* @param request - The resolve config request to process.
* @returns Promise resolving to config result.
*/
async function handleResolveConfigRequest(request) {
if (!prettier) throw new Error("Prettier not loaded");
const config = await prettier.resolveConfig(request.filePath ?? "package.json", { editorconfig: true });
return {
config: config ?? {},
success: true
};
}
/**
* Loads prettier module dynamically.
*
* @returns Promise resolving to boolean indicating if prettier was loaded
* successfully.
*/
async function loadPrettier() {
if (prettierLoadAttempted) return prettier !== void 0;
prettierLoadAttempted = true;
try {
prettier = await import("prettier");
return true;
} catch {
return false;
}
}
runAsWorker(async (request) => {
try {
const loaded = await loadPrettier();
if (!loaded || !prettier) return {
error: "Prettier not available",
success: false
};
if (request.type === "format") return await handleFormatRequest(request);
return await handleResolveConfigRequest(request);
} catch (err) {
return {
error: err instanceof Error ? err.message : "Prettier operation failed",
success: false
};
}
});
//#endregion