Skip to content

Commit 8109652

Browse files
committed
fix: infer package types from snapshot data for old configs
1 parent 55c249f commit 8109652

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

src/routes/api/configs/[slug]/+server.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,28 @@ export const GET: RequestHandler = async ({ platform, cookies, params, request }
1515
const installUrl = config.alias ? `${env.APP_URL}/${config.alias}` : `${env.APP_URL}/${user.username}/${params.slug}/install`;
1616

1717
const rawPkgs = JSON.parse((config.packages as string) || '[]');
18-
const packages = rawPkgs.map((p: any) => typeof p === 'string' ? { name: p, type: 'formula' } : p);
18+
const needsTypeInference = rawPkgs.length > 0 && typeof rawPkgs[0] === 'string';
19+
20+
let caskSet = new Set<string>();
21+
if (needsTypeInference && config.snapshot) {
22+
try {
23+
const snapshot = JSON.parse(config.snapshot as string);
24+
const casks: string[] = snapshot.packages?.casks || [];
25+
for (const c of casks) {
26+
caskSet.add(c);
27+
}
28+
} catch {}
29+
}
30+
31+
const packages = rawPkgs.map((p: any) => {
32+
if (typeof p === 'string') {
33+
const parts = p.split('/');
34+
if (parts.length === 3) return { name: p, type: 'tap' };
35+
if (caskSet.has(p)) return { name: p, type: 'cask' };
36+
return { name: p, type: 'formula' };
37+
}
38+
return p;
39+
});
1940

2041
return json({
2142
config: {

0 commit comments

Comments
 (0)