Skip to content

Commit 06c81af

Browse files
authored
Merge pull request #260 from storybookjs/fix-esm
Fix badly formatted ESM that was breaking Node 22 and 23
2 parents f96d9f9 + 31bd578 commit 06c81af

27 files changed

+51
-72
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ package-lock.json
1111

1212
# .d.ts files generated by `svelte-package`
1313
examples/**/*.d.ts
14+
tests/extractor.d.ts

.nvmrc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
18
1+
22

package.json

-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@
5353
"dependencies": {
5454
"@storybook/csf": "^0.1.11",
5555
"@storybook/docs-tools": "^8.0.0",
56-
"@storybook/node-logger": "^8.0.0",
5756
"@storybook/types": "^8.0.0",
5857
"dedent": "^1.5.3",
5958
"es-toolkit": "^1.26.1",

pnpm-lock.yaml

-12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/compiler/plugins.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ export async function transformPlugin(): Promise<Plugin> {
7373
return {
7474
optimizeDeps: {
7575
include: ['@storybook/addon-svelte-csf/internal/create-runtime-stories'],
76-
}
77-
}
76+
},
77+
};
7878
},
7979
async transform(compiledCode, id) {
8080
if (!filter(id)) return undefined;

src/compiler/post-transform/define-meta/index.test.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import MagicString from 'magic-string';
77
import { parseAst } from 'rollup/parseAst';
88
import { describe, it } from 'vitest';
99

10-
import { transformDefineMeta } from './index';
10+
import { transformDefineMeta } from './index.js';
1111

1212
import { getSvelteAST } from '$lib/parser/ast.js';
1313
import { extractSvelteASTNodes } from '$lib/parser/extract/svelte/nodes.js';
@@ -51,6 +51,8 @@ describe(transformDefineMeta.name, () => {
5151
ast: parseAst(code.toString()),
5252
});
5353

54-
expect(print(defineMetaVariableDeclaration).code).toMatchInlineSnapshot(`"const { Story } = defineMeta(meta);"`);
54+
expect(print(defineMetaVariableDeclaration).code).toMatchInlineSnapshot(
55+
`"const { Story } = defineMeta(meta);"`
56+
);
5557
});
5658
});

src/compiler/post-transform/define-meta/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { print } from 'esrap';
22
import type MagicString from 'magic-string';
33

4-
import { replaceDefineMetaArgument } from './replace-argument';
4+
import { replaceDefineMetaArgument } from './replace-argument.js';
55
import { insertDefineMetaJSDocCommentAsDescription } from './insert-description.js';
66

77
import { createASTIdentifier, type ESTreeAST } from '$lib/parser/ast.js';

