@effect/language-service 0.0.11 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_mjs/index.mjs +21 -61
- package/_mjs/index.mjs.map +1 -1
- package/_mjs/refactors/addPipe.mjs +12 -18
- package/_mjs/refactors/addPipe.mjs.map +1 -1
- package/_mjs/refactors/asyncAwaitToGen.mjs +12 -18
- package/_mjs/refactors/asyncAwaitToGen.mjs.map +1 -1
- package/_mjs/refactors/asyncAwaitToGenTryPromise.mjs +17 -23
- package/_mjs/refactors/asyncAwaitToGenTryPromise.mjs.map +1 -1
- package/_mjs/refactors/definition.mjs.map +1 -1
- package/_mjs/refactors/functionToArrow.mjs +31 -36
- package/_mjs/refactors/functionToArrow.mjs.map +1 -1
- package/_mjs/refactors/index.mjs +1 -5
- package/_mjs/refactors/index.mjs.map +1 -1
- package/_mjs/refactors/removePipe.mjs +11 -17
- package/_mjs/refactors/removePipe.mjs.map +1 -1
- package/_mjs/refactors/toggleReturnTypeAnnotation.mjs +10 -15
- package/_mjs/refactors/toggleReturnTypeAnnotation.mjs.map +1 -1
- package/_mjs/refactors/toggleTypeAnnotation.mjs +25 -31
- package/_mjs/refactors/toggleTypeAnnotation.mjs.map +1 -1
- package/_mjs/refactors/wrapWithPipe.mjs +5 -8
- package/_mjs/refactors/wrapWithPipe.mjs.map +1 -1
- package/_mjs/{utils.mjs → utils/AST.mjs} +81 -39
- package/_mjs/utils/AST.mjs.map +1 -0
- package/_mjs/utils/Function.mjs +31 -0
- package/_mjs/utils/Function.mjs.map +1 -0
- package/_mjs/utils/Option.mjs +14 -0
- package/_mjs/utils/Option.mjs.map +1 -0
- package/_mjs/utils/ReadonlyArray.mjs +12 -0
- package/_mjs/utils/ReadonlyArray.mjs.map +1 -0
- package/index.js +24 -64
- package/index.js.map +1 -1
- package/package.json +1 -3
- package/refactors/addPipe.d.ts.map +1 -1
- package/refactors/addPipe.js +12 -18
- package/refactors/addPipe.js.map +1 -1
- package/refactors/asyncAwaitToGen.d.ts.map +1 -1
- package/refactors/asyncAwaitToGen.js +12 -18
- package/refactors/asyncAwaitToGen.js.map +1 -1
- package/refactors/asyncAwaitToGenTryPromise.d.ts.map +1 -1
- package/refactors/asyncAwaitToGenTryPromise.js +17 -23
- package/refactors/asyncAwaitToGenTryPromise.js.map +1 -1
- package/refactors/definition.d.ts +7 -6
- package/refactors/definition.d.ts.map +1 -1
- package/refactors/definition.js.map +1 -1
- package/refactors/functionToArrow.d.ts.map +1 -1
- package/refactors/functionToArrow.js +31 -36
- package/refactors/functionToArrow.js.map +1 -1
- package/refactors/index.d.ts +0 -2
- package/refactors/index.d.ts.map +1 -1
- package/refactors/index.js +1 -5
- package/refactors/index.js.map +1 -1
- package/refactors/removePipe.d.ts.map +1 -1
- package/refactors/removePipe.js +11 -17
- package/refactors/removePipe.js.map +1 -1
- package/refactors/toggleReturnTypeAnnotation.d.ts.map +1 -1
- package/refactors/toggleReturnTypeAnnotation.js +10 -15
- package/refactors/toggleReturnTypeAnnotation.js.map +1 -1
- package/refactors/toggleTypeAnnotation.d.ts.map +1 -1
- package/refactors/toggleTypeAnnotation.js +25 -31
- package/refactors/toggleTypeAnnotation.js.map +1 -1
- package/refactors/wrapWithPipe.d.ts.map +1 -1
- package/refactors/wrapWithPipe.js +5 -8
- package/refactors/wrapWithPipe.js.map +1 -1
- package/{ast.d.ts → utils/AST.d.ts} +14 -10
- package/utils/AST.d.ts.map +1 -0
- package/{utils.js → utils/AST.js} +91 -42
- package/utils/AST.js.map +1 -0
- package/utils/Function.d.ts +21 -0
- package/utils/Function.d.ts.map +1 -0
- package/utils/Function.js +37 -0
- package/utils/Function.js.map +1 -0
- package/utils/Option.d.ts +17 -0
- package/utils/Option.d.ts.map +1 -0
- package/utils/Option.js +28 -0
- package/utils/Option.js.map +1 -0
- package/utils/ReadonlyArray.d.ts +17 -0
- package/utils/ReadonlyArray.d.ts.map +1 -0
- package/utils/ReadonlyArray.js +30 -0
- package/utils/ReadonlyArray.js.map +1 -0
- package/_mjs/ast.mjs +0 -80
- package/_mjs/ast.mjs.map +0 -1
- package/_mjs/config.mjs +0 -24
- package/_mjs/config.mjs.map +0 -1
- package/_mjs/diagnostics/definition.mjs +0 -4
- package/_mjs/diagnostics/definition.mjs.map +0 -1
- package/_mjs/diagnostics/ensureGetCallTrace.mjs +0 -51
- package/_mjs/diagnostics/ensureGetCallTrace.mjs.map +0 -1
- package/_mjs/diagnostics/index.mjs +0 -7
- package/_mjs/diagnostics/index.mjs.map +0 -1
- package/_mjs/diagnostics/noSyncWithConstant.mjs +0 -40
- package/_mjs/diagnostics/noSyncWithConstant.mjs.map +0 -1
- package/_mjs/eslint-rules/index.mjs +0 -8
- package/_mjs/eslint-rules/index.mjs.map +0 -1
- package/_mjs/eslint-rules/no-curry-arrow.mjs +0 -33
- package/_mjs/eslint-rules/no-curry-arrow.mjs.map +0 -1
- package/_mjs/eslint-rules/utils.mjs +0 -8
- package/_mjs/eslint-rules/utils.mjs.map +0 -1
- package/_mjs/refactors/noSyncWithConstant.mjs +0 -34
- package/_mjs/refactors/noSyncWithConstant.mjs.map +0 -1
- package/_mjs/refactors/removeCurryArrow.mjs +0 -24
- package/_mjs/refactors/removeCurryArrow.mjs.map +0 -1
- package/_mjs/utils.mjs.map +0 -1
- package/ast.d.ts.map +0 -1
- package/ast.js +0 -100
- package/ast.js.map +0 -1
- package/config.d.ts +0 -10
- package/config.d.ts.map +0 -1
- package/config.js +0 -31
- package/config.js.map +0 -1
- package/diagnostics/definition.d.ts +0 -15
- package/diagnostics/definition.d.ts.map +0 -1
- package/diagnostics/definition.js +0 -10
- package/diagnostics/definition.js.map +0 -1
- package/diagnostics/ensureGetCallTrace.d.ts +0 -3
- package/diagnostics/ensureGetCallTrace.d.ts.map +0 -1
- package/diagnostics/ensureGetCallTrace.js +0 -60
- package/diagnostics/ensureGetCallTrace.js.map +0 -1
- package/diagnostics/index.d.ts +0 -6
- package/diagnostics/index.d.ts.map +0 -1
- package/diagnostics/index.js +0 -15
- package/diagnostics/index.js.map +0 -1
- package/diagnostics/noSyncWithConstant.d.ts +0 -10
- package/diagnostics/noSyncWithConstant.d.ts.map +0 -1
- package/diagnostics/noSyncWithConstant.js +0 -52
- package/diagnostics/noSyncWithConstant.js.map +0 -1
- package/eslint-rules/index.d.ts +0 -9
- package/eslint-rules/index.d.ts.map +0 -1
- package/eslint-rules/index.js +0 -16
- package/eslint-rules/index.js.map +0 -1
- package/eslint-rules/no-curry-arrow.d.ts +0 -5
- package/eslint-rules/no-curry-arrow.d.ts.map +0 -1
- package/eslint-rules/no-curry-arrow.js +0 -42
- package/eslint-rules/no-curry-arrow.js.map +0 -1
- package/eslint-rules/utils.d.ts +0 -5
- package/eslint-rules/utils.d.ts.map +0 -1
- package/eslint-rules/utils.js +0 -16
- package/eslint-rules/utils.js.map +0 -1
- package/refactors/noSyncWithConstant.d.ts +0 -3
- package/refactors/noSyncWithConstant.d.ts.map +0 -1
- package/refactors/noSyncWithConstant.js +0 -43
- package/refactors/noSyncWithConstant.js.map +0 -1
- package/refactors/removeCurryArrow.d.ts +0 -3
- package/refactors/removeCurryArrow.d.ts.map +0 -1
- package/refactors/removeCurryArrow.js +0 -33
- package/refactors/removeCurryArrow.js.map +0 -1
- package/utils.d.ts +0 -17
- package/utils.d.ts.map +0 -1
- package/utils.js.map +0 -1
package/_mjs/index.mjs
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import * as T from "@effect/io/Effect";
|
|
2
|
-
import * as AST from "@effect/language-service/ast";
|
|
3
|
-
import { parseLanguageServicePluginConfig } from "@effect/language-service/config";
|
|
4
|
-
import diagnostics from "@effect/language-service/diagnostics/index";
|
|
5
1
|
import refactors from "@effect/language-service/refactors/index";
|
|
6
|
-
import * as
|
|
7
|
-
import {
|
|
8
|
-
import * as O from "@
|
|
2
|
+
import * as AST from "@effect/language-service/utils/AST";
|
|
3
|
+
import { pipe } from "@effect/language-service/utils/Function";
|
|
4
|
+
import * as O from "@effect/language-service/utils/Option";
|
|
9
5
|
// eslint-disable-next-line @typescript-eslint/consistent-type-imports
|
|
10
6
|
function init(modules) {
|
|
11
7
|
const ts = modules.typescript;
|
|
@@ -17,54 +13,20 @@ function init(modules) {
|
|
|
17
13
|
// @ts-expect-error
|
|
18
14
|
proxy[k] = (...args) => languageService[k].apply(languageService, args);
|
|
19
15
|
}
|
|
20
|
-
function applyConfiguredDiagnosticCategory(diagnostic) {
|
|
21
|
-
const config = parseLanguageServicePluginConfig(info.config);
|
|
22
|
-
const category = config.diagnostics[diagnostic.code] || diagnostic.category;
|
|
23
|
-
return {
|
|
24
|
-
...diagnostic,
|
|
25
|
-
category
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
function toTsDiagnosticCategory(category) {
|
|
29
|
-
return {
|
|
30
|
-
none: ts.DiagnosticCategory.Suggestion,
|
|
31
|
-
suggestion: ts.DiagnosticCategory.Suggestion,
|
|
32
|
-
warning: ts.DiagnosticCategory.Warning,
|
|
33
|
-
error: ts.DiagnosticCategory.Error
|
|
34
|
-
}[category];
|
|
35
|
-
}
|
|
36
|
-
proxy.getSuggestionDiagnostics = (...args) => {
|
|
37
|
-
const suggestionDiagnostics = languageService.getSuggestionDiagnostics(...args);
|
|
38
|
-
const [fileName] = args;
|
|
39
|
-
const program = languageService.getProgram();
|
|
40
|
-
if (program) {
|
|
41
|
-
const effectDiagnostics = pipe(AST.getSourceFile(fileName), T.flatMap(sourceFile => pipe(Object.values(diagnostics).map(applyConfiguredDiagnosticCategory).filter(_ => _.category !== "none"), T.forEachPar(diagnostic => pipe(diagnostic.apply(sourceFile), T.map(Ch.map(_ => ({
|
|
42
|
-
file: sourceFile,
|
|
43
|
-
start: _.node.pos,
|
|
44
|
-
length: _.node.end - _.node.pos,
|
|
45
|
-
messageText: _.messageText,
|
|
46
|
-
category: toTsDiagnosticCategory(diagnostic.category),
|
|
47
|
-
code: diagnostic.code,
|
|
48
|
-
source: "effect"
|
|
49
|
-
}))))))), T.map(Ch.flatten), T.map(e => Array.from(e)), T.provideService(AST.TypeScriptProgram)(program), T.provideService(AST.TypeScriptApi)(modules.typescript), T.unsafeRunSync);
|
|
50
|
-
return suggestionDiagnostics.concat(effectDiagnostics);
|
|
51
|
-
}
|
|
52
|
-
return suggestionDiagnostics;
|
|
53
|
-
};
|
|
54
16
|
proxy.getApplicableRefactors = (...args) => {
|
|
55
17
|
const applicableRefactors = languageService.getApplicableRefactors(...args);
|
|
56
18
|
const [fileName, positionOrRange] = args;
|
|
57
19
|
const program = languageService.getProgram();
|
|
58
20
|
if (program) {
|
|
59
21
|
const textRange = AST.toTextRange(positionOrRange);
|
|
60
|
-
const effectRefactors = pipe(AST.getSourceFile(fileName),
|
|
22
|
+
const effectRefactors = pipe(AST.getSourceFile(program)(fileName), sourceFile => pipe(Object.values(refactors).map(refactor => pipe(refactor.apply(modules.typescript, program)(sourceFile, textRange), O.map(_ => ({
|
|
61
23
|
name: refactor.name,
|
|
62
24
|
description: refactor.description,
|
|
63
25
|
actions: [{
|
|
64
26
|
name: refactor.name,
|
|
65
27
|
description: _.description
|
|
66
28
|
}]
|
|
67
|
-
}))))
|
|
29
|
+
})))), _ => _.reduce((arr, maybeRefactor) => arr.concat(O.isSome(maybeRefactor) ? [maybeRefactor.value] : []), [])));
|
|
68
30
|
info.project.projectService.logger.info("[@effect/language-service] possible refactors are " + JSON.stringify(effectRefactors));
|
|
69
31
|
return applicableRefactors.concat(effectRefactors);
|
|
70
32
|
}
|
|
@@ -75,26 +37,24 @@ function init(modules) {
|
|
|
75
37
|
if (program) {
|
|
76
38
|
for (const refactor of Object.values(refactors)) {
|
|
77
39
|
if (refactor.name === refactorName) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
info.project.projectService.logger.info("[@effect/language-service] requested refactor " + refactorName + " is not applicable");
|
|
84
|
-
return {
|
|
85
|
-
edits: []
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
const formatContext = ts.formatting.getFormatContext(formatOptions, info.languageServiceHost);
|
|
89
|
-
const edits = ts.textChanges.ChangeTracker.with({
|
|
90
|
-
formatContext,
|
|
91
|
-
host: info.languageServiceHost,
|
|
92
|
-
preferences: preferences || {}
|
|
93
|
-
}, changeTracker => pipe(possibleRefactor.value.apply, T.provideService(AST.ChangeTrackerApi)(changeTracker), T.provideService(AST.TypeScriptApi)(modules.typescript), T.provideService(AST.TypeScriptProgram)(program), T.unsafeRunSync));
|
|
40
|
+
const sourceFile = AST.getSourceFile(program)(fileName);
|
|
41
|
+
const textRange = AST.toTextRange(positionOrRange);
|
|
42
|
+
const possibleRefactor = refactor.apply(modules.typescript, program)(sourceFile, textRange);
|
|
43
|
+
if (O.isNone(possibleRefactor)) {
|
|
44
|
+
info.project.projectService.logger.info("[@effect/language-service] requested refactor " + refactorName + " is not applicable");
|
|
94
45
|
return {
|
|
95
|
-
edits
|
|
46
|
+
edits: []
|
|
96
47
|
};
|
|
97
|
-
}
|
|
48
|
+
}
|
|
49
|
+
const formatContext = ts.formatting.getFormatContext(formatOptions, info.languageServiceHost);
|
|
50
|
+
const edits = ts.textChanges.ChangeTracker.with({
|
|
51
|
+
formatContext,
|
|
52
|
+
host: info.languageServiceHost,
|
|
53
|
+
preferences: preferences || {}
|
|
54
|
+
}, changeTracker => possibleRefactor.value.apply(changeTracker));
|
|
55
|
+
return {
|
|
56
|
+
edits
|
|
57
|
+
};
|
|
98
58
|
}
|
|
99
59
|
}
|
|
100
60
|
}
|
package/_mjs/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","mappings":"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","names":["refactors","AST","pipe","O","init","modules","ts","typescript","create","info","languageService","proxy","Object","k","keys","args","apply","getApplicableRefactors","applicableRefactors","fileName","positionOrRange","program","getProgram","textRange","toTextRange","effectRefactors","getSourceFile","sourceFile","values","map","refactor","_","name","description","actions","reduce","arr","maybeRefactor","concat","isSome","value","project","projectService","logger","JSON","stringify","getEditsForRefactor","formatOptions","refactorName","actionName","preferences","possibleRefactor","isNone","edits","formatContext","formatting","getFormatContext","languageServiceHost","textChanges","ChangeTracker","with","host","changeTracker","module","exports"],"sourceRoot":"","sources":["../../src/index.ts"],"sourcesContent":[null]}
|
|
@@ -1,24 +1,18 @@
|
|
|
1
|
-
import * as T from "@effect/io/Effect";
|
|
2
|
-
import * as AST from "@effect/language-service/ast";
|
|
3
1
|
import { createRefactor } from "@effect/language-service/refactors/definition";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import * as
|
|
2
|
+
import * as AST from "@effect/language-service/utils/AST";
|
|
3
|
+
import { pipe } from "@effect/language-service/utils/Function";
|
|
4
|
+
import * as O from "@effect/language-service/utils/Option";
|
|
5
|
+
import * as Ch from "@effect/language-service/utils/ReadonlyArray";
|
|
8
6
|
export default /*#__PURE__*/createRefactor({
|
|
9
7
|
name: "effect/addPipe",
|
|
10
8
|
description: "Rewrite using pipe",
|
|
11
|
-
apply: (sourceFile, textRange) =>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
changeTracker.replaceNode(sourceFile, node, newNode);
|
|
20
|
-
})
|
|
21
|
-
})));
|
|
22
|
-
})
|
|
9
|
+
apply: ts => (sourceFile, textRange) => pipe(AST.getNodesContainingRange(ts)(sourceFile, textRange), Ch.reverse, Ch.fromIterable, Ch.filter(AST.isNodeInRange(textRange)), Ch.filter(AST.isPipeableCallExpression(ts)), Ch.head, O.map(node => ({
|
|
10
|
+
description: `Rewrite ${AST.getHumanReadableName(sourceFile, node.expression)} to pipe`,
|
|
11
|
+
apply: changeTracker => {
|
|
12
|
+
const args = AST.asPipeArguments(ts)(node);
|
|
13
|
+
const newNode = ts.factory.createCallExpression(ts.factory.createIdentifier("pipe"), undefined, Array.from(args));
|
|
14
|
+
changeTracker.replaceNode(sourceFile, node, newNode);
|
|
15
|
+
}
|
|
16
|
+
})))
|
|
23
17
|
});
|
|
24
18
|
//# sourceMappingURL=addPipe.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addPipe.mjs","mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"addPipe.mjs","mappings":"AAAA,SAASA,cAAc,QAAQ,+CAA+C;AAC9E,OAAO,KAAKC,GAAG,MAAM,oCAAoC;AACzD,SAASC,IAAI,QAAQ,yCAAyC;AAC9D,OAAO,KAAKC,CAAC,MAAM,uCAAuC;AAC1D,OAAO,KAAKC,EAAE,MAAM,8CAA8C;AAElE,4BAAeJ,cAAc,CAAC;EAC5BK,IAAI,EAAE,gBAAgB;EACtBC,WAAW,EAAE,oBAAoB;EACjCC,KAAK,EAAGC,EAAE,IACR,CAACC,UAAU,EAAEC,SAAS,KACpBR,IAAI,CACFD,GAAG,CAACU,uBAAuB,CAACH,EAAE,CAAC,CAACC,UAAU,EAAEC,SAAS,CAAC,EACtDN,EAAE,CAACQ,OAAO,EACVR,EAAE,CAACS,YAAY,EACfT,EAAE,CAACU,MAAM,CAACb,GAAG,CAACc,aAAa,CAACL,SAAS,CAAC,CAAC,EACvCN,EAAE,CAACU,MAAM,CAACb,GAAG,CAACe,wBAAwB,CAACR,EAAE,CAAC,CAAC,EAC3CJ,EAAE,CAACa,IAAI,EACPd,CAAC,CAACe,GAAG,CAAEC,IAAI,KAAM;IACfb,WAAW,EAAE,WAAWL,GAAG,CAACmB,oBAAoB,CAACX,UAAU,EAAEU,IAAI,CAACE,UAAU,CAAC,UAAU;IACvFd,KAAK,EAAGe,aAA2C,IAAI;MACrD,MAAMC,IAAI,GAAGtB,GAAG,CAACuB,eAAe,CAAChB,EAAE,CAAC,CAACW,IAAI,CAAC;MAE1C,MAAMM,OAAO,GAAGjB,EAAE,CAACkB,OAAO,CAACC,oBAAoB,CAC7CnB,EAAE,CAACkB,OAAO,CAACE,gBAAgB,CAAC,MAAM,CAAC,EACnCC,SAAS,EACTC,KAAK,CAACC,IAAI,CAACR,IAAI,CAAC,CACjB;MAEDD,aAAa,CAACU,WAAW,CAACvB,UAAU,EAAEU,IAAI,EAAEM,OAAO,CAAC;IACtD;GACD,CAAC,CAAC;CAEV,CAAC","names":["createRefactor","AST","pipe","O","Ch","name","description","apply","ts","sourceFile","textRange","getNodesContainingRange","reverse","fromIterable","filter","isNodeInRange","isPipeableCallExpression","head","map","node","getHumanReadableName","expression","changeTracker","args","asPipeArguments","newNode","factory","createCallExpression","createIdentifier","undefined","Array","from","replaceNode"],"sourceRoot":"","sources":["../../../src/refactors/addPipe.ts"],"sourcesContent":[null]}
|
|
@@ -1,24 +1,18 @@
|
|
|
1
|
-
import * as T from "@effect/io/Effect";
|
|
2
|
-
import * as AST from "@effect/language-service/ast";
|
|
3
1
|
import { createRefactor } from "@effect/language-service/refactors/definition";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import * as
|
|
2
|
+
import * as AST from "@effect/language-service/utils/AST";
|
|
3
|
+
import { pipe } from "@effect/language-service/utils/Function";
|
|
4
|
+
import * as O from "@effect/language-service/utils/Option";
|
|
5
|
+
import * as Ch from "@effect/language-service/utils/ReadonlyArray";
|
|
8
6
|
export default /*#__PURE__*/createRefactor({
|
|
9
7
|
name: "effect/asyncAwaitToGen",
|
|
10
8
|
description: "Convert to Effect.gen",
|
|
11
|
-
apply: (sourceFile, textRange) =>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
changeTracker.replaceNode(sourceFile, node, newDeclaration);
|
|
20
|
-
})
|
|
21
|
-
})));
|
|
22
|
-
})
|
|
9
|
+
apply: ts => (sourceFile, textRange) => pipe(AST.getNodesContainingRange(ts)(sourceFile, textRange), Ch.filter(ts.isFunctionDeclaration), Ch.filter(node => !!node.body), Ch.filter(node => !!(ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Async)), Ch.head, O.map(node => ({
|
|
10
|
+
description: "Rewrite to Effect.gen",
|
|
11
|
+
apply: changeTracker => {
|
|
12
|
+
const effectName = AST.getEffectModuleIdentifier(ts)(sourceFile);
|
|
13
|
+
const newDeclaration = AST.transformAsyncAwaitToEffectGen(ts)(node, effectName, expression => ts.factory.createCallExpression(ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier(effectName), "promise"), undefined, [expression]));
|
|
14
|
+
changeTracker.replaceNode(sourceFile, node, newDeclaration);
|
|
15
|
+
}
|
|
16
|
+
})))
|
|
23
17
|
});
|
|
24
18
|
//# sourceMappingURL=asyncAwaitToGen.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asyncAwaitToGen.mjs","mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"asyncAwaitToGen.mjs","mappings":"AAAA,SAASA,cAAc,QAAQ,+CAA+C;AAC9E,OAAO,KAAKC,GAAG,MAAM,oCAAoC;AACzD,SAASC,IAAI,QAAQ,yCAAyC;AAC9D,OAAO,KAAKC,CAAC,MAAM,uCAAuC;AAC1D,OAAO,KAAKC,EAAE,MAAM,8CAA8C;AAElE,4BAAeJ,cAAc,CAAC;EAC5BK,IAAI,EAAE,wBAAwB;EAC9BC,WAAW,EAAE,uBAAuB;EACpCC,KAAK,EAAGC,EAAE,IACR,CAACC,UAAU,EAAEC,SAAS,KACpBR,IAAI,CACFD,GAAG,CAACU,uBAAuB,CAACH,EAAE,CAAC,CAACC,UAAU,EAAEC,SAAS,CAAC,EACtDN,EAAE,CAACQ,MAAM,CAACJ,EAAE,CAACK,qBAAqB,CAAC,EACnCT,EAAE,CAACQ,MAAM,CAAEE,IAAI,IAAK,CAAC,CAACA,IAAI,CAACC,IAAI,CAAC,EAChCX,EAAE,CAACQ,MAAM,CAAEE,IAAI,IAAK,CAAC,EAAEN,EAAE,CAACQ,wBAAwB,CAACF,IAAI,CAAC,GAAGN,EAAE,CAACS,aAAa,CAACC,KAAK,CAAC,CAAC,EACnFd,EAAE,CAACe,IAAI,EACPhB,CAAC,CAACiB,GAAG,CAAEN,IAAI,KAAM;IACfR,WAAW,EAAE,uBAAuB;IACpCC,KAAK,EAAGc,aAAa,IAAI;MACvB,MAAMC,UAAU,GAAGrB,GAAG,CAACsB,yBAAyB,CAACf,EAAE,CAAC,CAACC,UAAU,CAAC;MAEhE,MAAMe,cAAc,GAAGvB,GAAG,CAACwB,8BAA8B,CAACjB,EAAE,CAAC,CAACM,IAAI,EAAEQ,UAAU,EAAGI,UAAU,IACzFlB,EAAE,CAACmB,OAAO,CAACC,oBAAoB,CAC7BpB,EAAE,CAACmB,OAAO,CAACE,8BAA8B,CACvCrB,EAAE,CAACmB,OAAO,CAACG,gBAAgB,CAACR,UAAU,CAAC,EACvC,SAAS,CACV,EACDS,SAAS,EACT,CAACL,UAAU,CAAC,CACb,CAAC;MAEJL,aAAa,CAACW,WAAW,CAACvB,UAAU,EAAEK,IAAI,EAAEU,cAAc,CAAC;IAC7D;GACD,CAAC,CAAC;CAEV,CAAC","names":["createRefactor","AST","pipe","O","Ch","name","description","apply","ts","sourceFile","textRange","getNodesContainingRange","filter","isFunctionDeclaration","node","body","getCombinedModifierFlags","ModifierFlags","Async","head","map","changeTracker","effectName","getEffectModuleIdentifier","newDeclaration","transformAsyncAwaitToEffectGen","expression","factory","createCallExpression","createPropertyAccessExpression","createIdentifier","undefined","replaceNode"],"sourceRoot":"","sources":["../../../src/refactors/asyncAwaitToGen.ts"],"sourcesContent":[null]}
|
|
@@ -1,29 +1,23 @@
|
|
|
1
|
-
import * as T from "@effect/io/Effect";
|
|
2
|
-
import * as AST from "@effect/language-service/ast";
|
|
3
1
|
import { createRefactor } from "@effect/language-service/refactors/definition";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import * as
|
|
2
|
+
import * as AST from "@effect/language-service/utils/AST";
|
|
3
|
+
import { pipe } from "@effect/language-service/utils/Function";
|
|
4
|
+
import * as O from "@effect/language-service/utils/Option";
|
|
5
|
+
import * as Ch from "@effect/language-service/utils/ReadonlyArray";
|
|
8
6
|
export default /*#__PURE__*/createRefactor({
|
|
9
7
|
name: "effect/asyncAwaitToGenTryPromise",
|
|
10
8
|
description: "Convert to Effect.gen with failures",
|
|
11
|
-
apply: (sourceFile, textRange) =>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
changeTracker.replaceNode(sourceFile, node, newDeclaration);
|
|
25
|
-
})
|
|
26
|
-
})));
|
|
27
|
-
})
|
|
9
|
+
apply: ts => (sourceFile, textRange) => pipe(AST.getNodesContainingRange(ts)(sourceFile, textRange), Ch.filter(ts.isFunctionDeclaration), Ch.filter(node => !!node.body), Ch.filter(node => !!(ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Async)), Ch.head, O.map(node => ({
|
|
10
|
+
description: "Rewrite to Effect.gen with failures",
|
|
11
|
+
apply: changeTracker => {
|
|
12
|
+
const effectName = AST.getEffectModuleIdentifier(ts)(sourceFile);
|
|
13
|
+
let errorCount = 0;
|
|
14
|
+
function createErrorADT() {
|
|
15
|
+
errorCount++;
|
|
16
|
+
return ts.factory.createObjectLiteralExpression([ts.factory.createPropertyAssignment("_tag", ts.factory.createAsExpression(ts.factory.createStringLiteral("Error" + errorCount), ts.factory.createTypeReferenceNode("const"))), ts.factory.createShorthandPropertyAssignment("error")]);
|
|
17
|
+
}
|
|
18
|
+
const newDeclaration = AST.transformAsyncAwaitToEffectGen(ts)(node, effectName, expression => ts.factory.createCallExpression(ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier(effectName), "tryCatchPromise"), undefined, [ts.factory.createArrowFunction(undefined, undefined, [], undefined, undefined, expression), ts.factory.createArrowFunction(undefined, undefined, [ts.factory.createParameterDeclaration(undefined, undefined, "error")], undefined, undefined, createErrorADT())]));
|
|
19
|
+
changeTracker.replaceNode(sourceFile, node, newDeclaration);
|
|
20
|
+
}
|
|
21
|
+
})))
|
|
28
22
|
});
|
|
29
23
|
//# sourceMappingURL=asyncAwaitToGenTryPromise.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asyncAwaitToGenTryPromise.mjs","mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"asyncAwaitToGenTryPromise.mjs","mappings":"AAAA,SAASA,cAAc,QAAQ,+CAA+C;AAC9E,OAAO,KAAKC,GAAG,MAAM,oCAAoC;AACzD,SAASC,IAAI,QAAQ,yCAAyC;AAC9D,OAAO,KAAKC,CAAC,MAAM,uCAAuC;AAC1D,OAAO,KAAKC,EAAE,MAAM,8CAA8C;AAElE,4BAAeJ,cAAc,CAAC;EAC5BK,IAAI,EAAE,kCAAkC;EACxCC,WAAW,EAAE,qCAAqC;EAClDC,KAAK,EAAGC,EAAE,IACR,CAACC,UAAU,EAAEC,SAAS,KACpBR,IAAI,CACFD,GAAG,CAACU,uBAAuB,CAACH,EAAE,CAAC,CAACC,UAAU,EAAEC,SAAS,CAAC,EACtDN,EAAE,CAACQ,MAAM,CAACJ,EAAE,CAACK,qBAAqB,CAAC,EACnCT,EAAE,CAACQ,MAAM,CAAEE,IAAI,IAAK,CAAC,CAACA,IAAI,CAACC,IAAI,CAAC,EAChCX,EAAE,CAACQ,MAAM,CAAEE,IAAI,IAAK,CAAC,EAAEN,EAAE,CAACQ,wBAAwB,CAACF,IAAI,CAAC,GAAGN,EAAE,CAACS,aAAa,CAACC,KAAK,CAAC,CAAC,EACnFd,EAAE,CAACe,IAAI,EACPhB,CAAC,CAACiB,GAAG,CAAEN,IAAI,KAAM;IACfR,WAAW,EAAE,qCAAqC;IAClDC,KAAK,EAAGc,aAAa,IAAI;MACvB,MAAMC,UAAU,GAAGrB,GAAG,CAACsB,yBAAyB,CAACf,EAAE,CAAC,CAACC,UAAU,CAAC;MAEhE,IAAIe,UAAU,GAAG,CAAC;MAElB,SAASC,cAAc;QACrBD,UAAU,EAAE;QACZ,OAAOhB,EAAE,CAACkB,OAAO,CAACC,6BAA6B,CAAC,CAC9CnB,EAAE,CAACkB,OAAO,CAACE,wBAAwB,CACjC,MAAM,EACNpB,EAAE,CAACkB,OAAO,CAACG,kBAAkB,CAC3BrB,EAAE,CAACkB,OAAO,CAACI,mBAAmB,CAAC,OAAO,GAAGN,UAAU,CAAC,EACpDhB,EAAE,CAACkB,OAAO,CAACK,uBAAuB,CAAC,OAAO,CAAC,CAC5C,CACF,EACDvB,EAAE,CAACkB,OAAO,CAACM,iCAAiC,CAAC,OAAO,CAAC,CACtD,CAAC;MACJ;MAEA,MAAMC,cAAc,GAAIhC,GAAG,CAACiC,8BAA8B,CAAC1B,EAAE,CAAC,CAACM,IAAI,EAAEQ,UAAU,EAAGa,UAAU,IAC1F3B,EAAE,CAACkB,OAAO,CAACU,oBAAoB,CAC7B5B,EAAE,CAACkB,OAAO,CAACW,8BAA8B,CACvC7B,EAAE,CAACkB,OAAO,CAACY,gBAAgB,CAAChB,UAAU,CAAC,EACvC,iBAAiB,CAClB,EACDiB,SAAS,EACT,CACE/B,EAAE,CAACkB,OAAO,CAACc,mBAAmB,CAACD,SAAS,EAAEA,SAAS,EAAE,EAAE,EAAEA,SAAS,EAAEA,SAAS,EAAEJ,UAAU,CAAC,EAC1F3B,EAAE,CAACkB,OAAO,CAACc,mBAAmB,CAC5BD,SAAS,EACTA,SAAS,EACT,CAAC/B,EAAE,CAACkB,OAAO,CAACe,0BAA0B,CAACF,SAAS,EAAEA,SAAS,EAAE,OAAO,CAAC,CAAC,EACtEA,SAAS,EACTA,SAAS,EACTd,cAAc,EAAE,CACjB,CACF,CACF,CAAE;MAELJ,aAAa,CAACqB,WAAW,CAACjC,UAAU,EAAEK,IAAI,EAAEmB,cAAc,CAAC;IAC7D;GACD,CAAC,CAAC;CAEV,CAAC","names":["createRefactor","AST","pipe","O","Ch","name","description","apply","ts","sourceFile","textRange","getNodesContainingRange","filter","isFunctionDeclaration","node","body","getCombinedModifierFlags","ModifierFlags","Async","head","map","changeTracker","effectName","getEffectModuleIdentifier","errorCount","createErrorADT","factory","createObjectLiteralExpression","createPropertyAssignment","createAsExpression","createStringLiteral","createTypeReferenceNode","createShorthandPropertyAssignment","newDeclaration","transformAsyncAwaitToEffectGen","expression","createCallExpression","createPropertyAccessExpression","createIdentifier","undefined","createArrowFunction","createParameterDeclaration","replaceNode"],"sourceRoot":"","sources":["../../../src/refactors/asyncAwaitToGenTryPromise.ts"],"sourcesContent":[null]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.mjs","mappings":"
|
|
1
|
+
{"version":3,"file":"definition.mjs","mappings":"AAkBA,OAAM,SAAUA,cAAc,CAACC,UAA8B;EAC3D,OAAOA,UAAU;AACnB","names":["createRefactor","definition"],"sourceRoot":"","sources":["../../../src/refactors/definition.ts"],"sourcesContent":[null]}
|
|
@@ -1,43 +1,38 @@
|
|
|
1
|
-
import * as T from "@effect/io/Effect";
|
|
2
|
-
import * as AST from "@effect/language-service/ast";
|
|
3
1
|
import { createRefactor } from "@effect/language-service/refactors/definition";
|
|
4
|
-
import * as
|
|
5
|
-
import { pipe } from "@
|
|
6
|
-
import * as O from "@
|
|
2
|
+
import * as AST from "@effect/language-service/utils/AST";
|
|
3
|
+
import { pipe } from "@effect/language-service/utils/Function";
|
|
4
|
+
import * as O from "@effect/language-service/utils/Option";
|
|
5
|
+
import * as Ch from "@effect/language-service/utils/ReadonlyArray";
|
|
7
6
|
export default /*#__PURE__*/createRefactor({
|
|
8
7
|
name: "effect/functionToArrow",
|
|
9
8
|
description: "Convert to arrow",
|
|
10
|
-
apply: (sourceFile, textRange) =>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const statement = body.statements[0];
|
|
20
|
-
if (statement && ts.isReturnStatement(statement) && statement.expression) {
|
|
21
|
-
newBody = statement.expression;
|
|
22
|
-
}
|
|
9
|
+
apply: ts => (sourceFile, textRange) => pipe(pipe(AST.getNodesContainingRange(ts)(sourceFile, textRange), Ch.filter(ts.isFunctionDeclaration)), Ch.concat(pipe(AST.getNodesContainingRange(ts)(sourceFile, textRange), Ch.filter(ts.isMethodDeclaration))), Ch.filter(node => !!node.body), Ch.filter(node => !!node.name && AST.isNodeInRange(textRange)(node.name)), Ch.head, O.map(node => ({
|
|
10
|
+
description: "Convert to arrow",
|
|
11
|
+
apply: changeTracker => {
|
|
12
|
+
const body = node.body;
|
|
13
|
+
let newBody = ts.factory.createBlock(body.statements);
|
|
14
|
+
if (body.statements.length === 1) {
|
|
15
|
+
const statement = body.statements[0];
|
|
16
|
+
if (statement && ts.isReturnStatement(statement) && statement.expression) {
|
|
17
|
+
newBody = statement.expression;
|
|
23
18
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
})
|
|
19
|
+
}
|
|
20
|
+
let arrowFlags = ts.getCombinedModifierFlags(node);
|
|
21
|
+
arrowFlags &= ~ts.ModifierFlags.Export;
|
|
22
|
+
arrowFlags &= ~ts.ModifierFlags.Default;
|
|
23
|
+
const arrowModifiers = ts.factory.createModifiersFromModifierFlags(arrowFlags);
|
|
24
|
+
const arrowFunction = ts.factory.createArrowFunction(arrowModifiers, node.typeParameters, node.parameters, undefined, ts.factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken), newBody);
|
|
25
|
+
let constFlags = ts.getCombinedModifierFlags(node);
|
|
26
|
+
constFlags &= ~arrowFlags;
|
|
27
|
+
const constModifiers = ts.factory.createModifiersFromModifierFlags(constFlags);
|
|
28
|
+
let newDeclaration = node;
|
|
29
|
+
if (ts.isMethodDeclaration(node)) {
|
|
30
|
+
newDeclaration = ts.factory.createPropertyDeclaration(constModifiers, node.name, undefined, undefined, arrowFunction);
|
|
31
|
+
} else if (ts.isFunctionDeclaration(node)) {
|
|
32
|
+
newDeclaration = ts.factory.createVariableStatement(constModifiers, ts.factory.createVariableDeclarationList([ts.factory.createVariableDeclaration(node.name, undefined, undefined, arrowFunction)], ts.NodeFlags.Const));
|
|
33
|
+
}
|
|
34
|
+
changeTracker.replaceNode(sourceFile, node, newDeclaration);
|
|
35
|
+
}
|
|
36
|
+
})))
|
|
42
37
|
});
|
|
43
38
|
//# sourceMappingURL=functionToArrow.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functionToArrow.mjs","mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"functionToArrow.mjs","mappings":"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","names":["createRefactor","AST","pipe","O","Ch","name","description","apply","ts","sourceFile","textRange","getNodesContainingRange","filter","isFunctionDeclaration","concat","isMethodDeclaration","node","body","isNodeInRange","head","map","changeTracker","newBody","factory","createBlock","statements","length","statement","isReturnStatement","expression","arrowFlags","getCombinedModifierFlags","ModifierFlags","Export","Default","arrowModifiers","createModifiersFromModifierFlags","arrowFunction","createArrowFunction","typeParameters","parameters","undefined","createToken","SyntaxKind","EqualsGreaterThanToken","constFlags","constModifiers","newDeclaration","createPropertyDeclaration","createVariableStatement","createVariableDeclarationList","createVariableDeclaration","NodeFlags","Const","replaceNode"],"sourceRoot":"","sources":["../../../src/refactors/functionToArrow.ts"],"sourcesContent":[null]}
|
package/_mjs/refactors/index.mjs
CHANGED
|
@@ -2,8 +2,6 @@ import addPipe from "@effect/language-service/refactors/addPipe";
|
|
|
2
2
|
import asyncAwaitToGen from "@effect/language-service/refactors/asyncAwaitToGen";
|
|
3
3
|
import asyncAwaitToGenTryPromise from "@effect/language-service/refactors/asyncAwaitToGenTryPromise";
|
|
4
4
|
import functionToArrow from "@effect/language-service/refactors/functionToArrow";
|
|
5
|
-
import noSyncWithConstant from "@effect/language-service/refactors/noSyncWithConstant";
|
|
6
|
-
import removeCurryArrow from "@effect/language-service/refactors/removeCurryArrow";
|
|
7
5
|
import removePipe from "@effect/language-service/refactors/removePipe";
|
|
8
6
|
import toggleReturnTypeAnnotation from "@effect/language-service/refactors/toggleReturnTypeAnnotation";
|
|
9
7
|
import toggleTypeAnnotation from "@effect/language-service/refactors/toggleTypeAnnotation";
|
|
@@ -13,11 +11,9 @@ export default {
|
|
|
13
11
|
asyncAwaitToGenTryPromise,
|
|
14
12
|
removePipe,
|
|
15
13
|
addPipe,
|
|
16
|
-
removeCurryArrow,
|
|
17
14
|
functionToArrow,
|
|
18
15
|
toggleTypeAnnotation,
|
|
19
16
|
toggleReturnTypeAnnotation,
|
|
20
|
-
wrapWithPipe
|
|
21
|
-
noSyncWithConstant
|
|
17
|
+
wrapWithPipe
|
|
22
18
|
};
|
|
23
19
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","mappings":"AAAA,OAAOA,OAAO,MAAM,4CAA4C;AAChE,OAAOC,eAAe,MAAM,oDAAoD;AAChF,OAAOC,yBAAyB,MAAM,8DAA8D;AACpG,OAAOC,eAAe,MAAM,oDAAoD;AAChF,OAAOC,
|
|
1
|
+
{"version":3,"file":"index.mjs","mappings":"AAAA,OAAOA,OAAO,MAAM,4CAA4C;AAChE,OAAOC,eAAe,MAAM,oDAAoD;AAChF,OAAOC,yBAAyB,MAAM,8DAA8D;AACpG,OAAOC,eAAe,MAAM,oDAAoD;AAChF,OAAOC,UAAU,MAAM,+CAA+C;AACtE,OAAOC,0BAA0B,MAAM,+DAA+D;AACtG,OAAOC,oBAAoB,MAAM,yDAAyD;AAC1F,OAAOC,YAAY,MAAM,iDAAiD;AAE1E,eAAe;EACbN,eAAe;EACfC,yBAAyB;EACzBE,UAAU;EACVJ,OAAO;EACPG,eAAe;EACfG,oBAAoB;EACpBD,0BAA0B;EAC1BE;CACD","names":["addPipe","asyncAwaitToGen","asyncAwaitToGenTryPromise","functionToArrow","removePipe","toggleReturnTypeAnnotation","toggleTypeAnnotation","wrapWithPipe"],"sourceRoot":"","sources":["../../../src/refactors/index.ts"],"sourcesContent":[null]}
|
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
import * as T from "@effect/io/Effect";
|
|
2
|
-
import * as AST from "@effect/language-service/ast";
|
|
3
1
|
import { createRefactor } from "@effect/language-service/refactors/definition";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import * as
|
|
2
|
+
import * as AST from "@effect/language-service/utils/AST";
|
|
3
|
+
import { pipe } from "@effect/language-service/utils/Function";
|
|
4
|
+
import * as O from "@effect/language-service/utils/Option";
|
|
5
|
+
import * as Ch from "@effect/language-service/utils/ReadonlyArray";
|
|
8
6
|
export default /*#__PURE__*/createRefactor({
|
|
9
7
|
name: "effect/removePipe",
|
|
10
8
|
description: "Remove pipe call",
|
|
11
|
-
apply: (sourceFile, textRange) =>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
changeTracker.replaceNode(sourceFile, node, newNode);
|
|
19
|
-
})
|
|
20
|
-
})));
|
|
21
|
-
})
|
|
9
|
+
apply: ts => (sourceFile, textRange) => pipe(AST.getNodesContainingRange(ts)(sourceFile, textRange), Ch.filter(AST.isPipeCall(ts)), Ch.filter(node => AST.isNodeInRange(textRange)(node.expression)), Ch.filter(node => node.arguments.length > 1), Ch.head, O.map(node => ({
|
|
10
|
+
description: "Remove pipe call",
|
|
11
|
+
apply: changeTracker => {
|
|
12
|
+
const newNode = node.arguments.slice(1).reduce((inner, exp) => ts.factory.createCallExpression(exp, undefined, [inner]), node.arguments[0]);
|
|
13
|
+
changeTracker.replaceNode(sourceFile, node, newNode);
|
|
14
|
+
}
|
|
15
|
+
})))
|
|
22
16
|
});
|
|
23
17
|
//# sourceMappingURL=removePipe.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removePipe.mjs","mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"removePipe.mjs","mappings":"AAAA,SAASA,cAAc,QAAQ,+CAA+C;AAC9E,OAAO,KAAKC,GAAG,MAAM,oCAAoC;AACzD,SAASC,IAAI,QAAQ,yCAAyC;AAC9D,OAAO,KAAKC,CAAC,MAAM,uCAAuC;AAC1D,OAAO,KAAKC,EAAE,MAAM,8CAA8C;AAElE,4BAAeJ,cAAc,CAAC;EAC5BK,IAAI,EAAE,mBAAmB;EACzBC,WAAW,EAAE,kBAAkB;EAC/BC,KAAK,EAAGC,EAAE,IACR,CAACC,UAAU,EAAEC,SAAS,KACpBR,IAAI,CACFD,GAAG,CAACU,uBAAuB,CAACH,EAAE,CAAC,CAACC,UAAU,EAAEC,SAAS,CAAC,EACtDN,EAAE,CAACQ,MAAM,CAACX,GAAG,CAACY,UAAU,CAACL,EAAE,CAAC,CAAC,EAC7BJ,EAAE,CAACQ,MAAM,CAAEE,IAAI,IAAKb,GAAG,CAACc,aAAa,CAACL,SAAS,CAAC,CAACI,IAAI,CAACE,UAAU,CAAC,CAAC,EAClEZ,EAAE,CAACQ,MAAM,CACNE,IAAI,IAAKA,IAAI,CAACG,SAAS,CAACC,MAAM,GAAG,CAAC,CACpC,EACDd,EAAE,CAACe,IAAI,EACPhB,CAAC,CAACiB,GAAG,CAAEN,IAAI,KAAM;IACfR,WAAW,EAAE,kBAAkB;IAC/BC,KAAK,EAAGc,aAAa,IAAI;MACvB,MAAMC,OAAO,GAAGR,IAAI,CAACG,SAAS,CAACM,KAAK,CAAC,CAAC,CAAC,CAACC,MAAM,CAC5C,CAACC,KAAK,EAAEC,GAAG,KAAKlB,EAAE,CAACmB,OAAO,CAACC,oBAAoB,CAACF,GAAG,EAAEG,SAAS,EAAE,CAACJ,KAAK,CAAC,CAAC,EACxEX,IAAI,CAACG,SAAS,CAAC,CAAC,CAAE,CACnB;MAEDI,aAAa,CAACS,WAAW,CAACrB,UAAU,EAAEK,IAAI,EAAEQ,OAAO,CAAC;IACtD;GACD,CAAC,CAAC;CAEV,CAAC","names":["createRefactor","AST","pipe","O","Ch","name","description","apply","ts","sourceFile","textRange","getNodesContainingRange","filter","isPipeCall","node","isNodeInRange","expression","arguments","length","head","map","changeTracker","newNode","slice","reduce","inner","exp","factory","createCallExpression","undefined","replaceNode"],"sourceRoot":"","sources":["../../../src/refactors/removePipe.ts"],"sourcesContent":[null]}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import * as T from "@effect/io/Effect";
|
|
2
|
-
import * as AST from "@effect/language-service/ast";
|
|
3
1
|
import { createRefactor } from "@effect/language-service/refactors/definition";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import * as
|
|
2
|
+
import * as AST from "@effect/language-service/utils/AST";
|
|
3
|
+
import { pipe } from "@effect/language-service/utils/Function";
|
|
4
|
+
import * as O from "@effect/language-service/utils/Option";
|
|
5
|
+
import * as Ch from "@effect/language-service/utils/ReadonlyArray";
|
|
8
6
|
export default /*#__PURE__*/createRefactor({
|
|
9
7
|
name: "effect/toggleReturnTypeAnnotation",
|
|
10
8
|
description: "Toggle return type annotation",
|
|
11
|
-
apply: (
|
|
12
|
-
const ts = yield* $(T.service(AST.TypeScriptApi));
|
|
9
|
+
apply: (ts, program) => (sourceFile, textRange) => {
|
|
13
10
|
function isConvertibleDeclaration(node) {
|
|
14
11
|
switch (node.kind) {
|
|
15
12
|
case ts.SyntaxKind.FunctionDeclaration:
|
|
@@ -23,12 +20,10 @@ export default /*#__PURE__*/createRefactor({
|
|
|
23
20
|
}
|
|
24
21
|
return pipe(AST.getNodesContainingRange(ts)(sourceFile, textRange), Ch.filter(isConvertibleDeclaration), Ch.head, O.map(node => ({
|
|
25
22
|
description: "Toggle return type annotation",
|
|
26
|
-
apply:
|
|
27
|
-
const program = yield* $(T.service(AST.TypeScriptProgram));
|
|
23
|
+
apply: changeTracker => {
|
|
28
24
|
const typeChecker = program.getTypeChecker();
|
|
29
|
-
const changeTracker = yield* $(T.service(AST.ChangeTrackerApi));
|
|
30
25
|
if (node.type) {
|
|
31
|
-
removeReturnTypeAnnotation(ts, changeTracker)(sourceFile, node);
|
|
26
|
+
AST.removeReturnTypeAnnotation(ts, changeTracker)(sourceFile, node);
|
|
32
27
|
return;
|
|
33
28
|
}
|
|
34
29
|
const callableType = typeChecker.getTypeAtLocation(node);
|
|
@@ -36,9 +31,9 @@ export default /*#__PURE__*/createRefactor({
|
|
|
36
31
|
const returnTypeNodes = returnTypes.map(type => typeChecker.typeToTypeNode(type, node, ts.NodeBuilderFlags.NoTruncation)).filter(node => !!node);
|
|
37
32
|
if (returnTypeNodes.length === 0) return;
|
|
38
33
|
const returnTypeNode = returnTypeNodes.length === 1 ? returnTypeNodes[0] : ts.factory.createUnionTypeNode(returnTypeNodes);
|
|
39
|
-
addReturnTypeAnnotation(ts, changeTracker)(sourceFile, node, returnTypeNode);
|
|
40
|
-
}
|
|
34
|
+
AST.addReturnTypeAnnotation(ts, changeTracker)(sourceFile, node, returnTypeNode);
|
|
35
|
+
}
|
|
41
36
|
})));
|
|
42
|
-
}
|
|
37
|
+
}
|
|
43
38
|
});
|
|
44
39
|
//# sourceMappingURL=toggleReturnTypeAnnotation.mjs.map
|