@dudousxd/nestjs-diagnostics 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @dudousxd/nestjs-diagnostics
|
|
2
2
|
|
|
3
|
+
## 0.2.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#2](https://github.com/DavideCarvalho/nestjs-diagnostics/pull/2) [`620c4bc`](https://github.com/DavideCarvalho/nestjs-diagnostics/commit/620c4bc08ce61f7059a2dd6ce2cdc19f2d5388a5) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - Harden the cross-copy state to process-global singletons (keyed by `Symbol.for`
|
|
8
|
+
on `globalThis`):
|
|
9
|
+
|
|
10
|
+
- the channel **registry** (`registeredChannels` / `onChannelRegistered`), so the
|
|
11
|
+
generic Telescope watcher discovers every emitted channel; and
|
|
12
|
+
- the **context accessor** (`setContextAccessor` / `resolveTraceId`), so a `traceId`
|
|
13
|
+
registered through one copy is visible to `emit()` in another.
|
|
14
|
+
|
|
15
|
+
This matters when more than one physical copy of the package is loaded — divergent
|
|
16
|
+
version ranges that pnpm cannot dedupe into a single instance. The
|
|
17
|
+
`node:diagnostics_channel` objects were already process-global; this makes their
|
|
18
|
+
discovery registry and the trace accessor equally global. No API change.
|
|
19
|
+
|
|
3
20
|
## 0.2.0
|
|
4
21
|
|
|
5
22
|
### Minor Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-accessor.d.ts","sourceRoot":"","sources":["../src/context-accessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB;AAED,mGAAmG;AACnG,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,OAAO,IAAI,MAAM,GAAG,SAAS,CAAC;IAC9B,mFAAmF;IACnF,QAAQ,IAAI,MAAM,GAAG,SAAS,CAAC;IAC/B,0EAA0E;IAC1E,OAAO,IAAI,OAAO,GAAG,SAAS,CAAC;IAC/B,qEAAqE;IACrE,GAAG,IAAI,YAAY,GAAG,SAAS,CAAC;CACjC;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,eAAkD,CAAC;
|
|
1
|
+
{"version":3,"file":"context-accessor.d.ts","sourceRoot":"","sources":["../src/context-accessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB;AAED,mGAAmG;AACnG,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,OAAO,IAAI,MAAM,GAAG,SAAS,CAAC;IAC9B,mFAAmF;IACnF,QAAQ,IAAI,MAAM,GAAG,SAAS,CAAC;IAC/B,0EAA0E;IAC1E,OAAO,IAAI,OAAO,GAAG,SAAS,CAAC;IAC/B,qEAAqE;IACrE,GAAG,IAAI,YAAY,GAAG,SAAS,CAAC;CACjC;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,eAAkD,CAAC;AAwBhF,uFAAuF;AACvF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI,CAErE;AAED,oDAAoD;AACpD,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAE3D;AAED,iFAAiF;AACjF,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAQnD"}
|
package/dist/context-accessor.js
CHANGED
|
@@ -5,23 +5,21 @@
|
|
|
5
5
|
* of the `@dudousxd/nestjs-*` family wires the optional context peer.
|
|
6
6
|
*/
|
|
7
7
|
export const CONTEXT_ACCESSOR = Symbol.for('@dudousxd/nestjs-context:accessor');
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
* the hot path: when unset, `emit` simply leaves `traceId` undefined.
|
|
13
|
-
*/
|
|
14
|
-
let accessor = null;
|
|
8
|
+
const ACCESSOR_KEY = Symbol.for('@dudousxd/nestjs-diagnostics:accessor');
|
|
9
|
+
const accessorStore = globalThis;
|
|
10
|
+
const accessorHolder = accessorStore[ACCESSOR_KEY] ?? { current: null };
|
|
11
|
+
accessorStore[ACCESSOR_KEY] = accessorHolder;
|
|
15
12
|
/** Register (or clear, with `null`) the accessor {@link emit} reads `traceId` from. */
|
|
16
13
|
export function setContextAccessor(next) {
|
|
17
|
-
|
|
14
|
+
accessorHolder.current = next;
|
|
18
15
|
}
|
|
19
16
|
/** The currently registered accessor, or `null`. */
|
|
20
17
|
export function getContextAccessor() {
|
|
21
|
-
return
|
|
18
|
+
return accessorHolder.current;
|
|
22
19
|
}
|
|
23
20
|
/** Resolve the current trace id from the registered accessor, never throwing. */
|
|
24
21
|
export function resolveTraceId() {
|
|
22
|
+
const accessor = accessorHolder.current;
|
|
25
23
|
if (accessor == null)
|
|
26
24
|
return undefined;
|
|
27
25
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-accessor.js","sourceRoot":"","sources":["../src/context-accessor.ts"],"names":[],"mappings":"AAgCA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"context-accessor.js","sourceRoot":"","sources":["../src/context-accessor.ts"],"names":[],"mappings":"AAgCA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;AAmBhF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;AACzE,MAAM,aAAa,GAAG,UAAqE,CAAC;AAC5F,MAAM,cAAc,GAAmB,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACxF,aAAa,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC;AAE7C,uFAAuF;AACvF,MAAM,UAAU,kBAAkB,CAAC,IAA4B;IAC7D,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;AAChC,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,kBAAkB;IAChC,OAAO,cAAc,CAAC,OAAO,CAAC;AAChC,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,cAAc;IAC5B,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC;IACxC,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA6BH;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAUlD;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAK1E;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAGpC"}
|
package/dist/registry.js
CHANGED
|
@@ -9,10 +9,14 @@
|
|
|
9
9
|
* provides both: {@link registeredChannels} for the current set and
|
|
10
10
|
* {@link onChannelRegistered} for future additions.
|
|
11
11
|
*/
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
const REGISTRY_KEY = Symbol.for('@dudousxd/nestjs-diagnostics:registry');
|
|
13
|
+
const globalStore = globalThis;
|
|
14
|
+
const registry = globalStore[REGISTRY_KEY] ?? {
|
|
15
|
+
channels: new Set(),
|
|
16
|
+
listeners: new Set(),
|
|
17
|
+
};
|
|
18
|
+
globalStore[REGISTRY_KEY] = registry;
|
|
19
|
+
const { channels, listeners } = registry;
|
|
16
20
|
/**
|
|
17
21
|
* Record a channel name, notifying {@link onChannelRegistered} listeners the first
|
|
18
22
|
* time it is seen. Idempotent: re-registering an existing name is a no-op.
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAoBH,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;AACzE,MAAM,WAAW,GAAG,UAA+D,CAAC;AACpF,MAAM,QAAQ,GAAa,WAAW,CAAC,YAAY,CAAC,IAAI;IACtD,QAAQ,EAAE,IAAI,GAAG,EAAU;IAC3B,SAAS,EAAE,IAAI,GAAG,EAA0B;CAC7C,CAAC;AACF,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;AACrC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO;IAC/B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,0DAA0D;QAC5D,CAAC;IACH,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAA0B;IAC5D,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,GAAG,EAAE;QACV,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC"}
|
package/package.json
CHANGED