@rootcat/node 0.0.0-stage → 0.1.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 (55) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +213 -2
  3. package/dist/callsite.d.ts +109 -0
  4. package/dist/callsite.js +565 -0
  5. package/dist/callsite.js.map +1 -0
  6. package/dist/config.d.ts +75 -0
  7. package/dist/config.js +182 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/drizzle.d.ts +21 -0
  10. package/dist/drizzle.js +124 -0
  11. package/dist/drizzle.js.map +1 -0
  12. package/dist/esm.mjs +41 -0
  13. package/dist/esmhook.d.ts +12 -0
  14. package/dist/esmhook.js +84 -0
  15. package/dist/esmhook.js.map +1 -0
  16. package/dist/index.d.ts +12 -0
  17. package/dist/index.js +50 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/intake.d.ts +40 -0
  20. package/dist/intake.js +164 -0
  21. package/dist/intake.js.map +1 -0
  22. package/dist/keys.d.ts +9 -0
  23. package/dist/keys.js +15 -0
  24. package/dist/keys.js.map +1 -0
  25. package/dist/notices.d.ts +2 -0
  26. package/dist/notices.js +21 -0
  27. package/dist/notices.js.map +1 -0
  28. package/dist/otlp.d.ts +75 -0
  29. package/dist/otlp.js +449 -0
  30. package/dist/otlp.js.map +1 -0
  31. package/dist/pg.d.ts +16 -0
  32. package/dist/pg.js +165 -0
  33. package/dist/pg.js.map +1 -0
  34. package/dist/pgpool.d.ts +13 -0
  35. package/dist/pgpool.js +85 -0
  36. package/dist/pgpool.js.map +1 -0
  37. package/dist/postgresjs.d.ts +33 -0
  38. package/dist/postgresjs.js +272 -0
  39. package/dist/postgresjs.js.map +1 -0
  40. package/dist/privacy.d.ts +38 -0
  41. package/dist/privacy.js +147 -0
  42. package/dist/privacy.js.map +1 -0
  43. package/dist/processor.d.ts +94 -0
  44. package/dist/processor.js +252 -0
  45. package/dist/processor.js.map +1 -0
  46. package/dist/register.d.ts +1 -0
  47. package/dist/register.js +12 -0
  48. package/dist/register.js.map +1 -0
  49. package/dist/sampler.d.ts +12 -0
  50. package/dist/sampler.js +52 -0
  51. package/dist/sampler.js.map +1 -0
  52. package/dist/sdk.d.ts +88 -0
  53. package/dist/sdk.js +305 -0
  54. package/dist/sdk.js.map +1 -0
  55. package/package.json +65 -4
