From 0f4d2c37466be69875e2c00eea06462b4f421e51 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Fri, 10 May 2024 14:27:59 +0200 Subject: [PATCH] Fix typing for main.framework/builder fields --- code/frameworks/angular/src/types.ts | 5 +++-- code/frameworks/ember/src/types.ts | 5 +++-- code/frameworks/html-vite/package.json | 1 + code/frameworks/html-vite/src/types.ts | 6 +++--- code/frameworks/html-webpack5/package.json | 1 + code/frameworks/html-webpack5/src/types.ts | 5 +++-- code/frameworks/nextjs/src/types.ts | 5 +++-- code/frameworks/preact-vite/package.json | 3 ++- code/frameworks/preact-vite/src/types.ts | 6 +++--- code/frameworks/preact-webpack5/package.json | 1 + code/frameworks/preact-webpack5/src/types.ts | 5 +++-- code/frameworks/react-vite/package.json | 1 + code/frameworks/react-vite/src/types.ts | 5 +++-- code/frameworks/react-webpack5/package.json | 1 + code/frameworks/react-webpack5/src/types.ts | 5 +++-- code/frameworks/server-webpack5/package.json | 1 + code/frameworks/server-webpack5/src/types.ts | 5 +++-- code/frameworks/svelte-vite/package.json | 1 + code/frameworks/svelte-vite/src/types.ts | 6 +++--- code/frameworks/svelte-webpack5/package.json | 3 ++- code/frameworks/svelte-webpack5/src/types.ts | 5 +++-- code/frameworks/sveltekit/package.json | 3 ++- code/frameworks/sveltekit/src/types.ts | 6 +++--- code/frameworks/vue3-vite/package.json | 1 + code/frameworks/vue3-vite/src/types.ts | 6 +++--- code/frameworks/vue3-webpack5/package.json | 1 + code/frameworks/vue3-webpack5/src/types.ts | 5 +++-- code/frameworks/web-components-vite/package.json | 1 + code/frameworks/web-components-vite/src/types.ts | 6 +++--- .../web-components-webpack5/package.json | 1 + .../web-components-webpack5/src/types.ts | 5 +++-- code/lib/types/src/modules/core-common.ts | 12 ++++++++++++ code/yarn.lock | 14 ++++++++++++++ 33 files changed, 94 insertions(+), 43 deletions(-) diff --git a/code/frameworks/angular/src/types.ts b/code/frameworks/angular/src/types.ts index 926213e222b6..a965368eaf94 100644 --- a/code/frameworks/angular/src/types.ts +++ b/code/frameworks/angular/src/types.ts @@ -7,9 +7,10 @@ import { BuilderOptions, TypescriptOptions as TypescriptOptionsBuilder, } from '@storybook/builder-webpack5'; +import { CompatibleString } from '@storybook/types'; -type FrameworkName = '@storybook/angular'; -type BuilderName = '@storybook/builder-webpack5'; +type FrameworkName = CompatibleString<'@storybook/angular'>; +type BuilderName = CompatibleString<'@storybook/builder-webpack5'>; export type FrameworkOptions = AngularOptions & { builder?: BuilderOptions; diff --git a/code/frameworks/ember/src/types.ts b/code/frameworks/ember/src/types.ts index 2c2605f286af..6106e1391199 100644 --- a/code/frameworks/ember/src/types.ts +++ b/code/frameworks/ember/src/types.ts @@ -7,9 +7,10 @@ import type { BuilderOptions, TypescriptOptions as TypescriptOptionsBuilder, } from '@storybook/builder-webpack5'; +import type { CompatibleString } from '@storybook/types'; -type FrameworkName = '@storybook/ember-webpack5'; -type BuilderName = '@storybook/builder-webpack5'; +type FrameworkName = CompatibleString<'@storybook/ember-webpack5'>; +type BuilderName = CompatibleString<'@storybook/builder-webpack5'>; export type FrameworkOptions = { builder?: BuilderOptions; diff --git a/code/frameworks/html-vite/package.json b/code/frameworks/html-vite/package.json index 0259b2243c6c..fc90c1720959 100644 --- a/code/frameworks/html-vite/package.json +++ b/code/frameworks/html-vite/package.json @@ -51,6 +51,7 @@ "@storybook/core-server": "workspace:*", "@storybook/html": "workspace:*", "@storybook/node-logger": "workspace:*", + "@storybook/types": "workspace:*", "magic-string": "^0.30.0" }, "devDependencies": { diff --git a/code/frameworks/html-vite/src/types.ts b/code/frameworks/html-vite/src/types.ts index db508a143b53..d25f61997d14 100644 --- a/code/frameworks/html-vite/src/types.ts +++ b/code/frameworks/html-vite/src/types.ts @@ -1,8 +1,8 @@ -import type { StorybookConfig as StorybookConfigBase } from '@storybook/types'; +import type { StorybookConfig as StorybookConfigBase, CompatibleString } from '@storybook/types'; import type { StorybookConfigVite, BuilderOptions } from '@storybook/builder-vite'; -type FrameworkName = '@storybook/html-vite'; -type BuilderName = '@storybook/builder-vite'; +type FrameworkName = CompatibleString<'@storybook/html-vite'>; +type BuilderName = CompatibleString<'@storybook/builder-vite'>; export type FrameworkOptions = { builder?: BuilderOptions; diff --git a/code/frameworks/html-webpack5/package.json b/code/frameworks/html-webpack5/package.json index 80a5a0e1047c..1a36ee920782 100644 --- a/code/frameworks/html-webpack5/package.json +++ b/code/frameworks/html-webpack5/package.json @@ -52,6 +52,7 @@ "@storybook/global": "^5.0.0", "@storybook/html": "workspace:*", "@storybook/preset-html-webpack": "workspace:*", + "@storybook/types": "workspace:*", "@types/node": "^18.0.0" }, "devDependencies": { diff --git a/code/frameworks/html-webpack5/src/types.ts b/code/frameworks/html-webpack5/src/types.ts index 2360ef4ac9e6..eb0fa25b9ebd 100644 --- a/code/frameworks/html-webpack5/src/types.ts +++ b/code/frameworks/html-webpack5/src/types.ts @@ -7,9 +7,10 @@ import type { BuilderOptions, TypescriptOptions as TypescriptOptionsBuilder, } from '@storybook/builder-webpack5'; +import type { CompatibleString } from '@storybook/types'; -type FrameworkName = '@storybook/html-webpack5'; -type BuilderName = '@storybook/builder-webpack5'; +type FrameworkName = CompatibleString<'@storybook/html-webpack5'>; +type BuilderName = CompatibleString<'@storybook/builder-webpack5'>; export type FrameworkOptions = { builder?: BuilderOptions; diff --git a/code/frameworks/nextjs/src/types.ts b/code/frameworks/nextjs/src/types.ts index 4707d03d27e8..ea6dc8eb3991 100644 --- a/code/frameworks/nextjs/src/types.ts +++ b/code/frameworks/nextjs/src/types.ts @@ -8,9 +8,10 @@ import type { BuilderOptions, TypescriptOptions as TypescriptOptionsBuilder, } from '@storybook/builder-webpack5'; +import type { CompatibleString } from '@storybook/types'; -type FrameworkName = '@storybook/nextjs'; -type BuilderName = '@storybook/builder-webpack5'; +type FrameworkName = CompatibleString<'@storybook/nextjs'>; +type BuilderName = CompatibleString<'@storybook/builder-webpack5'>; export type FrameworkOptions = ReactOptions & { nextConfigPath?: string; diff --git a/code/frameworks/preact-vite/package.json b/code/frameworks/preact-vite/package.json index 0a7ed32946c8..4a33e29ee232 100644 --- a/code/frameworks/preact-vite/package.json +++ b/code/frameworks/preact-vite/package.json @@ -48,7 +48,8 @@ }, "dependencies": { "@storybook/builder-vite": "workspace:*", - "@storybook/preact": "workspace:*" + "@storybook/preact": "workspace:*", + "@storybook/types": "workspace:*" }, "devDependencies": { "@types/node": "^18.0.0", diff --git a/code/frameworks/preact-vite/src/types.ts b/code/frameworks/preact-vite/src/types.ts index d654f5e13bbc..36481753d4e5 100644 --- a/code/frameworks/preact-vite/src/types.ts +++ b/code/frameworks/preact-vite/src/types.ts @@ -1,8 +1,8 @@ -import type { StorybookConfig as StorybookConfigBase } from '@storybook/types'; +import type { CompatibleString, StorybookConfig as StorybookConfigBase } from '@storybook/types'; import type { StorybookConfigVite, BuilderOptions } from '@storybook/builder-vite'; -type FrameworkName = '@storybook/preact-vite'; -type BuilderName = '@storybook/builder-vite'; +type FrameworkName = CompatibleString<'@storybook/preact-vite'>; +type BuilderName = CompatibleString<'@storybook/builder-vite'>; export type FrameworkOptions = { builder?: BuilderOptions; diff --git a/code/frameworks/preact-webpack5/package.json b/code/frameworks/preact-webpack5/package.json index 16375a2cc543..a12c74b18b65 100644 --- a/code/frameworks/preact-webpack5/package.json +++ b/code/frameworks/preact-webpack5/package.json @@ -51,6 +51,7 @@ "@storybook/core-common": "workspace:*", "@storybook/preact": "workspace:*", "@storybook/preset-preact-webpack": "workspace:*", + "@storybook/types": "workspace:*", "@types/node": "^18.0.0" }, "devDependencies": { diff --git a/code/frameworks/preact-webpack5/src/types.ts b/code/frameworks/preact-webpack5/src/types.ts index 2d66b8576166..cad7d38ac6c2 100644 --- a/code/frameworks/preact-webpack5/src/types.ts +++ b/code/frameworks/preact-webpack5/src/types.ts @@ -7,9 +7,10 @@ import type { BuilderOptions, TypescriptOptions as TypescriptOptionsBuilder, } from '@storybook/builder-webpack5'; +import type { CompatibleString } from '@storybook/types'; -type FrameworkName = '@storybook/preact-webpack5'; -type BuilderName = '@storybook/builder-webpack5'; +type FrameworkName = CompatibleString<'@storybook/preact-webpack5'>; +type BuilderName = CompatibleString<'@storybook/builder-webpack5'>; export type FrameworkOptions = { builder?: BuilderOptions; diff --git a/code/frameworks/react-vite/package.json b/code/frameworks/react-vite/package.json index 88a26512fe67..6ac9f1f43c98 100644 --- a/code/frameworks/react-vite/package.json +++ b/code/frameworks/react-vite/package.json @@ -52,6 +52,7 @@ "@storybook/builder-vite": "workspace:*", "@storybook/node-logger": "workspace:*", "@storybook/react": "workspace:*", + "@storybook/types": "workspace:*", "find-up": "^5.0.0", "magic-string": "^0.30.0", "react-docgen": "^7.0.0", diff --git a/code/frameworks/react-vite/src/types.ts b/code/frameworks/react-vite/src/types.ts index 2499ae4bf93a..79c704f1e914 100644 --- a/code/frameworks/react-vite/src/types.ts +++ b/code/frameworks/react-vite/src/types.ts @@ -1,12 +1,13 @@ import type { + CompatibleString, StorybookConfig as StorybookConfigBase, TypescriptOptions as TypescriptOptionsBase, } from '@storybook/types'; import type { StorybookConfigVite, BuilderOptions } from '@storybook/builder-vite'; import type docgenTypescript from '@joshwooding/vite-plugin-react-docgen-typescript'; -type FrameworkName = '@storybook/react-vite'; -type BuilderName = '@storybook/builder-vite'; +type FrameworkName = CompatibleString<'@storybook/react-vite'>; +type BuilderName = CompatibleString<'@storybook/builder-vite'>; export type FrameworkOptions = { builder?: BuilderOptions; diff --git a/code/frameworks/react-webpack5/package.json b/code/frameworks/react-webpack5/package.json index 0aa5b01d41a0..9a4343437b58 100644 --- a/code/frameworks/react-webpack5/package.json +++ b/code/frameworks/react-webpack5/package.json @@ -50,6 +50,7 @@ "@storybook/builder-webpack5": "workspace:*", "@storybook/preset-react-webpack": "workspace:*", "@storybook/react": "workspace:*", + "@storybook/types": "workspace:*", "@types/node": "^18.0.0" }, "peerDependencies": { diff --git a/code/frameworks/react-webpack5/src/types.ts b/code/frameworks/react-webpack5/src/types.ts index 7e50ef23aba4..fa5a70f8f444 100644 --- a/code/frameworks/react-webpack5/src/types.ts +++ b/code/frameworks/react-webpack5/src/types.ts @@ -8,9 +8,10 @@ import type { BuilderOptions, TypescriptOptions as TypescriptOptionsBuilder, } from '@storybook/builder-webpack5'; +import type { CompatibleString } from '@storybook/types'; -type FrameworkName = '@storybook/react-webpack5'; -type BuilderName = '@storybook/builder-webpack5'; +type FrameworkName = CompatibleString<'@storybook/react-webpack5'>; +type BuilderName = CompatibleString<'@storybook/builder-webpack5'>; export type FrameworkOptions = ReactOptions & { builder?: BuilderOptions; diff --git a/code/frameworks/server-webpack5/package.json b/code/frameworks/server-webpack5/package.json index 3845a8be724d..3a9c61006a5e 100644 --- a/code/frameworks/server-webpack5/package.json +++ b/code/frameworks/server-webpack5/package.json @@ -51,6 +51,7 @@ "@storybook/core-common": "workspace:*", "@storybook/preset-server-webpack": "workspace:*", "@storybook/server": "workspace:*", + "@storybook/types": "workspace:*", "@types/node": "^18.0.0" }, "devDependencies": { diff --git a/code/frameworks/server-webpack5/src/types.ts b/code/frameworks/server-webpack5/src/types.ts index 63ecb28ab897..1374b9788c61 100644 --- a/code/frameworks/server-webpack5/src/types.ts +++ b/code/frameworks/server-webpack5/src/types.ts @@ -7,9 +7,10 @@ import type { BuilderOptions, TypescriptOptions as TypescriptOptionsBuilder, } from '@storybook/builder-webpack5'; +import type { CompatibleString } from '@storybook/types'; -type FrameworkName = '@storybook/server-webpack5'; -type BuilderName = '@storybook/builder-webpack5'; +type FrameworkName = CompatibleString<'@storybook/server-webpack5'>; +type BuilderName = CompatibleString<'@storybook/builder-webpack5'>; export type FrameworkOptions = { builder?: BuilderOptions; diff --git a/code/frameworks/svelte-vite/package.json b/code/frameworks/svelte-vite/package.json index f17010efe7bd..2daf5682a5f0 100644 --- a/code/frameworks/svelte-vite/package.json +++ b/code/frameworks/svelte-vite/package.json @@ -50,6 +50,7 @@ "@storybook/builder-vite": "workspace:*", "@storybook/node-logger": "workspace:*", "@storybook/svelte": "workspace:*", + "@storybook/types": "workspace:*", "magic-string": "^0.30.0", "svelte-preprocess": "^5.1.1", "sveltedoc-parser": "^4.2.1", diff --git a/code/frameworks/svelte-vite/src/types.ts b/code/frameworks/svelte-vite/src/types.ts index 8d4ccb8cc9cb..6fe0c01de2c3 100644 --- a/code/frameworks/svelte-vite/src/types.ts +++ b/code/frameworks/svelte-vite/src/types.ts @@ -1,8 +1,8 @@ -import type { StorybookConfig as StorybookConfigBase } from '@storybook/types'; +import type { CompatibleString, StorybookConfig as StorybookConfigBase } from '@storybook/types'; import type { StorybookConfigVite, BuilderOptions } from '@storybook/builder-vite'; -type FrameworkName = '@storybook/svelte-vite'; -type BuilderName = '@storybook/builder-vite'; +type FrameworkName = CompatibleString<'@storybook/svelte-vite'>; +type BuilderName = CompatibleString<'@storybook/builder-vite'>; export type FrameworkOptions = { builder?: BuilderOptions; diff --git a/code/frameworks/svelte-webpack5/package.json b/code/frameworks/svelte-webpack5/package.json index 9c6831d984b8..f2b91d590211 100644 --- a/code/frameworks/svelte-webpack5/package.json +++ b/code/frameworks/svelte-webpack5/package.json @@ -50,7 +50,8 @@ "@storybook/builder-webpack5": "workspace:*", "@storybook/core-common": "workspace:*", "@storybook/preset-svelte-webpack": "workspace:*", - "@storybook/svelte": "workspace:*" + "@storybook/svelte": "workspace:*", + "@storybook/types": "workspace:*" }, "devDependencies": { "svelte": "^4.0.0", diff --git a/code/frameworks/svelte-webpack5/src/types.ts b/code/frameworks/svelte-webpack5/src/types.ts index d5c0578faa32..6c285d94caa9 100644 --- a/code/frameworks/svelte-webpack5/src/types.ts +++ b/code/frameworks/svelte-webpack5/src/types.ts @@ -8,9 +8,10 @@ import type { BuilderOptions, TypescriptOptions as TypescriptOptionsBuilder, } from '@storybook/builder-webpack5'; +import type { CompatibleString } from '@storybook/types'; -type FrameworkName = '@storybook/svelte-webpack5'; -type BuilderName = '@storybook/builder-webpack5'; +type FrameworkName = CompatibleString<'@storybook/svelte-webpack5'>; +type BuilderName = CompatibleString<'@storybook/builder-webpack5'>; export type FrameworkOptions = SvelteOptions & { builder?: BuilderOptions; diff --git a/code/frameworks/sveltekit/package.json b/code/frameworks/sveltekit/package.json index e46165e15b7b..c0bfa5bf90f9 100644 --- a/code/frameworks/sveltekit/package.json +++ b/code/frameworks/sveltekit/package.json @@ -56,7 +56,8 @@ "@storybook/addon-actions": "workspace:*", "@storybook/builder-vite": "workspace:*", "@storybook/svelte": "workspace:*", - "@storybook/svelte-vite": "workspace:*" + "@storybook/svelte-vite": "workspace:*", + "@storybook/types": "workspace:*" }, "devDependencies": { "@types/node": "^18.0.0", diff --git a/code/frameworks/sveltekit/src/types.ts b/code/frameworks/sveltekit/src/types.ts index c3f04a22bc82..a41c333ccc5f 100644 --- a/code/frameworks/sveltekit/src/types.ts +++ b/code/frameworks/sveltekit/src/types.ts @@ -1,10 +1,10 @@ import type { BuilderOptions, StorybookConfigVite } from '@storybook/builder-vite'; -import type { StorybookConfig as StorybookConfigBase } from '@storybook/types'; +import type { CompatibleString, StorybookConfig as StorybookConfigBase } from '@storybook/types'; import type { enhance } from './mocks/app/forms'; import type { goto, invalidate, invalidateAll } from './mocks/app/navigation'; -type FrameworkName = '@storybook/sveltekit'; -type BuilderName = '@storybook/builder-vite'; +type FrameworkName = CompatibleString<'@storybook/sveltekit'>; +type BuilderName = CompatibleString<'@storybook/builder-vite'>; export type FrameworkOptions = { builder?: BuilderOptions; diff --git a/code/frameworks/vue3-vite/package.json b/code/frameworks/vue3-vite/package.json index c9755ddbd93f..4f7fbc76a63e 100644 --- a/code/frameworks/vue3-vite/package.json +++ b/code/frameworks/vue3-vite/package.json @@ -49,6 +49,7 @@ "dependencies": { "@storybook/builder-vite": "workspace:*", "@storybook/core-server": "workspace:*", + "@storybook/types": "workspace:*", "@storybook/vue3": "workspace:*", "find-package-json": "^1.2.0", "magic-string": "^0.30.0", diff --git a/code/frameworks/vue3-vite/src/types.ts b/code/frameworks/vue3-vite/src/types.ts index 4b77d28e7a94..875e29ab4e42 100644 --- a/code/frameworks/vue3-vite/src/types.ts +++ b/code/frameworks/vue3-vite/src/types.ts @@ -1,10 +1,10 @@ import type { BuilderOptions, StorybookConfigVite } from '@storybook/builder-vite'; -import type { StorybookConfig as StorybookConfigBase } from '@storybook/types'; +import type { CompatibleString, StorybookConfig as StorybookConfigBase } from '@storybook/types'; import type { ComponentMeta } from 'vue-component-meta'; import type { ComponentDoc } from 'vue-docgen-api'; -type FrameworkName = '@storybook/vue3-vite'; -type BuilderName = '@storybook/builder-vite'; +type FrameworkName = CompatibleString<'@storybook/vue3-vite'>; +type BuilderName = CompatibleString<'@storybook/builder-vite'>; /** * Available docgen plugins for vue. diff --git a/code/frameworks/vue3-webpack5/package.json b/code/frameworks/vue3-webpack5/package.json index a3774bbdb416..0af94bc2f88a 100644 --- a/code/frameworks/vue3-webpack5/package.json +++ b/code/frameworks/vue3-webpack5/package.json @@ -50,6 +50,7 @@ "@storybook/builder-webpack5": "workspace:*", "@storybook/core-common": "workspace:*", "@storybook/preset-vue3-webpack": "workspace:*", + "@storybook/types": "workspace:*", "@storybook/vue3": "workspace:*", "@types/node": "^18.0.0" }, diff --git a/code/frameworks/vue3-webpack5/src/types.ts b/code/frameworks/vue3-webpack5/src/types.ts index bdae08526600..9c9352eabfda 100644 --- a/code/frameworks/vue3-webpack5/src/types.ts +++ b/code/frameworks/vue3-webpack5/src/types.ts @@ -7,9 +7,10 @@ import type { BuilderOptions, TypescriptOptions as TypescriptOptionsBuilder, } from '@storybook/builder-webpack5'; +import type { CompatibleString } from '@storybook/types'; -type FrameworkName = '@storybook/vue3-webpack5'; -type BuilderName = '@storybook/builder-webpack5'; +type FrameworkName = CompatibleString<'@storybook/vue3-webpack5'>; +type BuilderName = CompatibleString<'@storybook/builder-webpack5'>; export type FrameworkOptions = { builder?: BuilderOptions; diff --git a/code/frameworks/web-components-vite/package.json b/code/frameworks/web-components-vite/package.json index 5171a179be6e..b65b922dd768 100644 --- a/code/frameworks/web-components-vite/package.json +++ b/code/frameworks/web-components-vite/package.json @@ -50,6 +50,7 @@ "@storybook/builder-vite": "workspace:*", "@storybook/core-server": "workspace:*", "@storybook/node-logger": "workspace:*", + "@storybook/types": "workspace:*", "@storybook/web-components": "workspace:*", "magic-string": "^0.30.0" }, diff --git a/code/frameworks/web-components-vite/src/types.ts b/code/frameworks/web-components-vite/src/types.ts index 25fd697cb4b3..a43eaabd3161 100644 --- a/code/frameworks/web-components-vite/src/types.ts +++ b/code/frameworks/web-components-vite/src/types.ts @@ -1,8 +1,8 @@ -import type { StorybookConfig as StorybookConfigBase } from '@storybook/types'; +import type { CompatibleString, StorybookConfig as StorybookConfigBase } from '@storybook/types'; import type { StorybookConfigVite, BuilderOptions } from '@storybook/builder-vite'; -type FrameworkName = '@storybook/web-components-vite'; -type BuilderName = '@storybook/builder-vite'; +type FrameworkName = CompatibleString<'@storybook/web-components-vite'>; +type BuilderName = CompatibleString<'@storybook/builder-vite'>; export type FrameworkOptions = { builder?: BuilderOptions; diff --git a/code/frameworks/web-components-webpack5/package.json b/code/frameworks/web-components-webpack5/package.json index 9b0cac47c528..f7c6d265bb55 100644 --- a/code/frameworks/web-components-webpack5/package.json +++ b/code/frameworks/web-components-webpack5/package.json @@ -52,6 +52,7 @@ "dependencies": { "@storybook/builder-webpack5": "workspace:*", "@storybook/core-common": "workspace:*", + "@storybook/types": "workspace:*", "@storybook/web-components": "workspace:*", "@types/node": "^18.0.0" }, diff --git a/code/frameworks/web-components-webpack5/src/types.ts b/code/frameworks/web-components-webpack5/src/types.ts index 01442d08f08a..265b605772c8 100644 --- a/code/frameworks/web-components-webpack5/src/types.ts +++ b/code/frameworks/web-components-webpack5/src/types.ts @@ -1,4 +1,5 @@ import type { + CompatibleString, StorybookConfig as StorybookConfigBase, TypescriptOptions as TypescriptOptionsWebComponents, } from '@storybook/types'; @@ -8,8 +9,8 @@ import type { TypescriptOptions as TypescriptOptionsBuilder, } from '@storybook/builder-webpack5'; -type FrameworkName = '@storybook/web-components-webpack5'; -type BuilderName = '@storybook/builder-webpack5'; +type FrameworkName = CompatibleString<'@storybook/web-components-webpack5'>; +type BuilderName = CompatibleString<'@storybook/builder-webpack5'>; export type FrameworkOptions = { builder?: BuilderOptions; diff --git a/code/lib/types/src/modules/core-common.ts b/code/lib/types/src/modules/core-common.ts index 9a3106931053..f16ef638cbf4 100644 --- a/code/lib/types/src/modules/core-common.ts +++ b/code/lib/types/src/modules/core-common.ts @@ -571,3 +571,15 @@ export interface CoreCommon_StorybookInfo { previewConfig?: string; managerConfig?: string; } + +/** + * Given a generic string type, returns that type but ensures that a string in general is compatible with it. + * We use this construct to ensure that IDEs can provide better autocompletion for string types. + * This is, for example, needed for main config fields, where we want to ensure that the user can provide + * a custom string, but also a string that is compatible with the type. + * @example + * type Framework = CompatibleString<'@storybook/nextjs'> + * const framework: Framework = '@storybook/nextjs'; // valid and will be autocompleted + * const framework: Framework = path.dirname(require.resolve(path.join("@storybook/nextjs", "package.json"))) // valid + */ +export type CompatibleString = T | (string & Record); diff --git a/code/yarn.lock b/code/yarn.lock index 484803b29c7c..804e49a654fc 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -6152,6 +6152,7 @@ __metadata: "@storybook/core-server": "workspace:*" "@storybook/html": "workspace:*" "@storybook/node-logger": "workspace:*" + "@storybook/types": "workspace:*" "@types/node": "npm:^18.0.0" magic-string: "npm:^0.30.0" typescript: "npm:^5.3.2" @@ -6167,6 +6168,7 @@ __metadata: "@storybook/global": "npm:^5.0.0" "@storybook/html": "workspace:*" "@storybook/preset-html-webpack": "workspace:*" + "@storybook/types": "workspace:*" "@types/node": "npm:^18.0.0" typescript: "npm:^5.3.2" languageName: unknown @@ -6406,6 +6408,7 @@ __metadata: dependencies: "@storybook/builder-vite": "workspace:*" "@storybook/preact": "workspace:*" + "@storybook/types": "workspace:*" "@types/node": "npm:^18.0.0" typescript: "npm:^5.3.2" vite: "npm:^4.0.0" @@ -6423,6 +6426,7 @@ __metadata: "@storybook/core-common": "workspace:*" "@storybook/preact": "workspace:*" "@storybook/preset-preact-webpack": "workspace:*" + "@storybook/types": "workspace:*" "@types/node": "npm:^18.0.0" preact: "npm:^10.5.13" typescript: "npm:^5.3.2" @@ -6651,6 +6655,7 @@ __metadata: "@storybook/builder-vite": "workspace:*" "@storybook/node-logger": "workspace:*" "@storybook/react": "workspace:*" + "@storybook/types": "workspace:*" "@types/node": "npm:^18.0.0" find-up: "npm:^5.0.0" magic-string: "npm:^0.30.0" @@ -6673,6 +6678,7 @@ __metadata: "@storybook/builder-webpack5": "workspace:*" "@storybook/preset-react-webpack": "workspace:*" "@storybook/react": "workspace:*" + "@storybook/types": "workspace:*" "@types/node": "npm:^18.0.0" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta @@ -6913,6 +6919,7 @@ __metadata: "@storybook/core-common": "workspace:*" "@storybook/preset-server-webpack": "workspace:*" "@storybook/server": "workspace:*" + "@storybook/types": "workspace:*" "@types/node": "npm:^18.0.0" typescript: "npm:^5.3.2" languageName: unknown @@ -6955,6 +6962,7 @@ __metadata: "@storybook/builder-vite": "workspace:*" "@storybook/node-logger": "workspace:*" "@storybook/svelte": "workspace:*" + "@storybook/types": "workspace:*" "@sveltejs/vite-plugin-svelte": "npm:^3.0.1" "@types/node": "npm:^18.0.0" magic-string: "npm:^0.30.0" @@ -6979,6 +6987,7 @@ __metadata: "@storybook/core-common": "workspace:*" "@storybook/preset-svelte-webpack": "workspace:*" "@storybook/svelte": "workspace:*" + "@storybook/types": "workspace:*" svelte: "npm:^4.0.0" svelte-loader: "npm:^3.1.9" typescript: "npm:^5.3.2" @@ -7023,6 +7032,7 @@ __metadata: "@storybook/builder-vite": "workspace:*" "@storybook/svelte": "workspace:*" "@storybook/svelte-vite": "workspace:*" + "@storybook/types": "workspace:*" "@types/node": "npm:^18.0.0" typescript: "npm:^5.3.2" vite: "npm:^4.0.0" @@ -7133,6 +7143,7 @@ __metadata: dependencies: "@storybook/builder-vite": "workspace:*" "@storybook/core-server": "workspace:*" + "@storybook/types": "workspace:*" "@storybook/vue3": "workspace:*" "@types/find-package-json": "npm:^1.2.6" "@types/node": "npm:^18.0.0" @@ -7154,6 +7165,7 @@ __metadata: "@storybook/builder-webpack5": "workspace:*" "@storybook/core-common": "workspace:*" "@storybook/preset-vue3-webpack": "workspace:*" + "@storybook/types": "workspace:*" "@storybook/vue3": "workspace:*" "@types/node": "npm:^18.0.0" "@vue/compiler-sfc": "npm:3.0.0" @@ -7197,6 +7209,7 @@ __metadata: "@storybook/builder-vite": "workspace:*" "@storybook/core-server": "workspace:*" "@storybook/node-logger": "workspace:*" + "@storybook/types": "workspace:*" "@storybook/web-components": "workspace:*" "@types/node": "npm:^18.0.0" magic-string: "npm:^0.30.0" @@ -7210,6 +7223,7 @@ __metadata: dependencies: "@storybook/builder-webpack5": "workspace:*" "@storybook/core-common": "workspace:*" + "@storybook/types": "workspace:*" "@storybook/web-components": "workspace:*" "@types/node": "npm:^18.0.0" lit: "npm:2.3.1"