@spinajs/log 2.0.481 → 2.0.484
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/README.md +744 -0
- package/lib/cjs/archive/LogArchiveService.d.ts +75 -0
- package/lib/cjs/archive/LogArchiveService.d.ts.map +1 -0
- package/lib/cjs/archive/LogArchiveService.js +189 -0
- package/lib/cjs/archive/LogArchiveService.js.map +1 -0
- package/lib/cjs/archive/archive-strategy.d.ts +32 -0
- package/lib/cjs/archive/archive-strategy.d.ts.map +1 -0
- package/lib/cjs/archive/archive-strategy.js +43 -0
- package/lib/cjs/archive/archive-strategy.js.map +1 -0
- package/lib/cjs/archive/context.d.ts +50 -0
- package/lib/cjs/archive/context.d.ts.map +1 -0
- package/lib/cjs/archive/context.js +3 -0
- package/lib/cjs/archive/context.js.map +1 -0
- package/lib/cjs/archive/index.d.ts +10 -0
- package/lib/cjs/archive/index.d.ts.map +1 -0
- package/lib/cjs/archive/index.js +26 -0
- package/lib/cjs/archive/index.js.map +1 -0
- package/lib/cjs/archive/retention-strategy.d.ts +26 -0
- package/lib/cjs/archive/retention-strategy.d.ts.map +1 -0
- package/lib/cjs/archive/retention-strategy.js +42 -0
- package/lib/cjs/archive/retention-strategy.js.map +1 -0
- package/lib/cjs/archive/strategies/AgeLogRetentionStrategy.d.ts +10 -0
- package/lib/cjs/archive/strategies/AgeLogRetentionStrategy.d.ts.map +1 -0
- package/lib/cjs/archive/strategies/AgeLogRetentionStrategy.js +46 -0
- package/lib/cjs/archive/strategies/AgeLogRetentionStrategy.js.map +1 -0
- package/lib/cjs/archive/strategies/CountLogRetentionStrategy.d.ts +10 -0
- package/lib/cjs/archive/strategies/CountLogRetentionStrategy.d.ts.map +1 -0
- package/lib/cjs/archive/strategies/CountLogRetentionStrategy.js +42 -0
- package/lib/cjs/archive/strategies/CountLogRetentionStrategy.js.map +1 -0
- package/lib/cjs/archive/strategies/CronLogArchiveStrategy.d.ts +15 -0
- package/lib/cjs/archive/strategies/CronLogArchiveStrategy.d.ts.map +1 -0
- package/lib/cjs/archive/strategies/CronLogArchiveStrategy.js +52 -0
- package/lib/cjs/archive/strategies/CronLogArchiveStrategy.js.map +1 -0
- package/lib/cjs/archive/strategies/SizeLogArchiveStrategy.d.ts +18 -0
- package/lib/cjs/archive/strategies/SizeLogArchiveStrategy.d.ts.map +1 -0
- package/lib/cjs/archive/strategies/SizeLogArchiveStrategy.js +63 -0
- package/lib/cjs/archive/strategies/SizeLogArchiveStrategy.js.map +1 -0
- package/lib/cjs/archive/strategies/util.d.ts +28 -0
- package/lib/cjs/archive/strategies/util.d.ts.map +1 -0
- package/lib/cjs/archive/strategies/util.js +59 -0
- package/lib/cjs/archive/strategies/util.js.map +1 -0
- package/lib/cjs/bootstrap.d.ts.map +1 -1
- package/lib/cjs/bootstrap.js +24 -1
- package/lib/cjs/bootstrap.js.map +1 -1
- package/lib/cjs/callsite.d.ts +26 -0
- package/lib/cjs/callsite.d.ts.map +1 -0
- package/lib/cjs/callsite.js +60 -0
- package/lib/cjs/callsite.js.map +1 -0
- package/lib/cjs/config/log.d.ts +96 -0
- package/lib/cjs/config/log.d.ts.map +1 -0
- package/lib/cjs/config/log.js +75 -0
- package/lib/cjs/config/log.js.map +1 -0
- package/lib/cjs/context.browser.d.ts +46 -0
- package/lib/cjs/context.browser.d.ts.map +1 -0
- package/lib/cjs/context.browser.js +85 -0
- package/lib/cjs/context.browser.js.map +1 -0
- package/lib/cjs/context.d.ts +61 -0
- package/lib/cjs/context.d.ts.map +1 -0
- package/lib/cjs/context.js +92 -0
- package/lib/cjs/context.js.map +1 -0
- package/lib/cjs/filters/LevelFilter.d.ts +24 -0
- package/lib/cjs/filters/LevelFilter.d.ts.map +1 -0
- package/lib/cjs/filters/LevelFilter.js +39 -0
- package/lib/cjs/filters/LevelFilter.js.map +1 -0
- package/lib/cjs/filters/MatchFilter.d.ts +30 -0
- package/lib/cjs/filters/MatchFilter.d.ts.map +1 -0
- package/lib/cjs/filters/MatchFilter.js +65 -0
- package/lib/cjs/filters/MatchFilter.js.map +1 -0
- package/lib/cjs/filters/RateLimitFilter.d.ts +37 -0
- package/lib/cjs/filters/RateLimitFilter.d.ts.map +1 -0
- package/lib/cjs/filters/RateLimitFilter.js +70 -0
- package/lib/cjs/filters/RateLimitFilter.js.map +1 -0
- package/lib/cjs/filters/index.d.ts +4 -0
- package/lib/cjs/filters/index.d.ts.map +1 -0
- package/lib/cjs/filters/index.js +20 -0
- package/lib/cjs/filters/index.js.map +1 -0
- package/lib/cjs/index.browser.d.ts +14 -0
- package/lib/cjs/index.browser.d.ts.map +1 -0
- package/lib/cjs/index.browser.js +46 -0
- package/lib/cjs/index.browser.js.map +1 -0
- package/lib/cjs/index.d.ts +8 -0
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +8 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/log.d.ts +60 -1
- package/lib/cjs/log.d.ts.map +1 -1
- package/lib/cjs/log.js +294 -32
- package/lib/cjs/log.js.map +1 -1
- package/lib/cjs/perf/LogMetricSink.d.ts +55 -0
- package/lib/cjs/perf/LogMetricSink.d.ts.map +1 -0
- package/lib/cjs/perf/LogMetricSink.js +154 -0
- package/lib/cjs/perf/LogMetricSink.js.map +1 -0
- package/lib/cjs/perf/measure.d.ts +9 -0
- package/lib/cjs/perf/measure.d.ts.map +1 -0
- package/lib/cjs/perf/measure.js +21 -0
- package/lib/cjs/perf/measure.js.map +1 -0
- package/lib/cjs/perf.d.ts +9 -0
- package/lib/cjs/perf.d.ts.map +1 -0
- package/lib/cjs/perf.js +18 -0
- package/lib/cjs/perf.js.map +1 -0
- package/lib/cjs/schemas/log.configuration.d.ts +151 -18
- package/lib/cjs/schemas/log.configuration.d.ts.map +1 -1
- package/lib/cjs/schemas/log.configuration.js +154 -21
- package/lib/cjs/schemas/log.configuration.js.map +1 -1
- package/lib/cjs/targets/BrowserConsoleTarget.d.ts +48 -0
- package/lib/cjs/targets/BrowserConsoleTarget.d.ts.map +1 -0
- package/lib/cjs/targets/BrowserConsoleTarget.js +48 -0
- package/lib/cjs/targets/BrowserConsoleTarget.js.map +1 -0
- package/lib/cjs/targets/ColoredConsoleTarget.d.ts.map +1 -1
- package/lib/cjs/targets/ColoredConsoleTarget.js +21 -12
- package/lib/cjs/targets/ColoredConsoleTarget.js.map +1 -1
- package/lib/cjs/targets/FileTarget.d.ts +96 -20
- package/lib/cjs/targets/FileTarget.d.ts.map +1 -1
- package/lib/cjs/targets/FileTarget.js +188 -225
- package/lib/cjs/targets/FileTarget.js.map +1 -1
- package/lib/cjs/targets/JsonFileTarget.d.ts +19 -0
- package/lib/cjs/targets/JsonFileTarget.d.ts.map +1 -0
- package/lib/cjs/targets/JsonFileTarget.js +44 -0
- package/lib/cjs/targets/JsonFileTarget.js.map +1 -0
- package/lib/cjs/targets/JsonTarget.d.ts +27 -0
- package/lib/cjs/targets/JsonTarget.d.ts.map +1 -0
- package/lib/cjs/targets/JsonTarget.js +46 -0
- package/lib/cjs/targets/JsonTarget.js.map +1 -0
- package/lib/cjs/targets/MemoryTarget.d.ts +33 -0
- package/lib/cjs/targets/MemoryTarget.d.ts.map +1 -0
- package/lib/cjs/targets/MemoryTarget.js +63 -0
- package/lib/cjs/targets/MemoryTarget.js.map +1 -0
- package/lib/cjs/targets/index.d.ts +7 -0
- package/lib/cjs/targets/index.d.ts.map +1 -1
- package/lib/cjs/targets/index.js +7 -0
- package/lib/cjs/targets/index.js.map +1 -1
- package/lib/cjs/targets/wrappers/AutoFlushTarget.d.ts +37 -0
- package/lib/cjs/targets/wrappers/AutoFlushTarget.d.ts.map +1 -0
- package/lib/cjs/targets/wrappers/AutoFlushTarget.js +48 -0
- package/lib/cjs/targets/wrappers/AutoFlushTarget.js.map +1 -0
- package/lib/cjs/targets/wrappers/FallbackGroupTarget.d.ts +45 -0
- package/lib/cjs/targets/wrappers/FallbackGroupTarget.d.ts.map +1 -0
- package/lib/cjs/targets/wrappers/FallbackGroupTarget.js +94 -0
- package/lib/cjs/targets/wrappers/FallbackGroupTarget.js.map +1 -0
- package/lib/cjs/targets/wrappers/RetryingTarget.d.ts +44 -0
- package/lib/cjs/targets/wrappers/RetryingTarget.d.ts.map +1 -0
- package/lib/cjs/targets/wrappers/RetryingTarget.js +61 -0
- package/lib/cjs/targets/wrappers/RetryingTarget.js.map +1 -0
- package/lib/cjs/targets/wrappers/SplitGroupTarget.d.ts +30 -0
- package/lib/cjs/targets/wrappers/SplitGroupTarget.d.ts.map +1 -0
- package/lib/cjs/targets/wrappers/SplitGroupTarget.js +52 -0
- package/lib/cjs/targets/wrappers/SplitGroupTarget.js.map +1 -0
- package/lib/cjs/traceparent.d.ts +63 -0
- package/lib/cjs/traceparent.d.ts.map +1 -0
- package/lib/cjs/traceparent.js +107 -0
- package/lib/cjs/traceparent.js.map +1 -0
- package/lib/mjs/archive/LogArchiveService.d.ts +75 -0
- package/lib/mjs/archive/LogArchiveService.d.ts.map +1 -0
- package/lib/mjs/archive/LogArchiveService.js +186 -0
- package/lib/mjs/archive/LogArchiveService.js.map +1 -0
- package/lib/mjs/archive/archive-strategy.d.ts +32 -0
- package/lib/mjs/archive/archive-strategy.d.ts.map +1 -0
- package/lib/mjs/archive/archive-strategy.js +39 -0
- package/lib/mjs/archive/archive-strategy.js.map +1 -0
- package/lib/mjs/archive/context.d.ts +50 -0
- package/lib/mjs/archive/context.d.ts.map +1 -0
- package/lib/mjs/archive/context.js +2 -0
- package/lib/mjs/archive/context.js.map +1 -0
- package/lib/mjs/archive/index.d.ts +10 -0
- package/lib/mjs/archive/index.d.ts.map +1 -0
- package/lib/mjs/archive/index.js +10 -0
- package/lib/mjs/archive/index.js.map +1 -0
- package/lib/mjs/archive/retention-strategy.d.ts +26 -0
- package/lib/mjs/archive/retention-strategy.d.ts.map +1 -0
- package/lib/mjs/archive/retention-strategy.js +38 -0
- package/lib/mjs/archive/retention-strategy.js.map +1 -0
- package/lib/mjs/archive/strategies/AgeLogRetentionStrategy.d.ts +10 -0
- package/lib/mjs/archive/strategies/AgeLogRetentionStrategy.d.ts.map +1 -0
- package/lib/mjs/archive/strategies/AgeLogRetentionStrategy.js +43 -0
- package/lib/mjs/archive/strategies/AgeLogRetentionStrategy.js.map +1 -0
- package/lib/mjs/archive/strategies/CountLogRetentionStrategy.d.ts +10 -0
- package/lib/mjs/archive/strategies/CountLogRetentionStrategy.d.ts.map +1 -0
- package/lib/mjs/archive/strategies/CountLogRetentionStrategy.js +39 -0
- package/lib/mjs/archive/strategies/CountLogRetentionStrategy.js.map +1 -0
- package/lib/mjs/archive/strategies/CronLogArchiveStrategy.d.ts +15 -0
- package/lib/mjs/archive/strategies/CronLogArchiveStrategy.d.ts.map +1 -0
- package/lib/mjs/archive/strategies/CronLogArchiveStrategy.js +49 -0
- package/lib/mjs/archive/strategies/CronLogArchiveStrategy.js.map +1 -0
- package/lib/mjs/archive/strategies/SizeLogArchiveStrategy.d.ts +18 -0
- package/lib/mjs/archive/strategies/SizeLogArchiveStrategy.d.ts.map +1 -0
- package/lib/mjs/archive/strategies/SizeLogArchiveStrategy.js +60 -0
- package/lib/mjs/archive/strategies/SizeLogArchiveStrategy.js.map +1 -0
- package/lib/mjs/archive/strategies/util.d.ts +28 -0
- package/lib/mjs/archive/strategies/util.d.ts.map +1 -0
- package/lib/mjs/archive/strategies/util.js +54 -0
- package/lib/mjs/archive/strategies/util.js.map +1 -0
- package/lib/mjs/bootstrap.d.ts.map +1 -1
- package/lib/mjs/bootstrap.js +25 -2
- package/lib/mjs/bootstrap.js.map +1 -1
- package/lib/mjs/callsite.d.ts +26 -0
- package/lib/mjs/callsite.d.ts.map +1 -0
- package/lib/mjs/callsite.js +57 -0
- package/lib/mjs/callsite.js.map +1 -0
- package/lib/mjs/config/log.d.ts +96 -0
- package/lib/mjs/config/log.d.ts.map +1 -0
- package/lib/mjs/config/log.js +72 -0
- package/lib/mjs/config/log.js.map +1 -0
- package/lib/mjs/context.browser.d.ts +46 -0
- package/lib/mjs/context.browser.d.ts.map +1 -0
- package/lib/mjs/context.browser.js +81 -0
- package/lib/mjs/context.browser.js.map +1 -0
- package/lib/mjs/context.d.ts +61 -0
- package/lib/mjs/context.d.ts.map +1 -0
- package/lib/mjs/context.js +88 -0
- package/lib/mjs/context.js.map +1 -0
- package/lib/mjs/filters/LevelFilter.d.ts +24 -0
- package/lib/mjs/filters/LevelFilter.d.ts.map +1 -0
- package/lib/mjs/filters/LevelFilter.js +36 -0
- package/lib/mjs/filters/LevelFilter.js.map +1 -0
- package/lib/mjs/filters/MatchFilter.d.ts +30 -0
- package/lib/mjs/filters/MatchFilter.d.ts.map +1 -0
- package/lib/mjs/filters/MatchFilter.js +62 -0
- package/lib/mjs/filters/MatchFilter.js.map +1 -0
- package/lib/mjs/filters/RateLimitFilter.d.ts +37 -0
- package/lib/mjs/filters/RateLimitFilter.d.ts.map +1 -0
- package/lib/mjs/filters/RateLimitFilter.js +67 -0
- package/lib/mjs/filters/RateLimitFilter.js.map +1 -0
- package/lib/mjs/filters/index.d.ts +4 -0
- package/lib/mjs/filters/index.d.ts.map +1 -0
- package/lib/mjs/filters/index.js +4 -0
- package/lib/mjs/filters/index.js.map +1 -0
- package/lib/mjs/index.browser.d.ts +14 -0
- package/lib/mjs/index.browser.d.ts.map +1 -0
- package/lib/mjs/index.browser.js +30 -0
- package/lib/mjs/index.browser.js.map +1 -0
- package/lib/mjs/index.d.ts +8 -0
- package/lib/mjs/index.d.ts.map +1 -1
- package/lib/mjs/index.js +8 -0
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/log.d.ts +60 -1
- package/lib/mjs/log.d.ts.map +1 -1
- package/lib/mjs/log.js +295 -33
- package/lib/mjs/log.js.map +1 -1
- package/lib/mjs/perf/LogMetricSink.d.ts +55 -0
- package/lib/mjs/perf/LogMetricSink.d.ts.map +1 -0
- package/lib/mjs/perf/LogMetricSink.js +151 -0
- package/lib/mjs/perf/LogMetricSink.js.map +1 -0
- package/lib/mjs/perf/measure.d.ts +9 -0
- package/lib/mjs/perf/measure.d.ts.map +1 -0
- package/lib/mjs/perf/measure.js +18 -0
- package/lib/mjs/perf/measure.js.map +1 -0
- package/lib/mjs/perf.d.ts +9 -0
- package/lib/mjs/perf.d.ts.map +1 -0
- package/lib/mjs/perf.js +15 -0
- package/lib/mjs/perf.js.map +1 -0
- package/lib/mjs/schemas/log.configuration.d.ts +151 -18
- package/lib/mjs/schemas/log.configuration.d.ts.map +1 -1
- package/lib/mjs/schemas/log.configuration.js +154 -21
- package/lib/mjs/schemas/log.configuration.js.map +1 -1
- package/lib/mjs/targets/BrowserConsoleTarget.d.ts +48 -0
- package/lib/mjs/targets/BrowserConsoleTarget.d.ts.map +1 -0
- package/lib/mjs/targets/BrowserConsoleTarget.js +45 -0
- package/lib/mjs/targets/BrowserConsoleTarget.js.map +1 -0
- package/lib/mjs/targets/ColoredConsoleTarget.d.ts.map +1 -1
- package/lib/mjs/targets/ColoredConsoleTarget.js +21 -9
- package/lib/mjs/targets/ColoredConsoleTarget.js.map +1 -1
- package/lib/mjs/targets/FileTarget.d.ts +96 -20
- package/lib/mjs/targets/FileTarget.d.ts.map +1 -1
- package/lib/mjs/targets/FileTarget.js +191 -192
- package/lib/mjs/targets/FileTarget.js.map +1 -1
- package/lib/mjs/targets/JsonFileTarget.d.ts +19 -0
- package/lib/mjs/targets/JsonFileTarget.d.ts.map +1 -0
- package/lib/mjs/targets/JsonFileTarget.js +41 -0
- package/lib/mjs/targets/JsonFileTarget.js.map +1 -0
- package/lib/mjs/targets/JsonTarget.d.ts +27 -0
- package/lib/mjs/targets/JsonTarget.d.ts.map +1 -0
- package/lib/mjs/targets/JsonTarget.js +43 -0
- package/lib/mjs/targets/JsonTarget.js.map +1 -0
- package/lib/mjs/targets/MemoryTarget.d.ts +33 -0
- package/lib/mjs/targets/MemoryTarget.d.ts.map +1 -0
- package/lib/mjs/targets/MemoryTarget.js +60 -0
- package/lib/mjs/targets/MemoryTarget.js.map +1 -0
- package/lib/mjs/targets/index.d.ts +7 -0
- package/lib/mjs/targets/index.d.ts.map +1 -1
- package/lib/mjs/targets/index.js +7 -0
- package/lib/mjs/targets/index.js.map +1 -1
- package/lib/mjs/targets/wrappers/AutoFlushTarget.d.ts +37 -0
- package/lib/mjs/targets/wrappers/AutoFlushTarget.d.ts.map +1 -0
- package/lib/mjs/targets/wrappers/AutoFlushTarget.js +45 -0
- package/lib/mjs/targets/wrappers/AutoFlushTarget.js.map +1 -0
- package/lib/mjs/targets/wrappers/FallbackGroupTarget.d.ts +45 -0
- package/lib/mjs/targets/wrappers/FallbackGroupTarget.d.ts.map +1 -0
- package/lib/mjs/targets/wrappers/FallbackGroupTarget.js +91 -0
- package/lib/mjs/targets/wrappers/FallbackGroupTarget.js.map +1 -0
- package/lib/mjs/targets/wrappers/RetryingTarget.d.ts +44 -0
- package/lib/mjs/targets/wrappers/RetryingTarget.d.ts.map +1 -0
- package/lib/mjs/targets/wrappers/RetryingTarget.js +58 -0
- package/lib/mjs/targets/wrappers/RetryingTarget.js.map +1 -0
- package/lib/mjs/targets/wrappers/SplitGroupTarget.d.ts +30 -0
- package/lib/mjs/targets/wrappers/SplitGroupTarget.d.ts.map +1 -0
- package/lib/mjs/targets/wrappers/SplitGroupTarget.js +49 -0
- package/lib/mjs/targets/wrappers/SplitGroupTarget.js.map +1 -0
- package/lib/mjs/traceparent.d.ts +63 -0
- package/lib/mjs/traceparent.d.ts.map +1 -0
- package/lib/mjs/traceparent.js +100 -0
- package/lib/mjs/traceparent.js.map +1 -0
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +26 -15
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { LogFilter } from "@spinajs/log-common";
|
|
11
|
+
import { Injectable, NewInstance } from "@spinajs/di";
|
|
12
|
+
/**
|
|
13
|
+
* Regex keep/drop filter. Builds a RegExp from `pattern`/`flags` and tests it
|
|
14
|
+
* against `String(entry.Variables[field])` ( field defaults to "message" ).
|
|
15
|
+
* In "keep" mode the entry is kept only on a match; in "drop" mode it is
|
|
16
|
+
* dropped on a match. An invalid pattern degrades to a no-op ( pass-through )
|
|
17
|
+
* and warns ONCE so a bad config never silently swallows or drops everything.
|
|
18
|
+
*/
|
|
19
|
+
let MatchFilter = class MatchFilter extends LogFilter {
|
|
20
|
+
constructor(options) {
|
|
21
|
+
super(options);
|
|
22
|
+
this.regex = null;
|
|
23
|
+
this.warned = false;
|
|
24
|
+
this.field = options?.field ?? "message";
|
|
25
|
+
this.mode = options?.mode ?? "keep";
|
|
26
|
+
try {
|
|
27
|
+
if (options?.pattern === undefined) {
|
|
28
|
+
throw new Error("MatchFilter requires a `pattern` option");
|
|
29
|
+
}
|
|
30
|
+
// eslint-disable-next-line security/detect-non-literal-regexp
|
|
31
|
+
this.regex = new RegExp(options.pattern, options.flags);
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
this.regex = null;
|
|
35
|
+
// no-op on bad config; warn once to the raw console ( never re-enter the
|
|
36
|
+
// logger pipeline ) so a broken filter is visible but harmless.
|
|
37
|
+
// eslint-disable-next-line no-console
|
|
38
|
+
console.warn(`MatchFilter: invalid pattern "${options?.pattern}" - filter disabled ( no-op ). ${err.message}`);
|
|
39
|
+
this.warned = true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
apply(entry) {
|
|
43
|
+
// invalid / missing pattern => no-op pass-through
|
|
44
|
+
if (!this.regex) {
|
|
45
|
+
return entry;
|
|
46
|
+
}
|
|
47
|
+
const value = String(entry.Variables[this.field]);
|
|
48
|
+
const matched = this.regex.test(value);
|
|
49
|
+
if (this.mode === "drop") {
|
|
50
|
+
return matched ? null : entry;
|
|
51
|
+
}
|
|
52
|
+
// keep mode
|
|
53
|
+
return matched ? entry : null;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
MatchFilter = __decorate([
|
|
57
|
+
Injectable("MatchFilter"),
|
|
58
|
+
NewInstance(),
|
|
59
|
+
__metadata("design:paramtypes", [Object])
|
|
60
|
+
], MatchFilter);
|
|
61
|
+
export { MatchFilter };
|
|
62
|
+
//# sourceMappingURL=MatchFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MatchFilter.js","sourceRoot":"","sources":["../../../src/filters/MatchFilter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAgC,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAgBtD;;;;;;GAMG;AAGI,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,SAAS;IAMxC,YAAY,OAA6B;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QANP,UAAK,GAAkB,IAAI,CAAC;QAG5B,WAAM,GAAG,KAAK,CAAC;QAIvB,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,SAAS,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC;QAEpC,IAAI,CAAC;YACH,IAAI,OAAO,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,CAAC;YACD,8DAA8D;YAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,yEAAyE;YACzE,gEAAgE;YAChE,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,iCAAiC,OAAO,EAAE,OAAO,kCAAmC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1H,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,KAAgB;QAC3B,kDAAkD;QAClD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAChC,CAAC;QACD,YAAY;QACZ,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAChC,CAAC;CACF,CAAA;AA1CY,WAAW;IAFvB,UAAU,CAAC,aAAa,CAAC;IACzB,WAAW,EAAE;;GACD,WAAW,CA0CvB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ILogEntry, ILogFilterOptions, LogFilter } from "@spinajs/log-common";
|
|
2
|
+
/**
|
|
3
|
+
* Options for {@link RateLimitFilter}.
|
|
4
|
+
*/
|
|
5
|
+
export interface IRateLimitFilterOptions extends ILogFilterOptions {
|
|
6
|
+
/** Max entries kept per window. Required. */
|
|
7
|
+
limit: number;
|
|
8
|
+
/** Fixed window length in SECONDS. Required. */
|
|
9
|
+
intervalSeconds: number;
|
|
10
|
+
/** Variable field used to bucket the limit ( eg. per-logger ). Global if unset. */
|
|
11
|
+
key?: string;
|
|
12
|
+
}
|
|
13
|
+
interface IWindowRecord {
|
|
14
|
+
count: number;
|
|
15
|
+
windowStart: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Fixed-window rate limiter. Keeps at most `limit` entries per `intervalSeconds`
|
|
19
|
+
* window, bucketed by `entry.Variables[key]` when `key` is given ( else a single
|
|
20
|
+
* global bucket ). Overflow entries within a window are DROPPED; the counter
|
|
21
|
+
* resets when the window elapses. The bucket map is self-pruning ( stale windows
|
|
22
|
+
* dropped on access ) so memory stays bounded. Clock is injectable for tests.
|
|
23
|
+
*/
|
|
24
|
+
export declare class RateLimitFilter extends LogFilter {
|
|
25
|
+
protected now: () => number;
|
|
26
|
+
protected limit: number;
|
|
27
|
+
protected intervalMs: number;
|
|
28
|
+
protected keyField?: string;
|
|
29
|
+
protected windows: Map<string, IWindowRecord>;
|
|
30
|
+
constructor(options?: IRateLimitFilterOptions, now?: () => number);
|
|
31
|
+
protected keyOf(entry: ILogEntry): string;
|
|
32
|
+
apply(entry: ILogEntry): ILogEntry | null;
|
|
33
|
+
/** Drops windows whose interval has fully elapsed so the map stays bounded. */
|
|
34
|
+
protected prune(now: number): void;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=RateLimitFilter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RateLimitFilter.d.ts","sourceRoot":"","sources":["../../../src/filters/RateLimitFilter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAG9E;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAID;;;;;;GAMG;AACH,qBAEa,eAAgB,SAAQ,SAAS;IAMG,SAAS,CAAC,GAAG,EAAE,MAAM,MAAM;IAL1E,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAa;gBAE9C,OAAO,CAAC,EAAE,uBAAuB,EAAY,GAAG,GAAE,MAAM,MAAyB;IAO7F,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAOlC,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI;IAqBhD,+EAA+E;IAC/E,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAOnC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { LogFilter } from "@spinajs/log-common";
|
|
11
|
+
import { Injectable, NewInstance } from "@spinajs/di";
|
|
12
|
+
const GLOBAL_KEY = "__global__";
|
|
13
|
+
/**
|
|
14
|
+
* Fixed-window rate limiter. Keeps at most `limit` entries per `intervalSeconds`
|
|
15
|
+
* window, bucketed by `entry.Variables[key]` when `key` is given ( else a single
|
|
16
|
+
* global bucket ). Overflow entries within a window are DROPPED; the counter
|
|
17
|
+
* resets when the window elapses. The bucket map is self-pruning ( stale windows
|
|
18
|
+
* dropped on access ) so memory stays bounded. Clock is injectable for tests.
|
|
19
|
+
*/
|
|
20
|
+
let RateLimitFilter = class RateLimitFilter extends LogFilter {
|
|
21
|
+
constructor(options, now = () => Date.now()) {
|
|
22
|
+
super(options);
|
|
23
|
+
this.now = now;
|
|
24
|
+
this.windows = new Map();
|
|
25
|
+
this.limit = options?.limit ?? 0;
|
|
26
|
+
this.intervalMs = (options?.intervalSeconds ?? 0) * 1000;
|
|
27
|
+
this.keyField = options?.key;
|
|
28
|
+
}
|
|
29
|
+
keyOf(entry) {
|
|
30
|
+
if (!this.keyField) {
|
|
31
|
+
return GLOBAL_KEY;
|
|
32
|
+
}
|
|
33
|
+
return String(entry.Variables[this.keyField]);
|
|
34
|
+
}
|
|
35
|
+
apply(entry) {
|
|
36
|
+
const now = this.now();
|
|
37
|
+
const key = this.keyOf(entry);
|
|
38
|
+
const record = this.windows.get(key);
|
|
39
|
+
if (!record || now - record.windowStart >= this.intervalMs) {
|
|
40
|
+
// fresh window - start counting from this entry
|
|
41
|
+
this.windows.set(key, { count: 1, windowStart: now });
|
|
42
|
+
this.prune(now);
|
|
43
|
+
return entry;
|
|
44
|
+
}
|
|
45
|
+
if (record.count < this.limit) {
|
|
46
|
+
record.count++;
|
|
47
|
+
return entry;
|
|
48
|
+
}
|
|
49
|
+
// window full - drop
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
/** Drops windows whose interval has fully elapsed so the map stays bounded. */
|
|
53
|
+
prune(now) {
|
|
54
|
+
for (const [k, r] of this.windows) {
|
|
55
|
+
if (now - r.windowStart >= this.intervalMs) {
|
|
56
|
+
this.windows.delete(k);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
RateLimitFilter = __decorate([
|
|
62
|
+
Injectable("RateLimitFilter"),
|
|
63
|
+
NewInstance(),
|
|
64
|
+
__metadata("design:paramtypes", [Object, Function])
|
|
65
|
+
], RateLimitFilter);
|
|
66
|
+
export { RateLimitFilter };
|
|
67
|
+
//# sourceMappingURL=RateLimitFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RateLimitFilter.js","sourceRoot":"","sources":["../../../src/filters/RateLimitFilter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAgC,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAmBtD,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC;;;;;;GAMG;AAGI,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,SAAS;IAM5C,YAAY,OAAiC,EAAY,MAAoB,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAC3F,KAAK,CAAC,OAAO,CAAC,CAAC;QADwC,QAAG,GAAH,GAAG,CAAiC;QAFnF,YAAO,GAA+B,IAAI,GAAG,EAAE,CAAC;QAIxD,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,eAAe,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACzD,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,GAAG,CAAC;IAC/B,CAAC;IAES,KAAK,CAAC,KAAgB;QAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,KAAgB;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3D,gDAAgD;YAChD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QAED,qBAAqB;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+EAA+E;IACrE,KAAK,CAAC,GAAW;QACzB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,GAAG,GAAG,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC3C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA;AAjDY,eAAe;IAF3B,UAAU,CAAC,iBAAiB,CAAC;IAC7B,WAAW,EAAE;;GACD,eAAe,CAiD3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filters/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/filters/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from "@spinajs/log-common";
|
|
2
|
+
export * from "./targets/BlackHoleTarget.js";
|
|
3
|
+
export * from "./targets/BrowserConsoleTarget.js";
|
|
4
|
+
export * from "./targets/JsonTarget.js";
|
|
5
|
+
export * from "./targets/MemoryTarget.js";
|
|
6
|
+
export * from "./targets/wrappers/SplitGroupTarget.js";
|
|
7
|
+
export * from "./targets/wrappers/AutoFlushTarget.js";
|
|
8
|
+
export * from "./targets/wrappers/RetryingTarget.js";
|
|
9
|
+
export * from "./targets/wrappers/FallbackGroupTarget.js";
|
|
10
|
+
export * from "./filters/index.js";
|
|
11
|
+
export * from "./log.js";
|
|
12
|
+
export * from "./context.browser.js";
|
|
13
|
+
export * from "./traceparent.js";
|
|
14
|
+
//# sourceMappingURL=index.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":"AAcA,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser entry ( "browser" exports condition ).
|
|
3
|
+
*
|
|
4
|
+
* Reuses the platform-free FrameworkLogger + DI factory registrations from
|
|
5
|
+
* log.js verbatim; swaps ColoredConsoleTarget ( chalk ) for BrowserConsoleTarget
|
|
6
|
+
* and omits FileTarget ( fs/zlib/stream ) and bootstrap.js ( process handlers ).
|
|
7
|
+
*
|
|
8
|
+
* Importing this module transitively imports @spinajs/configuration, which on
|
|
9
|
+
* the browser condition registers BrowserFrameworkConfiguration — so a single
|
|
10
|
+
* side-effect `import "@spinajs/log"` wires both log and configuration.
|
|
11
|
+
*/
|
|
12
|
+
import { setLogContextProvider } from "@spinajs/log-common";
|
|
13
|
+
import { LogContext, scalarContext } from "./context.browser.js";
|
|
14
|
+
export * from "@spinajs/log-common";
|
|
15
|
+
export * from "./targets/BlackHoleTarget.js";
|
|
16
|
+
export * from "./targets/BrowserConsoleTarget.js";
|
|
17
|
+
export * from "./targets/JsonTarget.js";
|
|
18
|
+
export * from "./targets/MemoryTarget.js";
|
|
19
|
+
export * from "./targets/wrappers/SplitGroupTarget.js";
|
|
20
|
+
export * from "./targets/wrappers/AutoFlushTarget.js";
|
|
21
|
+
export * from "./targets/wrappers/RetryingTarget.js";
|
|
22
|
+
export * from "./targets/wrappers/FallbackGroupTarget.js";
|
|
23
|
+
export * from "./filters/index.js";
|
|
24
|
+
export * from "./log.js";
|
|
25
|
+
export * from "./context.browser.js";
|
|
26
|
+
export * from "./traceparent.js";
|
|
27
|
+
// The browser build has no Bootstrapper flow wiring the seam, so register the
|
|
28
|
+
// synchronous fallback provider as an import side-effect.
|
|
29
|
+
setLogContextProvider(() => scalarContext(LogContext.active()));
|
|
30
|
+
//# sourceMappingURL=index.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEjE,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AAEjC,8EAA8E;AAC9E,0DAA0D;AAC1D,qBAAqB,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC"}
|
package/lib/mjs/index.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
export * from "@spinajs/log-common";
|
|
2
2
|
export * from "./targets/index.js";
|
|
3
|
+
export * from "./filters/index.js";
|
|
4
|
+
export * from "./archive/index.js";
|
|
3
5
|
export * from "./log.js";
|
|
6
|
+
export * from "./callsite.js";
|
|
4
7
|
export * from "./bootstrap.js";
|
|
8
|
+
export * from "./context.js";
|
|
9
|
+
export * from "./perf.js";
|
|
10
|
+
export * from "./perf/LogMetricSink.js";
|
|
11
|
+
export * from "./perf/measure.js";
|
|
12
|
+
export * from "./traceparent.js";
|
|
5
13
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/mjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
package/lib/mjs/index.js
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
export * from "@spinajs/log-common";
|
|
2
2
|
export * from "./targets/index.js";
|
|
3
|
+
export * from "./filters/index.js";
|
|
4
|
+
export * from "./archive/index.js";
|
|
3
5
|
export * from "./log.js";
|
|
6
|
+
export * from "./callsite.js";
|
|
4
7
|
export * from "./bootstrap.js";
|
|
8
|
+
export * from "./context.js";
|
|
9
|
+
export * from "./perf.js";
|
|
10
|
+
export * from "./perf/LogMetricSink.js";
|
|
11
|
+
export * from "./perf/measure.js";
|
|
12
|
+
export * from "./traceparent.js";
|
|
5
13
|
//# sourceMappingURL=index.js.map
|
package/lib/mjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
package/lib/mjs/log.d.ts
CHANGED
|
@@ -1,30 +1,89 @@
|
|
|
1
|
-
import { ILogEntry, Log } from "@spinajs/log-common";
|
|
1
|
+
import { ICommonTargetOptions, LogLevel, ILogEntry, StrToLogLevel, ILogRule, ITargetsOption, LogTarget, Log, LogFilter, ILogFilterOptions, ILogTargetDesc } from "@spinajs/log-common";
|
|
2
2
|
/**
|
|
3
3
|
* Default log implementation interface. Taken from bunyan. Feel free to implement own.
|
|
4
4
|
*/
|
|
5
5
|
export declare class FrameworkLogger extends Log {
|
|
6
6
|
Name: string;
|
|
7
7
|
protected Parent?: Log | undefined;
|
|
8
|
+
protected Filters: LogFilter[];
|
|
9
|
+
CaptureCallsite: boolean;
|
|
8
10
|
constructor(Name: string, variables?: Record<string, unknown>, Parent?: Log | undefined);
|
|
9
11
|
resolve(): void;
|
|
10
12
|
trace(message: string, ...args: any[]): void;
|
|
11
13
|
trace(err: Error, message: string, ...args: any[]): void;
|
|
14
|
+
trace(fields: object, message?: string, ...args: any[]): void;
|
|
12
15
|
debug(message: string, ...args: any[]): void;
|
|
13
16
|
debug(err: Error, message: string, ...args: any[]): void;
|
|
17
|
+
debug(fields: object, message?: string, ...args: any[]): void;
|
|
14
18
|
info(message: string, ...args: any[]): void;
|
|
15
19
|
info(err: Error, message: string, ...args: any[]): void;
|
|
20
|
+
info(fields: object, message?: string, ...args: any[]): void;
|
|
16
21
|
warn(message: string, ...args: any[]): void;
|
|
17
22
|
warn(err: Error, message: string, ...args: any[]): void;
|
|
23
|
+
warn(fields: object, message?: string, ...args: any[]): void;
|
|
18
24
|
error(message: string, ...args: any[]): void;
|
|
19
25
|
error(err: Error, message: string, ...args: any[]): void;
|
|
26
|
+
error(fields: object, message?: string, ...args: any[]): void;
|
|
20
27
|
fatal(message: string, ...args: any[]): void;
|
|
21
28
|
fatal(err: Error, message: string, ...args: any[]): void;
|
|
29
|
+
fatal(fields: object, message?: string, ...args: any[]): void;
|
|
22
30
|
security(message: string, ...args: any[]): void;
|
|
23
31
|
security(err: Error, message: string, ...args: any[]): void;
|
|
32
|
+
security(fields: object, message?: string, ...args: any[]): void;
|
|
24
33
|
success(message: string, ...args: any[]): void;
|
|
25
34
|
success(err: Error, message: string, ...args: any[]): void;
|
|
35
|
+
success(fields: object, message?: string, ...args: any[]): void;
|
|
26
36
|
write(entry: ILogEntry): Promise<PromiseSettledResult<void>[]>;
|
|
27
37
|
protected resolveLogTargets(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Build one {@link ILogTargetDesc } from a target definition, its level
|
|
40
|
+
* WINDOWS and a representative rule. Shared by config-time
|
|
41
|
+
* {@link resolveLogTargets } and the runtime {@link addTarget } so both
|
|
42
|
+
* resolve the target instance and its per-target filters the SAME way:
|
|
43
|
+
* the target class is resolved by its DI string `type`, and each per-target
|
|
44
|
+
* filter spec is resolved by its DI string `type` ( @NewInstance => per-use
|
|
45
|
+
* state ).
|
|
46
|
+
*/
|
|
47
|
+
protected buildTargetDesc(def: ITargetsOption, ranges: {
|
|
48
|
+
min: LogLevel;
|
|
49
|
+
max: LogLevel;
|
|
50
|
+
}[], rule: ILogRule): ILogTargetDesc;
|
|
51
|
+
/**
|
|
52
|
+
* Recompute the two cheap gates that {@link write } / the per-method
|
|
53
|
+
* isEnabled() guard rely on, so they stay correct after the target set
|
|
54
|
+
* changes at runtime ( {@link addTarget } / {@link removeTarget } ):
|
|
55
|
+
* - MinLevel = lowest `min` across all attached targets' windows ( floor
|
|
56
|
+
* Trace when there are none ), so a call below it is short-circuited.
|
|
57
|
+
* - CaptureCallsite = true iff some attached target's layout references
|
|
58
|
+
* ${callsite}, gating the caller-frame capture in wrapWrite.
|
|
59
|
+
*/
|
|
60
|
+
protected recomputeGates(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Attach a sink to THIS logger AT RUNTIME, without touching config. Resolves
|
|
63
|
+
* the target ( and its per-target filters ) exactly as config-time routing
|
|
64
|
+
* does, then recomputes the MinLevel / ${callsite} gates so dispatch stays
|
|
65
|
+
* correct. Returns the resolved instance, or `undefined` when nothing was
|
|
66
|
+
* attached ( `def.enabled === false` ).
|
|
67
|
+
*
|
|
68
|
+
* A level WINDOW `[opts.level ?? "trace", opts.maxLevel ?? security]` is
|
|
69
|
+
* applied ( same semantics as a routing rule's window ). Adding a target
|
|
70
|
+
* whose name already exists REPLACES the existing descriptor(s) ( the old
|
|
71
|
+
* instance is flushed first ) so a name is never duplicated.
|
|
72
|
+
*
|
|
73
|
+
* `opts.filters` are APPENDED to any `def.filters` ( def first, opts last ).
|
|
74
|
+
*/
|
|
75
|
+
addTarget(def: ITargetsOption, opts?: {
|
|
76
|
+
level?: keyof typeof StrToLogLevel;
|
|
77
|
+
maxLevel?: keyof typeof StrToLogLevel;
|
|
78
|
+
filters?: ILogFilterOptions[];
|
|
79
|
+
}): LogTarget<ICommonTargetOptions> | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Detach a runtime sink by its target `name`. Each matching descriptor's
|
|
82
|
+
* instance is force-flushed ( to drain buffered entries ) BEFORE removal - it
|
|
83
|
+
* is NOT disposed, since the instance may be shared / DI-owned. Recomputes the
|
|
84
|
+
* gates afterwards. No-op when no target with that name is attached.
|
|
85
|
+
*/
|
|
86
|
+
removeTarget(name: string): Promise<void>;
|
|
28
87
|
protected matchRulesToLogger(): void;
|
|
29
88
|
}
|
|
30
89
|
//# sourceMappingURL=log.d.ts.map
|
package/lib/mjs/log.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":"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"}
|