@nudojs/service 0.3.1 → 0.3.2

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 (2) hide show
  1. package/dist/index.js +17 -4
  2. package/package.json +5 -5
package/dist/index.js CHANGED
@@ -3116,11 +3116,19 @@ async function getTypeAtPositionAsync(filePath, source, line, column, activeCase
3116
3116
  }
3117
3117
  return getTypeAtPosition(filePath, source, line, column, activeCases);
3118
3118
  }
3119
+ function positionInsideCaseFunction(source, ast, line) {
3120
+ try {
3121
+ const enclosing = findEnclosingFunction(extractDirectives(ast), line);
3122
+ return !!enclosing && enclosing.directives.some((d) => d.kind === "case");
3123
+ } catch {
3124
+ return false;
3125
+ }
3126
+ }
3119
3127
  function getTypeAtPosition(filePath, source, line, column, activeCases) {
3120
3128
  const ast = parse5(source);
3121
3129
  const fileDirectives = extractFileDirectives(ast);
3122
3130
  const envNames = fileDirectives.filter((d) => d.kind === "env").flatMap((d) => d.envs);
3123
- if (isBPathCapable(source, envNames)) {
3131
+ if (isBPathCapable(source, envNames) && !positionInsideCaseFunction(source, ast, line)) {
3124
3132
  try {
3125
3133
  const seeds = mockDirectivesToAbsSeeds(extractDirectives(ast));
3126
3134
  const { modules } = evalAbsModuleGraph(source, filePath);
@@ -3215,7 +3223,12 @@ function getHoverAtPosition(filePath, source, line, column, activeCases) {
3215
3223
  absMultiline: info2.absMultiline ?? gMulti
3216
3224
  };
3217
3225
  };
3218
- if (isBPathCapable(source, envNames)) {
3226
+ const insideCaseFn = positionInsideCaseFunction(
3227
+ source,
3228
+ file ?? parse5(source),
3229
+ line
3230
+ );
3231
+ if (isBPathCapable(source, envNames) && !insideCaseFn) {
3219
3232
  try {
3220
3233
  const seeds = mockDirectivesToAbsSeeds(extractDirectives(file ?? parse5(source)));
3221
3234
  const { modules } = evalAbsModuleGraph(source, filePath);
@@ -3249,7 +3262,7 @@ function getHoverAtPosition(filePath, source, line, column, activeCases) {
3249
3262
  const tv = getTypeAtPosition(filePath, source, line, column, activeCases);
3250
3263
  const info = tv ? { typeText: typeValueToString3(tv) } : null;
3251
3264
  const ident = findIdentNameAtPosition(source, line, column, file);
3252
- if (ident && !fnName) {
3265
+ if (ident && !fnName && !insideCaseFn) {
3253
3266
  try {
3254
3267
  if (isBPathCapable(source, []) || !/\brequire\s*\(/.test(source)) {
3255
3268
  const seeds = mockDirectivesToAbsSeeds(extractDirectives(file ?? parse5(source)));
@@ -3273,7 +3286,7 @@ function getHoverAtPosition(filePath, source, line, column, activeCases) {
3273
3286
  }
3274
3287
  }
3275
3288
  try {
3276
- if (isBPathCapable(source, []) || !/\brequire\s*\(|\bimport\s*[{'"*]/.test(source)) {
3289
+ if (!insideCaseFn && (isBPathCapable(source, []) || !/\brequire\s*\(|\bimport\s*[{'"*]/.test(source))) {
3277
3290
  const seeds = mockDirectivesToAbsSeeds(
3278
3291
  extractDirectives(file ?? parse5(source))
3279
3292
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nudojs/service",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Shared inference service for Nudo IDE integrations — file analysis, completions, and .d.ts generation",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -38,10 +38,10 @@
38
38
  "dependencies": {
39
39
  "@babel/traverse": "^7.29.0",
40
40
  "@babel/types": "^7.29.0",
41
- "@nudojs/core": "0.3.1",
42
- "@nudojs/parser": "0.3.1",
43
- "@nudojs/cli": "0.3.1",
44
- "@nudojs/harvester": "0.2.1"
41
+ "@nudojs/core": "0.4.0",
42
+ "@nudojs/parser": "0.4.0",
43
+ "@nudojs/cli": "0.4.0",
44
+ "@nudojs/harvester": "0.2.2"
45
45
  },
46
46
  "scripts": {
47
47
  "build": "tsup src/index.ts --format esm --dts"