diff --git a/.changeset/nine-tomatoes-smash.md b/.changeset/nine-tomatoes-smash.md new file mode 100644 index 000000000..80a9dcde9 --- /dev/null +++ b/.changeset/nine-tomatoes-smash.md @@ -0,0 +1,5 @@ +--- +'@vercel/edge-config': major +--- + +drop cjs support diff --git a/.changeset/olive-spiders-boil.md b/.changeset/olive-spiders-boil.md new file mode 100644 index 000000000..183b193ac --- /dev/null +++ b/.changeset/olive-spiders-boil.md @@ -0,0 +1,5 @@ +--- +'@vercel/edge-config': patch +--- + +fix dynamic import by adding webpackIgnore comment diff --git a/package.json b/package.json index b8aa97c7d..5bb9f0677 100644 --- a/package.json +++ b/package.json @@ -6,11 +6,7 @@ "license": "MIT", "sideEffects": false, "type": "module", - "exports": { - "import": "./dist/index.js", - "require": "./dist/index.cjs" - }, - "main": "./dist/index.cjs", + "exports": "./dist/index.js", "module": "./dist/index.js", "types": "./dist/index.d.ts", "files": [ diff --git a/src/index.ts b/src/index.ts index 3dbfa6043..ecd51ce40 100644 --- a/src/index.ts +++ b/src/index.ts @@ -85,7 +85,9 @@ async function getLocalEdgeConfig( edgeConfigId: string, ): Promise { const embeddedEdgeConfigPath = `/opt/edge-configs/${edgeConfigId}.json`; - return import(embeddedEdgeConfigPath).catch( + // the webpackIgnore: true comment below gets dropped by esbuild, + // but we add it back in manually using the onSuccess callback + return import(/* webpackIgnore: true */ embeddedEdgeConfigPath).catch( () => null, ) as Promise; } diff --git a/tsup.config.js b/tsup.config.js index 412090fc0..f4afaddca 100644 --- a/tsup.config.js +++ b/tsup.config.js @@ -1,9 +1,10 @@ +import fs from 'node:fs'; import { defineConfig } from 'tsup'; // eslint-disable-next-line import/no-default-export export default defineConfig({ entry: ['src/index.ts'], - format: ['esm', 'cjs'], + format: ['esm'], splitting: true, sourcemap: false, minify: true, @@ -11,4 +12,12 @@ export default defineConfig({ skipNodeModulesBundle: true, dts: true, external: ['node_modules'], + onSuccess: () => { + const path = './dist/index.js'; + const content = fs.readFileSync(path, 'utf-8'); + fs.writeFileSync( + path, + content.replace('import(', 'import(/* webpackIgnore: true */'), + ); + }, });