astro-ghostcms/.pnpm-store/v3/files/ab/12a5d09732804b1d4de6908cfa4...

51 lines
2.9 KiB
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveOrganizeImportsCodeAction = exports.resolveRefactorCodeAction = exports.resolveFixAllCodeAction = exports.register = void 0;
const getFormatCodeSettings_1 = require("../configs/getFormatCodeSettings");
const getUserPreferences_1 = require("../configs/getUserPreferences");
const shared_1 = require("../shared");
const rename_1 = require("./rename");
function register(ctx) {
return async (codeAction) => {
const data = codeAction.data;
const document = ctx.getTextDocument(data.uri);
const [formatOptions, preferences] = document ? await Promise.all([
(0, getFormatCodeSettings_1.getFormatCodeSettings)(ctx, document),
(0, getUserPreferences_1.getUserPreferences)(ctx, document),
]) : [{}, {}];
if (data?.type === 'fixAll') {
resolveFixAllCodeAction(ctx, codeAction, data, formatOptions, preferences);
}
else if (data?.type === 'refactor' && document) {
resolveRefactorCodeAction(ctx, codeAction, data, document, formatOptions, preferences);
}
else if (data?.type === 'organizeImports') {
resolveOrganizeImportsCodeAction(ctx, codeAction, data, formatOptions, preferences);
}
return codeAction;
};
}
exports.register = register;
function resolveFixAllCodeAction(ctx, codeAction, data, formatOptions, preferences) {
const fixes = data.fixIds.map(fixId => (0, shared_1.safeCall)(() => ctx.languageService.getCombinedCodeFix({ type: 'file', fileName: data.fileName }, fixId, formatOptions, preferences)));
const changes = fixes.map(fix => fix?.changes ?? []).flat();
codeAction.edit = (0, rename_1.fileTextChangesToWorkspaceEdit)(changes, ctx);
}
exports.resolveFixAllCodeAction = resolveFixAllCodeAction;
function resolveRefactorCodeAction(ctx, codeAction, data, document, formatOptions, preferences) {
const editInfo = (0, shared_1.safeCall)(() => ctx.languageService.getEditsForRefactor(data.fileName, formatOptions, data.range, data.refactorName, data.actionName, preferences));
if (!editInfo) {
return;
}
codeAction.edit = (0, rename_1.fileTextChangesToWorkspaceEdit)(editInfo.edits, ctx);
if (editInfo.renameLocation !== undefined && editInfo.renameFilename !== undefined) {
codeAction.command = ctx.commands.rename.create(document.uri, document.positionAt(editInfo.renameLocation));
}
}
exports.resolveRefactorCodeAction = resolveRefactorCodeAction;
function resolveOrganizeImportsCodeAction(ctx, codeAction, data, formatOptions, preferences) {
const changes = (0, shared_1.safeCall)(() => ctx.languageService.organizeImports({ type: 'file', fileName: data.fileName }, formatOptions, preferences));
codeAction.edit = (0, rename_1.fileTextChangesToWorkspaceEdit)(changes ?? [], ctx);
}
exports.resolveOrganizeImportsCodeAction = resolveOrganizeImportsCodeAction;
//# sourceMappingURL=codeActionResolve.js.map