fix(typedrouter): Use globalThis-backed globalHooks for TypedRouter to enable cross-bundle sharing; fix merging and clearing of global hooks.

This commit is contained in:
2025-12-04 22:15:26 +00:00
parent 5444e1be88
commit 2ff5602430
3 changed files with 23 additions and 5 deletions

View File

@@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@api.global/typedrequest',
version: '3.2.0',
version: '3.2.1',
description: 'A TypeScript library for making typed requests towards APIs, including facilities for handling requests, routing, and virtual stream handling.'
}

View File

@@ -34,21 +34,32 @@ export interface ITypedRouterHooks {
* This is thought for reusing the same url endpoint for different methods
*/
export class TypedRouter {
// Static hooks for global traffic monitoring
public static globalHooks: ITypedRouterHooks = {};
// Use globalThis for cross-bundle hook sharing
public static get globalHooks(): ITypedRouterHooks {
if (!(globalThis as any).__typedRouterGlobalHooks) {
(globalThis as any).__typedRouterGlobalHooks = {};
}
return (globalThis as any).__typedRouterGlobalHooks;
}
public static set globalHooks(value: ITypedRouterHooks) {
(globalThis as any).__typedRouterGlobalHooks = value;
}
/**
* Set global hooks for monitoring all TypedRequest traffic
* Hooks are shared across all bundles via globalThis
*/
public static setGlobalHooks(hooks: ITypedRouterHooks): void {
TypedRouter.globalHooks = { ...TypedRouter.globalHooks, ...hooks };
const current = TypedRouter.globalHooks;
TypedRouter.globalHooks = { ...current, ...hooks };
}
/**
* Clear all global hooks
*/
public static clearGlobalHooks(): void {
TypedRouter.globalHooks = {};
(globalThis as any).__typedRouterGlobalHooks = {};
}
// Instance-level hooks (for per-router monitoring)