# v2.3.0

- feat: support ioredis v5 (#214) (2025-03-31)
- feat: support Redis v4 (#213) (2025-03-31)
- fix(sdk): Update to raygun 2.1.1 (#207) (2025-03-17)
- fix: Support running dev docker container on Apple Silicon (#205) (2025-03-04)
- perf(sdk): replace @raygun-nickj/mmap-io by @riaskov/mmap-io (#209) (2025-03-17)
- test: Support for Elastic v8 (#212) (2025-03-25)
- chore(sdk): update supported libraries (#211) (2025-03-17)
- chore(deps): update and fix vulnerabilites (#215) (2025-04-01)

# v2.2.0

- feat: Enable support for Node 22 (#204)

This release switches internally from `v8-profiler-node8` to `v8-profiler-next`.

# v2.1.0

- fix: fixing audit warnings with major dependency upgrades (#202)
- fix: Automatic `npm audit fix` (#201)
- perf: Ensure Node v18 works (#200)

# v2.0.0
- Moved to Node14+

# v1.6.2
- Attempting to release again to npm

# v1.6.1
- Publishing v1.6.0 to npm via Teamcity/Octopus failed as the artifact was presumably was probably corrupted. Attempting manual npm publish with tested tgz artifact

# v1.6.0
- Add profiling support for triple-parameter calls to http(s).get() and http(s).request()
- Capture the `error` event but allow application to exit as expected when it is emitted

# v1.5.1
- Add support for @elastic/elasticsearch v8.x

# v1.5.0
- TCP transport can now be enabled using the `RAYGUN_APM_TCP_TRANSPORT` environment variable
- Fix exception when creating error without using `new` keyword

# v1.4.2
- Move unnecessary mongodb dependencies to devDependencies
- Remove workaround for historic v8-profiler-node8 build issue on Node v12.0.x-12.15.x

# v1.4.1
- Fix error that could occur when using mssql with no database specified in config
- Missing fields on captured SQL queries will now appear as "<unknown>" instead of preventing trace generation

# v1.4.0
- Add support for 32bit Azure App Service applications
- Fix profiles failing to send on Azure
- Fix generated TypeScript definitions for profiler API
- Fix issue where first trace from process could contain delay due to V8 profiler startup

# v1.3.0
- Add support for Node 15 and 16
- Add support for mongodb@4
- Deprecate support for Node 8 and 9

# v1.2.1
- Fix an issue where https servers could be unresponsive when raygun-apm/http is loaded

# v1.2.0
- Add request filtering support. Can now create an `.apmignore` file to control which routes will be profiled. See Request Filtering section in README for more detail.
- Incoming GraphQL queries will now appear in traces for supported servers
- Traces captured using `raygun-apm/http` more reliably include code triggered asynchronously by the request handler

# v1.1.1
- Fix an error that could occur when using ioredis with raygun-apm
- Fix a memory leak in the native profiler bindings

# v1.1.0
- Add support for Next.js applications (use with-raygun-apm)
- Fix an issue with custom error class behaviour

# v1.0.6
- Fix a small memory leak that could impact performance in long-running applications

# v1.0.5
- Fix an error that could occur when using Sequelize >5 with the pg library
- Fix an error that could occur when querying with the mysql2 library

# v1.0.4
- Fix memory leak that could impact performance of long-running applications

# v1.0.3
- Disable error when worker_threads is loaded prior to raygun-apm
- You can set `RAYGUN_APM_WORKER_THREADS_STRICT_LOAD_ORDER=true` to enable errors if `worker_threads` is loaded prior to raygun-apm

# v1.0.2
- Add support for using raygun-apm with the pm2 process manager

# v1.0.1
- Includes changes from v1.0.1-rc1

# v1.0.1-rc1
- Fix a startup error that could occur when using raygun-apm with ts-node
- raygun-apm can now be loaded from the Node.js REPL

# v1.0.0
- Fix extremely long queries not appearing in traces
- Max query length is now configurable via RAYGUN_APM_MAX_QUERY_SIZE_BYTES

# v1.0.0-rc3
- Add support for using raygun-apm with Azure App Services
- Filenames in traces are now relative to the process's working directory
- Source maps are now applied to traces when available if Node's `--enable-source-maps` flag is used
- Fix an issue where RAYGUN_APM_DISABLE_STACK_SIMPLIFICATION would not be respected
- RAYGUN_APM_SAMPLING_FREQUENCY will now be applied reliably, including worker profiles
- Fix error on uninstall when attempting to remove `with-raygun-apm.ps1` (Windows)
- Fix overrides not applying when agent is installed on a drive other than C: (Windows)
- Fix regression from rc2 that omitted some garbage collection and idle frames

# v1.0.0-rc2
- [breaking!] makeProfiler now returns a Profiler directly instead of a Promise<Profiler>
- runProfiler now takes an optional string label as the second argument, which is used to name the root frame in a trace
- Database query frames now use custom styling in the trace viewer if available

# v0.14.0
- Add support for micro web server

# v0.13.1
- Includes changes from v1.0.0-rc1
- RAYGUN_AGENT_HOST now defaults to 0.0.0.0 instead of localhost
- Use older v8-profiler-node8 version on Node 12.0 -> 12.15 to avoid crash
- License package under MIT

# v1.0.0-rc1
- Warn when unsupported Node version used with raygun-apm/http
- Fix API key environment variable aliases not being applied reliably

# v0.13.0
- [breaking!] The DISABLE_STACK_SIMPLIFICATION environment variable has been renamed to RAYGUN_APM_DISABLE_STACK_SIMPLIFICATION for consistency
- Internal frames from Node and the profiler can now be included in traces by enabling the RAYGUN_APM_INCLUDE_INTERNALS environment variable
- Support disabling async_hooks usage via RAYGUN_APM_DISABLE_ASYNC_HOOKS environment variable
- Garbage collection and idle frames are now included in all parallel traces
- Support changing profiler sample rate via RAYGUN_APM_SAMPLE_FREQUENCY env var
- Fix an issue where overly large SQL queries could cause traces to fail to process
- API key can now be set with Raygun_ApiKey or Raygun_DefaultApiKey
- Overrides path can now be set with RAYGUN_APM_OVERRIDES_PATH as well as PROTON_USER_OVERRIDES_FILE
- Fix setTimeout calls in libaries extending traces - only users timers extend traces now
- Improve timing accuracy on systems where high resolution hardware timers are unavailable

# v0.12.0
 - Support capturing database requests, queries and exceptions inside worker threads
 - Replace mmap-io git dependency with published fork with prebuilt binaries

# v0.11.0
 - Add support for memcached library
 - Add support for Shared File/Memory transport, enables use of profiler on Azure
 - Include TypeScript definitions in released package
 - Improved performance across all Node versions
 - Document supported Node version, profiler will warn and not run if using unsupported version
 - Fix performance issue on Node 12+ (starting a profile could block main thread)
 - Fix profiler preventing graceful process exit in certain cases
 - Fix express-router causing incorrect incoming http url in certain cases
 - Fix two profilers being created if using HTTP and HTTPS modules simultaneously
 - RAYGUN_APM_DISABLE_PROFILING now applies when requiring the profiler directly, rather than just for HTTP/S profiles
 - RAYGUN_APM_CONCURRENT_PROFILE_LIMIT can now be configured, allowing capturing more profiles at once at the expense of performance

# v0.10.0
 - Profiles will continue to capture until relevant requests, queries and timers complete
 - Worker thread profiling is now enabled by default
 - Discard extremely small traces (less than three stack samples on the main thread)
 - Add configurable timeout for profiles, defaults to 60 seconds
 - Restructure http/s patches to improve outgoing http frame capture reliability
 - Improve timing accuracy of worker thread profiles on systems without high-resolution timers
 - Only load worker thread patch if supported Node version is in use
 - Warn if an unsupported Node version is in use if RAYGUN_APM_WORKER_PROFILING is explicitly enabled

# v0.9.2
 - Restructure mongodb patch to use built-in MongoDB APM instrumentation.
 - Improve quality of generated traces in environments where high resolution timers are unavailable
 - Improve reliability of order of outgoing batches

# v0.9.1
 - Fix an issue where error stack filtering would not work if prepareStackTrace is not set

# v0.9.0
 - Add experimental support for profiling workers
 - Fix some mongodb commands not appearing in trace
 - Fix mongodb frames not showing up when using mongoose
 - Fix internal crash_reporting module appearing in error stacks

# v0.8.0
 - Add support for Raygun crash reporting. Any errors reported to Raygun while profiling will appear in the trace, with a link to the error report
 - Fix mongodb and redis query frames not appearing when trace was captured on Windows

# v0.7.1
 - Fix error when making pg query with two arguments
 - Improve accuracy of pg query frame timings
 - Fix overrides not working if file has CR/LF line endings
 - Allow native and internal Node modules to be filtered within overrides
 - Fix outgoing http requests sometimes being counted multiple times
 - Fix issue where some elasticsearch trace frames would be unlabelled
 - Update v8-profiler-node8 to v6.3.0
 - Fix issue where timings on Windows were interpreted in the wrong order of magnitude

# v0.7.0
  - Add `with-raygun-apm` helper scripts to load profiler without changing app code
  - Fix issue where making a pg query without passing a callback would throw an error
  - Fix issue where usage of deprecated style for mongodb find would throw an error

# v0.6.1
  - Fix issue where incoming HTTP request path was undefined
  - Throw an error if raygun-apm is loaded after a native module that should be patched

# v0.6.0
  - Call stacks are now simplified to improve the clarity of traces (can be disabled by setting DISABLE_STACK_SIMPLIFICATION env var)
  - Improve duration accuracy for captured requests and queries

# v0.5.2
 - Fix bug where complex traces could become corrupted

# v0.5.1
 - Update README to reflect newly supported database adapters

# v0.5.0
 - Add support for @elastic/elasticsearch
 - Raygun API key can now be configured per app with `RAYGUN_API_KEY` environment variable

# v0.4.1
 - Fix internal frames from profiler appearing in traces from Heroku apps

# v0.4.0
 - Add support for redis and ioredis

# v0.3.0
 - Add support for mongodb adapter

# v0.2.4
 - Fix issue where async contexts are discarded prematurely, leading to trace failing to build

# v0.2.3
 - Fix error on installation when a supported package is not found
 - Fix an issue where V8 profiler frames could appear in traces
 - Optimized profiler CPU and memory usage - now has significantly less overhead

# v0.2.2
 - Remove broken references to repository
 - Include supported libraries data to fix postinstall check
 - Rename DEBUG -> `RAYGUN_APM_DEBUG`, remove documentation entry

# v0.2.1

 - Fix postinstall script not running on Windows due to non-portable unix style path

# v0.2.0

 - Add postinstall script to check that raygun-apm is compatible with all the installed dependencies.

# v0.1.1

 - Fix issue with packaging

# v0.1.0

 - Initial release
