From 2dc6dcc900872dc9aefb5fef6ed7370597a7ff6d Mon Sep 17 00:00:00 2001 From: WolfieLeader Date: Tue, 6 Oct 2026 16:40:09 +0300 Subject: [PATCH] fix(pg-protocol): ship the ESM entry as esm/index.mjs pg-protocol is the only package from #3423 whose ESM wrapper is a .js file in a package without "type": "module". Node loads it as ESM only through module syntax detection. Without detection (Node 18, or --no-experimental-detect-module), `import { parse } from 'pg-protocol'` fails with "Named export 'parse' not found". Rename it to esm/index.mjs, like pg, pg-pool, pg-cursor and the other packages. --- packages/pg-esm-test/pg-protocol.test.js | 12 ++++++++++++ packages/pg-protocol/esm/{index.js => index.mjs} | 0 packages/pg-protocol/package.json | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) rename packages/pg-protocol/esm/{index.js => index.mjs} (100%) diff --git a/packages/pg-esm-test/pg-protocol.test.js b/packages/pg-esm-test/pg-protocol.test.js index 43df99de2..e06ca4beb 100644 --- a/packages/pg-esm-test/pg-protocol.test.js +++ b/packages/pg-esm-test/pg-protocol.test.js @@ -1,6 +1,7 @@ import protocol, { NoticeMessage, DatabaseError } from 'pg-protocol/dist/messages.js' import { describe, it } from 'node:test' import { strict as assert } from 'assert' +import { execFileSync } from 'node:child_process' describe('pg-protocol', () => { it('should export database error', () => { @@ -15,4 +16,15 @@ describe('pg-protocol', () => { it('should export NoticeMessage from file in dist folder', () => { assert.ok(NoticeMessage) }) + it('should load the ESM entry without module syntax detection', () => { + const flags = process.allowedNodeEnvironmentFlags.has('--experimental-detect-module') + ? ['--no-experimental-detect-module'] + : [] + const script = + "import { parse, serialize, DatabaseError } from 'pg-protocol'; if (!parse || !serialize || !DatabaseError) process.exit(1)" + execFileSync(process.execPath, [...flags, '--input-type=module', '-e', script], { + cwd: new URL('.', import.meta.url), + stdio: 'pipe', + }) + }) }) diff --git a/packages/pg-protocol/esm/index.js b/packages/pg-protocol/esm/index.mjs similarity index 100% rename from packages/pg-protocol/esm/index.js rename to packages/pg-protocol/esm/index.mjs diff --git a/packages/pg-protocol/package.json b/packages/pg-protocol/package.json index 5caf29557..4ddbab7c4 100644 --- a/packages/pg-protocol/package.json +++ b/packages/pg-protocol/package.json @@ -6,7 +6,7 @@ "types": "dist/index.d.ts", "exports": { ".": { - "import": "./esm/index.js", + "import": "./esm/index.mjs", "require": "./dist/index.js", "default": "./dist/index.js" },