diff --git a/integration-tests/esbuild/build.esm-hono-output-cjs.mjs b/integration-tests/esbuild/build.esm-hono-output-cjs.mjs index 188418e7af7..a3b60d3ca03 100644 --- a/integration-tests/esbuild/build.esm-hono-output-cjs.mjs +++ b/integration-tests/esbuild/build.esm-hono-output-cjs.mjs @@ -18,10 +18,6 @@ const external = [ // required if you use profiling '@datadog/pprof', - // @openfeature/core is a peer dependency of @openfeature/server-sdk - // which is used by @datadog/openfeature-node-server - '@openfeature/core', - // required if you use Datadog security features '@datadog/native-appsec', '@datadog/native-iast-taint-tracking', diff --git a/integration-tests/esbuild/build.esm-hono-output-esm.mjs b/integration-tests/esbuild/build.esm-hono-output-esm.mjs index b0029b87122..b30153a22aa 100644 --- a/integration-tests/esbuild/build.esm-hono-output-esm.mjs +++ b/integration-tests/esbuild/build.esm-hono-output-esm.mjs @@ -18,10 +18,6 @@ const external = [ // required if you use profiling '@datadog/pprof', - // @openfeature/core is a peer dependency of @openfeature/server-sdk - // which is used by @datadog/openfeature-node-server - '@openfeature/core', - // required if you use Datadog security features '@datadog/native-appsec', '@datadog/native-iast-taint-tracking', diff --git a/integration-tests/esbuild/build.esm-http-output-cjs.mjs b/integration-tests/esbuild/build.esm-http-output-cjs.mjs index 7af0e78341c..ef9155b3aa7 100644 --- a/integration-tests/esbuild/build.esm-http-output-cjs.mjs +++ b/integration-tests/esbuild/build.esm-http-output-cjs.mjs @@ -18,10 +18,6 @@ const external = [ // required if you use profiling '@datadog/pprof', - // @openfeature/core is a peer dependency of @openfeature/server-sdk - // which is used by @datadog/openfeature-node-server - '@openfeature/core', - // required if you use Datadog security features '@datadog/native-appsec', '@datadog/native-iast-taint-tracking', diff --git a/integration-tests/esbuild/build.esm-http-output-esm.mjs b/integration-tests/esbuild/build.esm-http-output-esm.mjs index 45467dedd8e..427dabb023c 100644 --- a/integration-tests/esbuild/build.esm-http-output-esm.mjs +++ b/integration-tests/esbuild/build.esm-http-output-esm.mjs @@ -18,10 +18,6 @@ const external = [ // required if you use profiling '@datadog/pprof', - // @openfeature/core is a peer dependency of @openfeature/server-sdk - // which is used by @datadog/openfeature-node-server - '@openfeature/core', - // required if you use Datadog security features '@datadog/native-appsec', '@datadog/native-iast-taint-tracking', diff --git a/integration-tests/esbuild/openfeature.spec.js b/integration-tests/esbuild/openfeature.spec.js new file mode 100644 index 00000000000..f151fa227ce --- /dev/null +++ b/integration-tests/esbuild/openfeature.spec.js @@ -0,0 +1,43 @@ +'use strict' + +const { execSync } = require('node:child_process') +const path = require('node:path') + +const { FakeAgent, createSandbox } = require('../helpers') + +// This should switch to our withVersion helper. The order here currently matters. +const esbuildVersions = ['latest', '0.16.12'] + +esbuildVersions.forEach((version) => { + describe('OpenFeature', () => { + let sandbox, agent, cwd + + before(async () => { + sandbox = await createSandbox([`esbuild@${version}`, 'hono', '@hono/node-server'], false, [__dirname]) + cwd = sandbox.folder + // remove all node_modules and bun.lock file and install with yarn + // TODO add this in createSandbox if it's need in more places + execSync(`rm -rf ${path.join(cwd, 'node_modules')}`, { cwd }) + execSync(`rm -rf ${path.join(cwd, 'bun.lock')}`, { cwd }) + execSync('npm install -g yarn', { cwd }) + + execSync('yarn', { cwd }) + }) + + beforeEach(async () => { + agent = await new FakeAgent().start() + }) + + after(() => { + sandbox.remove() + }) + + afterEach(() => { + agent.stop() + }) + + it('should not crash build after installing with yarn', () => { + execSync('node esbuild/build.esm-hono-output-esm.mjs', { cwd }) + }) + }) +}) diff --git a/packages/datadog-esbuild/index.js b/packages/datadog-esbuild/index.js index 592fde53dde..97a318ac3ba 100644 --- a/packages/datadog-esbuild/index.js +++ b/packages/datadog-esbuild/index.js @@ -113,6 +113,14 @@ module.exports.setup = function (build) { ${build.initialOptions.banner.js}` } + try { + // eslint-disable-next-line n/no-unpublished-require + require.resolve('@openfeature/core') + } catch (error) { + build.initialOptions.external ??= [] + build.initialOptions.external.push('@openfeature/core') + } + const esmBuild = isESMBuild(build) if (esmBuild) { if (!build.initialOptions.banner.js.includes('import { createRequire as $dd_createRequire } from \'module\'')) {