From 9b99a86ef87194e785899054d1fff895392d89fe Mon Sep 17 00:00:00 2001 From: Cody Olsen Date: Tue, 23 Apr 2024 16:15:07 +0200 Subject: [PATCH] fix: improve bundler output --- packages/next-sanity/package.config.ts | 14 ++--- packages/next-sanity/package.json | 51 ++++++++++++++----- packages/next-sanity/src/image/Image.tsx | 2 +- packages/next-sanity/src/image/imageLoader.ts | 2 - .../{ => client-component}/NextStudio.tsx | 6 +-- .../createHashHistoryForStudio.ts | 0 .../src/studio/client-component/index.ts | 1 + .../{ => client-component}/registry.tsx | 0 .../{ => client-component}/useIsMounted.ts | 0 packages/next-sanity/src/studio/index.ts | 3 +- .../index.ts} | 5 +- .../next-sanity/src/visual-editing/index.tsx | 7 ++- .../{actions.ts => server-actions/index.ts} | 4 -- packages/next-sanity/tsconfig.base.json | 37 ++++++-------- packages/next-sanity/tsconfig.build.json | 9 +--- packages/next-sanity/tsconfig.json | 9 ++-- 16 files changed, 77 insertions(+), 73 deletions(-) rename packages/next-sanity/src/studio/{ => client-component}/NextStudio.tsx (95%) rename packages/next-sanity/src/studio/{ => client-component}/createHashHistoryForStudio.ts (100%) create mode 100644 packages/next-sanity/src/studio/client-component/index.ts rename packages/next-sanity/src/studio/{ => client-component}/registry.tsx (100%) rename packages/next-sanity/src/studio/{ => client-component}/useIsMounted.ts (100%) rename packages/next-sanity/src/visual-editing/{VisualEditing.tsx => client-component/index.ts} (97%) rename packages/next-sanity/src/visual-editing/{actions.ts => server-actions/index.ts} (82%) diff --git a/packages/next-sanity/package.config.ts b/packages/next-sanity/package.config.ts index 217f8e2aba..bedbadce99 100644 --- a/packages/next-sanity/package.config.ts +++ b/packages/next-sanity/package.config.ts @@ -1,20 +1,22 @@ +import path from 'node:path' + import {defineConfig} from '@sanity/pkg-utils' const MODULE_PATHS_WHICH_USE_CLIENT_DIRECTIVE_SHOULD_BE_ADDED = [ - 'NextStudio.tsx', - 'VisualEditing.tsx', - 'imageLoader.ts', + path.join('src', 'image', 'index.ts'), + path.join('src', 'studio', 'client-component', 'index.ts'), + path.join('src', 'visual-editing', 'client-component', 'index.ts'), ] -const MODULE_PATHS_WHICH_USE_SERVER_DIRECTIVE_SHOULD_BE_ADDED = ['actions.ts'] +const MODULE_PATHS_WHICH_USE_SERVER_DIRECTIVE_SHOULD_BE_ADDED = [ + path.join('src', 'visual-editing', 'server-actions', 'index.ts'), +] export default defineConfig({ tsconfig: 'tsconfig.build.json', minify: true, rollup: { output: { - preserveModules: true, - preserveModulesRoot: 'src', banner: (chunkInfo) => { if ( MODULE_PATHS_WHICH_USE_CLIENT_DIRECTIVE_SHOULD_BE_ADDED.find((modulePath) => diff --git a/packages/next-sanity/package.json b/packages/next-sanity/package.json index c31999e37c..0b50ce4701 100644 --- a/packages/next-sanity/package.json +++ b/packages/next-sanity/package.json @@ -33,15 +33,15 @@ }, "./image": { "source": "./src/image/index.ts", - "import": "./dist/image/index.js", - "require": "./dist/image/index.cjs", - "default": "./dist/image/index.js" + "import": "./dist/image.js", + "require": "./dist/image.cjs", + "default": "./dist/image.js" }, "./preview": { "source": "./src/preview/index.ts", - "import": "./dist/preview/index.js", - "require": "./dist/preview/index.cjs", - "default": "./dist/preview/index.js" + "import": "./dist/preview.js", + "require": "./dist/preview.cjs", + "default": "./dist/preview.js" }, "./preview/live-query": { "source": "./src/preview/LiveQuery/index.ts", @@ -51,9 +51,27 @@ }, "./studio": { "source": "./src/studio/index.ts", - "import": "./dist/studio/index.js", - "require": "./dist/studio/index.cjs", - "default": "./dist/studio/index.js" + "import": "./dist/studio.js", + "require": "./dist/studio.cjs", + "default": "./dist/studio.js" + }, + "./studio/client-component": { + "source": "./src/studio/client-component/index.ts", + "import": "./dist/studio/client-component.js", + "require": "./dist/studio/client-component.cjs", + "default": "./dist/studio/client-component.js" + }, + "./visual-editing/client-component": { + "source": "./src/visual-editing/client-component/index.ts", + "import": "./dist/visual-editing/client-component.js", + "require": "./dist/visual-editing/client-component.cjs", + "default": "./dist/visual-editing/client-component.js" + }, + "./visual-editing/server-actions": { + "source": "./src/visual-editing/server-actions/index.ts", + "import": "./dist/visual-editing/server-actions.js", + "require": "./dist/visual-editing/server-actions.cjs", + "default": "./dist/visual-editing/server-actions.js" }, "./webhook": { "source": "./src/webhook/index.ts", @@ -69,16 +87,25 @@ "typesVersions": { "*": { "image": [ - "./dist/image/index.d.ts" + "./dist/image.d.ts" ], "preview": [ - "./dist/preview/index.d.ts" + "./dist/preview.d.ts" ], "preview/live-query": [ "./dist/preview/live-query.d.ts" ], "studio": [ - "./dist/studio/index.d.ts" + "./dist/studio.d.ts" + ], + "studio/client-component": [ + "./dist/studio/client-component.d.ts" + ], + "visual-editing/client-component": [ + "./dist/visual-editing/client-component.d.ts" + ], + "visual-editing/server-actions": [ + "./dist/visual-editing/server-actions.d.ts" ], "webhook": [ "./dist/webhook.d.ts" diff --git a/packages/next-sanity/src/image/Image.tsx b/packages/next-sanity/src/image/Image.tsx index edb3b6c9d6..10ff9af9ae 100644 --- a/packages/next-sanity/src/image/Image.tsx +++ b/packages/next-sanity/src/image/Image.tsx @@ -1,4 +1,4 @@ -import NextImage, {ImageProps as NextImageProps} from 'next/image' +import NextImage, {type ImageProps as NextImageProps} from 'next/image' import {imageLoader} from './imageLoader' diff --git a/packages/next-sanity/src/image/imageLoader.ts b/packages/next-sanity/src/image/imageLoader.ts index fc985401f5..4e0f151f67 100644 --- a/packages/next-sanity/src/image/imageLoader.ts +++ b/packages/next-sanity/src/image/imageLoader.ts @@ -1,5 +1,3 @@ -'use client' - import type {ImageLoader} from 'next/image' /** diff --git a/packages/next-sanity/src/studio/NextStudio.tsx b/packages/next-sanity/src/studio/client-component/NextStudio.tsx similarity index 95% rename from packages/next-sanity/src/studio/NextStudio.tsx rename to packages/next-sanity/src/studio/client-component/NextStudio.tsx index 894bcfff69..74493c1359 100644 --- a/packages/next-sanity/src/studio/NextStudio.tsx +++ b/packages/next-sanity/src/studio/client-component/NextStudio.tsx @@ -1,11 +1,9 @@ -'use client' - import {memo, useMemo} from 'react' import {Studio, type StudioProps} from 'sanity' +import {NextStudioLayout} from '../NextStudioLayout' +import {NextStudioNoScript} from '../NextStudioNoScript' import {createHashHistoryForStudio} from './createHashHistoryForStudio' -import {NextStudioLayout} from './NextStudioLayout' -import {NextStudioNoScript} from './NextStudioNoScript' import {StyledComponentsRegistry} from './registry' import {useIsMounted} from './useIsMounted' diff --git a/packages/next-sanity/src/studio/createHashHistoryForStudio.ts b/packages/next-sanity/src/studio/client-component/createHashHistoryForStudio.ts similarity index 100% rename from packages/next-sanity/src/studio/createHashHistoryForStudio.ts rename to packages/next-sanity/src/studio/client-component/createHashHistoryForStudio.ts diff --git a/packages/next-sanity/src/studio/client-component/index.ts b/packages/next-sanity/src/studio/client-component/index.ts new file mode 100644 index 0000000000..784ece323a --- /dev/null +++ b/packages/next-sanity/src/studio/client-component/index.ts @@ -0,0 +1 @@ +export * from './NextStudio' diff --git a/packages/next-sanity/src/studio/registry.tsx b/packages/next-sanity/src/studio/client-component/registry.tsx similarity index 100% rename from packages/next-sanity/src/studio/registry.tsx rename to packages/next-sanity/src/studio/client-component/registry.tsx diff --git a/packages/next-sanity/src/studio/useIsMounted.ts b/packages/next-sanity/src/studio/client-component/useIsMounted.ts similarity index 100% rename from packages/next-sanity/src/studio/useIsMounted.ts rename to packages/next-sanity/src/studio/client-component/useIsMounted.ts diff --git a/packages/next-sanity/src/studio/index.ts b/packages/next-sanity/src/studio/index.ts index 97cbf9f2cf..310dad98c6 100644 --- a/packages/next-sanity/src/studio/index.ts +++ b/packages/next-sanity/src/studio/index.ts @@ -1,4 +1,5 @@ export {metadata, viewport} from './head' -export * from './NextStudio' export * from './NextStudioLayout' export * from './NextStudioNoScript' +export type {NextStudioProps} from 'next-sanity/studio/client-component' +export {NextStudio} from 'next-sanity/studio/client-component' diff --git a/packages/next-sanity/src/visual-editing/VisualEditing.tsx b/packages/next-sanity/src/visual-editing/client-component/index.ts similarity index 97% rename from packages/next-sanity/src/visual-editing/VisualEditing.tsx rename to packages/next-sanity/src/visual-editing/client-component/index.ts index ce58493c22..39c005d60d 100644 --- a/packages/next-sanity/src/visual-editing/VisualEditing.tsx +++ b/packages/next-sanity/src/visual-editing/client-component/index.ts @@ -1,15 +1,12 @@ -'use client' - import { enableVisualEditing, type HistoryAdapterNavigate, type VisualEditingOptions, } from '@sanity/visual-editing' import {usePathname, useRouter, useSearchParams} from 'next/navigation.js' +import {revalidateRootLayout} from 'next-sanity/visual-editing/server-actions' import {useEffect, useRef, useState} from 'react' -import {revalidateRootLayout} from './actions' - /** * @public */ diff --git a/packages/next-sanity/src/visual-editing/index.tsx b/packages/next-sanity/src/visual-editing/index.tsx index 018e488041..ff6f8b0b0f 100644 --- a/packages/next-sanity/src/visual-editing/index.tsx +++ b/packages/next-sanity/src/visual-editing/index.tsx @@ -1,8 +1,7 @@ +import type {VisualEditingProps} from 'next-sanity/visual-editing/client-component' import {lazy, Suspense} from 'react' -import type {VisualEditingProps} from './VisualEditing' - -const VisualEditingComponent = lazy(() => import('./VisualEditing')) +const VisualEditingComponent = lazy(() => import('next-sanity/visual-editing/client-component')) /** * @public @@ -15,9 +14,9 @@ export function VisualEditing(props: VisualEditingProps): React.ReactElement { ) } -export type {VisualEditingProps} from './VisualEditing' export { type CreateDataAttribute, createDataAttribute, type CreateDataAttributeProps, } from '@sanity/visual-editing/create-data-attribute' +export type {VisualEditingProps} from 'next-sanity/visual-editing/client-component' diff --git a/packages/next-sanity/src/visual-editing/actions.ts b/packages/next-sanity/src/visual-editing/server-actions/index.ts similarity index 82% rename from packages/next-sanity/src/visual-editing/actions.ts rename to packages/next-sanity/src/visual-editing/server-actions/index.ts index 41b6ce6043..f5b9883a30 100644 --- a/packages/next-sanity/src/visual-editing/actions.ts +++ b/packages/next-sanity/src/visual-editing/server-actions/index.ts @@ -1,7 +1,3 @@ -'use server' -/** - * The code in this file will be ported to `next-sanity` - */ import {revalidatePath} from 'next/cache.js' import {draftMode} from 'next/headers.js' diff --git a/packages/next-sanity/tsconfig.base.json b/packages/next-sanity/tsconfig.base.json index a4d4e16ef8..9ded7b1148 100644 --- a/packages/next-sanity/tsconfig.base.json +++ b/packages/next-sanity/tsconfig.base.json @@ -1,25 +1,20 @@ { + "extends": "@sanity/pkg-utils/tsconfig/strictest.json", "compilerOptions": { - "baseUrl": ".", - "target": "esnext", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "preserve", - "moduleDetection": "force", - "isolatedModules": true, - "jsx": "preserve", - "noImplicitAny": true, - "strictNullChecks": true, - "strictFunctionTypes": true, - "strictPropertyInitialization": true, - "noImplicitThis": true, - "alwaysStrict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true + "rootDir": ".", + "outDir": "dist", + "paths": { + "next-sanity/image": ["./src/image/index.ts"], + "next-sanity/preview/live-query": [ + "./src/preview/LiveQuery/index.ts" + ], + "next-sanity/preview": ["./src/preview/index.ts"], + "next-sanity/studio/client-component": ["./src/studio/client-component/index.ts"], + "next-sanity/studio": ["./src/studio/index.ts"], + "next-sanity/visual-editing/client-component": ["./src/visual-editing/client-component/index.ts"], + "next-sanity/visual-editing/server-actions": ["./src/visual-editing/server-actions/index.ts"], + "next-sanity/webhook": ["./src/webhook/index.ts"], + "next-sanity": ["./src/index"] + } } } diff --git a/packages/next-sanity/tsconfig.build.json b/packages/next-sanity/tsconfig.build.json index d2562f5f0a..0411dbbc21 100644 --- a/packages/next-sanity/tsconfig.build.json +++ b/packages/next-sanity/tsconfig.build.json @@ -1,12 +1,5 @@ { "extends": "./tsconfig.base", - "compilerOptions": { - "rootDir": "src", - "outDir": "dist", - "declaration": true, - "emitDeclarationOnly": true, - "declarationDir": "lib/dts" - }, "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["dist", "node_modules"] + "exclude": ["dist", "node_modules", "./src/**/*.test.ts", "./src/**/*.test.tsx"] } diff --git a/packages/next-sanity/tsconfig.json b/packages/next-sanity/tsconfig.json index e383087281..46621f9fe9 100644 --- a/packages/next-sanity/tsconfig.json +++ b/packages/next-sanity/tsconfig.json @@ -1,15 +1,12 @@ { "extends": "./tsconfig.base", + "include": ["**/*.ts", "**/*.tsx"], + "exclude": ["dist", "node_modules"], "compilerOptions": { - "incremental": true, - "noEmit": true, "plugins": [ { "name": "next" } ], - "strictNullChecks": true - }, - "include": ["**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["dist", "node_modules"] + } }