@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.
- package/README.md +59 -0
- package/_mjs/ast.mjs +80 -0
- package/_mjs/ast.mjs.map +1 -0
- package/_mjs/config.mjs +24 -0
- package/_mjs/config.mjs.map +1 -0
- package/_mjs/diagnostics/definition.mjs +4 -0
- package/_mjs/diagnostics/definition.mjs.map +1 -0
- package/_mjs/diagnostics/ensureGetCallTrace.mjs +49 -0
- package/_mjs/diagnostics/ensureGetCallTrace.mjs.map +1 -0
- package/_mjs/diagnostics/index.mjs +9 -0
- package/_mjs/diagnostics/index.mjs.map +1 -0
- package/_mjs/diagnostics/noSyncWithConstant.mjs +36 -0
- package/_mjs/diagnostics/noSyncWithConstant.mjs.map +1 -0
- package/_mjs/diagnostics/removeCurryArrow.mjs +18 -0
- package/_mjs/diagnostics/removeCurryArrow.mjs.map +1 -0
- package/_mjs/index.mjs +111 -0
- package/_mjs/index.mjs.map +1 -0
- package/_mjs/refactors/addPipe.mjs +24 -0
- package/_mjs/refactors/addPipe.mjs.map +1 -0
- package/_mjs/refactors/asyncAwaitToGen.mjs +25 -0
- package/_mjs/refactors/asyncAwaitToGen.mjs.map +1 -0
- package/_mjs/refactors/asyncAwaitToGenTryPromise.mjs +30 -0
- package/_mjs/refactors/asyncAwaitToGenTryPromise.mjs.map +1 -0
- package/_mjs/refactors/definition.mjs +4 -0
- package/_mjs/refactors/definition.mjs.map +1 -0
- package/_mjs/refactors/functionToArrow.mjs +43 -0
- package/_mjs/refactors/functionToArrow.mjs.map +1 -0
- package/_mjs/refactors/index.mjs +19 -0
- package/_mjs/refactors/index.mjs.map +1 -0
- package/_mjs/refactors/removeCurryArrow.mjs +24 -0
- package/_mjs/refactors/removeCurryArrow.mjs.map +1 -0
- package/_mjs/refactors/removePipe.mjs +23 -0
- package/_mjs/refactors/removePipe.mjs.map +1 -0
- package/_mjs/refactors/toggleReturnTypeAnnotation.mjs +44 -0
- package/_mjs/refactors/toggleReturnTypeAnnotation.mjs.map +1 -0
- package/_mjs/refactors/toggleTypeAnnotation.mjs +37 -0
- package/_mjs/refactors/toggleTypeAnnotation.mjs.map +1 -0
- package/_mjs/utils.mjs +146 -0
- package/_mjs/utils.mjs.map +1 -0
- package/ast.d.ts +116 -0
- package/ast.d.ts.map +1 -0
- package/ast.js +100 -0
- package/ast.js.map +1 -0
- package/config.d.ts +10 -0
- package/config.d.ts.map +1 -0
- package/config.js +31 -0
- package/config.js.map +1 -0
- package/diagnostics/definition.d.ts +15 -0
- package/diagnostics/definition.d.ts.map +1 -0
- package/diagnostics/definition.js +10 -0
- package/diagnostics/definition.js.map +1 -0
- package/diagnostics/ensureGetCallTrace.d.ts +3 -0
- package/diagnostics/ensureGetCallTrace.d.ts.map +1 -0
- package/diagnostics/ensureGetCallTrace.js +58 -0
- package/diagnostics/ensureGetCallTrace.js.map +1 -0
- package/diagnostics/index.d.ts +7 -0
- package/diagnostics/index.d.ts.map +1 -0
- package/diagnostics/index.js +17 -0
- package/diagnostics/index.js.map +1 -0
- package/diagnostics/noSyncWithConstant.d.ts +3 -0
- package/diagnostics/noSyncWithConstant.d.ts.map +1 -0
- package/diagnostics/noSyncWithConstant.js +45 -0
- package/diagnostics/noSyncWithConstant.js.map +1 -0
- package/diagnostics/removeCurryArrow.d.ts +3 -0
- package/diagnostics/removeCurryArrow.d.ts.map +1 -0
- package/diagnostics/removeCurryArrow.js +27 -0
- package/diagnostics/removeCurryArrow.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.d.ts.map +1 -0
- package/index.js +116 -0
- package/index.js.map +1 -0
- package/package.json +43 -0
- package/refactors/addPipe.d.ts +3 -0
- package/refactors/addPipe.d.ts.map +1 -0
- package/refactors/addPipe.js +33 -0
- package/refactors/addPipe.js.map +1 -0
- package/refactors/asyncAwaitToGen.d.ts +3 -0
- package/refactors/asyncAwaitToGen.d.ts.map +1 -0
- package/refactors/asyncAwaitToGen.js +34 -0
- package/refactors/asyncAwaitToGen.js.map +1 -0
- package/refactors/asyncAwaitToGenTryPromise.d.ts +3 -0
- package/refactors/asyncAwaitToGenTryPromise.d.ts.map +1 -0
- package/refactors/asyncAwaitToGenTryPromise.js +39 -0
- package/refactors/asyncAwaitToGenTryPromise.js.map +1 -0
- package/refactors/definition.d.ts +13 -0
- package/refactors/definition.d.ts.map +1 -0
- package/refactors/definition.js +10 -0
- package/refactors/definition.js.map +1 -0
- package/refactors/functionToArrow.d.ts +3 -0
- package/refactors/functionToArrow.d.ts.map +1 -0
- package/refactors/functionToArrow.js +52 -0
- package/refactors/functionToArrow.js.map +1 -0
- package/refactors/index.d.ts +12 -0
- package/refactors/index.d.ts.map +1 -0
- package/refactors/index.js +27 -0
- package/refactors/index.js.map +1 -0
- package/refactors/removeCurryArrow.d.ts +3 -0
- package/refactors/removeCurryArrow.d.ts.map +1 -0
- package/refactors/removeCurryArrow.js +33 -0
- package/refactors/removeCurryArrow.js.map +1 -0
- package/refactors/removePipe.d.ts +3 -0
- package/refactors/removePipe.d.ts.map +1 -0
- package/refactors/removePipe.js +32 -0
- package/refactors/removePipe.js.map +1 -0
- package/refactors/toggleReturnTypeAnnotation.d.ts +3 -0
- package/refactors/toggleReturnTypeAnnotation.d.ts.map +1 -0
- package/refactors/toggleReturnTypeAnnotation.js +53 -0
- package/refactors/toggleReturnTypeAnnotation.js.map +1 -0
- package/refactors/toggleTypeAnnotation.d.ts +3 -0
- package/refactors/toggleTypeAnnotation.d.ts.map +1 -0
- package/refactors/toggleTypeAnnotation.js +46 -0
- package/refactors/toggleTypeAnnotation.js.map +1 -0
- package/utils.d.ts +15 -0
- package/utils.d.ts.map +1 -0
- package/utils.js +163 -0
- package/utils.js.map +1 -0
package/config.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
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
ADDED
|
@@ -0,0 +1 @@
|
|
|
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]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type * as T from "@effect/core/io/Effect";
|
|
2
|
+
import type * as Ch from "@tsplus/stdlib/collections/Chunk";
|
|
3
|
+
import type ts from "typescript/lib/tsserverlibrary";
|
|
4
|
+
export interface DiagnosticDefinitionMessage {
|
|
5
|
+
node: ts.Node;
|
|
6
|
+
messageText: string;
|
|
7
|
+
}
|
|
8
|
+
export declare type DiagnosticDefinitionMessageCategory = "none" | "suggestion" | "warning" | "error";
|
|
9
|
+
export interface DiagnosticDefinition {
|
|
10
|
+
code: number;
|
|
11
|
+
category: DiagnosticDefinitionMessageCategory;
|
|
12
|
+
apply: <E>(sourceFile: ts.SourceFile) => T.Effect<typeof ts | ts.Program, E, Ch.Chunk<DiagnosticDefinitionMessage>>;
|
|
13
|
+
}
|
|
14
|
+
export declare function createDiagnostic(definition: DiagnosticDefinition): DiagnosticDefinition;
|
|
15
|
+
//# sourceMappingURL=definition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,KAAK,EAAE,MAAM,kCAAkC,CAAA;AAE3D,OAAO,KAAK,EAAE,MAAM,gCAAgC,CAAA;AAEpD,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,oBAAY,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,CAAC,EACP,UAAU,EAAE,EAAE,CAAC,UAAU,KACtB,CAAC,CAAC,MAAM,CACX,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EACtB,CAAC,EACD,EAAE,CAAC,KAAK,CAAC,2BAA2B,CAAC,CACtC,CAAA;CACF;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,oBAAoB,wBAEhE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.js","mappings":";;;;;;AAwBM,SAAUA,gBAAgB,CAACC,UAAgC;EAC/D,OAAOA,UAAU;AACnB","names":["createDiagnostic","definition"],"sourceRoot":"","sources":["../../../src/diagnostics/definition.ts"],"sourcesContent":[null]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensureGetCallTrace.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/ensureGetCallTrace.ts"],"names":[],"mappings":";AAMA,wBA0DE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var T = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/core/io/Effect"));
|
|
8
|
+
var AST = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/language-service/ast"));
|
|
9
|
+
var _definition = /*#__PURE__*/require("@effect/language-service/diagnostics/definition");
|
|
10
|
+
var _Function = /*#__PURE__*/require("@fp-ts/data/Function");
|
|
11
|
+
var Ch = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@tsplus/stdlib/collections/Chunk"));
|
|
12
|
+
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); }
|
|
13
|
+
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; }
|
|
14
|
+
var _default = /*#__PURE__*/(0, _definition.createDiagnostic)({
|
|
15
|
+
code: 1003,
|
|
16
|
+
category: "none",
|
|
17
|
+
apply: sourceFile => T.gen(function* ($) {
|
|
18
|
+
const ts = yield* $(T.service(AST.TypeScriptApi));
|
|
19
|
+
const program = yield* $(T.service(AST.TypeScriptProgram));
|
|
20
|
+
const typeChecker = program.getTypeChecker();
|
|
21
|
+
function isEffectType(type) {
|
|
22
|
+
const symbol = type.getSymbol();
|
|
23
|
+
if (!symbol) return false;
|
|
24
|
+
return symbol.getDocumentationComment(typeChecker).some(i => i.text.indexOf("Effects model resourceful interaction") > -1);
|
|
25
|
+
}
|
|
26
|
+
function isPipeableCombinator(type) {
|
|
27
|
+
const signatures = type.getCallSignatures();
|
|
28
|
+
if (signatures.length === 0) return false;
|
|
29
|
+
return signatures.some(isPipeableCallSignatureReturningEffect);
|
|
30
|
+
}
|
|
31
|
+
function isPipeableCallSignatureReturningEffect(signature) {
|
|
32
|
+
if (signature.getParameters().length !== 1) return false;
|
|
33
|
+
return isEffectType(signature.getReturnType());
|
|
34
|
+
}
|
|
35
|
+
function shouldBeTraced(signature) {
|
|
36
|
+
const returnType = signature.getReturnType();
|
|
37
|
+
return isEffectType(returnType) || isPipeableCombinator(returnType);
|
|
38
|
+
}
|
|
39
|
+
function isGetCallTraceCallExpression(node) {
|
|
40
|
+
if (!ts.isCallExpression(node)) return false;
|
|
41
|
+
const expression = node.expression;
|
|
42
|
+
if (!ts.isIdentifier(expression)) return false;
|
|
43
|
+
return expression.text === "getCallTrace";
|
|
44
|
+
}
|
|
45
|
+
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 => {
|
|
46
|
+
const body = node.body;
|
|
47
|
+
if (!ts.isBlock(body)) return true;
|
|
48
|
+
const firstStatement = body.statements[0];
|
|
49
|
+
if (!firstStatement) return true;
|
|
50
|
+
return Ch.isEmpty(AST.collectAll(ts)(firstStatement, isGetCallTraceCallExpression));
|
|
51
|
+
}), Ch.map(node => ({
|
|
52
|
+
node,
|
|
53
|
+
messageText: `This function should be traced. getCallTrace() should be the first line of the body.`
|
|
54
|
+
})));
|
|
55
|
+
})
|
|
56
|
+
});
|
|
57
|
+
exports.default = _default;
|
|
58
|
+
//# sourceMappingURL=ensureGetCallTrace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensureGetCallTrace.js","mappings":"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","names":["code","category","apply","sourceFile","T","gen","$","ts","service","AST","TypeScriptApi","program","TypeScriptProgram","typeChecker","getTypeChecker","isEffectType","type","symbol","getSymbol","getDocumentationComment","some","i","text","indexOf","isPipeableCombinator","signatures","getCallSignatures","length","isPipeableCallSignatureReturningEffect","signature","getParameters","getReturnType","shouldBeTraced","returnType","isGetCallTraceCallExpression","node","isCallExpression","expression","isIdentifier","collectAll","isArrowFunction","Ch","concat","isFunctionDeclaration","filter","body","getTypeAtLocation","isBlock","firstStatement","statements","isEmpty","map","messageText"],"sourceRoot":"","sources":["../../../src/diagnostics/ensureGetCallTrace.ts"],"sourcesContent":[null]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
removeCurryArrow: import("./definition").DiagnosticDefinition;
|
|
3
|
+
noSyncWithConstant: import("./definition").DiagnosticDefinition;
|
|
4
|
+
ensureGetCallTrace: import("./definition").DiagnosticDefinition;
|
|
5
|
+
};
|
|
6
|
+
export default _default;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/index.ts"],"names":[],"mappings":";;;;;AAIA,wBAA2E"}
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
var _removeCurryArrow = /*#__PURE__*/_interopRequireDefault( /*#__PURE__*/require("@effect/language-service/diagnostics/removeCurryArrow"));
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
var _default = {
|
|
12
|
+
removeCurryArrow: _removeCurryArrow.default,
|
|
13
|
+
noSyncWithConstant: _noSyncWithConstant.default,
|
|
14
|
+
ensureGetCallTrace: _ensureGetCallTrace.default
|
|
15
|
+
};
|
|
16
|
+
exports.default = _default;
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","mappings":";;;;;;AAAA;AACA;AACA;AAAoF;AAAA,eAErE;EAAEA,gBAAgB,EAAhBA,yBAAgB;EAAEC,kBAAkB,EAAlBA,2BAAkB;EAAEC,kBAAkB,EAAlBA;AAAkB,CAAE;AAAA","names":["removeCurryArrow","noSyncWithConstant","ensureGetCallTrace"],"sourceRoot":"","sources":["../../../src/diagnostics/index.ts"],"sourcesContent":[null]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noSyncWithConstant.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/noSyncWithConstant.ts"],"names":[],"mappings":";AAaA,wBAgDE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var T = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/core/io/Effect"));
|
|
8
|
+
var AST = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/language-service/ast"));
|
|
9
|
+
var _definition = /*#__PURE__*/require("@effect/language-service/diagnostics/definition");
|
|
10
|
+
var _utils = /*#__PURE__*/require("@effect/language-service/utils");
|
|
11
|
+
var Ch = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@tsplus/stdlib/collections/Chunk"));
|
|
12
|
+
var _Function = /*#__PURE__*/require("@tsplus/stdlib/data/Function");
|
|
13
|
+
var O = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@tsplus/stdlib/data/Maybe"));
|
|
14
|
+
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); }
|
|
15
|
+
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; }
|
|
16
|
+
var _default = /*#__PURE__*/(0, _definition.createDiagnostic)({
|
|
17
|
+
code: 1002,
|
|
18
|
+
category: "warning",
|
|
19
|
+
apply: sourceFile => T.gen(function* ($) {
|
|
20
|
+
const ts = yield* $(T.service(AST.TypeScriptApi));
|
|
21
|
+
const effectIdentifier = (0, _Function.pipe)((0, _utils.findModuleImportIdentifierName)(ts)(sourceFile, "@effect/core/io/Effect"), O.getOrElse(() => "Effect"));
|
|
22
|
+
const methodsMap = {
|
|
23
|
+
sync: "succeed",
|
|
24
|
+
failSync: "fail",
|
|
25
|
+
dieSync: "die"
|
|
26
|
+
};
|
|
27
|
+
let result = Ch.empty();
|
|
28
|
+
for (const methodName of Object.keys(methodsMap)) {
|
|
29
|
+
const suggestedMethodName = methodsMap[methodName];
|
|
30
|
+
result = (0, _Function.pipe)(result, Ch.concat((0, _Function.pipe)(AST.collectAll(ts)(sourceFile, (0, _utils.isCombinatorCall)(ts)(effectIdentifier, methodName)), Ch.filter(node => {
|
|
31
|
+
if (node.arguments.length !== 1) return false;
|
|
32
|
+
const arg = node.arguments[0];
|
|
33
|
+
if (!ts.isArrowFunction(arg)) return false;
|
|
34
|
+
if (!(0, _utils.isLiteralConstantValue)(ts)(arg.body)) return false;
|
|
35
|
+
return true;
|
|
36
|
+
}), Ch.map(node => ({
|
|
37
|
+
node,
|
|
38
|
+
messageText: `Value is constant, instead of using ${methodName} you could use ${suggestedMethodName}.`
|
|
39
|
+
})))));
|
|
40
|
+
}
|
|
41
|
+
return result;
|
|
42
|
+
})
|
|
43
|
+
});
|
|
44
|
+
exports.default = _default;
|
|
45
|
+
//# sourceMappingURL=noSyncWithConstant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noSyncWithConstant.js","mappings":";;;;;;AAAA;AACA;AAEA;AACA;AAKA;AACA;AACA;AAA8C;AAAA;AAAA,4BAE/B,gCAAgB,EAAC;EAC9BA,IAAI,EAAE,IAAI;EACVC,QAAQ,EAAE,SAAS;EACnBC,KAAK,EAAGC,UAAU,IAChBC,CAAC,CAACC,GAAG,CAAC,WAAUC,CAAC;IACf,MAAMC,EAAE,GAAG,OAAOD,CAAC,CAACF,CAAC,CAACI,OAAO,CAACC,GAAG,CAACC,aAAa,CAAC,CAAC;IAEjD,MAAMC,gBAAgB,GAAG,kBAAI,EAC3B,yCAA8B,EAACJ,EAAE,CAAC,CAACJ,UAAU,EAAE,wBAAwB,CAAC,EACxES,CAAC,CAACC,SAAS,CACT,MAAM,QAAQ,CACf,CACF;IAED,MAAMC,UAAU,GAAG;MACjBC,IAAI,EAAE,SAAS;MACfC,QAAQ,EAAE,MAAM;MAChBC,OAAO,EAAE;KACV;IAED,IAAIC,MAAM,GAA0CC,EAAE,CAACC,KAAK,EAAE;IAE9D,KAAK,MAAMC,UAAU,IAAIC,MAAM,CAACC,IAAI,CAACT,UAAU,CAAC,EAAE;MAChD,MAAMU,mBAAmB,GAAWV,UAAU,CAACO,UAAU,CAAE;MAE3DH,MAAM,GAAG,kBAAI,EACXA,MAAM,EACNC,EAAE,CAACM,MAAM,CACP,kBAAI,EACFhB,GAAG,CAACiB,UAAU,CAACnB,EAAE,CAAC,CAACJ,UAAU,EAAE,2BAAgB,EAACI,EAAE,CAAC,CAACI,gBAAgB,EAAEU,UAAU,CAAC,CAAC,EAClFF,EAAE,CAACQ,MAAM,CAAEC,IAAI,IAAI;QACjB,IAAIA,IAAI,CAACC,SAAS,CAACC,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;QAC7C,MAAMC,GAAG,GAAGH,IAAI,CAACC,SAAS,CAAC,CAAC,CAAE;QAC9B,IAAI,CAACtB,EAAE,CAACyB,eAAe,CAACD,GAAG,CAAC,EAAE,OAAO,KAAK;QAC1C,IAAI,CAAC,iCAAsB,EAACxB,EAAE,CAAC,CAACwB,GAAG,CAACE,IAAI,CAAC,EAAE,OAAO,KAAK;QACvD,OAAO,IAAI;MACb,CAAC,CAAC,EACFd,EAAE,CAACe,GAAG,CAAEN,IAAI,KAAM;QAChBA,IAAI;QACJO,WAAW,EAAE,uCAAuCd,UAAU,kBAAkBG,mBAAmB;OACpG,CAAC,CAAC,CACJ,CACF,CACF;;IAGH,OAAON,MAAM;EACf,CAAC;CACJ,CAAC;AAAA","names":["code","category","apply","sourceFile","T","gen","$","ts","service","AST","TypeScriptApi","effectIdentifier","O","getOrElse","methodsMap","sync","failSync","dieSync","result","Ch","empty","methodName","Object","keys","suggestedMethodName","concat","collectAll","filter","node","arguments","length","arg","isArrowFunction","body","map","messageText"],"sourceRoot":"","sources":["../../../src/diagnostics/noSyncWithConstant.ts"],"sourcesContent":[null]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removeCurryArrow.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/removeCurryArrow.ts"],"names":[],"mappings":";AAOA,wBAeE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var T = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/core/io/Effect"));
|
|
8
|
+
var AST = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/language-service/ast"));
|
|
9
|
+
var _definition = /*#__PURE__*/require("@effect/language-service/diagnostics/definition");
|
|
10
|
+
var _utils = /*#__PURE__*/require("@effect/language-service/utils");
|
|
11
|
+
var _Function = /*#__PURE__*/require("@fp-ts/data/Function");
|
|
12
|
+
var Ch = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@tsplus/stdlib/collections/Chunk"));
|
|
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
|
+
var _default = /*#__PURE__*/(0, _definition.createDiagnostic)({
|
|
16
|
+
code: 1001,
|
|
17
|
+
category: "suggestion",
|
|
18
|
+
apply: sourceFile => T.gen(function* ($) {
|
|
19
|
+
const ts = yield* $(T.service(AST.TypeScriptApi));
|
|
20
|
+
return (0, _Function.pipe)(AST.collectAll(ts)(sourceFile, (0, _utils.isCurryArrow)(ts)), Ch.map(node => ({
|
|
21
|
+
node,
|
|
22
|
+
messageText: "This arrow function may be not needed."
|
|
23
|
+
})));
|
|
24
|
+
})
|
|
25
|
+
});
|
|
26
|
+
exports.default = _default;
|
|
27
|
+
//# sourceMappingURL=removeCurryArrow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removeCurryArrow.js","mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAAsD;AAAA;AAAA,4BAEvC,gCAAgB,EAAC;EAC9BA,IAAI,EAAE,IAAI;EACVC,QAAQ,EAAE,YAAY;EACtBC,KAAK,EAAGC,UAAU,IAChBC,CAAC,CAACC,GAAG,CAAC,WAAUC,CAAC;IACf,MAAMC,EAAE,GAAG,OAAOD,CAAC,CAACF,CAAC,CAACI,OAAO,CAACC,GAAG,CAACC,aAAa,CAAC,CAAC;IAEjD,OAAO,kBAAI,EACTD,GAAG,CAACE,UAAU,CAACJ,EAAE,CAAC,CAACJ,UAAU,EAAE,uBAAY,EAACI,EAAE,CAAC,CAAC,EAChDK,EAAE,CAACC,GAAG,CAAEC,IAAI,KAAM;MAChBA,IAAI;MACJC,WAAW,EAAE;KACd,CAAC,CAAC,CACJ;EACH,CAAC;CACJ,CAAC;AAAA","names":["code","category","apply","sourceFile","T","gen","$","ts","service","AST","TypeScriptApi","collectAll","Ch","map","node","messageText"],"sourceRoot":"","sources":["../../../src/diagnostics/removeCurryArrow.ts"],"sourcesContent":[null]}
|
package/index.d.ts
ADDED
package/index.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
|
package/index.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var T = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/core/io/Effect"));
|
|
4
|
+
var AST = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/language-service/ast"));
|
|
5
|
+
var _config = /*#__PURE__*/require("@effect/language-service/config");
|
|
6
|
+
var _index = /*#__PURE__*/_interopRequireDefault( /*#__PURE__*/require("@effect/language-service/diagnostics/index"));
|
|
7
|
+
var _index2 = /*#__PURE__*/_interopRequireDefault( /*#__PURE__*/require("@effect/language-service/refactors/index"));
|
|
8
|
+
var _Function = /*#__PURE__*/require("@fp-ts/data/Function");
|
|
9
|
+
var Ch = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@tsplus/stdlib/collections/Chunk"));
|
|
10
|
+
var _Function2 = /*#__PURE__*/require("@tsplus/stdlib/data/Function");
|
|
11
|
+
var O = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@tsplus/stdlib/data/Maybe"));
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
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
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-imports
|
|
16
|
+
function init(modules) {
|
|
17
|
+
const ts = modules.typescript;
|
|
18
|
+
function create(info) {
|
|
19
|
+
const languageService = info.languageService;
|
|
20
|
+
// create the proxy
|
|
21
|
+
const proxy = Object.create(null);
|
|
22
|
+
for (const k of Object.keys(info.languageService)) {
|
|
23
|
+
// @ts-expect-error
|
|
24
|
+
proxy[k] = (...args) => languageService[k].apply(languageService, args);
|
|
25
|
+
}
|
|
26
|
+
function applyConfiguredDiagnosticCategory(diagnostic) {
|
|
27
|
+
const config = (0, _config.parseLanguageServicePluginConfig)(info.config);
|
|
28
|
+
const category = config.diagnostics[diagnostic.code] || diagnostic.category;
|
|
29
|
+
return {
|
|
30
|
+
...diagnostic,
|
|
31
|
+
category
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function toTsDiagnosticCategory(category) {
|
|
35
|
+
return {
|
|
36
|
+
none: ts.DiagnosticCategory.Suggestion,
|
|
37
|
+
suggestion: ts.DiagnosticCategory.Suggestion,
|
|
38
|
+
warning: ts.DiagnosticCategory.Warning,
|
|
39
|
+
error: ts.DiagnosticCategory.Error
|
|
40
|
+
}[category];
|
|
41
|
+
}
|
|
42
|
+
proxy.getSuggestionDiagnostics = (...args) => {
|
|
43
|
+
const suggestionDiagnostics = languageService.getSuggestionDiagnostics(...args);
|
|
44
|
+
const [fileName] = args;
|
|
45
|
+
const program = languageService.getProgram();
|
|
46
|
+
if (program) {
|
|
47
|
+
const effectDiagnostics = (0, _Function.pipe)(AST.getSourceFile(fileName), T.flatMap(sourceFile => T.forEachPar(Object.values(_index.default).map(applyConfiguredDiagnosticCategory).filter(_ => _.category !== "none"), diagnostic => (0, _Function.pipe)(diagnostic.apply(sourceFile), T.map(Ch.map(_ => ({
|
|
48
|
+
file: sourceFile,
|
|
49
|
+
start: _.node.pos,
|
|
50
|
+
length: _.node.end - _.node.pos,
|
|
51
|
+
messageText: _.messageText,
|
|
52
|
+
category: toTsDiagnosticCategory(diagnostic.category),
|
|
53
|
+
code: diagnostic.code,
|
|
54
|
+
source: "effect"
|
|
55
|
+
})))))), T.map(Ch.flatten), T.map(v => Array.from(v)), T.provideService(AST.TypeScriptProgram, program), T.provideService(AST.TypeScriptApi, modules.typescript), T.unsafeRunSync);
|
|
56
|
+
return suggestionDiagnostics.concat(effectDiagnostics);
|
|
57
|
+
}
|
|
58
|
+
return suggestionDiagnostics;
|
|
59
|
+
};
|
|
60
|
+
proxy.getApplicableRefactors = (...args) => {
|
|
61
|
+
const applicableRefactors = languageService.getApplicableRefactors(...args);
|
|
62
|
+
const [fileName, positionOrRange] = args;
|
|
63
|
+
const program = languageService.getProgram();
|
|
64
|
+
if (program) {
|
|
65
|
+
const textRange = AST.toTextRange(positionOrRange);
|
|
66
|
+
const effectRefactors = (0, _Function.pipe)(AST.getSourceFile(fileName), T.flatMap(sourceFile => T.collectAllWith(Object.values(_index2.default).map(refactor => (0, _Function.pipe)(refactor.apply(sourceFile, textRange), T.map(O.map(_ => ({
|
|
67
|
+
name: refactor.name,
|
|
68
|
+
description: refactor.description,
|
|
69
|
+
actions: [{
|
|
70
|
+
name: refactor.name,
|
|
71
|
+
description: _.description
|
|
72
|
+
}]
|
|
73
|
+
}))))), _Function2.identity)), T.map(v => Array.from(v)), T.provideService(AST.TypeScriptProgram, program), T.provideService(AST.TypeScriptApi, modules.typescript), T.unsafeRunSync);
|
|
74
|
+
info.project.projectService.logger.info("[@effect/language-service] possible refactors are " + JSON.stringify(effectRefactors));
|
|
75
|
+
return applicableRefactors.concat(effectRefactors);
|
|
76
|
+
}
|
|
77
|
+
return applicableRefactors;
|
|
78
|
+
};
|
|
79
|
+
proxy.getEditsForRefactor = (fileName, formatOptions, positionOrRange, refactorName, actionName, preferences, ...args) => {
|
|
80
|
+
const program = languageService.getProgram();
|
|
81
|
+
if (program) {
|
|
82
|
+
for (const refactor of Object.values(_index2.default)) {
|
|
83
|
+
if (refactor.name === refactorName) {
|
|
84
|
+
return (0, _Function.pipe)(T.gen(function* ($) {
|
|
85
|
+
const sourceFile = yield* $(AST.getSourceFile(fileName));
|
|
86
|
+
const textRange = AST.toTextRange(positionOrRange);
|
|
87
|
+
const possibleRefactor = yield* $(refactor.apply(sourceFile, textRange));
|
|
88
|
+
if (O.isNone(possibleRefactor)) {
|
|
89
|
+
info.project.projectService.logger.info("[@effect/language-service] requested refactor " + refactorName + " is not applicable");
|
|
90
|
+
return {
|
|
91
|
+
edits: []
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const formatContext = ts.formatting.getFormatContext(formatOptions, info.languageServiceHost);
|
|
95
|
+
const edits = ts.textChanges.ChangeTracker.with({
|
|
96
|
+
formatContext,
|
|
97
|
+
host: info.languageServiceHost,
|
|
98
|
+
preferences: preferences || {}
|
|
99
|
+
}, changeTracker => (0, _Function.pipe)(possibleRefactor.value.apply, T.provideService(AST.ChangeTrackerApi, changeTracker), T.provideService(AST.TypeScriptApi, modules.typescript), T.provideService(AST.TypeScriptProgram, program), T.unsafeRunSync));
|
|
100
|
+
return {
|
|
101
|
+
edits
|
|
102
|
+
};
|
|
103
|
+
}), T.provideService(AST.TypeScriptApi, modules.typescript), T.provideService(AST.TypeScriptProgram, program), T.unsafeRunSync);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return languageService.getEditsForRefactor(fileName, formatOptions, positionOrRange, refactorName, actionName, preferences, ...args);
|
|
108
|
+
};
|
|
109
|
+
return proxy;
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
create
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
module.exports = init;
|
|
116
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","mappings":";;AAAA;AACA;AACA;AAKA;AAEA;AACA;AACA;AACA;AACA;AAA8C;AAAA;AAAA;AAG9C;AACA,SAASA,IAAI,CAACC,OAAwE;EACpF,MAAMC,EAAE,GAAGD,OAAO,CAACE,UAAU;EAE7B,SAASC,MAAM,CAACC,IAAgC;IAC9C,MAAMC,eAAe,GAAGD,IAAI,CAACC,eAAe;IAE5C;IACA,MAAMC,KAAK,GAAuBC,MAAM,CAACJ,MAAM,CAAC,IAAI,CAAC;IACrD,KAAK,MAAMK,CAAC,IAAID,MAAM,CAACE,IAAI,CAACL,IAAI,CAACC,eAAe,CAAoC,EAAE;MACpF;MACAC,KAAK,CAACE,CAAC,CAAC,GAAG,CAAC,GAAGE,IAAe,KAAKL,eAAe,CAACG,CAAC,CAAE,CAACG,KAAK,CAACN,eAAe,EAAEK,IAAI,CAAC;;IAGrF,SAASE,iCAAiC,CAACC,UAAgC;MACzE,MAAMC,MAAM,GAAG,4CAAgC,EAACV,IAAI,CAACU,MAAM,CAAC;MAC5D,MAAMC,QAAQ,GAAGD,MAAM,CAACE,WAAW,CAACH,UAAU,CAACI,IAAI,CAAC,IAAIJ,UAAU,CAACE,QAAQ;MAC3E,OAAQ;QAAE,GAAGF,UAAU;QAAEE;MAAQ,CAAE;IACrC;IAEA,SAASG,sBAAsB,CAACH,QAA6C;MAC3E,OAAQ;QACNI,IAAI,EAAElB,EAAE,CAACmB,kBAAkB,CAACC,UAAU;QACtCC,UAAU,EAAErB,EAAE,CAACmB,kBAAkB,CAACC,UAAU;QAC5CE,OAAO,EAAEtB,EAAE,CAACmB,kBAAkB,CAACI,OAAO;QACtCC,KAAK,EAAExB,EAAE,CAACmB,kBAAkB,CAACM;OAC9B,CAAEX,QAAQ,CAAC;IACd;IAEAT,KAAK,CAACqB,wBAAwB,GAAG,CAAC,GAAGjB,IAAI,KAAI;MAC3C,MAAMkB,qBAAqB,GAAGvB,eAAe,CAACsB,wBAAwB,CAAC,GAAGjB,IAAI,CAAC;MAC/E,MAAM,CAACmB,QAAQ,CAAC,GAAGnB,IAAI;MACvB,MAAMoB,OAAO,GAAGzB,eAAe,CAAC0B,UAAU,EAAE;MAE5C,IAAID,OAAO,EAAE;QACX,MAAME,iBAAiB,GAAG,kBAAI,EAC5BC,GAAG,CAACC,aAAa,CAACL,QAAQ,CAAC,EAC3BM,CAAC,CAACC,OAAO,CAAEC,UAAU,IACnBF,CAAC,CAACG,UAAU,CACV/B,MAAM,CAACgC,MAAM,CAAuBvB,cAAW,CAAC,CAACwB,GAAG,CAAC5B,iCAAiC,CAAC,CAAC6B,MAAM,CAAEC,CAAC,IAC/FA,CAAC,CAAC3B,QAAQ,KAAK,MAAM,CACtB,EACAF,UAAU,IACT,kBAAI,EACFA,UAAU,CAACF,KAAK,CAAC0B,UAAU,CAAC,EAC5BF,CAAC,CAACK,GAAG,CAACG,EAAE,CAACH,GAAG,CAAEE,CAAC,KAAM;UACnBE,IAAI,EAAEP,UAAU;UAChBQ,KAAK,EAAEH,CAAC,CAACI,IAAI,CAACC,GAAG;UACjBC,MAAM,EAAEN,CAAC,CAACI,IAAI,CAACG,GAAG,GAAGP,CAAC,CAACI,IAAI,CAACC,GAAG;UAC/BG,WAAW,EAAER,CAAC,CAACQ,WAAW;UAC1BnC,QAAQ,EAAEG,sBAAsB,CAACL,UAAU,CAACE,QAAQ,CAAC;UACrDE,IAAI,EAAEJ,UAAU,CAACI,IAAI;UACrBkC,MAAM,EAAE;SACT,CAAC,CAAC,CAAC,CACL,CACJ,CACF,EACDhB,CAAC,CAACK,GAAG,CAACG,EAAE,CAACS,OAAO,CAAC,EACjBjB,CAAC,CAACK,GAAG,CAAEa,CAAC,IAAKC,KAAK,CAACC,IAAI,CAACF,CAAC,CAAC,CAAC,EAC3BlB,CAAC,CAACqB,cAAc,CAACvB,GAAG,CAACwB,iBAAiB,EAAE3B,OAAO,CAAC,EAChDK,CAAC,CAACqB,cAAc,CAACvB,GAAG,CAACyB,aAAa,EAAE1D,OAAO,CAACE,UAAU,CAAC,EACvDiC,CAAC,CAACwB,aAAa,CAChB;QAED,OAAO/B,qBAAqB,CAACgC,MAAM,CAAC5B,iBAAiB,CAAC;;MAExD,OAAOJ,qBAAqB;IAC9B,CAAC;IAEDtB,KAAK,CAACuD,sBAAsB,GAAG,CAAC,GAAGnD,IAAI,KAAI;MACzC,MAAMoD,mBAAmB,GAAGzD,eAAe,CAACwD,sBAAsB,CAAC,GAAGnD,IAAI,CAAC;MAC3E,MAAM,CAACmB,QAAQ,EAAEkC,eAAe,CAAC,GAAGrD,IAAI;MACxC,MAAMoB,OAAO,GAAGzB,eAAe,CAAC0B,UAAU,EAAE;MAE5C,IAAID,OAAO,EAAE;QACX,MAAMkC,SAAS,GAAG/B,GAAG,CAACgC,WAAW,CAACF,eAAe,CAAC;QAClD,MAAMG,eAAe,GAAG,kBAAI,EAC1BjC,GAAG,CAACC,aAAa,CAACL,QAAQ,CAAC,EAC3BM,CAAC,CAACC,OAAO,CAAEC,UAAU,IACnBF,CAAC,CAACgC,cAAc,CACd5D,MAAM,CAACgC,MAAM,CAAqB6B,eAAS,CAAC,CAAC5B,GAAG,CAAE6B,QAAQ,IACxD,kBAAI,EACFA,QAAQ,CAAC1D,KAAK,CAAC0B,UAAU,EAAE2B,SAAS,CAAC,EACrC7B,CAAC,CAACK,GAAG,CAAC8B,CAAC,CAAC9B,GAAG,CAAEE,CAAC,KAAM;UAClB6B,IAAI,EAAEF,QAAQ,CAACE,IAAI;UACnBC,WAAW,EAAEH,QAAQ,CAACG,WAAW;UACjCC,OAAO,EAAE,CAAC;YACRF,IAAI,EAAEF,QAAQ,CAACE,IAAI;YACnBC,WAAW,EAAE9B,CAAC,CAAC8B;WAChB;SACF,CAAC,CAAC,CAAC,CACL,CACF,EACDE,mBAAQ,CACT,CACF,EACDvC,CAAC,CAACK,GAAG,CAAEa,CAAC,IAAKC,KAAK,CAACC,IAAI,CAACF,CAAC,CAAC,CAAC,EAC3BlB,CAAC,CAACqB,cAAc,CAACvB,GAAG,CAACwB,iBAAiB,EAAE3B,OAAO,CAAC,EAChDK,CAAC,CAACqB,cAAc,CAACvB,GAAG,CAACyB,aAAa,EAAE1D,OAAO,CAACE,UAAU,CAAC,EACvDiC,CAAC,CAACwB,aAAa,CAChB;QAEDvD,IAAI,CAACuE,OAAO,CAACC,cAAc,CAACC,MAAM,CAACzE,IAAI,CACrC,oDAAoD,GAAG0E,IAAI,CAACC,SAAS,CAACb,eAAe,CAAC,CACvF;QAED,OAAOJ,mBAAmB,CAACF,MAAM,CAACM,eAAe,CAAC;;MAEpD,OAAOJ,mBAAmB;IAC5B,CAAC;IAEDxD,KAAK,CAAC0E,mBAAmB,GAAG,CAC1BnD,QAAQ,EACRoD,aAAa,EACblB,eAAe,EACfmB,YAAY,EACZC,UAAU,EACVC,WAAW,EACX,GAAG1E,IAAI,KACL;MACF,MAAMoB,OAAO,GAAGzB,eAAe,CAAC0B,UAAU,EAAE;MAC5C,IAAID,OAAO,EAAE;QACX,KAAK,MAAMuC,QAAQ,IAAI9D,MAAM,CAACgC,MAAM,CAAC6B,eAAS,CAAC,EAAE;UAC/C,IAAIC,QAAQ,CAACE,IAAI,KAAKW,YAAY,EAAE;YAClC,OAAO,kBAAI,EACT/C,CAAC,CAACkD,GAAG,CAAC,WAAUC,CAAC;cACf,MAAMjD,UAAU,GAAG,OAAOiD,CAAC,CAACrD,GAAG,CAACC,aAAa,CAACL,QAAQ,CAAC,CAAC;cACxD,MAAMmC,SAAS,GAAG/B,GAAG,CAACgC,WAAW,CAACF,eAAe,CAAC;cAClD,MAAMwB,gBAAgB,GAAG,OAAOD,CAAC,CAACjB,QAAQ,CAAC1D,KAAK,CAAC0B,UAAU,EAAE2B,SAAS,CAAC,CAAC;cAExE,IAAIM,CAAC,CAACkB,MAAM,CAACD,gBAAgB,CAAC,EAAE;gBAC9BnF,IAAI,CAACuE,OAAO,CAACC,cAAc,CAACC,MAAM,CAACzE,IAAI,CACrC,gDAAgD,GAAG8E,YAAY,GAAG,oBAAoB,CACvF;gBACD,OAAO;kBAAEO,KAAK,EAAE;gBAAE,CAAE;;cAGtB,MAAMC,aAAa,GAAGzF,EAAE,CAAC0F,UAAU,CAACC,gBAAgB,CAACX,aAAa,EAAE7E,IAAI,CAACyF,mBAAmB,CAAC;cAC7F,MAAMJ,KAAK,GAAGxF,EAAE,CAAC6F,WAAW,CAACC,aAAa,CAACC,IAAI,CAC7C;gBACEN,aAAa;gBACbO,IAAI,EAAE7F,IAAI,CAACyF,mBAAmB;gBAC9BT,WAAW,EAAEA,WAAW,IAAI;eAC7B,EACAc,aAAa,IACZ,kBAAI,EACFX,gBAAgB,CAACY,KAAK,CAACxF,KAAK,EAC5BwB,CAAC,CAACqB,cAAc,CAACvB,GAAG,CAACmE,gBAAgB,EAAEF,aAAa,CAAC,EACrD/D,CAAC,CAACqB,cAAc,CACdvB,GAAG,CAACyB,aAAa,EACjB1D,OAAO,CAACE,UAAU,CACnB,EACDiC,CAAC,CAACqB,cAAc,CAACvB,GAAG,CAACwB,iBAAiB,EAAE3B,OAAO,CAAC,EAChDK,CAAC,CAACwB,aAAa,CAChB,CACJ;cAED,OAAO;gBAAE8B;cAAK,CAAE;YAClB,CAAC,CAAC,EACFtD,CAAC,CAACqB,cAAc,CAACvB,GAAG,CAACyB,aAAa,EAAE1D,OAAO,CAACE,UAAU,CAAC,EACvDiC,CAAC,CAACqB,cAAc,CAACvB,GAAG,CAACwB,iBAAiB,EAAE3B,OAAO,CAAC,EAChDK,CAAC,CAACwB,aAAa,CAChB;;;;MAKP,OAAOtD,eAAe,CAAC2E,mBAAmB,CACxCnD,QAAQ,EACRoD,aAAa,EACblB,eAAe,EACfmB,YAAY,EACZC,UAAU,EACVC,WAAW,EACX,GAAG1E,IAAI,CACR;IACH,CAAC;IAED,OAAOJ,KAAK;EACd;EAEA,OAAO;IAAEH;EAAM,CAAE;AACnB;AAEAkG,MAAM,CAACC,OAAO,GAAGvG,IAAI","names":["init","modules","ts","typescript","create","info","languageService","proxy","Object","k","keys","args","apply","applyConfiguredDiagnosticCategory","diagnostic","config","category","diagnostics","code","toTsDiagnosticCategory","none","DiagnosticCategory","Suggestion","suggestion","warning","Warning","error","Error","getSuggestionDiagnostics","suggestionDiagnostics","fileName","program","getProgram","effectDiagnostics","AST","getSourceFile","T","flatMap","sourceFile","forEachPar","values","map","filter","_","Ch","file","start","node","pos","length","end","messageText","source","flatten","v","Array","from","provideService","TypeScriptProgram","TypeScriptApi","unsafeRunSync","concat","getApplicableRefactors","applicableRefactors","positionOrRange","textRange","toTextRange","effectRefactors","collectAllWith","refactors","refactor","O","name","description","actions","identity","project","projectService","logger","JSON","stringify","getEditsForRefactor","formatOptions","refactorName","actionName","preferences","gen","$","possibleRefactor","isNone","edits","formatContext","formatting","getFormatContext","languageServiceHost","textChanges","ChangeTracker","with","host","changeTracker","value","ChangeTrackerApi","module","exports"],"sourceRoot":"","sources":["../../src/index.ts"],"sourcesContent":[null]}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@effect/language-service",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/Effect-TS/language-service.git"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"@effect/core": "^0.0.16",
|
|
11
|
+
"@effect/printer": "^0.1.0",
|
|
12
|
+
"@fp-ts/core": "^0.0.8",
|
|
13
|
+
"@fp-ts/data": "^0.0.9",
|
|
14
|
+
"@tsplus/stdlib": "^0.2.8"
|
|
15
|
+
},
|
|
16
|
+
"main": "./index.js",
|
|
17
|
+
"publishConfig": {
|
|
18
|
+
"access": "public"
|
|
19
|
+
},
|
|
20
|
+
"sideEffects": [],
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"import": {
|
|
24
|
+
"types": "./index.d.ts",
|
|
25
|
+
"default": "./_mjs/index.mjs"
|
|
26
|
+
},
|
|
27
|
+
"require": {
|
|
28
|
+
"types": "./index.d.ts",
|
|
29
|
+
"default": "./index.js"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"./*": {
|
|
33
|
+
"import": {
|
|
34
|
+
"types": "./*.d.ts",
|
|
35
|
+
"default": "./_mjs/*.mjs"
|
|
36
|
+
},
|
|
37
|
+
"require": {
|
|
38
|
+
"types": "./*.d.ts",
|
|
39
|
+
"default": "./*.js"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addPipe.d.ts","sourceRoot":"","sources":["../../../src/refactors/addPipe.ts"],"names":[],"mappings":";AAQA,wBA+BE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var T = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/core/io/Effect"));
|
|
8
|
+
var AST = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/language-service/ast"));
|
|
9
|
+
var _definition = /*#__PURE__*/require("@effect/language-service/refactors/definition");
|
|
10
|
+
var _utils = /*#__PURE__*/require("@effect/language-service/utils");
|
|
11
|
+
var Ch = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@tsplus/stdlib/collections/Chunk"));
|
|
12
|
+
var _Function = /*#__PURE__*/require("@tsplus/stdlib/data/Function");
|
|
13
|
+
var O = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@tsplus/stdlib/data/Maybe"));
|
|
14
|
+
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); }
|
|
15
|
+
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; }
|
|
16
|
+
var _default = /*#__PURE__*/(0, _definition.createRefactor)({
|
|
17
|
+
name: "effect/addPipe",
|
|
18
|
+
description: "Rewrite using pipe",
|
|
19
|
+
apply: (sourceFile, textRange) => T.gen(function* ($) {
|
|
20
|
+
const ts = yield* $(T.service(AST.TypeScriptApi));
|
|
21
|
+
return (0, _Function.pipe)(AST.getNodesContainingRange(ts)(sourceFile, textRange), Ch.reverse, Ch.from, Ch.filter(AST.isNodeInRange(textRange)), Ch.filter((0, _utils.isPipeableCallExpression)(ts)), Ch.head, O.map(node => ({
|
|
22
|
+
description: `Rewrite ${AST.getHumanReadableName(sourceFile, node.expression)} to pipe`,
|
|
23
|
+
apply: T.gen(function* ($) {
|
|
24
|
+
const changeTracker = yield* $(T.service(AST.ChangeTrackerApi));
|
|
25
|
+
const args = (0, _utils.asPipeArguments)(ts)(node);
|
|
26
|
+
const newNode = ts.factory.createCallExpression(ts.factory.createIdentifier("pipe"), undefined, Array.from(args));
|
|
27
|
+
changeTracker.replaceNode(sourceFile, node, newNode);
|
|
28
|
+
})
|
|
29
|
+
})));
|
|
30
|
+
})
|
|
31
|
+
});
|
|
32
|
+
exports.default = _default;
|
|
33
|
+
//# sourceMappingURL=addPipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addPipe.js","mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAA8C;AAAA;AAAA,4BAE/B,8BAAc,EAAC;EAC5BA,IAAI,EAAE,gBAAgB;EACtBC,WAAW,EAAE,oBAAoB;EACjCC,KAAK,EAAE,CAACC,UAAU,EAAEC,SAAS,KAC3BC,CAAC,CAACC,GAAG,CAAC,WAAUC,CAAC;IACf,MAAMC,EAAE,GAAG,OAAOD,CAAC,CAACF,CAAC,CAACI,OAAO,CAACC,GAAG,CAACC,aAAa,CAAC,CAAC;IAEjD,OAAO,kBAAI,EACTD,GAAG,CAACE,uBAAuB,CAACJ,EAAE,CAAC,CAACL,UAAU,EAAEC,SAAS,CAAC,EACtDS,EAAE,CAACC,OAAO,EACVD,EAAE,CAACE,IAAI,EACPF,EAAE,CAACG,MAAM,CAACN,GAAG,CAACO,aAAa,CAACb,SAAS,CAAC,CAAC,EACvCS,EAAE,CAACG,MAAM,CAAC,mCAAwB,EAACR,EAAE,CAAC,CAAC,EACvCK,EAAE,CAACK,IAAI,EACPC,CAAC,CAACC,GAAG,CAAEC,IAAI,KAAM;MACfpB,WAAW,EAAE,WAAWS,GAAG,CAACY,oBAAoB,CAACnB,UAAU,EAAEkB,IAAI,CAACE,UAAU,CAAC,UAAU;MACvFrB,KAAK,EAAEG,CAAC,CAACC,GAAG,CAAC,WAAUC,CAAC;QACtB,MAAMiB,aAAa,GAAG,OAAOjB,CAAC,CAACF,CAAC,CAACI,OAAO,CAACC,GAAG,CAACe,gBAAgB,CAAC,CAAC;QAC/D,MAAMC,IAAI,GAAG,0BAAe,EAAClB,EAAE,CAAC,CAACa,IAAI,CAAC;QAEtC,MAAMM,OAAO,GAAGnB,EAAE,CAACoB,OAAO,CAACC,oBAAoB,CAC7CrB,EAAE,CAACoB,OAAO,CAACE,gBAAgB,CAAC,MAAM,CAAC,EACnCC,SAAS,EACTC,KAAK,CAACjB,IAAI,CAACW,IAAI,CAAC,CACjB;QAEDF,aAAa,CAACS,WAAW,CAAC9B,UAAU,EAAEkB,IAAI,EAAEM,OAAO,CAAC;MACtD,CAAC;KACF,CAAC,CAAC,CACJ;EACH,CAAC;CACJ,CAAC;AAAA","names":["name","description","apply","sourceFile","textRange","T","gen","$","ts","service","AST","TypeScriptApi","getNodesContainingRange","Ch","reverse","from","filter","isNodeInRange","head","O","map","node","getHumanReadableName","expression","changeTracker","ChangeTrackerApi","args","newNode","factory","createCallExpression","createIdentifier","undefined","Array","replaceNode"],"sourceRoot":"","sources":["../../../src/refactors/addPipe.ts"],"sourcesContent":[null]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncAwaitToGen.d.ts","sourceRoot":"","sources":["../../../src/refactors/asyncAwaitToGen.ts"],"names":[],"mappings":";AAQA,wBAmCE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var T = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/core/io/Effect"));
|
|
8
|
+
var AST = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/language-service/ast"));
|
|
9
|
+
var _definition = /*#__PURE__*/require("@effect/language-service/refactors/definition");
|
|
10
|
+
var _utils = /*#__PURE__*/require("@effect/language-service/utils");
|
|
11
|
+
var Ch = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@tsplus/stdlib/collections/Chunk"));
|
|
12
|
+
var _Function = /*#__PURE__*/require("@tsplus/stdlib/data/Function");
|
|
13
|
+
var O = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@tsplus/stdlib/data/Maybe"));
|
|
14
|
+
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); }
|
|
15
|
+
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; }
|
|
16
|
+
var _default = /*#__PURE__*/(0, _definition.createRefactor)({
|
|
17
|
+
name: "effect/asyncAwaitToGen",
|
|
18
|
+
description: "Convert to Effect.gen",
|
|
19
|
+
apply: (sourceFile, textRange) => T.gen(function* ($) {
|
|
20
|
+
const ts = yield* $(T.service(AST.TypeScriptApi));
|
|
21
|
+
return (0, _Function.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 => ({
|
|
22
|
+
description: "Rewrite to Effect.gen",
|
|
23
|
+
apply: T.gen(function* ($) {
|
|
24
|
+
const changeTracker = yield* $(T.service(AST.ChangeTrackerApi));
|
|
25
|
+
const importedEffectName = (0, _utils.findModuleImportIdentifierName)(ts)(sourceFile, "@effect/core/io/Effect");
|
|
26
|
+
const effectName = (0, _Function.pipe)(importedEffectName, O.getOrElse(() => "Effect"));
|
|
27
|
+
const newDeclaration = yield* $((0, _utils.transformAsyncAwaitToEffectGen)(node, effectName, expression => ts.factory.createCallExpression(ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier(effectName), "promise"), undefined, [expression])));
|
|
28
|
+
changeTracker.replaceNode(sourceFile, node, newDeclaration);
|
|
29
|
+
})
|
|
30
|
+
})));
|
|
31
|
+
})
|
|
32
|
+
});
|
|
33
|
+
exports.default = _default;
|
|
34
|
+
//# sourceMappingURL=asyncAwaitToGen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncAwaitToGen.js","mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAA8C;AAAA;AAAA,4BAE/B,8BAAc,EAAC;EAC5BA,IAAI,EAAE,wBAAwB;EAC9BC,WAAW,EAAE,uBAAuB;EACpCC,KAAK,EAAE,CAACC,UAAU,EAAEC,SAAS,KAC3BC,CAAC,CAACC,GAAG,CAAC,WAAUC,CAAC;IACf,MAAMC,EAAE,GAAG,OAAOD,CAAC,CAACF,CAAC,CAACI,OAAO,CAACC,GAAG,CAACC,aAAa,CAAC,CAAC;IAEjD,OAAO,kBAAI,EACTD,GAAG,CAACE,uBAAuB,CAACJ,EAAE,CAAC,CAACL,UAAU,EAAEC,SAAS,CAAC,EACtDS,EAAE,CAACC,MAAM,CAACN,EAAE,CAACO,qBAAqB,CAAC,EACnCF,EAAE,CAACC,MAAM,CAAEE,IAAI,IAAK,CAAC,CAACA,IAAI,CAACC,IAAI,CAAC,EAChCJ,EAAE,CAACC,MAAM,CAAEE,IAAI,IAAK,CAAC,EAAER,EAAE,CAACU,wBAAwB,CAACF,IAAI,CAAC,GAAGR,EAAE,CAACW,aAAa,CAACC,KAAK,CAAC,CAAC,EACnFP,EAAE,CAACQ,IAAI,EACPC,CAAC,CAACC,GAAG,CAAEP,IAAI,KAAM;MACff,WAAW,EAAE,uBAAuB;MACpCC,KAAK,EAAEG,CAAC,CAACC,GAAG,CAAC,WAAUC,CAAC;QACtB,MAAMiB,aAAa,GAAG,OAAOjB,CAAC,CAACF,CAAC,CAACI,OAAO,CAACC,GAAG,CAACe,gBAAgB,CAAC,CAAC;QAC/D,MAAMC,kBAAkB,GAAI,yCAA8B,EAAClB,EAAE,CAAC,CAACL,UAAU,EAAE,wBAAwB,CAAE;QACrG,MAAMwB,UAAU,GAAG,kBAAI,EAACD,kBAAkB,EAAEJ,CAAC,CAACM,SAAS,CAAC,MAAM,QAAQ,CAAC,CAAC;QAExE,MAAMC,cAAc,GAAG,OAAOtB,CAAC,CAAC,yCAA8B,EAACS,IAAI,EAAEW,UAAU,EAAGG,UAAU,IAC1FtB,EAAE,CAACuB,OAAO,CAACC,oBAAoB,CAC7BxB,EAAE,CAACuB,OAAO,CAACE,8BAA8B,CACvCzB,EAAE,CAACuB,OAAO,CAACG,gBAAgB,CAACP,UAAU,CAAC,EACvC,SAAS,CACV,EACDQ,SAAS,EACT,CAACL,UAAU,CAAC,CACb,CAAC,CAAC;QAELN,aAAa,CAACY,WAAW,CAACjC,UAAU,EAAEa,IAAI,EAAEa,cAAc,CAAC;MAC7D,CAAC;KACF,CAAC,CAAC,CACJ;EACH,CAAC;CACJ,CAAC;AAAA","names":["name","description","apply","sourceFile","textRange","T","gen","$","ts","service","AST","TypeScriptApi","getNodesContainingRange","Ch","filter","isFunctionDeclaration","node","body","getCombinedModifierFlags","ModifierFlags","Async","head","O","map","changeTracker","ChangeTrackerApi","importedEffectName","effectName","getOrElse","newDeclaration","expression","factory","createCallExpression","createPropertyAccessExpression","createIdentifier","undefined","replaceNode"],"sourceRoot":"","sources":["../../../src/refactors/asyncAwaitToGen.ts"],"sourcesContent":[null]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncAwaitToGenTryPromise.d.ts","sourceRoot":"","sources":["../../../src/refactors/asyncAwaitToGenTryPromise.ts"],"names":[],"mappings":";AAQA,wBA6DE"}
|