@@ -0,0 +1,565 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.maxDisplayPathBytes = exports.sourceMapBudgetBytes = exports.maxSourceMapBytes = exports.shortDepth = exports.defaultDepth = void 0;
37
+ exports.captureFrames = captureFrames;
38
+ exports.normalizeFile = normalizeFile;
39
+ exports.isAppFile = isAppFile;
40
+ exports.firstAppFrame = firstAppFrame;
41
+ exports.appLocation = appLocation;
42
+ exports.resetSourceMapCache = resetSourceMapCache;
43
+ exports.sourceMapBytesHeld = sourceMapBytesHeld;
44
+ exports.sourceMapFor = sourceMapFor;
45
+ exports.sourceMappingURL = sourceMappingURL;
46
+ exports.originalPath = originalPath;
47
+ exports.resolveLocation = resolveLocation;
48
+ exports.parseStack = parseStack;
49
+ exports.captureCallSite = captureCallSite;
50
+ exports.displayPath = displayPath;
51
+ exports.clipFromStart = clipFromStart;
52
+ // Call-site capture: the application frame that issued a client operation.
53
+ // The stack is captured as V8 CallSite objects (no string formatting),
54
+ // starting below the wrapper that asks when there is one, so the walk is
55
+ // a few frames rather than the whole driver; each frame outside
56
+ // node_modules, Node's internals and this package is resolved through its
57
+ // file's source map, and the first whose original source is itself
58
+ // application code (not a bundled library) is kept. Source maps are read
59
+ // once per file and held within a byte budget.
60
+ const fs = __importStar(require("node:fs"));
61
+ const nodeModule = __importStar(require("node:module"));
62
+ const path = __importStar(require("node:path"));
63
+ const node_url_1 = require("node:url");
64
+ const trace_mapping_1 = require("@jridgewell/trace-mapping");
65
+ /** defaultDepth is how many frames a full capture walks. */
66
+ exports.defaultDepth = 32;
67
+ /**
68
+ * shortDepth is the first walk from an entry wrapper: its caller is the
69
+ * application or an ORM a few frames above it. A stack frame costs about
70
+ * a microsecond to collect; the full walk is the fallback.
71
+ */
72
+ exports.shortDepth = 3;
73
+ /** Bounds on source maps: per map, and for all maps held at once. */
74
+ exports.maxSourceMapBytes = 32 * 1024 * 1024;
75
+ exports.sourceMapBudgetBytes = 64 * 1024 * 1024;
76
+ const maxTailBytes = 4096;
77
+ const maxCachedFiles = 512;
78
+ /** maxDisplayPathBytes keeps code.filepath within the agent's 128-byte bound. */
79
+ exports.maxDisplayPathBytes = 120;
80
+ /** ownDirectories are this package's own code, never a call site. */
81
+ const packageRoot = path.resolve(__dirname, '..');
82
+ const ownDirectories = [path.join(packageRoot, 'dist'), path.join(packageRoot, 'src')];
83
+ /**
84
+ * captureFrames returns up to depth frames as V8 CallSite objects,
85
+ * starting below the topmost call of above (or of captureFrames itself).
86
+ * Error.prepareStackTrace and Error.stackTraceLimit are swapped for the
87
+ * duration of the capture only. When above is not on the stack, V8 gives
88
+ * nothing; the caller falls back to an uncut walk.
89
+ */
90
+ function captureFrames(depth, above) {
91
+ const prepare = Error.prepareStackTrace;
92
+ const limit = Error.stackTraceLimit;
93
+ Error.stackTraceLimit = depth;
94
+ Error.prepareStackTrace = (_error, sites) => sites;
95
+ const holder = {};
96
+ try {
97
+ Error.captureStackTrace(holder, above ?? captureFrames);
98
+ const sites = holder.stack;
99
+ return Array.isArray(sites) ? sites : [];
100
+ }
101
+ finally {
102
+ Error.prepareStackTrace = prepare;
103
+ Error.stackTraceLimit = limit;
104
+ }
105
+ }
106
+ /**
107
+ * normalizeFile turns a CallSite file name into a path: file URLs become
108
+ * paths, webpack-internal URLs lose their prefix; node: internals, eval
109
+ * and other non-paths give undefined.
110
+ */
111
+ function normalizeFile(file) {
112
+ if (!file) {
113
+ return undefined;
114
+ }
115
+ if (file.startsWith('node:')) {
116
+ return undefined;
117
+ }
118
+ if (file.startsWith('file://')) {
119
+ try {
120
+ return (0, node_url_1.fileURLToPath)(file);
121
+ }
122
+ catch {
123
+ return undefined;
124
+ }
125
+ }
126
+ if (file.startsWith('webpack-internal:///')) {
127
+ return stripBundlerPrefix(file);
128
+ }
129
+ if (!path.isAbsolute(file)) {
130
+ return undefined;
131
+ }
132
+ return file;
133
+ }
134
+ const nodeModulesSegment = /(^|[\\/])node_modules[\\/]/;
135
+ /**
136
+ * isAppFile reports whether a path belongs to the application: no
137
+ * node_modules segment (absolute or bundler-relative, as a source map
138
+ * names a bundled library) and not this package's own code.
139
+ */
140
+ function isAppFile(file, own = ownDirectories) {
141
+ if (nodeModulesSegment.test(file)) {
142
+ return false;
143
+ }
144
+ for (const dir of own) {
145
+ if (file === dir || file.startsWith(dir + path.sep)) {
146
+ return false;
147
+ }
148
+ }
149
+ return true;
150
+ }
151
+ /** firstAppFrame returns the first captured frame whose generated file is application code, unresolved. */
152
+ function firstAppFrame(sites, isApp = isAppFile) {
153
+ for (const site of sites) {
154
+ const frame = frameOf(site, isApp);
155
+ if (frame) {
156
+ return frame;
157
+ }
158
+ }
159
+ return undefined;
160
+ }
161
+ function frameOf(site, isApp) {
162
+ let file;
163
+ try {
164
+ file = normalizeFile(site.getFileName());
165
+ }
166
+ catch {
167
+ return undefined;
168
+ }
169
+ if (!file || !isApp(file)) {
170
+ return undefined;
171
+ }
172
+ return { file, line: site.getLineNumber() ?? 0, column: site.getColumnNumber() ?? 0, function: functionName(site) };
173
+ }
174
+ /**
175
+ * appLocation walks the frames, resolves each candidate through its
176
+ * source map, and returns the first whose original source is application
177
+ * code: a frame in a bundle that maps into a bundled library is passed
178
+ * over, as an unbundled library frame is.
179
+ */
180
+ function appLocation(sites, isApp = isAppFile) {
181
+ for (const site of sites) {
182
+ const frame = frameOf(site, isApp);
183
+ if (!frame) {
184
+ continue;
185
+ }
186
+ const resolved = resolveLocation(frame);
187
+ if (resolved !== frame && !isApp(resolved.file)) {
188
+ continue;
189
+ }
190
+ return resolved;
191
+ }
192
+ return undefined;
193
+ }
194
+ function functionName(site) {
195
+ try {
196
+ // getMethodName() searches the receiver's properties and costs more
197
+ // than the rest of a frame together; the function's own name suffices.
198
+ const name = site.getFunctionName() ?? '';
199
+ return name.length > 256 ? name.slice(0, 256) : name;
200
+ }
201
+ catch {
202
+ return '';
203
+ }
204
+ }
205
+ const sourceMaps = new Map();
206
+ let heldBytes = 0;
207
+ /** resetSourceMapCache forgets loaded maps (tests). */
208
+ function resetSourceMapCache() {
209
+ sourceMaps.clear();
210
+ resolvedPositions.clear();
211
+ heldBytes = 0;
212
+ }
213
+ /** sourceMapBytesHeld reports what the cache holds (tests). */
214
+ function sourceMapBytesHeld() {
215
+ return heldBytes;
216
+ }
217
+ /**
218
+ * sourceMapFor loads the source map a generated file points at through
219
+ * its sourceMappingURL comment (inline data URL or a file beside it),
220
+ * once per file, and remembers the result; null when none. A map over
221
+ * maxSourceMapBytes is not read; the maps held together stay within
222
+ * sourceMapBudgetBytes, the least recently loaded given up first (and
223
+ * read again if their file comes back). The read is synchronous and
224
+ * happens the first time a file is seen on a captured stack.
225
+ */
226
+ function sourceMapFor(file) {
227
+ const cached = sourceMaps.get(file);
228
+ if (cached) {
229
+ return cached.map;
230
+ }
231
+ const entry = loadSourceMap(file);
232
+ while (sourceMaps.size > 0 && (sourceMaps.size >= maxCachedFiles || heldBytes + entry.bytes > exports.sourceMapBudgetBytes)) {
233
+ const oldest = sourceMaps.keys().next().value;
234
+ heldBytes -= sourceMaps.get(oldest).bytes;
235
+ sourceMaps.delete(oldest);
236
+ }
237
+ if (entry.bytes > exports.sourceMapBudgetBytes) {
238
+ sourceMaps.set(file, { map: null, bytes: 0 });
239
+ return null;
240
+ }
241
+ sourceMaps.set(file, entry);
242
+ heldBytes += entry.bytes;
243
+ return entry.map;
244
+ }
245
+ const none = { map: null, bytes: 0 };
246
+ function loadSourceMap(file) {
247
+ if (!path.isAbsolute(file)) {
248
+ return none;
249
+ }
250
+ const tail = readTail(file, maxTailBytes);
251
+ if (tail === undefined) {
252
+ return none;
253
+ }
254
+ const url = sourceMappingURL(tail);
255
+ if (!url) {
256
+ return none;
257
+ }
258
+ try {
259
+ if (url.startsWith('data:')) {
260
+ const text = inlineMap(url);
261
+ return parseMap(text, (0, node_url_1.pathToFileURL)(file).href);
262
+ }
263
+ if (/^[a-z]+:/i.test(url) && !url.startsWith('file:')) {
264
+ return none; // a remote map is never fetched
265
+ }
266
+ // A bundler may percent-encode the map's name ([chunk].js.map).
267
+ const mapFile = url.startsWith('file:') ? (0, node_url_1.fileURLToPath)(url) : path.resolve(path.dirname(file), decodeMapURL(url));
268
+ const stat = fs.statSync(mapFile);
269
+ if (!stat.isFile() || stat.size > exports.maxSourceMapBytes) {
270
+ return none;
271
+ }
272
+ return parseMap(fs.readFileSync(mapFile, 'utf8'), (0, node_url_1.pathToFileURL)(mapFile).href);
273
+ }
274
+ catch {
275
+ return none;
276
+ }
277
+ }
278
+ function decodeMapURL(url) {
279
+ try {
280
+ return decodeURIComponent(url);
281
+ }
282
+ catch {
283
+ return url;
284
+ }
285
+ }
286
+ function parseMap(text, mapUrl) {
287
+ if (text === undefined || text.length > exports.maxSourceMapBytes) {
288
+ return none;
289
+ }
290
+ const parsed = JSON.parse(text);
291
+ if (!parsed || typeof parsed !== 'object') {
292
+ return none;
293
+ }
294
+ // The decoded map holds about what its text did.
295
+ return { map: new trace_mapping_1.TraceMap(parsed, mapUrl), bytes: text.length };
296
+ }
297
+ function inlineMap(url) {
298
+ const comma = url.indexOf(',');
299
+ if (comma < 0) {
300
+ return undefined;
301
+ }
302
+ const header = url.slice(5, comma);
303
+ const payload = url.slice(comma + 1);
304
+ if (!header.startsWith('application/json')) {
305
+ return undefined;
306
+ }
307
+ if (header.endsWith(';base64')) {
308
+ if (payload.length > (exports.maxSourceMapBytes * 4) / 3) {
309
+ return undefined;
310
+ }
311
+ return Buffer.from(payload, 'base64').toString('utf8');
312
+ }
313
+ return decodeURIComponent(payload);
314
+ }
315
+ /** sourceMappingURL finds the last sourceMappingURL comment in text. */
316
+ function sourceMappingURL(text) {
317
+ const pattern = /\/[/*][#@]\s*sourceMappingURL=([^\s'"*]+)/g;
318
+ let url;
319
+ for (;;) {
320
+ const match = pattern.exec(text);
321
+ if (!match) {
322
+ return url;
323
+ }
324
+ url = match[1];
325
+ }
326
+ }
327
+ function readTail(file, bytes) {
328
+ let fd;
329
+ try {
330
+ fd = fs.openSync(file, 'r');
331
+ const size = fs.fstatSync(fd).size;
332
+ const length = Math.min(size, bytes);
333
+ const buffer = Buffer.alloc(length);
334
+ const n = fs.readSync(fd, buffer, 0, length, size - length);
335
+ return buffer.toString('utf8', 0, n);
336
+ }
337
+ catch {
338
+ return undefined;
339
+ }
340
+ finally {
341
+ if (fd !== undefined) {
342
+ fs.closeSync(fd);
343
+ }
344
+ }
345
+ }
346
+ /**
347
+ * originalPath makes a mapped source readable: file URLs become paths and
348
+ * bundler schemes (webpack://, turbopack://) are reduced to the project
349
+ * relative path they carry.
350
+ */
351
+ function originalPath(source) {
352
+ if (source.startsWith('file://')) {
353
+ try {
354
+ return (0, node_url_1.fileURLToPath)(source);
355
+ }
356
+ catch {
357
+ return source;
358
+ }
359
+ }
360
+ if (/^(webpack|turbopack|webpack-internal):/.test(source)) {
361
+ return stripBundlerPrefix(source);
362
+ }
363
+ return source;
364
+ }
365
+ function stripBundlerPrefix(source) {
366
+ // webpack:///./src/a.ts, webpack://name/./src/a.ts,
367
+ // webpack-internal:///(rsc)/./app/a.ts, turbopack://[project]/app/a.ts
368
+ let rest = source.replace(/^[a-z-]+:\/\/\/?/, '');
369
+ rest = rest.replace(/^\[project\]\//, '');
370
+ rest = rest.replace(/^[^/]*\/(?=\.\/)/, '');
371
+ rest = rest.replace(/^\([a-z-]+\)\//, '');
372
+ rest = rest.replace(/^(\.\/)+/, '');
373
+ return rest;
374
+ }
375
+ const findSourceMap = nodeModule.findSourceMap;
376
+ /**
377
+ * resolveLocation maps a generated position to the original source when
378
+ * the file has a source map: the one Node already holds (with
379
+ * --enable-source-maps, or a loader such as tsx registering its maps),
380
+ * else the file's own. Otherwise the location is returned as is.
381
+ */
382
+ function resolveLocation(location) {
383
+ if (location.line < 1) {
384
+ return location;
385
+ }
386
+ // A call site recurs: its position is resolved once.
387
+ const key = location.file + ':' + location.line + ':' + location.column;
388
+ const known = resolvedPositions.get(key);
389
+ if (known) {
390
+ return known;
391
+ }
392
+ const resolved = resolveUncached(location);
393
+ if (resolvedPositions.size >= maxResolvedPositions) {
394
+ resolvedPositions.clear();
395
+ }
396
+ resolvedPositions.set(key, resolved);
397
+ return resolved;
398
+ }
399
+ const resolvedPositions = new Map();
400
+ const maxResolvedPositions = 8192;
401
+ function resolveUncached(location) {
402
+ try {
403
+ // Node holds maps only with source maps enabled (--enable-source-maps,
404
+ // or a loader such as tsx turning them on).
405
+ const enabled = process.sourceMapsEnabled !== false;
406
+ const held = enabled && typeof findSourceMap === 'function' ? findSourceMap(location.file) : undefined;
407
+ const origin = held?.findOrigin?.(location.line, Math.max(1, location.column));
408
+ if (origin && typeof origin.fileName === 'string' && typeof origin.lineNumber === 'number') {
409
+ return { file: originalPath(origin.fileName), line: origin.lineNumber, column: origin.columnNumber ?? 0, function: origin.name || location.function };
410
+ }
411
+ }
412
+ catch {
413
+ // fall through to the file's own map
414
+ }
415
+ const map = sourceMapFor(location.file);
416
+ if (!map) {
417
+ return location;
418
+ }
419
+ try {
420
+ const position = (0, trace_mapping_1.originalPositionFor)(map, { line: location.line, column: Math.max(0, location.column - 1) });
421
+ if (position.source == null || position.line == null) {
422
+ return location;
423
+ }
424
+ return {
425
+ file: originalPath(position.source),
426
+ line: position.line,
427
+ column: position.column == null ? 0 : position.column + 1,
428
+ function: position.name ?? location.function,
429
+ };
430
+ }
431
+ catch {
432
+ return location;
433
+ }
434
+ }
435
+ /** Bounds on parsing a stack a driver already holds. */
436
+ const maxParsedStackLines = 64;
437
+ const stackLine = /^\s*at (?:async )?(?:new )?(?:(.*?) )?\(?(.+?):(\d+):(\d+)\)?$/;
438
+ /**
439
+ * parseStack finds the first application frame in a formatted V8 stack
440
+ * (one a driver captured itself, such as postgres.js's query origin) and
441
+ * resolves it. undefined when there is none.
442
+ */
443
+ function parseStack(stack, isApp = isAppFile) {
444
+ if (typeof stack !== 'string') {
445
+ return undefined;
446
+ }
447
+ const lines = stack.split('\n', maxParsedStackLines);
448
+ for (const line of lines) {
449
+ const match = stackLine.exec(line);
450
+ if (!match) {
451
+ continue;
452
+ }
453
+ const file = normalizeFile(match[2]);
454
+ if (!file || !isApp(file)) {
455
+ continue;
456
+ }
457
+ const name = match[1] ?? '';
458
+ const frame = { file, line: Number(match[3]), column: Number(match[4]), function: name === '<anonymous>' || name.endsWith('.<anonymous>') ? '' : name.slice(0, 256) };
459
+ const resolved = resolveLocation(frame);
460
+ if (resolved !== frame && !isApp(resolved.file)) {
461
+ continue;
462
+ }
463
+ return resolved;
464
+ }
465
+ return undefined;
466
+ }
467
+ /**
468
+ * captureCallSite is the whole operation: capture, pick the application
469
+ * frame, resolve it. From an entry wrapper (above), a short walk below
470
+ * the wrapper first, the full walk only when that finds no application
471
+ * frame. undefined when no application frame is on the stack.
472
+ */
473
+ function captureCallSite(depth = exports.defaultDepth, isApp = isAppFile, above) {
474
+ const full = typeof depth === 'number' && depth > 0 ? depth : exports.defaultDepth;
475
+ if (above) {
476
+ const short = captureFrames(Math.min(exports.shortDepth, full), above);
477
+ const found = appLocation(short, isApp);
478
+ if (found) {
479
+ return found;
480
+ }
481
+ if (short.length > 0 && short.length < Math.min(exports.shortDepth, full)) {
482
+ return undefined; // the stack ended within the short walk
483
+ }
484
+ const rest = captureFrames(full, above);
485
+ return appLocation(rest.length > 0 ? rest : captureFrames(full), isApp);
486
+ }
487
+ return appLocation(captureFrames(full), isApp);
488
+ }
489
+ const displayPaths = new Map();
490
+ const packageRoots = new Map();
491
+ /**
492
+ * displayPath is what code.filepath carries: a bundler path as it is, a
493
+ * file under the working directory relative to it, any other file
494
+ * relative to the parent of its nearest package.json directory (so it
495
+ * names its package), and at most maxDisplayPathBytes from the end, so
496
+ * the file name survives the agent's bound. The server's absolute layout
497
+ * (a home directory, a deploy path) is not sent.
498
+ */
499
+ function displayPath(file, cwd = process.cwd()) {
500
+ const key = cwd + '\0' + file;
501
+ const known = displayPaths.get(key);
502
+ if (known !== undefined) {
503
+ return known;
504
+ }
505
+ let shown = file;
506
+ if (path.isAbsolute(file)) {
507
+ const relative = path.relative(cwd, file);
508
+ if (relative !== '' && !relative.startsWith('..') && !path.isAbsolute(relative)) {
509
+ shown = relative;
510
+ }
511
+ else {
512
+ const root = packageRootOf(path.dirname(file));
513
+ shown = root ? path.relative(path.dirname(root), file) : path.join(path.basename(path.dirname(file)), path.basename(file));
514
+ }
515
+ }
516
+ shown = clipFromStart(shown.split(path.sep).join('/'), exports.maxDisplayPathBytes);
517
+ if (displayPaths.size >= 4096) {
518
+ displayPaths.clear();
519
+ }
520
+ displayPaths.set(key, shown);
521
+ return shown;
522
+ }
523
+ function packageRootOf(dir) {
524
+ const visited = [];
525
+ let current = dir;
526
+ let found = null;
527
+ for (let level = 0; level < 12; level++) {
528
+ const known = packageRoots.get(current);
529
+ if (known !== undefined) {
530
+ found = known;
531
+ break;
532
+ }
533
+ visited.push(current);
534
+ if (fs.existsSync(path.join(current, 'package.json'))) {
535
+ found = current;
536
+ break;
537
+ }
538
+ const parent = path.dirname(current);
539
+ if (parent === current) {
540
+ break;
541
+ }
542
+ current = parent;
543
+ }
544
+ for (const v of visited) {
545
+ packageRoots.set(v, found);
546
+ }
547
+ return found ?? undefined;
548
+ }
549
+ /** clipFromStart keeps the last bytes of a path, cut at a segment. */
550
+ function clipFromStart(text, limit) {
551
+ if (Buffer.byteLength(text) <= limit) {
552
+ return text;
553
+ }
554
+ let tail = text;
555
+ while (Buffer.byteLength(tail) > limit - 4) {
556
+ const slash = tail.indexOf('/', 1);
557
+ if (slash < 0) {
558
+ tail = tail.slice(tail.length - (limit - 4));
559
+ break;
560
+ }
561
+ tail = tail.slice(slash);
562
+ }
563
+ return '...' + (tail.startsWith('/') ? tail : '/' + tail);
564
+ }
565
+ //# sourceMappingURL=callsite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callsite.js","sourceRoot":"","sources":["../src/callsite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /** Config is the package's whole configuration, parsed. */
2
+ export interface Config {
3
+ /** enabled is false when ROOTCAT_DISABLED is set; nothing starts then. */
4
+ enabled: boolean;
5
+ /** url is the full OTLP/HTTP traces URL spans are posted to. */
6
+ url: string;
7
+ /** serviceName is the service.name resource attribute. */
8
+ serviceName: string;
9
+ /** serviceVersion is the service.version resource attribute, "" when unknown. */
10
+ serviceVersion: string;
11
+ /** environment is deployment.environment.name, "" when unknown. */
12
+ environment: string;
13
+ /** sampleRatio is the share of traces recorded, 0 to 1 (ROOTCAT_SAMPLE). */
14
+ sampleRatio: number;
15
+ /**
16
+ * callsiteSample is the sampling divisor for call-site capture: 1 captures
17
+ * every eligible span, N one in N, 0 captures none.
18
+ */
19
+ callsiteSample: number;
20
+ /** callsiteDepth is how many stack frames a capture may walk; fixed. */
21
+ callsiteDepth: number;
22
+ /**
23
+ * statement says whether query text keeps its shape with literals
24
+ * masked ("masked", the default) or only its first keyword ("off").
25
+ */
26
+ statement: 'masked' | 'off';
27
+ /** debug turns the OpenTelemetry diagnostic logger on, to stderr. */
28
+ debug: boolean;
29
+ /** disabled lists instrumentation names switched off by ROOTCAT_DISABLE. */
30
+ disabled: Set<string>;
31
+ /** cwd is the application's working directory (service identity, Prisma). */
32
+ cwd: string;
33
+ }
34
+ /** Bounds on what is read while looking for the service identity. */
35
+ export declare const maxPackageJSONBytes: number;
36
+ /** Defaults; the two sampling values are the knobs the environment has. */
37
+ export declare const defaultSampleRatio = 1;
38
+ export declare const defaultCallsiteSample = 1;
39
+ export declare const callsiteDepth = 32;
40
+ export declare const otlpPort = 4318;
41
+ /** Env is the subset of process.env the package reads. */
42
+ export type Env = Record<string, string | undefined>;
43
+ /** ServiceIdentity is what the resource says about the service. */
44
+ export interface ServiceIdentity {
45
+ name: string;
46
+ version: string;
47
+ }
48
+ /**
49
+ * serviceIdentity resolves the service name from ROOTCAT_SERVICE, then
50
+ * OTEL_SERVICE_NAME, then the nearest package.json above cwd (at most
51
+ * eight levels, 64 KiB), else "unknown_service:node"; the version comes
52
+ * from the same package.json when it has one.
53
+ */
54
+ export declare function serviceIdentity(env: Env, cwd: string): ServiceIdentity;
55
+ /** nearestPackageJSON reads name and version from the closest package.json. */
56
+ export declare function nearestPackageJSON(cwd: string): {
57
+ name?: string;
58
+ version?: string;
59
+ } | undefined;
60
+ /** clean trims a value and bounds it to 256 characters; "" when unset. */
61
+ export declare function clean(value: string | undefined): string;
62
+ /** positiveInt parses a non-negative integer, else returns fallback. */
63
+ export declare function nonNegativeInt(value: string | undefined, fallback: number, max: number): number;
64
+ /**
65
+ * tracesURL turns the configured intake address into the traces endpoint:
66
+ * a bare origin gets /v1/traces, a URL already ending in /v1/traces is kept.
67
+ */
68
+ export declare function tracesURL(base: string): string;
69
+ /** ratio parses a share between 0 and 1, else returns fallback. */
70
+ export declare function ratio(value: string | undefined, fallback: number): number;
71
+ /**
72
+ * readConfig parses the environment. discover is asked for the intake
73
+ * origin only when ROOTCAT_OTLP_URL is unset.
74
+ */
75
+ export declare function readConfig(env: Env, cwd: string, discover: () => string): Config;