dd-trace-js icon indicating copy to clipboard operation
dd-trace-js copied to clipboard

fix(esbuild): call the hook function properly in the bundler register

Open sabrenner opened this issue 6 months ago • 4 comments

What does this PR do?

Calls the hook function properly in bundler-register.js - it's possible for a hook to be an object with a hook function, and not always a hook function directly.

Failure from added test when I reverted the solution

     Command failed: node ./build-and-test-openai.js
Could not store tracer configuration for service discovery
/Users/sam.brenner/dd/dd-trace-js/integration-tests/esbuild/openai-out.js:70816
        hooks[payload.package]();
                              ^

TypeError: hooks[payload.package] is not a function
    at /Users/sam.brenner/dd/dd-trace-js/integration-tests/esbuild/openai-out.js:70816:31
    at Channel.publish (node:diagnostics_channel:150:9)
    at node_modules/openai/resources/chat/completions/completions.js (/Users/sam.brenner/dd/dd-trace-js/integration-tests/esbuild/openai-out.js:106913:10)
    at __require (/Users/sam.brenner/dd/dd-trace-js/integration-tests/esbuild/openai-out.js:9:51)
    at node_modules/openai/resources/chat/chat.js (/Users/sam.brenner/dd/dd-trace-js/integration-tests/esbuild/openai-out.js:106927:47)
    at __require (/Users/sam.brenner/dd/dd-trace-js/integration-tests/esbuild/openai-out.js:9:51)
    at node_modules/openai/resources/chat/index.js (/Users/sam.brenner/dd/dd-trace-js/integration-tests/esbuild/openai-out.js:106965:18)
    at __require (/Users/sam.brenner/dd/dd-trace-js/integration-tests/esbuild/openai-out.js:9:51)
    at node_modules/openai/resources/index.js (/Users/sam.brenner/dd/dd-trace-js/integration-tests/esbuild/openai-out.js:109851:26)
    at __require (/Users/sam.brenner/dd/dd-trace-js/integration-tests/esbuild/openai-out.js:9:51)

Node.js v22.13.1

Motivation

Closes #5925

That issue reported the problem for OpenAI, but by looking at hook.js, this would also be a problem for vitest, langchain, and @vitest/runner.

sabrenner avatar Jun 23 '25 17:06 sabrenner

Overall package size

Self size: 9.74 MB Deduped: 106.25 MB No deduping: 106.77 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 8.5.2 | 19.33 MB | 19.34 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @datadog/pprof | 5.8.2 | 9.56 MB | 9.93 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.3 | 2.95 MB | 5.6 MB | | @datadog/wasm-js-rewriter | 4.0.1 | 2.85 MB | 3.58 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.14.0 | 120.58 kB | 841.68 kB | | source-map | 0.7.4 | 226 kB | 226 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | lru-cache | 7.18.3 | 133.92 kB | 133.92 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 5.3.2 | 53.63 kB | 53.63 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | dc-polyfill | 0.1.9 | 25.11 kB | 25.11 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.2 | 23.54 kB | 23.54 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

github-actions[bot] avatar Jun 23 '25 17:06 github-actions[bot]

Codecov Report

Attention: Patch coverage is 8.33333% with 11 lines in your changes missing coverage. Please review.

Project coverage is 80.78%. Comparing base (205a001) to head (1c0d165). Report is 1 commits behind head on master.

Files with missing lines Patch % Lines
...g-instrumentations/src/helpers/bundler-register.js 8.33% 11 Missing :warning:
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #5934      +/-   ##
==========================================
- Coverage   80.81%   80.78%   -0.04%     
==========================================
  Files         467      467              
  Lines       20009    20017       +8     
==========================================
  Hits        16171    16171              
- Misses       3838     3846       +8     

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

:rocket: New features to boost your workflow:
  • :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

codecov[bot] avatar Jun 23 '25 17:06 codecov[bot]

Benchmarks

Benchmark execution time: 2025-06-23 19:05:20

Comparing candidate commit 1c0d1656d753b4ec518d778ba8de17c61cfa0ec4 in PR branch sabrenner/better-esbuild-hook-support with baseline commit 205a00180402ebf4368ce57fffa7d4a905a52567 in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 1273 metrics, 50 unstable metrics.

pr-commenter[bot] avatar Jun 23 '25 17:06 pr-commenter[bot]

Datadog Report

Branch report: sabrenner/better-esbuild-hook-support Commit report: f20c45c Test service: dd-trace-js-integration-tests

:white_check_mark: 0 Failed, 1258 Passed, 0 Skipped, 16m 58.81s Total Time