@effect/language-service 0.0.0

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.
Files changed (116) hide show
  1. package/README.md +59 -0
  2. package/_mjs/ast.mjs +80 -0
  3. package/_mjs/ast.mjs.map +1 -0
  4. package/_mjs/config.mjs +24 -0
  5. package/_mjs/config.mjs.map +1 -0
  6. package/_mjs/diagnostics/definition.mjs +4 -0
  7. package/_mjs/diagnostics/definition.mjs.map +1 -0
  8. package/_mjs/diagnostics/ensureGetCallTrace.mjs +49 -0
  9. package/_mjs/diagnostics/ensureGetCallTrace.mjs.map +1 -0
  10. package/_mjs/diagnostics/index.mjs +9 -0
  11. package/_mjs/diagnostics/index.mjs.map +1 -0
  12. package/_mjs/diagnostics/noSyncWithConstant.mjs +36 -0
  13. package/_mjs/diagnostics/noSyncWithConstant.mjs.map +1 -0
  14. package/_mjs/diagnostics/removeCurryArrow.mjs +18 -0
  15. package/_mjs/diagnostics/removeCurryArrow.mjs.map +1 -0
  16. package/_mjs/index.mjs +111 -0
  17. package/_mjs/index.mjs.map +1 -0
  18. package/_mjs/refactors/addPipe.mjs +24 -0
  19. package/_mjs/refactors/addPipe.mjs.map +1 -0
  20. package/_mjs/refactors/asyncAwaitToGen.mjs +25 -0
  21. package/_mjs/refactors/asyncAwaitToGen.mjs.map +1 -0
  22. package/_mjs/refactors/asyncAwaitToGenTryPromise.mjs +30 -0
  23. package/_mjs/refactors/asyncAwaitToGenTryPromise.mjs.map +1 -0
  24. package/_mjs/refactors/definition.mjs +4 -0
  25. package/_mjs/refactors/definition.mjs.map +1 -0
  26. package/_mjs/refactors/functionToArrow.mjs +43 -0
  27. package/_mjs/refactors/functionToArrow.mjs.map +1 -0
  28. package/_mjs/refactors/index.mjs +19 -0
  29. package/_mjs/refactors/index.mjs.map +1 -0
  30. package/_mjs/refactors/removeCurryArrow.mjs +24 -0
  31. package/_mjs/refactors/removeCurryArrow.mjs.map +1 -0
  32. package/_mjs/refactors/removePipe.mjs +23 -0
  33. package/_mjs/refactors/removePipe.mjs.map +1 -0
  34. package/_mjs/refactors/toggleReturnTypeAnnotation.mjs +44 -0
  35. package/_mjs/refactors/toggleReturnTypeAnnotation.mjs.map +1 -0
  36. package/_mjs/refactors/toggleTypeAnnotation.mjs +37 -0
  37. package/_mjs/refactors/toggleTypeAnnotation.mjs.map +1 -0
  38. package/_mjs/utils.mjs +146 -0
  39. package/_mjs/utils.mjs.map +1 -0
  40. package/ast.d.ts +116 -0
  41. package/ast.d.ts.map +1 -0
  42. package/ast.js +100 -0
  43. package/ast.js.map +1 -0
  44. package/config.d.ts +10 -0
  45. package/config.d.ts.map +1 -0
  46. package/config.js +31 -0
  47. package/config.js.map +1 -0
  48. package/diagnostics/definition.d.ts +15 -0
  49. package/diagnostics/definition.d.ts.map +1 -0
  50. package/diagnostics/definition.js +10 -0
  51. package/diagnostics/definition.js.map +1 -0
  52. package/diagnostics/ensureGetCallTrace.d.ts +3 -0
  53. package/diagnostics/ensureGetCallTrace.d.ts.map +1 -0
  54. package/diagnostics/ensureGetCallTrace.js +58 -0
  55. package/diagnostics/ensureGetCallTrace.js.map +1 -0
  56. package/diagnostics/index.d.ts +7 -0
  57. package/diagnostics/index.d.ts.map +1 -0
  58. package/diagnostics/index.js +17 -0
  59. package/diagnostics/index.js.map +1 -0
  60. package/diagnostics/noSyncWithConstant.d.ts +3 -0
  61. package/diagnostics/noSyncWithConstant.d.ts.map +1 -0
  62. package/diagnostics/noSyncWithConstant.js +45 -0
  63. package/diagnostics/noSyncWithConstant.js.map +1 -0
  64. package/diagnostics/removeCurryArrow.d.ts +3 -0
  65. package/diagnostics/removeCurryArrow.d.ts.map +1 -0
  66. package/diagnostics/removeCurryArrow.js +27 -0
  67. package/diagnostics/removeCurryArrow.js.map +1 -0
  68. package/index.d.ts +2 -0
  69. package/index.d.ts.map +1 -0
  70. package/index.js +116 -0
  71. package/index.js.map +1 -0
  72. package/package.json +43 -0
  73. package/refactors/addPipe.d.ts +3 -0
  74. package/refactors/addPipe.d.ts.map +1 -0
  75. package/refactors/addPipe.js +33 -0
  76. package/refactors/addPipe.js.map +1 -0
  77. package/refactors/asyncAwaitToGen.d.ts +3 -0
  78. package/refactors/asyncAwaitToGen.d.ts.map +1 -0
  79. package/refactors/asyncAwaitToGen.js +34 -0
  80. package/refactors/asyncAwaitToGen.js.map +1 -0
  81. package/refactors/asyncAwaitToGenTryPromise.d.ts +3 -0
  82. package/refactors/asyncAwaitToGenTryPromise.d.ts.map +1 -0
  83. package/refactors/asyncAwaitToGenTryPromise.js +39 -0
  84. package/refactors/asyncAwaitToGenTryPromise.js.map +1 -0
  85. package/refactors/definition.d.ts +13 -0
  86. package/refactors/definition.d.ts.map +1 -0
  87. package/refactors/definition.js +10 -0
  88. package/refactors/definition.js.map +1 -0
  89. package/refactors/functionToArrow.d.ts +3 -0
  90. package/refactors/functionToArrow.d.ts.map +1 -0
  91. package/refactors/functionToArrow.js +52 -0
  92. package/refactors/functionToArrow.js.map +1 -0
  93. package/refactors/index.d.ts +12 -0
  94. package/refactors/index.d.ts.map +1 -0
  95. package/refactors/index.js +27 -0
  96. package/refactors/index.js.map +1 -0
  97. package/refactors/removeCurryArrow.d.ts +3 -0
  98. package/refactors/removeCurryArrow.d.ts.map +1 -0
  99. package/refactors/removeCurryArrow.js +33 -0
  100. package/refactors/removeCurryArrow.js.map +1 -0
  101. package/refactors/removePipe.d.ts +3 -0
  102. package/refactors/removePipe.d.ts.map +1 -0
  103. package/refactors/removePipe.js +32 -0
  104. package/refactors/removePipe.js.map +1 -0
  105. package/refactors/toggleReturnTypeAnnotation.d.ts +3 -0
  106. package/refactors/toggleReturnTypeAnnotation.d.ts.map +1 -0
  107. package/refactors/toggleReturnTypeAnnotation.js +53 -0
  108. package/refactors/toggleReturnTypeAnnotation.js.map +1 -0
  109. package/refactors/toggleTypeAnnotation.d.ts +3 -0
  110. package/refactors/toggleTypeAnnotation.d.ts.map +1 -0
  111. package/refactors/toggleTypeAnnotation.js +46 -0
  112. package/refactors/toggleTypeAnnotation.js.map +1 -0
  113. package/utils.d.ts +15 -0
  114. package/utils.d.ts.map +1 -0
  115. package/utils.js +163 -0
  116. package/utils.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functionToArrow.mjs","mappings":"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","names":["T","AST","createRefactor","Ch","pipe","O","name","description","apply","sourceFile","textRange","gen","$","ts","service","TypeScriptApi","getNodesContainingRange","filter","isFunctionDeclaration","concat","isMethodDeclaration","node","body","isNodeInRange","head","map","changeTracker","ChangeTrackerApi","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]}
