@smplkit/sdk 3.0.50 → 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.cjs +41 -88
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +32 -26
- package/dist/index.d.ts +32 -26
- package/dist/index.js +41 -88
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
|
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
|
-
*
|
|
2639
|
-
*
|
|
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
|
|
2645
|
-
readonly deleted?: true;
|
|
2644
|
+
readonly level: LogLevel;
|
|
2646
2645
|
constructor(fields: {
|
|
2647
2646
|
id: string;
|
|
2648
2647
|
source: string;
|
|
2649
|
-
level
|
|
2650
|
-
deleted?: true;
|
|
2648
|
+
level: LogLevel;
|
|
2651
2649
|
});
|
|
2652
2650
|
}
|
|
2653
2651
|
/**
|
|
@@ -3446,15 +3444,17 @@ declare class LoggingClient {
|
|
|
3446
3444
|
/**
|
|
3447
3445
|
* Refresh resolved levels and apply them to adapter-known loggers.
|
|
3448
3446
|
*
|
|
3449
|
-
*
|
|
3450
|
-
*
|
|
3451
|
-
*
|
|
3452
|
-
*
|
|
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.
|
|
3453
3452
|
*
|
|
3454
|
-
* The
|
|
3455
|
-
*
|
|
3456
|
-
*
|
|
3457
|
-
*
|
|
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
3458
|
* @internal
|
|
3459
3459
|
*/
|
|
3460
3460
|
private _applyLevels;
|
|
@@ -3475,19 +3475,25 @@ declare class LoggingClient {
|
|
|
3475
3475
|
private _handleGroupChanged;
|
|
3476
3476
|
private _handleGroupDeleted;
|
|
3477
3477
|
/**
|
|
3478
|
-
* @internal Fire change listeners for every logger whose
|
|
3479
|
-
* changed between `pre` and `post`.
|
|
3480
|
-
*
|
|
3481
|
-
*
|
|
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).
|
|
3482
3495
|
*/
|
|
3483
3496
|
private _fireDeltas;
|
|
3484
|
-
/**
|
|
3485
|
-
* @internal Always emit a deleted event for `id` on global and per-key
|
|
3486
|
-
* listeners. Used by `logger_deleted` / `group_deleted` handlers to
|
|
3487
|
-
* preserve the explicit notification contract even when nothing in the
|
|
3488
|
-
* resolved-level store changed (e.g. server removed an unknown logger).
|
|
3489
|
-
*/
|
|
3490
|
-
private _emitDeletedEvent;
|
|
3491
3497
|
private _handleLoggersChanged;
|
|
3492
3498
|
/**
|
|
3493
3499
|
* Full refetch of loggers + log_groups, rebuild the caches, re-resolve
|
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
|
|
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
|
-
*
|
|
2639
|
-
*
|
|
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
|
|
2645
|
-
readonly deleted?: true;
|
|
2644
|
+
readonly level: LogLevel;
|
|
2646
2645
|
constructor(fields: {
|
|
2647
2646
|
id: string;
|
|
2648
2647
|
source: string;
|
|
2649
|
-
level
|
|
2650
|
-
deleted?: true;
|
|
2648
|
+
level: LogLevel;
|
|
2651
2649
|
});
|
|
2652
2650
|
}
|
|
2653
2651
|
/**
|
|
@@ -3446,15 +3444,17 @@ declare class LoggingClient {
|
|
|
3446
3444
|
/**
|
|
3447
3445
|
* Refresh resolved levels and apply them to adapter-known loggers.
|
|
3448
3446
|
*
|
|
3449
|
-
*
|
|
3450
|
-
*
|
|
3451
|
-
*
|
|
3452
|
-
*
|
|
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.
|
|
3453
3452
|
*
|
|
3454
|
-
* The
|
|
3455
|
-
*
|
|
3456
|
-
*
|
|
3457
|
-
*
|
|
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
3458
|
* @internal
|
|
3459
3459
|
*/
|
|
3460
3460
|
private _applyLevels;
|
|
@@ -3475,19 +3475,25 @@ declare class LoggingClient {
|
|
|
3475
3475
|
private _handleGroupChanged;
|
|
3476
3476
|
private _handleGroupDeleted;
|
|
3477
3477
|
/**
|
|
3478
|
-
* @internal Fire change listeners for every logger whose
|
|
3479
|
-
* changed between `pre` and `post`.
|
|
3480
|
-
*
|
|
3481
|
-
*
|
|
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).
|
|
3482
3495
|
*/
|
|
3483
3496
|
private _fireDeltas;
|
|
3484
|
-
/**
|
|
3485
|
-
* @internal Always emit a deleted event for `id` on global and per-key
|
|
3486
|
-
* listeners. Used by `logger_deleted` / `group_deleted` handlers to
|
|
3487
|
-
* preserve the explicit notification contract even when nothing in the
|
|
3488
|
-
* resolved-level store changed (e.g. server removed an unknown logger).
|
|
3489
|
-
*/
|
|
3490
|
-
private _emitDeletedEvent;
|
|
3491
3497
|
private _handleLoggersChanged;
|
|
3492
3498
|
/**
|
|
3493
3499
|
* Full refetch of loggers + log_groups, rebuild the caches, re-resolve
|
package/dist/index.js
CHANGED
|
@@ -19221,12 +19221,10 @@ var LoggerChangeEvent = class {
|
|
|
19221
19221
|
id;
|
|
19222
19222
|
source;
|
|
19223
19223
|
level;
|
|
19224
|
-
deleted;
|
|
19225
19224
|
constructor(fields) {
|
|
19226
19225
|
this.id = fields.id;
|
|
19227
19226
|
this.source = fields.source;
|
|
19228
|
-
|
|
19229
|
-
if (fields.deleted) this.deleted = fields.deleted;
|
|
19227
|
+
this.level = fields.level;
|
|
19230
19228
|
Object.freeze(this);
|
|
19231
19229
|
}
|
|
19232
19230
|
};
|
|
@@ -22150,27 +22148,24 @@ var LoggingClient = class {
|
|
|
22150
22148
|
/**
|
|
22151
22149
|
* Refresh resolved levels and apply them to adapter-known loggers.
|
|
22152
22150
|
*
|
|
22153
|
-
*
|
|
22154
|
-
*
|
|
22155
|
-
*
|
|
22156
|
-
*
|
|
22151
|
+
* Walks every adapter-known logger name through {@link resolveLevel}
|
|
22152
|
+
* (env override → base → group chain → dot-notation ancestry → fallback)
|
|
22153
|
+
* and pushes the result to every registered adapter. Loggers whose own
|
|
22154
|
+
* `level` is `null` are still applied — that's the whole point of group
|
|
22155
|
+
* inheritance and dot-notation ancestry.
|
|
22157
22156
|
*
|
|
22158
|
-
* The
|
|
22159
|
-
*
|
|
22160
|
-
*
|
|
22161
|
-
*
|
|
22157
|
+
* The resolved-level snapshot lives in `_resolvedLevelStore` so callers
|
|
22158
|
+
* can diff pre-vs-post and fire change listeners on actual effective-
|
|
22159
|
+
* level deltas. The store is scoped to adapter-known names: listener
|
|
22160
|
+
* fanout pairs 1:1 with `adapter.applyLevel` calls, so a logger that
|
|
22161
|
+
* the adapter doesn't know about has no apply and no listener fire.
|
|
22162
22162
|
* @internal
|
|
22163
22163
|
*/
|
|
22164
22164
|
_applyLevels() {
|
|
22165
22165
|
const environment = this._parent?._environment ?? "";
|
|
22166
22166
|
const newResolved = {};
|
|
22167
|
-
for (const id of Object.keys(this._loggersCache)) {
|
|
22168
|
-
newResolved[id] = resolveLevel(id, environment, this._loggersCache, this._groupsCache);
|
|
22169
|
-
}
|
|
22170
22167
|
for (const name of this._knownLoggerNames) {
|
|
22171
|
-
|
|
22172
|
-
newResolved[name] = resolveLevel(name, environment, this._loggersCache, this._groupsCache);
|
|
22173
|
-
}
|
|
22168
|
+
newResolved[name] = resolveLevel(name, environment, this._loggersCache, this._groupsCache);
|
|
22174
22169
|
}
|
|
22175
22170
|
this._resolvedLevelStore = newResolved;
|
|
22176
22171
|
for (const name of this._knownLoggerNames) {
|
|
@@ -22303,7 +22298,6 @@ var LoggingClient = class {
|
|
|
22303
22298
|
delete this._loggersCache[id];
|
|
22304
22299
|
const preResolved = { ...this._resolvedLevelStore };
|
|
22305
22300
|
this._applyLevels();
|
|
22306
|
-
this._emitDeletedEvent(id, "websocket");
|
|
22307
22301
|
this._fireDeltas(preResolved, this._resolvedLevelStore, "websocket", /* @__PURE__ */ new Set([id]));
|
|
22308
22302
|
};
|
|
22309
22303
|
_handleGroupChanged = (data) => {
|
|
@@ -22333,45 +22327,41 @@ var LoggingClient = class {
|
|
|
22333
22327
|
delete this._groupsCache[id];
|
|
22334
22328
|
const preResolved = { ...this._resolvedLevelStore };
|
|
22335
22329
|
this._applyLevels();
|
|
22336
|
-
this._emitDeletedEvent(id, "websocket");
|
|
22337
22330
|
this._fireDeltas(preResolved, this._resolvedLevelStore, "websocket", /* @__PURE__ */ new Set([id]));
|
|
22338
22331
|
};
|
|
22339
22332
|
/**
|
|
22340
|
-
* @internal Fire change listeners for every logger whose
|
|
22341
|
-
* changed between `pre` and `post`.
|
|
22342
|
-
*
|
|
22343
|
-
*
|
|
22333
|
+
* @internal Fire change listeners for every logger whose effective level
|
|
22334
|
+
* changed between `pre` and `post`.
|
|
22335
|
+
*
|
|
22336
|
+
* Contract:
|
|
22337
|
+
* - Iterates loggers present in `post` (the post-apply resolved store).
|
|
22338
|
+
* A key in `pre` but not in `post` is a cache eviction — that key
|
|
22339
|
+
* itself fires nothing. Dependents that re-resolved to a new value
|
|
22340
|
+
* are still in `post` and fire normally.
|
|
22341
|
+
* - For every changed logger, fires every global listener once with
|
|
22342
|
+
* that logger's own payload (no "summary" event), then fires every
|
|
22343
|
+
* key-scoped listener registered for that id.
|
|
22344
|
+
* - One adapter.applyLevel call ↔ one listener notification per
|
|
22345
|
+
* subscriber. A trigger that moves N loggers fires the global
|
|
22346
|
+
* listener N times, not once.
|
|
22347
|
+
* - `suppressIds` is the deletion-event escape hatch: a deleted id
|
|
22348
|
+
* fires nothing for itself even when its adapter-known resolved
|
|
22349
|
+
* level moved (e.g. fell back to INFO).
|
|
22344
22350
|
*/
|
|
22345
|
-
_fireDeltas(pre, post, source,
|
|
22346
|
-
const
|
|
22347
|
-
|
|
22348
|
-
|
|
22349
|
-
if (
|
|
22350
|
-
|
|
22351
|
-
|
|
22352
|
-
|
|
22353
|
-
|
|
22354
|
-
|
|
22355
|
-
|
|
22356
|
-
id,
|
|
22357
|
-
source,
|
|
22358
|
-
level: post[id] ?? null
|
|
22359
|
-
};
|
|
22360
|
-
if (isDeletion) fields.deleted = true;
|
|
22361
|
-
return new LoggerChangeEvent(fields);
|
|
22362
|
-
};
|
|
22363
|
-
const firstKey = changed[0];
|
|
22364
|
-
const globalEvent = buildEvent(firstKey);
|
|
22365
|
-
for (const cb of this._globalListeners) {
|
|
22366
|
-
try {
|
|
22367
|
-
cb(globalEvent);
|
|
22368
|
-
} catch {
|
|
22351
|
+
_fireDeltas(pre, post, source, suppressIds) {
|
|
22352
|
+
for (const id of Object.keys(post)) {
|
|
22353
|
+
if (suppressIds?.has(id)) continue;
|
|
22354
|
+
const next = post[id];
|
|
22355
|
+
if (pre[id] === next) continue;
|
|
22356
|
+
const event = new LoggerChangeEvent({ id, source, level: next });
|
|
22357
|
+
for (const cb of this._globalListeners) {
|
|
22358
|
+
try {
|
|
22359
|
+
cb(event);
|
|
22360
|
+
} catch {
|
|
22361
|
+
}
|
|
22369
22362
|
}
|
|
22370
|
-
|
|
22371
|
-
for (const k of changed) {
|
|
22372
|
-
const keyCallbacks = this._keyListeners.get(k);
|
|
22363
|
+
const keyCallbacks = this._keyListeners.get(id);
|
|
22373
22364
|
if (keyCallbacks) {
|
|
22374
|
-
const event = buildEvent(k);
|
|
22375
22365
|
for (const cb of keyCallbacks) {
|
|
22376
22366
|
try {
|
|
22377
22367
|
cb(event);
|
|
@@ -22381,43 +22371,6 @@ var LoggingClient = class {
|
|
|
22381
22371
|
}
|
|
22382
22372
|
}
|
|
22383
22373
|
}
|
|
22384
|
-
/**
|
|
22385
|
-
* @internal Always emit a deleted event for `id` on global and per-key
|
|
22386
|
-
* listeners. Used by `logger_deleted` / `group_deleted` handlers to
|
|
22387
|
-
* preserve the explicit notification contract even when nothing in the
|
|
22388
|
-
* resolved-level store changed (e.g. server removed an unknown logger).
|
|
22389
|
-
*/
|
|
22390
|
-
_emitDeletedEvent(id, source) {
|
|
22391
|
-
const event = new LoggerChangeEvent({
|
|
22392
|
-
id,
|
|
22393
|
-
level: null,
|
|
22394
|
-
source,
|
|
22395
|
-
deleted: true
|
|
22396
|
-
});
|
|
22397
|
-
for (const cb of this._globalListeners) {
|
|
22398
|
-
try {
|
|
22399
|
-
cb(event);
|
|
22400
|
-
} catch (err) {
|
|
22401
|
-
debug(
|
|
22402
|
-
"websocket",
|
|
22403
|
-
`deleted listener error: ${err instanceof Error ? err.message : String(err)}`
|
|
22404
|
-
);
|
|
22405
|
-
}
|
|
22406
|
-
}
|
|
22407
|
-
const idCallbacks = this._keyListeners.get(id);
|
|
22408
|
-
if (idCallbacks) {
|
|
22409
|
-
for (const cb of idCallbacks) {
|
|
22410
|
-
try {
|
|
22411
|
-
cb(event);
|
|
22412
|
-
} catch (err) {
|
|
22413
|
-
debug(
|
|
22414
|
-
"websocket",
|
|
22415
|
-
`deleted key listener error: ${err instanceof Error ? err.message : String(err)}`
|
|
22416
|
-
);
|
|
22417
|
-
}
|
|
22418
|
-
}
|
|
22419
|
-
}
|
|
22420
|
-
}
|
|
22421
22374
|
_handleLoggersChanged = (_data) => {
|
|
22422
22375
|
debug("websocket", `loggers_changed event received`);
|
|
22423
22376
|
void this._resolveAndFire("websocket").catch(() => {
|