@effect/language-service 0.38.3 → 0.38.4
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 +1 -1
- package/effect-lsp-patch-utils.js +16 -7
- package/effect-lsp-patch-utils.js.map +1 -1
- package/index.js +16 -7
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/transform.js +16 -7
- package/transform.js.map +1 -1
package/index.js
CHANGED
|
@@ -3594,6 +3594,7 @@ var parse2 = fn("writeTagClassAccessors.parse")(function* (node) {
|
|
|
3594
3594
|
const ts = yield* service(TypeScriptApi);
|
|
3595
3595
|
const typeChecker = yield* service(TypeCheckerApi);
|
|
3596
3596
|
const typeParser = yield* service(TypeParser);
|
|
3597
|
+
const typeCheckerUtils = yield* service(TypeCheckerUtils);
|
|
3597
3598
|
if (!ts.isClassDeclaration(node)) return yield* fail("not a class declaration");
|
|
3598
3599
|
const { Service, accessors: accessors2, className } = yield* pipe(
|
|
3599
3600
|
typeParser.extendsEffectService(node),
|
|
@@ -3602,12 +3603,18 @@ var parse2 = fn("writeTagClassAccessors.parse")(function* (node) {
|
|
|
3602
3603
|
);
|
|
3603
3604
|
if (accessors2 !== true) return yield* fail("accessors are not enabled in the Effect.Service call");
|
|
3604
3605
|
const involvedMembers = [];
|
|
3605
|
-
|
|
3606
|
-
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
|
|
3606
|
+
const nonPrimitiveServices = typeCheckerUtils.unrollUnionMembers(Service).filter(
|
|
3607
|
+
(_) => !(_.flags & ts.TypeFlags.Number || _.flags & ts.TypeFlags.String || _.flags & ts.TypeFlags.Boolean || _.flags & ts.TypeFlags.Literal)
|
|
3608
|
+
);
|
|
3609
|
+
if (nonPrimitiveServices.length === 0) return yield* fail("Service type is a primitive type");
|
|
3610
|
+
for (const serviceShape of nonPrimitiveServices) {
|
|
3611
|
+
for (const property of typeChecker.getPropertiesOfType(serviceShape)) {
|
|
3612
|
+
const propertyType = typeChecker.getTypeOfSymbolAtLocation(property, node);
|
|
3613
|
+
const callSignatures = typeChecker.getSignaturesOfType(propertyType, ts.SignatureKind.Call);
|
|
3614
|
+
if (callSignatures.length > 0) {
|
|
3615
|
+
const withTypeParameters = callSignatures.filter((_) => _.typeParameters && _.typeParameters.length > 0);
|
|
3616
|
+
if (callSignatures.length > 1 || withTypeParameters.length > 0) involvedMembers.push({ property, propertyType });
|
|
3617
|
+
}
|
|
3611
3618
|
}
|
|
3612
3619
|
}
|
|
3613
3620
|
const hash2 = involvedMembers.map(({ property, propertyType }) => {
|
|
@@ -3653,6 +3660,7 @@ var accessors = createCodegen({
|
|
|
3653
3660
|
const tsUtils = yield* service(TypeScriptUtils);
|
|
3654
3661
|
const typeChecker = yield* service(TypeCheckerApi);
|
|
3655
3662
|
const typeParser = yield* service(TypeParser);
|
|
3663
|
+
const typeCheckerUtils = yield* service(TypeCheckerUtils);
|
|
3656
3664
|
const nodeAndCommentRange = tsUtils.findNodeWithLeadingCommentAtPosition(sourceFile, textRange.pos);
|
|
3657
3665
|
if (!nodeAndCommentRange) return yield* fail(new CodegenNotApplicableError("no node and comment range"));
|
|
3658
3666
|
return yield* pipe(
|
|
@@ -3666,7 +3674,8 @@ var accessors = createCodegen({
|
|
|
3666
3674
|
provideService(TypeScriptApi, ts),
|
|
3667
3675
|
provideService(TypeScriptUtils, tsUtils),
|
|
3668
3676
|
provideService(TypeCheckerApi, typeChecker),
|
|
3669
|
-
provideService(TypeParser, typeParser)
|
|
3677
|
+
provideService(TypeParser, typeParser),
|
|
3678
|
+
provideService(TypeCheckerUtils, typeCheckerUtils)
|
|
3670
3679
|
)
|
|
3671
3680
|
})
|
|
3672
3681
|
),
|