@opentelemetry/instrumentation-ioredis 0.24.0 → 0.27.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/CHANGELOG.md ADDED
@@ -0,0 +1,50 @@
1
+ # Changelog
2
+
3
+ ### [0.27.1](https://www.github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-ioredis-v0.27.0...instrumentation-ioredis-v0.27.1) (2022-01-24)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * rename lerna's --include-filtered-dependencies option ([#817](https://www.github.com/open-telemetry/opentelemetry-js-contrib/issues/817)) ([cf268e7](https://www.github.com/open-telemetry/opentelemetry-js-contrib/commit/cf268e7a92b7800ad6dbec9ca77466f9ee03ee1a))
9
+ * use localhost for services in CI ([#816](https://www.github.com/open-telemetry/opentelemetry-js-contrib/issues/816)) ([f497313](https://www.github.com/open-telemetry/opentelemetry-js-contrib/commit/f4973133e86549bbca301983085cc67788a10acd))
10
+
11
+
12
+ ### Dependencies
13
+
14
+ * The following workspace dependencies were updated
15
+ * devDependencies
16
+ * @opentelemetry/contrib-test-utils bumped from ^0.28.0 to ^0.29.0
17
+
18
+ ## [0.27.0](https://www.github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-ioredis-v0.26.0...instrumentation-ioredis-v0.27.0) (2021-11-30)
19
+
20
+
21
+ ### Features
22
+
23
+ * use latest instrumentation base ([#769](https://www.github.com/open-telemetry/opentelemetry-js-contrib/issues/769)) ([7aff23e](https://www.github.com/open-telemetry/opentelemetry-js-contrib/commit/7aff23ebebbe209fa3b78c2e7f513c9cd2231be4))
24
+
25
+
26
+ ### Dependencies
27
+
28
+ * The following workspace dependencies were updated
29
+ * devDependencies
30
+ * @opentelemetry/contrib-test-utils bumped from ^0.27.0 to ^0.28.0
31
+
32
+ ## [0.26.0](https://www.github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-ioredis-v0.25.0...instrumentation-ioredis-v0.26.0) (2021-10-22)
33
+
34
+
35
+ ### Features
36
+
37
+ * support API and SDK 1.0 ([#706](https://www.github.com/open-telemetry/opentelemetry-js-contrib/issues/706)) ([096b694](https://www.github.com/open-telemetry/opentelemetry-js-contrib/commit/096b694bbc3079f0ab4ee0462869b10eb8185202))
38
+
39
+
40
+ ### Bug Fixes
41
+
42
+ * Add support for setConfig in ioredis instrumentation ([#689](https://www.github.com/open-telemetry/opentelemetry-js-contrib/issues/689)) ([314c890](https://www.github.com/open-telemetry/opentelemetry-js-contrib/commit/314c89050a2db231047914f2052eda689b49333c))
43
+
44
+
45
+
46
+ ### Dependencies
47
+
48
+ * The following workspace dependencies were updated
49
+ * devDependencies
50
+ * @opentelemetry/contrib-test-utils bumped from ^0.25.0 to ^0.27.0
package/README.md CHANGED
@@ -8,7 +8,9 @@
8
8
  This module provides automatic instrumentation for [`ioredis`](https://github.com/luin/ioredis).
9
9
 
10
10
  For automatic instrumentation see the
11
- [@opentelemetry/node](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-node) package.
11
+ [@opentelemetry/sdk-trace-node](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-node) package.
12
+
13
+ Compatible with OpenTelemetry JS API and SDK `1.0+`.
12
14
 
13
15
  ## Installation
14
16
 
@@ -25,7 +27,7 @@ npm install --save @opentelemetry/instrumentation-ioredis
25
27
  To load a specific instrumentation (**ioredis** in this case), specify it in the registerInstrumentations's configuration
26
28
 
27
29
  ```javascript
28
- const { NodeTracerProvider } = require('@opentelemetry/node');
30
+ const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
29
31
  const {
30
32
  IORedisInstrumentation,
31
33
  } = require('@opentelemetry/instrumentation-ioredis');
@@ -10,5 +10,7 @@ export declare class IORedisInstrumentation extends InstrumentationBase<typeof i
10
10
  */
11
11
  private _patchSendCommand;
12
12
  private _patchConnection;
13
+ private traceSendCommand;
14
+ private traceConnection;
13
15
  }
14
16
  //# sourceMappingURL=instrumentation.d.ts.map
@@ -18,6 +18,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.IORedisInstrumentation = void 0;
19
19
  const api_1 = require("@opentelemetry/api");
20
20
  const instrumentation_1 = require("@opentelemetry/instrumentation");
21
+ const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
22
+ const instrumentation_2 = require("@opentelemetry/instrumentation");
21
23
  const utils_1 = require("./utils");
22
24
  const version_1 = require("./version");
23
25
  const DEFAULT_CONFIG = {
@@ -26,6 +28,95 @@ const DEFAULT_CONFIG = {
26
28
  class IORedisInstrumentation extends instrumentation_1.InstrumentationBase {
27
29
  constructor(_config = {}) {
28
30
  super('@opentelemetry/instrumentation-ioredis', version_1.VERSION, Object.assign({}, DEFAULT_CONFIG, _config));
31
+ this.traceSendCommand = (original, moduleVersion) => {
32
+ const instrumentation = this;
33
+ return function (cmd) {
34
+ if (arguments.length < 1 || typeof cmd !== 'object') {
35
+ return original.apply(this, arguments);
36
+ }
37
+ const config = instrumentation.getConfig();
38
+ const dbStatementSerializer = (config === null || config === void 0 ? void 0 : config.dbStatementSerializer) || utils_1.defaultDbStatementSerializer;
39
+ const hasNoParentSpan = api_1.trace.getSpan(api_1.context.active()) === undefined;
40
+ if ((config === null || config === void 0 ? void 0 : config.requireParentSpan) === true && hasNoParentSpan) {
41
+ return original.apply(this, arguments);
42
+ }
43
+ const span = instrumentation.tracer.startSpan(cmd.name, {
44
+ kind: api_1.SpanKind.CLIENT,
45
+ attributes: {
46
+ [semantic_conventions_1.SemanticAttributes.DB_SYSTEM]: IORedisInstrumentation.DB_SYSTEM,
47
+ [semantic_conventions_1.SemanticAttributes.DB_STATEMENT]: dbStatementSerializer(cmd.name, cmd.args),
48
+ },
49
+ });
50
+ if (config === null || config === void 0 ? void 0 : config.requestHook) {
51
+ instrumentation_2.safeExecuteInTheMiddle(() => config === null || config === void 0 ? void 0 : config.requestHook(span, {
52
+ moduleVersion,
53
+ cmdName: cmd.name,
54
+ cmdArgs: cmd.args,
55
+ }), e => {
56
+ if (e) {
57
+ api_1.diag.error('ioredis instrumentation: request hook failed', e);
58
+ }
59
+ }, true);
60
+ }
61
+ const { host, port } = this.options;
62
+ span.setAttributes({
63
+ [semantic_conventions_1.SemanticAttributes.NET_PEER_NAME]: host,
64
+ [semantic_conventions_1.SemanticAttributes.NET_PEER_PORT]: port,
65
+ [semantic_conventions_1.SemanticAttributes.NET_PEER_IP]: `redis://${host}:${port}`,
66
+ });
67
+ try {
68
+ const result = original.apply(this, arguments);
69
+ const origResolve = cmd.resolve;
70
+ /* eslint-disable @typescript-eslint/no-explicit-any */
71
+ cmd.resolve = function (result) {
72
+ instrumentation_2.safeExecuteInTheMiddle(() => { var _a; return (_a = config === null || config === void 0 ? void 0 : config.responseHook) === null || _a === void 0 ? void 0 : _a.call(config, span, cmd.name, cmd.args, result); }, e => {
73
+ if (e) {
74
+ api_1.diag.error('ioredis instrumentation: response hook failed', e);
75
+ }
76
+ }, true);
77
+ utils_1.endSpan(span, null);
78
+ origResolve(result);
79
+ };
80
+ const origReject = cmd.reject;
81
+ cmd.reject = function (err) {
82
+ utils_1.endSpan(span, err);
83
+ origReject(err);
84
+ };
85
+ return result;
86
+ }
87
+ catch (error) {
88
+ utils_1.endSpan(span, error);
89
+ throw error;
90
+ }
91
+ };
92
+ };
93
+ this.traceConnection = (original) => {
94
+ const instrumentation = this;
95
+ return function () {
96
+ const span = instrumentation.tracer.startSpan('connect', {
97
+ kind: api_1.SpanKind.CLIENT,
98
+ attributes: {
99
+ [semantic_conventions_1.SemanticAttributes.DB_SYSTEM]: IORedisInstrumentation.DB_SYSTEM,
100
+ [semantic_conventions_1.SemanticAttributes.DB_STATEMENT]: 'connect',
101
+ },
102
+ });
103
+ const { host, port } = this.options;
104
+ span.setAttributes({
105
+ [semantic_conventions_1.SemanticAttributes.NET_PEER_NAME]: host,
106
+ [semantic_conventions_1.SemanticAttributes.NET_PEER_PORT]: port,
107
+ [semantic_conventions_1.SemanticAttributes.NET_PEER_IP]: `redis://${host}:${port}`,
108
+ });
109
+ try {
110
+ const client = original.apply(this, arguments);
111
+ utils_1.endSpan(span, null);
112
+ return client;
113
+ }
114
+ catch (error) {
115
+ utils_1.endSpan(span, error);
116
+ throw error;
117
+ }
118
+ };
119
+ };
29
120
  }
30
121
  init() {
31
122
  return [
@@ -54,12 +145,12 @@ class IORedisInstrumentation extends instrumentation_1.InstrumentationBase {
54
145
  */
55
146
  _patchSendCommand(moduleVersion) {
56
147
  return (original) => {
57
- return utils_1.traceSendCommand(this.tracer, original, this._config, moduleVersion);
148
+ return this.traceSendCommand(original, moduleVersion);
58
149
  };
59
150
  }
60
151
  _patchConnection() {
61
152
  return (original) => {
62
- return utils_1.traceConnection(this.tracer, original);
153
+ return this.traceConnection(original);
63
154
  };
64
155
  }
65
156
  }
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA0C;AAE1C,oEAIwC;AAExC,mCAA4D;AAC5D,uCAAoC;AAEpC,MAAM,cAAc,GAAiC;IACnD,iBAAiB,EAAE,IAAI;CACxB,CAAC;AAEF,MAAa,sBAAuB,SAAQ,qCAE3C;IAGC,YAAY,UAAwC,EAAE;QACpD,KAAK,CACH,wCAAwC,EACxC,iBAAO,EACP,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,CAC3C,CAAC;IACJ,CAAC;IAED,IAAI;QACF,OAAO;YACL,IAAI,qDAAmC,CACrC,SAAS,EACT,CAAC,OAAO,CAAC,EACT,CAAC,aAAa,EAAE,aAAsB,EAAE,EAAE;gBACxC,UAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBACzC,IAAI,2BAAS,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;oBAClD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;iBACtD;gBACD,IAAI,CAAC,KAAK,CACR,aAAa,CAAC,SAAS,EACvB,aAAa,EACb,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CACtC,CAAC;gBACF,IAAI,2BAAS,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBAC9C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;iBAClD;gBACD,IAAI,CAAC,KAAK,CACR,aAAa,CAAC,SAAS,EACvB,SAAS,EACT,IAAI,CAAC,gBAAgB,EAAE,CACxB,CAAC;gBACF,OAAO,aAAa,CAAC;YACvB,CAAC,EACD,aAAa,CAAC,EAAE;gBACd,IAAI,aAAa,KAAK,SAAS;oBAAE,OAAO;gBACxC,UAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBACzC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBACrD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACnD,CAAC,CACF;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,aAAsB;QAC9C,OAAO,CAAC,QAAkB,EAAE,EAAE;YAC5B,OAAO,wBAAgB,CACrB,IAAI,CAAC,MAAM,EACX,QAAQ,EACR,IAAI,CAAC,OAAO,EACZ,aAAa,CACd,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAEO,gBAAgB;QACtB,OAAO,CAAC,QAAkB,EAAE,EAAE;YAC5B,OAAO,uBAAe,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC,CAAC;IACJ,CAAC;;AAlEH,wDAmEC;AAhEiB,gCAAS,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import type * as ioredisTypes from 'ioredis';
2
- import { Tracer } from '@opentelemetry/api';
3
- import { IORedisCommand, IORedisInstrumentationConfig } from './types';
4
- export declare const traceConnection: (tracer: Tracer, original: Function) => (this: ioredisTypes.Redis) => any;
5
- export declare const traceSendCommand: (tracer: Tracer, original: Function, config?: IORedisInstrumentationConfig | undefined, moduleVersion?: string | undefined) => (this: ioredisTypes.Redis, cmd?: IORedisCommand | undefined) => any;
1
+ /// <reference types="node" />
2
+ /// <reference types="mocha" />
3
+ import { Span } from '@opentelemetry/api';
4
+ import { DbStatementSerializer } from './types';
5
+ export declare const endSpan: (span: Span, err: NodeJS.ErrnoException | null | undefined) => void;
6
+ export declare const defaultDbStatementSerializer: DbStatementSerializer;
6
7
  //# sourceMappingURL=utils.d.ts.map
@@ -15,11 +15,8 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.traceSendCommand = exports.traceConnection = void 0;
18
+ exports.defaultDbStatementSerializer = exports.endSpan = void 0;
19
19
  const api_1 = require("@opentelemetry/api");
20
- const _1 = require("./");
21
- const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
22
- const instrumentation_1 = require("@opentelemetry/instrumentation");
23
20
  const endSpan = (span, err) => {
24
21
  if (err) {
25
22
  span.recordException(err);
@@ -30,95 +27,9 @@ const endSpan = (span, err) => {
30
27
  }
31
28
  span.end();
32
29
  };
33
- const traceConnection = (tracer, original) => {
34
- return function () {
35
- const span = tracer.startSpan('connect', {
36
- kind: api_1.SpanKind.CLIENT,
37
- attributes: {
38
- [semantic_conventions_1.SemanticAttributes.DB_SYSTEM]: _1.IORedisInstrumentation.DB_SYSTEM,
39
- [semantic_conventions_1.SemanticAttributes.DB_STATEMENT]: 'connect',
40
- },
41
- });
42
- const { host, port } = this.options;
43
- span.setAttributes({
44
- [semantic_conventions_1.SemanticAttributes.NET_PEER_NAME]: host,
45
- [semantic_conventions_1.SemanticAttributes.NET_PEER_PORT]: port,
46
- [semantic_conventions_1.SemanticAttributes.NET_PEER_IP]: `redis://${host}:${port}`,
47
- });
48
- try {
49
- const client = original.apply(this, arguments);
50
- endSpan(span, null);
51
- return client;
52
- }
53
- catch (error) {
54
- endSpan(span, error);
55
- throw error;
56
- }
57
- };
58
- };
59
- exports.traceConnection = traceConnection;
30
+ exports.endSpan = endSpan;
60
31
  const defaultDbStatementSerializer = (cmdName, cmdArgs) => Array.isArray(cmdArgs) && cmdArgs.length
61
32
  ? `${cmdName} ${cmdArgs.join(' ')}`
62
33
  : cmdName;
63
- const traceSendCommand = (tracer, original, config, moduleVersion) => {
64
- const dbStatementSerializer = (config === null || config === void 0 ? void 0 : config.dbStatementSerializer) || defaultDbStatementSerializer;
65
- return function (cmd) {
66
- if (arguments.length < 1 || typeof cmd !== 'object') {
67
- return original.apply(this, arguments);
68
- }
69
- const hasNoParentSpan = api_1.trace.getSpan(api_1.context.active()) === undefined;
70
- if ((config === null || config === void 0 ? void 0 : config.requireParentSpan) === true && hasNoParentSpan) {
71
- return original.apply(this, arguments);
72
- }
73
- const span = tracer.startSpan(cmd.name, {
74
- kind: api_1.SpanKind.CLIENT,
75
- attributes: {
76
- [semantic_conventions_1.SemanticAttributes.DB_SYSTEM]: _1.IORedisInstrumentation.DB_SYSTEM,
77
- [semantic_conventions_1.SemanticAttributes.DB_STATEMENT]: dbStatementSerializer(cmd.name, cmd.args),
78
- },
79
- });
80
- if (config === null || config === void 0 ? void 0 : config.requestHook) {
81
- instrumentation_1.safeExecuteInTheMiddle(() => config === null || config === void 0 ? void 0 : config.requestHook(span, {
82
- moduleVersion,
83
- cmdName: cmd.name,
84
- cmdArgs: cmd.args,
85
- }), e => {
86
- if (e) {
87
- api_1.diag.error('ioredis instrumentation: request hook failed', e);
88
- }
89
- }, true);
90
- }
91
- const { host, port } = this.options;
92
- span.setAttributes({
93
- [semantic_conventions_1.SemanticAttributes.NET_PEER_NAME]: host,
94
- [semantic_conventions_1.SemanticAttributes.NET_PEER_PORT]: port,
95
- [semantic_conventions_1.SemanticAttributes.NET_PEER_IP]: `redis://${host}:${port}`,
96
- });
97
- try {
98
- const result = original.apply(this, arguments);
99
- const origResolve = cmd.resolve;
100
- /* eslint-disable @typescript-eslint/no-explicit-any */
101
- cmd.resolve = function (result) {
102
- instrumentation_1.safeExecuteInTheMiddle(() => { var _a; return (_a = config === null || config === void 0 ? void 0 : config.responseHook) === null || _a === void 0 ? void 0 : _a.call(config, span, cmd.name, cmd.args, result); }, e => {
103
- if (e) {
104
- api_1.diag.error('ioredis instrumentation: response hook failed', e);
105
- }
106
- }, true);
107
- endSpan(span, null);
108
- origResolve(result);
109
- };
110
- const origReject = cmd.reject;
111
- cmd.reject = function (err) {
112
- endSpan(span, err);
113
- origReject(err);
114
- };
115
- return result;
116
- }
117
- catch (error) {
118
- endSpan(span, error);
119
- throw error;
120
- }
121
- };
122
- };
123
- exports.traceSendCommand = traceSendCommand;
34
+ exports.defaultDbStatementSerializer = defaultDbStatementSerializer;
124
35
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4CAA0D;AAGnD,MAAM,OAAO,GAAG,CACrB,IAAU,EACV,GAA6C,EAC7C,EAAE;IACF,IAAI,GAAG,EAAE;QACP,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,oBAAc,CAAC,KAAK;YAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC;KACJ;IACD,IAAI,CAAC,GAAG,EAAE,CAAC;AACb,CAAC,CAAC;AAZW,QAAA,OAAO,WAYlB;AAEK,MAAM,4BAA4B,GAA0B,CACjE,OAAO,EACP,OAAO,EACP,EAAE,CACF,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM;IACtC,CAAC,CAAC,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACnC,CAAC,CAAC,OAAO,CAAC;AAND,QAAA,4BAA4B,gCAM3B"}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.24.0";
1
+ export declare const VERSION = "0.27.1";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -17,5 +17,5 @@
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.VERSION = void 0;
19
19
  // this is autogenerated file, see scripts/version-update.js
20
- exports.VERSION = '0.24.0';
20
+ exports.VERSION = '0.27.1';
21
21
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opentelemetry/instrumentation-ioredis",
3
- "version": "0.24.0",
3
+ "version": "0.27.1",
4
4
  "description": "OpenTelemetry ioredis automatic instrumentation package.",
5
5
  "main": "build/src/index.js",
6
6
  "types": "build/src/index.d.ts",
@@ -9,24 +9,27 @@
9
9
  "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'",
10
10
  "test:debug": "cross-env RUN_REDIS_TESTS_LOCAL=true ts-mocha --inspect-brk --no-timeouts -p tsconfig.json 'test/**/*.test.ts'",
11
11
  "test:local": "cross-env RUN_REDIS_TESTS_LOCAL=true npm run test",
12
+ "test-all-versions": "tav",
13
+ "test-all-versions:local": "cross-env RUN_REDIS_TESTS_LOCAL=true npm run test-all-versions",
12
14
  "tdd": "npm run test -- --watch-extensions ts --watch",
13
15
  "clean": "rimraf build/*",
14
16
  "lint": "eslint . --ext .ts",
15
17
  "lint:fix": "eslint . --ext .ts --fix",
16
- "precompile": "tsc --version",
18
+ "precompile": "tsc --version && lerna run version --scope @opentelemetry/instrumentation-ioredis --include-dependencies",
19
+ "prewatch": "npm run precompile",
17
20
  "version:update": "node ../../../scripts/version-update.js",
18
21
  "compile": "npm run version:update && tsc -p .",
19
22
  "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../",
20
23
  "prepare": "npm run compile"
21
24
  },
22
25
  "keywords": [
23
- "opentelemetry",
26
+ "instrumentation",
24
27
  "ioredis",
25
- "redis",
26
28
  "nodejs",
27
- "tracing",
29
+ "opentelemetry",
28
30
  "profiling",
29
- "instrumentation"
31
+ "redis",
32
+ "tracing"
30
33
  ],
31
34
  "author": "OpenTelemetry Authors",
32
35
  "license": "Apache-2.0",
@@ -45,30 +48,33 @@
45
48
  "access": "public"
46
49
  },
47
50
  "peerDependencies": {
48
- "@opentelemetry/api": "^1.0.1"
51
+ "@opentelemetry/api": "^1.0.2"
49
52
  },
50
53
  "devDependencies": {
51
- "@opentelemetry/api": "1.0.1",
52
- "@opentelemetry/context-async-hooks": "0.24.0",
53
- "@opentelemetry/node": "0.24.0",
54
- "@opentelemetry/test-utils": "^0.24.0",
55
- "@opentelemetry/tracing": "0.24.0",
54
+ "@opentelemetry/api": "1.0.2",
55
+ "@opentelemetry/context-async-hooks": "1.0.1",
56
+ "@opentelemetry/contrib-test-utils": "^0.29.0",
57
+ "@opentelemetry/sdk-trace-base": "1.0.1",
58
+ "@opentelemetry/sdk-trace-node": "1.0.1",
56
59
  "@types/mocha": "7.0.2",
57
- "@types/node": "14.17.5",
60
+ "@types/node": "14.17.9",
61
+ "@types/sinon": "^10.0.6",
58
62
  "codecov": "3.8.3",
59
63
  "cross-env": "7.0.3",
60
64
  "gts": "3.1.0",
61
- "ioredis": "4.27.6",
65
+ "ioredis": "4.27.7",
62
66
  "mocha": "7.2.0",
63
67
  "nyc": "15.1.0",
64
68
  "rimraf": "3.0.2",
69
+ "sinon": "^12.0.1",
70
+ "test-all-versions": "5.0.1",
65
71
  "ts-mocha": "8.0.0",
66
72
  "typescript": "4.3.5"
67
73
  },
68
74
  "dependencies": {
69
- "@opentelemetry/instrumentation": "^0.24.0",
70
- "@opentelemetry/semantic-conventions": "^0.24.0",
75
+ "@opentelemetry/instrumentation": "^0.27.0",
76
+ "@opentelemetry/semantic-conventions": "^1.0.0",
71
77
  "@types/ioredis": "4.26.6"
72
78
  },
73
- "gitHead": "e4757035a7b4012703a98b5609b8ac0f859e9726"
79
+ "gitHead": "edfc04cbe3e7faaa365724ddc26bf702b68cc008"
74
80
  }