dd-trace 6.8.0 → 6.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/ci/diagnose.js +27 -25
  2. package/ci/init.js +6 -6
  3. package/ci/runbook.md +114 -20
  4. package/ci/test-optimization-validation/approval-artifacts.js +36 -3
  5. package/ci/test-optimization-validation/approval.js +78 -22
  6. package/ci/test-optimization-validation/blocker-category.js +24 -0
  7. package/ci/test-optimization-validation/ci-discovery.js +23 -17
  8. package/ci/test-optimization-validation/ci-package-scripts.js +34 -6
  9. package/ci/test-optimization-validation/ci-remediation.js +1 -1
  10. package/ci/test-optimization-validation/cli.js +280 -52
  11. package/ci/test-optimization-validation/command-blocker.js +159 -20
  12. package/ci/test-optimization-validation/command-output-policy.js +9 -3
  13. package/ci/test-optimization-validation/command-runner.js +9 -7
  14. package/ci/test-optimization-validation/environment.js +4 -2
  15. package/ci/test-optimization-validation/executable.js +15 -13
  16. package/ci/test-optimization-validation/execution-lock.js +70 -0
  17. package/ci/test-optimization-validation/framework-adapters/cucumber-validation.json +3 -0
  18. package/ci/test-optimization-validation/framework-adapters/cucumber.js +657 -5
  19. package/ci/test-optimization-validation/framework-adapters/vitest.js +517 -0
  20. package/ci/test-optimization-validation/generated-files.js +38 -28
  21. package/ci/test-optimization-validation/generated-test-contract.js +8 -4
  22. package/ci/test-optimization-validation/generated-verifier.js +24 -17
  23. package/ci/test-optimization-validation/literal-glob.js +52 -0
  24. package/ci/test-optimization-validation/manifest-loader.js +3 -0
  25. package/ci/test-optimization-validation/manifest-scaffold.js +300 -50
  26. package/ci/test-optimization-validation/manifest-schema.js +80 -17
  27. package/ci/test-optimization-validation/offline-fixtures.js +13 -4
  28. package/ci/test-optimization-validation/package-check.js +94 -0
  29. package/ci/test-optimization-validation/plan-writer.js +183 -10
  30. package/ci/test-optimization-validation/preflight-runner.js +110 -31
  31. package/ci/test-optimization-validation/project-build-artifact.js +31 -0
  32. package/ci/test-optimization-validation/redaction.js +18 -27
  33. package/ci/test-optimization-validation/report-writer.js +182 -48
  34. package/ci/test-optimization-validation/result-semantics.js +20 -3
  35. package/ci/test-optimization-validation/runner-command.js +40 -20
  36. package/ci/test-optimization-validation/runner-contract.js +79 -43
  37. package/ci/test-optimization-validation/scenarios/basic-reporting.js +59 -5
  38. package/ci/test-optimization-validation/scenarios/ci-wiring.js +141 -35
  39. package/ci/test-optimization-validation/scenarios/helpers.js +30 -6
  40. package/ci/test-optimization-validation/static-diagnosis.js +10 -3
  41. package/ci/test-optimization-validation/test-output.js +2 -1
  42. package/ci/test-optimization-validation/validation-blocker.js +21 -0
  43. package/ci/vitest-no-worker-init-setup.mjs +30 -34
  44. package/index.d.ts +98 -1
  45. package/init.js +1 -17
  46. package/initialize.mjs +11 -0
  47. package/loader-hook.mjs +6 -4
  48. package/package.json +5 -3
  49. package/packages/datadog-core/src/utils/src/parse-tags.js +0 -1
  50. package/packages/datadog-esbuild/src/utils.js +16 -1
  51. package/packages/datadog-instrumentations/src/ai.js +61 -34
  52. package/packages/datadog-instrumentations/src/bluebird.js +6 -6
  53. package/packages/datadog-instrumentations/src/claude-agent-sdk.js +81 -5
  54. package/packages/datadog-instrumentations/src/cucumber.js +124 -47
  55. package/packages/datadog-instrumentations/src/dns.js +21 -2
  56. package/packages/datadog-instrumentations/src/electron.js +1 -0
  57. package/packages/datadog-instrumentations/src/fastify.js +3 -1
  58. package/packages/datadog-instrumentations/src/grpc/client.js +4 -2
  59. package/packages/datadog-instrumentations/src/helpers/callback-instrumentor.js +3 -1
  60. package/packages/datadog-instrumentations/src/helpers/hooks.js +2 -0
  61. package/packages/datadog-instrumentations/src/helpers/rewriter/index.js +33 -9
  62. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/webdriverio.js +118 -0
  63. package/packages/datadog-instrumentations/src/helpers/rewriter/loader.mjs +20 -2
  64. package/packages/datadog-instrumentations/src/helpers/rewriter/targets.js +32 -0
  65. package/packages/datadog-instrumentations/src/helpers/rewriter/targets.json +61 -0
  66. package/packages/datadog-instrumentations/src/helpers/router-helper.js +37 -6
  67. package/packages/datadog-instrumentations/src/jest/coverage-backfill.js +1 -1
  68. package/packages/datadog-instrumentations/src/jest.js +979 -233
  69. package/packages/datadog-instrumentations/src/mocha/main.js +107 -9
  70. package/packages/datadog-instrumentations/src/mocha/utils.js +64 -42
  71. package/packages/datadog-instrumentations/src/mocha/webdriverio-protocol.js +25 -0
  72. package/packages/datadog-instrumentations/src/mocha/worker.js +12 -18
  73. package/packages/datadog-instrumentations/src/mysql.js +1 -1
  74. package/packages/datadog-instrumentations/src/next.js +155 -23
  75. package/packages/datadog-instrumentations/src/openai.js +14 -0
  76. package/packages/datadog-instrumentations/src/pg.js +180 -6
  77. package/packages/datadog-instrumentations/src/playwright.js +173 -79
  78. package/packages/datadog-instrumentations/src/promise-js.js +4 -4
  79. package/packages/datadog-instrumentations/src/promise.js +3 -3
  80. package/packages/datadog-instrumentations/src/router.js +195 -19
  81. package/packages/datadog-instrumentations/src/vitest-main-no-worker-init.js +43 -10
  82. package/packages/datadog-instrumentations/src/vitest-main.js +360 -56
  83. package/packages/datadog-instrumentations/src/vitest-util.js +42 -7
  84. package/packages/datadog-instrumentations/src/vitest-worker.js +234 -17
  85. package/packages/datadog-instrumentations/src/webdriverio.js +194 -18
  86. package/packages/datadog-instrumentations/src/when.js +3 -3
  87. package/packages/datadog-instrumentations/src/ws.js +5 -1
  88. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +59 -48
  89. package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +1 -3
  90. package/packages/datadog-plugin-cucumber/src/index.js +5 -1
  91. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +50 -46
  92. package/packages/datadog-plugin-cypress/src/support.js +7 -4
  93. package/packages/datadog-plugin-electron/src/net.js +10 -4
  94. package/packages/datadog-plugin-http/src/client.js +1 -1
  95. package/packages/datadog-plugin-http2/src/client.js +1 -1
  96. package/packages/datadog-plugin-jest/src/index.js +1 -18
  97. package/packages/datadog-plugin-jest/src/util.js +2 -0
  98. package/packages/datadog-plugin-kafkajs/src/producer.js +2 -1
  99. package/packages/datadog-plugin-mocha/src/index.js +318 -1
  100. package/packages/datadog-plugin-next/src/index.js +57 -9
  101. package/packages/datadog-plugin-openai/src/tracing.js +4 -0
  102. package/packages/datadog-plugin-pg/src/index.js +65 -1
  103. package/packages/datadog-plugin-playwright/src/index.js +1 -1
  104. package/packages/datadog-plugin-vitest/src/index.js +95 -7
  105. package/packages/datadog-shimmer/src/shimmer.js +6 -2
  106. package/packages/dd-trace/src/aiguard/sdk.js +3 -0
  107. package/packages/dd-trace/src/appsec/{blocking.js → blocking/index.js} +26 -6
  108. package/packages/dd-trace/src/appsec/handlers/auth.js +62 -0
  109. package/packages/dd-trace/src/appsec/handlers/http-request.js +215 -0
  110. package/packages/dd-trace/src/appsec/handlers/http-response.js +78 -0
  111. package/packages/dd-trace/src/appsec/handlers/http-shared.js +24 -0
  112. package/packages/dd-trace/src/appsec/handlers/payments.js +104 -0
  113. package/packages/dd-trace/src/appsec/iast/analyzers/hsts-header-missing-analyzer.js +1 -1
  114. package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +1 -1
  115. package/packages/dd-trace/src/appsec/index.js +48 -476
  116. package/packages/dd-trace/src/appsec/sdk/track_event.js +9 -0
  117. package/packages/dd-trace/src/ci-visibility/coverage-report-discovery.js +46 -14
  118. package/packages/dd-trace/src/ci-visibility/efd-retry-policy.js +89 -0
  119. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +27 -13
  120. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +17 -0
  121. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +21 -1
  122. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +22 -7
  123. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +9 -14
  124. package/packages/dd-trace/src/ci-visibility/requests/upload-coverage-report.js +21 -5
  125. package/packages/dd-trace/src/ci-visibility/test-optimization-http-cache-schema.js +1 -1
  126. package/packages/dd-trace/src/ci-visibility/test-optimization-http-cache.js +5 -1
  127. package/packages/dd-trace/src/config/generated-config-types.d.ts +2 -0
  128. package/packages/dd-trace/src/config/helper.js +2 -0
  129. package/packages/dd-trace/src/config/index.js +16 -5
  130. package/packages/dd-trace/src/config/remote_config.js +1 -1
  131. package/packages/dd-trace/src/config/supported-configurations.json +8 -0
  132. package/packages/dd-trace/src/debugger/devtools_client/status.js +1 -1
  133. package/packages/dd-trace/src/encode/coverage-ci-visibility.js +0 -1
  134. package/packages/dd-trace/src/guardrails/apply-pm2-env.js +16 -0
  135. package/packages/dd-trace/src/guardrails/log.js +1 -10
  136. package/packages/dd-trace/src/llmobs/eval-metric.js +249 -0
  137. package/packages/dd-trace/src/llmobs/experiments/index.js +33 -25
  138. package/packages/dd-trace/src/llmobs/experiments/util.js +4 -2
  139. package/packages/dd-trace/src/llmobs/noop.js +2 -0
  140. package/packages/dd-trace/src/llmobs/plugins/ai/ddTelemetry.js +1 -1
  141. package/packages/dd-trace/src/llmobs/plugins/ai/util.js +1 -1
  142. package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +5 -5
  143. package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +1 -1
  144. package/packages/dd-trace/src/llmobs/sdk.js +149 -68
  145. package/packages/dd-trace/src/llmobs/telemetry.js +18 -0
  146. package/packages/dd-trace/src/llmobs/writers/base.js +3 -0
  147. package/packages/dd-trace/src/llmobs/writers/util.js +2 -0
  148. package/packages/dd-trace/src/log/channels.js +1 -9
  149. package/packages/dd-trace/src/log/levels.js +12 -0
  150. package/packages/dd-trace/src/openfeature/writers/exposures.js +1 -1
  151. package/packages/dd-trace/src/openfeature/writers/util.js +1 -1
  152. package/packages/dd-trace/src/opentelemetry/logs/batch_log_processor.js +1 -1
  153. package/packages/dd-trace/src/opentelemetry/metrics/meter.js +8 -4
  154. package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +1 -1
  155. package/packages/dd-trace/src/opentelemetry/span.js +4 -0
  156. package/packages/dd-trace/src/plugins/ci_plugin.js +21 -5
  157. package/packages/dd-trace/src/plugins/index.js +1 -0
  158. package/packages/dd-trace/src/plugins/util/ci.js +6 -0
  159. package/packages/dd-trace/src/plugins/util/git.js +6 -4
  160. package/packages/dd-trace/src/plugins/util/http-otel-semantics.js +2 -2
  161. package/packages/dd-trace/src/plugins/util/ip_extractor.js +1 -1
  162. package/packages/dd-trace/src/plugins/util/stacktrace.js +3 -0
  163. package/packages/dd-trace/src/plugins/util/test.js +319 -75
  164. package/packages/dd-trace/src/plugins/util/url.js +1 -1
  165. package/packages/dd-trace/src/plugins/util/web.js +23 -1
  166. package/packages/dd-trace/src/profiler.js +1 -1
  167. package/packages/dd-trace/src/profiling/exporters/event_serializer.js +1 -1
  168. package/packages/dd-trace/src/profiling/profilers/events.js +2 -2
  169. package/packages/dd-trace/src/proxy.js +1 -0
  170. package/packages/dd-trace/src/ritm.js +5 -0
  171. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +4 -2
  172. package/packages/dd-trace/src/sampling_rule.js +4 -2
  173. package/packages/dd-trace/src/service-naming/schemas/v0/storage.js +1 -1
  174. package/packages/dd-trace/src/service-naming/schemas/v1/storage.js +1 -1
  175. package/packages/dd-trace/src/telemetry/logs/index.js +3 -0
  176. package/packages/dd-trace/src/telemetry/telemetry.js +1 -1
  177. package/vendor/dist/pprof-format/index.js +1 -1
  178. package/version.js +10 -8
  179. /package/packages/dd-trace/src/appsec/{blocked_templates.js → blocking/templates.js} +0 -0
