diff --git a/.changeset/some-tigers-tease.md b/.changeset/some-tigers-tease.md new file mode 100644 index 0000000..a30e3d1 --- /dev/null +++ b/.changeset/some-tigers-tease.md @@ -0,0 +1,5 @@ +--- +"next-ws": minor +--- + +Drop esm build, ship cjs only diff --git a/package.json b/package.json index 7122391..ada6d88 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,6 @@ "name": "next-ws", "version": "2.0.14", "packageManager": "pnpm@10.15.0", - "type": "module", "description": "Add support for WebSockets in the Next.js app directory", "license": "MIT", "keywords": ["next", "websocket", "ws", "server", "client"], @@ -21,13 +20,11 @@ "exports": { "./client": { "types": "./dist/client/index.d.ts", - "import": "./dist/client/index.js", - "require": "./dist/client/index.cjs" + "default": "./dist/client/index.cjs" }, "./server": { "types": "./dist/server/index.d.ts", - "import": "./dist/server/index.js", - "require": "./dist/server/index.cjs" + "default": "./dist/server/index.cjs" }, "./package.json": "./package.json" }, diff --git a/src/server/helpers/route.ts b/src/server/helpers/route.ts index 7a78f1a..4adea3b 100644 --- a/src/server/helpers/route.ts +++ b/src/server/helpers/route.ts @@ -1,4 +1,3 @@ -import { pathToFileURL } from 'node:url'; import * as logger from 'next/dist/build/output/log.js'; import type NextNodeServer from 'next/dist/server/next-server.js'; import type { SocketHandler } from './socket'; @@ -99,28 +98,7 @@ export async function importRouteModule( // @ts-expect-error - getPageModule is protected const buildPagePath = nextServer.getPagePath(filePath); - return importModule(buildPagePath); -} - -/** - * Import a module from a file path using either import or require. - * @param modulePath The file path of the module. - * @returns The imported module. - * @throws If the module could not be imported. - */ -async function importModule(modulePath: string): Promise { - const moduleUrl = pathToFileURL(modulePath).toString(); - - try { - return import(moduleUrl); - } catch (requireError) { - try { - return require(modulePath); - } catch (requireError) { - console.error(`Both import and require failed for ${modulePath}`); - throw requireError; - } - } + return require(buildPagePath) as RouteModule; } export async function getSocketHandler(routeModule: RouteModule) { diff --git a/tsup.config.ts b/tsup.config.ts index 7bed7cb..0ae5a83 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -3,14 +3,16 @@ import { defineConfig } from 'tsup'; export default defineConfig([ { entry: ['src/{client,server}/index.ts'], - format: ['cjs', 'esm'], + // Keep the extension as .cjs as to not break the require() calls in the patches + outExtension: () => ({ js: '.cjs', dts: '.d.cts' }), + format: 'cjs', dts: true, }, { entry: ['src/cli.ts'], + outExtension: () => ({ js: '.cjs' }), format: 'cjs', external: ['next-ws'], noExternal: ['*'], - minify: true, }, ]);