traceperf 0.2.0 → 1.3.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.
- package/README.md +612 -209
- package/dist/__tests__/helpers/console.d.ts +9 -0
- package/dist/__tests__/helpers/console.js +25 -0
- package/dist/__tests__/helpers/console.js.map +1 -0
- package/dist/auto.d.ts +30 -0
- package/dist/auto.js +91 -0
- package/dist/auto.js.map +1 -0
- package/dist/browser.d.ts +52 -144
- package/dist/browser.js +112 -439
- package/dist/browser.js.map +1 -1
- package/dist/cli.d.ts +68 -0
- package/dist/cli.js +528 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/allocations.d.ts +38 -0
- package/dist/core/allocations.js +85 -0
- package/dist/core/allocations.js.map +1 -0
- package/dist/core/cpu-profile.d.ts +84 -0
- package/dist/core/cpu-profile.js +181 -0
- package/dist/core/cpu-profile.js.map +1 -0
- package/dist/core/env.d.ts +10 -0
- package/dist/core/env.js +40 -0
- package/dist/core/env.js.map +1 -0
- package/dist/core/event-loop.d.ts +30 -0
- package/dist/core/event-loop.js +43 -0
- package/dist/core/event-loop.js.map +1 -0
- package/dist/core/explain.d.ts +48 -0
- package/dist/core/explain.js +236 -0
- package/dist/core/explain.js.map +1 -0
- package/dist/core/exporters.d.ts +111 -0
- package/dist/core/exporters.js +236 -0
- package/dist/core/exporters.js.map +1 -0
- package/dist/core/index.d.ts +9 -3
- package/dist/core/index.js +9 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/optimized-performance-monitor.d.ts +180 -26
- package/dist/core/optimized-performance-monitor.js +687 -175
- package/dist/core/optimized-performance-monitor.js.map +1 -1
- package/dist/core/prometheus.d.ts +36 -0
- package/dist/core/prometheus.js +93 -0
- package/dist/core/prometheus.js.map +1 -0
- package/dist/core/records.d.ts +97 -0
- package/dist/core/records.js +87 -0
- package/dist/core/records.js.map +1 -0
- package/dist/core/stats.d.ts +45 -0
- package/dist/core/stats.js +136 -0
- package/dist/core/stats.js.map +1 -0
- package/dist/core/timeline.d.ts +28 -0
- package/dist/core/timeline.js +65 -0
- package/dist/core/timeline.js.map +1 -0
- package/dist/drivers.d.ts +51 -0
- package/dist/drivers.js +205 -0
- package/dist/drivers.js.map +1 -0
- package/dist/esm/auto.d.ts +30 -0
- package/dist/esm/auto.js +87 -0
- package/dist/esm/auto.js.map +1 -0
- package/dist/esm/browser.d.ts +52 -144
- package/dist/esm/browser.js +101 -445
- package/dist/esm/browser.js.map +1 -1
- package/dist/esm/cli.d.ts +68 -0
- package/dist/esm/cli.js +520 -0
- package/dist/esm/cli.js.map +1 -0
- package/dist/esm/core/allocations.d.ts +38 -0
- package/dist/esm/core/allocations.js +82 -0
- package/dist/esm/core/allocations.js.map +1 -0
- package/dist/esm/core/cpu-profile.d.ts +84 -0
- package/dist/esm/core/cpu-profile.js +176 -0
- package/dist/esm/core/cpu-profile.js.map +1 -0
- package/dist/esm/core/env.d.ts +10 -0
- package/dist/esm/core/env.js +35 -0
- package/dist/esm/core/env.js.map +1 -0
- package/dist/esm/core/event-loop.d.ts +30 -0
- package/dist/esm/core/event-loop.js +40 -0
- package/dist/esm/core/event-loop.js.map +1 -0
- package/dist/esm/core/explain.d.ts +48 -0
- package/dist/esm/core/explain.js +232 -0
- package/dist/esm/core/explain.js.map +1 -0
- package/dist/esm/core/exporters.d.ts +111 -0
- package/dist/esm/core/exporters.js +229 -0
- package/dist/esm/core/exporters.js.map +1 -0
- package/dist/esm/core/index.d.ts +10 -4
- package/dist/esm/core/index.js +10 -4
- package/dist/esm/core/index.js.map +1 -1
- package/dist/esm/core/optimized-performance-monitor.d.ts +180 -26
- package/dist/esm/core/optimized-performance-monitor.js +685 -173
- package/dist/esm/core/optimized-performance-monitor.js.map +1 -1
- package/dist/esm/core/prometheus.d.ts +36 -0
- package/dist/esm/core/prometheus.js +89 -0
- package/dist/esm/core/prometheus.js.map +1 -0
- package/dist/esm/core/records.d.ts +97 -0
- package/dist/esm/core/records.js +82 -0
- package/dist/esm/core/records.js.map +1 -0
- package/dist/esm/core/stats.d.ts +45 -0
- package/dist/esm/core/stats.js +131 -0
- package/dist/esm/core/stats.js.map +1 -0
- package/dist/esm/core/timeline.d.ts +28 -0
- package/dist/esm/core/timeline.js +62 -0
- package/dist/esm/core/timeline.js.map +1 -0
- package/dist/esm/drivers.d.ts +51 -0
- package/dist/esm/drivers.js +197 -0
- package/dist/esm/drivers.js.map +1 -0
- package/dist/esm/index.d.ts +13 -5
- package/dist/esm/index.js +21 -17
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instrument.d.ts +88 -0
- package/dist/esm/instrument.js +274 -0
- package/dist/esm/instrument.js.map +1 -0
- package/dist/esm/integrations.d.ts +70 -0
- package/dist/esm/integrations.js +197 -0
- package/dist/esm/integrations.js.map +1 -0
- package/dist/esm/node-builtins.d.ts +1 -0
- package/dist/esm/node-builtins.js +32 -0
- package/dist/esm/node-builtins.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/register.d.ts +20 -0
- package/dist/esm/register.js +98 -0
- package/dist/esm/register.js.map +1 -0
- package/dist/esm/report-html.d.ts +11 -0
- package/dist/esm/report-html.js +106 -0
- package/dist/esm/report-html.js.map +1 -0
- package/dist/esm/types/index.d.ts +4 -80
- package/dist/esm/types/index.js +1 -2
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/options.d.ts +72 -0
- package/dist/esm/types/options.js +2 -0
- package/dist/esm/types/options.js.map +1 -0
- package/dist/esm/watch.d.ts +17 -0
- package/dist/esm/watch.js +87 -0
- package/dist/esm/watch.js.map +1 -0
- package/dist/index.d.ts +10 -2
- package/dist/index.js +26 -29
- package/dist/index.js.map +1 -1
- package/dist/instrument.d.ts +88 -0
- package/dist/instrument.js +282 -0
- package/dist/instrument.js.map +1 -0
- package/dist/integrations.d.ts +70 -0
- package/dist/integrations.js +205 -0
- package/dist/integrations.js.map +1 -0
- package/dist/node-builtins.d.ts +1 -0
- package/dist/node-builtins.js +67 -0
- package/dist/node-builtins.js.map +1 -0
- package/dist/register.d.ts +20 -0
- package/dist/register.js +103 -0
- package/dist/register.js.map +1 -0
- package/dist/report-html.d.ts +11 -0
- package/dist/report-html.js +109 -0
- package/dist/report-html.js.map +1 -0
- package/dist/traceperf.browser.js +1910 -0
- package/dist/traceperf.browser.min.js +6 -0
- package/dist/types/index.d.ts +4 -80
- package/dist/types/index.js +1 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/options.d.ts +72 -0
- package/dist/types/{config.js → options.js} +1 -1
- package/dist/types/options.js.map +1 -0
- package/dist/watch.d.ts +17 -0
- package/dist/watch.js +90 -0
- package/dist/watch.js.map +1 -0
- package/package.json +99 -19
- package/dist/core/config.d.ts +0 -77
- package/dist/core/config.js +0 -116
- package/dist/core/config.js.map +0 -1
- package/dist/core/constants.d.ts +0 -78
- package/dist/core/constants.js +0 -109
- package/dist/core/constants.js.map +0 -1
- package/dist/core/logger.d.ts +0 -97
- package/dist/core/logger.js +0 -186
- package/dist/core/logger.js.map +0 -1
- package/dist/esm/core/config.d.ts +0 -77
- package/dist/esm/core/config.js +0 -112
- package/dist/esm/core/config.js.map +0 -1
- package/dist/esm/core/constants.d.ts +0 -78
- package/dist/esm/core/constants.js +0 -106
- package/dist/esm/core/constants.js.map +0 -1
- package/dist/esm/core/logger.d.ts +0 -97
- package/dist/esm/core/logger.js +0 -182
- package/dist/esm/core/logger.js.map +0 -1
- package/dist/esm/formatters/ascii.d.ts +0 -52
- package/dist/esm/formatters/ascii.js +0 -100
- package/dist/esm/formatters/ascii.js.map +0 -1
- package/dist/esm/formatters/cli.d.ts +0 -50
- package/dist/esm/formatters/cli.js +0 -96
- package/dist/esm/formatters/cli.js.map +0 -1
- package/dist/esm/formatters/index.d.ts +0 -3
- package/dist/esm/formatters/index.js +0 -4
- package/dist/esm/formatters/index.js.map +0 -1
- package/dist/esm/formatters/json.d.ts +0 -45
- package/dist/esm/formatters/json.js +0 -85
- package/dist/esm/formatters/json.js.map +0 -1
- package/dist/esm/trackers/execution.d.ts +0 -101
- package/dist/esm/trackers/execution.js +0 -226
- package/dist/esm/trackers/execution.js.map +0 -1
- package/dist/esm/trackers/index.d.ts +0 -2
- package/dist/esm/trackers/index.js +0 -3
- package/dist/esm/trackers/index.js.map +0 -1
- package/dist/esm/trackers/performance.d.ts +0 -68
- package/dist/esm/trackers/performance.js +0 -112
- package/dist/esm/trackers/performance.js.map +0 -1
- package/dist/esm/types/config.d.ts +0 -142
- package/dist/esm/types/config.js +0 -2
- package/dist/esm/types/config.js.map +0 -1
- package/dist/esm/types/logger.d.ts +0 -147
- package/dist/esm/types/logger.js +0 -2
- package/dist/esm/types/logger.js.map +0 -1
- package/dist/esm/utils/colors.d.ts +0 -87
- package/dist/esm/utils/colors.js +0 -146
- package/dist/esm/utils/colors.js.map +0 -1
- package/dist/esm/utils/index.d.ts +0 -3
- package/dist/esm/utils/index.js +0 -4
- package/dist/esm/utils/index.js.map +0 -1
- package/dist/esm/utils/proxy-tracker.d.ts +0 -68
- package/dist/esm/utils/proxy-tracker.js +0 -127
- package/dist/esm/utils/proxy-tracker.js.map +0 -1
- package/dist/esm/utils/stack.d.ts +0 -63
- package/dist/esm/utils/stack.js +0 -110
- package/dist/esm/utils/stack.js.map +0 -1
- package/dist/esm/utils/string.d.ts +0 -29
- package/dist/esm/utils/string.js +0 -45
- package/dist/esm/utils/string.js.map +0 -1
- package/dist/esm/utils/timing.d.ts +0 -65
- package/dist/esm/utils/timing.js +0 -99
- package/dist/esm/utils/timing.js.map +0 -1
- package/dist/formatters/ascii.d.ts +0 -52
- package/dist/formatters/ascii.js +0 -104
- package/dist/formatters/ascii.js.map +0 -1
- package/dist/formatters/cli.d.ts +0 -50
- package/dist/formatters/cli.js +0 -100
- package/dist/formatters/cli.js.map +0 -1
- package/dist/formatters/index.d.ts +0 -3
- package/dist/formatters/index.js +0 -20
- package/dist/formatters/index.js.map +0 -1
- package/dist/formatters/json.d.ts +0 -45
- package/dist/formatters/json.js +0 -89
- package/dist/formatters/json.js.map +0 -1
- package/dist/trackers/execution.d.ts +0 -101
- package/dist/trackers/execution.js +0 -230
- package/dist/trackers/execution.js.map +0 -1
- package/dist/trackers/index.d.ts +0 -2
- package/dist/trackers/index.js +0 -19
- package/dist/trackers/index.js.map +0 -1
- package/dist/trackers/performance.d.ts +0 -68
- package/dist/trackers/performance.js +0 -116
- package/dist/trackers/performance.js.map +0 -1
- package/dist/types/config.d.ts +0 -142
- package/dist/types/config.js.map +0 -1
- package/dist/types/logger.d.ts +0 -147
- package/dist/types/logger.js +0 -3
- package/dist/types/logger.js.map +0 -1
- package/dist/types.d.ts +0 -65
- package/dist/types.js +0 -6
- package/dist/types.js.map +0 -1
- package/dist/utils/colors.d.ts +0 -87
- package/dist/utils/colors.js +0 -160
- package/dist/utils/colors.js.map +0 -1
- package/dist/utils/index.d.ts +0 -3
- package/dist/utils/index.js +0 -20
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/proxy-tracker.d.ts +0 -68
- package/dist/utils/proxy-tracker.js +0 -131
- package/dist/utils/proxy-tracker.js.map +0 -1
- package/dist/utils/stack.d.ts +0 -63
- package/dist/utils/stack.js +0 -116
- package/dist/utils/stack.js.map +0 -1
- package/dist/utils/string.d.ts +0 -29
- package/dist/utils/string.js +0 -50
- package/dist/utils/string.js.map +0 -1
- package/dist/utils/timing.d.ts +0 -65
- package/dist/utils/timing.js +0 -106
- package/dist/utils/timing.js.map +0 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.captureLogs = captureLogs;
|
|
4
|
+
exports.busyWait = busyWait;
|
|
5
|
+
/**
|
|
6
|
+
* Capture console.log output for assertions on what users actually see.
|
|
7
|
+
*/
|
|
8
|
+
function captureLogs() {
|
|
9
|
+
const calls = [];
|
|
10
|
+
const spy = jest.spyOn(console, 'log').mockImplementation((...args) => {
|
|
11
|
+
calls.push(args.map(String).join(' '));
|
|
12
|
+
});
|
|
13
|
+
return {
|
|
14
|
+
lines: () => calls,
|
|
15
|
+
text: () => calls.join('\n'),
|
|
16
|
+
restore: () => spy.mockRestore(),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function busyWait(ms) {
|
|
20
|
+
const start = Date.now();
|
|
21
|
+
while (Date.now() - start < ms) {
|
|
22
|
+
// spin
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=console.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/console.ts"],"names":[],"mappings":";;AAGA,kCAUC;AAED,4BAKC;AApBD;;GAEG;AACH,SAAgB,WAAW;IACzB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE;QAC3E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;QAClB,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE;KACjC,CAAC;AACJ,CAAC;AAED,SAAgB,QAAQ,CAAC,EAAU;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;AACH,CAAC"}
|
package/dist/auto.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zero-code instrumentation: incoming HTTP requests, outgoing http/fetch and
|
|
3
|
+
* the database clients the application depends on.
|
|
4
|
+
*
|
|
5
|
+
* const { uninstall, instrumented } = autoInstrument(tp);
|
|
6
|
+
*
|
|
7
|
+
* or without touching the code (see register.ts):
|
|
8
|
+
*
|
|
9
|
+
* node --require traceperf/auto app.js # CommonJS or ESM apps
|
|
10
|
+
* node --import traceperf/auto app.mjs # Node >= 18.19 / 20.6
|
|
11
|
+
*/
|
|
12
|
+
import type { OptimizedPerformanceMonitor } from './core/optimized-performance-monitor';
|
|
13
|
+
import { HttpServerInstrumentOptions, Uninstall } from './instrument';
|
|
14
|
+
export type AutoTarget = 'server' | 'http' | 'fetch' | 'pg' | 'mysql2' | 'mongodb' | 'ioredis';
|
|
15
|
+
export declare const AUTO_TARGETS: AutoTarget[];
|
|
16
|
+
export interface AutoInstrumentOptions {
|
|
17
|
+
/** Targets to skip, e.g. ['http'] */
|
|
18
|
+
disable?: AutoTarget[];
|
|
19
|
+
/** Directory whose package.json lists the app's dependencies (default process.cwd()) */
|
|
20
|
+
cwd?: string;
|
|
21
|
+
/** Options for incoming-request tracking (labels, ignored paths, error status) */
|
|
22
|
+
server?: HttpServerInstrumentOptions;
|
|
23
|
+
}
|
|
24
|
+
export interface AutoInstrumentResult {
|
|
25
|
+
/** What was instrumented, e.g. ['server', 'http', 'fetch', 'pg'] */
|
|
26
|
+
instrumented: AutoTarget[];
|
|
27
|
+
/** Remove every patch */
|
|
28
|
+
uninstall: Uninstall;
|
|
29
|
+
}
|
|
30
|
+
export declare function autoInstrument(tp: OptimizedPerformanceMonitor, options?: AutoInstrumentOptions): AutoInstrumentResult;
|
package/dist/auto.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AUTO_TARGETS = void 0;
|
|
4
|
+
exports.autoInstrument = autoInstrument;
|
|
5
|
+
const env_1 = require("./core/env");
|
|
6
|
+
const instrument_1 = require("./instrument");
|
|
7
|
+
const drivers_1 = require("./drivers");
|
|
8
|
+
exports.AUTO_TARGETS = ['server', 'http', 'fetch', 'pg', 'mysql2', 'mongodb', 'ioredis'];
|
|
9
|
+
/** Dependencies declared by the nearest package.json at or above `dir` */
|
|
10
|
+
function declaredDependencies(dir) {
|
|
11
|
+
const fs = (0, env_1.loadNodeBuiltin)('fs');
|
|
12
|
+
const path = (0, env_1.loadNodeBuiltin)('path');
|
|
13
|
+
if (!fs || !path)
|
|
14
|
+
return undefined;
|
|
15
|
+
let current = path.resolve(dir);
|
|
16
|
+
for (;;) {
|
|
17
|
+
const file = path.join(current, 'package.json');
|
|
18
|
+
if (fs.existsSync(file)) {
|
|
19
|
+
try {
|
|
20
|
+
const pkg = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
21
|
+
const names = new Set(Object.keys({
|
|
22
|
+
...pkg.dependencies, ...pkg.devDependencies, ...pkg.optionalDependencies, ...pkg.peerDependencies,
|
|
23
|
+
}));
|
|
24
|
+
return { names, dir: current };
|
|
25
|
+
}
|
|
26
|
+
catch (_a) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const parent = path.dirname(current);
|
|
31
|
+
if (parent === current)
|
|
32
|
+
return undefined;
|
|
33
|
+
current = parent;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function autoInstrument(tp, options = {}) {
|
|
37
|
+
var _a, _b;
|
|
38
|
+
const disabled = new Set((_a = options.disable) !== null && _a !== void 0 ? _a : []);
|
|
39
|
+
const instrumented = [];
|
|
40
|
+
const restores = [];
|
|
41
|
+
const add = (target, install) => {
|
|
42
|
+
if (disabled.has(target))
|
|
43
|
+
return;
|
|
44
|
+
try {
|
|
45
|
+
const restore = install();
|
|
46
|
+
if (restore) {
|
|
47
|
+
restores.push(restore);
|
|
48
|
+
instrumented.push(target);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (_a) {
|
|
52
|
+
// A client that cannot be loaded or patched is skipped, never fatal
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
const hasHttp = !!(0, env_1.loadNodeBuiltin)('http');
|
|
56
|
+
if (hasHttp)
|
|
57
|
+
add('server', () => (0, instrument_1.instrumentHttpServer)(tp, options.server));
|
|
58
|
+
if (hasHttp)
|
|
59
|
+
add('http', () => (0, instrument_1.instrumentHttp)(tp));
|
|
60
|
+
if (typeof globalThis.fetch === 'function')
|
|
61
|
+
add('fetch', () => (0, instrument_1.instrumentFetch)(tp));
|
|
62
|
+
// Database clients: only those the app itself depends on, loaded from the
|
|
63
|
+
// app's node_modules so the patched module is the one the app gets. They
|
|
64
|
+
// are CommonJS packages, so `import pg from 'pg'` returns the same object.
|
|
65
|
+
const moduleApi = (0, env_1.loadNodeBuiltin)('module');
|
|
66
|
+
const path = (0, env_1.loadNodeBuiltin)('path');
|
|
67
|
+
const deps = moduleApi && path && typeof moduleApi.createRequire === 'function'
|
|
68
|
+
? declaredDependencies((_b = options.cwd) !== null && _b !== void 0 ? _b : process.cwd())
|
|
69
|
+
: undefined;
|
|
70
|
+
if (deps) {
|
|
71
|
+
const appRequire = moduleApi.createRequire(path.join(deps.dir, 'package.json'));
|
|
72
|
+
const load = (name) => appRequire(name);
|
|
73
|
+
if (deps.names.has('pg'))
|
|
74
|
+
add('pg', () => (0, drivers_1.instrumentPg)(tp, load('pg')));
|
|
75
|
+
if (deps.names.has('mysql2'))
|
|
76
|
+
add('mysql2', () => (0, drivers_1.instrumentMysql2)(tp, load('mysql2')));
|
|
77
|
+
if (deps.names.has('ioredis'))
|
|
78
|
+
add('ioredis', () => (0, drivers_1.instrumentRedis)(tp, load('ioredis')));
|
|
79
|
+
if (deps.names.has('mongodb'))
|
|
80
|
+
add('mongodb', () => (0, drivers_1.instrumentMongo)(tp, load('mongodb')));
|
|
81
|
+
else if (deps.names.has('mongoose')) {
|
|
82
|
+
// Mongoose's own copy of the driver, without loading Mongoose itself
|
|
83
|
+
add('mongodb', () => {
|
|
84
|
+
const fromMongoose = moduleApi.createRequire(appRequire.resolve('mongoose'));
|
|
85
|
+
return (0, drivers_1.instrumentMongo)(tp, fromMongoose('mongodb'));
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return { instrumented, uninstall: () => restores.splice(0).reverse().forEach(r => r()) };
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=auto.js.map
|
package/dist/auto.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../src/auto.ts"],"names":[],"mappings":"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"}
|
package/dist/browser.d.ts
CHANGED
|
@@ -4,141 +4,58 @@
|
|
|
4
4
|
* This file provides a browser-compatible version of TracePerf that can be used
|
|
5
5
|
* in React, Next.js, or other frontend applications.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
7
|
+
import type { TracePerfConfig, TrackOptions } from './types/options';
|
|
8
|
+
import { OptimizedPerformanceMonitor } from './core/optimized-performance-monitor';
|
|
9
|
+
import type { ExecutionRecord } from './core/records';
|
|
8
10
|
export declare const TrackingMode: {
|
|
9
|
-
PERFORMANCE:
|
|
10
|
-
BALANCED:
|
|
11
|
-
DETAILED:
|
|
12
|
-
DEBUG:
|
|
11
|
+
readonly PERFORMANCE: "performance";
|
|
12
|
+
readonly BALANCED: "balanced";
|
|
13
|
+
readonly DETAILED: "detailed";
|
|
14
|
+
readonly DEBUG: "debug";
|
|
13
15
|
};
|
|
14
16
|
/**
|
|
15
|
-
*
|
|
17
|
+
* Configuration accepted by the browser createTracePerf()/BrowserLogger
|
|
16
18
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
private _defaultThreshold;
|
|
20
|
-
constructor(options?: {
|
|
21
|
-
defaultThreshold?: number;
|
|
22
|
-
});
|
|
23
|
-
startTimer(label: string): string;
|
|
24
|
-
endTimer(id: string): number;
|
|
25
|
-
isBottleneck(duration: number, threshold?: number): boolean;
|
|
26
|
-
/**
|
|
27
|
-
* Get memory usage from browser performance API
|
|
28
|
-
* @returns Memory usage object with heap metrics or undefined if not available
|
|
29
|
-
*/
|
|
30
|
-
getMemoryUsage(): {
|
|
31
|
-
heapUsed: number;
|
|
32
|
-
heapTotal: number;
|
|
33
|
-
external: number;
|
|
34
|
-
rss: number;
|
|
35
|
-
} | undefined;
|
|
36
|
-
/**
|
|
37
|
-
* Calculate memory difference
|
|
38
|
-
* @param start - Starting memory usage
|
|
39
|
-
* @returns Memory difference in bytes
|
|
40
|
-
*/
|
|
41
|
-
getMemoryDiff(start: {
|
|
42
|
-
heapUsed: number;
|
|
43
|
-
}): number;
|
|
44
|
-
now(): number;
|
|
45
|
-
generateSuggestion(functionName: string, duration: number, memoryUsage?: number): string;
|
|
46
|
-
}
|
|
19
|
+
/** Log levels for BrowserLogger's console methods */
|
|
20
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
47
21
|
/**
|
|
48
|
-
*
|
|
22
|
+
* BrowserLogger console-method filtering:
|
|
23
|
+
* - dev: everything
|
|
24
|
+
* - staging: warn and error
|
|
25
|
+
* - prod: error only
|
|
49
26
|
*/
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
* @param options - Tracker options
|
|
62
|
-
*/
|
|
63
|
-
constructor(options?: {
|
|
64
|
-
defaultThreshold?: number;
|
|
65
|
-
});
|
|
66
|
-
/**
|
|
67
|
-
* Generate a performance optimization suggestion based on execution duration
|
|
68
|
-
*
|
|
69
|
-
* @param name - Function name
|
|
70
|
-
* @param duration - Execution duration in ms
|
|
71
|
-
* @returns Optimization suggestion
|
|
72
|
-
*/
|
|
73
|
-
private generateSuggestion;
|
|
74
|
-
/**
|
|
75
|
-
* Track the execution of a function
|
|
76
|
-
*
|
|
77
|
-
* @param fn - The function to track
|
|
78
|
-
* @param options - Options for tracking
|
|
79
|
-
* @returns The return value of the tracked function
|
|
80
|
-
*/
|
|
81
|
-
track<T>(fn: () => T, options?: any): T;
|
|
82
|
-
/**
|
|
83
|
-
* Create a trackable version of a function
|
|
84
|
-
*
|
|
85
|
-
* This is a helper method to create a tracked version of a function
|
|
86
|
-
* that can be used for nested function tracking.
|
|
87
|
-
*
|
|
88
|
-
* @param fn - The function to make trackable
|
|
89
|
-
* @param options - Options for tracking
|
|
90
|
-
* @returns A tracked version of the function
|
|
91
|
-
*/
|
|
92
|
-
createTrackable<T extends (...args: any[]) => any>(fn: T, options?: Omit<ITrackOptions, 'label'> & {
|
|
93
|
-
label?: string;
|
|
94
|
-
}): (...args: Parameters<T>) => ReturnType<T>;
|
|
95
|
-
/**
|
|
96
|
-
* Get the current call stack
|
|
97
|
-
*
|
|
98
|
-
* @returns The current call stack
|
|
99
|
-
*/
|
|
100
|
-
getCallStack(): string[];
|
|
101
|
-
/**
|
|
102
|
-
* Generate a visual representation of the execution flow
|
|
103
|
-
*
|
|
104
|
-
* @returns ASCII flow chart of the execution
|
|
105
|
-
*/
|
|
106
|
-
generateFlowChart(): string;
|
|
107
|
-
/**
|
|
108
|
-
* Prepare execution data for the flow chart
|
|
109
|
-
*
|
|
110
|
-
* @param executions - The execution records to prepare
|
|
111
|
-
* @returns A list of execution data
|
|
112
|
-
*/
|
|
113
|
-
private prepareExecutionData;
|
|
114
|
-
/**
|
|
115
|
-
* Add children to the result list
|
|
116
|
-
*
|
|
117
|
-
* @param children - The children to add
|
|
118
|
-
* @param result - The result list
|
|
119
|
-
*/
|
|
120
|
-
private addChildrenToResult;
|
|
121
|
-
/**
|
|
122
|
-
* Format memory size for display
|
|
123
|
-
* @param bytes Memory usage in bytes
|
|
124
|
-
* @returns Formatted string
|
|
125
|
-
*/
|
|
126
|
-
private formatMemorySize;
|
|
127
|
-
/**
|
|
128
|
-
* Clear all execution records
|
|
129
|
-
*/
|
|
130
|
-
clear(): void;
|
|
27
|
+
export type LogMode = 'dev' | 'staging' | 'prod';
|
|
28
|
+
/**
|
|
29
|
+
* Configuration accepted by the browser createTracePerf()/BrowserLogger
|
|
30
|
+
*/
|
|
31
|
+
export interface IBrowserTracePerfConfig extends TracePerfConfig {
|
|
32
|
+
/** Filtering for info/warn/error/debug (default "dev") */
|
|
33
|
+
mode?: LogMode;
|
|
34
|
+
/** Calls slower than this (ms) are marked [SLOW] when no threshold is set (default 100) */
|
|
35
|
+
performanceThreshold?: number;
|
|
36
|
+
/** Use an existing logger instead of creating a new one */
|
|
37
|
+
logger?: BrowserLogger;
|
|
131
38
|
}
|
|
132
39
|
/**
|
|
133
|
-
* Browser-compatible
|
|
40
|
+
* Browser-compatible TracePerf instance.
|
|
41
|
+
*
|
|
42
|
+
* Shares the core tracker with the Node.js entry (same nesting, statistics,
|
|
43
|
+
* hooks, exporters and options) and adds console-style logging methods.
|
|
44
|
+
* Output uses the browser format:
|
|
45
|
+
*
|
|
46
|
+
* Execution Flow:
|
|
47
|
+
* → parent (12.34ms)
|
|
48
|
+
* → child (10.01ms)
|
|
134
49
|
*/
|
|
135
|
-
declare class BrowserLogger {
|
|
50
|
+
declare class BrowserLogger extends OptimizedPerformanceMonitor {
|
|
136
51
|
private _mode;
|
|
137
52
|
private _indentLevel;
|
|
138
|
-
private
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
53
|
+
private _slowThreshold;
|
|
54
|
+
constructor(config?: IBrowserTracePerfConfig);
|
|
55
|
+
/**
|
|
56
|
+
* Render an execution tree in the browser output format
|
|
57
|
+
*/
|
|
58
|
+
formatFlow(root: ExecutionRecord): string;
|
|
142
59
|
info(message: string | object, ...args: any[]): void;
|
|
143
60
|
warn(message: string | object, ...args: any[]): void;
|
|
144
61
|
error(message: string | object, ...args: any[]): void;
|
|
@@ -154,24 +71,10 @@ declare class BrowserLogger {
|
|
|
154
71
|
*/
|
|
155
72
|
setTrackingMode(mode: string): BrowserLogger;
|
|
156
73
|
/**
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
*/
|
|
160
|
-
getTrackingMode(): string;
|
|
161
|
-
track<T>(fn: () => T, options?: ITrackOptions): T;
|
|
162
|
-
/**
|
|
163
|
-
* Create a trackable version of a function
|
|
164
|
-
*
|
|
165
|
-
* This is a helper method to create a tracked version of a function
|
|
166
|
-
* that can be used for nested function tracking.
|
|
167
|
-
*
|
|
168
|
-
* @param fn - The function to make trackable
|
|
169
|
-
* @param options - Options for tracking
|
|
170
|
-
* @returns A tracked version of the function
|
|
74
|
+
* Create a trackable version of a function. Calls go through `track()`,
|
|
75
|
+
* so nested trackables attach to their caller.
|
|
171
76
|
*/
|
|
172
|
-
createTrackable<T extends (...args: any[]) => any>(fn: T, options?:
|
|
173
|
-
label?: string;
|
|
174
|
-
}): (...args: Parameters<T>) => ReturnType<T>;
|
|
77
|
+
createTrackable<T extends (...args: any[]) => any>(fn: T, options?: TrackOptions): (...args: Parameters<T>) => ReturnType<T>;
|
|
175
78
|
private log;
|
|
176
79
|
}
|
|
177
80
|
/**
|
|
@@ -179,14 +82,19 @@ declare class BrowserLogger {
|
|
|
179
82
|
* @param config Configuration options
|
|
180
83
|
* @returns Browser logger instance
|
|
181
84
|
*/
|
|
182
|
-
export declare function createBrowserLogger(config?:
|
|
85
|
+
export declare function createBrowserLogger(config?: IBrowserTracePerfConfig): BrowserLogger;
|
|
183
86
|
/**
|
|
184
87
|
* Create a browser-compatible TracePerf instance
|
|
185
88
|
* Alias of createBrowserLogger for API consistency with Node.js version
|
|
186
89
|
* @param config Configuration options
|
|
187
90
|
* @returns Browser logger instance
|
|
188
91
|
*/
|
|
189
|
-
export declare function createTracePerf(config?:
|
|
92
|
+
export declare function createTracePerf(config?: IBrowserTracePerfConfig): BrowserLogger;
|
|
190
93
|
declare const browserLogger: BrowserLogger;
|
|
191
94
|
export default browserLogger;
|
|
192
|
-
export { BrowserLogger
|
|
95
|
+
export { BrowserLogger };
|
|
96
|
+
export { performanceTimeline } from './core/timeline';
|
|
97
|
+
export { toChromeTrace, jsonLinesExporter, openTelemetryExporter, recordToJSON } from './core/exporters';
|
|
98
|
+
export { formatTree } from './core/records';
|
|
99
|
+
export { instrumentFetch } from './instrument';
|
|
100
|
+
export type { ExecutionRecord, TracePerfPlugin } from './core/records';
|