Skip to content

Commit

Permalink
Add error on legacy Stories to display when legacyTemplate was not …
Browse files Browse the repository at this point in the history
…enabled
  • Loading branch information
xeho91 committed Jul 23, 2024
1 parent 7aae06f commit 34d0eac
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 3 deletions.
18 changes: 18 additions & 0 deletions ERRORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -341,3 +341,21 @@ It cannot be a shorthand or a dynamic value.
+ template="custom-template"
/>
```

### `SB_SVELTE_CSF_CODEMOD_0002`

You are using legacy template API, with deprecated components.\
To enable support for legacy API, tweak this addon options in your _(`./.storybook/main.(j|t)s`)_ file:

```diff
addons: [
// ... other addons
- '@storybook/addon-svelte-csf',
+ {
+ name: '@storybook/addon-svelte-csf',
+ options: {
+ legacyTemplate: true,
+ },
+ },
],
```
4 changes: 4 additions & 0 deletions src/runtime/LegacyMeta.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@
*/
import type { Meta } from '@storybook/svelte';
import { LegacyTemplateNotEnabledError } from '#utils/error/codemod/index';
interface Props extends Meta {}
let {}: Props = $props();
throw new LegacyTemplateNotEnabledError('Meta');
</script>
3 changes: 3 additions & 0 deletions src/runtime/LegacyStory.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import { type StoryRendererContext } from '#runtime/contexts/renderer.svelte';
import type { Meta } from '#types';
import { LegacyTemplateNotEnabledError } from '#utils/error/codemod/index';
type Props = ComponentProps<Story<EmptyObject, Component, Meta<Component>>> & {
/**
Expand All @@ -23,6 +24,8 @@
let { args }: Props = $props();
let context: StoryRendererContext['storyContext'];
throw new LegacyTemplateNotEnabledError('Story');
</script>

<slot {context} {args} />
9 changes: 6 additions & 3 deletions src/runtime/LegacyTemplate.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,15 @@
* E.g. to allow user still have typing experience.
* Vite pre-transform hook does codemod where this component gets transformed into Svelte v5 SnippetBlock.
*/
import { LegacyTemplateNotEnabledError } from '#utils/error/codemod/index';
import { type StoryRendererContext } from './contexts/renderer.svelte';
let id: string = 'default';
let args: StoryRendererContext['storyContext'];
let context: StoryRendererContext['args'];
export let id: string = 'default';
export let args: StoryRendererContext['storyContext'];
export let context: StoryRendererContext['args'];
throw new LegacyTemplateNotEnabledError('Template');
</script>

<slot {context} {args} />
21 changes: 21 additions & 0 deletions src/utils/error/codemod/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import pkg from '@storybook/addon-svelte-csf/package.json' with { type: 'json' };
import { StorybookSvelteCSFError } from '#utils/error';
import dedent from 'dedent';
import type { Attribute } from 'svelte/compiler';
Expand Down Expand Up @@ -28,3 +29,23 @@ export class InvalidTemplateAttribute extends StorybookSvelteCSFError {
`;
}
}

export class LegacyTemplateNotEnabledError extends StorybookSvelteCSFError {
readonly category = StorybookSvelteCSFError.CATEGORY.codemod;
readonly code = 2;
public documentation = true;

public componentName: string;

constructor(componentName: string) {
super({ filename: undefined });
this.componentName = componentName;
}

template(): string {
return dedent`
One of your stories file is using legacy API component - '<${this.componentName}>'.
To enable support for it, enable 'legacyTemplate' in "${pkg.name}" option.
`;
}
}

0 comments on commit 34d0eac

Please sign in to comment.