@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 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
- return parts2.filter((_) => String(_).trim().length > 0).join("/");
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(_)