Skip to content

Commit 9972434

Browse files
committed
fix: move package.json import to client side
try `with` and `assert`
1 parent 85777c9 commit 9972434

File tree

4 files changed

+34
-16
lines changed

4 files changed

+34
-16
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
[![Storybook](https://raw.githubusercontent.com/storybookjs/brand/master/badge/badge-storybook.svg?sanitize=true)](https://storybook.js.org)
44
[![npm](https://img.shields.io/npm/v/storybook-addon-remix-react-router?color=blue)](https://www.npmjs.com/package/storybook-addon-remix-react-router)
55
[![Release](https://github.com/JesusTheHun/storybook-addon-remix-react-router/actions/workflows/release.yml/badge.svg)](https://github.com/JesusTheHun/storybook-addon-remix-react-router/actions/workflows/release.yml)
6-
![npm](https://img.shields.io/npm/dm/storybook-addon-react-router-v6)
6+
![npm](https://img.shields.io/npm/dm/storybook-addon-remix-react-router)
77

88
> Use Remix React Router in your stories.
99

src/constants.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
// @ts-ignore
2-
import packageJson from '../package.json' assert { type: 'json' };
3-
41
export const ADDON_ID = 'storybook/react-router-v6';
52
export const PANEL_ID = `${ADDON_ID}/panel`;
63
export const PARAM_KEY = `reactRouter`;
@@ -15,5 +12,3 @@ export const EVENTS = {
1512
LOADER_INVOKED: `${ADDON_ID}/loader_invoked`,
1613
LOADER_SETTLED: `${ADDON_ID}/loader_settled`,
1714
} as const;
18-
19-
export const ADDON_VERSION = packageJson.version;

src/features/decorator/withRouter.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { PARAM_KEY } from '../../constants';
44
import { ReactRouterDecorator, ReactRouterDecoratorProps } from './components/ReactRouterDecorator';
55
import { castParametersV2 } from './utils/castParametersV2';
66

7-
export const withRouter = makeDecorator({
7+
export const withRouter: () => any = makeDecorator({
88
name: 'withRouter',
99
parameterName: PARAM_KEY,
1010
wrapper: (getStory, context, { parameters }) => {
Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,51 @@
11
import { compareVersions } from 'compare-versions';
22
import { useEffect, useState } from 'react';
3-
import { ADDON_VERSION } from '../../../constants';
43

54
export function useAddonVersions() {
6-
const [version, setVersion] = useState<string>();
5+
const [currentVersion, setCurrentVersion] = useState<string>();
6+
const [latestVersion, setLatestVersion] = useState<string>();
77

88
useEffect(() => {
9-
if (version !== undefined) return;
10-
119
const abortController = new AbortController();
1210
fetch(`https://registry.npmjs.org/storybook-addon-remix-react-router/latest`, { signal: abortController.signal })
1311
.then((b) => b.json())
14-
.then((json) => setVersion(json.version))
12+
.then((json) => setLatestVersion(json.version))
1513
// eslint-disable-next-line @typescript-eslint/no-empty-function
1614
.catch(() => {});
1715

1816
return () => abortController.abort();
19-
}, [version]);
17+
}, []);
18+
19+
useEffect(() => {
20+
getAddonVersion().then((v) => setCurrentVersion(v));
21+
}, []);
2022

21-
const newVersionAvailable = version === undefined ? undefined : compareVersions(version, ADDON_VERSION) === 1;
23+
const newVersionAvailable =
24+
!latestVersion || !currentVersion ? undefined : compareVersions(latestVersion, currentVersion) === 1;
2225

2326
return {
24-
currentAddonVersion: ADDON_VERSION,
25-
latestAddonVersion: version,
27+
currentAddonVersion: currentVersion,
28+
latestAddonVersion: latestVersion,
2629
addonUpdateAvailable: newVersionAvailable,
2730
};
2831
}
32+
33+
async function getAddonVersion() {
34+
try {
35+
const packageJson = await import('../../../../package.json', {
36+
with: {
37+
type: 'json',
38+
},
39+
});
40+
41+
return packageJson.version;
42+
} catch (error) {
43+
const packageJson = await import('../../../../package.json', {
44+
assert: {
45+
type: 'json',
46+
},
47+
});
48+
49+
return packageJson.version;
50+
}
51+
}

0 commit comments

Comments
 (0)