@smplkit/sdk 3.0.49 → 3.0.51

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/dist/index.d.cts CHANGED
@@ -2632,22 +2632,20 @@ declare enum LogLevel {
2632
2632
  SILENT = "SILENT"
2633
2633
  }
2634
2634
  /**
2635
- * Describes a logger configuration change. Frozen — fields cannot be
2635
+ * Describes a logger effective-level change. Frozen — fields cannot be
2636
2636
  * mutated after construction so a listener cannot affect later listeners.
2637
2637
  *
2638
- * The `level` field is a TypeScript-SDK-only convenience for callers that
2639
- * want to act on the new effective level without re-fetching the logger.
2638
+ * One instance per logger whose effective level moved; emitted in lockstep
2639
+ * with the matching `adapter.applyLevel(...)` call.
2640
2640
  */
2641
2641
  declare class LoggerChangeEvent {
2642
2642
  readonly id: string;
2643
2643
  readonly source: string;
2644
- readonly level?: LogLevel | null;
2645
- readonly deleted?: true;
2644
+ readonly level: LogLevel;
2646
2645
  constructor(fields: {
2647
2646
  id: string;
2648
2647
  source: string;
2649
- level?: LogLevel | null;
2650
- deleted?: true;
2648
+ level: LogLevel;
2651
2649
  });
2652
2650
  }
2653
2651
  /**
@@ -3363,8 +3361,10 @@ declare class LoggingClient {
3363
3361
  private _explicitAdapters;
3364
3362
  private _loggerBuffer;
3365
3363
  private _loggerFlushTimer;
3366
- private _loggerStore;
3367
- private _groupStore;
3364
+ private _loggersCache;
3365
+ private _groupsCache;
3366
+ private _resolvedLevelStore;
3367
+ private _knownLoggerNames;
3368
3368
  /** @internal */
3369
3369
  constructor(apiKey: string, ensureWs: () => SharedWebSocket, timeout?: number, baseUrl?: string, extraHeaders?: Record<string, string>);
3370
3370
  /**
@@ -3441,8 +3441,31 @@ declare class LoggingClient {
3441
3441
  _close(): void;
3442
3442
  /** Auto-load built-in adapters by attempting to require each framework. */
3443
3443
  private _autoLoadAdapters;
3444
- /** Apply resolved levels from server loggers to all adapters. */
3444
+ /**
3445
+ * Refresh resolved levels and apply them to adapter-known loggers.
3446
+ *
3447
+ * Walks every adapter-known logger name through {@link resolveLevel}
3448
+ * (env override → base → group chain → dot-notation ancestry → fallback)
3449
+ * and pushes the result to every registered adapter. Loggers whose own
3450
+ * `level` is `null` are still applied — that's the whole point of group
3451
+ * inheritance and dot-notation ancestry.
3452
+ *
3453
+ * The resolved-level snapshot lives in `_resolvedLevelStore` so callers
3454
+ * can diff pre-vs-post and fire change listeners on actual effective-
3455
+ * level deltas. The store is scoped to adapter-known names: listener
3456
+ * fanout pairs 1:1 with `adapter.applyLevel` calls, so a logger that
3457
+ * the adapter doesn't know about has no apply and no listener fire.
3458
+ * @internal
3459
+ */
3445
3460
  private _applyLevels;
3461
+ /** @internal Convert a server Logger list into the resolution cache. */
3462
+ private _buildLoggersCache;
3463
+ /** @internal Convert a server LogGroup list into the resolution cache. */
3464
+ private _buildGroupsCache;
3465
+ /** @internal */
3466
+ private _loggerToCacheEntry;
3467
+ /** @internal */
3468
+ private _groupToCacheEntry;
3446
3469
  /** Called by adapter hooks when a new logger is created in the framework. */
3447
3470
  private _onAdapterNewLogger;
3448
3471
  /** Flush buffered loggers to the bulk-register endpoint. */
