dd-trace 2.0.0 → 2.0.1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dd-trace",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "Datadog APM tracing client for JavaScript",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",
@@ -61,7 +61,7 @@
61
61
  "node": ">=12"
62
62
  },
63
63
  "dependencies": {
64
- "@datadog/native-appsec": "^0.8.0",
64
+ "@datadog/native-appsec": "^0.8.1",
65
65
  "@datadog/native-metrics": "^1.1.0",
66
66
  "@datadog/pprof": "^0.3.0",
67
67
  "@datadog/sketches-js": "^1.0.4",
@@ -6,8 +6,16 @@ const shimmer = require('../../datadog-shimmer')
6
6
 
7
7
  addHook({
8
8
  name: 'q',
9
- versions: ['>=1']
9
+ versions: ['1']
10
10
  }, Q => {
11
11
  shimmer.wrap(Q.makePromise.prototype, 'then', wrapThen)
12
12
  return Q
13
13
  })
14
+
15
+ addHook({
16
+ name: 'q',
17
+ versions: ['>=2']
18
+ }, Q => {
19
+ shimmer.wrap(Q.Promise.prototype, 'then', wrapThen)
20
+ return Q
21
+ })
@@ -2,18 +2,37 @@
2
2
 
3
3
  const { LOG } = require('../../../ext/formats')
4
4
 
5
+ function chunkProxy (chunk, holder) {
6
+ return new Proxy(chunk, {
7
+ get (target, p, receiver) {
8
+ switch (p) {
9
+ case Symbol.toStringTag:
10
+ return Object.prototype.toString.call(target).slice(8, -1)
11
+ case 'dd':
12
+ return holder.dd
13
+ default:
14
+ return Reflect.get(target, p, receiver)
15
+ }
16
+ },
17
+ ownKeys (target) {
18
+ return ['dd', ...Reflect.ownKeys(target)]
19
+ },
20
+ getOwnPropertyDescriptor (target, p) {
21
+ return Reflect.getOwnPropertyDescriptor(p === 'dd' ? holder : target, p)
22
+ }
23
+ })
24
+ }
25
+
5
26
  function createWrapWrite (tracer, config) {
6
27
  return function wrapWrite (write) {
7
28
  return function writeWithTrace (chunk, encoding, callback) {
8
29
  const span = tracer.scope().active()
9
30
 
10
- tracer.inject(span, LOG, chunk)
31
+ const holder = {}
32
+ tracer.inject(span, LOG, holder)
33
+ arguments[0] = chunkProxy(chunk, holder)
11
34
 
12
- const result = write.apply(this, arguments)
13
-
14
- delete chunk.dd
15
-
16
- return result
35
+ return write.apply(this, arguments)
17
36
  }
18
37
  }
19
38
  }
@@ -42,15 +61,14 @@ function createWrapLog (tracer, config) {
42
61
  return function logWithTrace (level, msg, meta, callback) {
43
62
  const span = tracer.scope().active()
44
63
 
45
- meta = arguments[2] = meta || {}
64
+ meta = meta || {}
46
65
 
47
- tracer.inject(span, LOG, meta)
66
+ const holder = {}
67
+ tracer.inject(span, LOG, holder)
48
68
 
49
- const result = log.apply(this, arguments)
69
+ arguments[2] = chunkProxy(meta, holder)
50
70
 
51
- delete meta.dd
52
-
53
- return result
71
+ return log.apply(this, arguments)
54
72
  }
55
73
  }
56
74
  }
@@ -1 +1 @@
1
- module.exports = '2.0.0'
1
+ module.exports = '2.0.1'