@effect/language-service 0.47.2 → 0.48.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 +4 -0
- package/cli.js +80 -6
- package/cli.js.map +1 -1
- package/effect-lsp-patch-utils.js +80 -6
- package/effect-lsp-patch-utils.js.map +1 -1
- package/index.js +152 -83
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/transform.js +80 -6
- package/transform.js.map +1 -1
package/README.md
CHANGED
|
@@ -296,6 +296,10 @@ If the filename and the class identifier are the same, they won't be repeated, b
|
|
|
296
296
|
|
|
297
297
|
The skipLeadingPath array can contain a set of prefixes to remove from the subpath part of the path. By default "src/" is removed for example.
|
|
298
298
|
|
|
299
|
+
### Pattern: default-hashed
|
|
300
|
+
|
|
301
|
+
If you are concerned potentially showing service names in builds, this pattern is the same as default; but the string will be then hashed.
|
|
302
|
+
|
|
299
303
|
### Pattern: package-identifier
|
|
300
304
|
|
|
301
305
|
This pattern uses the package name + identifier. This usually works great if you have a flat structure, with one file per service/error.
|
package/cli.js
CHANGED
|
@@ -31206,7 +31206,7 @@ function parseKeyPatterns(patterns) {
|
|
|
31206
31206
|
if (!isObject(entry)) continue;
|
|
31207
31207
|
result.push({
|
|
31208
31208
|
target: hasProperty(entry, "target") && isString(entry.target) && ["service", "error", "custom"].includes(entry.target.toLowerCase()) ? entry.target.toLowerCase() : "service",
|
|
31209
|
-
pattern: hasProperty(entry, "pattern") && isString(entry.pattern) && ["package-identifier", "default"].includes(entry.pattern.toLowerCase()) ? entry.pattern.toLowerCase() : "default",
|
|
31209
|
+
pattern: hasProperty(entry, "pattern") && isString(entry.pattern) && ["package-identifier", "default", "default-hashed"].includes(entry.pattern.toLowerCase()) ? entry.pattern.toLowerCase() : "default",
|
|
31210
31210
|
skipLeadingPath: hasProperty(entry, "skipLeadingPath") && isArray(entry.skipLeadingPath) && entry.skipLeadingPath.every(isString) ? entry.skipLeadingPath : ["src/"]
|
|
31211
31211
|
});
|
|
31212
31212
|
}
|
|
@@ -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,78 @@ function makeTypeCheckerUtils(ts, typeChecker) {
|
|
|
31813
31813
|
expectedAndRealTypeCache.set(sourceFile, result);
|
|
31814
31814
|
return result;
|
|
31815
31815
|
};
|
|
31816
|
+
function typeToSimplifiedTypeNode(type2, enclosingNode, flags) {
|
|
31817
|
+
return typeToSimplifiedTypeNodeWorker(type2, enclosingNode, flags, 0);
|
|
31818
|
+
}
|
|
31819
|
+
function typeToSimplifiedTypeNodeWorker(type2, enclosingNode, flags, depth) {
|
|
31820
|
+
const fallbackStandard = () => {
|
|
31821
|
+
const typeNode = typeChecker.typeToTypeNode(type2, enclosingNode, flags);
|
|
31822
|
+
if (!typeNode) return void 0;
|
|
31823
|
+
return tsUtils.simplifyTypeNode(typeNode);
|
|
31824
|
+
};
|
|
31825
|
+
if (depth > 20) return fallbackStandard();
|
|
31826
|
+
const members = unrollUnionMembers(type2);
|
|
31827
|
+
if (members.length > 1 && !(type2.flags & ts.TypeFlags.Boolean)) {
|
|
31828
|
+
const typeNodes = [];
|
|
31829
|
+
members.sort(deterministicTypeOrder);
|
|
31830
|
+
for (const member of members) {
|
|
31831
|
+
const memberNode = typeToSimplifiedTypeNodeWorker(member, enclosingNode, flags, depth + 1);
|
|
31832
|
+
if (!memberNode) return fallbackStandard();
|
|
31833
|
+
typeNodes.push(memberNode);
|
|
31834
|
+
}
|
|
31835
|
+
return tsUtils.simplifyTypeNode(ts.factory.createUnionTypeNode(typeNodes));
|
|
31836
|
+
}
|
|
31837
|
+
if (type2.flags & ts.TypeFlags.Intersection) {
|
|
31838
|
+
const intersectionType = type2;
|
|
31839
|
+
const typeNodes = [];
|
|
31840
|
+
for (const member of intersectionType.types) {
|
|
31841
|
+
const memberNode = typeToSimplifiedTypeNodeWorker(member, enclosingNode, flags, depth + 1);
|
|
31842
|
+
if (!memberNode) return fallbackStandard();
|
|
31843
|
+
typeNodes.push(memberNode);
|
|
31844
|
+
}
|
|
31845
|
+
return tsUtils.simplifyTypeNode(ts.factory.createIntersectionTypeNode(typeNodes));
|
|
31846
|
+
}
|
|
31847
|
+
if (type2.flags & ts.TypeFlags.Object && type2.objectFlags & ts.ObjectFlags.Reference) {
|
|
31848
|
+
const typeReference = type2;
|
|
31849
|
+
const standard2 = fallbackStandard();
|
|
31850
|
+
if (!standard2) return void 0;
|
|
31851
|
+
if (!ts.isTypeReferenceNode(standard2)) return standard2;
|
|
31852
|
+
if (typeReference.target.typeParameters?.length !== typeReference.typeArguments?.length) return standard2;
|
|
31853
|
+
if (standard2.typeArguments?.length !== typeReference.typeArguments?.length) return standard2;
|
|
31854
|
+
const typeParametersCount = (typeReference.target.typeParameters || []).length;
|
|
31855
|
+
for (let i = typeParametersCount - 1; i >= 0; i--) {
|
|
31856
|
+
const typeParameter = typeReference.target.typeParameters[i];
|
|
31857
|
+
const typeArgument = typeReference.typeArguments[i];
|
|
31858
|
+
const defaultType = typeChecker.getDefaultFromTypeParameter(typeParameter);
|
|
31859
|
+
if (defaultType !== typeArgument || i === 0) {
|
|
31860
|
+
return tsUtils.simplifyTypeNode(ts.factory.updateTypeReferenceNode(
|
|
31861
|
+
standard2,
|
|
31862
|
+
standard2.typeName,
|
|
31863
|
+
ts.factory.createNodeArray((standard2.typeArguments || []).slice(0, Math.min(typeParametersCount, i + 1)))
|
|
31864
|
+
));
|
|
31865
|
+
}
|
|
31866
|
+
}
|
|
31867
|
+
return standard2;
|
|
31868
|
+
}
|
|
31869
|
+
if (type2.flags & ts.TypeFlags.Object) {
|
|
31870
|
+
const standard2 = fallbackStandard();
|
|
31871
|
+
if (!standard2) return void 0;
|
|
31872
|
+
if (!ts.isFunctionTypeNode(standard2)) return standard2;
|
|
31873
|
+
const signatures = typeChecker.getSignaturesOfType(type2, ts.SignatureKind.Call);
|
|
31874
|
+
if (signatures.length !== 1) return standard2;
|
|
31875
|
+
const returnType = typeChecker.getReturnTypeOfSignature(signatures[0]);
|
|
31876
|
+
if (!returnType) return standard2;
|
|
31877
|
+
const returnTypeNode = typeToSimplifiedTypeNodeWorker(returnType, enclosingNode, flags, depth + 1);
|
|
31878
|
+
if (!returnTypeNode) return standard2;
|
|
31879
|
+
return tsUtils.simplifyTypeNode(ts.factory.updateFunctionTypeNode(
|
|
31880
|
+
standard2,
|
|
31881
|
+
standard2.typeParameters,
|
|
31882
|
+
standard2.parameters,
|
|
31883
|
+
returnTypeNode
|
|
31884
|
+
));
|
|
31885
|
+
}
|
|
31886
|
+
return fallbackStandard();
|
|
31887
|
+
}
|
|
31816
31888
|
return {
|
|
31817
31889
|
isUnion: isUnion4,
|
|
31818
31890
|
getTypeParameterAtPosition,
|
|
@@ -31821,7 +31893,8 @@ function makeTypeCheckerUtils(ts, typeChecker) {
|
|
|
31821
31893
|
appendToUniqueTypesMap,
|
|
31822
31894
|
deterministicTypeOrder,
|
|
31823
31895
|
getInferredReturnType,
|
|
31824
|
-
expectedAndRealType
|
|
31896
|
+
expectedAndRealType,
|
|
31897
|
+
typeToSimplifiedTypeNode
|
|
31825
31898
|
};
|
|
31826
31899
|
}
|
|
31827
31900
|
|
|
@@ -33000,7 +33073,8 @@ var makeKeyBuilder = fn2("KeyBuilder")(
|
|
|
33000
33073
|
parts2 = parts2.map((part) => part.startsWith("/") ? part.slice(1) : part).map(
|
|
33001
33074
|
(part) => part.endsWith("/") ? part.slice(0, -1) : part
|
|
33002
33075
|
);
|
|
33003
|
-
|
|
33076
|
+
const fullKey = parts2.filter((_) => String(_).trim().length > 0).join("/");
|
|
33077
|
+
return keyPattern.pattern === "default-hashed" ? cyrb53(fullKey) : fullKey;
|
|
33004
33078
|
}
|
|
33005
33079
|
}
|
|
33006
33080
|
return {
|
|
@@ -34946,7 +35020,7 @@ var tryCatchInEffectGen = createDiagnostic({
|
|
|
34946
35020
|
while (nodeToVisit.length > 0) {
|
|
34947
35021
|
const node = nodeToVisit.shift();
|
|
34948
35022
|
ts.forEachChild(node, appendNodeToVisit);
|
|
34949
|
-
if (ts.isTryStatement(node)) {
|
|
35023
|
+
if (ts.isTryStatement(node) && node.catchClause) {
|
|
34950
35024
|
const generatorOrRegularFunction = ts.findAncestor(
|
|
34951
35025
|
node,
|
|
34952
35026
|
(_) => ts.isFunctionExpression(_) || ts.isFunctionDeclaration(_) || ts.isMethodDeclaration(_) || ts.isArrowFunction(_) || ts.isGetAccessor(_) || ts.isFunctionLike(_)
|