src/compiler/post-transform/define-meta/insert-description.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import { logger } from '@storybook/node-logger';
2-
31
import {
42
findASTPropertyIndex,
53
findPropertyDescriptionIndex,
@@ -103,7 +101,7 @@ export function insertDefineMetaJSDocCommentAsDescription(params: Params): void
103101
}),
104102
}) !== -1
105103
) {
106-
logger.warn(
104+
console.warn(
107105
`Svelte CSF:
108106
Description was already set in parameters.docs.description.component,
109107
ignoring JSDoc comment above defineMeta() in:

src/compiler/post-transform/define-meta/replace-argument.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { createASTIdentifier, type ESTreeAST } from '../../../parser/ast';
2-
import type { CompiledASTNodes } from '../../../parser/extract/compiled/nodes';
3-
import type { SvelteASTNodes } from '../../../parser/extract/svelte/nodes';
4-
import { getDefineMetaFirstArgumentObjectExpression } from '../../../parser/extract/svelte/define-meta';
5-
import { NoDestructuredDefineMetaCallError } from '../../../utils/error/parser/analyse/define-meta';
1+
import { createASTIdentifier, type ESTreeAST } from '../../../parser/ast.js';
2+
import type { CompiledASTNodes } from '../../../parser/extract/compiled/nodes.js';
3+
import type { SvelteASTNodes } from '../../../parser/extract/svelte/nodes.js';
4+
import { getDefineMetaFirstArgumentObjectExpression } from '../../../parser/extract/svelte/define-meta.js';
5+
import { NoDestructuredDefineMetaCallError } from '../../../utils/error/parser/analyse/define-meta.js';
66

77
interface Params {
88
nodes: {

src/compiler/post-transform/index.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import MagicString from 'magic-string';
66
import { parseAst } from 'rollup/parseAst';
77
import { describe, it } from 'vitest';
88

9-
import { transformStoriesCode } from '.';
9+
import { transformStoriesCode } from './index.js';
1010

1111
import { getSvelteAST } from '$lib/parser/ast.js';
1212
import { extractSvelteASTNodes } from '$lib/parser/extract/svelte/nodes.js';

src/compiler/post-transform/shared/description.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { logger } from '@storybook/node-logger';
21
import dedent from 'dedent';
32

43
import type { ESTreeAST, SvelteAST } from '$lib/parser/ast.js';
@@ -81,7 +80,7 @@ export const getParametersPropertyValue = (
8180
}
8281

8382
if (property.value.type !== 'ObjectExpression') {
84-
logger.warn(dedent`
83+
console.warn(dedent`
8584
Svelte CSF:
8685
Could not access 'parameters' of ${component ? "Story's prop" : 'defineMeta'}}.
8786
Expected value to be an object expression.
@@ -124,7 +123,7 @@ export const getDocsPropertyValue = (options: Omit<FindPropertyOptions, 'name'>)
124123
const { value } = property;
125124

126125
if (value.type !== 'ObjectExpression') {
127-
logger.warn(dedent`
126+
console.warn(dedent`
128127
Svelte CSF:
129128
Could not access 'parameters.docs' of ${component ? "Story's prop" : 'defineMeta'}}.
130129
Expected value to be an object expression.
@@ -160,7 +159,7 @@ export const getDescriptionPropertyValue = (options: Omit<FindPropertyOptions, '
160159
const { value } = property;
161160

162161
if (value.type !== 'ObjectExpression') {
163-
logger.warn(dedent`
162+
console.warn(dedent`
164163
Svelte CSF:
165164
Could not access 'parameters.docs.description' of ${component ? "Story's prop" : 'defineMeta'}}.
166165
Expected value to be an object expression.

src/compiler/post-transform/story/index.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import MagicString from 'magic-string';
77
import { parseAst } from 'rollup/parseAst';
88
import { describe, it } from 'vitest';
99

10-
import { transformStory } from '.';
10+
import { transformStory } from './index.js';
1111

1212
import { getSvelteAST } from '$lib/parser/ast.js';
1313
import { extractSvelteASTNodes } from '$lib/parser/extract/svelte/nodes.js';

src/compiler/post-transform/story/insert-description.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { logger } from '@storybook/node-logger';
21
import dedent from 'dedent';
32

43
import {
@@ -99,7 +98,7 @@ export function insertStoryHTMLCommentAsDescription(params: Params) {
9998
(p) => p.type === 'Property' && p.key.type === 'Literal' && p.key.value === 'name'
10099
) as ESTreeAST.Property;
101100
const name = (propertyName.value as ESTreeAST.Literal).value;
102-
logger.warn(
101+
console.warn(
103102
dedent`
104103
Svelte CSF:
105104
Description was already set in parameters.docs.description.story
@@ -124,11 +123,11 @@ export function insertStoryHTMLCommentAsDescription(params: Params) {
124123
);
125124

126125
if (compiled.type === 'CallExpression') {
127-
compiled.arguments[1] === storyPropsObjectExpression;
126+
compiled.arguments[1] = storyPropsObjectExpression;
128127
} else if (
129128
compiled.type === 'ExpressionStatement' &&
130129
compiled.expression.type === 'CallExpression'
131130
) {
132-
compiled.expression.arguments[1] === storyPropsObjectExpression;
131+
compiled.expression.arguments[1] = storyPropsObjectExpression;
133132
}
134133
}

src/compiler/pre-transform/codemods/legacy-story.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import {
99
} from '$lib/parser/ast.js';
1010
import { InvalidTemplateAttribute } from '$lib/utils/error/legacy-api/index.js';
1111

12-
import { hashTemplateName } from '$lib/utils/identifier-utils';
13-
import type { State } from '..';
12+
import { hashTemplateName } from '$lib/utils/identifier-utils.js';
13+
import type { State } from '../index.js';
1414

1515
interface Params {
1616
component: SvelteAST.Component;

src/compiler/pre-transform/codemods/template-to-snippet.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { getStringValueFromAttribute } from '$lib/parser/analyse/story/attributes.js';
22
import type { SvelteAST } from '$lib/parser/ast.js';
3-
import { hashTemplateName } from '$lib/utils/identifier-utils';
3+
import { hashTemplateName } from '$lib/utils/identifier-utils.js';
44

55
interface Params {
66
component: SvelteAST.Component;

src/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,4 @@ export {
5050
};
5151

5252
// TODO: Remove in next major release
53-
export * from './legacy-types.d';
53+
export type * from './legacy-types.d.ts';

src/runtime/LegacyMeta.svelte

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Vite pre-transform hook does codemod where this component gets transformed into
99
@see {@link https://github.com/storybookjs/addon-svelte-csf/blob/main/MIGRATION.md#meta-component-removed-in-favor-of-definemeta}
1010
-->
1111
<script lang="ts">
12-
import type { MetaProps, Slots } from '../legacy-types.d';
12+
import type { MetaProps, Slots } from '../legacy-types.d.ts';
1313
1414
type $$Props = MetaProps;
1515
</script>

src/runtime/LegacyStory.svelte

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Vite pre-transform hook does codemod where this component gets transformed into
1010
-->
1111

1212
<script lang="ts">
13-
import type { Slots, StoryProps } from '../legacy-types.d';
13+
import type { Slots, StoryProps } from '../legacy-types.d.ts';
1414
1515
type $$Props = StoryProps;
1616
type $$Slots = Slots;

src/runtime/LegacyTemplate.svelte

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Vite pre-transform hook does codemod where this component gets transformed into
99
@see {@link https://github.com/storybookjs/addon-svelte-csf/blob/main/MIGRATION.md#template-component-removed}
1010
-->
1111
<script lang="ts">
12-
import type { Slots, TemplateProps } from '../legacy-types.d';
12+
import type { Slots, TemplateProps } from '../legacy-types.d.ts';
1313
1414
export let id: string = 'default';
1515
// silents the Svelte warning about 'id' being unused. It's only here for typing purposes.

src/runtime/StoriesExtractor.svelte

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script lang="ts">
22
import type { Component } from 'svelte';
33
4-
import type { Cmp } from '$lib/types';
4+
import type { Cmp } from '$lib/types.js';
55
66
import {
77
type StoriesRepository,

src/runtime/Story.svelte

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<script lang="ts" generics="const TCmp extends Cmp">
22
import type { Snippet } from 'svelte';
33
4-
import { useStoriesExtractor } from './contexts/extractor.svelte';
5-
import { useStoryRenderer, type StoryRendererContext } from './contexts/renderer.svelte';
6-
import { useStoriesTemplate } from './contexts/template.svelte';
4+
import { useStoriesExtractor } from './contexts/extractor.svelte.js';
5+
import { useStoryRenderer, type StoryRendererContext } from './contexts/renderer.svelte.js';
6+
import { useStoriesTemplate } from './contexts/template.svelte.js';
77
8-
import { storyNameToExportName } from '../utils/identifier-utils';
9-
import type { Cmp, StoryAnnotations } from '../types';
8+
import { storyNameToExportName } from '../utils/identifier-utils.js';
9+
import type { Cmp, StoryAnnotations } from '../types.js';
1010
1111
type Props = Partial<StoryAnnotations<TCmp>> & {
1212
/**

src/runtime/StoryRenderer.svelte

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
import type { Component } from 'svelte';
33
44
import { useStoryRenderer } from './contexts/renderer.svelte';
5-
import { emitCode } from './emit-code';
5+
import { emitCode } from './emit-code.js';
66
7-
import type { Cmp, StoryAnnotations, StoryContext } from '../types';
7+
import type { Cmp, StoryAnnotations, StoryContext } from '../types.js';
88
99
type Props = {
1010
Stories: Component;

src/runtime/contexts/extractor.svelte.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export function useStoriesExtractor<TCmp extends Cmp>() {
5353
CONTEXT_KEY,
5454
buildContext<TCmp>({
5555
isExtracting: false,
56-
register: () => { },
56+
register: () => {},
5757
})
5858
);
5959
}

svelte.config.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
export default {
2-
kit: {
3-
files: {
4-
lib: 'src',
5-
}
6-
}
2+
kit: {
3+
files: {
4+
lib: 'src',
5+
},
6+
},
77
};

tests/extractor.d.ts

-3
This file was deleted.

tsconfig.json

+6-10
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
"compilerOptions": {
44
"baseUrl": ".",
55
"lib": ["esnext", "DOM", "DOM.Iterable"],
6-
"module": "esnext",
7-
"moduleResolution": "bundler",
6+
"module": "nodenext",
7+
"moduleResolution": "nodenext",
88
"noImplicitAny": false,
99
"resolveJsonModule": true,
1010
"rootDir": ".",
@@ -14,15 +14,11 @@
1414
"verbatimModuleSyntax": true,
1515
"isolatedModules": true,
1616
"types": ["vitest/importMeta"],
17-
"forceConsistentCasingInFileNames": true,
17+
"forceConsistentCasingInFileNames": true,
1818
"paths": {
19-
"$lib": [
20-
"src"
21-
],
22-
"$lib/*": [
23-
"src/*"
24-
]
25-
},
19+
"$lib": ["src"],
20+
"$lib/*": ["src/*"]
21+
},
2622
"plugins": [
2723
{
2824
"name": "typescript-svelte-plugin",

vite.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default defineConfig({
1616
resolve: {
1717
alias: {
1818
// This is already set up in svelte.config.js, but we need it explicitly here for vitest
19-
'$lib': path.resolve(__dirname, 'src'),
19+
$lib: path.resolve(__dirname, 'src'),
2020
},
2121
},
2222
test: {

0 commit comments

Comments
 (0)