Skip to content

Commit d10f069

Browse files
authored
Merge pull request storybookjs#31510 from storybookjs/norbert/fix-telemetry-projectjson-generation
Telemetry: Fix `project.json` for getAbsolutePath
2 parents 51ff6d3 + f4d0b1e commit d10f069

2 files changed

Lines changed: 34 additions & 11 deletions

File tree

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import { readFile } from 'node:fs/promises';
22
import { join } from 'node:path';
33

4+
import { findUp } from 'find-up';
5+
import type { PackageJson } from 'type-fest';
6+
47
import type { Dependency } from './types';
58

69
export const getActualPackageVersions = async (packages: Record<string, Partial<Dependency>>) => {
@@ -12,22 +15,33 @@ export const getActualPackageVersion = async (packageName: string) => {
1215
try {
1316
const packageJson = await getActualPackageJson(packageName);
1417
return {
15-
name: packageName,
16-
version: packageJson.version,
18+
name: packageJson?.name || packageName,
19+
version: packageJson?.version || null,
1720
};
1821
} catch (err) {
19-
return { name: packageName, version: null };
22+
return {
23+
name: packageName,
24+
version: null,
25+
};
2026
}
2127
};
2228

23-
export const getActualPackageJson = async (packageName: string) => {
29+
export const getActualPackageJson = async (
30+
packageName: string
31+
): Promise<PackageJson | undefined> => {
2432
try {
25-
const resolvedPackageJson = require.resolve(join(packageName, 'package.json'), {
26-
paths: [process.cwd()],
27-
});
33+
let resolvedPackageJson = await findUp('package.json', { cwd: require.resolve(packageName) });
34+
35+
if (!resolvedPackageJson) {
36+
// fallback to require.resolve
37+
resolvedPackageJson = require.resolve(join(packageName, 'package.json'), {
38+
paths: [process.cwd()],
39+
});
40+
}
41+
2842
const packageJson = JSON.parse(await readFile(resolvedPackageJson, { encoding: 'utf8' }));
2943
return packageJson;
3044
} catch (err) {
31-
return null;
45+
return undefined;
3246
}
3347
};

code/core/src/telemetry/storybook-metadata.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ export const computeStorybookMetadata = async ({
7878
metadata.metaFramework = {
7979
name: metaFrameworks[metaFramework],
8080
packageName: metaFramework,
81-
version,
81+
version: version || 'unknown',
8282
};
8383
}
8484

@@ -192,7 +192,11 @@ export const computeStorybookMetadata = async ({
192192

193193
const addonVersions = await getActualPackageVersions(addons);
194194
addonVersions.forEach(({ name, version }) => {
195-
addons[name].version = version;
195+
addons[name] = addons[name] || {
196+
name,
197+
version,
198+
};
199+
addons[name].version = version || undefined;
196200
});
197201

198202
const addonNames = Object.keys(addons);
@@ -209,7 +213,12 @@ export const computeStorybookMetadata = async ({
209213

210214
const storybookPackageVersions = await getActualPackageVersions(storybookPackages);
211215
storybookPackageVersions.forEach(({ name, version }) => {
212-
storybookPackages[name].version = version;
216+
storybookPackages[name] = storybookPackages[name] || {
217+
name,
218+
version,
219+
};
220+
221+
storybookPackages[name].version = version || undefined;
213222
});
214223

215224
const hasStorybookEslint = !!allDependencies['eslint-plugin-storybook'];

0 commit comments

Comments
 (0)