From 9f8576c84cffd269718c2eff00b3e312d336dd9b Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Tue, 16 May 2023 21:28:19 +0100 Subject: [PATCH] fix: ensure that pg-cloudflare can be used with bundlers that don't know about Cloudflare sockets By implementing package.json `exports` we can avoid processing the Cloudflare specific code, which contains `import ... from "cloudflare:sockets"`, in bundlers such as Webpack. If you are bundling for a Worker environment using Webpack then you need to add the `workerd` condition and ignore `cloudflare:sockets` imports: **webpack.config.js** ```js resolve: { conditionNames: ["require", "node", "workerd"] }, plugins: [ new webpack.IgnorePlugin({ resourceRegExp: /^cloudflare:sockets$/, }), ], ``` --- packages/pg-cloudflare/package.json | 6 +++++- packages/pg-cloudflare/src/empty.ts | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 packages/pg-cloudflare/src/empty.ts diff --git a/packages/pg-cloudflare/package.json b/packages/pg-cloudflare/package.json index 848de0f98..73a3a976f 100644 --- a/packages/pg-cloudflare/package.json +++ b/packages/pg-cloudflare/package.json @@ -2,13 +2,17 @@ "name": "pg-cloudflare", "version": "1.1.0", "description": "A socket implementation that can run on Cloudflare Workers using native TCP connections.", - "main": "dist/index.js", + "main": "dist/empty.js", "types": "dist/index.d.ts", "license": "MIT", "devDependencies": { "ts-node": "^8.5.4", "typescript": "^4.0.3" }, + "exports": { + "workerd": "./dist/index.js", + "default": "./dist/empty.js" + }, "scripts": { "build": "tsc", "build:watch": "tsc --watch", diff --git a/packages/pg-cloudflare/src/empty.ts b/packages/pg-cloudflare/src/empty.ts new file mode 100644 index 000000000..f1e6740db --- /dev/null +++ b/packages/pg-cloudflare/src/empty.ts @@ -0,0 +1,3 @@ +// This is an empty module that is served up when outside of a workerd environment +// See the `exports` field in package.json +export default {}