@decohere/scribe-pino 0.0.1-dev.126 → 0.0.1-dev.14
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/commonjs/src/index.js +2 -1
- package/commonjs/src/pino.adapater.js +7 -130
- package/commonjs/src/scribe-pino.js +31 -132
- package/es6/src/index.js +2 -1
- package/es6/src/pino.adapater.js +8 -131
- package/es6/src/scribe-pino.js +28 -114
- package/package.json +4 -25
- package/types/src/index.d.ts +0 -1
- package/types/src/pino.adapater.d.ts +0 -8
- package/types/src/scribe-pino.d.ts +8 -56
- package/LICENSE +0 -15
- package/commonjs/src/pino.recipe.js +0 -106
- package/commonjs/src/pino.transport-guard.js +0 -68
- package/es6/src/pino.recipe.js +0 -96
- package/es6/src/pino.transport-guard.js +0 -61
- package/types/src/pino.recipe.d.ts +0 -45
- package/types/src/pino.transport-guard.d.ts +0 -10
package/commonjs/src/index.js
CHANGED
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
5
|
_export_star(require("./pino.adapater.js"), exports);
|
|
6
|
-
_export_star(require("./pino.recipe.js"), exports);
|
|
7
6
|
_export_star(require("./scribe-pino.js"), exports);
|
|
8
7
|
function _export_star(from, to) {
|
|
9
8
|
Object.keys(from).forEach(function(k) {
|
|
@@ -18,3 +17,5 @@ function _export_star(from, to) {
|
|
|
18
17
|
});
|
|
19
18
|
return from;
|
|
20
19
|
}
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUtcGluby9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcGluby5hZGFwYXRlci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2NyaWJlLXBpbm8uanNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUFjO3FCQUNBIn0=
|
|
@@ -19,8 +19,6 @@ class PinoAdapter extends _scribe.LogAdapter {
|
|
|
19
19
|
_pino;
|
|
20
20
|
options;
|
|
21
21
|
stream;
|
|
22
|
-
disposed = false;
|
|
23
|
-
retired = false;
|
|
24
22
|
constructor(options, stream){
|
|
25
23
|
super();
|
|
26
24
|
this.options = options;
|
|
@@ -50,136 +48,18 @@ class PinoAdapter extends _scribe.LogAdapter {
|
|
|
50
48
|
return logger;
|
|
51
49
|
}
|
|
52
50
|
flush(cb) {
|
|
53
|
-
if (this.retired || !this._pino) {
|
|
54
|
-
cb?.();
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
51
|
this._pino.flush(cb);
|
|
58
52
|
}
|
|
59
|
-
/**
|
|
60
|
-
* Immediately stop accepting writes into the destination (ThreadStream).
|
|
61
|
-
* Does not wait for flush — use `stop()` for async drain after retire.
|
|
62
|
-
*/ retire() {
|
|
63
|
-
if (this.retired) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
this.retired = true;
|
|
67
|
-
const guarded = this.stream;
|
|
68
|
-
if (typeof guarded?.retire === "function") {
|
|
69
|
-
guarded.retire("adapter retired");
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
destroyDestination(this.stream);
|
|
73
|
-
}
|
|
74
|
-
async [Symbol.asyncDispose]() {
|
|
75
|
-
if (this.disposed) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
this.disposed = true;
|
|
79
|
-
if (!this.retired) {
|
|
80
|
-
const dest = this.stream;
|
|
81
|
-
if (dest != null && typeof dest.end === "function") {
|
|
82
|
-
// pino.transport() is a ThreadStream: pino.flush() → Atomics.waitAsync can
|
|
83
|
-
// hang forever after concurrent writes. end() flushSyncs then signals
|
|
84
|
-
// finish/close (it does not accept a Node Writable callback).
|
|
85
|
-
await endDestination(dest);
|
|
86
|
-
} else if (this._pino) {
|
|
87
|
-
await new Promise((resolve, reject)=>{
|
|
88
|
-
try {
|
|
89
|
-
this._pino.flush((err)=>{
|
|
90
|
-
if (err != null) {
|
|
91
|
-
reject(err);
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
resolve();
|
|
95
|
-
});
|
|
96
|
-
} catch (err) {
|
|
97
|
-
reject(err instanceof Error ? err : new Error(String(err)));
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
// Mark dead after graceful end (or immediately if already force-retired).
|
|
103
|
-
this.retire();
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
function destroyDestination(stream) {
|
|
107
|
-
const destroyable = stream;
|
|
108
|
-
if (typeof destroyable?.destroy === "function") {
|
|
109
|
-
try {
|
|
110
|
-
destroyable.destroy();
|
|
111
|
-
} catch {
|
|
112
|
-
// already dead
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Drain a pino destination.
|
|
118
|
-
*
|
|
119
|
-
* Node `Writable.end(cb)` invokes `cb`. `pino.transport()` returns a
|
|
120
|
-
* ThreadStream whose `end()` takes no callback and signals via `finish`/`close`
|
|
121
|
-
* instead — waiting only on `end(cb)` hangs forever and blocks Flux HMR.
|
|
122
|
-
*/ function endDestination(stream) {
|
|
123
|
-
if (typeof stream.end !== "function") {
|
|
124
|
-
return Promise.resolve();
|
|
125
|
-
}
|
|
126
|
-
if (stream.destroyed || stream.closed || stream.writableFinished) {
|
|
127
|
-
return Promise.resolve();
|
|
128
|
-
}
|
|
129
|
-
return new Promise((resolve, reject)=>{
|
|
130
|
-
let settled = false;
|
|
131
|
-
const settle = (err)=>{
|
|
132
|
-
if (settled) {
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
settled = true;
|
|
136
|
-
stream.off?.("finish", onFinish);
|
|
137
|
-
stream.off?.("close", onClose);
|
|
138
|
-
stream.off?.("error", onError);
|
|
139
|
-
if (err != null) {
|
|
140
|
-
reject(err);
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
resolve();
|
|
144
|
-
};
|
|
145
|
-
const onFinish = ()=>settle();
|
|
146
|
-
const onClose = ()=>settle();
|
|
147
|
-
const onError = (err)=>{
|
|
148
|
-
// ThreadStream may emit error then close during teardown; closed = done.
|
|
149
|
-
if (stream.destroyed || stream.closed) {
|
|
150
|
-
settle();
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
settle(err);
|
|
154
|
-
};
|
|
155
|
-
stream.once?.("finish", onFinish);
|
|
156
|
-
stream.once?.("close", onClose);
|
|
157
|
-
stream.once?.("error", onError);
|
|
158
|
-
try {
|
|
159
|
-
stream.end((err)=>settle(err));
|
|
160
|
-
} catch (err) {
|
|
161
|
-
settle(err instanceof Error ? err : new Error(String(err)));
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
// ThreadStream.end() is a no-op when already destroyed (no events).
|
|
165
|
-
if (stream.destroyed || stream.closed || stream.writableFinished) {
|
|
166
|
-
settle();
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
53
|
}
|
|
170
54
|
function logMethod(args, method) {
|
|
171
55
|
let message = args.at(0);
|
|
172
56
|
const data = args.at(1);
|
|
173
|
-
if (message instanceof Error) {
|
|
174
|
-
method.call(this, {
|
|
175
|
-
err: message
|
|
176
|
-
}, (0, _scribe.formatError)(message));
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
57
|
if (data instanceof Error) {
|
|
180
58
|
message = {
|
|
181
59
|
msg: message,
|
|
182
|
-
|
|
60
|
+
...{
|
|
61
|
+
error: data
|
|
62
|
+
}
|
|
183
63
|
};
|
|
184
64
|
} else if (typeof data === "object") {
|
|
185
65
|
message = {
|
|
@@ -194,18 +74,15 @@ function logMethod(args, method) {
|
|
|
194
74
|
}
|
|
195
75
|
method.call(this, message);
|
|
196
76
|
}
|
|
197
|
-
|
|
198
|
-
* Add Scribe's logger members to a Pino logger. `spawn` is Pino's own `child`:
|
|
199
|
-
* a Pino child inherits its parent's members through the prototype, so
|
|
200
|
-
* `logger.child` would be the parent's override.
|
|
201
|
-
*/ function pinoMix(logger, spawn = logger.child) {
|
|
77
|
+
function pinoMix(logger) {
|
|
202
78
|
return Object.assign(logger, {
|
|
203
79
|
get currentLevel () {
|
|
204
80
|
return logger.level;
|
|
205
81
|
},
|
|
206
82
|
get logLevels () {
|
|
207
83
|
return logger.levels.values;
|
|
208
|
-
}
|
|
209
|
-
child: (fields)=>pinoMix(spawn.call(logger, fields), spawn)
|
|
84
|
+
}
|
|
210
85
|
});
|
|
211
86
|
}
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUtcGluby9zcmMvcGluby5hZGFwYXRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHR0eXBlIEJhc2VMb2dnZXIsXG5cdExvZ0FkYXB0ZXIsXG5cdHR5cGUgTG9nZ2VyLFxuXHR0eXBlIFNjcmliZU9wdGlvbnMsXG59IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgcGlubywgeyB0eXBlIExvZ0ZuIH0gZnJvbSBcInBpbm9cIjtcblxuZXhwb3J0IHR5cGUgUGlub0FkYXBhdGVyT3B0aW9ucyA9IHtcblx0b3B0aW9ucz86IHBpbm8uTG9nZ2VyT3B0aW9ucztcblx0c3RyZWFtPzogcGluby5EZXN0aW5hdGlvblN0cmVhbTtcbn07XG5cbmV4cG9ydCBjbGFzcyBQaW5vQWRhcHRlciBleHRlbmRzIExvZ0FkYXB0ZXIge1xuXHRwcml2YXRlIF9waW5vOiBwaW5vLkxvZ2dlcjtcblx0cHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBwaW5vLkxvZ2dlck9wdGlvbnM7XG5cdHByaXZhdGUgcmVhZG9ubHkgc3RyZWFtOiBwaW5vLkRlc3RpbmF0aW9uU3RyZWFtO1xuXHRwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogcGluby5Mb2dnZXJPcHRpb25zLCBzdHJlYW0/OiBwaW5vLkRlc3RpbmF0aW9uU3RyZWFtKSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdHRoaXMuc3RyZWFtID0gc3RyZWFtO1xuXHR9XG5cblx0cHVibGljIGNvbmZpZ3VyZTxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdFx0c2NyaWJlT3B0aW9uczogU2NyaWJlT3B0aW9uczxULCBDdXN0b21Pbmx5Pixcblx0KSB7XG5cdFx0Y29uc3QgeyBsb2dMZXZlbCwgcmVkYWN0aW9ucyB9ID0gc2NyaWJlT3B0aW9ucztcblx0XHRjb25zdCBjdXN0b21MZXZlbHMgPSB0aGlzLmdldExvZ0xldmVscyhzY3JpYmVPcHRpb25zKTtcblxuXHRcdGNvbnN0IHBpbm9PcHRpb25zOiBwaW5vLkxvZ2dlck9wdGlvbnMgPSB7XG5cdFx0XHRjdXN0b21MZXZlbHMsXG5cdFx0XHRsZXZlbDogbG9nTGV2ZWwsXG5cdFx0XHRob29rczogeyBsb2dNZXRob2QgfSxcblx0XHRcdHNlcmlhbGl6ZXJzOiB7XG5cdFx0XHRcdGVycm9yOiBwaW5vLnN0ZFNlcmlhbGl6ZXJzLmVycixcblx0XHRcdH0sXG5cdFx0XHRyZWRhY3Q6IHJlZGFjdGlvbnMsXG5cdFx0XHQuLi50aGlzLm9wdGlvbnMsXG5cdFx0fTtcblx0XHR0aGlzLl9waW5vID0gcGlubyhwaW5vT3B0aW9ucywgdGhpcy5zdHJlYW0pO1xuXHR9XG5cblx0cHVibGljIGdldExvZ2dlcjxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdFx0bmFtZTogc3RyaW5nLFxuXHQpOiBMb2dnZXI8VCwgQ3VzdG9tT25seT4ge1xuXHRcdGNvbnN0IGxvZ2dlciA9IHBpbm9NaXg8VCwgQ3VzdG9tT25seT4odGhpcy5fcGluby5jaGlsZCh7IG5hbWUgfSkpO1xuXHRcdHJldHVybiBsb2dnZXI7XG5cdH1cblxuXHRwdWJsaWMgZmx1c2goY2I/OiAoKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0dGhpcy5fcGluby5mbHVzaChjYik7XG5cdH1cbn1cblxuZnVuY3Rpb24gbG9nTWV0aG9kKHRoaXM6IHBpbm8uTG9nZ2VyLCBhcmdzOiBQYXJhbWV0ZXJzPExvZ0ZuPiwgbWV0aG9kOiBMb2dGbikge1xuXHRsZXQgbWVzc2FnZSA9IGFyZ3MuYXQoMCk7XG5cdGNvbnN0IGRhdGEgPSBhcmdzLmF0KDEpO1xuXG5cdGlmIChkYXRhIGluc3RhbmNlb2YgRXJyb3IpIHtcblx0XHRtZXNzYWdlID0geyBtc2c6IG1lc3NhZ2UsIC4uLnsgZXJyb3I6IGRhdGEgfSB9O1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBkYXRhID09PSBcIm9iamVjdFwiKSB7XG5cdFx0bWVzc2FnZSA9IHsgbXNnOiBtZXNzYWdlLCAuLi5kYXRhIH07XG5cdH0gZWxzZSB7XG5cdFx0bWVzc2FnZSA9IHsgbXNnOiBtZXNzYWdlLCBkYXRhIH07XG5cdH1cblxuXHRtZXRob2QuY2FsbCh0aGlzLCBtZXNzYWdlKTtcbn1cblxuZnVuY3Rpb24gcGlub01peDxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdGxvZ2dlcjogcGluby5Mb2dnZXIsXG4pOiBMb2dnZXI8VCwgQ3VzdG9tT25seT4ge1xuXHRyZXR1cm4gT2JqZWN0LmFzc2lnbjxwaW5vLkxvZ2dlciwgQmFzZUxvZ2dlcj4obG9nZ2VyLCB7XG5cdFx0Z2V0IGN1cnJlbnRMZXZlbCgpIHtcblx0XHRcdHJldHVybiBsb2dnZXIubGV2ZWw7XG5cdFx0fSxcblx0XHRnZXQgbG9nTGV2ZWxzKCkge1xuXHRcdFx0cmV0dXJuIGxvZ2dlci5sZXZlbHMudmFsdWVzO1xuXHRcdH0sXG5cdH0pIGFzIExvZ2dlcjxULCBDdXN0b21Pbmx5Pjtcbn1cbiJdLCJuYW1lcyI6WyJQaW5vQWRhcHRlciIsIkxvZ0FkYXB0ZXIiLCJfcGlubyIsIm9wdGlvbnMiLCJzdHJlYW0iLCJjb25maWd1cmUiLCJzY3JpYmVPcHRpb25zIiwibG9nTGV2ZWwiLCJyZWRhY3Rpb25zIiwiY3VzdG9tTGV2ZWxzIiwiZ2V0TG9nTGV2ZWxzIiwicGlub09wdGlvbnMiLCJsZXZlbCIsImhvb2tzIiwibG9nTWV0aG9kIiwic2VyaWFsaXplcnMiLCJlcnJvciIsInBpbm8iLCJzdGRTZXJpYWxpemVycyIsImVyciIsInJlZGFjdCIsImdldExvZ2dlciIsIm5hbWUiLCJsb2dnZXIiLCJwaW5vTWl4IiwiY2hpbGQiLCJmbHVzaCIsImNiIiwiYXJncyIsIm1ldGhvZCIsIm1lc3NhZ2UiLCJhdCIsImRhdGEiLCJFcnJvciIsIm1zZyIsImNhbGwiLCJPYmplY3QiLCJhc3NpZ24iLCJjdXJyZW50TGV2ZWwiLCJsb2dMZXZlbHMiLCJsZXZlbHMiLCJ2YWx1ZXMiXSwibWFwcGluZ3MiOiI7Ozs7K0JBYWFBOzs7ZUFBQUE7Ozt3QkFSTjs2REFDMEI7Ozs7OztBQU8xQixNQUFNQSxvQkFBb0JDLGtCQUFVO0lBQ2xDQyxNQUFtQjtJQUNWQyxRQUE0QjtJQUM1QkMsT0FBK0I7SUFDaEQsWUFBbUJELE9BQTJCLEVBQUVDLE1BQStCLENBQUU7UUFDaEYsS0FBSztRQUNMLElBQUksQ0FBQ0QsT0FBTyxHQUFHQTtRQUNmLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtJQUNmO0lBRU9DLFVBQ05DLGFBQTJDLEVBQzFDO1FBQ0QsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFVBQVUsRUFBRSxHQUFHRjtRQUNqQyxNQUFNRyxlQUFlLElBQUksQ0FBQ0MsWUFBWSxDQUFDSjtRQUV2QyxNQUFNSyxjQUFrQztZQUN2Q0Y7WUFDQUcsT0FBT0w7WUFDUE0sT0FBTztnQkFBRUM7WUFBVTtZQUNuQkMsYUFBYTtnQkFDWkMsT0FBT0MsYUFBSSxDQUFDQyxjQUFjLENBQUNDLEdBQUc7WUFDL0I7WUFDQUMsUUFBUVo7WUFDUixHQUFHLElBQUksQ0FBQ0wsT0FBTztRQUNoQjtRQUNBLElBQUksQ0FBQ0QsS0FBSyxHQUFHZSxJQUFBQSxhQUFJLEVBQUNOLGFBQWEsSUFBSSxDQUFDUCxNQUFNO0lBQzNDO0lBRU9pQixVQUNOQyxJQUFZLEVBQ1k7UUFDeEIsTUFBTUMsU0FBU0MsUUFBdUIsSUFBSSxDQUFDdEIsS0FBSyxDQUFDdUIsS0FBSyxDQUFDO1lBQUVIO1FBQUs7UUFDOUQsT0FBT0M7SUFDUjtJQUVPRyxNQUFNQyxFQUFlLEVBQVE7UUFDbkMsSUFBSSxDQUFDekIsS0FBSyxDQUFDd0IsS0FBSyxDQUFDQztJQUNsQjtBQUNEO0FBRUEsU0FBU2IsVUFBNkJjLElBQXVCLEVBQUVDLE1BQWE7SUFDM0UsSUFBSUMsVUFBVUYsS0FBS0csRUFBRSxDQUFDO0lBQ3RCLE1BQU1DLE9BQU9KLEtBQUtHLEVBQUUsQ0FBQztJQUVyQixJQUFJQyxnQkFBZ0JDLE9BQU87UUFDMUJILFVBQVU7WUFBRUksS0FBS0o7WUFBUyxHQUFHO2dCQUFFZCxPQUFPZ0I7WUFBSyxDQUFDO1FBQUM7SUFDOUMsT0FBTyxJQUFJLE9BQU9BLFNBQVMsVUFBVTtRQUNwQ0YsVUFBVTtZQUFFSSxLQUFLSjtZQUFTLEdBQUdFLElBQUk7UUFBQztJQUNuQyxPQUFPO1FBQ05GLFVBQVU7WUFBRUksS0FBS0o7WUFBU0U7UUFBSztJQUNoQztJQUVBSCxPQUFPTSxJQUFJLENBQUMsSUFBSSxFQUFFTDtBQUNuQjtBQUVBLFNBQVNOLFFBQ1JELE1BQW1CO0lBRW5CLE9BQU9hLE9BQU9DLE1BQU0sQ0FBMEJkLFFBQVE7UUFDckQsSUFBSWUsZ0JBQWU7WUFDbEIsT0FBT2YsT0FBT1gsS0FBSztRQUNwQjtRQUNBLElBQUkyQixhQUFZO1lBQ2YsT0FBT2hCLE9BQU9pQixNQUFNLENBQUNDLE1BQU07UUFDNUI7SUFDRDtBQUNEIn0=
|
|
@@ -2,35 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
get PinoExtensions () {
|
|
5
|
+
Object.defineProperty(exports, "PinoExtensions", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
13
8
|
return PinoExtensions;
|
|
14
|
-
},
|
|
15
|
-
get guardTransport () {
|
|
16
|
-
return _pinotransportguard.guardTransport;
|
|
17
|
-
},
|
|
18
|
-
get pinoTransport () {
|
|
19
|
-
return pinoTransport;
|
|
20
9
|
}
|
|
21
10
|
});
|
|
22
|
-
const _extensibility = require("@decohere/
|
|
23
|
-
const _system = require("@decohere/
|
|
11
|
+
const _extensibility = require("@decohere/nexus/extensibility");
|
|
12
|
+
const _system = require("@decohere/nexus/system");
|
|
24
13
|
const _scribe = require("@decohere/scribe");
|
|
25
|
-
const _pino = /*#__PURE__*/ _interop_require_default(require("pino"));
|
|
26
14
|
const _pinoadapater = require("./pino.adapater.js");
|
|
27
|
-
const _pinorecipe = require("./pino.recipe.js");
|
|
28
|
-
const _pinotransportguard = require("./pino.transport-guard.js");
|
|
29
|
-
function _interop_require_default(obj) {
|
|
30
|
-
return obj && obj.__esModule ? obj : {
|
|
31
|
-
default: obj
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
15
|
function _ts_decorate(decorators, target, key, desc) {
|
|
35
16
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
36
17
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -42,32 +23,27 @@ function _ts_metadata(k, v) {
|
|
|
42
23
|
}
|
|
43
24
|
class PinoExtensions {
|
|
44
25
|
static withPino(factory, config, logLevel) {
|
|
45
|
-
return configureScribe(factory,
|
|
26
|
+
return configureScribe(factory, {
|
|
46
27
|
logLevel
|
|
47
|
-
}
|
|
28
|
+
}, config);
|
|
48
29
|
}
|
|
49
|
-
static withPinoPretty(factory,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
roll: options,
|
|
59
|
-
logLevel: options.logLevel
|
|
60
|
-
});
|
|
30
|
+
static withPinoPretty(factory, logLevel) {
|
|
31
|
+
return PinoExtensions.withPino(factory, {
|
|
32
|
+
transports: {
|
|
33
|
+
target: "pino-pretty",
|
|
34
|
+
options: {
|
|
35
|
+
colorize: true
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}, logLevel);
|
|
61
39
|
}
|
|
62
40
|
static withPinoCustom(factory, options) {
|
|
63
|
-
const { scribe, transports } = options
|
|
41
|
+
const { scribe, transports } = options;
|
|
64
42
|
return configureScribe(factory, scribe, transports);
|
|
65
43
|
}
|
|
66
44
|
}
|
|
67
45
|
_ts_decorate([
|
|
68
|
-
(0, _extensibility.extension)(_scribe.scribe,
|
|
69
|
-
static: true
|
|
70
|
-
}),
|
|
46
|
+
(0, _extensibility.extension)(_scribe.scribe),
|
|
71
47
|
_ts_metadata("design:type", Function),
|
|
72
48
|
_ts_metadata("design:paramtypes", [
|
|
73
49
|
typeof _scribe.scribe === "undefined" ? Object : _scribe.scribe,
|
|
@@ -77,9 +53,7 @@ _ts_decorate([
|
|
|
77
53
|
_ts_metadata("design:returntype", void 0)
|
|
78
54
|
], PinoExtensions, "withPino", null);
|
|
79
55
|
_ts_decorate([
|
|
80
|
-
(0, _extensibility.extension)(_scribe.scribe,
|
|
81
|
-
static: true
|
|
82
|
-
}),
|
|
56
|
+
(0, _extensibility.extension)(_scribe.scribe),
|
|
83
57
|
_ts_metadata("design:type", Function),
|
|
84
58
|
_ts_metadata("design:paramtypes", [
|
|
85
59
|
typeof _scribe.scribe === "undefined" ? Object : _scribe.scribe,
|
|
@@ -88,20 +62,7 @@ _ts_decorate([
|
|
|
88
62
|
_ts_metadata("design:returntype", void 0)
|
|
89
63
|
], PinoExtensions, "withPinoPretty", null);
|
|
90
64
|
_ts_decorate([
|
|
91
|
-
(0, _extensibility.extension)(_scribe.scribe,
|
|
92
|
-
static: true
|
|
93
|
-
}),
|
|
94
|
-
_ts_metadata("design:type", Function),
|
|
95
|
-
_ts_metadata("design:paramtypes", [
|
|
96
|
-
typeof _scribe.scribe === "undefined" ? Object : _scribe.scribe,
|
|
97
|
-
typeof PinoRollRecipeOptions === "undefined" ? Object : PinoRollRecipeOptions
|
|
98
|
-
]),
|
|
99
|
-
_ts_metadata("design:returntype", void 0)
|
|
100
|
-
], PinoExtensions, "withPinoRoll", null);
|
|
101
|
-
_ts_decorate([
|
|
102
|
-
(0, _extensibility.extension)(_scribe.scribe, {
|
|
103
|
-
static: true
|
|
104
|
-
}),
|
|
65
|
+
(0, _extensibility.extension)(_scribe.scribe),
|
|
105
66
|
_ts_metadata("design:type", Function),
|
|
106
67
|
_ts_metadata("design:paramtypes", [
|
|
107
68
|
typeof _scribe.scribe === "undefined" ? Object : _scribe.scribe,
|
|
@@ -109,85 +70,23 @@ _ts_decorate([
|
|
|
109
70
|
]),
|
|
110
71
|
_ts_metadata("design:returntype", void 0)
|
|
111
72
|
], PinoExtensions, "withPinoCustom", null);
|
|
112
|
-
function parsePrettyArg(logLevelOrOptions) {
|
|
113
|
-
if (logLevelOrOptions == null) {
|
|
114
|
-
return {};
|
|
115
|
-
}
|
|
116
|
-
if (typeof logLevelOrOptions === "string") {
|
|
117
|
-
return {
|
|
118
|
-
logLevel: logLevelOrOptions
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
return logLevelOrOptions;
|
|
122
|
-
}
|
|
123
|
-
function attachRecipe(factory, plan) {
|
|
124
|
-
const loggerFactory = applyRecipe(factory, plan);
|
|
125
|
-
const chain = {
|
|
126
|
-
withPinoPretty (logLevelOrOptions) {
|
|
127
|
-
const pretty = parsePrettyArg(logLevelOrOptions);
|
|
128
|
-
return attachRecipe(factory, {
|
|
129
|
-
...plan,
|
|
130
|
-
pretty: {
|
|
131
|
-
...plan.pretty,
|
|
132
|
-
...pretty
|
|
133
|
-
},
|
|
134
|
-
logLevel: pretty.logLevel ?? plan.logLevel
|
|
135
|
-
});
|
|
136
|
-
},
|
|
137
|
-
withPinoRoll (options) {
|
|
138
|
-
return attachRecipe(factory, {
|
|
139
|
-
...plan,
|
|
140
|
-
roll: options,
|
|
141
|
-
logLevel: options.logLevel ?? plan.logLevel
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
return Object.assign(loggerFactory, chain, {
|
|
146
|
-
and: chain
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Guard a worker transport so failures (roll EEXIST, worker exit) neither
|
|
151
|
-
* crash the process nor spam stderr on every subsequent log write.
|
|
152
|
-
*/ function createSafeTransport(options) {
|
|
153
|
-
return (0, _pinotransportguard.guardTransport)(_pino.default.transport(options));
|
|
154
|
-
}
|
|
155
|
-
function adapterForTransport(transport) {
|
|
156
|
-
if (transport == null) {
|
|
157
|
-
return new _pinoadapater.PinoAdapter({});
|
|
158
|
-
}
|
|
159
|
-
return new _pinoadapater.PinoAdapter({}, createSafeTransport(transport));
|
|
160
|
-
}
|
|
161
|
-
function applyRecipe(factory, plan) {
|
|
162
|
-
const adapter = adapterForTransport(_pinorecipe.pinoRecipe.transport(plan));
|
|
163
|
-
// Omit logLevel when unset so mergeDefaults can read LOG_LEVEL / SCRIBE_LOG_LEVEL.
|
|
164
|
-
return factory.configure({
|
|
165
|
-
options: plan.logLevel != null ? {
|
|
166
|
-
logLevel: plan.logLevel
|
|
167
|
-
} : {},
|
|
168
|
-
adapter
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
73
|
function configureScribe(factory, options, config) {
|
|
172
74
|
const environment = process.env.NODE_ENV ?? _system.DefaultEnvironment;
|
|
173
|
-
const configs =
|
|
75
|
+
const configs = Array.isArray(config) ? config : [
|
|
174
76
|
config
|
|
175
|
-
]
|
|
176
|
-
|
|
77
|
+
];
|
|
78
|
+
const transports = configs.filter((config)=>config.environment && config.environment === environment || true);
|
|
79
|
+
if (transports.length > 1) {
|
|
177
80
|
throw new _scribe.LoggingConfigurationError(`There should only be one configuration per environment for logging`);
|
|
178
81
|
}
|
|
179
|
-
const
|
|
180
|
-
|
|
82
|
+
const transport = transports.at(0)?.transports;
|
|
83
|
+
const adapter = new _pinoadapater.PinoAdapter({
|
|
84
|
+
transport
|
|
85
|
+
});
|
|
181
86
|
return factory.configure({
|
|
182
|
-
options
|
|
87
|
+
options,
|
|
183
88
|
adapter
|
|
184
89
|
});
|
|
185
90
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}
|
|
189
|
-
const pinoTransport = {
|
|
190
|
-
createSafeTransport,
|
|
191
|
-
guardTransport: _pinotransportguard.guardTransport,
|
|
192
|
-
silenceErrors
|
|
193
|
-
};
|
|
91
|
+
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUtcGluby9zcmMvc2NyaWJlLXBpbm8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5zaW9uIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9leHRlbnNpYmlsaXR5XCI7XG5pbXBvcnQgeyBEZWZhdWx0RW52aXJvbm1lbnQsIHR5cGUgRW52aXJvbm1lbnQgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL3N5c3RlbVwiO1xuaW1wb3J0IHtcblx0dHlwZSBEZWZhdWx0TGV2ZWxzLFxuXHR0eXBlIExvZ2dlcixcblx0TG9nZ2luZ0NvbmZpZ3VyYXRpb25FcnJvcixcblx0dHlwZSBTY3JpYmVPcHRpb25zLFxuXHRzY3JpYmUsXG59IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgdHlwZSB7XG5cdFRyYW5zcG9ydE11bHRpT3B0aW9ucyxcblx0VHJhbnNwb3J0UGlwZWxpbmVPcHRpb25zLFxuXHRUcmFuc3BvcnRTaW5nbGVPcHRpb25zLFxufSBmcm9tIFwicGlub1wiO1xuXG5pbXBvcnQgeyBQaW5vQWRhcHRlciB9IGZyb20gXCIuL3Bpbm8uYWRhcGF0ZXIuanNcIjtcblxudHlwZSBUcmFuc3BvcnRDb25maWcgPSB7XG5cdGVudmlyb25tZW50PzogRW52aXJvbm1lbnQ7XG5cdHRyYW5zcG9ydHM6IFRyYW5zcG9ydFNpbmdsZU9wdGlvbnMgfCBUcmFuc3BvcnRNdWx0aU9wdGlvbnMgfCBUcmFuc3BvcnRQaXBlbGluZU9wdGlvbnM7XG59O1xuXG50eXBlIEN1c3RvbUxldmVsT3B0aW9uczxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlID0gdW5kZWZpbmVkPiA9IHtcblx0c2NyaWJlPzogU2NyaWJlT3B0aW9uczxULCBDdXN0b21Pbmx5Pjtcblx0dHJhbnNwb3J0cz86IFRyYW5zcG9ydENvbmZpZyB8IFRyYW5zcG9ydENvbmZpZ1tdO1xufTtcblxuZGVjbGFyZSBtb2R1bGUgXCJAZGVjb2hlcmUvc2NyaWJlXCIge1xuXHRpbnRlcmZhY2Ugc2NyaWJlIHtcblx0XHR3aXRoUGlubyhcblx0XHRcdHRyYW5zcG9ydHM6IFRyYW5zcG9ydENvbmZpZyB8IFRyYW5zcG9ydENvbmZpZ1tdLFxuXHRcdFx0bG9nbGV2ZWw/OiBEZWZhdWx0TGV2ZWxzIHwgc3RyaW5nLFxuXHRcdCk6IChuYW1lPzogc3RyaW5nKSA9PiBMb2dnZXI7XG5cdFx0d2l0aFBpbm9QcmV0dHkobG9nTGV2ZWw/OiBEZWZhdWx0TGV2ZWxzIHwgc3RyaW5nKTogKG5hbWU/OiBzdHJpbmcpID0+IExvZ2dlcjtcblx0XHR3aXRoUGlub0N1c3RvbTxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlID0gdW5kZWZpbmVkPihcblx0XHRcdG9wdGlvbnM/OiBDdXN0b21MZXZlbE9wdGlvbnM8VCwgQ3VzdG9tT25seT4sXG5cdFx0KTogKG5hbWU/OiBzdHJpbmcpID0+IExvZ2dlcjxULCBDdXN0b21Pbmx5Pjtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUGlub0V4dGVuc2lvbnMge1xuXHRAZXh0ZW5zaW9uKHNjcmliZSlcblx0cHVibGljIHN0YXRpYyB3aXRoUGlubyhcblx0XHRmYWN0b3J5OiBzY3JpYmUsXG5cdFx0Y29uZmlnOiBUcmFuc3BvcnRDb25maWcgfCBUcmFuc3BvcnRDb25maWdbXSxcblx0XHRsb2dMZXZlbD86IERlZmF1bHRMZXZlbHMgfCBzdHJpbmcsXG5cdCkge1xuXHRcdHJldHVybiBjb25maWd1cmVTY3JpYmUoZmFjdG9yeSwgeyBsb2dMZXZlbCB9LCBjb25maWcpO1xuXHR9XG5cblx0QGV4dGVuc2lvbihzY3JpYmUpXG5cdHB1YmxpYyBzdGF0aWMgd2l0aFBpbm9QcmV0dHkoZmFjdG9yeTogc2NyaWJlLCBsb2dMZXZlbD86IERlZmF1bHRMZXZlbHMgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gUGlub0V4dGVuc2lvbnMud2l0aFBpbm8oXG5cdFx0XHRmYWN0b3J5LFxuXHRcdFx0eyB0cmFuc3BvcnRzOiB7IHRhcmdldDogXCJwaW5vLXByZXR0eVwiLCBvcHRpb25zOiB7IGNvbG9yaXplOiB0cnVlIH0gfSB9LFxuXHRcdFx0bG9nTGV2ZWwsXG5cdFx0KTtcblx0fVxuXG5cdEBleHRlbnNpb24oc2NyaWJlKVxuXHRwdWJsaWMgc3RhdGljIHdpdGhQaW5vQ3VzdG9tPFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgQ3VzdG9tT25seSBleHRlbmRzIHRydWUgPSB1bmRlZmluZWQ+KFxuXHRcdGZhY3Rvcnk6IHNjcmliZSxcblx0XHRvcHRpb25zPzogQ3VzdG9tTGV2ZWxPcHRpb25zPFQsIEN1c3RvbU9ubHk+LFxuXHQpIHtcblx0XHRjb25zdCB7IHNjcmliZSwgdHJhbnNwb3J0cyB9ID0gb3B0aW9ucztcblx0XHRyZXR1cm4gY29uZmlndXJlU2NyaWJlKGZhY3RvcnksIHNjcmliZSwgdHJhbnNwb3J0cyk7XG5cdH1cbn1cblxuZnVuY3Rpb24gY29uZmlndXJlU2NyaWJlPFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgQ3VzdG9tT25seSBleHRlbmRzIHRydWUgfCBmYWxzZSA9IGZhbHNlPihcblx0ZmFjdG9yeTogc2NyaWJlLFxuXHRvcHRpb25zOiBTY3JpYmVPcHRpb25zPFQsIEN1c3RvbU9ubHk+LFxuXHRjb25maWc6IFRyYW5zcG9ydENvbmZpZyB8IFRyYW5zcG9ydENvbmZpZ1tdLFxuKSB7XG5cdGNvbnN0IGVudmlyb25tZW50ID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPz8gRGVmYXVsdEVudmlyb25tZW50O1xuXHRjb25zdCBjb25maWdzID0gQXJyYXkuaXNBcnJheShjb25maWcpID8gY29uZmlnIDogW2NvbmZpZ107XG5cdGNvbnN0IHRyYW5zcG9ydHMgPSBjb25maWdzLmZpbHRlcihcblx0XHQoY29uZmlnKSA9PiAoY29uZmlnLmVudmlyb25tZW50ICYmIGNvbmZpZy5lbnZpcm9ubWVudCA9PT0gZW52aXJvbm1lbnQpIHx8IHRydWUsXG5cdCk7XG5cblx0aWYgKHRyYW5zcG9ydHMubGVuZ3RoID4gMSkge1xuXHRcdHRocm93IG5ldyBMb2dnaW5nQ29uZmlndXJhdGlvbkVycm9yKFxuXHRcdFx0YFRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZSBjb25maWd1cmF0aW9uIHBlciBlbnZpcm9ubWVudCBmb3IgbG9nZ2luZ2AsXG5cdFx0KTtcblx0fVxuXG5cdGNvbnN0IHRyYW5zcG9ydCA9IHRyYW5zcG9ydHMuYXQoMCk/LnRyYW5zcG9ydHM7XG5cdGNvbnN0IGFkYXB0ZXIgPSBuZXcgUGlub0FkYXB0ZXIoeyB0cmFuc3BvcnQgfSk7XG5cdHJldHVybiBmYWN0b3J5LmNvbmZpZ3VyZSh7XG5cdFx0b3B0aW9ucyxcblx0XHRhZGFwdGVyLFxuXHR9KTtcbn1cbiJdLCJuYW1lcyI6WyJQaW5vRXh0ZW5zaW9ucyIsIndpdGhQaW5vIiwiZmFjdG9yeSIsImNvbmZpZyIsImxvZ0xldmVsIiwiY29uZmlndXJlU2NyaWJlIiwid2l0aFBpbm9QcmV0dHkiLCJ0cmFuc3BvcnRzIiwidGFyZ2V0Iiwib3B0aW9ucyIsImNvbG9yaXplIiwid2l0aFBpbm9DdXN0b20iLCJzY3JpYmUiLCJlbnZpcm9ubWVudCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkRlZmF1bHRFbnZpcm9ubWVudCIsImNvbmZpZ3MiLCJBcnJheSIsImlzQXJyYXkiLCJmaWx0ZXIiLCJsZW5ndGgiLCJMb2dnaW5nQ29uZmlndXJhdGlvbkVycm9yIiwidHJhbnNwb3J0IiwiYXQiLCJhZGFwdGVyIiwiUGlub0FkYXB0ZXIiLCJjb25maWd1cmUiXSwibWFwcGluZ3MiOiI7Ozs7K0JBd0NhQTs7O2VBQUFBOzs7K0JBeENhO3dCQUMyQjt3QkFPOUM7OEJBT3FCOzs7Ozs7Ozs7O0FBeUJyQixNQUFNQTtJQUNaLE9BQ2NDLFNBQ2JDLE9BQWUsRUFDZkMsTUFBMkMsRUFDM0NDLFFBQWlDLEVBQ2hDO1FBQ0QsT0FBT0MsZ0JBQWdCSCxTQUFTO1lBQUVFO1FBQVMsR0FBR0Q7SUFDL0M7SUFFQSxPQUNjRyxlQUFlSixPQUFlLEVBQUVFLFFBQWlDLEVBQUU7UUFDaEYsT0FBT0osZUFBZUMsUUFBUSxDQUM3QkMsU0FDQTtZQUFFSyxZQUFZO2dCQUFFQyxRQUFRO2dCQUFlQyxTQUFTO29CQUFFQyxVQUFVO2dCQUFLO1lBQUU7UUFBRSxHQUNyRU47SUFFRjtJQUVBLE9BQ2NPLGVBQ2JULE9BQWUsRUFDZk8sT0FBMkMsRUFDMUM7UUFDRCxNQUFNLEVBQUVHLE1BQU0sRUFBRUwsVUFBVSxFQUFFLEdBQUdFO1FBQy9CLE9BQU9KLGdCQUFnQkgsU0FBU1UsUUFBUUw7SUFDekM7QUFDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxTQUFTRixnQkFDUkgsT0FBZSxFQUNmTyxPQUFxQyxFQUNyQ04sTUFBMkM7SUFFM0MsTUFBTVUsY0FBY0MsUUFBUUMsR0FBRyxDQUFDQyxRQUFRLElBQUlDLDBCQUFrQjtJQUM5RCxNQUFNQyxVQUFVQyxNQUFNQyxPQUFPLENBQUNqQixVQUFVQSxTQUFTO1FBQUNBO0tBQU87SUFDekQsTUFBTUksYUFBYVcsUUFBUUcsTUFBTSxDQUNoQyxDQUFDbEIsU0FBVyxBQUFDQSxPQUFPVSxXQUFXLElBQUlWLE9BQU9VLFdBQVcsS0FBS0EsZUFBZ0I7SUFHM0UsSUFBSU4sV0FBV2UsTUFBTSxHQUFHLEdBQUc7UUFDMUIsTUFBTSxJQUFJQyxpQ0FBeUIsQ0FDbEMsQ0FBQyxrRUFBa0UsQ0FBQztJQUV0RTtJQUVBLE1BQU1DLFlBQVlqQixXQUFXa0IsRUFBRSxDQUFDLElBQUlsQjtJQUNwQyxNQUFNbUIsVUFBVSxJQUFJQyx5QkFBVyxDQUFDO1FBQUVIO0lBQVU7SUFDNUMsT0FBT3RCLFFBQVEwQixTQUFTLENBQUM7UUFDeEJuQjtRQUNBaUI7SUFDRDtBQUNEIn0=
|
package/es6/src/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export * from "./pino.adapater.js";
|
|
2
|
-
export * from "./pino.recipe.js";
|
|
3
2
|
export * from "./scribe-pino.js";
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUtcGluby9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcGluby5hZGFwYXRlci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2NyaWJlLXBpbm8uanNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQjtBQUNuQyxjQUFjLG1CQUFtQiJ9
|
package/es6/src/pino.adapater.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LogAdapter } from "@decohere/scribe";
|
|
2
2
|
import pino from "pino";
|
|
3
3
|
export class PinoAdapter extends LogAdapter {
|
|
4
4
|
_pino;
|
|
5
5
|
options;
|
|
6
6
|
stream;
|
|
7
|
-
disposed = false;
|
|
8
|
-
retired = false;
|
|
9
7
|
constructor(options, stream){
|
|
10
8
|
super();
|
|
11
9
|
this.options = options;
|
|
@@ -35,136 +33,18 @@ export class PinoAdapter extends LogAdapter {
|
|
|
35
33
|
return logger;
|
|
36
34
|
}
|
|
37
35
|
flush(cb) {
|
|
38
|
-
if (this.retired || !this._pino) {
|
|
39
|
-
cb?.();
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
36
|
this._pino.flush(cb);
|
|
43
37
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Immediately stop accepting writes into the destination (ThreadStream).
|
|
46
|
-
* Does not wait for flush — use `stop()` for async drain after retire.
|
|
47
|
-
*/ retire() {
|
|
48
|
-
if (this.retired) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
this.retired = true;
|
|
52
|
-
const guarded = this.stream;
|
|
53
|
-
if (typeof guarded?.retire === "function") {
|
|
54
|
-
guarded.retire("adapter retired");
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
destroyDestination(this.stream);
|
|
58
|
-
}
|
|
59
|
-
async [Symbol.asyncDispose]() {
|
|
60
|
-
if (this.disposed) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
this.disposed = true;
|
|
64
|
-
if (!this.retired) {
|
|
65
|
-
const dest = this.stream;
|
|
66
|
-
if (dest != null && typeof dest.end === "function") {
|
|
67
|
-
// pino.transport() is a ThreadStream: pino.flush() → Atomics.waitAsync can
|
|
68
|
-
// hang forever after concurrent writes. end() flushSyncs then signals
|
|
69
|
-
// finish/close (it does not accept a Node Writable callback).
|
|
70
|
-
await endDestination(dest);
|
|
71
|
-
} else if (this._pino) {
|
|
72
|
-
await new Promise((resolve, reject)=>{
|
|
73
|
-
try {
|
|
74
|
-
this._pino.flush((err)=>{
|
|
75
|
-
if (err != null) {
|
|
76
|
-
reject(err);
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
resolve();
|
|
80
|
-
});
|
|
81
|
-
} catch (err) {
|
|
82
|
-
reject(err instanceof Error ? err : new Error(String(err)));
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
// Mark dead after graceful end (or immediately if already force-retired).
|
|
88
|
-
this.retire();
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
function destroyDestination(stream) {
|
|
92
|
-
const destroyable = stream;
|
|
93
|
-
if (typeof destroyable?.destroy === "function") {
|
|
94
|
-
try {
|
|
95
|
-
destroyable.destroy();
|
|
96
|
-
} catch {
|
|
97
|
-
// already dead
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Drain a pino destination.
|
|
103
|
-
*
|
|
104
|
-
* Node `Writable.end(cb)` invokes `cb`. `pino.transport()` returns a
|
|
105
|
-
* ThreadStream whose `end()` takes no callback and signals via `finish`/`close`
|
|
106
|
-
* instead — waiting only on `end(cb)` hangs forever and blocks Flux HMR.
|
|
107
|
-
*/ function endDestination(stream) {
|
|
108
|
-
if (typeof stream.end !== "function") {
|
|
109
|
-
return Promise.resolve();
|
|
110
|
-
}
|
|
111
|
-
if (stream.destroyed || stream.closed || stream.writableFinished) {
|
|
112
|
-
return Promise.resolve();
|
|
113
|
-
}
|
|
114
|
-
return new Promise((resolve, reject)=>{
|
|
115
|
-
let settled = false;
|
|
116
|
-
const settle = (err)=>{
|
|
117
|
-
if (settled) {
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
settled = true;
|
|
121
|
-
stream.off?.("finish", onFinish);
|
|
122
|
-
stream.off?.("close", onClose);
|
|
123
|
-
stream.off?.("error", onError);
|
|
124
|
-
if (err != null) {
|
|
125
|
-
reject(err);
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
resolve();
|
|
129
|
-
};
|
|
130
|
-
const onFinish = ()=>settle();
|
|
131
|
-
const onClose = ()=>settle();
|
|
132
|
-
const onError = (err)=>{
|
|
133
|
-
// ThreadStream may emit error then close during teardown; closed = done.
|
|
134
|
-
if (stream.destroyed || stream.closed) {
|
|
135
|
-
settle();
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
settle(err);
|
|
139
|
-
};
|
|
140
|
-
stream.once?.("finish", onFinish);
|
|
141
|
-
stream.once?.("close", onClose);
|
|
142
|
-
stream.once?.("error", onError);
|
|
143
|
-
try {
|
|
144
|
-
stream.end((err)=>settle(err));
|
|
145
|
-
} catch (err) {
|
|
146
|
-
settle(err instanceof Error ? err : new Error(String(err)));
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
// ThreadStream.end() is a no-op when already destroyed (no events).
|
|
150
|
-
if (stream.destroyed || stream.closed || stream.writableFinished) {
|
|
151
|
-
settle();
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
38
|
}
|
|
155
39
|
function logMethod(args, method) {
|
|
156
40
|
let message = args.at(0);
|
|
157
41
|
const data = args.at(1);
|
|
158
|
-
if (message instanceof Error) {
|
|
159
|
-
method.call(this, {
|
|
160
|
-
err: message
|
|
161
|
-
}, formatError(message));
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
42
|
if (data instanceof Error) {
|
|
165
43
|
message = {
|
|
166
44
|
msg: message,
|
|
167
|
-
|
|
45
|
+
...{
|
|
46
|
+
error: data
|
|
47
|
+
}
|
|
168
48
|
};
|
|
169
49
|
} else if (typeof data === "object") {
|
|
170
50
|
message = {
|
|
@@ -179,18 +59,15 @@ function logMethod(args, method) {
|
|
|
179
59
|
}
|
|
180
60
|
method.call(this, message);
|
|
181
61
|
}
|
|
182
|
-
|
|
183
|
-
* Add Scribe's logger members to a Pino logger. `spawn` is Pino's own `child`:
|
|
184
|
-
* a Pino child inherits its parent's members through the prototype, so
|
|
185
|
-
* `logger.child` would be the parent's override.
|
|
186
|
-
*/ function pinoMix(logger, spawn = logger.child) {
|
|
62
|
+
function pinoMix(logger) {
|
|
187
63
|
return Object.assign(logger, {
|
|
188
64
|
get currentLevel () {
|
|
189
65
|
return logger.level;
|
|
190
66
|
},
|
|
191
67
|
get logLevels () {
|
|
192
68
|
return logger.levels.values;
|
|
193
|
-
}
|
|
194
|
-
child: (fields)=>pinoMix(spawn.call(logger, fields), spawn)
|
|
69
|
+
}
|
|
195
70
|
});
|
|
196
71
|
}
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUtcGluby9zcmMvcGluby5hZGFwYXRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHR0eXBlIEJhc2VMb2dnZXIsXG5cdExvZ0FkYXB0ZXIsXG5cdHR5cGUgTG9nZ2VyLFxuXHR0eXBlIFNjcmliZU9wdGlvbnMsXG59IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgcGlubywgeyB0eXBlIExvZ0ZuIH0gZnJvbSBcInBpbm9cIjtcblxuZXhwb3J0IHR5cGUgUGlub0FkYXBhdGVyT3B0aW9ucyA9IHtcblx0b3B0aW9ucz86IHBpbm8uTG9nZ2VyT3B0aW9ucztcblx0c3RyZWFtPzogcGluby5EZXN0aW5hdGlvblN0cmVhbTtcbn07XG5cbmV4cG9ydCBjbGFzcyBQaW5vQWRhcHRlciBleHRlbmRzIExvZ0FkYXB0ZXIge1xuXHRwcml2YXRlIF9waW5vOiBwaW5vLkxvZ2dlcjtcblx0cHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBwaW5vLkxvZ2dlck9wdGlvbnM7XG5cdHByaXZhdGUgcmVhZG9ubHkgc3RyZWFtOiBwaW5vLkRlc3RpbmF0aW9uU3RyZWFtO1xuXHRwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogcGluby5Mb2dnZXJPcHRpb25zLCBzdHJlYW0/OiBwaW5vLkRlc3RpbmF0aW9uU3RyZWFtKSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXHRcdHRoaXMuc3RyZWFtID0gc3RyZWFtO1xuXHR9XG5cblx0cHVibGljIGNvbmZpZ3VyZTxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdFx0c2NyaWJlT3B0aW9uczogU2NyaWJlT3B0aW9uczxULCBDdXN0b21Pbmx5Pixcblx0KSB7XG5cdFx0Y29uc3QgeyBsb2dMZXZlbCwgcmVkYWN0aW9ucyB9ID0gc2NyaWJlT3B0aW9ucztcblx0XHRjb25zdCBjdXN0b21MZXZlbHMgPSB0aGlzLmdldExvZ0xldmVscyhzY3JpYmVPcHRpb25zKTtcblxuXHRcdGNvbnN0IHBpbm9PcHRpb25zOiBwaW5vLkxvZ2dlck9wdGlvbnMgPSB7XG5cdFx0XHRjdXN0b21MZXZlbHMsXG5cdFx0XHRsZXZlbDogbG9nTGV2ZWwsXG5cdFx0XHRob29rczogeyBsb2dNZXRob2QgfSxcblx0XHRcdHNlcmlhbGl6ZXJzOiB7XG5cdFx0XHRcdGVycm9yOiBwaW5vLnN0ZFNlcmlhbGl6ZXJzLmVycixcblx0XHRcdH0sXG5cdFx0XHRyZWRhY3Q6IHJlZGFjdGlvbnMsXG5cdFx0XHQuLi50aGlzLm9wdGlvbnMsXG5cdFx0fTtcblx0XHR0aGlzLl9waW5vID0gcGlubyhwaW5vT3B0aW9ucywgdGhpcy5zdHJlYW0pO1xuXHR9XG5cblx0cHVibGljIGdldExvZ2dlcjxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdFx0bmFtZTogc3RyaW5nLFxuXHQpOiBMb2dnZXI8VCwgQ3VzdG9tT25seT4ge1xuXHRcdGNvbnN0IGxvZ2dlciA9IHBpbm9NaXg8VCwgQ3VzdG9tT25seT4odGhpcy5fcGluby5jaGlsZCh7IG5hbWUgfSkpO1xuXHRcdHJldHVybiBsb2dnZXI7XG5cdH1cblxuXHRwdWJsaWMgZmx1c2goY2I/OiAoKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0dGhpcy5fcGluby5mbHVzaChjYik7XG5cdH1cbn1cblxuZnVuY3Rpb24gbG9nTWV0aG9kKHRoaXM6IHBpbm8uTG9nZ2VyLCBhcmdzOiBQYXJhbWV0ZXJzPExvZ0ZuPiwgbWV0aG9kOiBMb2dGbikge1xuXHRsZXQgbWVzc2FnZSA9IGFyZ3MuYXQoMCk7XG5cdGNvbnN0IGRhdGEgPSBhcmdzLmF0KDEpO1xuXG5cdGlmIChkYXRhIGluc3RhbmNlb2YgRXJyb3IpIHtcblx0XHRtZXNzYWdlID0geyBtc2c6IG1lc3NhZ2UsIC4uLnsgZXJyb3I6IGRhdGEgfSB9O1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBkYXRhID09PSBcIm9iamVjdFwiKSB7XG5cdFx0bWVzc2FnZSA9IHsgbXNnOiBtZXNzYWdlLCAuLi5kYXRhIH07XG5cdH0gZWxzZSB7XG5cdFx0bWVzc2FnZSA9IHsgbXNnOiBtZXNzYWdlLCBkYXRhIH07XG5cdH1cblxuXHRtZXRob2QuY2FsbCh0aGlzLCBtZXNzYWdlKTtcbn1cblxuZnVuY3Rpb24gcGlub01peDxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdGxvZ2dlcjogcGluby5Mb2dnZXIsXG4pOiBMb2dnZXI8VCwgQ3VzdG9tT25seT4ge1xuXHRyZXR1cm4gT2JqZWN0LmFzc2lnbjxwaW5vLkxvZ2dlciwgQmFzZUxvZ2dlcj4obG9nZ2VyLCB7XG5cdFx0Z2V0IGN1cnJlbnRMZXZlbCgpIHtcblx0XHRcdHJldHVybiBsb2dnZXIubGV2ZWw7XG5cdFx0fSxcblx0XHRnZXQgbG9nTGV2ZWxzKCkge1xuXHRcdFx0cmV0dXJuIGxvZ2dlci5sZXZlbHMudmFsdWVzO1xuXHRcdH0sXG5cdH0pIGFzIExvZ2dlcjxULCBDdXN0b21Pbmx5Pjtcbn1cbiJdLCJuYW1lcyI6WyJMb2dBZGFwdGVyIiwicGlubyIsIlBpbm9BZGFwdGVyIiwiX3Bpbm8iLCJvcHRpb25zIiwic3RyZWFtIiwiY29uZmlndXJlIiwic2NyaWJlT3B0aW9ucyIsImxvZ0xldmVsIiwicmVkYWN0aW9ucyIsImN1c3RvbUxldmVscyIsImdldExvZ0xldmVscyIsInBpbm9PcHRpb25zIiwibGV2ZWwiLCJob29rcyIsImxvZ01ldGhvZCIsInNlcmlhbGl6ZXJzIiwiZXJyb3IiLCJzdGRTZXJpYWxpemVycyIsImVyciIsInJlZGFjdCIsImdldExvZ2dlciIsIm5hbWUiLCJsb2dnZXIiLCJwaW5vTWl4IiwiY2hpbGQiLCJmbHVzaCIsImNiIiwiYXJncyIsIm1ldGhvZCIsIm1lc3NhZ2UiLCJhdCIsImRhdGEiLCJFcnJvciIsIm1zZyIsImNhbGwiLCJPYmplY3QiLCJhc3NpZ24iLCJjdXJyZW50TGV2ZWwiLCJsb2dMZXZlbHMiLCJsZXZlbHMiLCJ2YWx1ZXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBRUNBLFVBQVUsUUFHSixtQkFBbUI7QUFDMUIsT0FBT0MsVUFBMEIsT0FBTztBQU94QyxPQUFPLE1BQU1DLG9CQUFvQkY7SUFDeEJHLE1BQW1CO0lBQ1ZDLFFBQTRCO0lBQzVCQyxPQUErQjtJQUNoRCxZQUFtQkQsT0FBMkIsRUFBRUMsTUFBK0IsQ0FBRTtRQUNoRixLQUFLO1FBQ0wsSUFBSSxDQUFDRCxPQUFPLEdBQUdBO1FBQ2YsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO0lBQ2Y7SUFFT0MsVUFDTkMsYUFBMkMsRUFDMUM7UUFDRCxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsVUFBVSxFQUFFLEdBQUdGO1FBQ2pDLE1BQU1HLGVBQWUsSUFBSSxDQUFDQyxZQUFZLENBQUNKO1FBRXZDLE1BQU1LLGNBQWtDO1lBQ3ZDRjtZQUNBRyxPQUFPTDtZQUNQTSxPQUFPO2dCQUFFQztZQUFVO1lBQ25CQyxhQUFhO2dCQUNaQyxPQUFPaEIsS0FBS2lCLGNBQWMsQ0FBQ0MsR0FBRztZQUMvQjtZQUNBQyxRQUFRWDtZQUNSLEdBQUcsSUFBSSxDQUFDTCxPQUFPO1FBQ2hCO1FBQ0EsSUFBSSxDQUFDRCxLQUFLLEdBQUdGLEtBQUtXLGFBQWEsSUFBSSxDQUFDUCxNQUFNO0lBQzNDO0lBRU9nQixVQUNOQyxJQUFZLEVBQ1k7UUFDeEIsTUFBTUMsU0FBU0MsUUFBdUIsSUFBSSxDQUFDckIsS0FBSyxDQUFDc0IsS0FBSyxDQUFDO1lBQUVIO1FBQUs7UUFDOUQsT0FBT0M7SUFDUjtJQUVPRyxNQUFNQyxFQUFlLEVBQVE7UUFDbkMsSUFBSSxDQUFDeEIsS0FBSyxDQUFDdUIsS0FBSyxDQUFDQztJQUNsQjtBQUNEO0FBRUEsU0FBU1osVUFBNkJhLElBQXVCLEVBQUVDLE1BQWE7SUFDM0UsSUFBSUMsVUFBVUYsS0FBS0csRUFBRSxDQUFDO0lBQ3RCLE1BQU1DLE9BQU9KLEtBQUtHLEVBQUUsQ0FBQztJQUVyQixJQUFJQyxnQkFBZ0JDLE9BQU87UUFDMUJILFVBQVU7WUFBRUksS0FBS0o7WUFBUyxHQUFHO2dCQUFFYixPQUFPZTtZQUFLLENBQUM7UUFBQztJQUM5QyxPQUFPLElBQUksT0FBT0EsU0FBUyxVQUFVO1FBQ3BDRixVQUFVO1lBQUVJLEtBQUtKO1lBQVMsR0FBR0UsSUFBSTtRQUFDO0lBQ25DLE9BQU87UUFDTkYsVUFBVTtZQUFFSSxLQUFLSjtZQUFTRTtRQUFLO0lBQ2hDO0lBRUFILE9BQU9NLElBQUksQ0FBQyxJQUFJLEVBQUVMO0FBQ25CO0FBRUEsU0FBU04sUUFDUkQsTUFBbUI7SUFFbkIsT0FBT2EsT0FBT0MsTUFBTSxDQUEwQmQsUUFBUTtRQUNyRCxJQUFJZSxnQkFBZTtZQUNsQixPQUFPZixPQUFPVixLQUFLO1FBQ3BCO1FBQ0EsSUFBSTBCLGFBQVk7WUFDZixPQUFPaEIsT0FBT2lCLE1BQU0sQ0FBQ0MsTUFBTTtRQUM1QjtJQUNEO0FBQ0QifQ==
|