@effect/language-service 0.0.12 → 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.
Files changed (77) hide show
  1. package/_mjs/index.mjs +0 -37
  2. package/_mjs/index.mjs.map +1 -1
  3. package/_mjs/refactors/index.mjs +1 -5
  4. package/_mjs/refactors/index.mjs.map +1 -1
  5. package/_mjs/utils/AST.mjs +0 -35
  6. package/_mjs/utils/AST.mjs.map +1 -1
  7. package/index.js +3 -40
  8. package/index.js.map +1 -1
  9. package/package.json +1 -1
  10. package/refactors/index.d.ts +0 -2
  11. package/refactors/index.d.ts.map +1 -1
  12. package/refactors/index.js +1 -5
  13. package/refactors/index.js.map +1 -1
  14. package/utils/AST.d.ts +0 -3
  15. package/utils/AST.d.ts.map +1 -1
  16. package/utils/AST.js +0 -38
  17. package/utils/AST.js.map +1 -1
  18. package/_mjs/config.mjs +0 -24
  19. package/_mjs/config.mjs.map +0 -1
  20. package/_mjs/diagnostics/definition.mjs +0 -4
  21. package/_mjs/diagnostics/definition.mjs.map +0 -1
  22. package/_mjs/diagnostics/ensureGetCallTrace.mjs +0 -48
  23. package/_mjs/diagnostics/ensureGetCallTrace.mjs.map +0 -1
  24. package/_mjs/diagnostics/index.mjs +0 -7
  25. package/_mjs/diagnostics/index.mjs.map +0 -1
  26. package/_mjs/diagnostics/noSyncWithConstant.mjs +0 -37
  27. package/_mjs/diagnostics/noSyncWithConstant.mjs.map +0 -1
  28. package/_mjs/eslint-rules/index.mjs +0 -8
  29. package/_mjs/eslint-rules/index.mjs.map +0 -1
  30. package/_mjs/eslint-rules/no-curry-arrow.mjs +0 -33
  31. package/_mjs/eslint-rules/no-curry-arrow.mjs.map +0 -1
  32. package/_mjs/eslint-rules/utils.mjs +0 -8
  33. package/_mjs/eslint-rules/utils.mjs.map +0 -1
  34. package/_mjs/refactors/noSyncWithConstant.mjs +0 -30
  35. package/_mjs/refactors/noSyncWithConstant.mjs.map +0 -1
  36. package/_mjs/refactors/removeCurryArrow.mjs +0 -18
  37. package/_mjs/refactors/removeCurryArrow.mjs.map +0 -1
  38. package/config.d.ts +0 -10
  39. package/config.d.ts.map +0 -1
  40. package/config.js +0 -31
  41. package/config.js.map +0 -1
  42. package/diagnostics/definition.d.ts +0 -15
  43. package/diagnostics/definition.d.ts.map +0 -1
  44. package/diagnostics/definition.js +0 -10
  45. package/diagnostics/definition.js.map +0 -1
  46. package/diagnostics/ensureGetCallTrace.d.ts +0 -3
  47. package/diagnostics/ensureGetCallTrace.d.ts.map +0 -1
  48. package/diagnostics/ensureGetCallTrace.js +0 -57
  49. package/diagnostics/ensureGetCallTrace.js.map +0 -1
  50. package/diagnostics/index.d.ts +0 -6
  51. package/diagnostics/index.d.ts.map +0 -1
  52. package/diagnostics/index.js +0 -15
  53. package/diagnostics/index.js.map +0 -1
  54. package/diagnostics/noSyncWithConstant.d.ts +0 -10
  55. package/diagnostics/noSyncWithConstant.d.ts.map +0 -1
  56. package/diagnostics/noSyncWithConstant.js +0 -49
  57. package/diagnostics/noSyncWithConstant.js.map +0 -1
  58. package/eslint-rules/index.d.ts +0 -9
  59. package/eslint-rules/index.d.ts.map +0 -1
  60. package/eslint-rules/index.js +0 -16
  61. package/eslint-rules/index.js.map +0 -1
  62. package/eslint-rules/no-curry-arrow.d.ts +0 -5
  63. package/eslint-rules/no-curry-arrow.d.ts.map +0 -1
  64. package/eslint-rules/no-curry-arrow.js +0 -42
  65. package/eslint-rules/no-curry-arrow.js.map +0 -1
  66. package/eslint-rules/utils.d.ts +0 -5
  67. package/eslint-rules/utils.d.ts.map +0 -1
  68. package/eslint-rules/utils.js +0 -16
  69. package/eslint-rules/utils.js.map +0 -1
  70. package/refactors/noSyncWithConstant.d.ts +0 -3
  71. package/refactors/noSyncWithConstant.d.ts.map +0 -1
  72. package/refactors/noSyncWithConstant.js +0 -39
  73. package/refactors/noSyncWithConstant.js.map +0 -1
  74. package/refactors/removeCurryArrow.d.ts +0 -3
  75. package/refactors/removeCurryArrow.d.ts.map +0 -1
  76. package/refactors/removeCurryArrow.js +0 -27
  77. package/refactors/removeCurryArrow.js.map +0 -1
