51 lines
2.1 KiB
Plaintext
51 lines
2.1 KiB
Plaintext
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.register = void 0;
|
|
const rename_1 = require("./rename");
|
|
const cancellation_1 = require("../utils/cancellation");
|
|
function register(context) {
|
|
return async (item, token = cancellation_1.NoneCancellationToken) => {
|
|
const data = item.data;
|
|
if (data?.type === 'service') {
|
|
const service = context.services[data.serviceId];
|
|
if (!service.resolveCodeAction)
|
|
return item;
|
|
Object.assign(item, data.original);
|
|
item = await service.resolveCodeAction(item, token);
|
|
item = service.transformCodeAction?.(item)
|
|
?? (item.edit
|
|
? {
|
|
...item,
|
|
edit: (0, rename_1.embeddedEditToSourceEdit)(item.edit, context.documents, 'codeAction', { [data.uri]: data.version }),
|
|
}
|
|
: item);
|
|
}
|
|
if (data?.type === 'rule') {
|
|
const fixes = context.ruleFixes?.[data.documentUri]?.[data.ruleId]?.[data.ruleFixIndex];
|
|
const fix = fixes?.[1][data.index];
|
|
if (fix) {
|
|
let edit = await fix.getWorkspaceEdit?.(fixes[0]) ?? undefined;
|
|
if (!edit) {
|
|
const edits = await fix.getEdits?.(fixes[0]);
|
|
if (edits) {
|
|
edit = {
|
|
documentChanges: [{
|
|
textDocument: {
|
|
uri: data.documentUri,
|
|
version: null
|
|
},
|
|
edits,
|
|
}],
|
|
};
|
|
}
|
|
}
|
|
if (edit) {
|
|
item.edit = (0, rename_1.embeddedEditToSourceEdit)(edit, context.documents, data.isFormat ? 'format' : 'codeAction', { [data.uri]: data.version });
|
|
}
|
|
}
|
|
}
|
|
return item;
|
|
};
|
|
}
|
|
exports.register = register;
|
|
//# sourceMappingURL=codeActionResolve.js.map |