@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.
@@ -1205,7 +1205,7 @@ function parseKeyPatterns(patterns) {
1205
1205
  if (!isObject(entry)) continue;
1206
1206
  result.push({
1207
1207
  target: hasProperty(entry, "target") && isString(entry.target) && ["service", "error", "custom"].includes(entry.target.toLowerCase()) ? entry.target.toLowerCase() : "service",
1208
- pattern: hasProperty(entry, "pattern") && isString(entry.pattern) && ["package-identifier", "default"].includes(entry.pattern.toLowerCase()) ? entry.pattern.toLowerCase() : "default",
1208
+ pattern: hasProperty(entry, "pattern") && isString(entry.pattern) && ["package-identifier", "default", "default-hashed"].includes(entry.pattern.toLowerCase()) ? entry.pattern.toLowerCase() : "default",
1209
1209
  skipLeadingPath: hasProperty(entry, "skipLeadingPath") && isArray(entry.skipLeadingPath) && entry.skipLeadingPath.every(isString) ? entry.skipLeadingPath : ["src/"]
1210
1210
  });
1211
1211
  }
@@ -2117,10 +2117,10 @@ var TypeCheckerUtils = Tag("TypeCheckerUtils");
2117
2117
  var nanoLayer2 = (fa) => pipe(
2118
2118
  service(TypeScriptApi),
2119
2119
  flatMap2(
2120
- (ts) => flatMap2(service(TypeCheckerApi), (typeChecker) => pipe(fa, provideService(TypeCheckerUtils, makeTypeCheckerUtils(ts, typeChecker))))
2120
+ (ts) => flatMap2(service(TypeCheckerApi), (typeChecker) => flatMap2(service(TypeScriptUtils), (typeScriptUtils) => pipe(fa, provideService(TypeCheckerUtils, makeTypeCheckerUtils(ts, typeChecker, typeScriptUtils)))))
2121
2121
  )
2122
2122
  );