@@ -1,48 +0,0 @@
1
- import { createDiagnostic } from "@effect/language-service/diagnostics/definition";
2
- import * as AST from "@effect/language-service/utils/AST";
3
- import { pipe } from "@effect/language-service/utils/Function";
4
- import * as Ch from "@effect/language-service/utils/ReadonlyArray";
5
- export default /*#__PURE__*/createDiagnostic({
6
- code: 1003,
7
- category: "none",
8
- apply: (ts, program) => sourceFile => {
9
- const typeChecker = program.getTypeChecker();
10
- function isEffectType(type) {
11
- const symbol = type.getSymbol();
12
- if (!symbol) return false;
13
- if (symbol.declarations) {
14
- return symbol.declarations.some(declaration => declaration.getSourceFile().fileName.includes("@effect/io/Effect"));
15
- }
16
- }
17
- function isPipeableCombinator(type) {
18
- const signatures = type.getCallSignatures();
19
- if (signatures.length === 0) return false;
20
- return signatures.some(isPipeableCallSignatureReturningEffect);
21
- }
22
- function isPipeableCallSignatureReturningEffect(signature) {
23
- if (signature.getParameters().length !== 1) return false;
24
- return isEffectType(signature.getReturnType());
25
- }
26
- function shouldBeTraced(signature) {
27
- const returnType = signature.getReturnType();
28
- return isEffectType(returnType) || isPipeableCombinator(returnType);
29
- }
30
- function isGetCallTraceCallExpression(node) {
31
- if (!ts.isCallExpression(node)) return false;
32
- const expression = node.expression;
33
- if (!ts.isIdentifier(expression)) return false;
34
- return expression.text === "getCallTrace";
35
- }
36
- return pipe(AST.collectAll(ts)(sourceFile, ts.isArrowFunction), Ch.concat(AST.collectAll(ts)(sourceFile, ts.isFunctionDeclaration)), Ch.filter(node => !!node.body), Ch.filter(node => typeChecker.getTypeAtLocation(node).getCallSignatures().some(shouldBeTraced)), Ch.filter(node => {
37
- const body = node.body;
38
- if (!ts.isBlock(body)) return true;
39
- const firstStatement = body.statements[0];
40
- if (!firstStatement) return true;
41
- return Ch.isEmpty(AST.collectAll(ts)(firstStatement, isGetCallTraceCallExpression));
42
- }), Ch.map(node => ({
43
- node,
44
- messageText: `This function should be traced. getCallTrace() should be the first line of the body.`
45
- })));
46
- }
47
- });
48
- //# sourceMappingURL=ensureGetCallTrace.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ensureGetCallTrace.mjs","mappings":"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","names":["createDiagnostic","AST","pipe","Ch","code","category","apply","ts","program","sourceFile","typeChecker","getTypeChecker","isEffectType","type","symbol","getSymbol","declarations","some","declaration","getSourceFile","fileName","includes","isPipeableCombinator","signatures","getCallSignatures","length","isPipeableCallSignatureReturningEffect","signature","getParameters","getReturnType","shouldBeTraced","returnType","isGetCallTraceCallExpression","node","isCallExpression","expression","isIdentifier","text","collectAll","isArrowFunction","concat","isFunctionDeclaration","filter","body","getTypeAtLocation","isBlock","firstStatement","statements","isEmpty","map","messageText"],"sourceRoot":"","sources":["../../../src/diagnostics/ensureGetCallTrace.ts"],"sourcesContent":[null]}
@@ -1,7 +0,0 @@
1
- import ensureGetCallTrace from "@effect/language-service/diagnostics/ensureGetCallTrace";
2
- import noSyncWithConstant from "@effect/language-service/diagnostics/noSyncWithConstant";
3
- export default {
4
- noSyncWithConstant,
5
- ensureGetCallTrace
6
- };
7
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","mappings":"AAAA,OAAOA,kBAAkB,MAAM,yDAAyD;AACxF,OAAOC,kBAAkB,MAAM,yDAAyD;AAExF,eAAe;EAAEA,kBAAkB;EAAED;AAAkB,CAAE","names":["ensureGetCallTrace","noSyncWithConstant"],"sourceRoot":"","sources":["../../../src/diagnostics/index.ts"],"sourcesContent":[null]}
@@ -1,37 +0,0 @@
1
- import { createDiagnostic } from "@effect/language-service/diagnostics/definition";
2
- import * as AST from "@effect/language-service/utils/AST";
3
- import { pipe } from "@effect/language-service/utils/Function";
4
- import * as Ch from "@effect/language-service/utils/ReadonlyArray";
5
- export const noSyncWithConstantMethodsMap = {
6
- sync: "succeed",
7
- failSync: "fail",
8
- dieSync: "die"
9
- };
10
- export function isEffectSyncWithConstantCall(ts) {
11
- return (moduleIdentifier, methodName) => node => {
12
- if (AST.isCombinatorCall(ts)(moduleIdentifier, methodName)(node) && node.arguments.length === 1) {
13
- const arg = node.arguments[0];
14
- if (ts.isArrowFunction(arg) && AST.isLiteralConstantValue(ts)(arg.body)) {
15
- return true;
16
- }
17
- }
18
- return false;
19
- };
20
- }
21
- export default /*#__PURE__*/createDiagnostic({
22
- code: 1002,
23
- category: "warning",
24
- apply: ts => sourceFile => {
25
- const effectIdentifier = AST.getEffectModuleIdentifier(ts)(sourceFile);
26
- let result = Ch.empty;
27
- for (const methodName of Object.keys(noSyncWithConstantMethodsMap)) {
28
- const suggestedMethodName = noSyncWithConstantMethodsMap[methodName];
29
- result = pipe(result, Ch.concat(pipe(AST.collectAll(ts)(sourceFile, isEffectSyncWithConstantCall(ts)(effectIdentifier, methodName)), Ch.map(node => ({
30
- node,
31
- messageText: `Value is constant, instead of using ${methodName} you could use ${suggestedMethodName}.`
32
- })))));
33
- }
34
- return result;
35
- }
36
- });
37
- //# sourceMappingURL=noSyncWithConstant.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"noSyncWithConstant.mjs","mappings":"AACA,SAASA,gBAAgB,QAAQ,iDAAiD;AAClF,OAAO,KAAKC,GAAG,MAAM,oCAAoC;AACzD,SAASC,IAAI,QAAQ,yCAAyC;AAC9D,OAAO,KAAKC,EAAE,MAAM,8CAA8C;AAElE,OAAO,MAAMC,4BAA4B,GAAG;EAC1CC,IAAI,EAAE,SAAS;EACfC,QAAQ,EAAE,MAAM;EAChBC,OAAO,EAAE;CACV;AAED,OAAM,SAAUC,4BAA4B,CAACC,EAAqB;EAChE,OAAO,CAACC,gBAAwB,EAAEC,UAAkB,KACjDC,IAAa,IAA+B;IAC3C,IAAIX,GAAG,CAACY,gBAAgB,CAACJ,EAAE,CAAC,CAACC,gBAAgB,EAAEC,UAAU,CAAC,CAACC,IAAI,CAAC,IAAIA,IAAI,CAACE,SAAS,CAACC,MAAM,KAAK,CAAC,EAAE;MAC/F,MAAMC,GAAG,GAAGJ,IAAI,CAACE,SAAS,CAAC,CAAC,CAAC;MAC7B,IAAIL,EAAE,CAACQ,eAAe,CAACD,GAAG,CAAC,IAAIf,GAAG,CAACiB,sBAAsB,CAACT,EAAE,CAAC,CAACO,GAAG,CAACG,IAAI,CAAC,EAAE;QACvE,OAAO,IAAI;;;IAGf,OAAO,KAAK;EACd,CAAC;AACL;AAEA,4BAAenB,gBAAgB,CAAC;EAC9BoB,IAAI,EAAE,IAAI;EACVC,QAAQ,EAAE,SAAS;EACnBC,KAAK,EAAGb,EAAE,IACPc,UAAU,IAAI;IACb,MAAMC,gBAAgB,GAAGvB,GAAG,CAACwB,yBAAyB,CAAChB,EAAE,CAAC,CAACc,UAAU,CAAC;IAEtE,IAAIG,MAAM,GAA0CvB,EAAE,CAACwB,KAAK;IAE5D,KAAK,MAAMhB,UAAU,IAAIiB,MAAM,CAACC,IAAI,CAACzB,4BAA4B,CAAC,EAAE;MAClE,MAAM0B,mBAAmB,GAAW1B,4BAA4B,CAACO,UAAU,CAAE;MAC7Ee,MAAM,GAAGxB,IAAI,CACXwB,MAAM,EACNvB,EAAE,CAAC4B,MAAM,CACP7B,IAAI,CACFD,GAAG,CAAC+B,UAAU,CAACvB,EAAE,CAAC,CAACc,UAAU,EAAEf,4BAA4B,CAACC,EAAE,CAAC,CAACe,gBAAgB,EAAEb,UAAU,CAAC,CAAC,EAC9FR,EAAE,CAAC8B,GAAG,CAAErB,IAAI,KAAM;QAChBA,IAAI;QACJsB,WAAW,EAAE,uCAAuCvB,UAAU,kBAAkBmB,mBAAmB;OACpG,CAAC,CAAC,CACJ,CACF,CACF;;IAGH,OAAOJ,MAAM;EACf;CACH,CAAC","names":["createDiagnostic","AST","pipe","Ch","noSyncWithConstantMethodsMap","sync","failSync","dieSync","isEffectSyncWithConstantCall","ts","moduleIdentifier","methodName","node","isCombinatorCall","arguments","length","arg","isArrowFunction","isLiteralConstantValue","body","code","category","apply","sourceFile","effectIdentifier","getEffectModuleIdentifier","result","empty","Object","keys","suggestedMethodName","concat","collectAll","map","messageText"],"sourceRoot":"","sources":["../../../src/diagnostics/noSyncWithConstant.ts"],"sourcesContent":[null]}
@@ -1,8 +0,0 @@
1
- import noCurryArrow from "@effect/language-service/eslint-rules/no-curry-arrow";
2
- const rules = {
3
- "no-curry-arrow": noCurryArrow
4
- };
5
- export default {
6
- rules
7
- };
8
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","mappings":"AAAA,OAAOA,YAAY,MAAM,sDAAsD;AAE/E,MAAMC,KAAK,GAAG;EACZ,gBAAgB,EAAED;CACnB;AAED,eAAe;EACbC;CACD","names":["noCurryArrow","rules"],"sourceRoot":"","sources":["../../../src/eslint-rules/index.ts"],"sourcesContent":[null]}
@@ -1,33 +0,0 @@
1
- import * as utils from "@effect/language-service/eslint-rules/utils";
2
- import * as AST from "@effect/language-service/utils/AST";
3
- import * as ts from "typescript/lib/tsserverlibrary";
4
- export default /*#__PURE__*/utils.createRule({
5
- create(context) {
6
- const parserServices = utils.getParserServices(context);
7
- return {
8
- ArrowFunctionExpression(node) {
9
- const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node);
10
- if (AST.isCurryArrow(ts)(tsNode)) {
11
- context.report({
12
- messageId: "noCurryArrow",
13
- node
14
- });
15
- }
16
- }
17
- };
18
- },
19
- name: "no-curry-arrow",
20
- meta: {
21
- docs: {
22
- description: "There should be no curry arrow functions, like T.map((_) => log(_)) should be T.map(log) instead",
23
- recommended: "warn"
24
- },
25
- messages: {
26
- noCurryArrow: "There should be no curry arrow functions, like T.map((_) => log(_)) should be T.map(log) instead"
27
- },
28
- type: "suggestion",
29
- schema: []
30
- },
31
- defaultOptions: []
32
- });
33
- //# sourceMappingURL=no-curry-arrow.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"no-curry-arrow.mjs","mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,6CAA6C;AACpE,OAAO,KAAKC,GAAG,MAAM,oCAAoC;AACzD,OAAO,KAAKC,EAAE,MAAM,gCAAgC;AAEpD,4BAAeF,KAAK,CAACG,UAAU,CAAC;EAC9BC,MAAM,CAACC,OAAO;IACZ,MAAMC,cAAc,GAAGN,KAAK,CAACO,iBAAiB,CAACF,OAAO,CAAC;IAEvD,OAAO;MACLG,uBAAuB,CAACC,IAAI;QAC1B,MAAMC,MAAM,GAAGJ,cAAc,CAACK,qBAAqB,CAACC,GAAG,CAACH,IAAI,CAAC;QAC7D,IAAIR,GAAG,CAACY,YAAY,CAACX,EAAE,CAAC,CAACQ,MAAM,CAAC,EAAE;UAChCL,OAAO,CAACS,MAAM,CAAC;YACbC,SAAS,EAAE,cAAc;YACzBN;WACD,CAAC;;MAEN;KACD;EACH,CAAC;EACDO,IAAI,EAAE,gBAAgB;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,kGAAkG;MAC/GC,WAAW,EAAE;KACd;IACDC,QAAQ,EAAE;MACRC,YAAY,EAAE;KACf;IACDC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;GACT;EACDC,cAAc,EAAE;CACjB,CAAC","names":["utils","AST","ts","createRule","create","context","parserServices","getParserServices","ArrowFunctionExpression","node","tsNode","esTreeNodeToTSNodeMap","get","isCurryArrow","report","messageId","name","meta","docs","description","recommended","messages","noCurryArrow","type","schema","defaultOptions"],"sourceRoot":"","sources":["../../../src/eslint-rules/no-curry-arrow.ts"],"sourcesContent":[null]}
@@ -1,8 +0,0 @@
1
- /* eslint-disable @repo-tooling/dprint/dprint */
2
- import { ESLintUtils } from "@typescript-eslint/utils";
3
- const {
4
- getParserServices
5
- } = ESLintUtils;
6
- const createRule = /*#__PURE__*/ESLintUtils.RuleCreator(name => `https://example.com/rule/${name}`);
7
- export { getParserServices, createRule };
8
- //# sourceMappingURL=utils.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.mjs","mappings":"AAAA;AACA,SAASA,WAAW,QAAQ,0BAA0B;AAEtD,MAAM;EAACC;AAAiB,CAAC,GAAGD,WAAW;AAEvC,MAAME,UAAU,gBAAGF,WAAW,CAACG,WAAW,CACvCC,IAAI,IAAK,4BAA4BA,IAAI,EAAE,CAC7C;AAED,SAASH,iBAAiB,EAAEC,UAAU","names":["ESLintUtils","getParserServices","createRule","RuleCreator","name"],"sourceRoot":"","sources":["../../../src/eslint-rules/utils.ts"],"sourcesContent":[null]}
@@ -1,30 +0,0 @@
1
- import { isEffectSyncWithConstantCall, noSyncWithConstantMethodsMap } from "@effect/language-service/diagnostics/noSyncWithConstant";
2
- import { createRefactor } from "@effect/language-service/refactors/definition";
3
- import * as AST from "@effect/language-service/utils/AST";
4
- import { pipe } from "@effect/language-service/utils/Function";
5
- import * as O from "@effect/language-service/utils/Option";
6
- import * as Ch from "@effect/language-service/utils/ReadonlyArray";
7
- export default /*#__PURE__*/createRefactor({
8
- name: "effect/addPipe",
9
- description: "Rewrite using pipe",
10
- apply: ts => (sourceFile, textRange) => {
11
- const effectIdentifier = AST.getEffectModuleIdentifier(ts)(sourceFile);
12
- const nodes = pipe(AST.getNodesContainingRange(ts)(sourceFile, textRange), Ch.reverse, Ch.fromIterable, Ch.filter(AST.isNodeInRange(textRange)));
13
- for (const methodName of Object.keys(noSyncWithConstantMethodsMap)) {
14
- const suggestedMethodName = noSyncWithConstantMethodsMap[methodName];
15
- const refactor = pipe(nodes, Ch.filter(isEffectSyncWithConstantCall(ts)(effectIdentifier, methodName)), Ch.head, O.map(node => ({
16
- description: `Rewrite ${methodName} to ${suggestedMethodName}`,
17
- apply: changeTracker => {
18
- const arg = node.arguments[0];
19
- if (ts.isArrowFunction(arg) && AST.isLiteralConstantValue(ts)(arg.body)) {
20
- const newNode = ts.factory.updateCallExpression(node, ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier(effectIdentifier), suggestedMethodName), node.typeArguments, ts.factory.createNodeArray([arg.body]));
21
- changeTracker.replaceNode(sourceFile, node, newNode);
22
- }
23
- }
24
- })));
25
- if (O.isSome(refactor)) return refactor;
26
- }
27
- return O.none;
28
- }
29
- });
30
- //# sourceMappingURL=noSyncWithConstant.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"noSyncWithConstant.mjs","mappings":"AAAA,SACEA,4BAA4B,EAC5BC,4BAA4B,QACvB,yDAAyD;AAChE,SAASC,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,KAAI;IACxB,MAAMC,gBAAgB,GAAGV,GAAG,CAACW,yBAAyB,CAACJ,EAAE,CAAC,CAACC,UAAU,CAAC;IAEtE,MAAMI,KAAK,GAAGX,IAAI,CAChBD,GAAG,CAACa,uBAAuB,CAACN,EAAE,CAAC,CAACC,UAAU,EAAEC,SAAS,CAAC,EACtDN,EAAE,CAACW,OAAO,EACVX,EAAE,CAACY,YAAY,EACfZ,EAAE,CAACa,MAAM,CAAChB,GAAG,CAACiB,aAAa,CAACR,SAAS,CAAC,CAAC,CACxC;IAED,KAAK,MAAMS,UAAU,IAAIC,MAAM,CAACC,IAAI,CAACtB,4BAA4B,CAAC,EAAE;MAClE,MAAMuB,mBAAmB,GAAWvB,4BAA4B,CAACoB,UAAU,CAAE;MAC7E,MAAMI,QAAQ,GAAGrB,IAAI,CACnBW,KAAK,EACLT,EAAE,CAACa,MAAM,CAACnB,4BAA4B,CAACU,EAAE,CAAC,CAACG,gBAAgB,EAAEQ,UAAU,CAAC,CAAC,EACzEf,EAAE,CAACoB,IAAI,EACPrB,CAAC,CAACsB,GAAG,CAAEC,IAAI,KAAM;QACfpB,WAAW,EAAE,WAAWa,UAAU,OAAOG,mBAAmB,EAAE;QAC9Df,KAAK,EAAGoB,aAA2C,IAAI;UACrD,MAAMC,GAAG,GAAGF,IAAI,CAACG,SAAS,CAAC,CAAC,CAAC;UAC7B,IAAIrB,EAAE,CAACsB,eAAe,CAACF,GAAG,CAAC,IAAI3B,GAAG,CAAC8B,sBAAsB,CAACvB,EAAE,CAAC,CAACoB,GAAG,CAACI,IAAI,CAAC,EAAE;YACvE,MAAMC,OAAO,GAAGzB,EAAE,CAAC0B,OAAO,CAACC,oBAAoB,CAC7CT,IAAI,EACJlB,EAAE,CAAC0B,OAAO,CAACE,8BAA8B,CACvC5B,EAAE,CAAC0B,OAAO,CAACG,gBAAgB,CAAC1B,gBAAgB,CAAC,EAC7CW,mBAAmB,CACpB,EACDI,IAAI,CAACY,aAAa,EAClB9B,EAAE,CAAC0B,OAAO,CAACK,eAAe,CAAC,CAACX,GAAG,CAACI,IAAI,CAAC,CAAC,CACvC;YAEDL,aAAa,CAACa,WAAW,CAAC/B,UAAU,EAAEiB,IAAI,EAAEO,OAAO,CAAC;;QAExD;OACD,CAAC,CAAC,CACJ;MACD,IAAI9B,CAAC,CAACsC,MAAM,CAAClB,QAAQ,CAAC,EAAE,OAAOA,QAAQ;;IAGzC,OAAOpB,CAAC,CAACuC,IAAI;EACf;CACH,CAAC","names":["isEffectSyncWithConstantCall","noSyncWithConstantMethodsMap","createRefactor","AST","pipe","O","Ch","name","description","apply","ts","sourceFile","textRange","effectIdentifier","getEffectModuleIdentifier","nodes","getNodesContainingRange","reverse","fromIterable","filter","isNodeInRange","methodName","Object","keys","suggestedMethodName","refactor","head","map","node","changeTracker","arg","arguments","isArrowFunction","isLiteralConstantValue","body","newNode","factory","updateCallExpression","createPropertyAccessExpression","createIdentifier","typeArguments","createNodeArray","replaceNode","isSome","none"],"sourceRoot":"","sources":["../../../src/refactors/noSyncWithConstant.ts"],"sourcesContent":[null]}
@@ -1,18 +0,0 @@
1
- import { createRefactor } from "@effect/language-service/refactors/definition";
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";
6
- export default /*#__PURE__*/createRefactor({
7
- name: "effect/removeCurryArrow",
8
- description: "Remove arrow",
9
- apply: ts => (sourceFile, textRange) => pipe(AST.getNodesContainingRange(ts)(sourceFile, textRange), Ch.filter(AST.isCurryArrow(ts)), Ch.head, O.map(node => ({
10
- description: `Remove arrow ${AST.getHumanReadableName(sourceFile, node.body)}`,
11
- apply: changeTracker => {
12
- if (!ts.isCallExpression(node.body)) return;
13
- const newNode = node.body.expression;
14
- changeTracker.replaceNode(sourceFile, node, newNode);
15
- }
16
- })))
17
- });
18
- //# sourceMappingURL=removeCurryArrow.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"removeCurryArrow.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,yBAAyB;EAC/BC,WAAW,EAAE,cAAc;EAC3BC,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,YAAY,CAACL,EAAE,CAAC,CAAC,EAC/BJ,EAAE,CAACU,IAAI,EACPX,CAAC,CAACY,GAAG,CAAEC,IAAI,KAAM;IACfV,WAAW,EAAE,gBAAgBL,GAAG,CAACgB,oBAAoB,CAACR,UAAU,EAAEO,IAAI,CAACE,IAAI,CAAC,EAAE;IAC9EX,KAAK,EAAGY,aAAa,IAAI;MACvB,IAAI,CAACX,EAAE,CAACY,gBAAgB,CAACJ,IAAI,CAACE,IAAI,CAAC,EAAE;MACrC,MAAMG,OAAO,GAAGL,IAAI,CAACE,IAAI,CAACI,UAAU;MACpCH,aAAa,CAACI,WAAW,CAACd,UAAU,EAAEO,IAAI,EAAEK,OAAO,CAAC;IACtD;GACD,CAAC,CAAC;CAEV,CAAC","names":["createRefactor","AST","pipe","O","Ch","name","description","apply","ts","sourceFile","textRange","getNodesContainingRange","filter","isCurryArrow","head","map","node","getHumanReadableName","body","changeTracker","isCallExpression","newNode","expression","replaceNode"],"sourceRoot":"","sources":["../../../src/refactors/removeCurryArrow.ts"],"sourcesContent":[null]}
package/config.d.ts DELETED
@@ -1,10 +0,0 @@
1
- import type { DiagnosticDefinitionMessageCategory } from "@effect/language-service/diagnostics/definition";
2
- export interface LanguageServicePluginConfig {
3
- diagnostic: Record<number, DiagnosticDefinitionMessageCategory>;
4
- }
5
- 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
package/config.d.ts.map DELETED
@@ -1 +0,0 @@
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,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAA;AAsBvC,eAAO,MAAM,gCAAgC;;EAE3C,CAAA"}
package/config.js DELETED
@@ -1,31 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.parseLanguageServicePluginConfig = void 0;
7
- function literal(...types) {
8
- return def => value => types.indexOf(value) > -1 ? value : def;
9
- }
10
- function record(type) {
11
- return value => {
12
- if (typeof value !== "object" || value === null) return {};
13
- return Object.keys(value).reduce((obj, key) => ({
14
- ...obj,
15
- [key]: type(value[key])
16
- }), {});
17
- };
18
- }
19
- function struct(types) {
20
- return value => {
21
- return Object.keys(types).reduce((obj, key) => ({
22
- ...obj,
23
- [key]: types[key](typeof value !== "object" || value === null ? null : value[key])
24
- }), {});
25
- };
26
- }
27
- const parseLanguageServicePluginConfig = /*#__PURE__*/struct({
28
- diagnostics: /*#__PURE__*/record( /*#__PURE__*/literal("none", "suggestion", "warning", "error")("none"))
29
- });
30
- exports.parseLanguageServicePluginConfig = parseLanguageServicePluginConfig;
31
- //# sourceMappingURL=config.js.map
package/config.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","mappings":";;;;;;AAQA,SAASA,OAAO,CAA+B,GAAGC,KAAQ;EACxD,OAAQC,GAAc,IAA0BC,KAAK,IAAKF,KAAK,CAACG,OAAO,CAACD,KAAY,CAAC,GAAG,CAAC,CAAC,GAAGA,KAAY,GAAGD,GAAG;AACjH;AAEA,SAASG,MAAM,CAAIC,IAAgB;EACjC,OAAQH,KAAc,IAAI;IACxB,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE;IAC1D,OAAOI,MAAM,CAACC,IAAI,CAACL,KAAK,CAAC,CAACM,MAAM,CAAC,CAACC,GAAG,EAAEC,GAAG,MAAM;MAAE,GAAGD,GAAG;MAAE,CAACC,GAAG,GAAGL,IAAI,CAACH,KAAK,CAACQ,GAAG,CAAC;IAAC,CAAE,CAAC,EAAE,EAAE,CAAC;EAC3F,CAAC;AACH;AAEA,SAASC,MAAM,CAA6CX,KAAQ;EAClE,OAAQE,KAAc,IAAI;IACxB,OAAOI,MAAM,CAACC,IAAI,CAACP,KAAK,CAAC,CAACQ,MAAM,CAC9B,CAACC,GAAG,EAAEC,GAAG,MAAM;MAAE,GAAGD,GAAG;MAAE,CAACC,GAAG,GAAGV,KAAK,CAACU,GAAG,CAAE,CAAC,OAAOR,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,GAAG,IAAI,GAAGA,KAAK,CAACQ,GAAG,CAAC;IAAC,CAAE,CAAC,EAC/G,EAA0C,CAC3C;EACH,CAAC;AACH;AAEO,MAAME,gCAAgC,gBAAGD,MAAM,CAAC;EACrDE,WAAW,eAAET,MAAM,eAACL,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;CAC9E,CAAC;AAAA","names":["literal","types","def","value","indexOf","record","type","Object","keys","reduce","obj","key","struct","parseLanguageServicePluginConfig","diagnostics"],"sourceRoot":"","sources":["../../src/config.ts"],"sourcesContent":[null]}
@@ -1,15 +0,0 @@
1
- import type * as AST from "@effect/language-service/utils/AST";
2
- import type * as Ch from "@effect/language-service/utils/ReadonlyArray";
3
- import type ts from "typescript/lib/tsserverlibrary";
4
- export interface DiagnosticDefinitionMessage {
5
- node: ts.Node;
6
- messageText: string;
7
- }
8
- export type DiagnosticDefinitionMessageCategory = "none" | "suggestion" | "warning" | "error";
9
- export interface DiagnosticDefinition {
10
- code: number;
11
- category: DiagnosticDefinitionMessageCategory;
12
- apply: (ts: AST.TypeScriptApi, program: ts.Program) => (sourceFile: ts.SourceFile) => Ch.Chunk<DiagnosticDefinitionMessage>;
13
- }
14
- export declare function createDiagnostic(definition: DiagnosticDefinition): DiagnosticDefinition;
15
- //# sourceMappingURL=definition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,oCAAoC,CAAA;AAC9D,OAAO,KAAK,KAAK,EAAE,MAAM,8CAA8C,CAAA;AAEvE,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAA;AAEpD,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,MAAM,mCAAmC,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,CAAA;AAE7F,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,mCAAmC,CAAA;IAC7C,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,CACrD,UAAU,EAAE,EAAE,CAAC,UAAU,KACtB,EAAE,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;CAC3C;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,oBAAoB,wBAEhE"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createDiagnostic = createDiagnostic;
7
- function createDiagnostic(definition) {
8
- return definition;
9
- }
10
- //# sourceMappingURL=definition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"definition.js","mappings":";;;;;;AAoBM,SAAUA,gBAAgB,CAACC,UAAgC;EAC/D,OAAOA,UAAU;AACnB","names":["createDiagnostic","definition"],"sourceRoot":"","sources":["../../../src/diagnostics/definition.ts"],"sourcesContent":[null]}
@@ -1,3 +0,0 @@
1
- declare const _default: import("@effect/language-service/diagnostics/definition").DiagnosticDefinition;
2
- export default _default;
3
- //# sourceMappingURL=ensureGetCallTrace.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ensureGetCallTrace.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/ensureGetCallTrace.ts"],"names":[],"mappings":";AAKA,wBA0DE"}
@@ -1,57 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _definition = /*#__PURE__*/require("@effect/language-service/diagnostics/definition");
8
- var AST = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/language-service/utils/AST"));
9
- var _Function = /*#__PURE__*/require("@effect/language-service/utils/Function");
10
- var Ch = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/language-service/utils/ReadonlyArray"));
11
- 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); }
12
- 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; }
13
- var _default = /*#__PURE__*/(0, _definition.createDiagnostic)({
14
- code: 1003,
15
- category: "none",
16
- apply: (ts, program) => sourceFile => {
17
- const typeChecker = program.getTypeChecker();
18
- function isEffectType(type) {
19
- const symbol = type.getSymbol();
20
- if (!symbol) return false;
21
- if (symbol.declarations) {
22
- return symbol.declarations.some(declaration => declaration.getSourceFile().fileName.includes("@effect/io/Effect"));
23
- }
24
- }
25
- function isPipeableCombinator(type) {
26
- const signatures = type.getCallSignatures();
27
- if (signatures.length === 0) return false;
28
- return signatures.some(isPipeableCallSignatureReturningEffect);
29
- }
30
- function isPipeableCallSignatureReturningEffect(signature) {
31
- if (signature.getParameters().length !== 1) return false;
32
- return isEffectType(signature.getReturnType());
33
- }
34
- function shouldBeTraced(signature) {
35
- const returnType = signature.getReturnType();
36
- return isEffectType(returnType) || isPipeableCombinator(returnType);
37
- }
38
- function isGetCallTraceCallExpression(node) {
39
- if (!ts.isCallExpression(node)) return false;
40
- const expression = node.expression;
41
- if (!ts.isIdentifier(expression)) return false;
42
- return expression.text === "getCallTrace";
43
- }
44
- return (0, _Function.pipe)(AST.collectAll(ts)(sourceFile, ts.isArrowFunction), Ch.concat(AST.collectAll(ts)(sourceFile, ts.isFunctionDeclaration)), Ch.filter(node => !!node.body), Ch.filter(node => typeChecker.getTypeAtLocation(node).getCallSignatures().some(shouldBeTraced)), Ch.filter(node => {
45
- const body = node.body;
46
- if (!ts.isBlock(body)) return true;
47
- const firstStatement = body.statements[0];
48
- if (!firstStatement) return true;
49
- return Ch.isEmpty(AST.collectAll(ts)(firstStatement, isGetCallTraceCallExpression));
50
- }), Ch.map(node => ({
51
- node,
52
- messageText: `This function should be traced. getCallTrace() should be the first line of the body.`
53
- })));
54
- }
55
- });
56
- exports.default = _default;
57
- //# sourceMappingURL=ensureGetCallTrace.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ensureGetCallTrace.js","mappings":"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","names":["code","category","apply","ts","program","sourceFile","typeChecker","getTypeChecker","isEffectType","type","symbol","getSymbol","declarations","some","declaration","getSourceFile","fileName","includes","isPipeableCombinator","signatures","getCallSignatures","length","isPipeableCallSignatureReturningEffect","signature","getParameters","getReturnType","shouldBeTraced","returnType","isGetCallTraceCallExpression","node","isCallExpression","expression","isIdentifier","text","AST","collectAll","isArrowFunction","Ch","concat","isFunctionDeclaration","filter","body","getTypeAtLocation","isBlock","firstStatement","statements","isEmpty","map","messageText"],"sourceRoot":"","sources":["../../../src/diagnostics/ensureGetCallTrace.ts"],"sourcesContent":[null]}
@@ -1,6 +0,0 @@
1
- declare const _default: {
2
- noSyncWithConstant: import("./definition").DiagnosticDefinition;
3
- ensureGetCallTrace: import("./definition").DiagnosticDefinition;
4
- };
5
- export default _default;
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/index.ts"],"names":[],"mappings":";;;;AAGA,wBAAyD"}
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _ensureGetCallTrace = /*#__PURE__*/_interopRequireDefault( /*#__PURE__*/require("@effect/language-service/diagnostics/ensureGetCallTrace"));
8
- var _noSyncWithConstant = /*#__PURE__*/_interopRequireDefault( /*#__PURE__*/require("@effect/language-service/diagnostics/noSyncWithConstant"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- var _default = {
11
- noSyncWithConstant: _noSyncWithConstant.default,
12
- ensureGetCallTrace: _ensureGetCallTrace.default
13
- };
14
- exports.default = _default;
15
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","mappings":";;;;;;AAAA;AACA;AAAwF;AAAA,eAEzE;EAAEA,kBAAkB,EAAlBA,2BAAkB;EAAEC,kBAAkB,EAAlBA;AAAkB,CAAE;AAAA","names":["noSyncWithConstant","ensureGetCallTrace"],"sourceRoot":"","sources":["../../../src/diagnostics/index.ts"],"sourcesContent":[null]}
@@ -1,10 +0,0 @@
1
- import * as AST from "@effect/language-service/utils/AST";
2
- export declare const noSyncWithConstantMethodsMap: {
3
- sync: string;
4
- failSync: string;
5
- dieSync: string;
6
- };
7
- export declare function isEffectSyncWithConstantCall(ts: AST.TypeScriptApi): (moduleIdentifier: string, methodName: string) => (node: ts.Node) => node is import("typescript/lib/tsserverlibrary").CallExpression;
8
- declare const _default: import("@effect/language-service/diagnostics/definition").DiagnosticDefinition;
9
- export default _default;
10
- //# sourceMappingURL=noSyncWithConstant.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"noSyncWithConstant.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/noSyncWithConstant.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,oCAAoC,CAAA;AAIzD,eAAO,MAAM,4BAA4B;;;;CAIxC,CAAA;AAED,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,GAAG,CAAC,aAAa,sBACtC,MAAM,cAAc,MAAM,YAC3C,GAAG,IAAI,qEASjB;;AAED,wBA2BE"}
@@ -1,49 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- exports.isEffectSyncWithConstantCall = isEffectSyncWithConstantCall;
8
- exports.noSyncWithConstantMethodsMap = void 0;
9
- var _definition = /*#__PURE__*/require("@effect/language-service/diagnostics/definition");
10
- var AST = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/language-service/utils/AST"));
11
- var _Function = /*#__PURE__*/require("@effect/language-service/utils/Function");
12
- var Ch = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/language-service/utils/ReadonlyArray"));
13
- 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); }
14
- 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; }
15
- const noSyncWithConstantMethodsMap = {
16
- sync: "succeed",
17
- failSync: "fail",
18
- dieSync: "die"
19
- };
20
- exports.noSyncWithConstantMethodsMap = noSyncWithConstantMethodsMap;
21
- function isEffectSyncWithConstantCall(ts) {
22
- return (moduleIdentifier, methodName) => node => {
23
- if (AST.isCombinatorCall(ts)(moduleIdentifier, methodName)(node) && node.arguments.length === 1) {
24
- const arg = node.arguments[0];
25
- if (ts.isArrowFunction(arg) && AST.isLiteralConstantValue(ts)(arg.body)) {
26
- return true;
27
- }
28
- }
29
- return false;
30
- };
31
- }
32
- var _default = /*#__PURE__*/(0, _definition.createDiagnostic)({
33
- code: 1002,
34
- category: "warning",
35
- apply: ts => sourceFile => {
36
- const effectIdentifier = AST.getEffectModuleIdentifier(ts)(sourceFile);
37
- let result = Ch.empty;
38
- for (const methodName of Object.keys(noSyncWithConstantMethodsMap)) {
39
- const suggestedMethodName = noSyncWithConstantMethodsMap[methodName];
40
- result = (0, _Function.pipe)(result, Ch.concat((0, _Function.pipe)(AST.collectAll(ts)(sourceFile, isEffectSyncWithConstantCall(ts)(effectIdentifier, methodName)), Ch.map(node => ({
41
- node,
42
- messageText: `Value is constant, instead of using ${methodName} you could use ${suggestedMethodName}.`
43
- })))));
44
- }
45
- return result;
46
- }
47
- });
48
- exports.default = _default;
49
- //# sourceMappingURL=noSyncWithConstant.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"noSyncWithConstant.js","mappings":";;;;;;;;AACA;AACA;AACA;AACA;AAAkE;AAAA;AAE3D,MAAMA,4BAA4B,GAAG;EAC1CC,IAAI,EAAE,SAAS;EACfC,QAAQ,EAAE,MAAM;EAChBC,OAAO,EAAE;CACV;AAAA;AAEK,SAAUC,4BAA4B,CAACC,EAAqB;EAChE,OAAO,CAACC,gBAAwB,EAAEC,UAAkB,KACjDC,IAAa,IAA+B;IAC3C,IAAIC,GAAG,CAACC,gBAAgB,CAACL,EAAE,CAAC,CAACC,gBAAgB,EAAEC,UAAU,CAAC,CAACC,IAAI,CAAC,IAAIA,IAAI,CAACG,SAAS,CAACC,MAAM,KAAK,CAAC,EAAE;MAC/F,MAAMC,GAAG,GAAGL,IAAI,CAACG,SAAS,CAAC,CAAC,CAAC;MAC7B,IAAIN,EAAE,CAACS,eAAe,CAACD,GAAG,CAAC,IAAIJ,GAAG,CAACM,sBAAsB,CAACV,EAAE,CAAC,CAACQ,GAAG,CAACG,IAAI,CAAC,EAAE;QACvE,OAAO,IAAI;;;IAGf,OAAO,KAAK;EACd,CAAC;AACL;AAAC,4BAEc,gCAAgB,EAAC;EAC9BC,IAAI,EAAE,IAAI;EACVC,QAAQ,EAAE,SAAS;EACnBC,KAAK,EAAGd,EAAE,IACPe,UAAU,IAAI;IACb,MAAMC,gBAAgB,GAAGZ,GAAG,CAACa,yBAAyB,CAACjB,EAAE,CAAC,CAACe,UAAU,CAAC;IAEtE,IAAIG,MAAM,GAA0CC,EAAE,CAACC,KAAK;IAE5D,KAAK,MAAMlB,UAAU,IAAImB,MAAM,CAACC,IAAI,CAAC3B,4BAA4B,CAAC,EAAE;MAClE,MAAM4B,mBAAmB,GAAW5B,4BAA4B,CAACO,UAAU,CAAE;MAC7EgB,MAAM,GAAG,kBAAI,EACXA,MAAM,EACNC,EAAE,CAACK,MAAM,CACP,kBAAI,EACFpB,GAAG,CAACqB,UAAU,CAACzB,EAAE,CAAC,CAACe,UAAU,EAAEhB,4BAA4B,CAACC,EAAE,CAAC,CAACgB,gBAAgB,EAAEd,UAAU,CAAC,CAAC,EAC9FiB,EAAE,CAACO,GAAG,CAAEvB,IAAI,KAAM;QAChBA,IAAI;QACJwB,WAAW,EAAE,uCAAuCzB,UAAU,kBAAkBqB,mBAAmB;OACpG,CAAC,CAAC,CACJ,CACF,CACF;;IAGH,OAAOL,MAAM;EACf;CACH,CAAC;AAAA","names":["noSyncWithConstantMethodsMap","sync","failSync","dieSync","isEffectSyncWithConstantCall","ts","moduleIdentifier","methodName","node","AST","isCombinatorCall","arguments","length","arg","isArrowFunction","isLiteralConstantValue","body","code","category","apply","sourceFile","effectIdentifier","getEffectModuleIdentifier","result","Ch","empty","Object","keys","suggestedMethodName","concat","collectAll","map","messageText"],"sourceRoot":"","sources":["../../../src/diagnostics/noSyncWithConstant.ts"],"sourcesContent":[null]}
@@ -1,9 +0,0 @@
1
- declare const _default: {
2
- rules: {
3
- "no-curry-arrow": import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"noCurryArrow", never[], {
4
- ArrowFunctionExpression(node: import("@typescript-eslint/types/dist/generated/ast-spec").ArrowFunctionExpression): void;
5
- }>;
6
- };
7
- };
8
- export default _default;
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/eslint-rules/index.ts"],"names":[],"mappings":";;;;;;;AAMA,wBAEC"}
@@ -1,16 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _noCurryArrow = /*#__PURE__*/_interopRequireDefault( /*#__PURE__*/require("@effect/language-service/eslint-rules/no-curry-arrow"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
- const rules = {
10
- "no-curry-arrow": _noCurryArrow.default
11
- };
12
- var _default = {
13
- rules
14
- };
15
- exports.default = _default;
16
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","mappings":";;;;;;AAAA;AAA+E;AAE/E,MAAMA,KAAK,GAAG;EACZ,gBAAgB,EAAEC;CACnB;AAAA,eAEc;EACbD;CACD;AAAA","names":["rules","noCurryArrow"],"sourceRoot":"","sources":["../../../src/eslint-rules/index.ts"],"sourcesContent":[null]}
@@ -1,5 +0,0 @@
1
- declare const _default: import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<"noCurryArrow", never[], {
2
- ArrowFunctionExpression(node: import("@typescript-eslint/types/dist/generated/ast-spec").ArrowFunctionExpression): void;
3
- }>;
4
- export default _default;
5
- //# sourceMappingURL=no-curry-arrow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"no-curry-arrow.d.ts","sourceRoot":"","sources":["../../../src/eslint-rules/no-curry-arrow.ts"],"names":[],"mappings":";;;AAIA,wBA6BE"}
@@ -1,42 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var utils = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/language-service/eslint-rules/utils"));
8
- var AST = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/language-service/utils/AST"));
9
- var ts = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("typescript/lib/tsserverlibrary"));
10
- 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); }
11
- 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; }
12
- var _default = /*#__PURE__*/utils.createRule({
13
- create(context) {
14
- const parserServices = utils.getParserServices(context);
15
- return {
16
- ArrowFunctionExpression(node) {
17
- const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node);
18
- if (AST.isCurryArrow(ts)(tsNode)) {
19
- context.report({
20
- messageId: "noCurryArrow",
21
- node
22
- });
23
- }
24
- }
25
- };
26
- },
27
- name: "no-curry-arrow",
28
- meta: {
29
- docs: {
30
- description: "There should be no curry arrow functions, like T.map((_) => log(_)) should be T.map(log) instead",
31
- recommended: "warn"
32
- },
33
- messages: {
34
- noCurryArrow: "There should be no curry arrow functions, like T.map((_) => log(_)) should be T.map(log) instead"
35
- },
36
- type: "suggestion",
37
- schema: []
38
- },
39
- defaultOptions: []
40
- });
41
- exports.default = _default;
42
- //# sourceMappingURL=no-curry-arrow.js.map