Skip to content

Commit 5330454

Browse files
committed
Merge branch 'next' of github.com:storybookjs/addon-svelte-csf into simplify-imports
2 parents 4538656 + acd17d1 commit 5330454

File tree

4 files changed

+36
-15
lines changed

4 files changed

+36
-15
lines changed

src/indexer/index.ts

+11-3
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@ import {
99
} from '$lib/utils/error/parser/extract/svelte.js';
1010
import { LegacyTemplateNotEnabledError } from '$lib/utils/error/legacy-api/index.js';
1111
import { NoDestructuredDefineMetaCallError } from '$lib/utils/error/parser/analyse/define-meta.js';
12+
import { isStorybookSvelteCSFError } from '$lib/utils/error.js';
1213

1314
export const createIndexer = (legacyTemplate: boolean): Indexer => ({
1415
test: /\.svelte$/,
1516
createIndex: async (filename, { makeTitle }) => {
1617
try {
17-
const { meta, stories } = await parseForIndexer(filename, { legacyTemplate });
18+
const { meta, stories } = await parseForIndexer(filename, {
19+
legacyTemplate,
20+
});
1821

1922
return stories.map((story) => {
2023
return {
@@ -36,10 +39,15 @@ export const createIndexer = (legacyTemplate: boolean): Indexer => ({
3639
error instanceof GetDefineMetaFirstArgumentError
3740
) {
3841
const { filename } = error;
39-
throw new LegacyTemplateNotEnabledError(filename);
42+
throw new LegacyTemplateNotEnabledError(filename, { cause: error });
43+
}
44+
45+
// WARN: We can't use `instanceof StorybookSvelteCSFError`, because is an _abstract_ class
46+
if (isStorybookSvelteCSFError(error)) {
47+
throw error;
4048
}
4149

42-
throw new IndexerParseError();
50+
throw new IndexerParseError({ cause: error });
4351
}
4452
},
4553
});

src/utils/error.ts

+21-9
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import type { SvelteAST } from '$lib/parser/ast.js';
1010
* and modified for this addon needs.
1111
*/
1212
export abstract class StorybookSvelteCSFError extends Error {
13+
public static isStorybookCSFSvelteError = true;
1314
public static packageName = pkg.name;
1415
public static packageVersion = pkg.version;
1516

@@ -80,7 +81,7 @@ export abstract class StorybookSvelteCSFError extends Error {
8081
* Generates the error message along with additional documentation link (if applicable).
8182
*/
8283
get message() {
83-
if(this.customMessage) {
84+
if (this.customMessage) {
8485
return this.customMessage;
8586
}
8687

@@ -115,15 +116,18 @@ export abstract class StorybookSvelteCSFError extends Error {
115116
*/
116117
readonly component?: SvelteAST.Component;
117118

118-
constructor({
119-
filename,
120-
component: component,
121-
}: {
122-
filename?: StorybookSvelteCSFError['filename'];
123-
component?: StorybookSvelteCSFError['component'];
124-
}) {
119+
constructor(
120+
{
121+
filename,
122+
component: component,
123+
}: {
124+
filename?: StorybookSvelteCSFError['filename'];
125+
component?: StorybookSvelteCSFError['component'];
126+
},
127+
options?: ConstructorParameters<typeof Error>[1]
128+
) {
125129
super();
126-
130+
this.cause = options?.cause;
127131
this.filename = filename;
128132
this.component = component;
129133
}
@@ -178,3 +182,11 @@ export abstract class StorybookSvelteCSFError extends Error {
178182
return `<Story name="${this.storyNameFromAttribute}" />`;
179183
}
180184
}
185+
186+
// WARN: We can't use `instanceof StorybookSvelteCSFError`, because is an _abstract_ class
187+
export function isStorybookSvelteCSFError(error: unknown): error is StorybookSvelteCSFError {
188+
return Boolean(
189+
(Object.getPrototypeOf(error)?.constructor as typeof StorybookSvelteCSFError)
190+
?.isStorybookCSFSvelteError
191+
);
192+
}

src/utils/error/legacy-api/index.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,9 @@ export class LegacyTemplateNotEnabledError extends StorybookSvelteCSFError {
3636
readonly code = 2;
3737
public documentation = true;
3838

39-
constructor(filename?: string) {
39+
constructor(filename?: string, options?: ConstructorParameters<typeof Error>[1]) {
4040
super({ filename });
41+
this.cause = options?.cause;
4142
}
4243

4344
template(): string {

src/utils/error/parser/extract/svelte.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,8 @@ export class IndexerParseError extends StorybookSvelteCSFError {
218218
readonly code = 9;
219219
public documentation = true;
220220

221-
constructor() {
222-
super({});
221+
constructor(options?: ConstructorParameters<typeof Error>[1]) {
222+
super({}, options);
223223
}
224224

225225
template() {

0 commit comments

Comments
 (0)