@@ -34,6 +34,7 @@ const HTTP_CLIENT_IP = tags.HTTP_CLIENT_IP
34
34
  const MANUAL_DROP = tags.MANUAL_DROP
35
35
 
36
36
  const contexts = new WeakMap()
37
+ const requests = new WeakMap()
37
38
 
38
39
  // TODO: change this to no longer rely on creating a dummy plugin to be able to access startSpan
39
40
  function createWebPlugin (tracer, config = {}) {
@@ -127,6 +128,7 @@ const web = {
127
128
  context.tracer = tracer
128
129
  context.span = span
129
130
  context.res = res
131
+ requests.set(span, req)
130
132
 
131
133
  this.setConfig(req, config)
132
134
  addRequestTags(context, this.TYPE)
@@ -219,7 +221,7 @@ const web = {
219
221
  const store = legacyStorage.getStore()
220
222
  const pubsubSpan = store?.span?._name === 'pubsub.push.receive' ? store.span : null
221
223
 
222
- let childOf = pubsubSpan || tracer.extract(FORMAT_HTTP_HEADERS, headers)
224
+ let childOf = pubsubSpan || this.extractIncomingServerContext(tracer, headers)
223
225
 
224
226
  // we may have headers signaling a router proxy span should be created (such as for AWS API Gateway)
225
227
  if (tracer._config?.inferredProxyServicesEnabled) {
@@ -232,6 +234,10 @@ const web = {
232
234
  return startSpanHelper(tracer, name, { childOf }, traceCtx, config)
233
235
  },
234
236
 
237
+ extractIncomingServerContext (tracer, headers) {
238
+ return tracer.extract(FORMAT_HTTP_HEADERS, normalizeHeadersCarrier(headers))
239
+ },
240
+
235
241
  // Validate a request's status code and then add error tags if necessary
236
242
  addStatusError (req, statusCode) {
237
243
  const context = contexts.get(req)
@@ -307,6 +313,7 @@ const web = {
307
313
  web.finishMiddleware(context)
308
314
 
309
315
  web.finishSpan(context, spanType)
316
+ requests.delete(context.span)
310
317
 
311
318
  finishInferredProxySpan(context)
312
319
  },
@@ -336,6 +343,9 @@ const web = {
336
343
  getContext (req) {
337
344
  return contexts.get(req)
338
345
  },
346
+ getRequest (span) {
347
+ return requests.get(span)
348
+ },
339
349
  setRouteOrEndpointTag (req) {
340
350
  const context = contexts.get(req)
341
351
 
@@ -345,6 +355,18 @@ const web = {
345
355
  },
346
356
  }
347
357
 
358
+ function normalizeHeadersCarrier (headers) {
359
+ if (!headers || typeof headers.get !== 'function' || typeof headers[Symbol.iterator] !== 'function') {
360
+ return headers
361
+ }
362
+
363
+ const carrier = {}
364
+ for (const [key, value] of headers) {
365
+ carrier[String(key).toLowerCase()] = value
366
+ }
367
+ return carrier
368
+ }
369
+
348
370
  function addAllowHeaders (req, res, headers) {
349
371
  const allowHeaders = splitHeader(headers['access-control-allow-headers'])
350
372
  const requestHeaders = splitHeader(req.headers['access-control-request-headers'])
@@ -20,7 +20,7 @@ module.exports = {
20
20
 
21
21
  /**
22
22
  * Declares the set of custom label keys that will be used with
23
- * {@link runWithLabels}.
23
+ * `runWithLabels`.
24
24
  *
25
25
  * @param {Iterable<string>} keys - Custom label key names
26
26
  */
@@ -43,7 +43,7 @@ class EventSerializer {
43
43
 
44
44
  /**
45
45
  * Returns the destination URL for the near-OOM export subprocess, or nothing when this exporter
46
- * does not support OOM export. Overridden by {@link AgentExporter} and {@link FileExporter}.
46
+ * does not support OOM export. Overridden by `AgentExporter` and `FileExporter`.
47
47
  *
48
48
  * @returns {URL | undefined}
49
49
  */
@@ -2,7 +2,7 @@
2
2
 
3
3
  const { performance, constants, PerformanceObserver } = require('perf_hooks')
4
4
  const {
5
- Function,
5
+ Function: PprofFunction,
6
6
  Label,
7
7
  Line,
8
8
  Location,
@@ -256,7 +256,7 @@ class EventSerializer {
256
256
  // A synthetic single-frame location to serve as the location for timeline
257
257
  // samples. We need these as the profiling backend (mimicking official pprof
258
258
  // tool's behavior) ignores these.
259
- const fn = new Function({ id: this.functions.length + 1, name: this.stringTable.dedup('') })
259
+ const fn = new PprofFunction({ id: this.functions.length + 1, name: this.stringTable.dedup('') })
260
260
  this.functions.push(fn)
261
261
  const line = new Line({ functionId: fn.id })
262
262
  const location = new Location({ id: this.locations.length + 1, line: [line] })
@@ -49,6 +49,7 @@ class LazyModule {
49
49
 
50
50
  /**
51
51
  * @param {import('./config/config-base')} config - Tracer configuration
52
+ * @param {...unknown} args - Extra arguments forwarded to the lazily loaded module
52
53
  */
53
54
  enable (config, ...args) {
54
55
  this.module = this.provider()
@@ -37,6 +37,11 @@ const moduleLoadEndChannel = dc.channel('dd-trace:moduleLoadEnd')
37
37
  * @param {string[]} modules list of modules to hook into
38
38
  * @param {Function} onrequire callback to be executed upon encountering module
39
39
  */
40
+ /**
41
+ * @param {string[]} modules list of modules to hook into
42
+ * @param {object | Function} [options] hook options, or the `onrequire` callback
43
+ * @param {Function} [onrequire] callback to be executed upon encountering module
44
+ */
40
45
  function Hook (modules, options, onrequire) {
41
46
  if (!(this instanceof Hook)) return new Hook(modules, options, onrequire)
42
47
  if (typeof options === 'function') {
@@ -11,11 +11,13 @@ const { NODE_MAJOR, NODE_MINOR } = require('../../../../version')
11
11
  const { createMetricsClient } = require('./client')
12
12
 
13
13
  const eventLoopDelayResolution = 4
14
- const EVENT_LOOP_SAMPLE_PER_ITERATION_AVAILABLE = NODE_MAJOR > 26 || (NODE_MAJOR === 26 && NODE_MINOR >= 5)
14
+ const EVENT_LOOP_SAMPLE_PER_ITERATION_AVAILABLE = NODE_MAJOR > 26 ||
15
+ (NODE_MAJOR === 26 && NODE_MINOR >= 5) ||
16
+ (NODE_MAJOR === 24 && NODE_MINOR >= 19)
15
17
 
16
18
  // @datadog/native-metrics is only needed on Node versions where
17
19
  // monitorEventLoopDelay's samplePerIteration option is unavailable.
18
- // TODO: remove @datadog/native-metrics and this branch once Node < 26.5 is no longer supported.
20
+ // TODO: remove @datadog/native-metrics and this branch once all supported Node versions provide this option.
19
21
  const NATIVE_METRICS_REQUIRED = !EVENT_LOOP_SAMPLE_PER_ITERATION_AVAILABLE
20
22
 
21
23
  let nativeMetrics = null
@@ -180,8 +180,10 @@ class SamplingRule {
180
180
  if (resource) {
181
181
  this.matchers.push(matcher(resource, resourceLocator))
182
182
  }
183
- for (const [key, value] of Object.entries(tags || {})) {
184
- this.matchers.push(matcher(value, makeTagLocator(key)))
183
+ if (tags) {
184
+ for (const [key, value] of Object.entries(tags)) {
185
+ this.matchers.push(matcher(value, makeTagLocator(key)))
186
+ }
185
187
  }
186
188
 
187
189
  this._sampler = new Sampler(sampleRate)
@@ -150,7 +150,7 @@ const storage = {
150
150
  },
151
151
  },
152
152
  pg: {
153
- opName: () => 'pg.query',
153
+ opName: ({ operation = 'query' }) => `pg.${operation}`,
154
154
  serviceName: withSuffixFunction('postgres'),
155
155
  serviceSource: ({ tracerService, pluginConfig, connectionName }) => {
156
156
  return optionServiceSource({ tracerService, pluginConfig, connectionName, integration: 'pg' })
@@ -82,7 +82,7 @@ const storage = {
82
82
  serviceSource: optionServiceSource,
83
83
  },
84
84
  pg: {
85
- opName: () => 'postgresql.query',
85
+ opName: ({ operation = 'query' }) => `postgresql.${operation}`,
86
86
  serviceName: withFunction,
87
87
  serviceSource: optionServiceSource,
88
88
  },
@@ -13,6 +13,9 @@ let enabled = false
13
13
  * Telemetry logs api defines only ERROR, WARN and DEBUG levels:
14
14
  * - WARN level is enabled by default
15
15
  * - DEBUG level will be possible to activate with an env var or telemetry config property
16
+ *
17
+ * @param {string | undefined} level
18
+ * @returns {boolean}
16
19
  */
17
20
  function isLevelEnabled (level) {
18
21
  return isValidLevel(level)
@@ -130,7 +130,7 @@ function updateRetryData (error, retryObj) {
130
130
 
131
131
  function getIntegrations () {
132
132
  const newIntegrations = /** @type {Integration[]} */ ([])
133
- for (const pluginName of Object.keys(pluginManager._pluginsByName ?? {})) {
133
+ for (const pluginName of Object.keys(pluginManager._pluginsByName)) {
134
134
  if (!sentIntegrations.has(pluginName)) {
135
135
  newIntegrations.push({
136
136
  name: pluginName,
@@ -1 +1 @@
1
- (()=>{"use strict";var e,t,r={};r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};r.r(i),r.d(i,{Function:()=>Function,Label:()=>Label,Line:()=>Line,Location:()=>Location,Mapping:()=>Mapping,Profile:()=>Profile,Sample:()=>Sample,StringTable:()=>StringTable,ValueType:()=>ValueType,emptyTableToken:()=>c});var __classPrivateFieldGet=function(e,t,r,i){if("a"===r&&!i)throw TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?i:"a"===r?i.call(e):i?i.value:t.get(e)};let n=2n**32n-1n,s=0x100000000-1,a=0x100000000-1+1,o="u"<typeof Buffer?e=>new TextEncoder().encode(e):e=>Buffer.from(e,"utf8");function countNumberBytes(e){if(!e.length)return 0;let t=0;for(;t<e.length&&e[t++]>=128;);return t}function decodeBigNumber(e){if(!e.length)return BigInt(0);let t=BigInt(127&e[0]),r=0;for(;e[r++]>=128;)t|=BigInt(127&e[r])<<BigInt(7*r);return t}function makeValue(e,t=0){return{value:e,offset:t}}function getValue(e,t){switch(e){case u:for(let e=0;e<t.length;e++)if(!(128&t[e]))return makeValue(t.subarray(0,e+1));return makeValue(t);case d:{let e=countNumberBytes(t),r=decodeNumber(t);return makeValue(t.subarray(e,Number(r)+e),e)}default:throw Error(`Unrecognized value type: ${e}`)}}function lowBits(e){return"bigint"!=typeof e?(e>>>0)%a:Number(e&n)}function highBits(e){return"bigint"!=typeof e?e/a>>>0:Number(e>>32n&n)}function long(e){let t=e<0;t&&(e=-e);let r=lowBits(e),i=highBits(e);return t&&(i=~i>>>0,r=~r>>>0,++r>s&&(r=0,++i>s&&(i=0))),[i,r]}let u=0,d=2;function decodeNumber(e){if(countNumberBytes(e)>4)return decodeBigNumber(e);if(!e.length)return 0;let t=127&e[0],r=0;for(;e[r++]>=128;)t|=(127&e[r])<<7*r;return t}function decodeNumbers(e){let t=[],r=0;for(let i=0;i<e.length;i++)(128&e[i])==0&&(t.push(decodeNumber(e.subarray(r,i+1))),r=i+1);return t}function push(e,t){return null==t?[e]:(t.push(e),t)}function pushAll(e,t){if(null==t)return e;for(let r of e)t.push(r);return t}function measureNumber(e){if(0===e||0n===e)return 0;let[t,r]=long(e),i=(r>>>28|t<<4)>>>0,n=t>>>24;return 0!==n?n<128?9:10:0!==i?i<16384?i<128?5:6:i<2097152?7:8:r<16384?r<128?1:2:r<2097152?3:4}function measureValue(e){return void 0===e?0:"number"==typeof e||"bigint"==typeof e?measureNumber(e)||1:e.length}function measureArray(e){let t=0;for(let r of e)t+=measureValue(r);return t}function measureNumberField(e){let t=measureNumber(e);return t?1+t:0}function measureNumberArrayField(e){let t=0;for(let r of e)t+=measureNumber(r)||1;return t?1+measureNumber(t)+t:0}function measureLengthDelimField(e){let t=measureValue(e);return t?1+measureNumber(t)+t:0}function measureLengthDelimArrayField(e){let t=0;for(let r of e)t+=measureLengthDelimField(r);return t}function encodeNumber(e,t,r){if(0===r||0n===r)return e[t++]=0,t;let[i,n]=long(r);for(;i;)e[t++]=127&n|128,n=(n>>>7|i<<25)>>>0,i>>>=7;for(;n>127;)e[t++]=127&n|128,n>>>=7;return e[t++]=n,t}let c=Symbol();let StringTable=class StringTable{constructor(r){this.strings=[],e.set(this,[]),t.set(this,new Map),r!==c&&this.dedup("")}get encodedLength(){let t=0;for(let r of __classPrivateFieldGet(this,e,"f"))t+=r.length;return t}_encodeToBuffer(t,r){for(let i of __classPrivateFieldGet(this,e,"f"))t.set(i,r),r+=i.length;return r}encode(e=new Uint8Array(this.encodedLength)){return this._encodeToBuffer(e,0),e}static _encodeStringFromUtf8(e){let t=new Uint8Array(1+e.length+(measureNumber(e.length)||1)),r=0;return t[r++]=50,r=encodeNumber(t,r,e.length),e.length>0&&t.set(e,r),t}static _encodeString(e){return StringTable._encodeStringFromUtf8(o(e))}dedup(r){if("number"==typeof r)return r;if(!__classPrivateFieldGet(this,t,"f").has(r)){let i=this.strings.push(r)-1;__classPrivateFieldGet(this,t,"f").set(r,i),__classPrivateFieldGet(this,e,"f").push(StringTable._encodeString(r))}return __classPrivateFieldGet(this,t,"f").get(r)}_decodeString(r){let i=new TextDecoder().decode(r);__classPrivateFieldGet(this,t,"f").set(i,this.strings.push(i)-1),__classPrivateFieldGet(this,e,"f").push(StringTable._encodeStringFromUtf8(r))}};function decode(e,t){let r={},i=0;for(;i<e.length;){let n=e[i]>>3,s=7&e[i];i++;let{offset:a,value:o}=getValue(s,e.subarray(i));i+=o.length+a,t(r,n,o)}return r}e=new WeakMap,t=new WeakMap;let ValueType=class ValueType{static create(e){return e instanceof ValueType?e:new ValueType(e)}constructor(e){this.type=e.type||0,this.unit=e.unit||0}get length(){return 0+measureNumberField(this.type)+measureNumberField(this.unit)}_encodeToBuffer(e,t=0){return this.type&&(e[t++]=8,t=encodeNumber(e,t,this.type)),this.unit&&(e[t++]=16,t=encodeNumber(e,t,this.unit)),t}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.type=decodeNumber(r);break;case 2:e.unit=decodeNumber(r)}}static decode(e){return new this(decode(e,this.decodeValue))}};let Label=class Label{static create(e){return e instanceof Label?e:new Label(e)}constructor(e){this.key=e.key||0,this.str=e.str||0,this.num=e.num||0,this.numUnit=e.numUnit||0}get length(){return 0+measureNumberField(this.key)+measureNumberField(this.str)+measureNumberField(this.num)+measureNumberField(this.numUnit)}_encodeToBuffer(e,t=0){return this.key&&(e[t++]=8,t=encodeNumber(e,t,this.key)),this.str&&(e[t++]=16,t=encodeNumber(e,t,this.str)),this.num&&(e[t++]=24,t=encodeNumber(e,t,this.num)),this.numUnit&&(e[t++]=32,t=encodeNumber(e,t,this.numUnit)),t}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.key=decodeNumber(r);break;case 2:e.str=decodeNumber(r);break;case 3:e.num=decodeNumber(r);break;case 4:e.numUnit=decodeNumber(r)}}static decode(e){return new this(decode(e,this.decodeValue))}};let Sample=class Sample{static create(e){return e instanceof Sample?e:new Sample(e)}constructor(e){this.locationId=e.locationId||[],this.value=e.value||[],this.label=(e.label||[]).map(Label.create)}get length(){return 0+measureNumberArrayField(this.locationId)+measureNumberArrayField(this.value)+measureLengthDelimArrayField(this.label)}_encodeToBuffer(e,t=0){if(this.locationId.length)for(let r of(e[t++]=10,t=encodeNumber(e,t,measureArray(this.locationId)),this.locationId))t=encodeNumber(e,t,r);if(this.value.length)for(let r of(e[t++]=18,t=encodeNumber(e,t,measureArray(this.value)),this.value))t=encodeNumber(e,t,r);for(let r of this.label)e[t++]=26,t=encodeNumber(e,t,r.length),t=r._encodeToBuffer(e,t);return t}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.locationId=pushAll(decodeNumbers(r),e.locationId);break;case 2:e.value=pushAll(decodeNumbers(r),e.value);break;case 3:e.label=push(Label.decode(r),e.label)}}static decode(e){return new this(decode(e,this.decodeValue))}};let Mapping=class Mapping{static create(e){return e instanceof Mapping?e:new Mapping(e)}constructor(e){this.id=e.id||0,this.memoryStart=e.memoryStart||0,this.memoryLimit=e.memoryLimit||0,this.fileOffset=e.fileOffset||0,this.filename=e.filename||0,this.buildId=e.buildId||0,this.hasFunctions=!!e.hasFunctions,this.hasFilenames=!!e.hasFilenames,this.hasLineNumbers=!!e.hasLineNumbers,this.hasInlineFrames=!!e.hasInlineFrames}get length(){return 0+measureNumberField(this.id)+measureNumberField(this.memoryStart)+measureNumberField(this.memoryLimit)+measureNumberField(this.fileOffset)+measureNumberField(this.filename)+measureNumberField(this.buildId)+measureNumberField(+!!this.hasFunctions)+measureNumberField(+!!this.hasFilenames)+measureNumberField(+!!this.hasLineNumbers)+measureNumberField(+!!this.hasInlineFrames)}_encodeToBuffer(e,t=0){return this.id&&(e[t++]=8,t=encodeNumber(e,t,this.id)),this.memoryStart&&(e[t++]=16,t=encodeNumber(e,t,this.memoryStart)),this.memoryLimit&&(e[t++]=24,t=encodeNumber(e,t,this.memoryLimit)),this.fileOffset&&(e[t++]=32,t=encodeNumber(e,t,this.fileOffset)),this.filename&&(e[t++]=40,t=encodeNumber(e,t,this.filename)),this.buildId&&(e[t++]=48,t=encodeNumber(e,t,this.buildId)),this.hasFunctions&&(e[t++]=56,t=encodeNumber(e,t,1)),this.hasFilenames&&(e[t++]=64,t=encodeNumber(e,t,1)),this.hasLineNumbers&&(e[t++]=72,t=encodeNumber(e,t,1)),this.hasInlineFrames&&(e[t++]=80,t=encodeNumber(e,t,1)),t}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.id=decodeNumber(r);break;case 2:e.memoryStart=decodeNumber(r);break;case 3:e.memoryLimit=decodeNumber(r);break;case 4:e.fileOffset=decodeNumber(r);break;case 5:e.filename=decodeNumber(r);break;case 6:e.buildId=decodeNumber(r);break;case 7:e.hasFunctions=!!decodeNumber(r);break;case 8:e.hasFilenames=!!decodeNumber(r);break;case 9:e.hasLineNumbers=!!decodeNumber(r);break;case 10:e.hasInlineFrames=!!decodeNumber(r)}}static decode(e){return new this(decode(e,this.decodeValue))}};let Line=class Line{static create(e){return e instanceof Line?e:new Line(e)}constructor(e){this.functionId=e.functionId||0,this.line=e.line||0}get length(){return 0+measureNumberField(this.functionId)+measureNumberField(this.line)}_encodeToBuffer(e,t=0){return this.functionId&&(e[t++]=8,t=encodeNumber(e,t,this.functionId)),this.line&&(e[t++]=16,t=encodeNumber(e,t,this.line)),t}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.functionId=decodeNumber(r);break;case 2:e.line=decodeNumber(r)}}static decode(e){return new this(decode(e,this.decodeValue))}};let Location=class Location{static create(e){return e instanceof Location?e:new Location(e)}constructor(e){this.id=e.id||0,this.mappingId=e.mappingId||0,this.address=e.address||0,this.line=(e.line||[]).map(Line.create),this.isFolded=!!e.isFolded}get length(){return 0+measureNumberField(this.id)+measureNumberField(this.mappingId)+measureNumberField(this.address)+measureLengthDelimArrayField(this.line)+measureNumberField(+!!this.isFolded)}_encodeToBuffer(e,t=0){for(let r of(this.id&&(e[t++]=8,t=encodeNumber(e,t,this.id)),this.mappingId&&(e[t++]=16,t=encodeNumber(e,t,this.mappingId)),this.address&&(e[t++]=24,t=encodeNumber(e,t,this.address)),this.line))e[t++]=34,t=encodeNumber(e,t,r.length),t=r._encodeToBuffer(e,t);return this.isFolded&&(e[t++]=40,t=encodeNumber(e,t,1)),t}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.id=decodeNumber(r);break;case 2:e.mappingId=decodeNumber(r);break;case 3:e.address=decodeNumber(r);break;case 4:e.line=push(Line.decode(r),e.line);break;case 5:e.isFolded=!!decodeNumber(r)}}static decode(e){return new this(decode(e,this.decodeValue))}};let Function=class Function{static create(e){return e instanceof Function?e:new Function(e)}constructor(e){this.id=e.id||0,this.name=e.name||0,this.systemName=e.systemName||0,this.filename=e.filename||0,this.startLine=e.startLine||0}get length(){return 0+measureNumberField(this.id)+measureNumberField(this.name)+measureNumberField(this.systemName)+measureNumberField(this.filename)+measureNumberField(this.startLine)}_encodeToBuffer(e,t=0){return this.id&&(e[t++]=8,t=encodeNumber(e,t,this.id)),this.name&&(e[t++]=16,t=encodeNumber(e,t,this.name)),this.systemName&&(e[t++]=24,t=encodeNumber(e,t,this.systemName)),this.filename&&(e[t++]=32,t=encodeNumber(e,t,this.filename)),this.startLine&&(e[t++]=40,t=encodeNumber(e,t,this.startLine)),t}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.id=decodeNumber(r);break;case 2:e.name=decodeNumber(r);break;case 3:e.systemName=decodeNumber(r);break;case 4:e.filename=decodeNumber(r);break;case 5:e.startLine=decodeNumber(r)}}static decode(e){return new this(decode(e,this.decodeValue))}};let Profile=class Profile{constructor(e={}){this.sampleType=(e.sampleType||[]).map(ValueType.create),this.sample=(e.sample||[]).map(Sample.create),this.mapping=(e.mapping||[]).map(Mapping.create),this.location=(e.location||[]).map(Location.create),this.function=(e.function||[]).map(Function.create),this.stringTable=e.stringTable||new StringTable,this.dropFrames=e.dropFrames||0,this.keepFrames=e.keepFrames||0,this.timeNanos=e.timeNanos||0,this.durationNanos=e.durationNanos||0,this.periodType=e.periodType?ValueType.create(e.periodType):void 0,this.period=e.period||0,this.comment=e.comment||[],this.defaultSampleType=e.defaultSampleType||0}get length(){return 0+measureLengthDelimArrayField(this.sampleType)+measureLengthDelimArrayField(this.sample)+measureLengthDelimArrayField(this.mapping)+measureLengthDelimArrayField(this.location)+measureLengthDelimArrayField(this.function)+this.stringTable.encodedLength+measureNumberField(this.dropFrames)+measureNumberField(this.keepFrames)+measureNumberField(this.timeNanos)+measureNumberField(this.durationNanos)+measureLengthDelimField(this.periodType)+measureNumberField(this.period)+measureNumberArrayField(this.comment)+measureNumberField(this.defaultSampleType)}_encodeSampleTypesToBuffer(e,t=0){for(let r of this.sampleType)e[t++]=10,t=encodeNumber(e,t,r.length),t=r._encodeToBuffer(e,t);return t}_encodeSamplesToBuffer(e,t=0){for(let r of this.sample)e[t++]=18,t=encodeNumber(e,t,r.length),t=r._encodeToBuffer(e,t);return t}_encodeMappingsToBuffer(e,t=0){for(let r of this.mapping)e[t++]=26,t=encodeNumber(e,t,r.length),t=r._encodeToBuffer(e,t);return t}_encodeLocationsToBuffer(e,t=0){for(let r of this.location)e[t++]=34,t=encodeNumber(e,t,r.length),t=r._encodeToBuffer(e,t);return t}_encodeFunctionsToBuffer(e,t=0){for(let r of this.function)e[t++]=42,t=encodeNumber(e,t,r.length),t=r._encodeToBuffer(e,t);return t}_encodeBasicValuesToBuffer(e,t=0){if(this.dropFrames&&(e[t++]=56,t=encodeNumber(e,t,this.dropFrames)),this.keepFrames&&(e[t++]=64,t=encodeNumber(e,t,this.keepFrames)),this.timeNanos&&(e[t++]=72,t=encodeNumber(e,t,this.timeNanos)),this.durationNanos&&(e[t++]=80,t=encodeNumber(e,t,this.durationNanos)),void 0!==this.periodType&&(e[t++]=90,t=encodeNumber(e,t,this.periodType.length),t=this.periodType._encodeToBuffer(e,t)),this.period&&(e[t++]=96,t=encodeNumber(e,t,this.period)),this.comment.length)for(let r of(e[t++]=106,t=encodeNumber(e,t,measureArray(this.comment)),this.comment))t=encodeNumber(e,t,r);return this.defaultSampleType&&(e[t++]=112,t=encodeNumber(e,t,this.defaultSampleType)),t}_encodeToBuffer(e,t=0){return t=this._encodeSampleTypesToBuffer(e,t),t=this._encodeSamplesToBuffer(e,t),t=this._encodeMappingsToBuffer(e,t),t=this._encodeLocationsToBuffer(e,t),t=this._encodeFunctionsToBuffer(e,t),t=this.stringTable._encodeToBuffer(e,t),t=this._encodeBasicValuesToBuffer(e,t)}async _encodeToBufferAsync(e,t=0){return t=this._encodeSampleTypesToBuffer(e,t),await new Promise(setImmediate),t=this._encodeSamplesToBuffer(e,t),await new Promise(setImmediate),t=this._encodeMappingsToBuffer(e,t),await new Promise(setImmediate),t=this._encodeLocationsToBuffer(e,t),await new Promise(setImmediate),t=this._encodeFunctionsToBuffer(e,t),await new Promise(setImmediate),t=this.stringTable._encodeToBuffer(e,t),await new Promise(setImmediate),t=this._encodeBasicValuesToBuffer(e,t)}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}async encodeAsync(e=new Uint8Array(this.length)){return await this._encodeToBufferAsync(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.sampleType=push(ValueType.decode(r),e.sampleType);break;case 2:e.sample=push(Sample.decode(r),e.sample);break;case 3:e.mapping=push(Mapping.decode(r),e.mapping);break;case 4:e.location=push(Location.decode(r),e.location);break;case 5:e.function=push(Function.decode(r),e.function);break;case 6:void 0===e.stringTable&&(e.stringTable=new StringTable(c)),e.stringTable._decodeString(r);break;case 7:e.dropFrames=decodeNumber(r);break;case 8:e.keepFrames=decodeNumber(r);break;case 9:e.timeNanos=decodeNumber(r);break;case 10:e.durationNanos=decodeNumber(r);break;case 11:e.periodType=ValueType.decode(r);break;case 12:e.period=decodeNumber(r);break;case 13:e.comment=pushAll(decodeNumbers(r),e.comment);break;case 14:e.defaultSampleType=decodeNumber(r)}}static decode(e){return new this(decode(e,this.decodeValue))}};module.exports=i})();
1
+ (()=>{"use strict";var e,t,r={};r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};r.r(i),r.d(i,{Function:()=>Function,Label:()=>Label,Line:()=>Line,Location:()=>Location,Mapping:()=>Mapping,Profile:()=>Profile,Sample:()=>Sample,StringTable:()=>StringTable,ValueType:()=>ValueType,emptyTableToken:()=>c});var __classPrivateFieldGet=function(e,t,r,i){if("a"===r&&!i)throw TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?i:"a"===r?i.call(e):i?i.value:t.get(e)};let s=2n**32n-1n,n=0x100000000-1,a=0x100000000-1+1,o="u"<typeof Buffer?e=>new TextEncoder().encode(e):e=>Buffer.from(e,"utf8");function countNumberBytes(e){if(!e.length)return 0;let t=0;for(;t<e.length&&e[t++]>=128;);return t}function decodeBigNumber(e){if(!e.length)return BigInt(0);let t=BigInt(127&e[0]),r=0;for(;e[r++]>=128;)t|=BigInt(127&e[r])<<BigInt(7*r);return t}function makeValue(e,t=0){return{value:e,offset:t}}function getValue(e,t){switch(e){case u:for(let e=0;e<t.length;e++)if(!(128&t[e]))return makeValue(t.subarray(0,e+1));return makeValue(t);case d:{let e=countNumberBytes(t),r=decodeNumber(t);return makeValue(t.subarray(e,Number(r)+e),e)}default:throw Error(`Unrecognized value type: ${e}`)}}function lowBits(e){return"bigint"!=typeof e?(e>>>0)%a:Number(e&s)}function highBits(e){return"bigint"!=typeof e?e/a>>>0:Number(e>>32n&s)}function long(e){let t=e<0;t&&(e=-e);let r=lowBits(e),i=highBits(e);return t&&(i=~i>>>0,r=~r>>>0,++r>n&&(r=0,++i>n&&(i=0))),[i,r]}let u=0,d=2;function decodeNumber(e){if(countNumberBytes(e)>4)return decodeBigNumber(e);if(!e.length)return 0;let t=127&e[0],r=0;for(;e[r++]>=128;)t|=(127&e[r])<<7*r;return t}function decodeNumbers(e){let t=[],r=0;for(let i=0;i<e.length;i++)(128&e[i])==0&&(t.push(decodeNumber(e.subarray(r,i+1))),r=i+1);return t}function push(e,t){return null==t?[e]:(t.push(e),t)}function pushAll(e,t){if(null==t)return e;for(let r of e)t.push(r);return t}function measureNumber(e){if(0===e||0n===e)return 0;let[t,r]=long(e),i=(r>>>28|t<<4)>>>0,s=t>>>24;return 0!==s?s<128?9:10:0!==i?i<16384?i<128?5:6:i<2097152?7:8:r<16384?r<128?1:2:r<2097152?3:4}function measureValue(e){return void 0===e?0:"number"==typeof e||"bigint"==typeof e?measureNumber(e)||1:e.length}function measureArray(e){let t=0;for(let r of e)t+=measureValue(r);return t}function measureNumberField(e){let t=measureNumber(e);return t?1+t:0}function measureNumberArrayField(e){let t=0;for(let r of e)t+=measureNumber(r)||1;return t?1+measureNumber(t)+t:0}function measureLengthDelimField(e){let t=measureValue(e);return t?1+measureNumber(t)+t:0}function measureLengthDelimArrayField(e){let t=0;for(let r of e)t+=measureLengthDelimField(r);return t}function encodeNumber(e,t,r){if(0===r||0n===r)return e[t++]=0,t;let[i,s]=long(r);for(;i;)e[t++]=127&s|128,s=(s>>>7|i<<25)>>>0,i>>>=7;for(;s>127;)e[t++]=127&s|128,s>>>=7;return e[t++]=s,t}let c=Symbol();let StringTable=class StringTable{constructor(r){this.strings=[],e.set(this,[]),t.set(this,new Map),r!==c&&this.dedup("")}get encodedLength(){let t=0;for(let r of __classPrivateFieldGet(this,e,"f"))t+=r.length;return t}_encodeToBuffer(t,r){for(let i of __classPrivateFieldGet(this,e,"f"))t.set(i,r),r+=i.length;return r}encode(e=new Uint8Array(this.encodedLength)){return this._encodeToBuffer(e,0),e}static _encodeStringFromUtf8(e){let t=new Uint8Array(1+e.length+(measureNumber(e.length)||1)),r=0;return t[r++]=50,r=encodeNumber(t,r,e.length),e.length>0&&t.set(e,r),t}static _encodeString(e){return StringTable._encodeStringFromUtf8(o(e))}dedup(r){if("number"==typeof r)return r;if(!__classPrivateFieldGet(this,t,"f").has(r)){let i=this.strings.push(r)-1;__classPrivateFieldGet(this,t,"f").set(r,i),__classPrivateFieldGet(this,e,"f").push(StringTable._encodeString(r))}return __classPrivateFieldGet(this,t,"f").get(r)}_decodeString(r){let i=new TextDecoder().decode(r);__classPrivateFieldGet(this,t,"f").set(i,this.strings.push(i)-1),__classPrivateFieldGet(this,e,"f").push(StringTable._encodeStringFromUtf8(r))}};function decode(e,t){let r={},i=0;for(;i<e.length;){let s=e[i]>>3,n=7&e[i];i++;let{offset:a,value:o}=getValue(n,e.subarray(i));i+=o.length+a,t(r,s,o)}return r}e=new WeakMap,t=new WeakMap;let ValueType=class ValueType{static create(e){return e instanceof ValueType?e:new ValueType(e)}constructor(e){this.type=e.type||0,this.unit=e.unit||0}get length(){return 0+measureNumberField(this.type)+measureNumberField(this.unit)}_encodeToBuffer(e,t=0){return this.type&&(e[t++]=8,t=encodeNumber(e,t,this.type)),this.unit&&(e[t++]=16,t=encodeNumber(e,t,this.unit)),t}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.type=decodeNumber(r);break;case 2:e.unit=decodeNumber(r)}}static decode(e){return new this(decode(e,this.decodeValue))}};let Label=class Label{static create(e){return e instanceof Label?e:new Label(e)}constructor(e){this.key=e.key||0,this.str=e.str||0,this.num=e.num||0,this.numUnit=e.numUnit||0}get length(){return 0+measureNumberField(this.key)+measureNumberField(this.str)+measureNumberField(this.num)+measureNumberField(this.numUnit)}_encodeToBuffer(e,t=0){return this.key&&(e[t++]=8,t=encodeNumber(e,t,this.key)),this.str&&(e[t++]=16,t=encodeNumber(e,t,this.str)),this.num&&(e[t++]=24,t=encodeNumber(e,t,this.num)),this.numUnit&&(e[t++]=32,t=encodeNumber(e,t,this.numUnit)),t}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.key=decodeNumber(r);break;case 2:e.str=decodeNumber(r);break;case 3:e.num=decodeNumber(r);break;case 4:e.numUnit=decodeNumber(r)}}static decode(e){return new this(decode(e,this.decodeValue))}};let Sample=class Sample{static create(e){return e instanceof Sample?e:new Sample(e)}constructor(e){this.locationId=e.locationId||[],this.value=e.value||[],this.label=(e.label||[]).map(Label.create)}get length(){return 0+measureNumberArrayField(this.locationId)+measureNumberArrayField(this.value)+measureLengthDelimArrayField(this.label)}_encodeToBuffer(e,t=0){if(this.locationId.length)for(let r of(e[t++]=10,t=encodeNumber(e,t,measureArray(this.locationId)),this.locationId))t=encodeNumber(e,t,r);if(this.value.length)for(let r of(e[t++]=18,t=encodeNumber(e,t,measureArray(this.value)),this.value))t=encodeNumber(e,t,r);for(let r of this.label)e[t++]=26,t=encodeNumber(e,t,r.length),t=r._encodeToBuffer(e,t);return t}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.locationId=pushAll(decodeNumbers(r),e.locationId);break;case 2:e.value=pushAll(decodeNumbers(r),e.value);break;case 3:e.label=push(Label.decode(r),e.label)}}static decode(e){return new this(decode(e,this.decodeValue))}};let Mapping=class Mapping{static create(e){return e instanceof Mapping?e:new Mapping(e)}constructor(e){this.id=e.id||0,this.memoryStart=e.memoryStart||0,this.memoryLimit=e.memoryLimit||0,this.fileOffset=e.fileOffset||0,this.filename=e.filename||0,this.buildId=e.buildId||0,this.hasFunctions=!!e.hasFunctions,this.hasFilenames=!!e.hasFilenames,this.hasLineNumbers=!!e.hasLineNumbers,this.hasInlineFrames=!!e.hasInlineFrames}get length(){return 0+measureNumberField(this.id)+measureNumberField(this.memoryStart)+measureNumberField(this.memoryLimit)+measureNumberField(this.fileOffset)+measureNumberField(this.filename)+measureNumberField(this.buildId)+measureNumberField(+!!this.hasFunctions)+measureNumberField(+!!this.hasFilenames)+measureNumberField(+!!this.hasLineNumbers)+measureNumberField(+!!this.hasInlineFrames)}_encodeToBuffer(e,t=0){return this.id&&(e[t++]=8,t=encodeNumber(e,t,this.id)),this.memoryStart&&(e[t++]=16,t=encodeNumber(e,t,this.memoryStart)),this.memoryLimit&&(e[t++]=24,t=encodeNumber(e,t,this.memoryLimit)),this.fileOffset&&(e[t++]=32,t=encodeNumber(e,t,this.fileOffset)),this.filename&&(e[t++]=40,t=encodeNumber(e,t,this.filename)),this.buildId&&(e[t++]=48,t=encodeNumber(e,t,this.buildId)),this.hasFunctions&&(e[t++]=56,t=encodeNumber(e,t,1)),this.hasFilenames&&(e[t++]=64,t=encodeNumber(e,t,1)),this.hasLineNumbers&&(e[t++]=72,t=encodeNumber(e,t,1)),this.hasInlineFrames&&(e[t++]=80,t=encodeNumber(e,t,1)),t}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.id=decodeNumber(r);break;case 2:e.memoryStart=decodeNumber(r);break;case 3:e.memoryLimit=decodeNumber(r);break;case 4:e.fileOffset=decodeNumber(r);break;case 5:e.filename=decodeNumber(r);break;case 6:e.buildId=decodeNumber(r);break;case 7:e.hasFunctions=!!decodeNumber(r);break;case 8:e.hasFilenames=!!decodeNumber(r);break;case 9:e.hasLineNumbers=!!decodeNumber(r);break;case 10:e.hasInlineFrames=!!decodeNumber(r)}}static decode(e){return new this(decode(e,this.decodeValue))}};let Line=class Line{static create(e){return e instanceof Line?e:new Line(e)}constructor(e){this.functionId=e.functionId||0,this.line=e.line||0,this.column=e.column||0}get length(){return 0+measureNumberField(this.functionId)+measureNumberField(this.line)+measureNumberField(this.column)}_encodeToBuffer(e,t=0){return this.functionId&&(e[t++]=8,t=encodeNumber(e,t,this.functionId)),this.line&&(e[t++]=16,t=encodeNumber(e,t,this.line)),this.column&&(e[t++]=24,t=encodeNumber(e,t,this.column)),t}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.functionId=decodeNumber(r);break;case 2:e.line=decodeNumber(r);break;case 3:e.column=decodeNumber(r)}}static decode(e){return new this(decode(e,this.decodeValue))}};let Location=class Location{static create(e){return e instanceof Location?e:new Location(e)}constructor(e){this.id=e.id||0,this.mappingId=e.mappingId||0,this.address=e.address||0,this.line=(e.line||[]).map(Line.create),this.isFolded=!!e.isFolded}get length(){return 0+measureNumberField(this.id)+measureNumberField(this.mappingId)+measureNumberField(this.address)+measureLengthDelimArrayField(this.line)+measureNumberField(+!!this.isFolded)}_encodeToBuffer(e,t=0){for(let r of(this.id&&(e[t++]=8,t=encodeNumber(e,t,this.id)),this.mappingId&&(e[t++]=16,t=encodeNumber(e,t,this.mappingId)),this.address&&(e[t++]=24,t=encodeNumber(e,t,this.address)),this.line))e[t++]=34,t=encodeNumber(e,t,r.length),t=r._encodeToBuffer(e,t);return this.isFolded&&(e[t++]=40,t=encodeNumber(e,t,1)),t}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.id=decodeNumber(r);break;case 2:e.mappingId=decodeNumber(r);break;case 3:e.address=decodeNumber(r);break;case 4:e.line=push(Line.decode(r),e.line);break;case 5:e.isFolded=!!decodeNumber(r)}}static decode(e){return new this(decode(e,this.decodeValue))}};let Function=class Function{static create(e){return e instanceof Function?e:new Function(e)}constructor(e){this.id=e.id||0,this.name=e.name||0,this.systemName=e.systemName||0,this.filename=e.filename||0,this.startLine=e.startLine||0}get length(){return 0+measureNumberField(this.id)+measureNumberField(this.name)+measureNumberField(this.systemName)+measureNumberField(this.filename)+measureNumberField(this.startLine)}_encodeToBuffer(e,t=0){return this.id&&(e[t++]=8,t=encodeNumber(e,t,this.id)),this.name&&(e[t++]=16,t=encodeNumber(e,t,this.name)),this.systemName&&(e[t++]=24,t=encodeNumber(e,t,this.systemName)),this.filename&&(e[t++]=32,t=encodeNumber(e,t,this.filename)),this.startLine&&(e[t++]=40,t=encodeNumber(e,t,this.startLine)),t}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.id=decodeNumber(r);break;case 2:e.name=decodeNumber(r);break;case 3:e.systemName=decodeNumber(r);break;case 4:e.filename=decodeNumber(r);break;case 5:e.startLine=decodeNumber(r)}}static decode(e){return new this(decode(e,this.decodeValue))}};let Profile=class Profile{constructor(e={}){this.sampleType=(e.sampleType||[]).map(ValueType.create),this.sample=(e.sample||[]).map(Sample.create),this.mapping=(e.mapping||[]).map(Mapping.create),this.location=(e.location||[]).map(Location.create),this.function=(e.function||[]).map(Function.create),this.stringTable=e.stringTable||new StringTable,this.dropFrames=e.dropFrames||0,this.keepFrames=e.keepFrames||0,this.timeNanos=e.timeNanos||0,this.durationNanos=e.durationNanos||0,this.periodType=e.periodType?ValueType.create(e.periodType):void 0,this.period=e.period||0,this.comment=e.comment||[],this.defaultSampleType=e.defaultSampleType||0,this.docUrl=e.docUrl||0}get length(){return 0+measureLengthDelimArrayField(this.sampleType)+measureLengthDelimArrayField(this.sample)+measureLengthDelimArrayField(this.mapping)+measureLengthDelimArrayField(this.location)+measureLengthDelimArrayField(this.function)+this.stringTable.encodedLength+measureNumberField(this.dropFrames)+measureNumberField(this.keepFrames)+measureNumberField(this.timeNanos)+measureNumberField(this.durationNanos)+measureLengthDelimField(this.periodType)+measureNumberField(this.period)+measureNumberArrayField(this.comment)+measureNumberField(this.defaultSampleType)+measureNumberField(this.docUrl)}_encodeSampleTypesToBuffer(e,t=0){for(let r of this.sampleType)e[t++]=10,t=encodeNumber(e,t,r.length),t=r._encodeToBuffer(e,t);return t}_encodeSamplesToBuffer(e,t=0){for(let r of this.sample)e[t++]=18,t=encodeNumber(e,t,r.length),t=r._encodeToBuffer(e,t);return t}_encodeMappingsToBuffer(e,t=0){for(let r of this.mapping)e[t++]=26,t=encodeNumber(e,t,r.length),t=r._encodeToBuffer(e,t);return t}_encodeLocationsToBuffer(e,t=0){for(let r of this.location)e[t++]=34,t=encodeNumber(e,t,r.length),t=r._encodeToBuffer(e,t);return t}_encodeFunctionsToBuffer(e,t=0){for(let r of this.function)e[t++]=42,t=encodeNumber(e,t,r.length),t=r._encodeToBuffer(e,t);return t}_encodeBasicValuesToBuffer(e,t=0){if(this.dropFrames&&(e[t++]=56,t=encodeNumber(e,t,this.dropFrames)),this.keepFrames&&(e[t++]=64,t=encodeNumber(e,t,this.keepFrames)),this.timeNanos&&(e[t++]=72,t=encodeNumber(e,t,this.timeNanos)),this.durationNanos&&(e[t++]=80,t=encodeNumber(e,t,this.durationNanos)),void 0!==this.periodType&&(e[t++]=90,t=encodeNumber(e,t,this.periodType.length),t=this.periodType._encodeToBuffer(e,t)),this.period&&(e[t++]=96,t=encodeNumber(e,t,this.period)),this.comment.length)for(let r of(e[t++]=106,t=encodeNumber(e,t,measureArray(this.comment)),this.comment))t=encodeNumber(e,t,r);return this.defaultSampleType&&(e[t++]=112,t=encodeNumber(e,t,this.defaultSampleType)),this.docUrl&&(e[t++]=120,t=encodeNumber(e,t,this.docUrl)),t}_encodeToBuffer(e,t=0){return t=this._encodeSampleTypesToBuffer(e,t),t=this._encodeSamplesToBuffer(e,t),t=this._encodeMappingsToBuffer(e,t),t=this._encodeLocationsToBuffer(e,t),t=this._encodeFunctionsToBuffer(e,t),t=this.stringTable._encodeToBuffer(e,t),t=this._encodeBasicValuesToBuffer(e,t)}async _encodeToBufferAsync(e,t=0){return t=this._encodeSampleTypesToBuffer(e,t),await new Promise(setImmediate),t=this._encodeSamplesToBuffer(e,t),await new Promise(setImmediate),t=this._encodeMappingsToBuffer(e,t),await new Promise(setImmediate),t=this._encodeLocationsToBuffer(e,t),await new Promise(setImmediate),t=this._encodeFunctionsToBuffer(e,t),await new Promise(setImmediate),t=this.stringTable._encodeToBuffer(e,t),await new Promise(setImmediate),t=this._encodeBasicValuesToBuffer(e,t)}encode(e=new Uint8Array(this.length)){return this._encodeToBuffer(e,0),e}async encodeAsync(e=new Uint8Array(this.length)){return await this._encodeToBufferAsync(e,0),e}static decodeValue(e,t,r){switch(t){case 1:e.sampleType=push(ValueType.decode(r),e.sampleType);break;case 2:e.sample=push(Sample.decode(r),e.sample);break;case 3:e.mapping=push(Mapping.decode(r),e.mapping);break;case 4:e.location=push(Location.decode(r),e.location);break;case 5:e.function=push(Function.decode(r),e.function);break;case 6:void 0===e.stringTable&&(e.stringTable=new StringTable(c)),e.stringTable._decodeString(r);break;case 7:e.dropFrames=decodeNumber(r);break;case 8:e.keepFrames=decodeNumber(r);break;case 9:e.timeNanos=decodeNumber(r);break;case 10:e.durationNanos=decodeNumber(r);break;case 11:e.periodType=ValueType.decode(r);break;case 12:e.period=decodeNumber(r);break;case 13:e.comment=pushAll(decodeNumbers(r),e.comment);break;case 14:e.defaultSampleType=decodeNumber(r);break;case 15:e.docUrl=decodeNumber(r)}}static decode(e){return new this(decode(e,this.decodeValue))}};module.exports=i})();
package/version.js CHANGED
@@ -1,18 +1,20 @@
1
1
  'use strict'
