@effect/language-service 0.47.2 → 0.47.3
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/cli.js +72 -3
- package/cli.js.map +1 -1
- package/effect-lsp-patch-utils.js +72 -3
- package/effect-lsp-patch-utils.js.map +1 -1
- package/index.js +78 -11
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/transform.js +72 -3
- package/transform.js.map +1 -1
package/cli.js
CHANGED
|
@@ -31570,10 +31570,10 @@ var TypeCheckerUtils = Tag4("TypeCheckerUtils");
|
|
|
31570
31570
|
var nanoLayer2 = (fa) => pipe(
|
|
31571
31571
|
service2(TypeScriptApi),
|
|
31572
31572
|
flatMap18(
|
|
31573
|
-
(ts) => flatMap18(service2(TypeCheckerApi), (typeChecker) => pipe(fa, provideService7(TypeCheckerUtils, makeTypeCheckerUtils(ts, typeChecker))))
|
|
31573
|
+
(ts) => flatMap18(service2(TypeCheckerApi), (typeChecker) => flatMap18(service2(TypeScriptUtils), (typeScriptUtils) => pipe(fa, provideService7(TypeCheckerUtils, makeTypeCheckerUtils(ts, typeChecker, typeScriptUtils)))))
|
|
31574
31574
|
)
|
|
31575
31575
|
);
|
|
31576
|
-
function makeTypeCheckerUtils(ts, typeChecker) {
|
|
31576
|
+
function makeTypeCheckerUtils(ts, typeChecker, tsUtils) {
|
|
31577
31577
|
function isUnion4(type2) {
|
|
31578
31578
|
return !!(type2.flags & ts.TypeFlags.Union);
|
|
31579
31579
|
}
|
|
@@ -31813,6 +31813,74 @@ function makeTypeCheckerUtils(ts, typeChecker) {
|
|
|
31813
31813
|
expectedAndRealTypeCache.set(sourceFile, result);
|
|
31814
31814
|
return result;
|
|
31815
31815
|
};
|
|
31816
|
+
function typeToSimplifiedTypeNode(type2, enclosingNode, flags) {
|
|
31817
|
+
const fallbackStandard = () => {
|
|
31818
|
+
const typeNode = typeChecker.typeToTypeNode(type2, enclosingNode, flags);
|
|
31819
|
+
if (!typeNode) return void 0;
|
|
31820
|
+
return tsUtils.simplifyTypeNode(typeNode);
|
|
31821
|
+
};
|
|
31822
|
+
const members = unrollUnionMembers(type2);
|
|
31823
|
+
if (members.length > 1) {
|
|
31824
|
+
const typeNodes = [];
|
|
31825
|
+
members.sort(deterministicTypeOrder);
|
|
31826
|
+
for (const member of members) {
|
|
31827
|
+
const memberNode = typeToSimplifiedTypeNode(member, enclosingNode, flags);
|
|
31828
|
+
if (!memberNode) return fallbackStandard();
|
|
31829
|
+
typeNodes.push(memberNode);
|
|
31830
|
+
}
|
|
31831
|
+
return tsUtils.simplifyTypeNode(ts.factory.createUnionTypeNode(typeNodes));
|
|
31832
|
+
}
|
|
31833
|
+
if (type2.flags & ts.TypeFlags.Intersection) {
|
|
31834
|
+
const intersectionType = type2;
|
|
31835
|
+
const typeNodes = [];
|
|
31836
|
+
for (const member of intersectionType.types) {
|
|
31837
|
+
const memberNode = typeToSimplifiedTypeNode(member, enclosingNode, flags);
|
|
31838
|
+
if (!memberNode) return fallbackStandard();
|
|
31839
|
+
typeNodes.push(memberNode);
|
|
31840
|
+
}
|
|
31841
|
+
return tsUtils.simplifyTypeNode(ts.factory.createIntersectionTypeNode(typeNodes));
|
|
31842
|
+
}
|
|
31843
|
+
if (type2.flags & ts.TypeFlags.Object && type2.objectFlags & ts.ObjectFlags.Reference) {
|
|
31844
|
+
const typeReference = type2;
|
|
31845
|
+
const standard2 = fallbackStandard();
|
|
31846
|
+
if (!standard2) return void 0;
|
|
31847
|
+
if (!ts.isTypeReferenceNode(standard2)) return standard2;
|
|
31848
|
+
if (typeReference.target.typeParameters?.length !== typeReference.typeArguments?.length) return standard2;
|
|
31849
|
+
if (standard2.typeArguments?.length !== typeReference.typeArguments?.length) return standard2;
|
|
31850
|
+
const typeParametersCount = (typeReference.target.typeParameters || []).length;
|
|
31851
|
+
for (let i = typeParametersCount - 1; i >= 0; i--) {
|
|
31852
|
+
const typeParameter = typeReference.target.typeParameters[i];
|
|
31853
|
+
const typeArgument = typeReference.typeArguments[i];
|
|
31854
|
+
const defaultType = typeChecker.getDefaultFromTypeParameter(typeParameter);
|
|
31855
|
+
if (defaultType !== typeArgument || i === 0) {
|
|
31856
|
+
return tsUtils.simplifyTypeNode(ts.factory.updateTypeReferenceNode(
|
|
31857
|
+
standard2,
|
|
31858
|
+
standard2.typeName,
|
|
31859
|
+
ts.factory.createNodeArray((standard2.typeArguments || []).slice(0, Math.min(typeParametersCount, i + 1)))
|
|
31860
|
+
));
|
|
31861
|
+
}
|
|
31862
|
+
}
|
|
31863
|
+
return standard2;
|
|
31864
|
+
}
|
|
31865
|
+
if (type2.flags & ts.TypeFlags.Object) {
|
|
31866
|
+
const standard2 = fallbackStandard();
|
|
31867
|
+
if (!standard2) return void 0;
|
|
31868
|
+
if (!ts.isFunctionTypeNode(standard2)) return standard2;
|
|
31869
|
+
const signatures = typeChecker.getSignaturesOfType(type2, ts.SignatureKind.Call);
|
|
31870
|
+
if (signatures.length !== 1) return standard2;
|
|
31871
|
+
const returnType = typeChecker.getReturnTypeOfSignature(signatures[0]);
|
|
31872
|
+
if (!returnType) return standard2;
|
|
31873
|
+
const returnTypeNode = typeToSimplifiedTypeNode(returnType, enclosingNode, flags);
|
|
31874
|
+
if (!returnTypeNode) return standard2;
|
|
31875
|
+
return tsUtils.simplifyTypeNode(ts.factory.updateFunctionTypeNode(
|
|
31876
|
+
standard2,
|
|
31877
|
+
standard2.typeParameters,
|
|
31878
|
+
standard2.parameters,
|
|
31879
|
+
returnTypeNode
|
|
31880
|
+
));
|
|
31881
|
+
}
|
|
31882
|
+
return fallbackStandard();
|
|
31883
|
+
}
|
|
31816
31884
|
return {
|
|
31817
31885
|
isUnion: isUnion4,
|
|
31818
31886
|
getTypeParameterAtPosition,
|
|
@@ -31821,7 +31889,8 @@ function makeTypeCheckerUtils(ts, typeChecker) {
|
|
|
31821
31889
|
appendToUniqueTypesMap,
|
|
31822
31890
|
deterministicTypeOrder,
|
|
31823
31891
|
getInferredReturnType,
|
|
31824
|
-
expectedAndRealType
|
|
31892
|
+
expectedAndRealType,
|
|
31893
|
+
typeToSimplifiedTypeNode
|
|
31825
31894
|
};
|
|
31826
31895
|
}
|
|
31827
31896
|
|