UNPKG

vite-plugin-storybook-nextjs

Version:

This is a Vite plugin that allows you to use Next.js features in Vite. It is the basis for `@storybook/experimental-nextjs-vite` and should be used when running portable stories in Vitest.

81 lines (77 loc) 2.8 kB
import { draftMode } from 'next/dist/server/request/draft-mode'; import * as headers2 from 'next/dist/server/request/headers'; import { fn } from 'storybook/test'; import { HeadersAdapter } from 'next/dist/server/web/spec-extension/adapters/headers.js'; import { RequestCookies } from 'next/dist/compiled/@edge-runtime/cookies/index.js'; // src/plugins/next-mocks/alias/headers/index.ts var HeadersAdapterMock = class extends HeadersAdapter { constructor() { super({}); this.append = fn( super.append.bind(this) ).mockName("next/headers::headers().append"); this.delete = fn(super.delete.bind(this)).mockName( "next/headers::headers().delete" ); this.get = fn( super.get.bind(this) ).mockName("next/headers::headers().get"); this.has = fn(super.has.bind(this)).mockName( "next/headers::headers().has" ); this.set = fn( super.set.bind(this) ).mockName("next/headers::headers().set"); this.forEach = fn(super.forEach.bind(this)).mockName("next/headers::headers().forEach"); this.entries = fn( super.entries.bind(this) ).mockName("next/headers::headers().entries"); this.keys = fn( super.keys.bind(this) ).mockName("next/headers::headers().keys"); this.values = fn( super.values.bind(this) ).mockName("next/headers::headers().values"); } }; var headersAdapterMock; var headers = () => { if (!headersAdapterMock) headersAdapterMock = new HeadersAdapterMock(); return headersAdapterMock; }; headers.mockRestore = () => { headersAdapterMock = new HeadersAdapterMock(); }; var RequestCookiesMock = class extends RequestCookies { constructor() { super(...arguments); this.get = fn(super.get.bind(this)).mockName("next/headers::cookies().get"); this.getAll = fn(super.getAll.bind(this)).mockName("next/headers::cookies().getAll"); this.has = fn(super.has.bind(this)).mockName( "next/headers::cookies().has" ); this.set = fn(super.set.bind(this)).mockName("next/headers::cookies().set"); this.delete = fn( super.delete.bind(this) ).mockName("next/headers::cookies().delete"); } }; var requestCookiesMock; var cookies = fn(() => { if (!requestCookiesMock) { requestCookiesMock = new RequestCookiesMock(headers()); } return requestCookiesMock; }).mockName("next/headers::cookies()"); var originalRestore = cookies.mockRestore.bind(null); cookies.mockRestore = () => { originalRestore(); headers.mockRestore(); requestCookiesMock = new RequestCookiesMock(headers()); }; // src/plugins/next-mocks/alias/headers/index.ts var draftMode2 = fn( // biome-ignore lint/suspicious/noExplicitAny: <explanation> draftMode ?? headers2.draftMode ).mockName("draftMode"); export { cookies, draftMode2 as draftMode, headers };