@@ -3451,12 +3474,32 @@ declare class LoggingClient {
3451
3474
  private _handleLoggerDeleted;
3452
3475
  private _handleGroupChanged;
3453
3476
  private _handleGroupDeleted;
3477
+ /**
3478
+ * @internal Fire change listeners for every logger whose effective level
3479
+ * changed between `pre` and `post`.
3480
+ *
3481
+ * Contract:
3482
+ * - Iterates loggers present in `post` (the post-apply resolved store).
3483
+ * A key in `pre` but not in `post` is a cache eviction — that key
3484
+ * itself fires nothing. Dependents that re-resolved to a new value
3485
+ * are still in `post` and fire normally.
3486
+ * - For every changed logger, fires every global listener once with
3487
+ * that logger's own payload (no "summary" event), then fires every
3488
+ * key-scoped listener registered for that id.
3489
+ * - One adapter.applyLevel call ↔ one listener notification per
3490
+ * subscriber. A trigger that moves N loggers fires the global
3491
+ * listener N times, not once.
3492
+ * - `suppressIds` is the deletion-event escape hatch: a deleted id
3493
+ * fires nothing for itself even when its adapter-known resolved
3494
+ * level moved (e.g. fell back to INFO).
3495
+ */
3496
+ private _fireDeltas;
3454
3497
  private _handleLoggersChanged;
3455
3498
  /**
3456
- * Full refetch of loggers + log_groups, apply resolved levels to
3457
- * adapters, diff against local stores and fire change listeners
3458
- * (global once, per-key for each changed id). Shared between the
3459
- * `loggers_changed` WS handler and the public `refresh()` method.
3499
+ * Full refetch of loggers + log_groups, rebuild the caches, re-resolve
3500
+ * every adapter-known logger, and fire change listeners on resolved-level
3501
+ * deltas. Shared between the `loggers_changed` WS handler and the
3502
+ * public `refresh()` method.
3460
3503
  * @internal
3461
3504
  */
3462
3505
  private _resolveAndFire;
package/dist/index.d.ts CHANGED
@@ -2632,22 +2632,20 @@ declare enum LogLevel {
2632
2632
  SILENT = "SILENT"
2633
2633
  }
2634
2634
  /**
2635
- * Describes a logger configuration change. Frozen — fields cannot be
2635
+ * Describes a logger effective-level change. Frozen — fields cannot be
2636
2636
  * mutated after construction so a listener cannot affect later listeners.
2637
2637
  *
2638
- * The `level` field is a TypeScript-SDK-only convenience for callers that
2639
- * want to act on the new effective level without re-fetching the logger.
2638
+ * One instance per logger whose effective level moved; emitted in lockstep
2639
+ * with the matching `adapter.applyLevel(...)` call.
2640
2640
  */
2641
2641
  declare class LoggerChangeEvent {
2642
2642
  readonly id: string;
2643
2643
  readonly source: string;
2644
- readonly level?: LogLevel | null;
2645
- readonly deleted?: true;
2644
+ readonly level: LogLevel;
2646
2645
  constructor(fields: {
2647
2646
  id: string;
2648
2647
  source: string;
2649
- level?: LogLevel | null;
2650
- deleted?: true;
2648
+ level: LogLevel;
2651
2649
  });
2652
2650
  }
2653
2651
  /**
@@ -3363,8 +3361,10 @@ declare class LoggingClient {
3363
3361
  private _explicitAdapters;
3364
3362
  private _loggerBuffer;
3365
3363
  private _loggerFlushTimer;
3366
- private _loggerStore;
3367
- private _groupStore;
3364
+ private _loggersCache;
3365
+ private _groupsCache;
3366
+ private _resolvedLevelStore;
3367
+ private _knownLoggerNames;
3368
3368
  /** @internal */
3369
3369
  constructor(apiKey: string, ensureWs: () => SharedWebSocket, timeout?: number, baseUrl?: string, extraHeaders?: Record<string, string>);
3370
3370
  /**
@@ -3441,8 +3441,31 @@ declare class LoggingClient {
3441
3441
  _close(): void;
3442
3442
  /** Auto-load built-in adapters by attempting to require each framework. */
3443
3443
  private _autoLoadAdapters;
3444
- /** Apply resolved levels from server loggers to all adapters. */
3444
+ /**
3445
+ * Refresh resolved levels and apply them to adapter-known loggers.
3446
+ *
3447
+ * Walks every adapter-known logger name through {@link resolveLevel}
3448
+ * (env override → base → group chain → dot-notation ancestry → fallback)
3449
+ * and pushes the result to every registered adapter. Loggers whose own
3450
+ * `level` is `null` are still applied — that's the whole point of group
3451
+ * inheritance and dot-notation ancestry.
3452
+ *
3453
+ * The resolved-level snapshot lives in `_resolvedLevelStore` so callers
3454
+ * can diff pre-vs-post and fire change listeners on actual effective-
3455
+ * level deltas. The store is scoped to adapter-known names: listener
3456
+ * fanout pairs 1:1 with `adapter.applyLevel` calls, so a logger that
3457
+ * the adapter doesn't know about has no apply and no listener fire.
3458
+ * @internal
3459
+ */
3445
3460
  private _applyLevels;
3461
+ /** @internal Convert a server Logger list into the resolution cache. */
3462
+ private _buildLoggersCache;
3463
+ /** @internal Convert a server LogGroup list into the resolution cache. */
3464
+ private _buildGroupsCache;
3465
+ /** @internal */
3466
+ private _loggerToCacheEntry;
3467
+ /** @internal */
3468
+ private _groupToCacheEntry;
3446
3469
  /** Called by adapter hooks when a new logger is created in the framework. */
3447
3470
  private _onAdapterNewLogger;
3448
3471
  /** Flush buffered loggers to the bulk-register endpoint. */
@@ -3451,12 +3474,32 @@ declare class LoggingClient {
3451
3474
  private _handleLoggerDeleted;
3452
3475
  private _handleGroupChanged;
3453
3476
  private _handleGroupDeleted;
3477
+ /**
3478
+ * @internal Fire change listeners for every logger whose effective level
3479
+ * changed between `pre` and `post`.
3480
+ *
3481
+ * Contract:
3482
+ * - Iterates loggers present in `post` (the post-apply resolved store).
3483
+ * A key in `pre` but not in `post` is a cache eviction — that key
3484
+ * itself fires nothing. Dependents that re-resolved to a new value
3485
+ * are still in `post` and fire normally.
3486
+ * - For every changed logger, fires every global listener once with
3487
+ * that logger's own payload (no "summary" event), then fires every
3488
+ * key-scoped listener registered for that id.
3489
+ * - One adapter.applyLevel call ↔ one listener notification per
3490
+ * subscriber. A trigger that moves N loggers fires the global
3491
+ * listener N times, not once.
3492
+ * - `suppressIds` is the deletion-event escape hatch: a deleted id
3493
+ * fires nothing for itself even when its adapter-known resolved
3494
+ * level moved (e.g. fell back to INFO).
3495
+ */
3496
+ private _fireDeltas;
3454
3497
  private _handleLoggersChanged;
3455
3498
  /**
3456
- * Full refetch of loggers + log_groups, apply resolved levels to
3457
- * adapters, diff against local stores and fire change listeners
3458
- * (global once, per-key for each changed id). Shared between the
3459
- * `loggers_changed` WS handler and the public `refresh()` method.
3499
+ * Full refetch of loggers + log_groups, rebuild the caches, re-resolve
3500
+ * every adapter-known logger, and fire change listeners on resolved-level
3501
+ * deltas. Shared between the `loggers_changed` WS handler and the
3502
+ * public `refresh()` method.
3460
3503
  * @internal
3461
3504
  */
3462
3505
  private _resolveAndFire;