Skip to content

Commit b1f195f

Browse files
authored
Merge pull request #128 from storybookjs/fix-feature-detect
Fix manifest detection for Storybook versions lower than `10.2.0-alpha.10`
2 parents cd073ac + 20d97e2 commit b1f195f

3 files changed

Lines changed: 30 additions & 5 deletions

File tree

.changeset/tricky-rabbits-rush.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@storybook/addon-mcp': patch
3+
---
4+
5+
Fix disabled docs toolset in Storybook version prior to v10.2.0-alpha.10

packages/addon-mcp/src/tools/is-manifest-available.test.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ import type { Options } from 'storybook/internal/types';
55
function createMockOptions({
66
featureFlag = false,
77
hasManifests = false,
8+
hasLegacyComponentManifestGenerator = false,
89
hasFeaturesObject = true,
910
}: {
1011
featureFlag?: boolean;
1112
hasManifests?: boolean;
13+
hasLegacyComponentManifestGenerator?: boolean;
1214
hasFeaturesObject?: boolean;
1315
} = {}): Options {
1416
return {
@@ -20,7 +22,12 @@ function createMockOptions({
2022
: {};
2123
}
2224
if (key === 'experimental_manifests') {
23-
return hasManifests ? vi.fn() : undefined;
25+
return hasManifests
26+
? { components: { v: 1, components: {} } }
27+
: undefined;
28+
}
29+
if (key === 'experimental_componentManifestGenerator') {
30+
return hasLegacyComponentManifestGenerator ? vi.fn() : undefined;
2431
}
2532
return undefined;
2633
}),
@@ -31,12 +38,18 @@ function createMockOptions({
3138
describe('getManifestStatus', () => {
3239
it.each([
3340
{
34-
description: 'both feature flag and generator are present',
41+
description: 'both feature flag and manifests are present',
3542
options: { featureFlag: true, hasManifests: true },
3643
expected: { available: true, hasManifests: true, hasFeatureFlag: true },
3744
},
3845
{
39-
description: 'missing generator (unsupported framework)',
46+
description:
47+
'both feature flag and legacy component manifest generator are present',
48+
options: { featureFlag: true, hasLegacyComponentManifestGenerator: true },
49+
expected: { available: true, hasManifests: true, hasFeatureFlag: true },
50+
},
51+
{
52+
description: 'missing manifests (unsupported framework)',
4053
options: { featureFlag: true, hasManifests: false },
4154
expected: { available: false, hasManifests: false, hasFeatureFlag: true },
4255
},

packages/addon-mcp/src/tools/is-manifest-available.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,21 @@ export type ManifestStatus = {
99
export const getManifestStatus = async (
1010
options: Options,
1111
): Promise<ManifestStatus> => {
12-
const [features, manifests] = await Promise.all([
12+
const [
13+
features,
14+
manifests,
15+
// Added for backwards compatibility with Storybook versions prior to v10.2.0-alpha.10
16+
// Should be removed once support for Storybook version < 10.2.0 is dropped
17+
legacyComponentManifestGenerator,
18+
] = await Promise.all([
1319
options.presets.apply('features') as any,
1420
options.presets.apply('experimental_manifests', undefined, {
1521
manifestEntries: [],
1622
}),
23+
options.presets.apply('experimental_componentManifestGenerator'),
1724
]);
1825

19-
const hasManifests = !!manifests;
26+
const hasManifests = !!manifests || !!legacyComponentManifestGenerator;
2027
const hasFeatureFlag = !!features?.experimentalComponentsManifest;
2128

2229
return {

0 commit comments

Comments
 (0)