2123
- function makeTypeCheckerUtils(ts, typeChecker) {
2123
+ function makeTypeCheckerUtils(ts, typeChecker, tsUtils) {
2124
2124
  function isUnion(type) {
2125
2125
  return !!(type.flags & ts.TypeFlags.Union);
2126
2126
  }
@@ -2360,6 +2360,78 @@ function makeTypeCheckerUtils(ts, typeChecker) {
2360
2360
  expectedAndRealTypeCache.set(sourceFile, result);
2361
2361
  return result;
2362
2362
  };
2363
+ function typeToSimplifiedTypeNode(type, enclosingNode, flags) {
2364
+ return typeToSimplifiedTypeNodeWorker(type, enclosingNode, flags, 0);
2365
+ }
2366
+ function typeToSimplifiedTypeNodeWorker(type, enclosingNode, flags, depth) {
2367
+ const fallbackStandard = () => {
2368
+ const typeNode = typeChecker.typeToTypeNode(type, enclosingNode, flags);
2369
+ if (!typeNode) return void 0;
2370
+ return tsUtils.simplifyTypeNode(typeNode);
2371
+ };
2372
+ if (depth > 20) return fallbackStandard();
2373
+ const members = unrollUnionMembers(type);
2374
+ if (members.length > 1 && !(type.flags & ts.TypeFlags.Boolean)) {
2375
+ const typeNodes = [];
2376
+ members.sort(deterministicTypeOrder);
2377
+ for (const member of members) {
2378
+ const memberNode = typeToSimplifiedTypeNodeWorker(member, enclosingNode, flags, depth + 1);
2379
+ if (!memberNode) return fallbackStandard();
2380
+ typeNodes.push(memberNode);
2381
+ }
2382
+ return tsUtils.simplifyTypeNode(ts.factory.createUnionTypeNode(typeNodes));
2383
+ }
2384
+ if (type.flags & ts.TypeFlags.Intersection) {
2385
+ const intersectionType = type;
2386
+ const typeNodes = [];
2387
+ for (const member of intersectionType.types) {
2388
+ const memberNode = typeToSimplifiedTypeNodeWorker(member, enclosingNode, flags, depth + 1);
2389
+ if (!memberNode) return fallbackStandard();
2390
+ typeNodes.push(memberNode);
2391
+ }
2392
+ return tsUtils.simplifyTypeNode(ts.factory.createIntersectionTypeNode(typeNodes));
2393
+ }
2394
+ if (type.flags & ts.TypeFlags.Object && type.objectFlags & ts.ObjectFlags.Reference) {
2395
+ const typeReference = type;
2396
+ const standard2 = fallbackStandard();
2397
+ if (!standard2) return void 0;
2398
+ if (!ts.isTypeReferenceNode(standard2)) return standard2;
2399
+ if (typeReference.target.typeParameters?.length !== typeReference.typeArguments?.length) return standard2;
2400
+ if (standard2.typeArguments?.length !== typeReference.typeArguments?.length) return standard2;
2401
+ const typeParametersCount = (typeReference.target.typeParameters || []).length;
2402
+ for (let i = typeParametersCount - 1; i >= 0; i--) {
2403
+ const typeParameter = typeReference.target.typeParameters[i];
2404
+ const typeArgument = typeReference.typeArguments[i];
2405
+ const defaultType = typeChecker.getDefaultFromTypeParameter(typeParameter);
2406
+ if (defaultType !== typeArgument || i === 0) {
2407
+ return tsUtils.simplifyTypeNode(ts.factory.updateTypeReferenceNode(
2408
+ standard2,
2409
+ standard2.typeName,
2410
+ ts.factory.createNodeArray((standard2.typeArguments || []).slice(0, Math.min(typeParametersCount, i + 1)))
2411
+ ));
2412
+ }
2413
+ }
2414
+ return standard2;
2415
+ }
2416
+ if (type.flags & ts.TypeFlags.Object) {
2417
+ const standard2 = fallbackStandard();
2418
+ if (!standard2) return void 0;
2419
+ if (!ts.isFunctionTypeNode(standard2)) return standard2;
2420
+ const signatures = typeChecker.getSignaturesOfType(type, ts.SignatureKind.Call);
2421
+ if (signatures.length !== 1) return standard2;
2422
+ const returnType = typeChecker.getReturnTypeOfSignature(signatures[0]);
2423
+ if (!returnType) return standard2;
2424
+ const returnTypeNode = typeToSimplifiedTypeNodeWorker(returnType, enclosingNode, flags, depth + 1);
2425
+ if (!returnTypeNode) return standard2;
2426
+ return tsUtils.simplifyTypeNode(ts.factory.updateFunctionTypeNode(
2427
+ standard2,
2428
+ standard2.typeParameters,
2429
+ standard2.parameters,
2430
+ returnTypeNode
2431
+ ));
2432
+ }
2433
+ return fallbackStandard();
2434
+ }
2363
2435
  return {
2364
2436
  isUnion,
2365
2437
  getTypeParameterAtPosition,
@@ -2368,7 +2440,8 @@ function makeTypeCheckerUtils(ts, typeChecker) {
2368
2440
  appendToUniqueTypesMap,
2369
2441
  deterministicTypeOrder,
2370
2442
  getInferredReturnType,
2371
- expectedAndRealType
2443
+ expectedAndRealType,
2444
+ typeToSimplifiedTypeNode
2372
2445
  };
2373
2446
  }
2374
2447
 
@@ -3547,7 +3620,8 @@ var makeKeyBuilder = fn("KeyBuilder")(
3547
3620
  parts = parts.map((part) => part.startsWith("/") ? part.slice(1) : part).map(
3548
3621
  (part) => part.endsWith("/") ? part.slice(0, -1) : part
3549
3622
  );
3550
- return parts.filter((_) => String(_).trim().length > 0).join("/");
3623
+ const fullKey = parts.filter((_) => String(_).trim().length > 0).join("/");
3624
+ return keyPattern.pattern === "default-hashed" ? cyrb53(fullKey) : fullKey;
3551
3625
  }
3552
3626
  }
3553
3627
  return {
@@ -5493,7 +5567,7 @@ var tryCatchInEffectGen = createDiagnostic({
5493
5567
  while (nodeToVisit.length > 0) {
5494
5568
  const node = nodeToVisit.shift();
5495
5569
  ts.forEachChild(node, appendNodeToVisit);
5496
- if (ts.isTryStatement(node)) {
5570
+ if (ts.isTryStatement(node) && node.catchClause) {
5497
5571
  const generatorOrRegularFunction = ts.findAncestor(
5498
5572
  node,
5499
5573
  (_) => ts.isFunctionExpression(_) || ts.isFunctionDeclaration(_) || ts.isMethodDeclaration(_) || ts.isArrowFunction(_) || ts.isGetAccessor(_) || ts.isFunctionLike(_)