@rootcat/node 0.1.0 → 0.2.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.
@@ -0,0 +1,587 @@
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.InProviderProcessor = exports.FlaggedExport = exports.keptSourceKey = exports.UrlSource = void 0;
37
+ exports.existingSetup = existingSetup;
38
+ exports.tracesByVersion = tracesByVersion;
39
+ exports.providerRegistered = providerRegistered;
40
+ exports.tracerDependency = tracerDependency;
41
+ exports.hasHeader = hasHeader;
42
+ exports.propagatedOnce = propagatedOnce;
43
+ exports.keeps = keeps;
44
+ exports.activeDatabaseSpan = activeDatabaseSpan;
45
+ exports.guardWrappers = guardWrappers;
46
+ exports.sentryLoaderShared = sentryLoaderShared;
47
+ // Living alongside another tracer that owns the process's OpenTelemetry
48
+ // setup: the global tracer provider, the context manager and the
49
+ // propagator. Sentry 8 and later is one (it registers all three in
50
+ // Sentry.init) and the tested case; an application's own NodeSDK, or any
51
+ // SDK whose provider takes span processors, fits the same path.
52
+ //
53
+ // existingSetup() says what is there. Two cases follow:
54
+ //
55
+ // - The owner records nothing (Sentry without tracesSampleRate or
56
+ // tracesSampler: its sampler makes every span on its provider
57
+ // non-recording, and it adds none of its performance instrumentations,
58
+ // only the request isolation its http instrumentation needs). The
59
+ // package then runs its own provider beside the owner's, never
60
+ // registered globally: its instrumentations are given that provider,
61
+ // the context they run in is the owner's context manager, and the
62
+ // owner's provider never sees a Rootcat span, so the owner sends
63
+ // nothing it did not send before ('beside').
64
+ // - The owner traces (Sentry with tracing; an app's own NodeSDK): it
65
+ // instruments http, the drivers and Redis itself, so the package adds
66
+ // no span of its own. Its processor goes into the owner's provider
67
+ // (Sentry.init's openTelemetrySpanProcessors, NodeSDK's spanProcessors)
68
+ // and exports a copy of each span the owner records, with the call
69
+ // site; its entry wrappers (Drizzle, pg pool, postgres.js origins) only
70
+ // carry call sites to the owner's spans ('inside').
71
+ const api_1 = require("@opentelemetry/api");
72
+ const fs = __importStar(require("node:fs"));
73
+ const node_module_1 = require("node:module");
74
+ const path = __importStar(require("node:path"));
75
+ const instrumentation_1 = require("@opentelemetry/instrumentation");
76
+ const keys_js_1 = require("./keys.js");
77
+ const processor_js_1 = require("./processor.js");
78
+ /**
79
+ * existingSetup describes the tracer that owns the process's
80
+ * OpenTelemetry setup, or undefined when there is none: no provider is
81
+ * registered and no Sentry client exists.
82
+ */
83
+ function existingSetup() {
84
+ const registered = providerRegistered();
85
+ const found = sentryClient();
86
+ if (found) {
87
+ const { options, version } = found;
88
+ return {
89
+ kind: 'sentry',
90
+ registered,
91
+ tracing: tracesByVersion(options, version),
92
+ debug: options.debug === true,
93
+ processors: Array.isArray(options.openTelemetrySpanProcessors) && options.openTelemetrySpanProcessors.length > 0,
94
+ };
95
+ }
96
+ if (registered) {
97
+ return { kind: 'other', registered, tracing: true, debug: false, processors: undefined };
98
+ }
99
+ return undefined;
100
+ }
101
+ /**
102
+ * tracesByVersion is Sentry's own rule for whether it records spans, by its
103
+ * major version, so the package never runs beside a Sentry that installed
104
+ * its performance instrumentations:
105
+ * - 8: hasTracingEnabled, enableTracing or a tracesSampleRate or
106
+ * tracesSampler key present, whatever its value (undefined included);
107
+ * - 9 and later: hasSpansEnabled, tracesSampleRate not null or undefined,
108
+ * or a tracesSampler (enableTracing was removed in 9).
109
+ * An unknown version is taken as tracing: inside mode, which adds no
110
+ * instrumentation of the package's own, rather than beside a Sentry that
111
+ * might have installed its own.
112
+ */
113
+ function tracesByVersion(options, version) {
114
+ const major = Number.parseInt(version, 10);
115
+ if (major === 8) {
116
+ return Boolean(options.enableTracing) || 'tracesSampleRate' in options || 'tracesSampler' in options;
117
+ }
118
+ if (major >= 9) {
119
+ return options.tracesSampleRate != null || Boolean(options.tracesSampler);
120
+ }
121
+ return true;
122
+ }
123
+ /**
124
+ * sentryClient reads the options and version of the Sentry client
125
+ * initialised in this process, if any, through the carrier every Sentry
126
+ * copy shares (globalThis.__SENTRY__, one entry per SDK version), without
127
+ * loading Sentry.
128
+ */
129
+ function sentryClient() {
130
+ try {
131
+ const carrier = globalThis.__SENTRY__;
132
+ if (!carrier || typeof carrier !== 'object') {
133
+ return undefined;
134
+ }
135
+ for (const key of Object.keys(carrier)) {
136
+ const entry = carrier[key];
137
+ if (!entry || typeof entry !== 'object') {
138
+ continue;
139
+ }
140
+ const scope = entry.acs?.getCurrentScope?.() ?? entry.defaultCurrentScope;
141
+ const options = scope?.getClient?.()?.getOptions?.();
142
+ if (options && typeof options === 'object') {
143
+ return { options, version: key === 'version' ? '' : key };
144
+ }
145
+ }
146
+ }
147
+ catch {
148
+ // an unknown carrier shape: no options the package can read
149
+ }
150
+ return undefined;
151
+ }
152
+ /**
153
+ * providerRegistered reports whether a tracer provider is registered
154
+ * globally (by another SDK). The API's global is a proxy whose delegate
155
+ * is the registered provider, or the no-op one; a proxy from another
156
+ * copy of the API answers the same way.
157
+ */
158
+ function providerRegistered() {
159
+ const global = api_1.trace.getTracerProvider();
160
+ const delegate = typeof global.getDelegate === 'function' ? global.getDelegate() : global;
161
+ return !!delegate && delegate.constructor?.name !== 'NoopTracerProvider';
162
+ }
163
+ /** Bounds on reading the application's package.json. */
164
+ const maxPackageJSONBytes = 64 * 1024;
165
+ const maxLevels = 8;
166
+ /**
167
+ * laterTracer matches the packages of a tracer that sets up OpenTelemetry
168
+ * when the application initialises it, after the package could load: the
169
+ * Sentry server SDKs.
170
+ */
171
+ const laterTracer = /^@sentry\/(node|node-core|hono|nextjs|nestjs|remix|sveltekit|astro|nuxt|solidstart|tanstackstart-react|react-router|bun|aws-serverless|google-cloud-serverless)$/;
172
+ /**
173
+ * tracerDependency names the package of a tracer the application
174
+ * initialises later (laterTracer) that it depends on: the one the nearest
175
+ * package.json above cwd lists (at most eight
176
+ * levels, 64 KiB), else, when no readable package.json lists the
177
+ * application's dependencies (an image of a bundle and its node_modules),
178
+ * a Sentry SDK installed in a node_modules on the way up. undefined when
179
+ * neither.
180
+ */
181
+ function tracerDependency(cwd) {
182
+ let dir = path.resolve(cwd);
183
+ for (let level = 0; level < maxLevels; level++) {
184
+ const file = path.join(dir, 'package.json');
185
+ try {
186
+ const stat = fs.statSync(file);
187
+ if (stat.isFile() && stat.size <= maxPackageJSONBytes) {
188
+ const pkg = JSON.parse(fs.readFileSync(file, 'utf8'));
189
+ let listed = false;
190
+ for (const deps of [pkg.dependencies, pkg.devDependencies]) {
191
+ if (deps && typeof deps === 'object') {
192
+ listed = true;
193
+ const name = Object.keys(deps).find((dep) => laterTracer.test(dep));
194
+ if (name) {
195
+ return name;
196
+ }
197
+ }
198
+ }
199
+ if (listed) {
200
+ return undefined;
201
+ }
202
+ }
203
+ }
204
+ catch {
205
+ // unreadable or not JSON: keep looking up
206
+ }
207
+ const parent = path.dirname(dir);
208
+ if (parent === dir) {
209
+ break;
210
+ }
211
+ dir = parent;
212
+ }
213
+ return installedSentry(cwd);
214
+ }
215
+ /** installedSentry finds @sentry/node or @sentry/node-core in a node_modules above cwd (no package.json to read). */
216
+ function installedSentry(cwd) {
217
+ let dir = path.resolve(cwd);
218
+ for (let level = 0; level < maxLevels; level++) {
219
+ for (const name of ['@sentry/node', '@sentry/node-core']) {
220
+ try {
221
+ if (fs.statSync(path.join(dir, 'node_modules', name, 'package.json')).isFile()) {
222
+ return name;
223
+ }
224
+ }
225
+ catch {
226
+ // not here
227
+ }
228
+ }
229
+ const parent = path.dirname(dir);
230
+ if (parent === dir) {
231
+ break;
232
+ }
233
+ dir = parent;
234
+ }
235
+ return undefined;
236
+ }
237
+ /**
238
+ * UrlSource marks the package's spans beside a Sentry that traces
239
+ * nothing as named after a URL (sentry.source "url"), and keeps them so:
240
+ * Sentry writes the name of a span with any other source into the
241
+ * dynamic sampling context it propagates (sentry-transaction in baggage)
242
+ * and sends with error events. @sentry/hono names the route on the active
243
+ * span as the response goes out (source "route"), so a call made after
244
+ * the response (a payment callback fired in the background) would carry
245
+ * the route; a source another SDK sets is kept aside instead
246
+ * (rootcat.source, read by routeFromHost for http.route). Neither key is
247
+ * exported. Outgoing requests and error events then carry the dynamic
248
+ * sampling context they carried without the package, before, during and
249
+ * after the response.
250
+ */
251
+ class UrlSource {
252
+ onStart(span) {
253
+ // Every span, not only roots: Sentry takes the context of an outgoing
254
+ // request from the client span, which it treats as a root of its own.
255
+ span.setAttribute(sourceKey, 'url');
256
+ pinSource(span);
257
+ }
258
+ onEnd() { }
259
+ forceFlush() {
260
+ return Promise.resolve();
261
+ }
262
+ shutdown() {
263
+ return Promise.resolve();
264
+ }
265
+ }
266
+ exports.UrlSource = UrlSource;
267
+ const sourceKey = 'sentry.source';
268
+ /** keptSourceKey holds the source another SDK set on a pinned span. */
269
+ exports.keptSourceKey = 'rootcat.source';
270
+ /** pinSource makes the span's source stay "url", keeping any other aside. */
271
+ function pinSource(span) {
272
+ const setAttribute = span.setAttribute;
273
+ const setAttributes = span.setAttributes;
274
+ span.setAttribute = function (key, value) {
275
+ if (key !== sourceKey) {
276
+ return setAttribute.call(this, key, value);
277
+ }
278
+ if (value !== 'url' && typeof value === 'string') {
279
+ setAttribute.call(this, exports.keptSourceKey, value);
280
+ }
281
+ return this;
282
+ };
283
+ span.setAttributes = function (attributes) {
284
+ if (!attributes || typeof attributes !== 'object' || !(sourceKey in attributes)) {
285
+ return setAttributes.call(this, attributes);
286
+ }
287
+ const rest = { ...attributes };
288
+ const value = rest[sourceKey];
289
+ delete rest[sourceKey];
290
+ if (value !== 'url' && typeof value === 'string') {
291
+ rest[exports.keptSourceKey] = value;
292
+ }
293
+ return setAttributes.call(this, rest);
294
+ };
295
+ }
296
+ /** hasHeader reports whether an undici request already carries a header. */
297
+ function hasHeader(request, name) {
298
+ const headers = request.headers;
299
+ if (Array.isArray(headers)) {
300
+ for (let i = 0; i < headers.length; i += 2) {
301
+ if (String(headers[i]).toLowerCase() === name) {
302
+ return true;
303
+ }
304
+ }
305
+ return false;
306
+ }
307
+ if (typeof headers === 'string') {
308
+ return new RegExp(`(^|\\r\\n)${name}:`, 'i').test(headers);
309
+ }
310
+ return false;
311
+ }
312
+ /**
313
+ * propagatedOnce makes an undici instrumentation leave a request's
314
+ * headers alone when Sentry's fetch instrumentation has already propagated
315
+ * (it subscribes to the same channel first, and from the same active
316
+ * span): the instrumentation would otherwise add a second sentry-trace
317
+ * and baggage, which a downstream service reads as one comma-joined
318
+ * value. The span still starts. The instrumentation subscribed to its
319
+ * channels when it was created; it is disabled and enabled again around
320
+ * the change, so the subscriptions take the new handler.
321
+ */
322
+ function propagatedOnce(instrumentation) {
323
+ const target = instrumentation;
324
+ const original = target.onRequestCreated;
325
+ if (typeof original !== 'function' || typeof target.enable !== 'function' || typeof target.disable !== 'function') {
326
+ return instrumentation;
327
+ }
328
+ target.disable();
329
+ try {
330
+ installOnce(target, original);
331
+ }
332
+ finally {
333
+ target.enable();
334
+ }
335
+ return instrumentation;
336
+ }
337
+ function installOnce(target, original) {
338
+ target.onRequestCreated = function (message) {
339
+ const request = message?.request;
340
+ if (!request || !hasHeader(request, 'sentry-trace')) {
341
+ return original.call(this, message);
342
+ }
343
+ const headers = request.headers;
344
+ const saved = Array.isArray(headers) ? headers.slice() : headers;
345
+ const ownAdd = Object.prototype.hasOwnProperty.call(request, 'addHeader');
346
+ const add = request.addHeader;
347
+ request.addHeader = function () {
348
+ return this;
349
+ };
350
+ try {
351
+ return original.call(this, message);
352
+ }
353
+ finally {
354
+ if (ownAdd) {
355
+ request.addHeader = add;
356
+ }
357
+ else {
358
+ delete request.addHeader;
359
+ }
360
+ if (Array.isArray(saved) && Array.isArray(request.headers)) {
361
+ request.headers.length = 0;
362
+ request.headers.push(...saved);
363
+ }
364
+ else if (typeof saved === 'string') {
365
+ request.headers = saved;
366
+ }
367
+ }
368
+ };
369
+ }
370
+ /**
371
+ * FlaggedExport hands the spans the package records beside Sentry
372
+ * (recorded, not flagged sampled; see RecordOnlySampler) to an exporting
373
+ * processor as sampled views, which the batch processor exports.
374
+ */
375
+ class FlaggedExport {
376
+ inner;
377
+ constructor(inner) {
378
+ this.inner = inner;
379
+ }
380
+ onStart(span, parentContext) {
381
+ this.inner.onStart(span, parentContext);
382
+ }
383
+ onEnd(span) {
384
+ // The copy drops the host's keys (sentry.*, the source kept aside) and
385
+ // takes a route it named as http.route; the live span keeps them.
386
+ const attributes = { ...span.attributes };
387
+ (0, processor_js_1.routeFromHost)(span.name, attributes);
388
+ this.inner.onEnd((0, processor_js_1.view)(span, { attributes: attributes }));
389
+ }
390
+ forceFlush() {
391
+ return this.inner.forceFlush();
392
+ }
393
+ shutdown() {
394
+ return this.inner.shutdown();
395
+ }
396
+ }
397
+ exports.FlaggedExport = FlaggedExport;
398
+ /**
399
+ * InProviderProcessor is the one processor the package puts in Sentry's
400
+ * provider: the read-only call-site processor, and a copy of each span
401
+ * Sentry records (and ROOTCAT_SAMPLE keeps) to the exporting processors,
402
+ * under the package's resource. Sentry's spans are never changed.
403
+ */
404
+ class InProviderProcessor {
405
+ callSites;
406
+ exporting;
407
+ resource;
408
+ ratio;
409
+ constructor(callSites, exporting, resource, ratio) {
410
+ this.callSites = callSites;
411
+ this.exporting = exporting;
412
+ this.resource = resource;
413
+ this.ratio = ratio;
414
+ }
415
+ /** stopped is set by stop(): the processor then does nothing. */
416
+ stopped = false;
417
+ /**
418
+ * stop makes the processor inert and flushes what it holds: the
419
+ * package stopped (startAlongside() found no tracer to run alongside)
420
+ * after this processor was given to a provider.
421
+ */
422
+ stop() {
423
+ this.stopped = true;
424
+ void this.shutdown().catch(() => undefined);
425
+ }
426
+ onStart(span, parentContext) {
427
+ if (!this.stopped && keeps(span.spanContext().traceId, this.ratio)) {
428
+ this.callSites.onStart(span, parentContext);
429
+ }
430
+ }
431
+ onEnd(span) {
432
+ try {
433
+ const spanContext = span.spanContext();
434
+ if (this.stopped || (spanContext.traceFlags & api_1.TraceFlags.SAMPLED) === 0 || !keeps(spanContext.traceId, this.ratio)) {
435
+ return;
436
+ }
437
+ const copy = this.callSites.exportView(span, this.resource);
438
+ for (const processor of this.exporting) {
439
+ processor.onEnd(copy);
440
+ }
441
+ }
442
+ catch {
443
+ // never reaches the app, nor Sentry
444
+ }
445
+ }
446
+ forceFlush() {
447
+ return Promise.all(this.exporting.map((p) => p.forceFlush())).then(() => undefined);
448
+ }
449
+ shutdown() {
450
+ return Promise.all(this.exporting.map((p) => p.shutdown())).then(() => undefined);
451
+ }
452
+ }
453
+ exports.InProviderProcessor = InProviderProcessor;
454
+ /**
455
+ * keeps applies ROOTCAT_SAMPLE to a trace Sentry records: the same share
456
+ * of trace ids the OpenTelemetry ratio sampler keeps, so every span of a
457
+ * trace gets the same answer.
458
+ */
459
+ function keeps(traceId, ratio) {
460
+ if (ratio >= 1) {
461
+ return true;
462
+ }
463
+ if (ratio <= 0) {
464
+ return false;
465
+ }
466
+ const tail = parseInt(traceId.slice(-8), 16);
467
+ return Number.isFinite(tail) && tail / 0xffffffff < ratio;
468
+ }
469
+ /**
470
+ * activeDatabaseSpan is the active span when it is a recorded database
471
+ * span (the one Sentry's postgres.js instrumentation starts just before the
472
+ * query is handled), the span a postgres.js origin belongs to; anything
473
+ * else (a server span, when Sentry skipped the query for want of a
474
+ * parent) is not given the query's site.
475
+ */
476
+ function activeDatabaseSpan() {
477
+ const span = api_1.trace.getSpan(api_1.context.active());
478
+ if (!span || !span.isRecording()) {
479
+ return undefined;
480
+ }
481
+ const attributes = span.attributes;
482
+ if (!attributes || (attributes['db.system'] === undefined && attributes['db.system.name'] === undefined)) {
483
+ return undefined;
484
+ }
485
+ return span;
486
+ }
487
+ /**
488
+ * guardWrappers keeps an instrumentation's hands off another SDK's
489
+ * wrappers. Upstream instrumentations unwrap whatever wrapper they find
490
+ * on a method before wrapping it (meant for their own second enable),
491
+ * which would remove another SDK's: Sentry 8's http instrumentation,
492
+ * behind its request isolation, for one. With the guard the
493
+ * instrumentation only ever unwraps the package's own wrappers, and
494
+ * marks its wrappers as the package's. With keepForeign (beside another
495
+ * SDK) it also leaves alone a method another SDK already wrapped: that
496
+ * SDK's instrumentation stays the only one, and the package records no
497
+ * span there.
498
+ */
499
+ function guardWrappers(instrumentation, keepForeign) {
500
+ const target = instrumentation;
501
+ const wrap = target._wrap;
502
+ const unwrap = target._unwrap;
503
+ if (typeof wrap !== 'function' || typeof unwrap !== 'function') {
504
+ return instrumentation;
505
+ }
506
+ target._wrap = function (nodule, name, wrapper) {
507
+ const current = nodule?.[name];
508
+ if (keepForeign && (0, instrumentation_1.isWrapped)(current) && !(0, keys_js_1.mine)(current)) {
509
+ return undefined;
510
+ }
511
+ const result = wrap.call(this, nodule, name, wrapper);
512
+ if (nodule && typeof nodule[name] === 'function') {
513
+ (0, keys_js_1.marked)(nodule[name]);
514
+ }
515
+ return result;
516
+ };
517
+ target._unwrap = function (nodule, name) {
518
+ const current = nodule?.[name];
519
+ if ((0, instrumentation_1.isWrapped)(current) && !(0, keys_js_1.mine)(current)) {
520
+ return undefined;
521
+ }
522
+ return unwrap.call(this, nodule, name);
523
+ };
524
+ return instrumentation;
525
+ }
526
+ /**
527
+ * packageDir finds an installed package's directory through a require
528
+ * function, whether or not its exports map lists package.json.
529
+ */
530
+ function packageDir(load, name) {
531
+ try {
532
+ return path.dirname(load.resolve(`${name}/package.json`));
533
+ }
534
+ catch {
535
+ // package.json not exported: walk up from the entry
536
+ }
537
+ try {
538
+ let dir = path.dirname(load.resolve(name));
539
+ for (let level = 0; level < maxLevels; level++) {
540
+ const file = path.join(dir, 'package.json');
541
+ if (fs.existsSync(file) && JSON.parse(fs.readFileSync(file, 'utf8')).name === name) {
542
+ return dir;
543
+ }
544
+ dir = path.dirname(dir);
545
+ }
546
+ }
547
+ catch {
548
+ // not installed
549
+ }
550
+ return undefined;
551
+ }
552
+ /**
553
+ * sentryLoaderShared reports whether the application's Sentry and the
554
+ * package load one import-in-the-middle copy (npm dedupes them; pnpm
555
+ * keeps a copy each). Unknown counts as not shared. It decides how much
556
+ * the package's loader hook may wrap before Sentry.init: registered first,
557
+ * that hook sits inside Sentry's, and a module it marks for itself is
558
+ * then wrapped through its copy alone, so with copies apart Sentry's own
559
+ * instrumentation of that module (postgres.js, pg, with tracing on) would
560
+ * never run.
561
+ */
562
+ function sentryLoaderShared(cwd) {
563
+ try {
564
+ const app = (0, node_module_1.createRequire)(path.join(path.resolve(cwd), 'package.json'));
565
+ let sentry = packageDir(app, '@sentry/node');
566
+ if (!sentry) {
567
+ for (const sdk of ['@sentry/hono', '@sentry/nextjs', '@sentry/nestjs', '@sentry/node-core']) {
568
+ const dir = packageDir(app, sdk);
569
+ if (dir) {
570
+ sentry = packageDir((0, node_module_1.createRequire)(path.join(fs.realpathSync(dir), 'package.json')), '@sentry/node') ?? dir;
571
+ break;
572
+ }
573
+ }
574
+ }
575
+ if (!sentry) {
576
+ return false;
577
+ }
578
+ const theirs = packageDir((0, node_module_1.createRequire)(path.join(fs.realpathSync(sentry), 'package.json')), 'import-in-the-middle');
579
+ const instrumentation = path.dirname(require.resolve('@opentelemetry/instrumentation/package.json'));
580
+ const ours = packageDir((0, node_module_1.createRequire)(path.join(instrumentation, 'package.json')), 'import-in-the-middle');
581
+ return theirs !== undefined && ours !== undefined && fs.realpathSync(theirs) === fs.realpathSync(ours);
582
+ }
583
+ catch {
584
+ return false;
585
+ }
586
+ }
587
+ //# sourceMappingURL=coexist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coexist.js","sourceRoot":"","sources":["../src/coexist.ts"],"names":[],"mappings":"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"}
package/dist/drizzle.js CHANGED
@@ -22,7 +22,7 @@ class DrizzleEntryInstrumentation extends instrumentation_1.InstrumentationBase
22
22
  /** built holds the call site and root decision of every builder constructed. */
23
23
  built = new WeakMap();
24
24
  constructor(options) {
25
- super('@rootcat/node/drizzle-entry', '0.1.0', options);
25
+ super('@rootcat/node/drizzle-entry', '0.2.0', options);
26
26
  }
27
27
  init() {
28
28
  // Both loaders name an internal file by its path inside the package:
@@ -69,6 +69,9 @@ class DrizzleEntryInstrumentation extends instrumentation_1.InstrumentationBase
69
69
  const Traced = class extends Original {
70
70
  constructor(...args) {
71
71
  super(...args);
72
+ if (!instrumentation.isEnabled()) {
73
+ return;
74
+ }
72
75
  try {
73
76
  const config = instrumentation.getConfig();
74
77
  const carried = config.sampling.carry(() => (0, callsite_js_1.captureCallSite)(config.depth, config.isApp, Traced));
@@ -1 +1 @@
1
- {"version":3,"file":"drizzle.js","sourceRoot":"","sources":["../src/drizzle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drizzle.js","sourceRoot":"","sources":["../src/drizzle.ts"],"names":[],"mappings":"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"}