@softprobe/softprobe-js 2.0.7 → 2.0.8
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/dist/bootstrap/otel/framework-mutator.d.ts.map +1 -1
- package/dist/bootstrap/otel/framework-mutator.js +21 -13
- package/dist/bootstrap/otel/framework-mutator.js.map +1 -1
- package/dist/bootstrap/otel/mutator.d.ts.map +1 -1
- package/dist/bootstrap/otel/mutator.js +2 -5
- package/dist/bootstrap/otel/mutator.js.map +1 -1
- package/dist/core/runtime/wrap.d.ts +16 -0
- package/dist/core/runtime/wrap.d.ts.map +1 -0
- package/dist/core/runtime/wrap.js +75 -0
- package/dist/core/runtime/wrap.js.map +1 -0
- package/dist/instrumentations/common/http/inbound-capture.d.ts +7 -1
- package/dist/instrumentations/common/http/inbound-capture.d.ts.map +1 -1
- package/dist/instrumentations/common/http/inbound-capture.js +5 -4
- package/dist/instrumentations/common/http/inbound-capture.js.map +1 -1
- package/dist/instrumentations/express/capture.d.ts.map +1 -1
- package/dist/instrumentations/express/capture.js +4 -0
- package/dist/instrumentations/express/capture.js.map +1 -1
- package/dist/instrumentations/postgres/replay.d.ts.map +1 -1
- package/dist/instrumentations/postgres/replay.js +20 -48
- package/dist/instrumentations/postgres/replay.js.map +1 -1
- package/dist/instrumentations/redis/replay.d.ts.map +1 -1
- package/dist/instrumentations/redis/replay.js +5 -9
- package/dist/instrumentations/redis/replay.js.map +1 -1
- package/package.json +1 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework-mutator.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/otel/framework-mutator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"framework-mutator.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/otel/framework-mutator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,GAAG,IAAI,CA8CtE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAgF7C"}
|
|
@@ -5,15 +5,12 @@
|
|
|
5
5
|
* first middleware/route addition triggers our middleware; patch Fastify factory
|
|
6
6
|
* so new instances get the plugin registered.
|
|
7
7
|
*/
|
|
8
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
-
};
|
|
11
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
9
|
exports.patchExpress = patchExpress;
|
|
13
10
|
exports.applyFrameworkMutators = applyFrameworkMutators;
|
|
14
|
-
const shimmer_1 = __importDefault(require("shimmer"));
|
|
15
11
|
const capture_1 = require("../../instrumentations/express/capture");
|
|
16
12
|
const capture_2 = require("../../instrumentations/fastify/capture");
|
|
13
|
+
const wrap_1 = require("../../core/runtime/wrap");
|
|
17
14
|
const nodeRequire = (typeof require !== 'undefined' ? require : undefined);
|
|
18
15
|
/**
|
|
19
16
|
* Patch Express so the first time a route is added (e.g. app.get), we call
|
|
@@ -26,20 +23,31 @@ function patchExpress(express) {
|
|
|
26
23
|
return;
|
|
27
24
|
const exp = express;
|
|
28
25
|
const proto = exp.application ?? Object.getPrototypeOf(express());
|
|
29
|
-
if (!proto || typeof proto.route !== 'function')
|
|
26
|
+
if (!proto || typeof proto.route !== 'function' || typeof proto.use !== 'function')
|
|
30
27
|
return;
|
|
31
28
|
if (proto._softprobeRoutePatched)
|
|
32
29
|
return;
|
|
33
30
|
proto._softprobeRoutePatched = true;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
31
|
+
const originalUse = proto.use;
|
|
32
|
+
const ensureInjected = function () {
|
|
33
|
+
if (this._softprobeMiddlewareAdded)
|
|
34
|
+
return;
|
|
35
|
+
this._softprobeMiddlewareAdded = true;
|
|
36
|
+
originalUse.call(this, capture_1.softprobeExpressMiddleware);
|
|
37
|
+
};
|
|
38
|
+
const patchOnce = (method) => {
|
|
39
|
+
const fn = proto[method];
|
|
40
|
+
if (typeof fn !== 'function')
|
|
41
|
+
return;
|
|
42
|
+
(0, wrap_1.wrapMethodNoConflict)(proto, method, `express.inject.${method}`, (original) => function expressPatched(...args) {
|
|
43
|
+
ensureInjected.call(this);
|
|
40
44
|
return original.apply(this, args);
|
|
41
|
-
};
|
|
42
|
-
}
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
const methods = ['route', 'use', 'all', 'get', 'post', 'put', 'delete', 'patch', 'options', 'head'];
|
|
48
|
+
for (const method of methods) {
|
|
49
|
+
patchOnce(method);
|
|
50
|
+
}
|
|
43
51
|
}
|
|
44
52
|
/**
|
|
45
53
|
* Patches Node's require so that when 'express' or 'fastify' is required,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework-mutator.js","sourceRoot":"","sources":["../../../src/bootstrap/otel/framework-mutator.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"framework-mutator.js","sourceRoot":"","sources":["../../../src/bootstrap/otel/framework-mutator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutator.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/otel/mutator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,2FAA2F;AAC3F,MAAM,WAAW,0BAA0B;IACzC,2BAA2B,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC;CAC/D;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,CAAC,EAAE,0BAA0B,GAClC,IAAI,
|
|
1
|
+
{"version":3,"file":"mutator.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/otel/mutator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,2FAA2F;AAC3F,MAAM,WAAW,0BAA0B;IACzC,2BAA2B,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC;CAC/D;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,CAAC,EAAE,0BAA0B,GAClC,IAAI,CAwCN"}
|
|
@@ -5,13 +5,10 @@
|
|
|
5
5
|
* is done solely via the MSW interceptor (replay/http.ts), not undici instrumentation.
|
|
6
6
|
* Design §5.2, §5.3.
|
|
7
7
|
*/
|
|
8
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
-
};
|
|
11
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
9
|
exports.applyAutoInstrumentationMutator = applyAutoInstrumentationMutator;
|
|
13
|
-
const shimmer_1 = __importDefault(require("shimmer"));
|
|
14
10
|
const inject_1 = require("./inject");
|
|
11
|
+
const wrap_1 = require("../../core/runtime/wrap");
|
|
15
12
|
const capture_1 = require("../../instrumentations/postgres/capture");
|
|
16
13
|
const capture_2 = require("../../instrumentations/redis/capture");
|
|
17
14
|
/**
|
|
@@ -21,7 +18,7 @@ const capture_2 = require("../../instrumentations/redis/capture");
|
|
|
21
18
|
*/
|
|
22
19
|
function applyAutoInstrumentationMutator(target) {
|
|
23
20
|
const moduleExport = target ?? require('@opentelemetry/auto-instrumentations-node');
|
|
24
|
-
|
|
21
|
+
(0, wrap_1.wrapMethodNoConflict)(moduleExport, 'getNodeAutoInstrumentations', 'otel.auto-instrumentations.getNodeAutoInstrumentations', ((original) => {
|
|
25
22
|
return function wrappedGetNodeAutoInstrumentations(options) {
|
|
26
23
|
// Real getNodeAutoInstrumentations(inputConfigs) creates instances from config;
|
|
27
24
|
// merge our responseHooks into the input so instances get them (E2E).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutator.js","sourceRoot":"","sources":["../../../src/bootstrap/otel/mutator.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"mutator.js","sourceRoot":"","sources":["../../../src/bootstrap/otel/mutator.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAwBH,0EA0CC;AAhED,qCAA0D;AAC1D,kDAA+D;AAC/D,qEAIiD;AACjD,kEAG8C;AAO9C;;;;GAIG;AACH,SAAgB,+BAA+B,CAC7C,MAAmC;IAEnC,MAAM,YAAY,GAChB,MAAM,IAAI,OAAO,CAAC,2CAA2C,CAAC,CAAC;IAEjE,IAAA,2BAAoB,EAClB,YAAkD,EAClD,6BAA6B,EAC7B,wDAAwD,EACxD,CAAC,CAAC,QAA0C,EAAE,EAAE;QAC9C,OAAO,SAAS,kCAAkC,CAEhD,OAAiB;YAEjB,gFAAgF;YAChF,sEAAsE;YACtE,MAAM,KAAK,GACT,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBACvE,CAAC,CAAE,OAAmC;gBACtC,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,MAAM,GAA4B,EAAE,GAAG,KAAK,EAAE,CAAC;YACrD,MAAM,CAAC,iCAAuB,CAAC,GAAG;gBAChC,GAAG,CAAE,KAAK,CAAC,iCAAuB,CAAY,IAAI,EAAE,CAAC;gBACrD,WAAW,EAAE,IAAA,kCAAwB,GAAE;gBACvC,YAAY,EAAE,IAAA,mCAAyB,GAAE;aAC1C,CAAC;YACF,MAAM,CAAC,oCAA0B,CAAC,GAAG;gBACnC,GAAG,CAAE,KAAK,CAAC,oCAA0B,CAAY,IAAI,EAAE,CAAC;gBACxD,YAAY,EAAE,IAAA,gCAAsB,GAAE;aACvC,CAAC;YAEF,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3C,mFAAmF;YACnF,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,IAAA,mBAAU,EAAC,GAAG,EAAE,iCAAuB,EAAE,aAAa,EAAE,IAAA,kCAAwB,GAAE,CAAC,CAAC;YACpF,IAAA,2BAAkB,EAAC,GAAG,EAAE,iCAAuB,EAAE,IAAA,mCAAyB,GAAE,CAAC,CAAC;YAC9E,IAAA,2BAAkB,EAAC,GAAG,EAAE,oCAA0B,EAAE,IAAA,gCAAsB,GAAE,CAAC,CAAC;YAC9E,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;IACJ,CAAC,CAAmF,CACrF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Softprobe wrapper utility that avoids shimmer's `__wrapped` metadata.
|
|
3
|
+
* We use Softprobe-owned metadata keys so OpenTelemetry wrapper detection
|
|
4
|
+
* does not treat Softprobe wrappers as foreign wrappers to strip.
|
|
5
|
+
*/
|
|
6
|
+
export declare const SOFTPROBE_WRAPPER_MARKER_KEY = "__softprobeWrapped";
|
|
7
|
+
export declare const SOFTPROBE_WRAPPER_ORIGINAL_NAME_KEY = "__softprobeOriginalName";
|
|
8
|
+
type AnyFn = (...args: unknown[]) => unknown;
|
|
9
|
+
export declare function isMethodWrappedWithMarker(target: Record<string, unknown>, method: string, marker: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Wrap target[method] with wrapperFactory(original) and store Softprobe metadata.
|
|
12
|
+
* Idempotent by marker for each method.
|
|
13
|
+
*/
|
|
14
|
+
export declare function wrapMethodNoConflict(target: Record<string, unknown>, method: string, marker: string, wrapperFactory: (original: AnyFn) => AnyFn): void;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=wrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../../src/core/runtime/wrap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,4BAA4B,uBAAuB,CAAC;AACjE,eAAO,MAAM,mCAAmC,4BAA4B,CAAC;AAE7E,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AA0C7C,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAGT;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,KAAK,GACzC,IAAI,CAmBN"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Softprobe wrapper utility that avoids shimmer's `__wrapped` metadata.
|
|
4
|
+
* We use Softprobe-owned metadata keys so OpenTelemetry wrapper detection
|
|
5
|
+
* does not treat Softprobe wrappers as foreign wrappers to strip.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.SOFTPROBE_WRAPPER_ORIGINAL_NAME_KEY = exports.SOFTPROBE_WRAPPER_MARKER_KEY = void 0;
|
|
9
|
+
exports.isMethodWrappedWithMarker = isMethodWrappedWithMarker;
|
|
10
|
+
exports.wrapMethodNoConflict = wrapMethodNoConflict;
|
|
11
|
+
exports.SOFTPROBE_WRAPPER_MARKER_KEY = '__softprobeWrapped';
|
|
12
|
+
exports.SOFTPROBE_WRAPPER_ORIGINAL_NAME_KEY = '__softprobeOriginalName';
|
|
13
|
+
function methodFn(target, method) {
|
|
14
|
+
const value = target[method];
|
|
15
|
+
if (typeof value !== 'function')
|
|
16
|
+
return undefined;
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
function markWrapped(fn, marker, originalName) {
|
|
20
|
+
Object.defineProperty(fn, exports.SOFTPROBE_WRAPPER_MARKER_KEY, {
|
|
21
|
+
configurable: true,
|
|
22
|
+
enumerable: false,
|
|
23
|
+
writable: false,
|
|
24
|
+
value: marker,
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(fn, exports.SOFTPROBE_WRAPPER_ORIGINAL_NAME_KEY, {
|
|
27
|
+
configurable: true,
|
|
28
|
+
enumerable: false,
|
|
29
|
+
writable: false,
|
|
30
|
+
value: originalName,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function preserveName(wrapper, originalName) {
|
|
34
|
+
if (!originalName)
|
|
35
|
+
return;
|
|
36
|
+
try {
|
|
37
|
+
Object.defineProperty(wrapper, 'name', {
|
|
38
|
+
configurable: true,
|
|
39
|
+
enumerable: false,
|
|
40
|
+
writable: false,
|
|
41
|
+
value: originalName,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// best effort only; function name may be non-configurable in some runtimes
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function isMethodWrappedWithMarker(target, method, marker) {
|
|
49
|
+
const fn = methodFn(target, method);
|
|
50
|
+
return Boolean(fn && fn[exports.SOFTPROBE_WRAPPER_MARKER_KEY] === marker);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Wrap target[method] with wrapperFactory(original) and store Softprobe metadata.
|
|
54
|
+
* Idempotent by marker for each method.
|
|
55
|
+
*/
|
|
56
|
+
function wrapMethodNoConflict(target, method, marker, wrapperFactory) {
|
|
57
|
+
const original = methodFn(target, method);
|
|
58
|
+
if (!original)
|
|
59
|
+
return;
|
|
60
|
+
if (original[exports.SOFTPROBE_WRAPPER_MARKER_KEY] === marker)
|
|
61
|
+
return;
|
|
62
|
+
const wrapped = wrapperFactory(original);
|
|
63
|
+
if (typeof wrapped !== 'function') {
|
|
64
|
+
throw new Error(`wrapMethodNoConflict expected function wrapper for ${String(method)}`);
|
|
65
|
+
}
|
|
66
|
+
preserveName(wrapped, original.name || String(method));
|
|
67
|
+
markWrapped(wrapped, marker, original.name || String(method));
|
|
68
|
+
Object.defineProperty(target, method, {
|
|
69
|
+
configurable: true,
|
|
70
|
+
enumerable: true,
|
|
71
|
+
writable: true,
|
|
72
|
+
value: wrapped,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=wrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap.js","sourceRoot":"","sources":["../../../src/core/runtime/wrap.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AA+CH,8DAOC;AAMD,oDAwBC;AAlFY,QAAA,4BAA4B,GAAG,oBAAoB,CAAC;AACpD,QAAA,mCAAmC,GAAG,yBAAyB,CAAC;AAS7E,SAAS,QAAQ,CAAC,MAA+B,EAAE,MAAc;IAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IAClD,OAAO,KAA2B,CAAC;AACrC,CAAC;AAED,SAAS,WAAW,CAAC,EAAsB,EAAE,MAAc,EAAE,YAAoB;IAC/E,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,oCAA4B,EAAE;QACtD,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,2CAAmC,EAAE;QAC7D,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,OAA2B,EAAE,YAAoB;IACrE,IAAI,CAAC,YAAY;QAAE,OAAO;IAC1B,IAAI,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE;YACrC,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,YAAY;SACpB,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;IAC7E,CAAC;AACH,CAAC;AAED,SAAgB,yBAAyB,CACvC,MAA+B,EAC/B,MAAc,EACd,MAAc;IAEd,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,oCAA4B,CAAC,KAAK,MAAM,CAAC,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAClC,MAA+B,EAC/B,MAAc,EACd,MAAc,EACd,cAA0C;IAE1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,IAAI,QAAQ,CAAC,oCAA4B,CAAC,KAAK,MAAM;QAAE,OAAO;IAE9D,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAuB,CAAC;IAC/D,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,sDAAsD,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9D,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;QACpC,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Cassette, SoftprobeMode } from '../../../types/schema';
|
|
1
2
|
export type QueueInboundResponsePayload = {
|
|
2
3
|
status: number;
|
|
3
4
|
body: unknown;
|
|
@@ -9,11 +10,16 @@ export type QueueInboundResponsePayload = {
|
|
|
9
10
|
/** Response body size in bytes when known from transport headers. */
|
|
10
11
|
responseBodyBytes?: number;
|
|
11
12
|
};
|
|
13
|
+
export type InboundCaptureSnapshot = {
|
|
14
|
+
mode: SoftprobeMode;
|
|
15
|
+
traceId: string;
|
|
16
|
+
cassette?: Cassette;
|
|
17
|
+
};
|
|
12
18
|
/**
|
|
13
19
|
* Queues an inbound HTTP response for capture. Writes one NDJSON record via the capture store.
|
|
14
20
|
* Uses active span context for traceId/spanId when not provided in payload.
|
|
15
21
|
*/
|
|
16
|
-
export declare function queueInboundResponse(traceId: string, payload: QueueInboundResponsePayload): void;
|
|
22
|
+
export declare function queueInboundResponse(traceId: string, payload: QueueInboundResponsePayload, snapshot?: InboundCaptureSnapshot): void;
|
|
17
23
|
/** Engine object for design alignment; used by Express and Fastify. */
|
|
18
24
|
export declare const CaptureEngine: {
|
|
19
25
|
queueInboundResponse: typeof queueInboundResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbound-capture.d.ts","sourceRoot":"","sources":["../../../../src/instrumentations/common/http/inbound-capture.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inbound-capture.d.ts","sourceRoot":"","sources":["../../../../src/instrumentations/common/http/inbound-capture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAA2B,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK9F,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,2BAA2B,EACpC,QAAQ,CAAC,EAAE,sBAAsB,GAChC,IAAI,CA2BN;AAED,uEAAuE;AACvE,eAAO,MAAM,aAAa;;CAEzB,CAAC"}
|
|
@@ -10,13 +10,14 @@ const http_body_1 = require("../../../core/runtime/http-body");
|
|
|
10
10
|
* Queues an inbound HTTP response for capture. Writes one NDJSON record via the capture store.
|
|
11
11
|
* Uses active span context for traceId/spanId when not provided in payload.
|
|
12
12
|
*/
|
|
13
|
-
function queueInboundResponse(traceId, payload) {
|
|
13
|
+
function queueInboundResponse(traceId, payload, snapshot) {
|
|
14
14
|
const span = api_1.trace.getActiveSpan();
|
|
15
15
|
const spanId = span?.spanContext().spanId ?? '';
|
|
16
16
|
const [method, ...urlParts] = payload.identifier.split(' ');
|
|
17
17
|
const url = urlParts.join(' ') || '/';
|
|
18
|
-
const cassette = context_1.SoftprobeContext.getCassette();
|
|
19
|
-
|
|
18
|
+
const cassette = snapshot?.cassette ?? context_1.SoftprobeContext.getCassette();
|
|
19
|
+
const mode = snapshot?.mode ?? context_1.SoftprobeContext.getMode();
|
|
20
|
+
if (mode !== 'CAPTURE' || !cassette)
|
|
20
21
|
return;
|
|
21
22
|
const record = {
|
|
22
23
|
version: '4.1',
|
|
@@ -34,7 +35,7 @@ function queueInboundResponse(traceId, payload) {
|
|
|
34
35
|
requestPayload: { body: payload.requestBody },
|
|
35
36
|
}),
|
|
36
37
|
};
|
|
37
|
-
const tid = context_1.SoftprobeContext.getTraceId();
|
|
38
|
+
const tid = snapshot?.traceId ?? context_1.SoftprobeContext.getTraceId();
|
|
38
39
|
void cassette.saveRecord(tid ? { ...record, traceId: tid } : record).catch(() => { });
|
|
39
40
|
}
|
|
40
41
|
/** Engine object for design alignment; used by Express and Fastify. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbound-capture.js","sourceRoot":"","sources":["../../../../src/instrumentations/common/http/inbound-capture.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"inbound-capture.js","sourceRoot":"","sources":["../../../../src/instrumentations/common/http/inbound-capture.ts"],"names":[],"mappings":";;;AA4BA,oDA+BC;AA3DD,4CAA2C;AAE3C,8CAAoD;AACpD,yDAA0D;AAC1D,+DAAoE;AAoBpE;;;GAGG;AACH,SAAgB,oBAAoB,CAClC,OAAe,EACf,OAAoC,EACpC,QAAiC;IAEjC,MAAM,IAAI,GAAG,WAAK,CAAC,aAAa,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC;IAEhD,MAAM,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;IACtC,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,0BAAgB,CAAC,WAAW,EAAE,CAAC;IACtE,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,0BAAgB,CAAC,OAAO,EAAE,CAAC;IAC1D,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,QAAQ;QAAE,OAAO;IAC5C,MAAM,MAAM,GAA4B;QACtC,OAAO,EAAE,KAAK;QACd,OAAO;QACP,MAAM;QACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,IAAA,2BAAc,EAAC,MAAM,EAAE,GAAG,CAAC;QACvC,eAAe,EAAE;YACf,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,GAAG,CAAC,IAAA,6BAAiB,EAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;SAC1F;QACD,GAAG,CAAC,IAAA,6BAAiB,EAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,gBAAgB,CAAC,IAAI;YACtE,cAAc,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE;SAC9C,CAAC;KACH,CAAC;IACF,MAAM,GAAG,GAAG,QAAQ,EAAE,OAAO,IAAI,0BAAgB,CAAC,UAAU,EAAE,CAAC;IAC/D,KAAK,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,uEAAuE;AAC1D,QAAA,aAAa,GAAG;IAC3B,oBAAoB;CACrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../src/instrumentations/express/capture.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,KAAK,2BAA2B,EACjC,MAAM,gCAAgC,CAAC;AAIxC,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC;AAC/C,YAAY,EAAE,2BAA2B,EAAE,CAAC;AAE5C,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;CACzD,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,qBAAqB,EAC1B,GAAG,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAA;CAAE,EAC9D,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,GAC5B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../src/instrumentations/express/capture.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,KAAK,2BAA2B,EACjC,MAAM,gCAAgC,CAAC;AAIxC,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC;AAC/C,YAAY,EAAE,2BAA2B,EAAE,CAAC;AAE5C,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;CACzD,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,qBAAqB,EAC1B,GAAG,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAA;CAAE,EAC9D,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,GAC5B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEtB"}
|
|
@@ -72,6 +72,10 @@ function softprobeExpressMiddleware(req, res, next) {
|
|
|
72
72
|
identifier: (0, span_adapter_1.buildInboundHttpIdentifier)(req.method, (0, inbound_path_1.resolveInboundPath)(req)),
|
|
73
73
|
requestBody: req.body,
|
|
74
74
|
requestBodyBytes: (0, http_body_1.parseContentLengthHeader)(req.headers),
|
|
75
|
+
}, {
|
|
76
|
+
mode,
|
|
77
|
+
traceId: ctxTraceId,
|
|
78
|
+
cassette: storage,
|
|
75
79
|
});
|
|
76
80
|
return originalSend.apply(res, arguments);
|
|
77
81
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../src/instrumentations/express/capture.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAmCH,
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../src/instrumentations/express/capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../../src/instrumentations/postgres/replay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../../src/instrumentations/postgres/replay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE;IAAE,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAAE,GAAG,IAAI,CA2HhG;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAI1C"}
|
|
@@ -4,62 +4,41 @@
|
|
|
4
4
|
* calls are resolved by the SemanticMatcher (no live network). Pairs with capture
|
|
5
5
|
* Task 4.2; identifier = query text per design §3.1, §6.
|
|
6
6
|
*/
|
|
7
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
-
};
|
|
10
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
8
|
exports.applyPostgresReplay = applyPostgresReplay;
|
|
12
9
|
exports.setupPostgresReplay = setupPostgresReplay;
|
|
13
|
-
const shimmer_1 = __importDefault(require("shimmer"));
|
|
14
10
|
const api_1 = require("@opentelemetry/api");
|
|
15
11
|
const context_1 = require("../../context");
|
|
16
12
|
const postgres_span_1 = require("../../core/bindings/postgres-span");
|
|
17
13
|
const callback_1 = require("../common/utils/callback");
|
|
18
|
-
const
|
|
14
|
+
const wrap_1 = require("../../core/runtime/wrap");
|
|
15
|
+
const QUERY_WRAPPED_MARKER = 'postgres.replay.query';
|
|
16
|
+
const CONNECT_WRAPPED_MARKER = 'postgres.replay.connect';
|
|
17
|
+
const END_WRAPPED_MARKER = 'postgres.replay.end';
|
|
19
18
|
/**
|
|
20
19
|
* Patches a pg module so connect is no-op and query uses matcher. Idempotent.
|
|
21
20
|
* Exported so init can call it from a require hook and patch whichever module first requires 'pg' (Task 16.3.1).
|
|
22
21
|
*/
|
|
23
22
|
function applyPostgresReplay(pg) {
|
|
24
|
-
|
|
25
|
-
if (existingQuery[SOFTPROBE_WRAPPED_MARKER])
|
|
23
|
+
if ((0, wrap_1.isMethodWrappedWithMarker)(pg.Client.prototype, 'query', QUERY_WRAPPED_MARKER))
|
|
26
24
|
return;
|
|
27
25
|
const connectKey = 'connect';
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
// replacing it. Call chain: OTel wrapper → our wrapper → original connect.
|
|
34
|
-
const patchedConnect = function wrappedConnect(...args) {
|
|
35
|
-
if (context_1.SoftprobeContext.getMode() === 'REPLAY')
|
|
36
|
-
return (0, callback_1.settleAsync)(args);
|
|
37
|
-
return origConnect.apply(this, args);
|
|
38
|
-
};
|
|
39
|
-
patchedConnect.__softprobeConnect = true;
|
|
40
|
-
Object.defineProperty(pg.Client.prototype, connectKey, {
|
|
41
|
-
configurable: true,
|
|
42
|
-
writable: true,
|
|
43
|
-
value: patchedConnect,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
26
|
+
(0, wrap_1.wrapMethodNoConflict)(pg.Client.prototype, connectKey, CONNECT_WRAPPED_MARKER, (origConnect) => function wrappedConnect(...args) {
|
|
27
|
+
if (context_1.SoftprobeContext.getMode() === 'REPLAY')
|
|
28
|
+
return (0, callback_1.settleAsync)(args);
|
|
29
|
+
return origConnect.apply(this, args);
|
|
30
|
+
});
|
|
46
31
|
// end() must not touch the network when we never connected (Task 16.3.1). OTel does not wrap
|
|
47
|
-
// end(),
|
|
32
|
+
// end(), but we still use no-conflict wrapper metadata for consistency.
|
|
48
33
|
const endKey = 'end';
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
// Use Object.defineProperty (NOT shimmer.wrap) so OTel does NOT detect __wrapped and strip us.
|
|
59
|
-
// OTel wraps our patchedQuery with its span-creating wrapper; our wrapper stays in the chain.
|
|
60
|
-
// Call chain: OTel query wrapper → our patchedQuery → original query.
|
|
61
|
-
const origQuery = pg.Client.prototype.query;
|
|
62
|
-
const patchedQuery = function wrappedQuery(...args) {
|
|
34
|
+
(0, wrap_1.wrapMethodNoConflict)(pg.Client.prototype, endKey, END_WRAPPED_MARKER, (originalEnd) => function wrappedEnd(...args) {
|
|
35
|
+
if (context_1.SoftprobeContext.getMode() === 'REPLAY')
|
|
36
|
+
return (0, callback_1.settleAsync)(args);
|
|
37
|
+
return originalEnd.apply(this, args);
|
|
38
|
+
});
|
|
39
|
+
// Use no-conflict metadata so OTel's __wrapped checks never treat Softprobe as wrapped.
|
|
40
|
+
// OTel wraps our query wrapper with its span-creating wrapper; our wrapper stays in the chain.
|
|
41
|
+
(0, wrap_1.wrapMethodNoConflict)(pg.Client.prototype, 'query', QUERY_WRAPPED_MARKER, (origQuery) => function wrappedQuery(...args) {
|
|
63
42
|
const matcher = context_1.SoftprobeContext.active().matcher;
|
|
64
43
|
const mode = context_1.SoftprobeContext.getMode();
|
|
65
44
|
const strictReplay = context_1.SoftprobeContext.getStrictReplay();
|
|
@@ -142,12 +121,6 @@ function applyPostgresReplay(pg) {
|
|
|
142
121
|
return undefined;
|
|
143
122
|
}
|
|
144
123
|
return Promise.resolve(mockedResult);
|
|
145
|
-
};
|
|
146
|
-
patchedQuery[SOFTPROBE_WRAPPED_MARKER] = true;
|
|
147
|
-
Object.defineProperty(pg.Client.prototype, 'query', {
|
|
148
|
-
configurable: true,
|
|
149
|
-
writable: true,
|
|
150
|
-
value: patchedQuery,
|
|
151
124
|
});
|
|
152
125
|
}
|
|
153
126
|
/**
|
|
@@ -156,8 +129,7 @@ function applyPostgresReplay(pg) {
|
|
|
156
129
|
*/
|
|
157
130
|
function setupPostgresReplay() {
|
|
158
131
|
const pg = require('pg');
|
|
159
|
-
|
|
160
|
-
if (existingQuery[SOFTPROBE_WRAPPED_MARKER])
|
|
132
|
+
if ((0, wrap_1.isMethodWrappedWithMarker)(pg.Client.prototype, 'query', QUERY_WRAPPED_MARKER))
|
|
161
133
|
return;
|
|
162
134
|
applyPostgresReplay(pg);
|
|
163
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../../src/instrumentations/postgres/replay.ts"],"names":[],"mappings":";AAAA;;;;GAIG
|
|
1
|
+
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../../src/instrumentations/postgres/replay.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../../src/instrumentations/redis/replay.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoBH;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../../src/instrumentations/redis/replay.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoBH;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAgIvC;AAgCD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAgBrE"}
|
|
@@ -8,17 +8,14 @@
|
|
|
8
8
|
* command (get, set, etc.) is our wrapper; the client captures that executor in
|
|
9
9
|
* a closure when the module loads, so we must patch before the client loads.
|
|
10
10
|
*/
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
12
|
exports.setupRedisReplay = setupRedisReplay;
|
|
16
13
|
exports.applyRedisReplay = applyRedisReplay;
|
|
17
14
|
const api_1 = require("@opentelemetry/api");
|
|
18
|
-
const shimmer_1 = __importDefault(require("shimmer"));
|
|
19
15
|
const redis_span_1 = require("../../core/bindings/redis-span");
|
|
20
16
|
const context_1 = require("../../context");
|
|
21
17
|
const callback_1 = require("../common/utils/callback");
|
|
18
|
+
const wrap_1 = require("../../core/runtime/wrap");
|
|
22
19
|
/**
|
|
23
20
|
* Builds the same identifier string as the Redis capture hook (capture/redis.ts):
|
|
24
21
|
* command name (uppercase) plus args joined by space.
|
|
@@ -40,7 +37,7 @@ function setupRedisReplay() {
|
|
|
40
37
|
const { transformCommandArguments, transformCommandReply } = commanderModule;
|
|
41
38
|
if (!transformCommandArguments || !transformCommandReply)
|
|
42
39
|
return;
|
|
43
|
-
|
|
40
|
+
(0, wrap_1.wrapMethodNoConflict)(commanderModule, 'attachCommands', 'redis.replay.attachCommands', (originalAttachCommands) => function patchedAttachCommands(config) {
|
|
44
41
|
const cfg = config;
|
|
45
42
|
const originalExecutor = cfg.executor;
|
|
46
43
|
const wrappedConfig = {
|
|
@@ -150,7 +147,7 @@ function applyInstanceNoops(client) {
|
|
|
150
147
|
if (typeof client.QUIT === 'function')
|
|
151
148
|
client.QUIT = noopQuitFn(client.QUIT);
|
|
152
149
|
}
|
|
153
|
-
const SOFTPROBE_CREATE_CLIENT_WRAPPED = '
|
|
150
|
+
const SOFTPROBE_CREATE_CLIENT_WRAPPED = 'redis.replay.createClient';
|
|
154
151
|
/**
|
|
155
152
|
* Wraps createClient so every new client gets connect/quit no-ops as instance own-properties.
|
|
156
153
|
* Using instance-level patching (not prototype) makes it immune to OTel re-patching the redis
|
|
@@ -162,13 +159,12 @@ function applyRedisReplay(redis) {
|
|
|
162
159
|
const target = redis.createClient != null ? redis : redis.default;
|
|
163
160
|
if (!target)
|
|
164
161
|
return;
|
|
165
|
-
if (target
|
|
162
|
+
if ((0, wrap_1.isMethodWrappedWithMarker)(target, 'createClient', SOFTPROBE_CREATE_CLIENT_WRAPPED))
|
|
166
163
|
return;
|
|
167
|
-
|
|
164
|
+
(0, wrap_1.wrapMethodNoConflict)(target, 'createClient', SOFTPROBE_CREATE_CLIENT_WRAPPED, (original) => function (...args) {
|
|
168
165
|
const client = original.apply(this, args);
|
|
169
166
|
applyInstanceNoops(client);
|
|
170
167
|
return client;
|
|
171
168
|
});
|
|
172
|
-
target.createClient[SOFTPROBE_CREATE_CLIENT_WRAPPED] = true;
|
|
173
169
|
}
|
|
174
170
|
//# sourceMappingURL=replay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../../src/instrumentations/redis/replay.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG
|
|
1
|
+
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../../src/instrumentations/redis/replay.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@softprobe/softprobe-js",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.8",
|
|
4
4
|
"description": "Topology-aware record & replay testing framework via OpenTelemetry",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"softprobe",
|
|
@@ -66,7 +66,6 @@
|
|
|
66
66
|
"express": "^5.2.1",
|
|
67
67
|
"fastify": "^5.1.0",
|
|
68
68
|
"fastify-plugin": "^5.0.1",
|
|
69
|
-
"shimmer": "^1.2.0",
|
|
70
69
|
"undici": "^6.0.0",
|
|
71
70
|
"yaml": "^2.6.0"
|
|
72
71
|
},
|