2
2
 
3
+ /** @typedef {NonNullable<ReturnType<string['match']>>} RegExpMatch */
4
+
3
5
  var version = require('./package.json').version
4
6
  // @ts-expect-error
5
- var /** @type {RegExpMatchArray} */ ddMatches = version.match(/^(\d+)\.(\d+)\.(\d+)/)
7
+ var /** @type {RegExpMatch} */ ddMatches = version.match(/^(\d+)\.(\d+)\.(\d+)/)
6
8
  // @ts-expect-error
7
- var /** @type {RegExpMatchArray} */ nodeMatches = process.versions.node.match(/^(\d+)\.(\d+)\.(\d+)/)
9
+ var /** @type {RegExpMatch} */ nodeMatches = process.versions.node.match(/^(\d+)\.(\d+)\.(\d+)/)
8
10
 
9
11
  module.exports = {
10
12
  VERSION: version,
11
- DD_MAJOR: parseInt(ddMatches[1]),
12
- DD_MINOR: parseInt(ddMatches[2]),
13
- DD_PATCH: parseInt(ddMatches[3]),
14
- NODE_MAJOR: parseInt(nodeMatches[1]),
15
- NODE_MINOR: parseInt(nodeMatches[2]),
16
- NODE_PATCH: parseInt(nodeMatches[3]),
13
+ DD_MAJOR: parseInt(ddMatches[1], 10),
14
+ DD_MINOR: parseInt(ddMatches[2], 10),
15
+ DD_PATCH: parseInt(ddMatches[3], 10),
16
+ NODE_MAJOR: parseInt(nodeMatches[1], 10),
17
+ NODE_MINOR: parseInt(nodeMatches[2], 10),
18
+ NODE_PATCH: parseInt(nodeMatches[3], 10),
17
19
  NODE_VERSION: nodeMatches[0]
18
20
  }