@@ -0,0 +1,19 @@
1
+ import addPipe from "@effect/language-service/refactors/addPipe";
2
+ import asyncAwaitToGen from "@effect/language-service/refactors/asyncAwaitToGen";
3
+ import asyncAwaitToGenTryPromise from "@effect/language-service/refactors/asyncAwaitToGenTryPromise";
4
+ import functionToArrow from "@effect/language-service/refactors/functionToArrow";
5
+ import removeCurryArrow from "@effect/language-service/refactors/removeCurryArrow";
6
+ import removePipe from "@effect/language-service/refactors/removePipe";
7
+ import toggleReturnTypeAnnotation from "@effect/language-service/refactors/toggleReturnTypeAnnotation";
8
+ import toggleTypeAnnotation from "@effect/language-service/refactors/toggleTypeAnnotation";
9
+ export default {
10
+ asyncAwaitToGen,
11
+ asyncAwaitToGenTryPromise,
12
+ removePipe,
13
+ addPipe,
14
+ removeCurryArrow,
15
+ functionToArrow,
16
+ toggleTypeAnnotation,
17
+ toggleReturnTypeAnnotation
18
+ };
19
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +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,gBAAgB,MAAM,qDAAqD;AAClF,OAAOC,UAAU,MAAM,+CAA+C;AACtE,OAAOC,0BAA0B,MAAM,+DAA+D;AACtG,OAAOC,oBAAoB,MAAM,yDAAyD;AAE1F,eAAe;EACbN,eAAe;EACfC,yBAAyB;EACzBG,UAAU;EACVL,OAAO;EACPI,gBAAgB;EAChBD,eAAe;EACfI,oBAAoB;EACpBD;CACD","names":["addPipe","asyncAwaitToGen","asyncAwaitToGenTryPromise","functionToArrow","removeCurryArrow","removePipe","toggleReturnTypeAnnotation","toggleTypeAnnotation"],"sourceRoot":"","sources":["../../../src/refactors/index.ts"],"sourcesContent":[null]}
@@ -0,0 +1,24 @@
1
+ import * as T from "@effect/core/io/Effect";
2
+ import * as AST from "@effect/language-service/ast";
3
+ import { createRefactor } from "@effect/language-service/refactors/definition";
4
+ import { isCurryArrow } from "@effect/language-service/utils";
5
+ import * as Ch from "@tsplus/stdlib/collections/Chunk";
6
+ import { pipe } from "@tsplus/stdlib/data/Function";
7
+ import * as O from "@tsplus/stdlib/data/Maybe";
8
+ export default /*#__PURE__*/createRefactor({
9
+ name: "effect/removeCurryArrow",
10
+ description: "Remove arrow",
11
+ apply: (sourceFile, textRange) => T.gen(function* ($) {
12
+ const ts = yield* $(T.service(AST.TypeScriptApi));
13
+ return pipe(AST.getNodesContainingRange(ts)(sourceFile, textRange), Ch.filter(isCurryArrow(ts)), Ch.head, O.map(node => ({
14
+ description: `Remove arrow ${AST.getHumanReadableName(sourceFile, node.body)}`,
15
+ apply: T.gen(function* ($) {
16
+ const changeTracker = yield* $(T.service(AST.ChangeTrackerApi));
17
+ if (!ts.isCallExpression(node.body)) return;
18
+ const newNode = node.body.expression;
19
+ changeTracker.replaceNode(sourceFile, node, newNode);
20
+ })
21
+ })));
22
+ })
23
+ });
24
+ //# sourceMappingURL=removeCurryArrow.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeCurryArrow.mjs","mappings":"AAAA,OAAO,KAAKA,CAAC,MAAM,wBAAwB;AAC3C,OAAO,KAAKC,GAAG,MAAM,8BAA8B;AACnD,SAASC,cAAc,QAAQ,+CAA+C;AAC9E,SAASC,YAAY,QAAQ,gCAAgC;AAC7D,OAAO,KAAKC,EAAE,MAAM,kCAAkC;AACtD,SAASC,IAAI,QAAQ,8BAA8B;AACnD,OAAO,KAAKC,CAAC,MAAM,2BAA2B;AAE9C,4BAAeJ,cAAc,CAAC;EAC5BK,IAAI,EAAE,yBAAyB;EAC/BC,WAAW,EAAE,cAAc;EAC3BC,KAAK,EAAE,CAACC,UAAU,EAAEC,SAAS,KAC3BX,CAAC,CAACY,GAAG,CAAC,WAAUC,CAAC;IACf,MAAMC,EAAE,GAAG,OAAOD,CAAC,CAACb,CAAC,CAACe,OAAO,CAACd,GAAG,CAACe,aAAa,CAAC,CAAC;IAEjD,OAAOX,IAAI,CACTJ,GAAG,CAACgB,uBAAuB,CAACH,EAAE,CAAC,CAACJ,UAAU,EAAEC,SAAS,CAAC,EACtDP,EAAE,CAACc,MAAM,CAACf,YAAY,CAACW,EAAE,CAAC,CAAC,EAC3BV,EAAE,CAACe,IAAI,EACPb,CAAC,CAACc,GAAG,CAAEC,IAAI,KAAM;MACfb,WAAW,EAAE,gBAAgBP,GAAG,CAACqB,oBAAoB,CAACZ,UAAU,EAAEW,IAAI,CAACE,IAAI,CAAC,EAAE;MAC9Ed,KAAK,EAAET,CAAC,CAACY,GAAG,CAAC,WAAUC,CAAC;QACtB,MAAMW,aAAa,GAAG,OAAOX,CAAC,CAACb,CAAC,CAACe,OAAO,CAACd,GAAG,CAACwB,gBAAgB,CAAC,CAAC;QAE/D,IAAI,CAACX,EAAE,CAACY,gBAAgB,CAACL,IAAI,CAACE,IAAI,CAAC,EAAE;QACrC,MAAMI,OAAO,GAAGN,IAAI,CAACE,IAAI,CAACK,UAAU;QACpCJ,aAAa,CAACK,WAAW,CAACnB,UAAU,EAAEW,IAAI,EAAEM,OAAO,CAAC;MACtD,CAAC;KACF,CAAC,CAAC,CACJ;EACH,CAAC;CACJ,CAAC","names":["T","AST","createRefactor","isCurryArrow","Ch","pipe","O","name","description","apply","sourceFile","textRange","gen","$","ts","service","TypeScriptApi","getNodesContainingRange","filter","head","map","node","getHumanReadableName","body","changeTracker","ChangeTrackerApi","isCallExpression","newNode","expression","replaceNode"],"sourceRoot":"","sources":["../../../src/refactors/removeCurryArrow.ts"],"sourcesContent":[null]}
@@ -0,0 +1,23 @@
1
+ import * as T from "@effect/core/io/Effect";
2
+ import * as AST from "@effect/language-service/ast";
3
+ import { createRefactor } from "@effect/language-service/refactors/definition";
4
+ import { isPipeCall } from "@effect/language-service/utils";
5
+ import * as Ch from "@tsplus/stdlib/collections/Chunk";
6
+ import { pipe } from "@tsplus/stdlib/data/Function";
7
+ import * as O from "@tsplus/stdlib/data/Maybe";
8
+ export default /*#__PURE__*/createRefactor({
9
+ name: "effect/removePipe",
10
+ description: "Remove pipe call",
11
+ apply: (sourceFile, textRange) => T.gen(function* ($) {
12
+ const ts = yield* $(T.service(AST.TypeScriptApi));
13
+ return pipe(AST.getNodesContainingRange(ts)(sourceFile, textRange), Ch.filter(isPipeCall(ts)), Ch.filter(node => AST.isNodeInRange(textRange)(node.expression)), Ch.filter(node => node.arguments.length > 1), Ch.head, O.map(node => ({
14
+ description: "Remove pipe call",
15
+ apply: T.gen(function* ($) {
16
+ const changeTracker = yield* $(T.service(AST.ChangeTrackerApi));
17
+ const newNode = node.arguments.slice(1).reduce((inner, exp) => ts.factory.createCallExpression(exp, undefined, [inner]), node.arguments[0]);
18
+ changeTracker.replaceNode(sourceFile, node, newNode);
19
+ })
20
+ })));
21
+ })
22
+ });
23
+ //# sourceMappingURL=removePipe.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removePipe.mjs","mappings":"AAAA,OAAO,KAAKA,CAAC,MAAM,wBAAwB;AAC3C,OAAO,KAAKC,GAAG,MAAM,8BAA8B;AACnD,SAASC,cAAc,QAAQ,+CAA+C;AAC9E,SAASC,UAAU,QAAQ,gCAAgC;AAC3D,OAAO,KAAKC,EAAE,MAAM,kCAAkC;AACtD,SAASC,IAAI,QAAQ,8BAA8B;AACnD,OAAO,KAAKC,CAAC,MAAM,2BAA2B;AAE9C,4BAAeJ,cAAc,CAAC;EAC5BK,IAAI,EAAE,mBAAmB;EACzBC,WAAW,EAAE,kBAAkB;EAC/BC,KAAK,EAAE,CAACC,UAAU,EAAEC,SAAS,KAC3BX,CAAC,CAACY,GAAG,CAAC,WAAUC,CAAC;IACf,MAAMC,EAAE,GAAG,OAAOD,CAAC,CAACb,CAAC,CAACe,OAAO,CAACd,GAAG,CAACe,aAAa,CAAC,CAAC;IAEjD,OAAOX,IAAI,CACTJ,GAAG,CAACgB,uBAAuB,CAACH,EAAE,CAAC,CAACJ,UAAU,EAAEC,SAAS,CAAC,EACtDP,EAAE,CAACc,MAAM,CAACf,UAAU,CAACW,EAAE,CAAC,CAAC,EACzBV,EAAE,CAACc,MAAM,CAAEC,IAAI,IAAKlB,GAAG,CAACmB,aAAa,CAACT,SAAS,CAAC,CAACQ,IAAI,CAACE,UAAU,CAAC,CAAC,EAClEjB,EAAE,CAACc,MAAM,CACNC,IAAI,IAAKA,IAAI,CAACG,SAAS,CAACC,MAAM,GAAG,CAAC,CACpC,EACDnB,EAAE,CAACoB,IAAI,EACPlB,CAAC,CAACmB,GAAG,CAAEN,IAAI,KAAM;MACfX,WAAW,EAAE,kBAAkB;MAC/BC,KAAK,EAAET,CAAC,CAACY,GAAG,CAAC,WAAUC,CAAC;QACtB,MAAMa,aAAa,GAAG,OAAOb,CAAC,CAACb,CAAC,CAACe,OAAO,CAACd,GAAG,CAAC0B,gBAAgB,CAAC,CAAC;QAE/D,MAAMC,OAAO,GAAGT,IAAI,CAACG,SAAS,CAACO,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,EACxEZ,IAAI,CAACG,SAAS,CAAC,CAAC,CAAE,CACnB;QAEDI,aAAa,CAACU,WAAW,CAAC1B,UAAU,EAAES,IAAI,EAAES,OAAO,CAAC;MACtD,CAAC;KACF,CAAC,CAAC,CACJ;EACH,CAAC;CACJ,CAAC","names":["T","AST","createRefactor","isPipeCall","Ch","pipe","O","name","description","apply","sourceFile","textRange","gen","$","ts","service","TypeScriptApi","getNodesContainingRange","filter","node","isNodeInRange","expression","arguments","length","head","map","changeTracker","ChangeTrackerApi","newNode","slice","reduce","inner","exp","factory","createCallExpression","undefined","replaceNode"],"sourceRoot":"","sources":["../../../src/refactors/removePipe.ts"],"sourcesContent":[null]}
@@ -0,0 +1,44 @@
1
+ import * as T from "@effect/core/io/Effect";
2
+ import * as AST from "@effect/language-service/ast";
3
+ import { createRefactor } from "@effect/language-service/refactors/definition";
4
+ import { addReturnTypeAnnotation } from "@effect/language-service/utils";
5
+ import * as Ch from "@tsplus/stdlib/collections/Chunk";
6
+ import { pipe } from "@tsplus/stdlib/data/Function";
7
+ import * as O from "@tsplus/stdlib/data/Maybe";
8
+ export default /*#__PURE__*/createRefactor({
9
+ name: "effect/toggleReturnTypeAnnotation",
10
+ description: "Toggle return type annotation",
11
+ apply: (sourceFile, textRange) => T.gen(function* ($) {
12
+ const ts = yield* $(T.service(AST.TypeScriptApi));
13
+ function isConvertibleDeclaration(node) {
14
+ switch (node.kind) {
15
+ case ts.SyntaxKind.FunctionDeclaration:
16
+ case ts.SyntaxKind.FunctionExpression:
17
+ case ts.SyntaxKind.ArrowFunction:
18
+ case ts.SyntaxKind.MethodDeclaration:
19
+ return true;
20
+ default:
21
+ return false;
22
+ }
23
+ }
24
+ return pipe(AST.getNodesContainingRange(ts)(sourceFile, textRange), Ch.filter(isConvertibleDeclaration), Ch.head, O.map(node => ({
25
+ description: "Toggle return type annotation",
26
+ apply: T.gen(function* ($) {
27
+ const program = yield* $(T.service(AST.TypeScriptProgram));
28
+ const typeChecker = program.getTypeChecker();
29
+ const changeTracker = yield* $(T.service(AST.ChangeTrackerApi));
30
+ if (node.type) {
31
+ changeTracker.delete(sourceFile, node.type);
32
+ return;
33
+ }
34
+ const callableType = typeChecker.getTypeAtLocation(node);
35
+ const returnTypes = callableType.getCallSignatures().map(s => s.getReturnType());
36
+ const returnTypeNodes = returnTypes.map(type => typeChecker.typeToTypeNode(type, node, ts.NodeBuilderFlags.NoTruncation)).filter(node => !!node);
37
+ if (returnTypeNodes.length === 0) return;
38
+ const returnTypeNode = returnTypeNodes.length === 1 ? returnTypeNodes[0] : ts.factory.createUnionTypeNode(returnTypeNodes);
39
+ addReturnTypeAnnotation(ts, changeTracker)(sourceFile, node, returnTypeNode);
40
+ })
41
+ })));
42
+ })
43
+ });
44
+ //# sourceMappingURL=toggleReturnTypeAnnotation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggleReturnTypeAnnotation.mjs","mappings":"AAAA,OAAO,KAAKA,CAAC,MAAM,wBAAwB;AAC3C,OAAO,KAAKC,GAAG,MAAM,8BAA8B;AACnD,SAASC,cAAc,QAAQ,+CAA+C;AAC9E,SAASC,uBAAuB,QAAQ,gCAAgC;AACxE,OAAO,KAAKC,EAAE,MAAM,kCAAkC;AACtD,SAASC,IAAI,QAAQ,8BAA8B;AACnD,OAAO,KAAKC,CAAC,MAAM,2BAA2B;AAS9C,4BAAeJ,cAAc,CAAC;EAC5BK,IAAI,EAAE,mCAAmC;EACzCC,WAAW,EAAE,+BAA+B;EAC5CC,KAAK,EAAE,CAACC,UAAU,EAAEC,SAAS,KAC3BX,CAAC,CAACY,GAAG,CAAC,WAAUC,CAAC;IACf,MAAMC,EAAE,GAAG,OAAOD,CAAC,CAACb,CAAC,CAACe,OAAO,CAACd,GAAG,CAACe,aAAa,CAAC,CAAC;IAEjD,SAASC,wBAAwB,CAACC,IAAa;MAC7C,QAAQA,IAAI,CAACC,IAAI;QACf,KAAKL,EAAE,CAACM,UAAU,CAACC,mBAAmB;QACtC,KAAKP,EAAE,CAACM,UAAU,CAACE,kBAAkB;QACrC,KAAKR,EAAE,CAACM,UAAU,CAACG,aAAa;QAChC,KAAKT,EAAE,CAACM,UAAU,CAACI,iBAAiB;UAClC,OAAO,IAAI;QACb;UACE,OAAO,KAAK;MAAA;IAElB;IAEA,OAAOnB,IAAI,CACTJ,GAAG,CAACwB,uBAAuB,CAACX,EAAE,CAAC,CAACJ,UAAU,EAAEC,SAAS,CAAC,EACtDP,EAAE,CAACsB,MAAM,CAACT,wBAAwB,CAAC,EACnCb,EAAE,CAACuB,IAAI,EACPrB,CAAC,CAACsB,GAAG,CACFV,IAAI,KAAM;MACTV,WAAW,EAAE,+BAA+B;MAC5CC,KAAK,EAAET,CAAC,CAACY,GAAG,CAAC,WAAUC,CAAC;QACtB,MAAMgB,OAAO,GAAG,OAAOhB,CAAC,CAACb,CAAC,CAACe,OAAO,CAACd,GAAG,CAAC6B,iBAAiB,CAAC,CAAC;QAC1D,MAAMC,WAAW,GAAGF,OAAO,CAACG,cAAc,EAAE;QAC5C,MAAMC,aAAa,GAAG,OAAOpB,CAAC,CAACb,CAAC,CAACe,OAAO,CAACd,GAAG,CAACiC,gBAAgB,CAAC,CAAC;QAE/D,IAAIhB,IAAI,CAACiB,IAAI,EAAE;UACbF,aAAa,CAACG,MAAM,CAAC1B,UAAU,EAAEQ,IAAI,CAACiB,IAAI,CAAC;UAC3C;;QAGF,MAAME,YAAY,GAAGN,WAAW,CAACO,iBAAiB,CAACpB,IAAI,CAAC;QACxD,MAAMqB,WAAW,GAAGF,YAAY,CAACG,iBAAiB,EAAE,CAACZ,GAAG,CAAEa,CAAC,IAAKA,CAAC,CAACC,aAAa,EAAE,CAAC;QAClF,MAAMC,eAAe,GAAGJ,WAAW,CAACX,GAAG,CAAEO,IAAI,IAC3CJ,WAAW,CAACa,cAAc,CAACT,IAAI,EAAEjB,IAAI,EAAEJ,EAAE,CAAC+B,gBAAgB,CAACC,YAAY,CAAC,CACzE,CAACpB,MAAM,CAAER,IAAI,IAA0B,CAAC,CAACA,IAAI,CAAC;QAC/C,IAAIyB,eAAe,CAACI,MAAM,KAAK,CAAC,EAAE;QAClC,MAAMC,cAAc,GAAGL,eAAe,CAACI,MAAM,KAAK,CAAC,GACjDJ,eAAe,CAAC,CAAC,CAAE,GACnB7B,EAAE,CAACmC,OAAO,CAACC,mBAAmB,CAACP,eAAe,CAAC;QAEjDxC,uBAAuB,CAACW,EAAE,EAAEmB,aAAa,CAAC,CAACvB,UAAU,EAAEQ,IAAI,EAAE8B,cAAc,CAAC;MAC9E,CAAC;KACF,CAAC,CACH,CACF;EACH,CAAC;CACJ,CAAC","names":["T","AST","createRefactor","addReturnTypeAnnotation","Ch","pipe","O","name","description","apply","sourceFile","textRange","gen","$","ts","service","TypeScriptApi","isConvertibleDeclaration","node","kind","SyntaxKind","FunctionDeclaration","FunctionExpression","ArrowFunction","MethodDeclaration","getNodesContainingRange","filter","head","map","program","TypeScriptProgram","typeChecker","getTypeChecker","changeTracker","ChangeTrackerApi","type","delete","callableType","getTypeAtLocation","returnTypes","getCallSignatures","s","getReturnType","returnTypeNodes","typeToTypeNode","NodeBuilderFlags","NoTruncation","length","returnTypeNode","factory","createUnionTypeNode"],"sourceRoot":"","sources":["../../../src/refactors/toggleReturnTypeAnnotation.ts"],"sourcesContent":[null]}
@@ -0,0 +1,37 @@
1
+ import * as T from "@effect/core/io/Effect";
2
+ import * as AST from "@effect/language-service/ast";
3
+ import { createRefactor } from "@effect/language-service/refactors/definition";
4
+ import * as Ch from "@tsplus/stdlib/collections/Chunk";
5
+ import { pipe } from "@tsplus/stdlib/data/Function";
6
+ import * as O from "@tsplus/stdlib/data/Maybe";
7
+ export default /*#__PURE__*/createRefactor({
8
+ name: "effect/toggleTypeAnnotation",
9
+ description: "Toggle type annotation",
10
+ apply: (sourceFile, textRange) => T.gen(function* ($) {
11
+ const ts = yield* $(T.service(AST.TypeScriptApi));
12
+ return pipe(AST.getNodesContainingRange(ts)(sourceFile, textRange), Ch.filter(ts.isVariableDeclaration), Ch.filter(node => AST.isNodeInRange(textRange)(node.name)), Ch.filter(node => !!node.initializer), Ch.head, O.map(node => ({
13
+ description: "Toggle type annotation",
14
+ apply: T.gen(function* ($) {
15
+ const program = yield* $(T.service(AST.TypeScriptProgram));
16
+ const typeChecker = program.getTypeChecker();
17
+ const changeTracker = yield* $(T.service(AST.ChangeTrackerApi));
18
+ if (node.type) {
19
+ changeTracker.deleteRange(sourceFile, {
20
+ pos: node.type.pos - 2,
21
+ end: node.type.end
22
+ });
23
+ return;
24
+ }
25
+ const initializer = node.initializer;
26
+ const initializerType = typeChecker.getTypeAtLocation(initializer);
27
+ const initializerTypeNode = typeChecker.typeToTypeNode(initializerType, node, ts.NodeBuilderFlags.NoTruncation);
28
+ if (initializerTypeNode) {
29
+ changeTracker.insertNodeAt(sourceFile, node.name.end, initializerTypeNode, {
30
+ prefix: ": "
31
+ });
32
+ }
33
+ })
34
+ })));
35
+ })
36
+ });
37
+ //# sourceMappingURL=toggleTypeAnnotation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggleTypeAnnotation.mjs","mappings":"AAAA,OAAO,KAAKA,CAAC,MAAM,wBAAwB;AAC3C,OAAO,KAAKC,GAAG,MAAM,8BAA8B;AACnD,SAASC,cAAc,QAAQ,+CAA+C;AAC9E,OAAO,KAAKC,EAAE,MAAM,kCAAkC;AACtD,SAASC,IAAI,QAAQ,8BAA8B;AACnD,OAAO,KAAKC,CAAC,MAAM,2BAA2B;AAE9C,4BAAeH,cAAc,CAAC;EAC5BI,IAAI,EAAE,6BAA6B;EACnCC,WAAW,EAAE,wBAAwB;EACrCC,KAAK,EAAE,CAACC,UAAU,EAAEC,SAAS,KAC3BV,CAAC,CAACW,GAAG,CAAC,WAAUC,CAAC;IACf,MAAMC,EAAE,GAAG,OAAOD,CAAC,CAACZ,CAAC,CAACc,OAAO,CAACb,GAAG,CAACc,aAAa,CAAC,CAAC;IAEjD,OAAOX,IAAI,CACTH,GAAG,CAACe,uBAAuB,CAACH,EAAE,CAAC,CAACJ,UAAU,EAAEC,SAAS,CAAC,EACtDP,EAAE,CAACc,MAAM,CAACJ,EAAE,CAACK,qBAAqB,CAAC,EACnCf,EAAE,CAACc,MAAM,CAAEE,IAAI,IAAKlB,GAAG,CAACmB,aAAa,CAACV,SAAS,CAAC,CAACS,IAAI,CAACb,IAAI,CAAC,CAAC,EAC5DH,EAAE,CAACc,MAAM,CAAEE,IAAI,IAAK,CAAC,CAACA,IAAI,CAACE,WAAW,CAAC,EACvClB,EAAE,CAACmB,IAAI,EACPjB,CAAC,CAACkB,GAAG,CACFJ,IAAI,KAAM;MACTZ,WAAW,EAAE,wBAAwB;MACrCC,KAAK,EAAER,CAAC,CAACW,GAAG,CAAC,WAAUC,CAAC;QACtB,MAAMY,OAAO,GAAG,OAAOZ,CAAC,CAACZ,CAAC,CAACc,OAAO,CAACb,GAAG,CAACwB,iBAAiB,CAAC,CAAC;QAC1D,MAAMC,WAAW,GAAGF,OAAO,CAACG,cAAc,EAAE;QAC5C,MAAMC,aAAa,GAAG,OAAOhB,CAAC,CAACZ,CAAC,CAACc,OAAO,CAACb,GAAG,CAAC4B,gBAAgB,CAAC,CAAC;QAE/D,IAAIV,IAAI,CAACW,IAAI,EAAE;UACbF,aAAa,CAACG,WAAW,CAACtB,UAAU,EAAE;YAAEuB,GAAG,EAAEb,IAAI,CAACW,IAAI,CAACE,GAAG,GAAG,CAAC;YAAEC,GAAG,EAAEd,IAAI,CAACW,IAAI,CAACG;UAAG,CAAE,CAAC;UACrF;;QAGF,MAAMZ,WAAW,GAAGF,IAAI,CAACE,WAAY;QACrC,MAAMa,eAAe,GAAGR,WAAW,CAACS,iBAAiB,CAACd,WAAW,CAAC;QAClE,MAAMe,mBAAmB,GAAGV,WAAW,CAACW,cAAc,CACpDH,eAAe,EACff,IAAI,EACJN,EAAE,CAACyB,gBAAgB,CAACC,YAAY,CACjC;QACD,IAAIH,mBAAmB,EAAE;UACvBR,aAAa,CAACY,YAAY,CAAC/B,UAAU,EAAEU,IAAI,CAACb,IAAI,CAAC2B,GAAG,EAAEG,mBAAmB,EAAE;YAAEK,MAAM,EAAE;UAAI,CAAE,CAAC;;MAEhG,CAAC;KACF,CAAC,CACH,CACF;EACH,CAAC;CACJ,CAAC","names":["T","AST","createRefactor","Ch","pipe","O","name","description","apply","sourceFile","textRange","gen","$","ts","service","TypeScriptApi","getNodesContainingRange","filter","isVariableDeclaration","node","isNodeInRange","initializer","head","map","program","TypeScriptProgram","typeChecker","getTypeChecker","changeTracker","ChangeTrackerApi","type","deleteRange","pos","end","initializerType","getTypeAtLocation","initializerTypeNode","typeToTypeNode","NodeBuilderFlags","NoTruncation","insertNodeAt","prefix"],"sourceRoot":"","sources":["../../../src/refactors/toggleTypeAnnotation.ts"],"sourcesContent":[null]}
package/_mjs/utils.mjs ADDED
@@ -0,0 +1,146 @@
1
+ import * as T from "@effect/core/io/Effect";
2
+ import * as AST from "@effect/language-service/ast";
3
+ import * as Ch from "@tsplus/stdlib/collections/Chunk";
4
+ import { pipe } from "@tsplus/stdlib/data/Function";
5
+ import * as O from "@tsplus/stdlib/data/Maybe";
6
+ export function isPipeCall(ts) {
7
+ return node => {
8
+ if (!ts.isCallExpression(node)) return false;
9
+ const expression = node.expression;
10
+ if (!ts.isIdentifier(expression)) return false;
11
+ if (expression.getText(node.getSourceFile()) !== "pipe") return false;
12
+ return true;
13
+ };
14
+ }
15
+ export function asPipeableCallExpression(ts) {
16
+ return node => {
17
+ // ensure the node is a call expression
18
+ if (!ts.isCallExpression(node)) return O.none;
19
+ // with just 1 arg
20
+ if (node.arguments.length !== 1) return O.none;
21
+ const arg = node.arguments[0];
22
+ // ideally T.map(n => n * 2) could be piped to pipe(n => n * 2, T.map)
23
+ // but does not make any sense.
24
+ if (ts.isArrowFunction(arg)) return O.none;
25
+ // same goes for identifiers, string literal or numbers
26
+ if (ts.isStringLiteral(arg) || ts.isNumericLiteral(arg) || ts.isIdentifier(arg)) return O.none;
27
+ return O.some([node.expression, arg]);
28
+ };
29
+ }
30
+ export function asPipeArguments(ts) {
31
+ return initialNode => {
32
+ let result = Ch.empty();
33
+ let currentNode = O.some(initialNode);
34
+ while (O.isSome(currentNode)) {
35
+ const node = currentNode.value;
36
+ const maybePipeable = asPipeableCallExpression(ts)(node);
37
+ if (O.isNone(maybePipeable)) {
38
+ result = pipe(result, Ch.append(node));
39
+ break;
40
+ }
41
+ const [exp, arg] = maybePipeable.value;
42
+ result = pipe(result, Ch.append(exp));
43
+ currentNode = O.some(arg);
44
+ }
45
+ return Ch.reverse(result);
46
+ };
47
+ }
48
+ export function isPipeableCallExpression(ts) {
49
+ return node => O.isSome(asPipeableCallExpression(ts)(node));
50
+ }
51
+ export function isCombinatorCall(ts) {
52
+ return (moduleIdentifier, moduleMethodName) => node => {
53
+ if (!ts.isCallExpression(node)) return false;
54
+ const left = node.expression;
55
+ if (!ts.isPropertyAccessExpression(left)) return false;
56
+ const leftModule = left.expression;
57
+ const leftName = left.name;
58
+ if (!ts.isIdentifier(leftModule)) return false;
59
+ if (leftModule.text !== moduleIdentifier) return false;
60
+ if (!ts.isIdentifier(leftName)) return false;
61
+ if (leftName.text !== moduleMethodName) return false;
62
+ return true;
63
+ };
64
+ }
65
+ export function findModuleImportIdentifierName(ts) {
66
+ return (sourceFile, moduleName) => {
67
+ return O.fromNullable(ts.forEachChild(sourceFile, node => {
68
+ if (!ts.isImportDeclaration(node)) return;
69
+ const moduleSpecifier = node.moduleSpecifier;
70
+ if (!ts.isStringLiteral(moduleSpecifier)) return;
71
+ if (moduleSpecifier.text !== moduleName) return;
72
+ const importClause = node.importClause;
73
+ if (!importClause) return;
74
+ const namedBindings = importClause.namedBindings;
75
+ if (!namedBindings) return;
76
+ if (!ts.isNamespaceImport(namedBindings)) return;
77
+ return namedBindings.name.text;
78
+ }));
79
+ };
80
+ }
81
+ export function isCurryArrow(ts) {
82
+ return arrow => {
83
+ if (!ts.isArrowFunction(arrow)) return false;
84
+ if (arrow.parameters.length !== 1) return false;
85
+ const parameter = arrow.parameters[0];
86
+ const parameterName = parameter.name;
87
+ if (!ts.isIdentifier(parameterName)) return false;
88
+ const body = arrow.body;
89
+ if (!ts.isCallExpression(body)) return false;
90
+ const args = body.arguments;
91
+ if (args.length !== 1) return false;
92
+ const identifier = args[0];
93
+ if (!ts.isIdentifier(identifier)) return false;
94
+ return identifier.text === parameterName.text;
95
+ };
96
+ }
97
+ export function isLiteralConstantValue(ts) {
98
+ return node => {
99
+ return ts.isIdentifier(node) || ts.isStringLiteral(node) || ts.isNumericLiteral(node) || node.kind === ts.SyntaxKind.TrueKeyword || node.kind === ts.SyntaxKind.FalseKeyword || node.kind === ts.SyntaxKind.NullKeyword;
100
+ };
101
+ }
102
+ export function transformAsyncAwaitToEffectGen(node, effectName, onAwait) {
103
+ return T.gen(function* ($) {
104
+ const ts = yield* $(T.service(AST.TypeScriptApi));
105
+ function visitor(_) {
106
+ if (ts.isAwaitExpression(_)) {
107
+ const expression = ts.visitEachChild(_.expression, visitor, ts.nullTransformationContext);
108
+ return ts.factory.createYieldExpression(ts.factory.createToken(ts.SyntaxKind.AsteriskToken), ts.factory.createCallExpression(ts.factory.createIdentifier("$"), undefined, [onAwait(expression)]));
109
+ }
110
+ return ts.visitEachChild(_, visitor, ts.nullTransformationContext);
111
+ }
112
+ const generatorBody = visitor(node.body);
113
+ const generator = ts.factory.createFunctionExpression([], ts.factory.createToken(ts.SyntaxKind.AsteriskToken), undefined, [], [ts.factory.createParameterDeclaration(undefined, undefined, "$")], undefined, generatorBody // NOTE(mattia): intended, to use same routine for both ConciseBody and Body
114
+ );
115
+
116
+ const effectGenCallExp = ts.factory.createCallExpression(ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier(effectName), "gen"), undefined, [generator]);
117
+ let currentFlags = ts.getCombinedModifierFlags(node);
118
+ currentFlags &= ~ts.ModifierFlags.Async;
119
+ const newModifiers = ts.factory.createModifiersFromModifierFlags(currentFlags);
120
+ if (ts.isArrowFunction(node)) {
121
+ return ts.factory.createArrowFunction(newModifiers, node.typeParameters, node.parameters, undefined, node.equalsGreaterThanToken, effectGenCallExp);
122
+ }
123
+ const newBody = ts.factory.createBlock([ts.factory.createReturnStatement(effectGenCallExp)]);
124
+ if (ts.isFunctionDeclaration(node)) {
125
+ return ts.factory.createFunctionDeclaration(newModifiers, node.asteriskToken, node.name, node.typeParameters, node.parameters, undefined, newBody);
126
+ }
127
+ return ts.factory.createFunctionExpression(newModifiers, node.asteriskToken, node.name, node.typeParameters, node.parameters, undefined, newBody);
128
+ });
129
+ }
130
+ export function addReturnTypeAnnotation(ts, changes) {
131
+ return (sourceFile, declaration, typeNode) => {
132
+ const closeParen = ts.findChildOfKind(declaration, ts.SyntaxKind.CloseParenToken, sourceFile);
133
+ const needParens = ts.isArrowFunction(declaration) && closeParen === undefined;
134
+ const endNode = needParens ? declaration.parameters[0] : closeParen;
135
+ if (endNode) {
136
+ if (needParens) {
137
+ changes.insertNodeBefore(sourceFile, endNode, ts.factory.createToken(ts.SyntaxKind.OpenParenToken));
138
+ changes.insertNodeAfter(sourceFile, endNode, ts.factory.createToken(ts.SyntaxKind.CloseParenToken));
139
+ }
140
+ changes.insertNodeAt(sourceFile, endNode.end, typeNode, {
141
+ prefix: ": "
142
+ });
143
+ }
144
+ };
145
+ }
146
+ //# sourceMappingURL=utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.mjs","mappings":"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","names":["T","AST","Ch","pipe","O","isPipeCall","ts","node","isCallExpression","expression","isIdentifier","getText","getSourceFile","asPipeableCallExpression","none","arguments","length","arg","isArrowFunction","isStringLiteral","isNumericLiteral","some","asPipeArguments","initialNode","result","empty","currentNode","isSome","value","maybePipeable","isNone","append","exp","reverse","isPipeableCallExpression","isCombinatorCall","moduleIdentifier","moduleMethodName","left","isPropertyAccessExpression","leftModule","leftName","name","text","findModuleImportIdentifierName","sourceFile","moduleName","fromNullable","forEachChild","isImportDeclaration","moduleSpecifier","importClause","namedBindings","isNamespaceImport","isCurryArrow","arrow","parameters","parameter","parameterName","body","args","identifier","isLiteralConstantValue","kind","SyntaxKind","TrueKeyword","FalseKeyword","NullKeyword","transformAsyncAwaitToEffectGen","effectName","onAwait","gen","$","service","TypeScriptApi","visitor","_","isAwaitExpression","visitEachChild","nullTransformationContext","factory","createYieldExpression","createToken","AsteriskToken","createCallExpression","createIdentifier","undefined","generatorBody","generator","createFunctionExpression","createParameterDeclaration","effectGenCallExp","createPropertyAccessExpression","currentFlags","getCombinedModifierFlags","ModifierFlags","Async","newModifiers","createModifiersFromModifierFlags","createArrowFunction","typeParameters","equalsGreaterThanToken","newBody","createBlock","createReturnStatement","isFunctionDeclaration","createFunctionDeclaration","asteriskToken","addReturnTypeAnnotation","changes","declaration","typeNode","closeParen","findChildOfKind","CloseParenToken","needParens","endNode","insertNodeBefore","OpenParenToken","insertNodeAfter","insertNodeAt","end","prefix"],"sourceRoot":"","sources":["../../src/utils.ts"],"sourcesContent":[null]}
package/ast.d.ts ADDED
@@ -0,0 +1,116 @@
1
+ import * as T from "@effect/core/io/Effect";
2
+ import * as Ch from "@tsplus/stdlib/collections/Chunk";
3
+ import * as O from "@tsplus/stdlib/data/Maybe";
4
+ import { Tag } from "@tsplus/stdlib/service/Tag";
5
+ import type ts from "typescript/lib/tsserverlibrary";
6
+ declare module "typescript/lib/tsserverlibrary" {
7
+ const nullTransformationContext: ts.TransformationContext;
8
+ namespace formatting {
9
+ interface FormattingHost {
10
+ getNewLine?(): string;
11
+ }
12
+ interface FormatContext {
13
+ readonly options: ts.FormatCodeSettings;
14
+ readonly getRules: unknown;
15
+ }
16
+ function getFormatContext(options: ts.FormatCodeSettings, host: FormattingHost): FormatContext;
17
+ }
18
+ type TextChangesContext = any;
19
+ type ChangeNodeOptions = any;
20
+ namespace textChanges {
21
+ enum LeadingTriviaOption {
22
+ /** Exclude all leading trivia (use getStart()) */
23
+ Exclude = 0,
24
+ /** Include leading trivia and,
25
+ * if there are no line breaks between the node and the previous token,
26
+ * include all trivia between the node and the previous token
27
+ */
28
+ IncludeAll = 1,
29
+ /**
30
+ * Include attached JSDoc comments
31
+ */
32
+ JSDoc = 2,
33
+ /**
34
+ * Only delete trivia on the same line as getStart().
35
+ * Used to avoid deleting leading comments
36
+ */
37
+ StartLine = 3
38
+ }
39
+ enum TrailingTriviaOption {
40
+ /** Exclude all trailing trivia (use getEnd()) */
41
+ Exclude = 0,
42
+ /** Doesn't include whitespace, but does strip comments */
43
+ ExcludeWhitespace = 1,
44
+ /** Include trailing trivia */
45
+ Include = 2
46
+ }
47
+ interface ConfigurableStart {
48
+ leadingTriviaOption?: LeadingTriviaOption;
49
+ }
50
+ interface ConfigurableEnd {
51
+ trailingTriviaOption?: TrailingTriviaOption;
52
+ }
53
+ interface InsertNodeOptions {
54
+ /**
55
+ * Text to be inserted before the new node
56
+ */
57
+ prefix?: string;
58
+ /**
59
+ * Text to be inserted after the new node
60
+ */
61
+ suffix?: string;
62
+ /**
63
+ * Text of inserted node will be formatted with this indentation, otherwise indentation will be inferred from the old node
64
+ */
65
+ indentation?: number;
66
+ /**
67
+ * Text of inserted node will be formatted with this delta, otherwise delta will be inferred from the new node kind
68
+ */
69
+ delta?: number;
70
+ }
71
+ interface ConfigurableStartEnd extends ConfigurableStart, ConfigurableEnd {
72
+ }
73
+ class ChangeTracker {
74
+ static with(context: ts.TextChangesContext, cb: (tracker: ChangeTracker) => void): Array<ts.FileTextChanges>;
75
+ delete(sourceFile: ts.SourceFile, node: ts.Node | ts.NodeArray<ts.TypeParameterDeclaration>): void;
76
+ deleteRange(sourceFile: ts.SourceFile, range: ts.TextRange): void;
77
+ replaceNode(sourceFile: ts.SourceFile, oldNode: ts.Node, newNode: ts.Node, options?: ts.ChangeNodeOptions): void;
78
+ insertNodeAt(sourceFile: ts.SourceFile, pos: number, newNode: ts.Node, options?: ts.textChanges.InsertNodeOptions): void;
79
+ insertNodeBefore(sourceFile: ts.SourceFile, before: ts.Node, newNode: ts.Node, blankLineBetween?: boolean, options?: ConfigurableStartEnd): void;
80
+ insertNodeAfter(sourceFile: ts.SourceFile, after: ts.Node, newNode: ts.Node): void;
81
+ }
82
+ function applyChanges(text: string, changes: ReadonlyArray<ts.TextChange>): string;
83
+ }
84
+ function findPrecedingToken(position: number, sourceFile: ts.SourceFileLike, startNode: ts.Node, excludeJsdoc?: boolean): ts.Node | undefined;
85
+ function findPrecedingToken(position: number, sourceFile: ts.SourceFile, startNode?: ts.Node, excludeJsdoc?: boolean): ts.Node | undefined;
86
+ function findChildOfKind<T extends ts.Node>(n: ts.Node, kind: T["kind"], sourceFile: ts.SourceFileLike): T | undefined;
87
+ function isMemberName(node: ts.Node): node is ts.MemberName;
88
+ function isKeyword(token: ts.SyntaxKind): token is ts.KeywordSyntaxKind;
89
+ }
90
+ export declare type TypeScriptApi = typeof import("typescript/lib/tsserverlibrary");
91
+ export declare const TypeScriptApi: Tag<typeof ts>;
92
+ export declare const TypeScriptProgram: Tag<ts.Program>;
93
+ export declare const ChangeTrackerApi: Tag<ts.textChanges.ChangeTracker>;
94
+ export declare class NoSuchSourceFile {
95
+ readonly fileName: string;
96
+ readonly _tag = "NoSuchSourceFile";
97
+ constructor(fileName: string);
98
+ }
99
+ export declare function getSourceFile(fileName: string): T.Effect<ts.Program, NoSuchSourceFile, ts.SourceFile>;
100
+ export declare function hasModifier(node: ts.Declaration, kind: ts.ModifierFlags): T.Effect<typeof ts, never, boolean>;
101
+ /**
102
+ * Gets the closest node that contains given TextRange
103
+ */
104
+ export declare function getNodesContainingRange(ts: TypeScriptApi): (sourceFile: ts.SourceFile, textRange: ts.TextRange) => Ch.Chunk<ts.Node>;
105
+ /**
106
+ * Ensures value is a text range
107
+ */
108
+ export declare function toTextRange(positionOrRange: number | ts.TextRange): ts.TextRange;
109
+ export declare function getHumanReadableName(sourceFile: ts.SourceFile, node: ts.Node): string;
110
+ export declare function collectAll(ts: TypeScriptApi): <A extends ts.Node>(rootNode: ts.Node, test: (node: ts.Node) => node is A) => Ch.Chunk<A>;
111
+ export declare function getRelevantTokens(ts: TypeScriptApi): (position: number, sourceFile: ts.SourceFile) => {
112
+ contextToken: O.Maybe<ts.Node>;
113
+ previousToken: O.Maybe<ts.Node>;
114
+ };
115
+ export declare function isNodeInRange(textRange: ts.TextRange): (node: ts.Node) => boolean;
116
+ //# sourceMappingURL=ast.d.ts.map
package/ast.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"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"}
package/ast.js ADDED
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TypeScriptProgram = exports.TypeScriptApi = exports.NoSuchSourceFile = exports.ChangeTrackerApi = void 0;
7
+ exports.collectAll = collectAll;
8
+ exports.getHumanReadableName = getHumanReadableName;
9
+ exports.getNodesContainingRange = getNodesContainingRange;
10
+ exports.getRelevantTokens = getRelevantTokens;
11
+ exports.getSourceFile = getSourceFile;
12
+ exports.hasModifier = hasModifier;
13
+ exports.isNodeInRange = isNodeInRange;
14
+ exports.toTextRange = toTextRange;
15
+ var T = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/core/io/Effect"));
16
+ var Ch = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@tsplus/stdlib/collections/Chunk"));
17
+ var _Function = /*#__PURE__*/require("@tsplus/stdlib/data/Function");
18
+ var O = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@tsplus/stdlib/data/Maybe"));
19
+ var _Tag = /*#__PURE__*/require("@tsplus/stdlib/service/Tag");
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
+ const TypeScriptApi = /*#__PURE__*/(0, _Tag.Tag)();
23
+ exports.TypeScriptApi = TypeScriptApi;
24
+ const TypeScriptProgram = /*#__PURE__*/(0, _Tag.Tag)();
25
+ exports.TypeScriptProgram = TypeScriptProgram;
26
+ const ChangeTrackerApi = /*#__PURE__*/(0, _Tag.Tag)();
27
+ exports.ChangeTrackerApi = ChangeTrackerApi;
28
+ class NoSuchSourceFile {
29
+ constructor(fileName) {
30
+ this.fileName = fileName;
31
+ this._tag = "NoSuchSourceFile";
32
+ }
33
+ }
34
+ exports.NoSuchSourceFile = NoSuchSourceFile;
35
+ function getSourceFile(fileName) {
36
+ return (0, _Function.pipe)(T.service(TypeScriptProgram), T.map(program => program.getSourceFile(fileName)), T.filterOrFail(sourceFile => !!sourceFile, () => new NoSuchSourceFile(fileName)));
37
+ }
38
+ function hasModifier(node, kind) {
39
+ return T.serviceWith(TypeScriptApi, ts => !!(ts.getCombinedModifierFlags(node) & kind));
40
+ }
41
+ /**
42
+ * Gets the closest node that contains given TextRange
43
+ */
44
+ function getNodesContainingRange(ts) {
45
+ return (sourceFile, textRange) => {
46
+ const precedingToken = ts.findPrecedingToken(textRange.pos, sourceFile);
47
+ if (!precedingToken) return Ch.empty();
48
+ let result = Ch.empty();
49
+ let parent = precedingToken;
50
+ while (parent) {
51
+ result = (0, _Function.pipe)(result, Ch.append(parent));
52
+ parent = parent.parent;
53
+ }
54
+ return result;
55
+ };
56
+ }
57
+ /**
58
+ * Ensures value is a text range
59
+ */
60
+ function toTextRange(positionOrRange) {
61
+ return typeof positionOrRange === "number" ? {
62
+ end: positionOrRange,
63
+ pos: positionOrRange
64
+ } : positionOrRange;
65
+ }
66
+ function getHumanReadableName(sourceFile, node) {
67
+ const text = node.getText(sourceFile);
68
+ return text.length > 10 ? text.substring(0, 10) + "..." : text;
69
+ }
70
+ function collectAll(ts) {
71
+ return (rootNode, test) => {
72
+ let result = Ch.empty();
73
+ function visitor(node) {
74
+ if (test(node)) result = (0, _Function.pipe)(result, Ch.append(node));
75
+ ts.forEachChild(node, visitor);
76
+ }
77
+ visitor(rootNode);
78
+ return result;
79
+ };
80
+ }
81
+ function getRelevantTokens(ts) {
82
+ return (position, sourceFile) => {
83
+ const previousToken = ts.findPrecedingToken(position, sourceFile);
84
+ if (previousToken && position <= previousToken.end && (ts.isMemberName(previousToken) || ts.isKeyword(previousToken.kind))) {
85
+ const contextToken = ts.findPrecedingToken(previousToken.getFullStart(), sourceFile, /*startNode*/undefined); // TODO: GH#18217
86
+ return {
87
+ contextToken: O.some(contextToken),
88
+ previousToken: O.some(previousToken)
89
+ };
90
+ }
91
+ return {
92
+ contextToken: O.fromNullable(previousToken),
93
+ previousToken: O.fromNullable(previousToken)
94
+ };
95
+ };
96
+ }
97
+ function isNodeInRange(textRange) {
98
+ return node => node.pos <= textRange.pos && node.end >= textRange.end;
99
+ }
100
+ //# sourceMappingURL=ast.js.map
package/ast.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.js","mappings":"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","names":["TypeScriptApi","TypeScriptProgram","ChangeTrackerApi","NoSuchSourceFile","constructor","fileName","getSourceFile","T","service","map","program","filterOrFail","sourceFile","hasModifier","node","kind","serviceWith","ts","getCombinedModifierFlags","getNodesContainingRange","textRange","precedingToken","findPrecedingToken","pos","Ch","empty","result","parent","append","toTextRange","positionOrRange","end","getHumanReadableName","text","getText","length","substring","collectAll","rootNode","test","visitor","forEachChild","getRelevantTokens","position","previousToken","isMemberName","isKeyword","contextToken","getFullStart","undefined","O","some","fromNullable","isNodeInRange"],"sourceRoot":"","sources":["../../src/ast.ts"],"sourcesContent":[null]}
package/config.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import type { DiagnosticDefinitionMessageCategory } from "@effect/language-service/diagnostics/definition";
2
+ export interface LanguageServicePluginConfig {
3
+ diagnostic: Record<number, DiagnosticDefinitionMessageCategory>;
4
+ }
5
+ declare type Decoder<A> = (value: unknown) => A;
6
+ export declare const parseLanguageServicePluginConfig: Decoder<{
7
+ diagnostics: Record<string, "none" | "suggestion" | "warning" | "error">;
8
+ }>;
9
+ export {};
10
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,iDAAiD,CAAA;AAE1G,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAA;CAChE;AAED,aAAK,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAA;AAsBvC,eAAO,MAAM,gCAAgC;;EAE3C,CAAA"}