functype-log 1.2.1 → 1.3.0
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 +68 -0
- package/dist/ConsoleLogger-DA6_SLWt.d.ts +32 -0
- package/dist/{DirectLogger-J-MZFwsP.d.ts → DirectLogger-DD-W9b5Z.d.ts} +2 -2
- package/dist/{DirectTestLogger-CEA3uxf8.d.ts → DirectTestLogger-_mZeya1X.d.ts} +2 -2
- package/dist/{LoggerLayer-Q-W1mssb.d.ts → LoggerLayer-CbTtwJZw.d.ts} +2 -2
- package/dist/adapter/LogLayerAdapter.js.map +1 -1
- package/dist/direct/DirectLogger.d.ts +1 -1
- package/dist/direct/DirectLogger.js.map +1 -1
- package/dist/direct/DirectTestLogger.d.ts +1 -1
- package/dist/direct/DirectTestLogger.js.map +1 -1
- package/dist/direct/index.d.ts +2 -2
- package/dist/index.d.ts +4 -4
- package/dist/layers/ConsoleLogger.d.ts +1 -1
- package/dist/layers/ConsoleLogger.js +1 -1
- package/dist/layers/ConsoleLogger.js.map +1 -1
- package/dist/layers/LoggerLayer.d.ts +1 -1
- package/dist/layers/index.d.ts +2 -2
- package/dist/middleware/LogMiddleware.js.map +1 -1
- package/dist/testing/TestLogger.js.map +1 -1
- package/package.json +3 -3
- package/dist/ConsoleLogger-D7C4ytKU.d.ts +0 -11
package/README.md
CHANGED
|
@@ -37,6 +37,45 @@ await program.provideLayer(LoggerLive.console()).runOrThrow()
|
|
|
37
37
|
await program.provideLayer(LoggerLive.console({ prefix: "[APP]" })).runOrThrow()
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
+
`ConsoleLoggerOptions` accepts `level`, `prefix`, `stream`, and `console`:
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
// Default — info/debug → stdout (console.info/console.debug),
|
|
44
|
+
// warn/error → stderr (console.warn/console.error). Matches loglayer's
|
|
45
|
+
// per-level routing and the convention of pino / winston / bunyan.
|
|
46
|
+
LoggerLive.console()
|
|
47
|
+
|
|
48
|
+
// Route ALL levels through stderr. Required when stdout is reserved as a
|
|
49
|
+
// data/protocol channel — e.g. MCP-over-stdio servers (stdout carries
|
|
50
|
+
// JSON-RPC; any other bytes corrupt the protocol), or CLI tools that emit
|
|
51
|
+
// structured output on stdout.
|
|
52
|
+
LoggerLive.console({ stream: "stderr" })
|
|
53
|
+
|
|
54
|
+
// Fully override the sink — file streams, structured collectors, in-memory
|
|
55
|
+
// capture for tests. Takes precedence over `stream`. Only the methods
|
|
56
|
+
// loglayer's ConsoleTransport calls need to be present
|
|
57
|
+
// (log / info / debug / trace / warn / error).
|
|
58
|
+
LoggerLive.console({
|
|
59
|
+
console: {
|
|
60
|
+
info: (...args) => myStream.write(format(args) + "\n"),
|
|
61
|
+
warn: (...args) => myStream.write(format(args) + "\n"),
|
|
62
|
+
error: (...args) => myStream.write(format(args) + "\n"),
|
|
63
|
+
debug: () => {},
|
|
64
|
+
trace: () => {},
|
|
65
|
+
log: (...args) => myStream.write(format(args) + "\n"),
|
|
66
|
+
},
|
|
67
|
+
})
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The same options propagate to `createDirectConsoleLogger`:
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
import { createDirectConsoleLogger } from "functype-log/direct"
|
|
74
|
+
|
|
75
|
+
const log = createDirectConsoleLogger({ stream: "stderr" }) // MCP-safe
|
|
76
|
+
log.info("connection established") // → stderr, not stdout
|
|
77
|
+
```
|
|
78
|
+
|
|
40
79
|
### Silent (testing/suppression)
|
|
41
80
|
|
|
42
81
|
```typescript
|
|
@@ -160,8 +199,37 @@ import { Logger } from "functype-log/logger" // types only
|
|
|
160
199
|
import { LoggerLive } from "functype-log/layers" // layer constructors
|
|
161
200
|
import { createTestLogger } from "functype-log/testing" // test utilities
|
|
162
201
|
import { withLogging } from "functype-log/middleware" // middleware
|
|
202
|
+
import { createDirectConsoleLogger } from "functype-log/direct" // sync/imperative API
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Interop with `functype`'s core `Logger` (1.3.0+)
|
|
206
|
+
|
|
207
|
+
The core `functype` package ships a minimal `Logger` interface at `functype` (and `functype/logger`) — 4 mandatory methods (`debug`/`info`/`warn`/`error`) returning `void`, designed as the shared shape for boot-diagnostic / observability hooks across the ecosystem (see `bootDiagnostics` in `functype-os/config`).
|
|
208
|
+
|
|
209
|
+
`DirectLogger` from `functype-log/direct` **structurally satisfies** that core `Logger` interface — its `debug`/`info`/`warn`/`error` methods are a superset of the core shape. You can pass a `DirectLogger` directly anywhere a core `Logger` is expected, with no adapter:
|
|
210
|
+
|
|
211
|
+
```typescript
|
|
212
|
+
import { createDirectConsoleLogger } from "functype-log/direct"
|
|
213
|
+
import type { Logger } from "functype"
|
|
214
|
+
|
|
215
|
+
const logger: Logger = createDirectConsoleLogger() // structural compat — no cast required
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
This means you can plug `functype-log` into `bootDiagnostics` (or any other functype-ecosystem hook taking a core `Logger`) without coupling the consumer package to LogLayer:
|
|
219
|
+
|
|
220
|
+
```typescript
|
|
221
|
+
import { bootDiagnostics, Layered, ProcessEnvSource } from "functype-os/config"
|
|
222
|
+
import { createDirectConsoleLogger } from "functype-log/direct"
|
|
223
|
+
|
|
224
|
+
bootDiagnostics({
|
|
225
|
+
source: Layered([ProcessEnvSource()]),
|
|
226
|
+
required: ["DATABASE_URL"],
|
|
227
|
+
logger: createDirectConsoleLogger(),
|
|
228
|
+
})
|
|
163
229
|
```
|
|
164
230
|
|
|
231
|
+
The IO-shaped `Logger` (this package's primary API) does NOT structurally satisfy the core `Logger` — its methods return `IO<never, never, void>` instead of `void`. For IO-aware code that needs to also drive boot diagnostics, derive a `DirectLogger` via `toDirectLogger(ioLogger)` and pass that.
|
|
232
|
+
|
|
165
233
|
## Requirements
|
|
166
234
|
|
|
167
235
|
- functype >= 0.55.0
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { i as Logger, n as LogLevel } from "./Logger-CGFuJPzn.js";
|
|
2
|
+
|
|
3
|
+
//#region src/layers/ConsoleLogger.d.ts
|
|
4
|
+
type ConsoleLoggerOptions = {
|
|
5
|
+
readonly level?: LogLevel;
|
|
6
|
+
readonly prefix?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Which standard stream console output is routed to.
|
|
9
|
+
*
|
|
10
|
+
* - `"stdout"` (default) — uses the global `console`. `info`/`debug` land
|
|
11
|
+
* on stdout; `warn`/`error`/`trace` land on stderr (loglayer's per-level
|
|
12
|
+
* routing). Matches the convention of every other Node logging library
|
|
13
|
+
* (pino, winston, bunyan).
|
|
14
|
+
* - `"stderr"` — routes ALL levels through `console.error` (stderr). Use
|
|
15
|
+
* when stdout is a reserved data/protocol channel — most notably
|
|
16
|
+
* MCP-over-stdio servers where stdout carries JSON-RPC and any other
|
|
17
|
+
* bytes corrupt the protocol.
|
|
18
|
+
*/
|
|
19
|
+
readonly stream?: "stdout" | "stderr";
|
|
20
|
+
/**
|
|
21
|
+
* Fully override the console sink. Takes precedence over `stream`. Use for
|
|
22
|
+
* routing to a file stream, structured collector, or other custom sink.
|
|
23
|
+
*
|
|
24
|
+
* Only the methods called by loglayer's `ConsoleTransport` need to be
|
|
25
|
+
* present (`log`/`info`/`debug`/`trace`/`warn`/`error`).
|
|
26
|
+
*/
|
|
27
|
+
readonly console?: Partial<Console>;
|
|
28
|
+
};
|
|
29
|
+
declare const createConsoleLogger: (options?: ConsoleLoggerOptions) => Logger;
|
|
30
|
+
//#endregion
|
|
31
|
+
export { createConsoleLogger as n, ConsoleLoggerOptions as t };
|
|
32
|
+
//# sourceMappingURL=ConsoleLogger-DA6_SLWt.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as Logger, r as LogMetadata } from "./Logger-CGFuJPzn.js";
|
|
2
|
-
import { t as ConsoleLoggerOptions } from "./ConsoleLogger-
|
|
2
|
+
import { t as ConsoleLoggerOptions } from "./ConsoleLogger-DA6_SLWt.js";
|
|
3
3
|
|
|
4
4
|
//#region src/direct/DirectLogger.d.ts
|
|
5
5
|
type DirectLogger = {
|
|
@@ -18,4 +18,4 @@ declare const createDirectConsoleLogger: (options?: ConsoleLoggerOptions) => Dir
|
|
|
18
18
|
declare const directSilentLogger: DirectLogger;
|
|
19
19
|
//#endregion
|
|
20
20
|
export { toDirectLogger as i, createDirectConsoleLogger as n, directSilentLogger as r, DirectLogger as t };
|
|
21
|
-
//# sourceMappingURL=DirectLogger-
|
|
21
|
+
//# sourceMappingURL=DirectLogger-DD-W9b5Z.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as LogLevel, t as LogEntry } from "./Logger-CGFuJPzn.js";
|
|
2
|
-
import { t as DirectLogger } from "./DirectLogger-
|
|
2
|
+
import { t as DirectLogger } from "./DirectLogger-DD-W9b5Z.js";
|
|
3
3
|
import { List } from "functype";
|
|
4
4
|
|
|
5
5
|
//#region src/direct/DirectTestLogger.d.ts
|
|
@@ -12,4 +12,4 @@ type DirectTestLoggerHandle = {
|
|
|
12
12
|
declare const createDirectTestLogger: () => DirectTestLoggerHandle;
|
|
13
13
|
//#endregion
|
|
14
14
|
export { createDirectTestLogger as n, DirectTestLoggerHandle as t };
|
|
15
|
-
//# sourceMappingURL=DirectTestLogger-
|
|
15
|
+
//# sourceMappingURL=DirectTestLogger-_mZeya1X.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as Logger } from "./Logger-CGFuJPzn.js";
|
|
2
|
-
import { t as ConsoleLoggerOptions } from "./ConsoleLogger-
|
|
2
|
+
import { t as ConsoleLoggerOptions } from "./ConsoleLogger-DA6_SLWt.js";
|
|
3
3
|
import { Layer } from "functype";
|
|
4
4
|
import { ILogLayer } from "loglayer";
|
|
5
5
|
|
|
@@ -11,4 +11,4 @@ declare const LoggerLive: {
|
|
|
11
11
|
};
|
|
12
12
|
//#endregion
|
|
13
13
|
export { LoggerLive as t };
|
|
14
|
-
//# sourceMappingURL=LoggerLayer-
|
|
14
|
+
//# sourceMappingURL=LoggerLayer-CbTtwJZw.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogLayerAdapter.js","names":[],"sources":["../../src/adapter/LogLayerAdapter.ts"],"sourcesContent":["import { IO } from \"functype\"\nimport type { ILogLayer } from \"loglayer\"\n\nimport type { Logger, LogLevel, LogMetadata } from \"../logger/Logger\"\n\nconst makeMethod =\n (logLayer: ILogLayer, level: LogLevel, baseError?: Error) =>\n (message: string, metadata?: LogMetadata): IO<never, never, void> =>\n IO.sync(() => {\n const base = metadata ? logLayer.withMetadata(metadata) : logLayer\n const entry = baseError ? base.withError(baseError) : base\n entry[level](message)\n })\n\nexport const logLayerAdapter = (logLayer: ILogLayer, baseError?: Error): Logger => ({\n trace: makeMethod(logLayer, \"trace\", baseError),\n debug: makeMethod(logLayer, \"debug\", baseError),\n info: makeMethod(logLayer, \"info\", baseError),\n warn: makeMethod(logLayer, \"warn\", baseError),\n error: makeMethod(logLayer, \"error\", baseError),\n fatal: makeMethod(logLayer, \"fatal\", baseError),\n withError: (err: Error) => logLayerAdapter(logLayer, err),\n withContext: (ctx: LogMetadata) => logLayerAdapter(logLayer.withContext(ctx), baseError),\n child: (ctx?: LogMetadata) => {\n const childLog = logLayer.child()\n return ctx ? logLayerAdapter(childLog.withContext(ctx)) : logLayerAdapter(childLog)\n },\n})\n"],"mappings":"8BAKA,MAAM,GACH,EAAqB,EAAiB,KACtC,EAAiB,IAChB,EAAG,SAAW,CACZ,IAAM,EAAO,EAAW,EAAS,aAAa,CAAQ,EAAI,GAC5C,EAAY,EAAK,UAAU,CAAS,EAAI,
|
|
1
|
+
{"version":3,"file":"LogLayerAdapter.js","names":[],"sources":["../../src/adapter/LogLayerAdapter.ts"],"sourcesContent":["import { IO } from \"functype\"\nimport type { ILogLayer } from \"loglayer\"\n\nimport type { Logger, LogLevel, LogMetadata } from \"../logger/Logger\"\n\nconst makeMethod =\n (logLayer: ILogLayer, level: LogLevel, baseError?: Error) =>\n (message: string, metadata?: LogMetadata): IO<never, never, void> =>\n IO.sync(() => {\n const base = metadata ? logLayer.withMetadata(metadata) : logLayer\n const entry = baseError ? base.withError(baseError) : base\n entry[level](message)\n })\n\nexport const logLayerAdapter = (logLayer: ILogLayer, baseError?: Error): Logger => ({\n trace: makeMethod(logLayer, \"trace\", baseError),\n debug: makeMethod(logLayer, \"debug\", baseError),\n info: makeMethod(logLayer, \"info\", baseError),\n warn: makeMethod(logLayer, \"warn\", baseError),\n error: makeMethod(logLayer, \"error\", baseError),\n fatal: makeMethod(logLayer, \"fatal\", baseError),\n withError: (err: Error) => logLayerAdapter(logLayer, err),\n withContext: (ctx: LogMetadata) => logLayerAdapter(logLayer.withContext(ctx), baseError),\n child: (ctx?: LogMetadata) => {\n const childLog = logLayer.child()\n return ctx ? logLayerAdapter(childLog.withContext(ctx)) : logLayerAdapter(childLog)\n },\n})\n"],"mappings":"8BAKA,MAAM,GACH,EAAqB,EAAiB,KACtC,EAAiB,IAChB,EAAG,SAAW,CACZ,IAAM,EAAO,EAAW,EAAS,aAAa,CAAQ,EAAI,GAC5C,EAAY,EAAK,UAAU,CAAS,EAAI,EAAA,CAChD,EAAM,CAAC,CAAO,CACtB,CAAC,EAEQ,GAAmB,EAAqB,KAA+B,CAClF,MAAO,EAAW,EAAU,QAAS,CAAS,EAC9C,MAAO,EAAW,EAAU,QAAS,CAAS,EAC9C,KAAM,EAAW,EAAU,OAAQ,CAAS,EAC5C,KAAM,EAAW,EAAU,OAAQ,CAAS,EAC5C,MAAO,EAAW,EAAU,QAAS,CAAS,EAC9C,MAAO,EAAW,EAAU,QAAS,CAAS,EAC9C,UAAY,GAAe,EAAgB,EAAU,CAAG,EACxD,YAAc,GAAqB,EAAgB,EAAS,YAAY,CAAG,EAAG,CAAS,EACvF,MAAQ,GAAsB,CAC5B,IAAM,EAAW,EAAS,MAAM,EAChC,OAAa,EAAN,EAAsB,EAAS,YAAY,CAAG,EAAqB,CAAQ,CACpF,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as toDirectLogger, n as createDirectConsoleLogger, r as directSilentLogger, t as DirectLogger } from "../DirectLogger-
|
|
1
|
+
import { i as toDirectLogger, n as createDirectConsoleLogger, r as directSilentLogger, t as DirectLogger } from "../DirectLogger-DD-W9b5Z.js";
|
|
2
2
|
export { DirectLogger, createDirectConsoleLogger, directSilentLogger, toDirectLogger };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DirectLogger.js","names":[],"sources":["../../src/direct/DirectLogger.ts"],"sourcesContent":["import type { ConsoleLoggerOptions } from \"../layers/ConsoleLogger\"\nimport { createConsoleLogger } from \"../layers/ConsoleLogger\"\nimport { silentLogger } from \"../layers/SilentLogger\"\nimport type { Logger, LogMetadata } from \"../logger/Logger\"\n\nexport type DirectLogger = {\n readonly trace: (message: string, metadata?: LogMetadata) => void\n readonly debug: (message: string, metadata?: LogMetadata) => void\n readonly info: (message: string, metadata?: LogMetadata) => void\n readonly warn: (message: string, metadata?: LogMetadata) => void\n readonly error: (message: string, metadata?: LogMetadata) => void\n readonly fatal: (message: string, metadata?: LogMetadata) => void\n readonly withError: (error: Error) => DirectLogger\n readonly withContext: (context: LogMetadata) => DirectLogger\n readonly child: (context?: LogMetadata) => DirectLogger\n}\n\nexport const toDirectLogger = (logger: Logger): DirectLogger => ({\n trace: (msg, meta) => logger.trace(msg, meta).runSyncOrThrow(),\n debug: (msg, meta) => logger.debug(msg, meta).runSyncOrThrow(),\n info: (msg, meta) => logger.info(msg, meta).runSyncOrThrow(),\n warn: (msg, meta) => logger.warn(msg, meta).runSyncOrThrow(),\n error: (msg, meta) => logger.error(msg, meta).runSyncOrThrow(),\n fatal: (msg, meta) => logger.fatal(msg, meta).runSyncOrThrow(),\n withError: (err) => toDirectLogger(logger.withError(err)),\n withContext: (ctx) => toDirectLogger(logger.withContext(ctx)),\n child: (ctx) => toDirectLogger(logger.child(ctx)),\n})\n\nexport const createDirectConsoleLogger = (options?: ConsoleLoggerOptions): DirectLogger =>\n toDirectLogger(createConsoleLogger(options))\n\nexport const directSilentLogger: DirectLogger = toDirectLogger(silentLogger)\n"],"mappings":"0HAiBA,MAAa,EAAkB,IAAkC,CAC/D,OAAQ,EAAK,IAAS,EAAO,MAAM,EAAK,CAAI,
|
|
1
|
+
{"version":3,"file":"DirectLogger.js","names":[],"sources":["../../src/direct/DirectLogger.ts"],"sourcesContent":["import type { ConsoleLoggerOptions } from \"../layers/ConsoleLogger\"\nimport { createConsoleLogger } from \"../layers/ConsoleLogger\"\nimport { silentLogger } from \"../layers/SilentLogger\"\nimport type { Logger, LogMetadata } from \"../logger/Logger\"\n\nexport type DirectLogger = {\n readonly trace: (message: string, metadata?: LogMetadata) => void\n readonly debug: (message: string, metadata?: LogMetadata) => void\n readonly info: (message: string, metadata?: LogMetadata) => void\n readonly warn: (message: string, metadata?: LogMetadata) => void\n readonly error: (message: string, metadata?: LogMetadata) => void\n readonly fatal: (message: string, metadata?: LogMetadata) => void\n readonly withError: (error: Error) => DirectLogger\n readonly withContext: (context: LogMetadata) => DirectLogger\n readonly child: (context?: LogMetadata) => DirectLogger\n}\n\nexport const toDirectLogger = (logger: Logger): DirectLogger => ({\n trace: (msg, meta) => logger.trace(msg, meta).runSyncOrThrow(),\n debug: (msg, meta) => logger.debug(msg, meta).runSyncOrThrow(),\n info: (msg, meta) => logger.info(msg, meta).runSyncOrThrow(),\n warn: (msg, meta) => logger.warn(msg, meta).runSyncOrThrow(),\n error: (msg, meta) => logger.error(msg, meta).runSyncOrThrow(),\n fatal: (msg, meta) => logger.fatal(msg, meta).runSyncOrThrow(),\n withError: (err) => toDirectLogger(logger.withError(err)),\n withContext: (ctx) => toDirectLogger(logger.withContext(ctx)),\n child: (ctx) => toDirectLogger(logger.child(ctx)),\n})\n\nexport const createDirectConsoleLogger = (options?: ConsoleLoggerOptions): DirectLogger =>\n toDirectLogger(createConsoleLogger(options))\n\nexport const directSilentLogger: DirectLogger = toDirectLogger(silentLogger)\n"],"mappings":"0HAiBA,MAAa,EAAkB,IAAkC,CAC/D,OAAQ,EAAK,IAAS,EAAO,MAAM,EAAK,CAAI,CAAC,CAAC,eAAe,EAC7D,OAAQ,EAAK,IAAS,EAAO,MAAM,EAAK,CAAI,CAAC,CAAC,eAAe,EAC7D,MAAO,EAAK,IAAS,EAAO,KAAK,EAAK,CAAI,CAAC,CAAC,eAAe,EAC3D,MAAO,EAAK,IAAS,EAAO,KAAK,EAAK,CAAI,CAAC,CAAC,eAAe,EAC3D,OAAQ,EAAK,IAAS,EAAO,MAAM,EAAK,CAAI,CAAC,CAAC,eAAe,EAC7D,OAAQ,EAAK,IAAS,EAAO,MAAM,EAAK,CAAI,CAAC,CAAC,eAAe,EAC7D,UAAY,GAAQ,EAAe,EAAO,UAAU,CAAG,CAAC,EACxD,YAAc,GAAQ,EAAe,EAAO,YAAY,CAAG,CAAC,EAC5D,MAAQ,GAAQ,EAAe,EAAO,MAAM,CAAG,CAAC,CAClD,GAEa,EAA6B,GACxC,EAAe,EAAoB,CAAO,CAAC,EAEhC,EAAmC,EAAe,CAAY"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as createDirectTestLogger, t as DirectTestLoggerHandle } from "../DirectTestLogger-
|
|
1
|
+
import { n as createDirectTestLogger, t as DirectTestLoggerHandle } from "../DirectTestLogger-_mZeya1X.js";
|
|
2
2
|
export { DirectTestLoggerHandle, createDirectTestLogger };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DirectTestLogger.js","names":[],"sources":["../../src/direct/DirectTestLogger.ts"],"sourcesContent":["import { List } from \"functype\"\n\nimport type { LogEntry, LogLevel, LogMetadata } from \"../logger/Logger\"\nimport type { DirectLogger } from \"./DirectLogger\"\n\nexport type DirectTestLoggerHandle = {\n readonly logger: DirectLogger\n readonly entries: () => List<LogEntry>\n readonly clear: () => void\n readonly hasEntry: (level: LogLevel, messagePattern: string | RegExp) => boolean\n}\n\nconst createLoggerFromStore = (store: LogEntry[], baseContext: LogMetadata, baseError?: Error): DirectLogger => {\n const makeMethod =\n (level: LogLevel) =>\n (message: string, metadata?: LogMetadata): void => {\n store.push({\n level,\n message,\n metadata: Object.keys(baseContext).length > 0 || metadata ? { ...baseContext, ...metadata } : undefined,\n error: baseError,\n timestamp: new Date(),\n })\n }\n\n return {\n trace: makeMethod(\"trace\"),\n debug: makeMethod(\"debug\"),\n info: makeMethod(\"info\"),\n warn: makeMethod(\"warn\"),\n error: makeMethod(\"error\"),\n fatal: makeMethod(\"fatal\"),\n withError: (err: Error) => createLoggerFromStore(store, baseContext, err),\n withContext: (ctx: LogMetadata) => createLoggerFromStore(store, { ...baseContext, ...ctx }, baseError),\n child: (ctx?: LogMetadata) => createLoggerFromStore(store, { ...baseContext, ...ctx }, undefined),\n }\n}\n\nexport const createDirectTestLogger = (): DirectTestLoggerHandle => {\n const store: LogEntry[] = []\n\n return {\n logger: createLoggerFromStore(store, {}),\n entries: () => List(store),\n clear: () => {\n store.length = 0\n },\n hasEntry: (level: LogLevel, messagePattern: string | RegExp) =>\n store.some(\n (e) =>\n e.level === level &&\n (typeof messagePattern === \"string\" ? e.message.includes(messagePattern) : messagePattern.test(e.message)),\n ),\n }\n}\n"],"mappings":"gCAYA,MAAM,GAAyB,EAAmB,EAA0B,IAAoC,CAC9G,IAAM,EACH,IACA,EAAiB,IAAiC,CACjD,EAAM,KAAK,CACT,QACA,UACA,SAAU,OAAO,KAAK,CAAW,
|
|
1
|
+
{"version":3,"file":"DirectTestLogger.js","names":[],"sources":["../../src/direct/DirectTestLogger.ts"],"sourcesContent":["import { List } from \"functype\"\n\nimport type { LogEntry, LogLevel, LogMetadata } from \"../logger/Logger\"\nimport type { DirectLogger } from \"./DirectLogger\"\n\nexport type DirectTestLoggerHandle = {\n readonly logger: DirectLogger\n readonly entries: () => List<LogEntry>\n readonly clear: () => void\n readonly hasEntry: (level: LogLevel, messagePattern: string | RegExp) => boolean\n}\n\nconst createLoggerFromStore = (store: LogEntry[], baseContext: LogMetadata, baseError?: Error): DirectLogger => {\n const makeMethod =\n (level: LogLevel) =>\n (message: string, metadata?: LogMetadata): void => {\n store.push({\n level,\n message,\n metadata: Object.keys(baseContext).length > 0 || metadata ? { ...baseContext, ...metadata } : undefined,\n error: baseError,\n timestamp: new Date(),\n })\n }\n\n return {\n trace: makeMethod(\"trace\"),\n debug: makeMethod(\"debug\"),\n info: makeMethod(\"info\"),\n warn: makeMethod(\"warn\"),\n error: makeMethod(\"error\"),\n fatal: makeMethod(\"fatal\"),\n withError: (err: Error) => createLoggerFromStore(store, baseContext, err),\n withContext: (ctx: LogMetadata) => createLoggerFromStore(store, { ...baseContext, ...ctx }, baseError),\n child: (ctx?: LogMetadata) => createLoggerFromStore(store, { ...baseContext, ...ctx }, undefined),\n }\n}\n\nexport const createDirectTestLogger = (): DirectTestLoggerHandle => {\n const store: LogEntry[] = []\n\n return {\n logger: createLoggerFromStore(store, {}),\n entries: () => List(store),\n clear: () => {\n store.length = 0\n },\n hasEntry: (level: LogLevel, messagePattern: string | RegExp) =>\n store.some(\n (e) =>\n e.level === level &&\n (typeof messagePattern === \"string\" ? e.message.includes(messagePattern) : messagePattern.test(e.message)),\n ),\n }\n}\n"],"mappings":"gCAYA,MAAM,GAAyB,EAAmB,EAA0B,IAAoC,CAC9G,IAAM,EACH,IACA,EAAiB,IAAiC,CACjD,EAAM,KAAK,CACT,QACA,UACA,SAAU,OAAO,KAAK,CAAW,CAAC,CAAC,OAAS,GAAK,EAAW,CAAE,GAAG,EAAa,GAAG,CAAS,EAAI,IAAA,GAC9F,MAAO,EACP,UAAW,IAAI,IACjB,CAAC,CACH,EAEF,MAAO,CACL,MAAO,EAAW,OAAO,EACzB,MAAO,EAAW,OAAO,EACzB,KAAM,EAAW,MAAM,EACvB,KAAM,EAAW,MAAM,EACvB,MAAO,EAAW,OAAO,EACzB,MAAO,EAAW,OAAO,EACzB,UAAY,GAAe,EAAsB,EAAO,EAAa,CAAG,EACxE,YAAc,GAAqB,EAAsB,EAAO,CAAE,GAAG,EAAa,GAAG,CAAI,EAAG,CAAS,EACrG,MAAQ,GAAsB,EAAsB,EAAO,CAAE,GAAG,EAAa,GAAG,CAAI,EAAG,IAAA,EAAS,CAClG,CACF,EAEa,MAAuD,CAClE,IAAM,EAAoB,CAAC,EAE3B,MAAO,CACL,OAAQ,EAAsB,EAAO,CAAC,CAAC,EACvC,YAAe,EAAK,CAAK,EACzB,UAAa,CACX,EAAM,OAAS,CACjB,EACA,UAAW,EAAiB,IAC1B,EAAM,KACH,GACC,EAAE,QAAU,IACX,OAAO,GAAmB,SAAW,EAAE,QAAQ,SAAS,CAAc,EAAI,EAAe,KAAK,EAAE,OAAO,EAC5G,CACJ,CACF"}
|
package/dist/direct/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { i as toDirectLogger, n as createDirectConsoleLogger, r as directSilentLogger, t as DirectLogger } from "../DirectLogger-
|
|
2
|
-
import { n as createDirectTestLogger, t as DirectTestLoggerHandle } from "../DirectTestLogger-
|
|
1
|
+
import { i as toDirectLogger, n as createDirectConsoleLogger, r as directSilentLogger, t as DirectLogger } from "../DirectLogger-DD-W9b5Z.js";
|
|
2
|
+
import { n as createDirectTestLogger, t as DirectTestLoggerHandle } from "../DirectTestLogger-_mZeya1X.js";
|
|
3
3
|
export { type DirectLogger, type DirectTestLoggerHandle, createDirectConsoleLogger, createDirectTestLogger, directSilentLogger, toDirectLogger };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { i as Logger, n as LogLevel, r as LogMetadata, t as LogEntry } from "./Logger-CGFuJPzn.js";
|
|
2
2
|
import { t as logLayerAdapter } from "./LogLayerAdapter-DzPocLr5.js";
|
|
3
|
-
import { n as createConsoleLogger, t as ConsoleLoggerOptions } from "./ConsoleLogger-
|
|
4
|
-
import { i as toDirectLogger, n as createDirectConsoleLogger, r as directSilentLogger, t as DirectLogger } from "./DirectLogger-
|
|
5
|
-
import { n as createDirectTestLogger, t as DirectTestLoggerHandle } from "./DirectTestLogger-
|
|
6
|
-
import { t as LoggerLive } from "./LoggerLayer-
|
|
3
|
+
import { n as createConsoleLogger, t as ConsoleLoggerOptions } from "./ConsoleLogger-DA6_SLWt.js";
|
|
4
|
+
import { i as toDirectLogger, n as createDirectConsoleLogger, r as directSilentLogger, t as DirectLogger } from "./DirectLogger-DD-W9b5Z.js";
|
|
5
|
+
import { n as createDirectTestLogger, t as DirectTestLoggerHandle } from "./DirectTestLogger-_mZeya1X.js";
|
|
6
|
+
import { t as LoggerLive } from "./LoggerLayer-CbTtwJZw.js";
|
|
7
7
|
import { t as silentLogger } from "./SilentLogger-C1bxLMbA.js";
|
|
8
8
|
import { n as createTestLogger, t as TestLoggerHandle } from "./TestLogger-Cbmt4V6J.js";
|
|
9
9
|
import { n as withLogging, t as tapLog } from "./LogMiddleware-BwTD8SyL.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as createConsoleLogger, t as ConsoleLoggerOptions } from "../ConsoleLogger-
|
|
1
|
+
import { n as createConsoleLogger, t as ConsoleLoggerOptions } from "../ConsoleLogger-DA6_SLWt.js";
|
|
2
2
|
export { ConsoleLoggerOptions, createConsoleLogger };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{logLayerAdapter as e}from"../adapter/LogLayerAdapter.js";import{ConsoleTransport as t,LogLayer as n}from"loglayer";const r=r=>e(new n({transport:new t({logger:
|
|
1
|
+
import{logLayerAdapter as e}from"../adapter/LogLayerAdapter.js";import{ConsoleTransport as t,LogLayer as n}from"loglayer";const r={log:(...e)=>console.error(...e),info:(...e)=>console.error(...e),debug:(...e)=>console.error(...e),trace:(...e)=>console.error(...e),warn:(...e)=>console.error(...e),error:(...e)=>console.error(...e)},i=e=>e?.console?e.console:e?.stream===`stderr`?r:console,a=r=>e(new n({transport:new t({logger:i(r)}),...r?.prefix?{prefix:r.prefix}:{}}));export{a as createConsoleLogger};
|
|
2
2
|
//# sourceMappingURL=ConsoleLogger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleLogger.js","names":[],"sources":["../../src/layers/ConsoleLogger.ts"],"sourcesContent":["import { ConsoleTransport, LogLayer } from \"loglayer\"\n\nimport { logLayerAdapter } from \"../adapter/LogLayerAdapter\"\nimport type { Logger, LogLevel } from \"../logger/Logger\"\n\nexport type ConsoleLoggerOptions = {\n readonly level?: LogLevel\n readonly prefix?: string\n}\n\nexport const createConsoleLogger = (options?: ConsoleLoggerOptions): Logger => {\n const logLayer = new LogLayer({\n transport: new ConsoleTransport({ logger:
|
|
1
|
+
{"version":3,"file":"ConsoleLogger.js","names":[],"sources":["../../src/layers/ConsoleLogger.ts"],"sourcesContent":["import { ConsoleTransport, LogLayer } from \"loglayer\"\n\nimport { logLayerAdapter } from \"../adapter/LogLayerAdapter\"\nimport type { Logger, LogLevel } from \"../logger/Logger\"\n\n/**\n * Console sink shape expected by `loglayer`'s `ConsoleTransport`. Matches\n * the subset of the global `Console` interface the transport actually calls.\n */\ntype ConsoleSink = Pick<Console, \"log\" | \"info\" | \"debug\" | \"trace\" | \"warn\" | \"error\">\n\n/**\n * A console sink that routes EVERY level through `console.error` (stderr).\n *\n * Opt in via `stream: \"stderr\"`. Required for consumers where stdout is a\n * reserved data/protocol channel — most notably MCP-over-stdio, which uses\n * stdout exclusively for JSON-RPC. Also useful for CLI tools that emit\n * structured output on stdout.\n */\nconst stderrConsole: ConsoleSink = {\n log: (...args: unknown[]) => console.error(...args),\n info: (...args: unknown[]) => console.error(...args),\n debug: (...args: unknown[]) => console.error(...args),\n trace: (...args: unknown[]) => console.error(...args),\n warn: (...args: unknown[]) => console.error(...args),\n error: (...args: unknown[]) => console.error(...args),\n}\n\nexport type ConsoleLoggerOptions = {\n readonly level?: LogLevel\n readonly prefix?: string\n /**\n * Which standard stream console output is routed to.\n *\n * - `\"stdout\"` (default) — uses the global `console`. `info`/`debug` land\n * on stdout; `warn`/`error`/`trace` land on stderr (loglayer's per-level\n * routing). Matches the convention of every other Node logging library\n * (pino, winston, bunyan).\n * - `\"stderr\"` — routes ALL levels through `console.error` (stderr). Use\n * when stdout is a reserved data/protocol channel — most notably\n * MCP-over-stdio servers where stdout carries JSON-RPC and any other\n * bytes corrupt the protocol.\n */\n readonly stream?: \"stdout\" | \"stderr\"\n /**\n * Fully override the console sink. Takes precedence over `stream`. Use for\n * routing to a file stream, structured collector, or other custom sink.\n *\n * Only the methods called by loglayer's `ConsoleTransport` need to be\n * present (`log`/`info`/`debug`/`trace`/`warn`/`error`).\n */\n readonly console?: Partial<Console>\n}\n\nconst resolveSink = (options?: ConsoleLoggerOptions): Partial<Console> => {\n if (options?.console) return options.console\n if (options?.stream === \"stderr\") return stderrConsole\n return console\n}\n\nexport const createConsoleLogger = (options?: ConsoleLoggerOptions): Logger => {\n const logLayer = new LogLayer({\n transport: new ConsoleTransport({ logger: resolveSink(options) as Console }),\n ...(options?.prefix ? { prefix: options.prefix } : {}),\n })\n\n return logLayerAdapter(logLayer)\n}\n"],"mappings":"0HAmBA,MAAM,EAA6B,CACjC,KAAM,GAAG,IAAoB,QAAQ,MAAM,GAAG,CAAI,EAClD,MAAO,GAAG,IAAoB,QAAQ,MAAM,GAAG,CAAI,EACnD,OAAQ,GAAG,IAAoB,QAAQ,MAAM,GAAG,CAAI,EACpD,OAAQ,GAAG,IAAoB,QAAQ,MAAM,GAAG,CAAI,EACpD,MAAO,GAAG,IAAoB,QAAQ,MAAM,GAAG,CAAI,EACnD,OAAQ,GAAG,IAAoB,QAAQ,MAAM,GAAG,CAAI,CACtD,EA4BM,EAAe,GACf,GAAS,QAAgB,EAAQ,QACjC,GAAS,SAAW,SAAiB,EAClC,QAGI,EAAuB,GAM3B,EAAgB,IALF,EAAS,CAC5B,UAAW,IAAI,EAAiB,CAAE,OAAQ,EAAY,CAAO,CAAa,CAAC,EAC3E,GAAI,GAAS,OAAS,CAAE,OAAQ,EAAQ,MAAO,EAAI,CAAC,CACtD,CAE8B,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as LoggerLive } from "../LoggerLayer-
|
|
1
|
+
import { t as LoggerLive } from "../LoggerLayer-CbTtwJZw.js";
|
|
2
2
|
export { LoggerLive };
|
package/dist/layers/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as createConsoleLogger, t as ConsoleLoggerOptions } from "../ConsoleLogger-
|
|
2
|
-
import { t as LoggerLive } from "../LoggerLayer-
|
|
1
|
+
import { n as createConsoleLogger, t as ConsoleLoggerOptions } from "../ConsoleLogger-DA6_SLWt.js";
|
|
2
|
+
import { t as LoggerLive } from "../LoggerLayer-CbTtwJZw.js";
|
|
3
3
|
import { t as silentLogger } from "../SilentLogger-C1bxLMbA.js";
|
|
4
4
|
export { type ConsoleLoggerOptions, LoggerLive, createConsoleLogger, silentLogger };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogMiddleware.js","names":["IOImpl","LoggerTag"],"sources":["../../src/middleware/LogMiddleware.ts"],"sourcesContent":["import type { IO } from \"functype\"\nimport { IO as IOImpl } from \"functype\"\n\nimport type { Logger, LogLevel } from \"../logger/Logger\"\nimport { Logger as LoggerTag } from \"../logger/Logger\"\n\n/** Wrap any IO with start/complete/error logging at debug level */\nexport const withLogging = <R, E, A>(name: string, effect: IO<R, E, A>): IO<R | Logger, E, A> =>\n IOImpl.gen(function* () {\n const log = yield* IOImpl.service(LoggerTag)\n yield* log.debug(`${name}: starting`)\n const result = yield* effect\n yield* log.debug(`${name}: completed`)\n return result\n }) as unknown as IO<R | Logger, E, A>\n\n/** Create a tap function that logs at the specified level */\nexport const tapLog =\n <A>(level: LogLevel, message: string | ((a: A) => string)) =>\n <R, E>(effect: IO<R, E, A>): IO<R | Logger, E, A> =>\n IOImpl.gen(function* () {\n const result = yield* effect\n const log = yield* IOImpl.service(LoggerTag)\n const msg = typeof message === \"string\" ? message : message(result)\n yield* log[level](msg)\n return result\n }) as unknown as IO<R | Logger, E, A>\n"],"mappings":"2EAOA,MAAa,GAAwB,EAAc,IACjDA,EAAO,IAAI,WAAa,CACtB,IAAM,EAAM,MAAOA,EAAO,QAAQC,CAAS,EAC3C,MAAO,EAAI,MAAM,GAAG,EAAK,WAAW,EACpC,IAAM,EAAS,MAAO,EAEtB,OADA,MAAO,EAAI,MAAM,GAAG,EAAK,YAAY,EAC9B,CACT,CAAC,EAGU,GACP,EAAiB,IACd,GACLD,EAAO,IAAI,WAAa,CACtB,IAAM,EAAS,MAAO,EAChB,EAAM,MAAOA,EAAO,QAAQC,CAAS,EACrC,EAAM,OAAO,GAAY,SAAW,EAAU,EAAQ,CAAM,EAElE,OADA,MAAO,EAAI,
|
|
1
|
+
{"version":3,"file":"LogMiddleware.js","names":["IOImpl","LoggerTag"],"sources":["../../src/middleware/LogMiddleware.ts"],"sourcesContent":["import type { IO } from \"functype\"\nimport { IO as IOImpl } from \"functype\"\n\nimport type { Logger, LogLevel } from \"../logger/Logger\"\nimport { Logger as LoggerTag } from \"../logger/Logger\"\n\n/** Wrap any IO with start/complete/error logging at debug level */\nexport const withLogging = <R, E, A>(name: string, effect: IO<R, E, A>): IO<R | Logger, E, A> =>\n IOImpl.gen(function* () {\n const log = yield* IOImpl.service(LoggerTag)\n yield* log.debug(`${name}: starting`)\n const result = yield* effect\n yield* log.debug(`${name}: completed`)\n return result\n }) as unknown as IO<R | Logger, E, A>\n\n/** Create a tap function that logs at the specified level */\nexport const tapLog =\n <A>(level: LogLevel, message: string | ((a: A) => string)) =>\n <R, E>(effect: IO<R, E, A>): IO<R | Logger, E, A> =>\n IOImpl.gen(function* () {\n const result = yield* effect\n const log = yield* IOImpl.service(LoggerTag)\n const msg = typeof message === \"string\" ? message : message(result)\n yield* log[level](msg)\n return result\n }) as unknown as IO<R | Logger, E, A>\n"],"mappings":"2EAOA,MAAa,GAAwB,EAAc,IACjDA,EAAO,IAAI,WAAa,CACtB,IAAM,EAAM,MAAOA,EAAO,QAAQC,CAAS,EAC3C,MAAO,EAAI,MAAM,GAAG,EAAK,WAAW,EACpC,IAAM,EAAS,MAAO,EAEtB,OADA,MAAO,EAAI,MAAM,GAAG,EAAK,YAAY,EAC9B,CACT,CAAC,EAGU,GACP,EAAiB,IACd,GACLD,EAAO,IAAI,WAAa,CACtB,IAAM,EAAS,MAAO,EAChB,EAAM,MAAOA,EAAO,QAAQC,CAAS,EACrC,EAAM,OAAO,GAAY,SAAW,EAAU,EAAQ,CAAM,EAElE,OADA,MAAO,EAAI,EAAM,CAAC,CAAG,EACd,CACT,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestLogger.js","names":[],"sources":["../../src/testing/TestLogger.ts"],"sourcesContent":["import { IO, List } from \"functype\"\n\nimport type { LogEntry, Logger, LogLevel, LogMetadata } from \"../logger/Logger\"\n\nexport type TestLoggerHandle = {\n readonly logger: Logger\n readonly entries: () => List<LogEntry>\n readonly clear: () => void\n readonly hasEntry: (level: LogLevel, messagePattern: string | RegExp) => boolean\n}\n\nconst createLoggerFromStore = (store: LogEntry[], baseContext: LogMetadata, baseError?: Error): Logger => {\n const makeMethod =\n (level: LogLevel) =>\n (message: string, metadata?: LogMetadata): IO<never, never, void> =>\n IO.sync(() => {\n store.push({\n level,\n message,\n metadata: Object.keys(baseContext).length > 0 || metadata ? { ...baseContext, ...metadata } : undefined,\n error: baseError,\n timestamp: new Date(),\n })\n })\n\n return {\n trace: makeMethod(\"trace\"),\n debug: makeMethod(\"debug\"),\n info: makeMethod(\"info\"),\n warn: makeMethod(\"warn\"),\n error: makeMethod(\"error\"),\n fatal: makeMethod(\"fatal\"),\n withError: (err: Error) => createLoggerFromStore(store, baseContext, err),\n withContext: (ctx: LogMetadata) => createLoggerFromStore(store, { ...baseContext, ...ctx }, baseError),\n child: (ctx?: LogMetadata) => createLoggerFromStore(store, { ...baseContext, ...ctx }, undefined),\n }\n}\n\nexport const createTestLogger = (): TestLoggerHandle => {\n const store: LogEntry[] = []\n\n return {\n logger: createLoggerFromStore(store, {}),\n entries: () => List(store),\n clear: () => {\n store.length = 0\n },\n hasEntry: (level: LogLevel, messagePattern: string | RegExp) =>\n store.some(\n (e) =>\n e.level === level &&\n (typeof messagePattern === \"string\" ? e.message.includes(messagePattern) : messagePattern.test(e.message)),\n ),\n }\n}\n"],"mappings":"wCAWA,MAAM,GAAyB,EAAmB,EAA0B,IAA8B,CACxG,IAAM,EACH,IACA,EAAiB,IAChB,EAAG,SAAW,CACZ,EAAM,KAAK,CACT,QACA,UACA,SAAU,OAAO,KAAK,CAAW,
|
|
1
|
+
{"version":3,"file":"TestLogger.js","names":[],"sources":["../../src/testing/TestLogger.ts"],"sourcesContent":["import { IO, List } from \"functype\"\n\nimport type { LogEntry, Logger, LogLevel, LogMetadata } from \"../logger/Logger\"\n\nexport type TestLoggerHandle = {\n readonly logger: Logger\n readonly entries: () => List<LogEntry>\n readonly clear: () => void\n readonly hasEntry: (level: LogLevel, messagePattern: string | RegExp) => boolean\n}\n\nconst createLoggerFromStore = (store: LogEntry[], baseContext: LogMetadata, baseError?: Error): Logger => {\n const makeMethod =\n (level: LogLevel) =>\n (message: string, metadata?: LogMetadata): IO<never, never, void> =>\n IO.sync(() => {\n store.push({\n level,\n message,\n metadata: Object.keys(baseContext).length > 0 || metadata ? { ...baseContext, ...metadata } : undefined,\n error: baseError,\n timestamp: new Date(),\n })\n })\n\n return {\n trace: makeMethod(\"trace\"),\n debug: makeMethod(\"debug\"),\n info: makeMethod(\"info\"),\n warn: makeMethod(\"warn\"),\n error: makeMethod(\"error\"),\n fatal: makeMethod(\"fatal\"),\n withError: (err: Error) => createLoggerFromStore(store, baseContext, err),\n withContext: (ctx: LogMetadata) => createLoggerFromStore(store, { ...baseContext, ...ctx }, baseError),\n child: (ctx?: LogMetadata) => createLoggerFromStore(store, { ...baseContext, ...ctx }, undefined),\n }\n}\n\nexport const createTestLogger = (): TestLoggerHandle => {\n const store: LogEntry[] = []\n\n return {\n logger: createLoggerFromStore(store, {}),\n entries: () => List(store),\n clear: () => {\n store.length = 0\n },\n hasEntry: (level: LogLevel, messagePattern: string | RegExp) =>\n store.some(\n (e) =>\n e.level === level &&\n (typeof messagePattern === \"string\" ? e.message.includes(messagePattern) : messagePattern.test(e.message)),\n ),\n }\n}\n"],"mappings":"wCAWA,MAAM,GAAyB,EAAmB,EAA0B,IAA8B,CACxG,IAAM,EACH,IACA,EAAiB,IAChB,EAAG,SAAW,CACZ,EAAM,KAAK,CACT,QACA,UACA,SAAU,OAAO,KAAK,CAAW,CAAC,CAAC,OAAS,GAAK,EAAW,CAAE,GAAG,EAAa,GAAG,CAAS,EAAI,IAAA,GAC9F,MAAO,EACP,UAAW,IAAI,IACjB,CAAC,CACH,CAAC,EAEL,MAAO,CACL,MAAO,EAAW,OAAO,EACzB,MAAO,EAAW,OAAO,EACzB,KAAM,EAAW,MAAM,EACvB,KAAM,EAAW,MAAM,EACvB,MAAO,EAAW,OAAO,EACzB,MAAO,EAAW,OAAO,EACzB,UAAY,GAAe,EAAsB,EAAO,EAAa,CAAG,EACxE,YAAc,GAAqB,EAAsB,EAAO,CAAE,GAAG,EAAa,GAAG,CAAI,EAAG,CAAS,EACrG,MAAQ,GAAsB,EAAsB,EAAO,CAAE,GAAG,EAAa,GAAG,CAAI,EAAG,IAAA,EAAS,CAClG,CACF,EAEa,MAA2C,CACtD,IAAM,EAAoB,CAAC,EAE3B,MAAO,CACL,OAAQ,EAAsB,EAAO,CAAC,CAAC,EACvC,YAAe,EAAK,CAAK,EACzB,UAAa,CACX,EAAM,OAAS,CACjB,EACA,UAAW,EAAiB,IAC1B,EAAM,KACH,GACC,EAAE,QAAU,IACX,OAAO,GAAmB,SAAW,EAAE,QAAQ,SAAS,CAAc,EAAI,EAAe,KAAK,EAAE,OAAO,EAC5G,CACJ,CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "functype-log",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "IO-native logging for functype — wraps LogLayer with Tag/Layer DI, structured logging, and test utilities",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"functype",
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@types/node": "^24.12.4",
|
|
33
|
-
"ts-builds": "^2.8.
|
|
33
|
+
"ts-builds": "^2.8.2",
|
|
34
34
|
"tsdown": "^0.22.1",
|
|
35
|
-
"functype": "^1.
|
|
35
|
+
"functype": "^1.3.0"
|
|
36
36
|
},
|
|
37
37
|
"type": "module",
|
|
38
38
|
"main": "./dist/index.js",
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { i as Logger, n as LogLevel } from "./Logger-CGFuJPzn.js";
|
|
2
|
-
|
|
3
|
-
//#region src/layers/ConsoleLogger.d.ts
|
|
4
|
-
type ConsoleLoggerOptions = {
|
|
5
|
-
readonly level?: LogLevel;
|
|
6
|
-
readonly prefix?: string;
|
|
7
|
-
};
|
|
8
|
-
declare const createConsoleLogger: (options?: ConsoleLoggerOptions) => Logger;
|
|
9
|
-
//#endregion
|
|
10
|
-
export { createConsoleLogger as n, ConsoleLoggerOptions as t };
|
|
11
|
-
//# sourceMappingURL=ConsoleLogger-D7C4ytKU.d.ts.map
|