Skip to content

Commit f9d911c

Browse files
committed
fix
1 parent 051a02c commit f9d911c

File tree

7 files changed

+54
-18
lines changed

7 files changed

+54
-18
lines changed

packages/react-doctor/src/utils/discover-project.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,18 +153,22 @@ const resolveWorkspaceDirectories = (rootDirectory: string, pattern: string): st
153153
return [];
154154
}
155155

156-
const baseDirectory = path.join(rootDirectory, cleanPattern.slice(0, cleanPattern.indexOf("*")));
156+
const wildcardIndex = cleanPattern.indexOf("*");
157+
const baseDirectory = path.join(rootDirectory, cleanPattern.slice(0, wildcardIndex));
158+
const suffixAfterWildcard = cleanPattern.slice(wildcardIndex + 1);
157159

158160
if (!fs.existsSync(baseDirectory) || !fs.statSync(baseDirectory).isDirectory()) {
159161
return [];
160162
}
161163

162164
return fs
163165
.readdirSync(baseDirectory)
164-
.map((entry) => path.join(baseDirectory, entry))
166+
.map((entry) => path.join(baseDirectory, entry, suffixAfterWildcard))
165167
.filter(
166168
(entryPath) =>
167-
fs.statSync(entryPath).isDirectory() && fs.existsSync(path.join(entryPath, "package.json")),
169+
fs.existsSync(entryPath) &&
170+
fs.statSync(entryPath).isDirectory() &&
171+
fs.existsSync(path.join(entryPath, "package.json")),
168172
);
169173
};
170174

packages/react-doctor/src/utils/proxy-fetch.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,11 @@ export const proxyFetch = async (url: string | URL, init?: RequestInit): Promise
5050
const proxyUrl = getProxyUrl();
5151
const dispatcher = proxyUrl ? await createProxyDispatcher(proxyUrl) : null;
5252

53-
return await fetch(
54-
url,
55-
{ ...init, signal: controller.signal, ...(dispatcher ? { dispatcher } : {}) } as RequestInit,
56-
);
53+
return await fetch(url, {
54+
...init,
55+
signal: controller.signal,
56+
...(dispatcher ? { dispatcher } : {}),
57+
} as RequestInit);
5758
} finally {
5859
clearTimeout(timeoutId);
5960
}

packages/react-doctor/src/utils/skill-prompt.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,7 @@ const SKILL_TARGETS: SkillTarget[] = [
102102
{
103103
name: "Amp Code",
104104
detect: () => existsSync(join(HOME_DIRECTORY, ".amp")),
105-
install: () =>
106-
writeSkillFiles(join(HOME_DIRECTORY, ".config", "amp", "skills", SKILL_NAME)),
105+
install: () => writeSkillFiles(join(HOME_DIRECTORY, ".config", "amp", "skills", SKILL_NAME)),
107106
},
108107
{
109108
name: "Cursor",
@@ -113,8 +112,7 @@ const SKILL_TARGETS: SkillTarget[] = [
113112
{
114113
name: "OpenCode",
115114
detect: () =>
116-
isCommandAvailable("opencode") ||
117-
existsSync(join(HOME_DIRECTORY, ".config", "opencode")),
115+
isCommandAvailable("opencode") || existsSync(join(HOME_DIRECTORY, ".config", "opencode")),
118116
install: () =>
119117
writeSkillFiles(join(HOME_DIRECTORY, ".config", "opencode", "skills", SKILL_NAME)),
120118
},
@@ -140,21 +138,18 @@ const SKILL_TARGETS: SkillTarget[] = [
140138
{
141139
name: "Antigravity",
142140
detect: () =>
143-
isCommandAvailable("agy") ||
144-
existsSync(join(HOME_DIRECTORY, ".gemini", "antigravity")),
141+
isCommandAvailable("agy") || existsSync(join(HOME_DIRECTORY, ".gemini", "antigravity")),
145142
install: () =>
146143
writeSkillFiles(join(HOME_DIRECTORY, ".gemini", "antigravity", "skills", SKILL_NAME)),
147144
},
148145
{
149146
name: "Gemini CLI",
150-
detect: () =>
151-
isCommandAvailable("gemini") || existsSync(join(HOME_DIRECTORY, ".gemini")),
147+
detect: () => isCommandAvailable("gemini") || existsSync(join(HOME_DIRECTORY, ".gemini")),
152148
install: () => writeSkillFiles(join(HOME_DIRECTORY, ".gemini", "skills", SKILL_NAME)),
153149
},
154150
{
155151
name: "Codex",
156-
detect: () =>
157-
isCommandAvailable("codex") || existsSync(join(HOME_DIRECTORY, ".codex")),
152+
detect: () => isCommandAvailable("codex") || existsSync(join(HOME_DIRECTORY, ".codex")),
158153
install: () => {
159154
const skillDirectory = join(HOME_DIRECTORY, ".codex", "skills", SKILL_NAME);
160155
writeSkillFiles(skillDirectory);

packages/react-doctor/tests/discover-project.test.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import path from "node:path";
22
import { describe, expect, it } from "vitest";
3-
import { discoverProject, formatFrameworkName } from "../src/utils/discover-project.js";
3+
import {
4+
discoverProject,
5+
formatFrameworkName,
6+
listWorkspacePackages,
7+
} from "../src/utils/discover-project.js";
48

59
const FIXTURES_DIRECTORY = path.resolve(import.meta.dirname, "fixtures");
610
const VALID_FRAMEWORKS = ["nextjs", "vite", "cra", "remix", "gatsby", "unknown"];
@@ -31,6 +35,17 @@ describe("discoverProject", () => {
3135
});
3236
});
3337

38+
describe("listWorkspacePackages", () => {
39+
it("resolves nested workspace patterns like apps/*/ClientApp", () => {
40+
const packages = listWorkspacePackages(path.join(FIXTURES_DIRECTORY, "nested-workspaces"));
41+
const packageNames = packages.map((workspacePackage) => workspacePackage.name);
42+
43+
expect(packageNames).toContain("my-app-client");
44+
expect(packageNames).toContain("ui");
45+
expect(packages).toHaveLength(2);
46+
});
47+
});
48+
3449
describe("formatFrameworkName", () => {
3550
it("formats known frameworks", () => {
3651
expect(formatFrameworkName("nextjs")).toBe("Next.js");
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"name": "my-app-client",
3+
"dependencies": {
4+
"react": "^19.0.0",
5+
"react-dom": "^19.0.0"
6+
}
7+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"name": "nested-workspaces-fixture",
3+
"private": true,
4+
"workspaces": [
5+
"apps/*/ClientApp",
6+
"packages/*"
7+
]
8+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"name": "ui",
3+
"dependencies": {
4+
"react": "^19.0.0"
5+
}
6+
}

0 commit comments

Comments
 (0)