@effect/language-service 0.23.2 → 0.23.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.
Files changed (3) hide show
  1. package/index.js +42 -11
  2. package/index.js.map +1 -1
  3. package/package.json +1 -1
package/index.js CHANGED
@@ -3496,6 +3496,7 @@ var makeImportablePackagesMetadata = fn("makeImportablePackagesMetadata")(functi
3496
3496
  const excludedByFileName = /* @__PURE__ */ new Map();
3497
3497
  const unbarreledModulePathByFileName = /* @__PURE__ */ new Map();
3498
3498
  const barreledModulePathByFileName = /* @__PURE__ */ new Map();
3499
+ const barreledFunctionPathByFileName = /* @__PURE__ */ new Map();
3499
3500
  const packages = [
3500
3501
  ...languageServicePluginOptions.namespaceImportPackages.map((packageName) => ({
3501
3502
  packageName,
@@ -3552,6 +3553,15 @@ var makeImportablePackagesMetadata = fn("makeImportablePackagesMetadata")(functi
3552
3553
  excludedMethods.push(unbarreledModulePath);
3553
3554
  excludedByFileName.set(methodName, excludedMethods);
3554
3555
  }
3556
+ if (kind === "barrel") {
3557
+ const previousBarreledFunctionPath = barreledFunctionPathByFileName.get(unbarreledModulePath) || [];
3558
+ previousBarreledFunctionPath.push({
3559
+ fileName: barrelSource.fileName,
3560
+ exportName: methodName,
3561
+ packageName
3562
+ });
3563
+ barreledFunctionPathByFileName.set(unbarreledModulePath, previousBarreledFunctionPath);
3564
+ }
3555
3565
  }
3556
3566
  }
3557
3567
  }
@@ -3565,7 +3575,8 @@ var makeImportablePackagesMetadata = fn("makeImportablePackagesMetadata")(functi
3565
3575
  getImportNamespaceByFileName: (fileName) => namespaceByFileName.get(fileName),
3566
3576
  isExcludedFromNamespaceImport: (fileName, exportName) => (excludedByFileName.get(exportName) || []).includes(fileName),
3567
3577
  getUnbarreledModulePath: (fileName, exportName) => unbarreledModulePathByFileName.get(fileName)?.find((_) => _.exportName === exportName)?.fileName,
3568
- getBarreledModulePath: (fileName) => barreledModulePathByFileName.get(fileName)
3578
+ getBarreledModulePath: (fileName) => barreledModulePathByFileName.get(fileName),
3579
+ getBarreledFunctionPath: (fileName, exportName) => barreledFunctionPathByFileName.get(fileName)?.find((_) => _.exportName === exportName)
3569
3580
  };
3570
3581
  });
3571
3582
  var appendEffectCompletionEntryData = fn("appendEffectCompletionEntryData")(
@@ -3665,7 +3676,7 @@ var getImportFromNamespaceCodeActions = fn("getImportFromNamespaceCodeActions")(
3665
3676
  }
3666
3677
  ];
3667
3678
  });
3668
- var getImportFromBarrelCodeActions = fn("getImportFromBarrelCodeActions")(function* (formatOptions, preferences, languageServiceHost, sourceFile, effectReplaceSpan, newModuleSpecifier, barrelExportName) {
3679
+ var getImportFromBarrelCodeActions = fn("getImportFromBarrelCodeActions")(function* (formatOptions, preferences, languageServiceHost, sourceFile, effectReplaceSpan, newModuleSpecifier, barrelExportName, shouldPrependExportName) {
3669
3680
  const ts = yield* service(TypeScriptApi);
3670
3681
  const formatContext = ts.formatting.getFormatContext(
3671
3682
  formatOptions || {},
@@ -3729,11 +3740,13 @@ var getImportFromBarrelCodeActions = fn("getImportFromBarrelCodeActions")(functi
3729
3740
  preferences || {}
3730
3741
  );
3731
3742
  }
3732
- changeTracker.insertText(
3733
- sourceFile,
3734
- effectReplaceSpan.start,
3735
- barrelExportName + "."
3736
- );
3743
+ if (shouldPrependExportName) {
3744
+ changeTracker.insertText(
3745
+ sourceFile,
3746
+ effectReplaceSpan.start,
3747
+ barrelExportName + "."
3748
+ );
3749
+ }
3737
3750
  }
3738
3751
  );
3739
3752
  return [
@@ -3772,16 +3785,34 @@ var postprocessCompletionEntryDetails = fn("postprocessCompletionEntryDetails")(
3772
3785
  exportName
3773
3786
  );
3774
3787
  if (isExcluded) return applicableCompletionEntryDetails;
3775
- const asBarrelImport = packagesMetadata.getBarreledModulePath(fileName);
3776
- if (asBarrelImport) {
3788
+ const asBarrelFunctionImport = packagesMetadata.getBarreledFunctionPath(fileName, exportName);
3789
+ if (asBarrelFunctionImport) {
3790
+ const codeActions = yield* getImportFromBarrelCodeActions(
3791
+ formatOptions,
3792
+ preferences,
3793
+ languageServiceHost,
3794
+ sourceFile,
3795
+ effectReplaceSpan,
3796
+ asBarrelFunctionImport.packageName,
3797
+ asBarrelFunctionImport.exportName,
3798
+ false
3799
+ );
3800
+ return {
3801
+ ...applicableCompletionEntryDetails,
3802
+ codeActions
3803
+ };
3804
+ }
3805
+ const asBarrelModuleImport = packagesMetadata.getBarreledModulePath(fileName);
3806
+ if (asBarrelModuleImport) {
3777
3807
  const codeActions = yield* getImportFromBarrelCodeActions(
3778
3808
  formatOptions,
3779
3809
  preferences,
3780
3810
  languageServiceHost,
3781
3811
  sourceFile,
3782
3812
  effectReplaceSpan,
3783
- asBarrelImport.packageName,
3784
- asBarrelImport.exportName
3813
+ asBarrelModuleImport.packageName,
3814
+ asBarrelModuleImport.exportName,
3815
+ true
3785
3816
  );
3786
3817
  return {
3787
3818
  ...applicableCompletionEntryDetails,