@decohere/scribe-pino 0.0.1-dev.65 → 0.0.1-dev.67

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.
@@ -3,6 +3,7 @@ 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);
6
7
  _export_star(require("./scribe-pino.js"), exports);
7
8
  function _export_star(from, to) {
8
9
  Object.keys(from).forEach(function(k) {
@@ -18,4 +19,4 @@ function _export_star(from, to) {
18
19
  return from;
19
20
  }
20
21
 
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUtcGluby9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcGluby5hZGFwYXRlci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2NyaWJlLXBpbm8uanNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUFjO3FCQUNBIn0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUtcGluby9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcGluby5hZGFwYXRlci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGluby5yZWNpcGUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NjcmliZS1waW5vLmpzXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBYztxQkFDQTtxQkFDQSJ9
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "pinoRecipe", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return pinoRecipe;
9
+ }
10
+ });
11
+ const _system = require("@decohere/nexus/system");
12
+ const DEFAULT_ROLL_SIZE = "10m";
13
+ const DEFAULT_ROLL_FREQUENCY = "daily";
14
+ const DEFAULT_ROLL_KEEP = 14;
15
+ function currentEnvironment() {
16
+ return process.env.NODE_ENV === _system.Environments.production ? _system.Environments.production : _system.Environments.development;
17
+ }
18
+ function isEnabled(when, environment) {
19
+ return (when ?? "development") === "always" || environment === _system.Environments.development;
20
+ }
21
+ function prettyTarget(options) {
22
+ return {
23
+ target: "pino-pretty",
24
+ options: {
25
+ colorize: options.colorize ?? true
26
+ }
27
+ };
28
+ }
29
+ function rollTarget(options) {
30
+ return {
31
+ target: "pino-roll",
32
+ options: {
33
+ file: options.file,
34
+ mkdir: options.mkdir ?? true,
35
+ size: options.size ?? DEFAULT_ROLL_SIZE,
36
+ frequency: options.frequency ?? DEFAULT_ROLL_FREQUENCY,
37
+ limit: {
38
+ count: options.keep ?? DEFAULT_ROLL_KEEP
39
+ },
40
+ symlink: options.symlink ?? true
41
+ }
42
+ };
43
+ }
44
+ function transport(plan, environment = currentEnvironment()) {
45
+ const targets = [];
46
+ if (plan.pretty && isEnabled(plan.pretty.when, environment)) {
47
+ targets.push(prettyTarget(plan.pretty));
48
+ }
49
+ if (plan.roll && isEnabled(plan.roll.when, environment)) {
50
+ targets.push(rollTarget(plan.roll));
51
+ }
52
+ if (targets.length === 0) {
53
+ return undefined;
54
+ }
55
+ if (targets.length === 1) {
56
+ return targets[0];
57
+ }
58
+ return {
59
+ targets
60
+ };
61
+ }
62
+ const pinoRecipe = {
63
+ transport,
64
+ currentEnvironment
65
+ };
66
+
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUtcGluby9zcmMvcGluby5yZWNpcGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBFbnZpcm9ubWVudCwgRW52aXJvbm1lbnRzIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9zeXN0ZW1cIjtcbmltcG9ydCB0eXBlIHsgVHJhbnNwb3J0TXVsdGlPcHRpb25zLCBUcmFuc3BvcnRTaW5nbGVPcHRpb25zIH0gZnJvbSBcInBpbm9cIjtcblxuLyoqIFByZXR0eSBhbmQgcm9sbCBhcmUgbG9jYWwtZGV2IGNvbnZlbmllbmNlcy4gUHJvZHVjdGlvbiBzaGlwcyBKU09OIG9uIHN0ZG91dC4gKi9cbmV4cG9ydCB0eXBlIFBpbm9XaGVuID0gXCJkZXZlbG9wbWVudFwiIHwgXCJhbHdheXNcIjtcblxuZXhwb3J0IHR5cGUgUGlub1ByZXR0eVJlY2lwZU9wdGlvbnMgPSB7XG5cdGNvbG9yaXplPzogYm9vbGVhbjtcblx0bG9nTGV2ZWw/OiBzdHJpbmc7XG5cdHdoZW4/OiBQaW5vV2hlbjtcbn07XG5cbmV4cG9ydCB0eXBlIFBpbm9Sb2xsUmVjaXBlT3B0aW9ucyA9IHtcblx0ZmlsZTogc3RyaW5nO1xuXHRzaXplPzogc3RyaW5nO1xuXHRmcmVxdWVuY3k/OiBzdHJpbmcgfCBudW1iZXI7XG5cdGtlZXA/OiBudW1iZXI7XG5cdG1rZGlyPzogYm9vbGVhbjtcblx0c3ltbGluaz86IGJvb2xlYW47XG5cdGxvZ0xldmVsPzogc3RyaW5nO1xuXHR3aGVuPzogUGlub1doZW47XG59O1xuXG5leHBvcnQgdHlwZSBQaW5vUmVjaXBlUGxhbiA9IHtcblx0cHJldHR5PzogUGlub1ByZXR0eVJlY2lwZU9wdGlvbnM7XG5cdHJvbGw/OiBQaW5vUm9sbFJlY2lwZU9wdGlvbnM7XG5cdGxvZ0xldmVsPzogc3RyaW5nO1xufTtcblxuY29uc3QgREVGQVVMVF9ST0xMX1NJWkUgPSBcIjEwbVwiO1xuY29uc3QgREVGQVVMVF9ST0xMX0ZSRVFVRU5DWSA9IFwiZGFpbHlcIjtcbmNvbnN0IERFRkFVTFRfUk9MTF9LRUVQID0gMTQ7XG5cbmZ1bmN0aW9uIGN1cnJlbnRFbnZpcm9ubWVudCgpOiBFbnZpcm9ubWVudCB7XG5cdHJldHVybiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gRW52aXJvbm1lbnRzLnByb2R1Y3Rpb25cblx0XHQ/IEVudmlyb25tZW50cy5wcm9kdWN0aW9uXG5cdFx0OiBFbnZpcm9ubWVudHMuZGV2ZWxvcG1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzRW5hYmxlZCh3aGVuOiBQaW5vV2hlbiB8IHVuZGVmaW5lZCwgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50KTogYm9vbGVhbiB7XG5cdHJldHVybiAod2hlbiA/PyBcImRldmVsb3BtZW50XCIpID09PSBcImFsd2F5c1wiIHx8IGVudmlyb25tZW50ID09PSBFbnZpcm9ubWVudHMuZGV2ZWxvcG1lbnQ7XG59XG5cbmZ1bmN0aW9uIHByZXR0eVRhcmdldChvcHRpb25zOiBQaW5vUHJldHR5UmVjaXBlT3B0aW9ucyk6IFRyYW5zcG9ydFNpbmdsZU9wdGlvbnMge1xuXHRyZXR1cm4ge1xuXHRcdHRhcmdldDogXCJwaW5vLXByZXR0eVwiLFxuXHRcdG9wdGlvbnM6IHsgY29sb3JpemU6IG9wdGlvbnMuY29sb3JpemUgPz8gdHJ1ZSB9LFxuXHR9O1xufVxuXG5mdW5jdGlvbiByb2xsVGFyZ2V0KG9wdGlvbnM6IFBpbm9Sb2xsUmVjaXBlT3B0aW9ucyk6IFRyYW5zcG9ydFNpbmdsZU9wdGlvbnMge1xuXHRyZXR1cm4ge1xuXHRcdHRhcmdldDogXCJwaW5vLXJvbGxcIixcblx0XHRvcHRpb25zOiB7XG5cdFx0XHRmaWxlOiBvcHRpb25zLmZpbGUsXG5cdFx0XHRta2Rpcjogb3B0aW9ucy5ta2RpciA/PyB0cnVlLFxuXHRcdFx0c2l6ZTogb3B0aW9ucy5zaXplID8/IERFRkFVTFRfUk9MTF9TSVpFLFxuXHRcdFx0ZnJlcXVlbmN5OiBvcHRpb25zLmZyZXF1ZW5jeSA/PyBERUZBVUxUX1JPTExfRlJFUVVFTkNZLFxuXHRcdFx0bGltaXQ6IHsgY291bnQ6IG9wdGlvbnMua2VlcCA/PyBERUZBVUxUX1JPTExfS0VFUCB9LFxuXHRcdFx0c3ltbGluazogb3B0aW9ucy5zeW1saW5rID8/IHRydWUsXG5cdFx0fSxcblx0fTtcbn1cblxuZnVuY3Rpb24gdHJhbnNwb3J0KFxuXHRwbGFuOiBQaW5vUmVjaXBlUGxhbixcblx0ZW52aXJvbm1lbnQ6IEVudmlyb25tZW50ID0gY3VycmVudEVudmlyb25tZW50KCksXG4pOiBUcmFuc3BvcnRTaW5nbGVPcHRpb25zIHwgVHJhbnNwb3J0TXVsdGlPcHRpb25zIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgdGFyZ2V0czogVHJhbnNwb3J0U2luZ2xlT3B0aW9uc1tdID0gW107XG5cdGlmIChwbGFuLnByZXR0eSAmJiBpc0VuYWJsZWQocGxhbi5wcmV0dHkud2hlbiwgZW52aXJvbm1lbnQpKSB7XG5cdFx0dGFyZ2V0cy5wdXNoKHByZXR0eVRhcmdldChwbGFuLnByZXR0eSkpO1xuXHR9XG5cdGlmIChwbGFuLnJvbGwgJiYgaXNFbmFibGVkKHBsYW4ucm9sbC53aGVuLCBlbnZpcm9ubWVudCkpIHtcblx0XHR0YXJnZXRzLnB1c2gocm9sbFRhcmdldChwbGFuLnJvbGwpKTtcblx0fVxuXHRpZiAodGFyZ2V0cy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGlmICh0YXJnZXRzLmxlbmd0aCA9PT0gMSkge1xuXHRcdHJldHVybiB0YXJnZXRzWzBdO1xuXHR9XG5cdHJldHVybiB7IHRhcmdldHMgfTtcbn1cblxuZXhwb3J0IGNvbnN0IHBpbm9SZWNpcGUgPSB7IHRyYW5zcG9ydCwgY3VycmVudEVudmlyb25tZW50IH07XG4iXSwibmFtZXMiOlsicGlub1JlY2lwZSIsIkRFRkFVTFRfUk9MTF9TSVpFIiwiREVGQVVMVF9ST0xMX0ZSRVFVRU5DWSIsIkRFRkFVTFRfUk9MTF9LRUVQIiwiY3VycmVudEVudmlyb25tZW50IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiRW52aXJvbm1lbnRzIiwicHJvZHVjdGlvbiIsImRldmVsb3BtZW50IiwiaXNFbmFibGVkIiwid2hlbiIsImVudmlyb25tZW50IiwicHJldHR5VGFyZ2V0Iiwib3B0aW9ucyIsInRhcmdldCIsImNvbG9yaXplIiwicm9sbFRhcmdldCIsImZpbGUiLCJta2RpciIsInNpemUiLCJmcmVxdWVuY3kiLCJsaW1pdCIsImNvdW50Iiwia2VlcCIsInN5bWxpbmsiLCJ0cmFuc3BvcnQiLCJwbGFuIiwidGFyZ2V0cyIsInByZXR0eSIsInB1c2giLCJyb2xsIiwibGVuZ3RoIiwidW5kZWZpbmVkIl0sIm1hcHBpbmdzIjoiOzs7OytCQW9GYUE7OztlQUFBQTs7O3dCQXBGa0M7QUE2Qi9DLE1BQU1DLG9CQUFvQjtBQUMxQixNQUFNQyx5QkFBeUI7QUFDL0IsTUFBTUMsb0JBQW9CO0FBRTFCLFNBQVNDO0lBQ1IsT0FBT0MsUUFBUUMsR0FBRyxDQUFDQyxRQUFRLEtBQUtDLG9CQUFZLENBQUNDLFVBQVUsR0FDcERELG9CQUFZLENBQUNDLFVBQVUsR0FDdkJELG9CQUFZLENBQUNFLFdBQVc7QUFDNUI7QUFFQSxTQUFTQyxVQUFVQyxJQUEwQixFQUFFQyxXQUF3QjtJQUN0RSxPQUFPLEFBQUNELENBQUFBLFFBQVEsYUFBWSxNQUFPLFlBQVlDLGdCQUFnQkwsb0JBQVksQ0FBQ0UsV0FBVztBQUN4RjtBQUVBLFNBQVNJLGFBQWFDLE9BQWdDO0lBQ3JELE9BQU87UUFDTkMsUUFBUTtRQUNSRCxTQUFTO1lBQUVFLFVBQVVGLFFBQVFFLFFBQVEsSUFBSTtRQUFLO0lBQy9DO0FBQ0Q7QUFFQSxTQUFTQyxXQUFXSCxPQUE4QjtJQUNqRCxPQUFPO1FBQ05DLFFBQVE7UUFDUkQsU0FBUztZQUNSSSxNQUFNSixRQUFRSSxJQUFJO1lBQ2xCQyxPQUFPTCxRQUFRSyxLQUFLLElBQUk7WUFDeEJDLE1BQU1OLFFBQVFNLElBQUksSUFBSXBCO1lBQ3RCcUIsV0FBV1AsUUFBUU8sU0FBUyxJQUFJcEI7WUFDaENxQixPQUFPO2dCQUFFQyxPQUFPVCxRQUFRVSxJQUFJLElBQUl0QjtZQUFrQjtZQUNsRHVCLFNBQVNYLFFBQVFXLE9BQU8sSUFBSTtRQUM3QjtJQUNEO0FBQ0Q7QUFFQSxTQUFTQyxVQUNSQyxJQUFvQixFQUNwQmYsY0FBMkJULG9CQUFvQjtJQUUvQyxNQUFNeUIsVUFBb0MsRUFBRTtJQUM1QyxJQUFJRCxLQUFLRSxNQUFNLElBQUluQixVQUFVaUIsS0FBS0UsTUFBTSxDQUFDbEIsSUFBSSxFQUFFQyxjQUFjO1FBQzVEZ0IsUUFBUUUsSUFBSSxDQUFDakIsYUFBYWMsS0FBS0UsTUFBTTtJQUN0QztJQUNBLElBQUlGLEtBQUtJLElBQUksSUFBSXJCLFVBQVVpQixLQUFLSSxJQUFJLENBQUNwQixJQUFJLEVBQUVDLGNBQWM7UUFDeERnQixRQUFRRSxJQUFJLENBQUNiLFdBQVdVLEtBQUtJLElBQUk7SUFDbEM7SUFDQSxJQUFJSCxRQUFRSSxNQUFNLEtBQUssR0FBRztRQUN6QixPQUFPQztJQUNSO0lBQ0EsSUFBSUwsUUFBUUksTUFBTSxLQUFLLEdBQUc7UUFDekIsT0FBT0osT0FBTyxDQUFDLEVBQUU7SUFDbEI7SUFDQSxPQUFPO1FBQUVBO0lBQVE7QUFDbEI7QUFFTyxNQUFNN0IsYUFBYTtJQUFFMkI7SUFBV3ZCO0FBQW1CIn0=
@@ -12,6 +12,7 @@ const _extensibility = require("@decohere/nexus/extensibility");
12
12
  const _system = require("@decohere/nexus/system");
13
13
  const _scribe = require("@decohere/scribe");
14
14
  const _pinoadapater = require("./pino.adapater.js");
15
+ const _pinorecipe = require("./pino.recipe.js");
15
16
  function _ts_decorate(decorators, target, key, desc) {
16
17
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17
18
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -27,23 +28,28 @@ class PinoExtensions {
27
28
  logLevel
28
29
  }, config);
29
30
  }
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);
31
+ static withPinoPretty(factory, logLevelOrOptions) {
32
+ const pretty = parsePrettyArg(logLevelOrOptions);
33
+ return attachRecipe(factory, {
34
+ pretty,
35
+ logLevel: pretty.logLevel
36
+ });
37
+ }
38
+ static withPinoRoll(factory, options) {
39
+ return attachRecipe(factory, {
40
+ roll: options,
41
+ logLevel: options.logLevel
42
+ });
39
43
  }
40
44
  static withPinoCustom(factory, options) {
41
- const { scribe, transports } = options;
45
+ const { scribe, transports } = options ?? {};
42
46
  return configureScribe(factory, scribe, transports);
43
47
  }
44
48
  }
45
49
  _ts_decorate([
46
- (0, _extensibility.extension)(_scribe.scribe),
50
+ (0, _extensibility.extension)(_scribe.scribe, {
51
+ static: true
52
+ }),
47
53
  _ts_metadata("design:type", Function),
48
54
  _ts_metadata("design:paramtypes", [
49
55
  typeof _scribe.scribe === "undefined" ? Object : _scribe.scribe,
@@ -53,7 +59,9 @@ _ts_decorate([
53
59
  _ts_metadata("design:returntype", void 0)
54
60
  ], PinoExtensions, "withPino", null);
55
61
  _ts_decorate([
56
- (0, _extensibility.extension)(_scribe.scribe),
62
+ (0, _extensibility.extension)(_scribe.scribe, {
63
+ static: true
64
+ }),
57
65
  _ts_metadata("design:type", Function),
58
66
  _ts_metadata("design:paramtypes", [
59
67
  typeof _scribe.scribe === "undefined" ? Object : _scribe.scribe,
@@ -62,7 +70,20 @@ _ts_decorate([
62
70
  _ts_metadata("design:returntype", void 0)
63
71
  ], PinoExtensions, "withPinoPretty", null);
64
72
  _ts_decorate([
65
- (0, _extensibility.extension)(_scribe.scribe),
73
+ (0, _extensibility.extension)(_scribe.scribe, {
74
+ static: true
75
+ }),
76
+ _ts_metadata("design:type", Function),
77
+ _ts_metadata("design:paramtypes", [
78
+ typeof _scribe.scribe === "undefined" ? Object : _scribe.scribe,
79
+ typeof PinoRollRecipeOptions === "undefined" ? Object : PinoRollRecipeOptions
80
+ ]),
81
+ _ts_metadata("design:returntype", void 0)
82
+ ], PinoExtensions, "withPinoRoll", null);
83
+ _ts_decorate([
84
+ (0, _extensibility.extension)(_scribe.scribe, {
85
+ static: true
86
+ }),
66
87
  _ts_metadata("design:type", Function),
67
88
  _ts_metadata("design:paramtypes", [
68
89
  typeof _scribe.scribe === "undefined" ? Object : _scribe.scribe,
@@ -70,19 +91,67 @@ _ts_decorate([
70
91
  ]),
71
92
  _ts_metadata("design:returntype", void 0)
72
93
  ], PinoExtensions, "withPinoCustom", null);
94
+ function parsePrettyArg(logLevelOrOptions) {
95
+ if (logLevelOrOptions == null) {
96
+ return {};
97
+ }
98
+ if (typeof logLevelOrOptions === "string") {
99
+ return {
100
+ logLevel: logLevelOrOptions
101
+ };
102
+ }
103
+ return logLevelOrOptions;
104
+ }
105
+ function attachRecipe(factory, plan) {
106
+ const loggerFactory = applyRecipe(factory, plan);
107
+ const chain = {
108
+ withPinoPretty (logLevelOrOptions) {
109
+ const pretty = parsePrettyArg(logLevelOrOptions);
110
+ return attachRecipe(factory, {
111
+ ...plan,
112
+ pretty: {
113
+ ...plan.pretty,
114
+ ...pretty
115
+ },
116
+ logLevel: pretty.logLevel ?? plan.logLevel
117
+ });
118
+ },
119
+ withPinoRoll (options) {
120
+ return attachRecipe(factory, {
121
+ ...plan,
122
+ roll: options,
123
+ logLevel: options.logLevel ?? plan.logLevel
124
+ });
125
+ }
126
+ };
127
+ return Object.assign(loggerFactory, chain, {
128
+ and: chain
129
+ });
130
+ }
131
+ function applyRecipe(factory, plan) {
132
+ const transport = _pinorecipe.pinoRecipe.transport(plan);
133
+ const adapter = new _pinoadapater.PinoAdapter(transport ? {
134
+ transport
135
+ } : {});
136
+ return factory.configure({
137
+ options: {
138
+ logLevel: plan.logLevel ?? _scribe.DefaultLogLevel
139
+ },
140
+ adapter
141
+ });
142
+ }
73
143
  function configureScribe(factory, options, config) {
74
144
  const environment = process.env.NODE_ENV ?? _system.DefaultEnvironment;
75
- const configs = Array.isArray(config) ? config : [
145
+ const configs = (Array.isArray(config) ? config : config != null ? [
76
146
  config
77
- ];
78
- const transports = configs.filter((config)=>config.environment && config.environment === environment || true);
79
- if (transports.length > 1) {
147
+ ] : []).filter((item)=>item.environment == null || item.environment === environment);
148
+ if (configs.length > 1) {
80
149
  throw new _scribe.LoggingConfigurationError(`There should only be one configuration per environment for logging`);
81
150
  }
82
- const transport = transports.at(0)?.transports;
83
- const adapter = new _pinoadapater.PinoAdapter({
151
+ const transport = configs.at(0)?.transports;
152
+ const adapter = new _pinoadapater.PinoAdapter(transport ? {
84
153
  transport
85
- });
154
+ } : {});
86
155
  return factory.configure({
87
156
  options: {
88
157
  ...options,
@@ -92,4 +161,4 @@ function configureScribe(factory, options, config) {
92
161
  });
93
162
  }
94
163
 
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUtcGluby9zcmMvc2NyaWJlLXBpbm8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5zaW9uIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9leHRlbnNpYmlsaXR5XCI7XG5pbXBvcnQgeyBEZWZhdWx0RW52aXJvbm1lbnQsIHR5cGUgRW52aXJvbm1lbnQgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL3N5c3RlbVwiO1xuaW1wb3J0IHtcblx0dHlwZSBEZWZhdWx0TGV2ZWxzLFxuXHREZWZhdWx0TG9nTGV2ZWwsXG5cdHR5cGUgTG9nZ2VyLFxuXHRMb2dnaW5nQ29uZmlndXJhdGlvbkVycm9yLFxuXHR0eXBlIFNjcmliZU9wdGlvbnMsXG5cdHNjcmliZSxcbn0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB0eXBlIHtcblx0VHJhbnNwb3J0TXVsdGlPcHRpb25zLFxuXHRUcmFuc3BvcnRQaXBlbGluZU9wdGlvbnMsXG5cdFRyYW5zcG9ydFNpbmdsZU9wdGlvbnMsXG59IGZyb20gXCJwaW5vXCI7XG5cbmltcG9ydCB7IFBpbm9BZGFwdGVyIH0gZnJvbSBcIi4vcGluby5hZGFwYXRlci5qc1wiO1xuXG50eXBlIFRyYW5zcG9ydENvbmZpZyA9IHtcblx0ZW52aXJvbm1lbnQ/OiBFbnZpcm9ubWVudDtcblx0dHJhbnNwb3J0czogVHJhbnNwb3J0U2luZ2xlT3B0aW9ucyB8IFRyYW5zcG9ydE11bHRpT3B0aW9ucyB8IFRyYW5zcG9ydFBpcGVsaW5lT3B0aW9ucztcbn07XG5cbnR5cGUgQ3VzdG9tTGV2ZWxPcHRpb25zPFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgQ3VzdG9tT25seSBleHRlbmRzIHRydWUgPSB1bmRlZmluZWQ+ID0ge1xuXHRzY3JpYmU/OiBTY3JpYmVPcHRpb25zPFQsIEN1c3RvbU9ubHk+O1xuXHR0cmFuc3BvcnRzPzogVHJhbnNwb3J0Q29uZmlnIHwgVHJhbnNwb3J0Q29uZmlnW107XG59O1xuXG5kZWNsYXJlIG1vZHVsZSBcIkBkZWNvaGVyZS9zY3JpYmVcIiB7XG5cdGludGVyZmFjZSBzY3JpYmUge1xuXHRcdHdpdGhQaW5vKFxuXHRcdFx0dHJhbnNwb3J0czogVHJhbnNwb3J0Q29uZmlnIHwgVHJhbnNwb3J0Q29uZmlnW10sXG5cdFx0XHRsb2dsZXZlbD86IERlZmF1bHRMZXZlbHMgfCBzdHJpbmcsXG5cdFx0KTogKG5hbWU/OiBzdHJpbmcpID0+IExvZ2dlcjtcblx0XHR3aXRoUGlub1ByZXR0eShsb2dMZXZlbD86IERlZmF1bHRMZXZlbHMgfCBzdHJpbmcpOiAobmFtZT86IHN0cmluZykgPT4gTG9nZ2VyO1xuXHRcdHdpdGhQaW5vQ3VzdG9tPFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgQ3VzdG9tT25seSBleHRlbmRzIHRydWUgPSB1bmRlZmluZWQ+KFxuXHRcdFx0b3B0aW9ucz86IEN1c3RvbUxldmVsT3B0aW9uczxULCBDdXN0b21Pbmx5Pixcblx0XHQpOiAobmFtZT86IHN0cmluZykgPT4gTG9nZ2VyPFQsIEN1c3RvbU9ubHk+O1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBQaW5vRXh0ZW5zaW9ucyB7XG5cdEBleHRlbnNpb24oc2NyaWJlKVxuXHRwdWJsaWMgc3RhdGljIHdpdGhQaW5vKFxuXHRcdGZhY3Rvcnk6IHNjcmliZSxcblx0XHRjb25maWc6IFRyYW5zcG9ydENvbmZpZyB8IFRyYW5zcG9ydENvbmZpZ1tdLFxuXHRcdGxvZ0xldmVsPzogRGVmYXVsdExldmVscyB8IHN0cmluZyxcblx0KSB7XG5cdFx0cmV0dXJuIGNvbmZpZ3VyZVNjcmliZShmYWN0b3J5LCB7IGxvZ0xldmVsIH0sIGNvbmZpZyk7XG5cdH1cblxuXHRAZXh0ZW5zaW9uKHNjcmliZSlcblx0cHVibGljIHN0YXRpYyB3aXRoUGlub1ByZXR0eShmYWN0b3J5OiBzY3JpYmUsIGxvZ0xldmVsPzogRGVmYXVsdExldmVscyB8IHN0cmluZykge1xuXHRcdHJldHVybiBQaW5vRXh0ZW5zaW9ucy53aXRoUGlubyhcblx0XHRcdGZhY3RvcnksXG5cdFx0XHR7IHRyYW5zcG9ydHM6IHsgdGFyZ2V0OiBcInBpbm8tcHJldHR5XCIsIG9wdGlvbnM6IHsgY29sb3JpemU6IHRydWUgfSB9IH0sXG5cdFx0XHRsb2dMZXZlbCxcblx0XHQpO1xuXHR9XG5cblx0QGV4dGVuc2lvbihzY3JpYmUpXG5cdHB1YmxpYyBzdGF0aWMgd2l0aFBpbm9DdXN0b208VCBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSA9IHVuZGVmaW5lZD4oXG5cdFx0ZmFjdG9yeTogc2NyaWJlLFxuXHRcdG9wdGlvbnM/OiBDdXN0b21MZXZlbE9wdGlvbnM8VCwgQ3VzdG9tT25seT4sXG5cdCkge1xuXHRcdGNvbnN0IHsgc2NyaWJlLCB0cmFuc3BvcnRzIH0gPSBvcHRpb25zO1xuXHRcdHJldHVybiBjb25maWd1cmVTY3JpYmUoZmFjdG9yeSwgc2NyaWJlLCB0cmFuc3BvcnRzKTtcblx0fVxufVxuXG5mdW5jdGlvbiBjb25maWd1cmVTY3JpYmU8VCBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSB8IGZhbHNlID0gZmFsc2U+KFxuXHRmYWN0b3J5OiBzY3JpYmUsXG5cdG9wdGlvbnM6IFNjcmliZU9wdGlvbnM8VCwgQ3VzdG9tT25seT4sXG5cdGNvbmZpZzogVHJhbnNwb3J0Q29uZmlnIHwgVHJhbnNwb3J0Q29uZmlnW10sXG4pIHtcblx0Y29uc3QgZW52aXJvbm1lbnQgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA/PyBEZWZhdWx0RW52aXJvbm1lbnQ7XG5cdGNvbnN0IGNvbmZpZ3MgPSBBcnJheS5pc0FycmF5KGNvbmZpZykgPyBjb25maWcgOiBbY29uZmlnXTtcblx0Y29uc3QgdHJhbnNwb3J0cyA9IGNvbmZpZ3MuZmlsdGVyKFxuXHRcdChjb25maWcpID0+IChjb25maWcuZW52aXJvbm1lbnQgJiYgY29uZmlnLmVudmlyb25tZW50ID09PSBlbnZpcm9ubWVudCkgfHwgdHJ1ZSxcblx0KTtcblxuXHRpZiAodHJhbnNwb3J0cy5sZW5ndGggPiAxKSB7XG5cdFx0dGhyb3cgbmV3IExvZ2dpbmdDb25maWd1cmF0aW9uRXJyb3IoXG5cdFx0XHRgVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIGNvbmZpZ3VyYXRpb24gcGVyIGVudmlyb25tZW50IGZvciBsb2dnaW5nYCxcblx0XHQpO1xuXHR9XG5cblx0Y29uc3QgdHJhbnNwb3J0ID0gdHJhbnNwb3J0cy5hdCgwKT8udHJhbnNwb3J0cztcblx0Y29uc3QgYWRhcHRlciA9IG5ldyBQaW5vQWRhcHRlcih7IHRyYW5zcG9ydCB9KTtcblx0cmV0dXJuIGZhY3RvcnkuY29uZmlndXJlKHtcblx0XHRvcHRpb25zOiB7IC4uLm9wdGlvbnMsIGxvZ0xldmVsOiBvcHRpb25zPy5sb2dMZXZlbCA/PyBEZWZhdWx0TG9nTGV2ZWwgfSxcblx0XHRhZGFwdGVyLFxuXHR9KTtcbn1cbiJdLCJuYW1lcyI6WyJQaW5vRXh0ZW5zaW9ucyIsIndpdGhQaW5vIiwiZmFjdG9yeSIsImNvbmZpZyIsImxvZ0xldmVsIiwiY29uZmlndXJlU2NyaWJlIiwid2l0aFBpbm9QcmV0dHkiLCJ0cmFuc3BvcnRzIiwidGFyZ2V0Iiwib3B0aW9ucyIsImNvbG9yaXplIiwid2l0aFBpbm9DdXN0b20iLCJzY3JpYmUiLCJlbnZpcm9ubWVudCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkRlZmF1bHRFbnZpcm9ubWVudCIsImNvbmZpZ3MiLCJBcnJheSIsImlzQXJyYXkiLCJmaWx0ZXIiLCJsZW5ndGgiLCJMb2dnaW5nQ29uZmlndXJhdGlvbkVycm9yIiwidHJhbnNwb3J0IiwiYXQiLCJhZGFwdGVyIiwiUGlub0FkYXB0ZXIiLCJjb25maWd1cmUiLCJEZWZhdWx0TG9nTGV2ZWwiXSwibWFwcGluZ3MiOiI7Ozs7K0JBeUNhQTs7O2VBQUFBOzs7K0JBekNhO3dCQUMyQjt3QkFROUM7OEJBT3FCOzs7Ozs7Ozs7O0FBeUJyQixNQUFNQTtJQUNaLE9BQ2NDLFNBQ2JDLE9BQWUsRUFDZkMsTUFBMkMsRUFDM0NDLFFBQWlDLEVBQ2hDO1FBQ0QsT0FBT0MsZ0JBQWdCSCxTQUFTO1lBQUVFO1FBQVMsR0FBR0Q7SUFDL0M7SUFFQSxPQUNjRyxlQUFlSixPQUFlLEVBQUVFLFFBQWlDLEVBQUU7UUFDaEYsT0FBT0osZUFBZUMsUUFBUSxDQUM3QkMsU0FDQTtZQUFFSyxZQUFZO2dCQUFFQyxRQUFRO2dCQUFlQyxTQUFTO29CQUFFQyxVQUFVO2dCQUFLO1lBQUU7UUFBRSxHQUNyRU47SUFFRjtJQUVBLE9BQ2NPLGVBQ2JULE9BQWUsRUFDZk8sT0FBMkMsRUFDMUM7UUFDRCxNQUFNLEVBQUVHLE1BQU0sRUFBRUwsVUFBVSxFQUFFLEdBQUdFO1FBQy9CLE9BQU9KLGdCQUFnQkgsU0FBU1UsUUFBUUw7SUFDekM7QUFDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxTQUFTRixnQkFDUkgsT0FBZSxFQUNmTyxPQUFxQyxFQUNyQ04sTUFBMkM7SUFFM0MsTUFBTVUsY0FBY0MsUUFBUUMsR0FBRyxDQUFDQyxRQUFRLElBQUlDLDBCQUFrQjtJQUM5RCxNQUFNQyxVQUFVQyxNQUFNQyxPQUFPLENBQUNqQixVQUFVQSxTQUFTO1FBQUNBO0tBQU87SUFDekQsTUFBTUksYUFBYVcsUUFBUUcsTUFBTSxDQUNoQyxDQUFDbEIsU0FBVyxBQUFDQSxPQUFPVSxXQUFXLElBQUlWLE9BQU9VLFdBQVcsS0FBS0EsZUFBZ0I7SUFHM0UsSUFBSU4sV0FBV2UsTUFBTSxHQUFHLEdBQUc7UUFDMUIsTUFBTSxJQUFJQyxpQ0FBeUIsQ0FDbEMsQ0FBQyxrRUFBa0UsQ0FBQztJQUV0RTtJQUVBLE1BQU1DLFlBQVlqQixXQUFXa0IsRUFBRSxDQUFDLElBQUlsQjtJQUNwQyxNQUFNbUIsVUFBVSxJQUFJQyx5QkFBVyxDQUFDO1FBQUVIO0lBQVU7SUFDNUMsT0FBT3RCLFFBQVEwQixTQUFTLENBQUM7UUFDeEJuQixTQUFTO1lBQUUsR0FBR0EsT0FBTztZQUFFTCxVQUFVSyxTQUFTTCxZQUFZeUIsdUJBQWU7UUFBQztRQUN0RUg7SUFDRDtBQUNEIn0=
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUtcGluby9zcmMvc2NyaWJlLXBpbm8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5zaW9uIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9leHRlbnNpYmlsaXR5XCI7XG5pbXBvcnQgeyBEZWZhdWx0RW52aXJvbm1lbnQsIHR5cGUgRW52aXJvbm1lbnQgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL3N5c3RlbVwiO1xuaW1wb3J0IHtcblx0dHlwZSBEZWZhdWx0TGV2ZWxzLFxuXHREZWZhdWx0TG9nTGV2ZWwsXG5cdHR5cGUgTG9nZ2VyLFxuXHRMb2dnaW5nQ29uZmlndXJhdGlvbkVycm9yLFxuXHR0eXBlIFNjcmliZU9wdGlvbnMsXG5cdHNjcmliZSxcbn0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB0eXBlIHtcblx0VHJhbnNwb3J0TXVsdGlPcHRpb25zLFxuXHRUcmFuc3BvcnRQaXBlbGluZU9wdGlvbnMsXG5cdFRyYW5zcG9ydFNpbmdsZU9wdGlvbnMsXG59IGZyb20gXCJwaW5vXCI7XG5cbmltcG9ydCB7IFBpbm9BZGFwdGVyIH0gZnJvbSBcIi4vcGluby5hZGFwYXRlci5qc1wiO1xuaW1wb3J0IHtcblx0dHlwZSBQaW5vUHJldHR5UmVjaXBlT3B0aW9ucyxcblx0dHlwZSBQaW5vUmVjaXBlUGxhbixcblx0dHlwZSBQaW5vUm9sbFJlY2lwZU9wdGlvbnMsXG5cdHBpbm9SZWNpcGUsXG59IGZyb20gXCIuL3Bpbm8ucmVjaXBlLmpzXCI7XG5cbnR5cGUgVHJhbnNwb3J0Q29uZmlnID0ge1xuXHRlbnZpcm9ubWVudD86IEVudmlyb25tZW50O1xuXHR0cmFuc3BvcnRzOiBUcmFuc3BvcnRTaW5nbGVPcHRpb25zIHwgVHJhbnNwb3J0TXVsdGlPcHRpb25zIHwgVHJhbnNwb3J0UGlwZWxpbmVPcHRpb25zO1xufTtcblxudHlwZSBDdXN0b21MZXZlbE9wdGlvbnM8VCBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSA9IHVuZGVmaW5lZD4gPSB7XG5cdHNjcmliZT86IFNjcmliZU9wdGlvbnM8VCwgQ3VzdG9tT25seT47XG5cdHRyYW5zcG9ydHM/OiBUcmFuc3BvcnRDb25maWcgfCBUcmFuc3BvcnRDb25maWdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFBpbm9Mb2dnZXJGYWN0b3J5ID0gKG5hbWU/OiBzdHJpbmcpID0+IExvZ2dlcjtcblxuZXhwb3J0IHR5cGUgUGlub1JlY2lwZUNoYWluID0ge1xuXHR3aXRoUGlub1ByZXR0eShcblx0XHRsb2dMZXZlbE9yT3B0aW9ucz86IERlZmF1bHRMZXZlbHMgfCBzdHJpbmcgfCBQaW5vUHJldHR5UmVjaXBlT3B0aW9ucyxcblx0KTogUGlub1JlY2lwZTtcblx0d2l0aFBpbm9Sb2xsKG9wdGlvbnM6IFBpbm9Sb2xsUmVjaXBlT3B0aW9ucyk6IFBpbm9SZWNpcGU7XG59O1xuXG5leHBvcnQgdHlwZSBQaW5vUmVjaXBlID0gUGlub0xvZ2dlckZhY3RvcnkgJlxuXHRQaW5vUmVjaXBlQ2hhaW4gJiB7XG5cdFx0cmVhZG9ubHkgYW5kOiBQaW5vUmVjaXBlQ2hhaW47XG5cdH07XG5cbmRlY2xhcmUgbW9kdWxlIFwiQGRlY29oZXJlL3NjcmliZVwiIHtcblx0aW50ZXJmYWNlIHNjcmliZSB7XG5cdFx0d2l0aFBpbm8oXG5cdFx0XHR0cmFuc3BvcnRzOiBUcmFuc3BvcnRDb25maWcgfCBUcmFuc3BvcnRDb25maWdbXSxcblx0XHRcdGxvZ2xldmVsPzogRGVmYXVsdExldmVscyB8IHN0cmluZyxcblx0XHQpOiBQaW5vTG9nZ2VyRmFjdG9yeTtcblx0XHQvKipcblx0XHQgKiBDb2xvcml6ZWQgcHJldHR5IHRyYW5zcG9ydC4gRGV2ZWxvcG1lbnQgb25seSB1bmxlc3MgYHsgd2hlbjogXCJhbHdheXNcIiB9YC5cblx0XHQgKiBDaGFpbiB3aXRoIGAuYW5kLndpdGhQaW5vUm9sbCh7IGZpbGUgfSlgLiBQcm9kdWN0aW9uIHdyaXRlcyBKU09OIHRvIHN0ZG91dFxuXHRcdCAqIHNvIGxvZyBzaGlwcGluZyBzdGF5cyBvdXRzaWRlIHRoZSBwcm9jZXNzLlxuXHRcdCAqL1xuXHRcdHdpdGhQaW5vUHJldHR5KFxuXHRcdFx0bG9nTGV2ZWxPck9wdGlvbnM/OiBEZWZhdWx0TGV2ZWxzIHwgc3RyaW5nIHwgUGlub1ByZXR0eVJlY2lwZU9wdGlvbnMsXG5cdFx0KTogUGlub1JlY2lwZTtcblx0XHQvKipcblx0XHQgKiBSb2xsaW5nIGxvZyBmaWxlcy4gRGV2ZWxvcG1lbnQgb25seSB1bmxlc3MgYHsgd2hlbjogXCJhbHdheXNcIiB9YC5cblx0XHQgKiBEbyBub3QgZW5hYmxlIGluIHByb2R1Y3Rpb24g4oCUIHNoaXAgc3Rkb3V0IGZyb20gYSBzaWRlY2FyIG9yIHBsYXRmb3JtIGFnZW50LlxuXHRcdCAqL1xuXHRcdHdpdGhQaW5vUm9sbChvcHRpb25zOiBQaW5vUm9sbFJlY2lwZU9wdGlvbnMpOiBQaW5vUmVjaXBlO1xuXHRcdHdpdGhQaW5vQ3VzdG9tPFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgQ3VzdG9tT25seSBleHRlbmRzIHRydWUgPSB1bmRlZmluZWQ+KFxuXHRcdFx0b3B0aW9ucz86IEN1c3RvbUxldmVsT3B0aW9uczxULCBDdXN0b21Pbmx5Pixcblx0XHQpOiBQaW5vTG9nZ2VyRmFjdG9yeTtcblx0fVxuXHRuYW1lc3BhY2Ugc2NyaWJlIHtcblx0XHRmdW5jdGlvbiB3aXRoUGlubyhcblx0XHRcdHRyYW5zcG9ydHM6IFRyYW5zcG9ydENvbmZpZyB8IFRyYW5zcG9ydENvbmZpZ1tdLFxuXHRcdFx0bG9nbGV2ZWw/OiBEZWZhdWx0TGV2ZWxzIHwgc3RyaW5nLFxuXHRcdCk6IFBpbm9Mb2dnZXJGYWN0b3J5O1xuXHRcdGZ1bmN0aW9uIHdpdGhQaW5vUHJldHR5KFxuXHRcdFx0bG9nTGV2ZWxPck9wdGlvbnM/OiBEZWZhdWx0TGV2ZWxzIHwgc3RyaW5nIHwgUGlub1ByZXR0eVJlY2lwZU9wdGlvbnMsXG5cdFx0KTogUGlub1JlY2lwZTtcblx0XHRmdW5jdGlvbiB3aXRoUGlub1JvbGwob3B0aW9uczogUGlub1JvbGxSZWNpcGVPcHRpb25zKTogUGlub1JlY2lwZTtcblx0XHRmdW5jdGlvbiB3aXRoUGlub0N1c3RvbTxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlID0gdW5kZWZpbmVkPihcblx0XHRcdG9wdGlvbnM/OiBDdXN0b21MZXZlbE9wdGlvbnM8VCwgQ3VzdG9tT25seT4sXG5cdFx0KTogUGlub0xvZ2dlckZhY3Rvcnk7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFBpbm9FeHRlbnNpb25zIHtcblx0QGV4dGVuc2lvbihzY3JpYmUsIHsgc3RhdGljOiB0cnVlIH0pXG5cdHB1YmxpYyBzdGF0aWMgd2l0aFBpbm8oXG5cdFx0ZmFjdG9yeTogc2NyaWJlLFxuXHRcdGNvbmZpZzogVHJhbnNwb3J0Q29uZmlnIHwgVHJhbnNwb3J0Q29uZmlnW10sXG5cdFx0bG9nTGV2ZWw/OiBEZWZhdWx0TGV2ZWxzIHwgc3RyaW5nLFxuXHQpIHtcblx0XHRyZXR1cm4gY29uZmlndXJlU2NyaWJlKGZhY3RvcnksIHsgbG9nTGV2ZWwgfSwgY29uZmlnKTtcblx0fVxuXG5cdEBleHRlbnNpb24oc2NyaWJlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgc3RhdGljIHdpdGhQaW5vUHJldHR5KFxuXHRcdGZhY3Rvcnk6IHNjcmliZSxcblx0XHRsb2dMZXZlbE9yT3B0aW9ucz86IERlZmF1bHRMZXZlbHMgfCBzdHJpbmcgfCBQaW5vUHJldHR5UmVjaXBlT3B0aW9ucyxcblx0KSB7XG5cdFx0Y29uc3QgcHJldHR5ID0gcGFyc2VQcmV0dHlBcmcobG9nTGV2ZWxPck9wdGlvbnMpO1xuXHRcdHJldHVybiBhdHRhY2hSZWNpcGUoZmFjdG9yeSwgeyBwcmV0dHksIGxvZ0xldmVsOiBwcmV0dHkubG9nTGV2ZWwgfSk7XG5cdH1cblxuXHRAZXh0ZW5zaW9uKHNjcmliZSwgeyBzdGF0aWM6IHRydWUgfSlcblx0cHVibGljIHN0YXRpYyB3aXRoUGlub1JvbGwoZmFjdG9yeTogc2NyaWJlLCBvcHRpb25zOiBQaW5vUm9sbFJlY2lwZU9wdGlvbnMpIHtcblx0XHRyZXR1cm4gYXR0YWNoUmVjaXBlKGZhY3RvcnksIHsgcm9sbDogb3B0aW9ucywgbG9nTGV2ZWw6IG9wdGlvbnMubG9nTGV2ZWwgfSk7XG5cdH1cblxuXHRAZXh0ZW5zaW9uKHNjcmliZSwgeyBzdGF0aWM6IHRydWUgfSlcblx0cHVibGljIHN0YXRpYyB3aXRoUGlub0N1c3RvbTxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlID0gdW5kZWZpbmVkPihcblx0XHRmYWN0b3J5OiBzY3JpYmUsXG5cdFx0b3B0aW9ucz86IEN1c3RvbUxldmVsT3B0aW9uczxULCBDdXN0b21Pbmx5Pixcblx0KSB7XG5cdFx0Y29uc3QgeyBzY3JpYmUsIHRyYW5zcG9ydHMgfSA9IG9wdGlvbnMgPz8ge307XG5cdFx0cmV0dXJuIGNvbmZpZ3VyZVNjcmliZShmYWN0b3J5LCBzY3JpYmUsIHRyYW5zcG9ydHMpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHBhcnNlUHJldHR5QXJnKFxuXHRsb2dMZXZlbE9yT3B0aW9ucz86IERlZmF1bHRMZXZlbHMgfCBzdHJpbmcgfCBQaW5vUHJldHR5UmVjaXBlT3B0aW9ucyxcbik6IFBpbm9QcmV0dHlSZWNpcGVPcHRpb25zIHtcblx0aWYgKGxvZ0xldmVsT3JPcHRpb25zID09IG51bGwpIHtcblx0XHRyZXR1cm4ge307XG5cdH1cblx0aWYgKHR5cGVvZiBsb2dMZXZlbE9yT3B0aW9ucyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiB7IGxvZ0xldmVsOiBsb2dMZXZlbE9yT3B0aW9ucyB9O1xuXHR9XG5cdHJldHVybiBsb2dMZXZlbE9yT3B0aW9ucztcbn1cblxuZnVuY3Rpb24gYXR0YWNoUmVjaXBlKGZhY3Rvcnk6IHNjcmliZSwgcGxhbjogUGlub1JlY2lwZVBsYW4pOiBQaW5vUmVjaXBlIHtcblx0Y29uc3QgbG9nZ2VyRmFjdG9yeSA9IGFwcGx5UmVjaXBlKGZhY3RvcnksIHBsYW4pO1xuXHRjb25zdCBjaGFpbjogUGlub1JlY2lwZUNoYWluID0ge1xuXHRcdHdpdGhQaW5vUHJldHR5KGxvZ0xldmVsT3JPcHRpb25zKSB7XG5cdFx0XHRjb25zdCBwcmV0dHkgPSBwYXJzZVByZXR0eUFyZyhsb2dMZXZlbE9yT3B0aW9ucyk7XG5cdFx0XHRyZXR1cm4gYXR0YWNoUmVjaXBlKGZhY3RvcnksIHtcblx0XHRcdFx0Li4ucGxhbixcblx0XHRcdFx0cHJldHR5OiB7IC4uLnBsYW4ucHJldHR5LCAuLi5wcmV0dHkgfSxcblx0XHRcdFx0bG9nTGV2ZWw6IHByZXR0eS5sb2dMZXZlbCA/PyBwbGFuLmxvZ0xldmVsLFxuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHR3aXRoUGlub1JvbGwob3B0aW9ucykge1xuXHRcdFx0cmV0dXJuIGF0dGFjaFJlY2lwZShmYWN0b3J5LCB7XG5cdFx0XHRcdC4uLnBsYW4sXG5cdFx0XHRcdHJvbGw6IG9wdGlvbnMsXG5cdFx0XHRcdGxvZ0xldmVsOiBvcHRpb25zLmxvZ0xldmVsID8/IHBsYW4ubG9nTGV2ZWwsXG5cdFx0XHR9KTtcblx0XHR9LFxuXHR9O1xuXHRyZXR1cm4gT2JqZWN0LmFzc2lnbihsb2dnZXJGYWN0b3J5LCBjaGFpbiwgeyBhbmQ6IGNoYWluIH0pO1xufVxuXG5mdW5jdGlvbiBhcHBseVJlY2lwZShmYWN0b3J5OiBzY3JpYmUsIHBsYW46IFBpbm9SZWNpcGVQbGFuKTogUGlub0xvZ2dlckZhY3Rvcnkge1xuXHRjb25zdCB0cmFuc3BvcnQgPSBwaW5vUmVjaXBlLnRyYW5zcG9ydChwbGFuKTtcblx0Y29uc3QgYWRhcHRlciA9IG5ldyBQaW5vQWRhcHRlcih0cmFuc3BvcnQgPyB7IHRyYW5zcG9ydCB9IDoge30pO1xuXHRyZXR1cm4gZmFjdG9yeS5jb25maWd1cmUoe1xuXHRcdG9wdGlvbnM6IHsgbG9nTGV2ZWw6IHBsYW4ubG9nTGV2ZWwgPz8gRGVmYXVsdExvZ0xldmVsIH0sXG5cdFx0YWRhcHRlcixcblx0fSk7XG59XG5cbmZ1bmN0aW9uIGNvbmZpZ3VyZVNjcmliZTxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdGZhY3Rvcnk6IHNjcmliZSxcblx0b3B0aW9uczogU2NyaWJlT3B0aW9uczxULCBDdXN0b21Pbmx5Pixcblx0Y29uZmlnPzogVHJhbnNwb3J0Q29uZmlnIHwgVHJhbnNwb3J0Q29uZmlnW10sXG4pIHtcblx0Y29uc3QgZW52aXJvbm1lbnQgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA/PyBEZWZhdWx0RW52aXJvbm1lbnQ7XG5cdGNvbnN0IGNvbmZpZ3MgPSAoQXJyYXkuaXNBcnJheShjb25maWcpID8gY29uZmlnIDogY29uZmlnICE9IG51bGwgPyBbY29uZmlnXSA6IFtdKS5maWx0ZXIoXG5cdFx0KGl0ZW0pID0+IGl0ZW0uZW52aXJvbm1lbnQgPT0gbnVsbCB8fCBpdGVtLmVudmlyb25tZW50ID09PSBlbnZpcm9ubWVudCxcblx0KTtcblxuXHRpZiAoY29uZmlncy5sZW5ndGggPiAxKSB7XG5cdFx0dGhyb3cgbmV3IExvZ2dpbmdDb25maWd1cmF0aW9uRXJyb3IoXG5cdFx0XHRgVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIGNvbmZpZ3VyYXRpb24gcGVyIGVudmlyb25tZW50IGZvciBsb2dnaW5nYCxcblx0XHQpO1xuXHR9XG5cblx0Y29uc3QgdHJhbnNwb3J0ID0gY29uZmlncy5hdCgwKT8udHJhbnNwb3J0cztcblx0Y29uc3QgYWRhcHRlciA9IG5ldyBQaW5vQWRhcHRlcih0cmFuc3BvcnQgPyB7IHRyYW5zcG9ydCB9IDoge30pO1xuXHRyZXR1cm4gZmFjdG9yeS5jb25maWd1cmUoe1xuXHRcdG9wdGlvbnM6IHsgLi4ub3B0aW9ucywgbG9nTGV2ZWw6IG9wdGlvbnM/LmxvZ0xldmVsID8/IERlZmF1bHRMb2dMZXZlbCB9LFxuXHRcdGFkYXB0ZXIsXG5cdH0pO1xufVxuIl0sIm5hbWVzIjpbIlBpbm9FeHRlbnNpb25zIiwid2l0aFBpbm8iLCJmYWN0b3J5IiwiY29uZmlnIiwibG9nTGV2ZWwiLCJjb25maWd1cmVTY3JpYmUiLCJ3aXRoUGlub1ByZXR0eSIsImxvZ0xldmVsT3JPcHRpb25zIiwicHJldHR5IiwicGFyc2VQcmV0dHlBcmciLCJhdHRhY2hSZWNpcGUiLCJ3aXRoUGlub1JvbGwiLCJvcHRpb25zIiwicm9sbCIsIndpdGhQaW5vQ3VzdG9tIiwic2NyaWJlIiwidHJhbnNwb3J0cyIsInN0YXRpYyIsInBsYW4iLCJsb2dnZXJGYWN0b3J5IiwiYXBwbHlSZWNpcGUiLCJjaGFpbiIsIk9iamVjdCIsImFzc2lnbiIsImFuZCIsInRyYW5zcG9ydCIsInBpbm9SZWNpcGUiLCJhZGFwdGVyIiwiUGlub0FkYXB0ZXIiLCJjb25maWd1cmUiLCJEZWZhdWx0TG9nTGV2ZWwiLCJlbnZpcm9ubWVudCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkRlZmF1bHRFbnZpcm9ubWVudCIsImNvbmZpZ3MiLCJBcnJheSIsImlzQXJyYXkiLCJmaWx0ZXIiLCJpdGVtIiwibGVuZ3RoIiwiTG9nZ2luZ0NvbmZpZ3VyYXRpb25FcnJvciIsImF0Il0sIm1hcHBpbmdzIjoiOzs7OytCQXNGYUE7OztlQUFBQTs7OytCQXRGYTt3QkFDMkI7d0JBUTlDOzhCQU9xQjs0QkFNckI7Ozs7Ozs7Ozs7QUFnRUEsTUFBTUE7SUFDWixPQUNjQyxTQUNiQyxPQUFlLEVBQ2ZDLE1BQTJDLEVBQzNDQyxRQUFpQyxFQUNoQztRQUNELE9BQU9DLGdCQUFnQkgsU0FBUztZQUFFRTtRQUFTLEdBQUdEO0lBQy9DO0lBRUEsT0FDY0csZUFDYkosT0FBZSxFQUNmSyxpQkFBb0UsRUFDbkU7UUFDRCxNQUFNQyxTQUFTQyxlQUFlRjtRQUM5QixPQUFPRyxhQUFhUixTQUFTO1lBQUVNO1lBQVFKLFVBQVVJLE9BQU9KLFFBQVE7UUFBQztJQUNsRTtJ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
package/es6/src/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./pino.adapater.js";
2
+ export * from "./pino.recipe.js";
2
3
  export * from "./scribe-pino.js";
3
4
 
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUtcGluby9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcGluby5hZGFwYXRlci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2NyaWJlLXBpbm8uanNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQjtBQUNuQyxjQUFjLG1CQUFtQiJ9
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUtcGluby9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcGluby5hZGFwYXRlci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGluby5yZWNpcGUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NjcmliZS1waW5vLmpzXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUI7QUFDbkMsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyxtQkFBbUIifQ==
@@ -0,0 +1,57 @@
1
+ import { Environments } from "@decohere/nexus/system";
2
+ const DEFAULT_ROLL_SIZE = "10m";
3
+ const DEFAULT_ROLL_FREQUENCY = "daily";
4
+ const DEFAULT_ROLL_KEEP = 14;
5
+ function currentEnvironment() {
6
+ return process.env.NODE_ENV === Environments.production ? Environments.production : Environments.development;
7
+ }
8
+ function isEnabled(when, environment) {
9
+ return (when ?? "development") === "always" || environment === Environments.development;
10
+ }
11
+ function prettyTarget(options) {
12
+ return {
13
+ target: "pino-pretty",
14
+ options: {
15
+ colorize: options.colorize ?? true
16
+ }
17
+ };
18
+ }
19
+ function rollTarget(options) {
20
+ return {
21
+ target: "pino-roll",
22
+ options: {
23
+ file: options.file,
24
+ mkdir: options.mkdir ?? true,
25
+ size: options.size ?? DEFAULT_ROLL_SIZE,
26
+ frequency: options.frequency ?? DEFAULT_ROLL_FREQUENCY,
27
+ limit: {
28
+ count: options.keep ?? DEFAULT_ROLL_KEEP
29
+ },
30
+ symlink: options.symlink ?? true
31
+ }
32
+ };
33
+ }
34
+ function transport(plan, environment = currentEnvironment()) {
35
+ const targets = [];
36
+ if (plan.pretty && isEnabled(plan.pretty.when, environment)) {
37
+ targets.push(prettyTarget(plan.pretty));
38
+ }
39
+ if (plan.roll && isEnabled(plan.roll.when, environment)) {
40
+ targets.push(rollTarget(plan.roll));
41
+ }
42
+ if (targets.length === 0) {
43
+ return undefined;
44
+ }
45
+ if (targets.length === 1) {
46
+ return targets[0];
47
+ }
48
+ return {
49
+ targets
50
+ };
51
+ }
52
+ export const pinoRecipe = {
53
+ transport,
54
+ currentEnvironment
55
+ };
56
+
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUtcGluby9zcmMvcGluby5yZWNpcGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBFbnZpcm9ubWVudCwgRW52aXJvbm1lbnRzIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9zeXN0ZW1cIjtcbmltcG9ydCB0eXBlIHsgVHJhbnNwb3J0TXVsdGlPcHRpb25zLCBUcmFuc3BvcnRTaW5nbGVPcHRpb25zIH0gZnJvbSBcInBpbm9cIjtcblxuLyoqIFByZXR0eSBhbmQgcm9sbCBhcmUgbG9jYWwtZGV2IGNvbnZlbmllbmNlcy4gUHJvZHVjdGlvbiBzaGlwcyBKU09OIG9uIHN0ZG91dC4gKi9cbmV4cG9ydCB0eXBlIFBpbm9XaGVuID0gXCJkZXZlbG9wbWVudFwiIHwgXCJhbHdheXNcIjtcblxuZXhwb3J0IHR5cGUgUGlub1ByZXR0eVJlY2lwZU9wdGlvbnMgPSB7XG5cdGNvbG9yaXplPzogYm9vbGVhbjtcblx0bG9nTGV2ZWw/OiBzdHJpbmc7XG5cdHdoZW4/OiBQaW5vV2hlbjtcbn07XG5cbmV4cG9ydCB0eXBlIFBpbm9Sb2xsUmVjaXBlT3B0aW9ucyA9IHtcblx0ZmlsZTogc3RyaW5nO1xuXHRzaXplPzogc3RyaW5nO1xuXHRmcmVxdWVuY3k/OiBzdHJpbmcgfCBudW1iZXI7XG5cdGtlZXA/OiBudW1iZXI7XG5cdG1rZGlyPzogYm9vbGVhbjtcblx0c3ltbGluaz86IGJvb2xlYW47XG5cdGxvZ0xldmVsPzogc3RyaW5nO1xuXHR3aGVuPzogUGlub1doZW47XG59O1xuXG5leHBvcnQgdHlwZSBQaW5vUmVjaXBlUGxhbiA9IHtcblx0cHJldHR5PzogUGlub1ByZXR0eVJlY2lwZU9wdGlvbnM7XG5cdHJvbGw/OiBQaW5vUm9sbFJlY2lwZU9wdGlvbnM7XG5cdGxvZ0xldmVsPzogc3RyaW5nO1xufTtcblxuY29uc3QgREVGQVVMVF9ST0xMX1NJWkUgPSBcIjEwbVwiO1xuY29uc3QgREVGQVVMVF9ST0xMX0ZSRVFVRU5DWSA9IFwiZGFpbHlcIjtcbmNvbnN0IERFRkFVTFRfUk9MTF9LRUVQID0gMTQ7XG5cbmZ1bmN0aW9uIGN1cnJlbnRFbnZpcm9ubWVudCgpOiBFbnZpcm9ubWVudCB7XG5cdHJldHVybiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gRW52aXJvbm1lbnRzLnByb2R1Y3Rpb25cblx0XHQ/IEVudmlyb25tZW50cy5wcm9kdWN0aW9uXG5cdFx0OiBFbnZpcm9ubWVudHMuZGV2ZWxvcG1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzRW5hYmxlZCh3aGVuOiBQaW5vV2hlbiB8IHVuZGVmaW5lZCwgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50KTogYm9vbGVhbiB7XG5cdHJldHVybiAod2hlbiA/PyBcImRldmVsb3BtZW50XCIpID09PSBcImFsd2F5c1wiIHx8IGVudmlyb25tZW50ID09PSBFbnZpcm9ubWVudHMuZGV2ZWxvcG1lbnQ7XG59XG5cbmZ1bmN0aW9uIHByZXR0eVRhcmdldChvcHRpb25zOiBQaW5vUHJldHR5UmVjaXBlT3B0aW9ucyk6IFRyYW5zcG9ydFNpbmdsZU9wdGlvbnMge1xuXHRyZXR1cm4ge1xuXHRcdHRhcmdldDogXCJwaW5vLXByZXR0eVwiLFxuXHRcdG9wdGlvbnM6IHsgY29sb3JpemU6IG9wdGlvbnMuY29sb3JpemUgPz8gdHJ1ZSB9LFxuXHR9O1xufVxuXG5mdW5jdGlvbiByb2xsVGFyZ2V0KG9wdGlvbnM6IFBpbm9Sb2xsUmVjaXBlT3B0aW9ucyk6IFRyYW5zcG9ydFNpbmdsZU9wdGlvbnMge1xuXHRyZXR1cm4ge1xuXHRcdHRhcmdldDogXCJwaW5vLXJvbGxcIixcblx0XHRvcHRpb25zOiB7XG5cdFx0XHRmaWxlOiBvcHRpb25zLmZpbGUsXG5cdFx0XHRta2Rpcjogb3B0aW9ucy5ta2RpciA/PyB0cnVlLFxuXHRcdFx0c2l6ZTogb3B0aW9ucy5zaXplID8/IERFRkFVTFRfUk9MTF9TSVpFLFxuXHRcdFx0ZnJlcXVlbmN5OiBvcHRpb25zLmZyZXF1ZW5jeSA/PyBERUZBVUxUX1JPTExfRlJFUVVFTkNZLFxuXHRcdFx0bGltaXQ6IHsgY291bnQ6IG9wdGlvbnMua2VlcCA/PyBERUZBVUxUX1JPTExfS0VFUCB9LFxuXHRcdFx0c3ltbGluazogb3B0aW9ucy5zeW1saW5rID8/IHRydWUsXG5cdFx0fSxcblx0fTtcbn1cblxuZnVuY3Rpb24gdHJhbnNwb3J0KFxuXHRwbGFuOiBQaW5vUmVjaXBlUGxhbixcblx0ZW52aXJvbm1lbnQ6IEVudmlyb25tZW50ID0gY3VycmVudEVudmlyb25tZW50KCksXG4pOiBUcmFuc3BvcnRTaW5nbGVPcHRpb25zIHwgVHJhbnNwb3J0TXVsdGlPcHRpb25zIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgdGFyZ2V0czogVHJhbnNwb3J0U2luZ2xlT3B0aW9uc1tdID0gW107XG5cdGlmIChwbGFuLnByZXR0eSAmJiBpc0VuYWJsZWQocGxhbi5wcmV0dHkud2hlbiwgZW52aXJvbm1lbnQpKSB7XG5cdFx0dGFyZ2V0cy5wdXNoKHByZXR0eVRhcmdldChwbGFuLnByZXR0eSkpO1xuXHR9XG5cdGlmIChwbGFuLnJvbGwgJiYgaXNFbmFibGVkKHBsYW4ucm9sbC53aGVuLCBlbnZpcm9ubWVudCkpIHtcblx0XHR0YXJnZXRzLnB1c2gocm9sbFRhcmdldChwbGFuLnJvbGwpKTtcblx0fVxuXHRpZiAodGFyZ2V0cy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGlmICh0YXJnZXRzLmxlbmd0aCA9PT0gMSkge1xuXHRcdHJldHVybiB0YXJnZXRzWzBdO1xuXHR9XG5cdHJldHVybiB7IHRhcmdldHMgfTtcbn1cblxuZXhwb3J0IGNvbnN0IHBpbm9SZWNpcGUgPSB7IHRyYW5zcG9ydCwgY3VycmVudEVudmlyb25tZW50IH07XG4iXSwibmFtZXMiOlsiRW52aXJvbm1lbnRzIiwiREVGQVVMVF9ST0xMX1NJWkUiLCJERUZBVUxUX1JPTExfRlJFUVVFTkNZIiwiREVGQVVMVF9ST0xMX0tFRVAiLCJjdXJyZW50RW52aXJvbm1lbnQiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJwcm9kdWN0aW9uIiwiZGV2ZWxvcG1lbnQiLCJpc0VuYWJsZWQiLCJ3aGVuIiwiZW52aXJvbm1lbnQiLCJwcmV0dHlUYXJnZXQiLCJvcHRpb25zIiwidGFyZ2V0IiwiY29sb3JpemUiLCJyb2xsVGFyZ2V0IiwiZmlsZSIsIm1rZGlyIiwic2l6ZSIsImZyZXF1ZW5jeSIsImxpbWl0IiwiY291bnQiLCJrZWVwIiwic3ltbGluayIsInRyYW5zcG9ydCIsInBsYW4iLCJ0YXJnZXRzIiwicHJldHR5IiwicHVzaCIsInJvbGwiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJwaW5vUmVjaXBlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUEyQkEsWUFBWSxRQUFRLHlCQUF5QjtBQTZCeEUsTUFBTUMsb0JBQW9CO0FBQzFCLE1BQU1DLHlCQUF5QjtBQUMvQixNQUFNQyxvQkFBb0I7QUFFMUIsU0FBU0M7SUFDUixPQUFPQyxRQUFRQyxHQUFHLENBQUNDLFFBQVEsS0FBS1AsYUFBYVEsVUFBVSxHQUNwRFIsYUFBYVEsVUFBVSxHQUN2QlIsYUFBYVMsV0FBVztBQUM1QjtBQUVBLFNBQVNDLFVBQVVDLElBQTBCLEVBQUVDLFdBQXdCO0lBQ3RFLE9BQU8sQUFBQ0QsQ0FBQUEsUUFBUSxhQUFZLE1BQU8sWUFBWUMsZ0JBQWdCWixhQUFhUyxXQUFXO0FBQ3hGO0FBRUEsU0FBU0ksYUFBYUMsT0FBZ0M7SUFDckQsT0FBTztRQUNOQyxRQUFRO1FBQ1JELFNBQVM7WUFBRUUsVUFBVUYsUUFBUUUsUUFBUSxJQUFJO1FBQUs7SUFDL0M7QUFDRDtBQUVBLFNBQVNDLFdBQVdILE9BQThCO0lBQ2pELE9BQU87UUFDTkMsUUFBUTtRQUNSRCxTQUFTO1lBQ1JJLE1BQU1KLFFBQVFJLElBQUk7WUFDbEJDLE9BQU9MLFFBQVFLLEtBQUssSUFBSTtZQUN4QkMsTUFBTU4sUUFBUU0sSUFBSSxJQUFJbkI7WUFDdEJvQixXQUFXUCxRQUFRTyxTQUFTLElBQUluQjtZQUNoQ29CLE9BQU87Z0JBQUVDLE9BQU9ULFFBQVFVLElBQUksSUFBSXJCO1lBQWtCO1lBQ2xEc0IsU0FBU1gsUUFBUVcsT0FBTyxJQUFJO1FBQzdCO0lBQ0Q7QUFDRDtBQUVBLFNBQVNDLFVBQ1JDLElBQW9CLEVBQ3BCZixjQUEyQlIsb0JBQW9CO0lBRS9DLE1BQU13QixVQUFvQyxFQUFFO0lBQzVDLElBQUlELEtBQUtFLE1BQU0sSUFBSW5CLFVBQVVpQixLQUFLRSxNQUFNLENBQUNsQixJQUFJLEVBQUVDLGNBQWM7UUFDNURnQixRQUFRRSxJQUFJLENBQUNqQixhQUFhYyxLQUFLRSxNQUFNO0lBQ3RDO0lBQ0EsSUFBSUYsS0FBS0ksSUFBSSxJQUFJckIsVUFBVWlCLEtBQUtJLElBQUksQ0FBQ3BCLElBQUksRUFBRUMsY0FBYztRQUN4RGdCLFFBQVFFLElBQUksQ0FBQ2IsV0FBV1UsS0FBS0ksSUFBSTtJQUNsQztJQUNBLElBQUlILFFBQVFJLE1BQU0sS0FBSyxHQUFHO1FBQ3pCLE9BQU9DO0lBQ1I7SUFDQSxJQUFJTCxRQUFRSSxNQUFNLEtBQUssR0FBRztRQUN6QixPQUFPSixPQUFPLENBQUMsRUFBRTtJQUNsQjtJQUNBLE9BQU87UUFBRUE7SUFBUTtBQUNsQjtBQUVBLE9BQU8sTUFBTU0sYUFBYTtJQUFFUjtJQUFXdEI7QUFBbUIsRUFBRSJ9
@@ -11,29 +11,35 @@ import { extension } from "@decohere/nexus/extensibility";
11
11
  import { DefaultEnvironment } from "@decohere/nexus/system";
12
12
  import { DefaultLogLevel, LoggingConfigurationError, scribe } from "@decohere/scribe";
13
13
  import { PinoAdapter } from "./pino.adapater.js";
14
+ import { pinoRecipe } from "./pino.recipe.js";
14
15
  export class PinoExtensions {
15
16
  static withPino(factory, config, logLevel) {
16
17
  return configureScribe(factory, {
17
18
  logLevel
18
19
  }, config);
19
20
  }
20
- static withPinoPretty(factory, logLevel) {
21
- return PinoExtensions.withPino(factory, {
22
- transports: {
23
- target: "pino-pretty",
24
- options: {
25
- colorize: true
26
- }
27
- }
28
- }, logLevel);
21
+ static withPinoPretty(factory, logLevelOrOptions) {
22
+ const pretty = parsePrettyArg(logLevelOrOptions);
23
+ return attachRecipe(factory, {
24
+ pretty,
25
+ logLevel: pretty.logLevel
26
+ });
27
+ }
28
+ static withPinoRoll(factory, options) {
29
+ return attachRecipe(factory, {
30
+ roll: options,
31
+ logLevel: options.logLevel
32
+ });
29
33
  }
30
34
  static withPinoCustom(factory, options) {
31
- const { scribe, transports } = options;
35
+ const { scribe, transports } = options ?? {};
32
36
  return configureScribe(factory, scribe, transports);
33
37
  }
34
38
  }
35
39
  _ts_decorate([
36
- extension(scribe),
40
+ extension(scribe, {
41
+ static: true
42
+ }),
37
43
  _ts_metadata("design:type", Function),
38
44
  _ts_metadata("design:paramtypes", [
39
45
  typeof scribe === "undefined" ? Object : scribe,
@@ -43,7 +49,9 @@ _ts_decorate([
43
49
  _ts_metadata("design:returntype", void 0)
44
50
  ], PinoExtensions, "withPino", null);
45
51
  _ts_decorate([
46
- extension(scribe),
52
+ extension(scribe, {
53
+ static: true
54
+ }),
47
55
  _ts_metadata("design:type", Function),
48
56
  _ts_metadata("design:paramtypes", [
49
57
  typeof scribe === "undefined" ? Object : scribe,
@@ -52,7 +60,20 @@ _ts_decorate([
52
60
  _ts_metadata("design:returntype", void 0)
53
61
  ], PinoExtensions, "withPinoPretty", null);
54
62
  _ts_decorate([
55
- extension(scribe),
63
+ extension(scribe, {
64
+ static: true
65
+ }),
66
+ _ts_metadata("design:type", Function),
67
+ _ts_metadata("design:paramtypes", [
68
+ typeof scribe === "undefined" ? Object : scribe,
69
+ typeof PinoRollRecipeOptions === "undefined" ? Object : PinoRollRecipeOptions
70
+ ]),
71
+ _ts_metadata("design:returntype", void 0)
72
+ ], PinoExtensions, "withPinoRoll", null);
73
+ _ts_decorate([
74
+ extension(scribe, {
75
+ static: true
76
+ }),
56
77
  _ts_metadata("design:type", Function),
57
78
  _ts_metadata("design:paramtypes", [
58
79
  typeof scribe === "undefined" ? Object : scribe,
@@ -60,19 +81,67 @@ _ts_decorate([
60
81
  ]),
61
82
  _ts_metadata("design:returntype", void 0)
62
83
  ], PinoExtensions, "withPinoCustom", null);
84
+ function parsePrettyArg(logLevelOrOptions) {
85
+ if (logLevelOrOptions == null) {
86
+ return {};
87
+ }
88
+ if (typeof logLevelOrOptions === "string") {
89
+ return {
90
+ logLevel: logLevelOrOptions
91
+ };
92
+ }
93
+ return logLevelOrOptions;
94
+ }
95
+ function attachRecipe(factory, plan) {
96
+ const loggerFactory = applyRecipe(factory, plan);
97
+ const chain = {
98
+ withPinoPretty (logLevelOrOptions) {
99
+ const pretty = parsePrettyArg(logLevelOrOptions);
100
+ return attachRecipe(factory, {
101
+ ...plan,
102
+ pretty: {
103
+ ...plan.pretty,
104
+ ...pretty
105
+ },
106
+ logLevel: pretty.logLevel ?? plan.logLevel
107
+ });
108
+ },
109
+ withPinoRoll (options) {
110
+ return attachRecipe(factory, {
111
+ ...plan,
112
+ roll: options,
113
+ logLevel: options.logLevel ?? plan.logLevel
114
+ });
115
+ }
116
+ };
117
+ return Object.assign(loggerFactory, chain, {
118
+ and: chain
119
+ });
120
+ }
121
+ function applyRecipe(factory, plan) {
122
+ const transport = pinoRecipe.transport(plan);
123
+ const adapter = new PinoAdapter(transport ? {
124
+ transport
125
+ } : {});
126
+ return factory.configure({
127
+ options: {
128
+ logLevel: plan.logLevel ?? DefaultLogLevel
129
+ },
130
+ adapter
131
+ });
132
+ }
63
133
  function configureScribe(factory, options, config) {
64
134
  const environment = process.env.NODE_ENV ?? DefaultEnvironment;
65
- const configs = Array.isArray(config) ? config : [
135
+ const configs = (Array.isArray(config) ? config : config != null ? [
66
136
  config
67
- ];
68
- const transports = configs.filter((config)=>config.environment && config.environment === environment || true);
69
- if (transports.length > 1) {
137
+ ] : []).filter((item)=>item.environment == null || item.environment === environment);
138
+ if (configs.length > 1) {
70
139
  throw new LoggingConfigurationError(`There should only be one configuration per environment for logging`);
71
140
  }
72
- const transport = transports.at(0)?.transports;
73
- const adapter = new PinoAdapter({
141
+ const transport = configs.at(0)?.transports;
142
+ const adapter = new PinoAdapter(transport ? {
74
143
  transport
75
- });
144
+ } : {});
76
145
  return factory.configure({
77
146
  options: {
78
147
  ...options,
@@ -82,4 +151,4 @@ function configureScribe(factory, options, config) {
82
151
  });
83
152
  }
84
153
 
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUtcGluby9zcmMvc2NyaWJlLXBpbm8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5zaW9uIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9leHRlbnNpYmlsaXR5XCI7XG5pbXBvcnQgeyBEZWZhdWx0RW52aXJvbm1lbnQsIHR5cGUgRW52aXJvbm1lbnQgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL3N5c3RlbVwiO1xuaW1wb3J0IHtcblx0dHlwZSBEZWZhdWx0TGV2ZWxzLFxuXHREZWZhdWx0TG9nTGV2ZWwsXG5cdHR5cGUgTG9nZ2VyLFxuXHRMb2dnaW5nQ29uZmlndXJhdGlvbkVycm9yLFxuXHR0eXBlIFNjcmliZU9wdGlvbnMsXG5cdHNjcmliZSxcbn0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB0eXBlIHtcblx0VHJhbnNwb3J0TXVsdGlPcHRpb25zLFxuXHRUcmFuc3BvcnRQaXBlbGluZU9wdGlvbnMsXG5cdFRyYW5zcG9ydFNpbmdsZU9wdGlvbnMsXG59IGZyb20gXCJwaW5vXCI7XG5cbmltcG9ydCB7IFBpbm9BZGFwdGVyIH0gZnJvbSBcIi4vcGluby5hZGFwYXRlci5qc1wiO1xuXG50eXBlIFRyYW5zcG9ydENvbmZpZyA9IHtcblx0ZW52aXJvbm1lbnQ/OiBFbnZpcm9ubWVudDtcblx0dHJhbnNwb3J0czogVHJhbnNwb3J0U2luZ2xlT3B0aW9ucyB8IFRyYW5zcG9ydE11bHRpT3B0aW9ucyB8IFRyYW5zcG9ydFBpcGVsaW5lT3B0aW9ucztcbn07XG5cbnR5cGUgQ3VzdG9tTGV2ZWxPcHRpb25zPFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgQ3VzdG9tT25seSBleHRlbmRzIHRydWUgPSB1bmRlZmluZWQ+ID0ge1xuXHRzY3JpYmU/OiBTY3JpYmVPcHRpb25zPFQsIEN1c3RvbU9ubHk+O1xuXHR0cmFuc3BvcnRzPzogVHJhbnNwb3J0Q29uZmlnIHwgVHJhbnNwb3J0Q29uZmlnW107XG59O1xuXG5kZWNsYXJlIG1vZHVsZSBcIkBkZWNvaGVyZS9zY3JpYmVcIiB7XG5cdGludGVyZmFjZSBzY3JpYmUge1xuXHRcdHdpdGhQaW5vKFxuXHRcdFx0dHJhbnNwb3J0czogVHJhbnNwb3J0Q29uZmlnIHwgVHJhbnNwb3J0Q29uZmlnW10sXG5cdFx0XHRsb2dsZXZlbD86IERlZmF1bHRMZXZlbHMgfCBzdHJpbmcsXG5cdFx0KTogKG5hbWU/OiBzdHJpbmcpID0+IExvZ2dlcjtcblx0XHR3aXRoUGlub1ByZXR0eShsb2dMZXZlbD86IERlZmF1bHRMZXZlbHMgfCBzdHJpbmcpOiAobmFtZT86IHN0cmluZykgPT4gTG9nZ2VyO1xuXHRcdHdpdGhQaW5vQ3VzdG9tPFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgQ3VzdG9tT25seSBleHRlbmRzIHRydWUgPSB1bmRlZmluZWQ+KFxuXHRcdFx0b3B0aW9ucz86IEN1c3RvbUxldmVsT3B0aW9uczxULCBDdXN0b21Pbmx5Pixcblx0XHQpOiAobmFtZT86IHN0cmluZykgPT4gTG9nZ2VyPFQsIEN1c3RvbU9ubHk+O1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBQaW5vRXh0ZW5zaW9ucyB7XG5cdEBleHRlbnNpb24oc2NyaWJlKVxuXHRwdWJsaWMgc3RhdGljIHdpdGhQaW5vKFxuXHRcdGZhY3Rvcnk6IHNjcmliZSxcblx0XHRjb25maWc6IFRyYW5zcG9ydENvbmZpZyB8IFRyYW5zcG9ydENvbmZpZ1tdLFxuXHRcdGxvZ0xldmVsPzogRGVmYXVsdExldmVscyB8IHN0cmluZyxcblx0KSB7XG5cdFx0cmV0dXJuIGNvbmZpZ3VyZVNjcmliZShmYWN0b3J5LCB7IGxvZ0xldmVsIH0sIGNvbmZpZyk7XG5cdH1cblxuXHRAZXh0ZW5zaW9uKHNjcmliZSlcblx0cHVibGljIHN0YXRpYyB3aXRoUGlub1ByZXR0eShmYWN0b3J5OiBzY3JpYmUsIGxvZ0xldmVsPzogRGVmYXVsdExldmVscyB8IHN0cmluZykge1xuXHRcdHJldHVybiBQaW5vRXh0ZW5zaW9ucy53aXRoUGlubyhcblx0XHRcdGZhY3RvcnksXG5cdFx0XHR7IHRyYW5zcG9ydHM6IHsgdGFyZ2V0OiBcInBpbm8tcHJldHR5XCIsIG9wdGlvbnM6IHsgY29sb3JpemU6IHRydWUgfSB9IH0sXG5cdFx0XHRsb2dMZXZlbCxcblx0XHQpO1xuXHR9XG5cblx0QGV4dGVuc2lvbihzY3JpYmUpXG5cdHB1YmxpYyBzdGF0aWMgd2l0aFBpbm9DdXN0b208VCBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSA9IHVuZGVmaW5lZD4oXG5cdFx0ZmFjdG9yeTogc2NyaWJlLFxuXHRcdG9wdGlvbnM/OiBDdXN0b21MZXZlbE9wdGlvbnM8VCwgQ3VzdG9tT25seT4sXG5cdCkge1xuXHRcdGNvbnN0IHsgc2NyaWJlLCB0cmFuc3BvcnRzIH0gPSBvcHRpb25zO1xuXHRcdHJldHVybiBjb25maWd1cmVTY3JpYmUoZmFjdG9yeSwgc2NyaWJlLCB0cmFuc3BvcnRzKTtcblx0fVxufVxuXG5mdW5jdGlvbiBjb25maWd1cmVTY3JpYmU8VCBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSB8IGZhbHNlID0gZmFsc2U+KFxuXHRmYWN0b3J5OiBzY3JpYmUsXG5cdG9wdGlvbnM6IFNjcmliZU9wdGlvbnM8VCwgQ3VzdG9tT25seT4sXG5cdGNvbmZpZzogVHJhbnNwb3J0Q29uZmlnIHwgVHJhbnNwb3J0Q29uZmlnW10sXG4pIHtcblx0Y29uc3QgZW52aXJvbm1lbnQgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA/PyBEZWZhdWx0RW52aXJvbm1lbnQ7XG5cdGNvbnN0IGNvbmZpZ3MgPSBBcnJheS5pc0FycmF5KGNvbmZpZykgPyBjb25maWcgOiBbY29uZmlnXTtcblx0Y29uc3QgdHJhbnNwb3J0cyA9IGNvbmZpZ3MuZmlsdGVyKFxuXHRcdChjb25maWcpID0+IChjb25maWcuZW52aXJvbm1lbnQgJiYgY29uZmlnLmVudmlyb25tZW50ID09PSBlbnZpcm9ubWVudCkgfHwgdHJ1ZSxcblx0KTtcblxuXHRpZiAodHJhbnNwb3J0cy5sZW5ndGggPiAxKSB7XG5cdFx0dGhyb3cgbmV3IExvZ2dpbmdDb25maWd1cmF0aW9uRXJyb3IoXG5cdFx0XHRgVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIGNvbmZpZ3VyYXRpb24gcGVyIGVudmlyb25tZW50IGZvciBsb2dnaW5nYCxcblx0XHQpO1xuXHR9XG5cblx0Y29uc3QgdHJhbnNwb3J0ID0gdHJhbnNwb3J0cy5hdCgwKT8udHJhbnNwb3J0cztcblx0Y29uc3QgYWRhcHRlciA9IG5ldyBQaW5vQWRhcHRlcih7IHRyYW5zcG9ydCB9KTtcblx0cmV0dXJuIGZhY3RvcnkuY29uZmlndXJlKHtcblx0XHRvcHRpb25zOiB7IC4uLm9wdGlvbnMsIGxvZ0xldmVsOiBvcHRpb25zPy5sb2dMZXZlbCA/PyBEZWZhdWx0TG9nTGV2ZWwgfSxcblx0XHRhZGFwdGVyLFxuXHR9KTtcbn1cbiJdLCJuYW1lcyI6WyJleHRlbnNpb24iLCJEZWZhdWx0RW52aXJvbm1lbnQiLCJEZWZhdWx0TG9nTGV2ZWwiLCJMb2dnaW5nQ29uZmlndXJhdGlvbkVycm9yIiwic2NyaWJlIiwiUGlub0FkYXB0ZXIiLCJQaW5vRXh0ZW5zaW9ucyIsIndpdGhQaW5vIiwiZmFjdG9yeSIsImNvbmZpZyIsImxvZ0xldmVsIiwiY29uZmlndXJlU2NyaWJlIiwid2l0aFBpbm9QcmV0dHkiLCJ0cmFuc3BvcnRzIiwidGFyZ2V0Iiwib3B0aW9ucyIsImNvbG9yaXplIiwid2l0aFBpbm9DdXN0b20iLCJlbnZpcm9ubWVudCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImNvbmZpZ3MiLCJBcnJheSIsImlzQXJyYXkiLCJmaWx0ZXIiLCJsZW5ndGgiLCJ0cmFuc3BvcnQiLCJhdCIsImFkYXB0ZXIiLCJjb25maWd1cmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLFNBQVNBLFNBQVMsUUFBUSxnQ0FBZ0M7QUFDMUQsU0FBU0Msa0JBQWtCLFFBQTBCLHlCQUF5QjtBQUM5RSxTQUVDQyxlQUFlLEVBRWZDLHlCQUF5QixFQUV6QkMsTUFBTSxRQUNBLG1CQUFtQjtBQU8xQixTQUFTQyxXQUFXLFFBQVEscUJBQXFCO0FBeUJqRCxPQUFPLE1BQU1DO0lBQ1osT0FDY0MsU0FDYkMsT0FBZSxFQUNmQyxNQUEyQyxFQUMzQ0MsUUFBaUMsRUFDaEM7UUFDRCxPQUFPQyxnQkFBZ0JILFNBQVM7WUFBRUU7UUFBUyxHQUFHRDtJQUMvQztJQUVBLE9BQ2NHLGVBQWVKLE9BQWUsRUFBRUUsUUFBaUMsRUFBRTtRQUNoRixPQUFPSixlQUFlQyxRQUFRLENBQzdCQyxTQUNBO1lBQUVLLFlBQVk7Z0JBQUVDLFFBQVE7Z0JBQWVDLFNBQVM7b0JBQUVDLFVBQVU7Z0JBQUs7WUFBRTtRQUFFLEdBQ3JFTjtJQUVGO0lBRUEsT0FDY08sZUFDYlQsT0FBZSxFQUNmTyxPQUEyQyxFQUMxQztRQUNELE1BQU0sRUFBRVgsTUFBTSxFQUFFUyxVQUFVLEVBQUUsR0FBR0U7UUFDL0IsT0FBT0osZ0JBQWdCSCxTQUFTSixRQUFRUztJQUN6QztBQUNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFNBQVNGLGdCQUNSSCxPQUFlLEVBQ2ZPLE9BQXFDLEVBQ3JDTixNQUEyQztJQUUzQyxNQUFNUyxjQUFjQyxRQUFRQyxHQUFHLENBQUNDLFFBQVEsSUFBSXBCO0lBQzVDLE1BQU1xQixVQUFVQyxNQUFNQyxPQUFPLENBQUNmLFVBQVVBLFNBQVM7UUFBQ0E7S0FBTztJQUN6RCxNQUFNSSxhQUFhUyxRQUFRRyxNQUFNLENBQ2hDLENBQUNoQixTQUFXLEFBQUNBLE9BQU9TLFdBQVcsSUFBSVQsT0FBT1MsV0FBVyxLQUFLQSxlQUFnQjtJQUczRSxJQUFJTCxXQUFXYSxNQUFNLEdBQUcsR0FBRztRQUMxQixNQUFNLElBQUl2QiwwQkFDVCxDQUFDLGtFQUFrRSxDQUFDO0lBRXRFO0lBRUEsTUFBTXdCLFlBQVlkLFdBQVdlLEVBQUUsQ0FBQyxJQUFJZjtJQUNwQyxNQUFNZ0IsVUFBVSxJQUFJeEIsWUFBWTtRQUFFc0I7SUFBVTtJQUM1QyxPQUFPbkIsUUFBUXNCLFNBQVMsQ0FBQztRQUN4QmYsU0FBUztZQUFFLEdBQUdBLE9BQU87WUFBRUwsVUFBVUssU0FBU0wsWUFBWVI7UUFBZ0I7UUFDdEUyQjtJQUNEO0FBQ0QifQ==
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUtcGluby9zcmMvc2NyaWJlLXBpbm8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5zaW9uIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9leHRlbnNpYmlsaXR5XCI7XG5pbXBvcnQgeyBEZWZhdWx0RW52aXJvbm1lbnQsIHR5cGUgRW52aXJvbm1lbnQgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL3N5c3RlbVwiO1xuaW1wb3J0IHtcblx0dHlwZSBEZWZhdWx0TGV2ZWxzLFxuXHREZWZhdWx0TG9nTGV2ZWwsXG5cdHR5cGUgTG9nZ2VyLFxuXHRMb2dnaW5nQ29uZmlndXJhdGlvbkVycm9yLFxuXHR0eXBlIFNjcmliZU9wdGlvbnMsXG5cdHNjcmliZSxcbn0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB0eXBlIHtcblx0VHJhbnNwb3J0TXVsdGlPcHRpb25zLFxuXHRUcmFuc3BvcnRQaXBlbGluZU9wdGlvbnMsXG5cdFRyYW5zcG9ydFNpbmdsZU9wdGlvbnMsXG59IGZyb20gXCJwaW5vXCI7XG5cbmltcG9ydCB7IFBpbm9BZGFwdGVyIH0gZnJvbSBcIi4vcGluby5hZGFwYXRlci5qc1wiO1xuaW1wb3J0IHtcblx0dHlwZSBQaW5vUHJldHR5UmVjaXBlT3B0aW9ucyxcblx0dHlwZSBQaW5vUmVjaXBlUGxhbixcblx0dHlwZSBQaW5vUm9sbFJlY2lwZU9wdGlvbnMsXG5cdHBpbm9SZWNpcGUsXG59IGZyb20gXCIuL3Bpbm8ucmVjaXBlLmpzXCI7XG5cbnR5cGUgVHJhbnNwb3J0Q29uZmlnID0ge1xuXHRlbnZpcm9ubWVudD86IEVudmlyb25tZW50O1xuXHR0cmFuc3BvcnRzOiBUcmFuc3BvcnRTaW5nbGVPcHRpb25zIHwgVHJhbnNwb3J0TXVsdGlPcHRpb25zIHwgVHJhbnNwb3J0UGlwZWxpbmVPcHRpb25zO1xufTtcblxudHlwZSBDdXN0b21MZXZlbE9wdGlvbnM8VCBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSA9IHVuZGVmaW5lZD4gPSB7XG5cdHNjcmliZT86IFNjcmliZU9wdGlvbnM8VCwgQ3VzdG9tT25seT47XG5cdHRyYW5zcG9ydHM/OiBUcmFuc3BvcnRDb25maWcgfCBUcmFuc3BvcnRDb25maWdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFBpbm9Mb2dnZXJGYWN0b3J5ID0gKG5hbWU/OiBzdHJpbmcpID0+IExvZ2dlcjtcblxuZXhwb3J0IHR5cGUgUGlub1JlY2lwZUNoYWluID0ge1xuXHR3aXRoUGlub1ByZXR0eShcblx0XHRsb2dMZXZlbE9yT3B0aW9ucz86IERlZmF1bHRMZXZlbHMgfCBzdHJpbmcgfCBQaW5vUHJldHR5UmVjaXBlT3B0aW9ucyxcblx0KTogUGlub1JlY2lwZTtcblx0d2l0aFBpbm9Sb2xsKG9wdGlvbnM6IFBpbm9Sb2xsUmVjaXBlT3B0aW9ucyk6IFBpbm9SZWNpcGU7XG59O1xuXG5leHBvcnQgdHlwZSBQaW5vUmVjaXBlID0gUGlub0xvZ2dlckZhY3RvcnkgJlxuXHRQaW5vUmVjaXBlQ2hhaW4gJiB7XG5cdFx0cmVhZG9ubHkgYW5kOiBQaW5vUmVjaXBlQ2hhaW47XG5cdH07XG5cbmRlY2xhcmUgbW9kdWxlIFwiQGRlY29oZXJlL3NjcmliZVwiIHtcblx0aW50ZXJmYWNlIHNjcmliZSB7XG5cdFx0d2l0aFBpbm8oXG5cdFx0XHR0cmFuc3BvcnRzOiBUcmFuc3BvcnRDb25maWcgfCBUcmFuc3BvcnRDb25maWdbXSxcblx0XHRcdGxvZ2xldmVsPzogRGVmYXVsdExldmVscyB8IHN0cmluZyxcblx0XHQpOiBQaW5vTG9nZ2VyRmFjdG9yeTtcblx0XHQvKipcblx0XHQgKiBDb2xvcml6ZWQgcHJldHR5IHRyYW5zcG9ydC4gRGV2ZWxvcG1lbnQgb25seSB1bmxlc3MgYHsgd2hlbjogXCJhbHdheXNcIiB9YC5cblx0XHQgKiBDaGFpbiB3aXRoIGAuYW5kLndpdGhQaW5vUm9sbCh7IGZpbGUgfSlgLiBQcm9kdWN0aW9uIHdyaXRlcyBKU09OIHRvIHN0ZG91dFxuXHRcdCAqIHNvIGxvZyBzaGlwcGluZyBzdGF5cyBvdXRzaWRlIHRoZSBwcm9jZXNzLlxuXHRcdCAqL1xuXHRcdHdpdGhQaW5vUHJldHR5KFxuXHRcdFx0bG9nTGV2ZWxPck9wdGlvbnM/OiBEZWZhdWx0TGV2ZWxzIHwgc3RyaW5nIHwgUGlub1ByZXR0eVJlY2lwZU9wdGlvbnMsXG5cdFx0KTogUGlub1JlY2lwZTtcblx0XHQvKipcblx0XHQgKiBSb2xsaW5nIGxvZyBmaWxlcy4gRGV2ZWxvcG1lbnQgb25seSB1bmxlc3MgYHsgd2hlbjogXCJhbHdheXNcIiB9YC5cblx0XHQgKiBEbyBub3QgZW5hYmxlIGluIHByb2R1Y3Rpb24g4oCUIHNoaXAgc3Rkb3V0IGZyb20gYSBzaWRlY2FyIG9yIHBsYXRmb3JtIGFnZW50LlxuXHRcdCAqL1xuXHRcdHdpdGhQaW5vUm9sbChvcHRpb25zOiBQaW5vUm9sbFJlY2lwZU9wdGlvbnMpOiBQaW5vUmVjaXBlO1xuXHRcdHdpdGhQaW5vQ3VzdG9tPFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgQ3VzdG9tT25seSBleHRlbmRzIHRydWUgPSB1bmRlZmluZWQ+KFxuXHRcdFx0b3B0aW9ucz86IEN1c3RvbUxldmVsT3B0aW9uczxULCBDdXN0b21Pbmx5Pixcblx0XHQpOiBQaW5vTG9nZ2VyRmFjdG9yeTtcblx0fVxuXHRuYW1lc3BhY2Ugc2NyaWJlIHtcblx0XHRmdW5jdGlvbiB3aXRoUGlubyhcblx0XHRcdHRyYW5zcG9ydHM6IFRyYW5zcG9ydENvbmZpZyB8IFRyYW5zcG9ydENvbmZpZ1tdLFxuXHRcdFx0bG9nbGV2ZWw/OiBEZWZhdWx0TGV2ZWxzIHwgc3RyaW5nLFxuXHRcdCk6IFBpbm9Mb2dnZXJGYWN0b3J5O1xuXHRcdGZ1bmN0aW9uIHdpdGhQaW5vUHJldHR5KFxuXHRcdFx0bG9nTGV2ZWxPck9wdGlvbnM/OiBEZWZhdWx0TGV2ZWxzIHwgc3RyaW5nIHwgUGlub1ByZXR0eVJlY2lwZU9wdGlvbnMsXG5cdFx0KTogUGlub1JlY2lwZTtcblx0XHRmdW5jdGlvbiB3aXRoUGlub1JvbGwob3B0aW9uczogUGlub1JvbGxSZWNpcGVPcHRpb25zKTogUGlub1JlY2lwZTtcblx0XHRmdW5jdGlvbiB3aXRoUGlub0N1c3RvbTxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlID0gdW5kZWZpbmVkPihcblx0XHRcdG9wdGlvbnM/OiBDdXN0b21MZXZlbE9wdGlvbnM8VCwgQ3VzdG9tT25seT4sXG5cdFx0KTogUGlub0xvZ2dlckZhY3Rvcnk7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFBpbm9FeHRlbnNpb25zIHtcblx0QGV4dGVuc2lvbihzY3JpYmUsIHsgc3RhdGljOiB0cnVlIH0pXG5cdHB1YmxpYyBzdGF0aWMgd2l0aFBpbm8oXG5cdFx0ZmFjdG9yeTogc2NyaWJlLFxuXHRcdGNvbmZpZzogVHJhbnNwb3J0Q29uZmlnIHwgVHJhbnNwb3J0Q29uZmlnW10sXG5cdFx0bG9nTGV2ZWw/OiBEZWZhdWx0TGV2ZWxzIHwgc3RyaW5nLFxuXHQpIHtcblx0XHRyZXR1cm4gY29uZmlndXJlU2NyaWJlKGZhY3RvcnksIHsgbG9nTGV2ZWwgfSwgY29uZmlnKTtcblx0fVxuXG5cdEBleHRlbnNpb24oc2NyaWJlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgc3RhdGljIHdpdGhQaW5vUHJldHR5KFxuXHRcdGZhY3Rvcnk6IHNjcmliZSxcblx0XHRsb2dMZXZlbE9yT3B0aW9ucz86IERlZmF1bHRMZXZlbHMgfCBzdHJpbmcgfCBQaW5vUHJldHR5UmVjaXBlT3B0aW9ucyxcblx0KSB7XG5cdFx0Y29uc3QgcHJldHR5ID0gcGFyc2VQcmV0dHlBcmcobG9nTGV2ZWxPck9wdGlvbnMpO1xuXHRcdHJldHVybiBhdHRhY2hSZWNpcGUoZmFjdG9yeSwgeyBwcmV0dHksIGxvZ0xldmVsOiBwcmV0dHkubG9nTGV2ZWwgfSk7XG5cdH1cblxuXHRAZXh0ZW5zaW9uKHNjcmliZSwgeyBzdGF0aWM6IHRydWUgfSlcblx0cHVibGljIHN0YXRpYyB3aXRoUGlub1JvbGwoZmFjdG9yeTogc2NyaWJlLCBvcHRpb25zOiBQaW5vUm9sbFJlY2lwZU9wdGlvbnMpIHtcblx0XHRyZXR1cm4gYXR0YWNoUmVjaXBlKGZhY3RvcnksIHsgcm9sbDogb3B0aW9ucywgbG9nTGV2ZWw6IG9wdGlvbnMubG9nTGV2ZWwgfSk7XG5cdH1cblxuXHRAZXh0ZW5zaW9uKHNjcmliZSwgeyBzdGF0aWM6IHRydWUgfSlcblx0cHVibGljIHN0YXRpYyB3aXRoUGlub0N1c3RvbTxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlID0gdW5kZWZpbmVkPihcblx0XHRmYWN0b3J5OiBzY3JpYmUsXG5cdFx0b3B0aW9ucz86IEN1c3RvbUxldmVsT3B0aW9uczxULCBDdXN0b21Pbmx5Pixcblx0KSB7XG5cdFx0Y29uc3QgeyBzY3JpYmUsIHRyYW5zcG9ydHMgfSA9IG9wdGlvbnMgPz8ge307XG5cdFx0cmV0dXJuIGNvbmZpZ3VyZVNjcmliZShmYWN0b3J5LCBzY3JpYmUsIHRyYW5zcG9ydHMpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHBhcnNlUHJldHR5QXJnKFxuXHRsb2dMZXZlbE9yT3B0aW9ucz86IERlZmF1bHRMZXZlbHMgfCBzdHJpbmcgfCBQaW5vUHJldHR5UmVjaXBlT3B0aW9ucyxcbik6IFBpbm9QcmV0dHlSZWNpcGVPcHRpb25zIHtcblx0aWYgKGxvZ0xldmVsT3JPcHRpb25zID09IG51bGwpIHtcblx0XHRyZXR1cm4ge307XG5cdH1cblx0aWYgKHR5cGVvZiBsb2dMZXZlbE9yT3B0aW9ucyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiB7IGxvZ0xldmVsOiBsb2dMZXZlbE9yT3B0aW9ucyB9O1xuXHR9XG5cdHJldHVybiBsb2dMZXZlbE9yT3B0aW9ucztcbn1cblxuZnVuY3Rpb24gYXR0YWNoUmVjaXBlKGZhY3Rvcnk6IHNjcmliZSwgcGxhbjogUGlub1JlY2lwZVBsYW4pOiBQaW5vUmVjaXBlIHtcblx0Y29uc3QgbG9nZ2VyRmFjdG9yeSA9IGFwcGx5UmVjaXBlKGZhY3RvcnksIHBsYW4pO1xuXHRjb25zdCBjaGFpbjogUGlub1JlY2lwZUNoYWluID0ge1xuXHRcdHdpdGhQaW5vUHJldHR5KGxvZ0xldmVsT3JPcHRpb25zKSB7XG5cdFx0XHRjb25zdCBwcmV0dHkgPSBwYXJzZVByZXR0eUFyZyhsb2dMZXZlbE9yT3B0aW9ucyk7XG5cdFx0XHRyZXR1cm4gYXR0YWNoUmVjaXBlKGZhY3RvcnksIHtcblx0XHRcdFx0Li4ucGxhbixcblx0XHRcdFx0cHJldHR5OiB7IC4uLnBsYW4ucHJldHR5LCAuLi5wcmV0dHkgfSxcblx0XHRcdFx0bG9nTGV2ZWw6IHByZXR0eS5sb2dMZXZlbCA/PyBwbGFuLmxvZ0xldmVsLFxuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHR3aXRoUGlub1JvbGwob3B0aW9ucykge1xuXHRcdFx0cmV0dXJuIGF0dGFjaFJlY2lwZShmYWN0b3J5LCB7XG5cdFx0XHRcdC4uLnBsYW4sXG5cdFx0XHRcdHJvbGw6IG9wdGlvbnMsXG5cdFx0XHRcdGxvZ0xldmVsOiBvcHRpb25zLmxvZ0xldmVsID8/IHBsYW4ubG9nTGV2ZWwsXG5cdFx0XHR9KTtcblx0XHR9LFxuXHR9O1xuXHRyZXR1cm4gT2JqZWN0LmFzc2lnbihsb2dnZXJGYWN0b3J5LCBjaGFpbiwgeyBhbmQ6IGNoYWluIH0pO1xufVxuXG5mdW5jdGlvbiBhcHBseVJlY2lwZShmYWN0b3J5OiBzY3JpYmUsIHBsYW46IFBpbm9SZWNpcGVQbGFuKTogUGlub0xvZ2dlckZhY3Rvcnkge1xuXHRjb25zdCB0cmFuc3BvcnQgPSBwaW5vUmVjaXBlLnRyYW5zcG9ydChwbGFuKTtcblx0Y29uc3QgYWRhcHRlciA9IG5ldyBQaW5vQWRhcHRlcih0cmFuc3BvcnQgPyB7IHRyYW5zcG9ydCB9IDoge30pO1xuXHRyZXR1cm4gZmFjdG9yeS5jb25maWd1cmUoe1xuXHRcdG9wdGlvbnM6IHsgbG9nTGV2ZWw6IHBsYW4ubG9nTGV2ZWwgPz8gRGVmYXVsdExvZ0xldmVsIH0sXG5cdFx0YWRhcHRlcixcblx0fSk7XG59XG5cbmZ1bmN0aW9uIGNvbmZpZ3VyZVNjcmliZTxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdGZhY3Rvcnk6IHNjcmliZSxcblx0b3B0aW9uczogU2NyaWJlT3B0aW9uczxULCBDdXN0b21Pbmx5Pixcblx0Y29uZmlnPzogVHJhbnNwb3J0Q29uZmlnIHwgVHJhbnNwb3J0Q29uZmlnW10sXG4pIHtcblx0Y29uc3QgZW52aXJvbm1lbnQgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA/PyBEZWZhdWx0RW52aXJvbm1lbnQ7XG5cdGNvbnN0IGNvbmZpZ3MgPSAoQXJyYXkuaXNBcnJheShjb25maWcpID8gY29uZmlnIDogY29uZmlnICE9IG51bGwgPyBbY29uZmlnXSA6IFtdKS5maWx0ZXIoXG5cdFx0KGl0ZW0pID0+IGl0ZW0uZW52aXJvbm1lbnQgPT0gbnVsbCB8fCBpdGVtLmVudmlyb25tZW50ID09PSBlbnZpcm9ubWVudCxcblx0KTtcblxuXHRpZiAoY29uZmlncy5sZW5ndGggPiAxKSB7XG5cdFx0dGhyb3cgbmV3IExvZ2dpbmdDb25maWd1cmF0aW9uRXJyb3IoXG5cdFx0XHRgVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIGNvbmZpZ3VyYXRpb24gcGVyIGVudmlyb25tZW50IGZvciBsb2dnaW5nYCxcblx0XHQpO1xuXHR9XG5cblx0Y29uc3QgdHJhbnNwb3J0ID0gY29uZmlncy5hdCgwKT8udHJhbnNwb3J0cztcblx0Y29uc3QgYWRhcHRlciA9IG5ldyBQaW5vQWRhcHRlcih0cmFuc3BvcnQgPyB7IHRyYW5zcG9ydCB9IDoge30pO1xuXHRyZXR1cm4gZmFjdG9yeS5jb25maWd1cmUoe1xuXHRcdG9wdGlvbnM6IHsgLi4ub3B0aW9ucywgbG9nTGV2ZWw6IG9wdGlvbnM/LmxvZ0xldmVsID8/IERlZmF1bHRMb2dMZXZlbCB9LFxuXHRcdGFkYXB0ZXIsXG5cdH0pO1xufVxuIl0sIm5hbWVzIjpbImV4dGVuc2lvbiIsIkRlZmF1bHRFbnZpcm9ubWVudCIsIkRlZmF1bHRMb2dMZXZlbCIsIkxvZ2dpbmdDb25maWd1cmF0aW9uRXJyb3IiLCJzY3JpYmUiLCJQaW5vQWRhcHRlciIsInBpbm9SZWNpcGUiLCJQaW5vRXh0ZW5zaW9ucyIsIndpdGhQaW5vIiwiZmFjdG9yeSIsImNvbmZpZyIsImxvZ0xldmVsIiwiY29uZmlndXJlU2NyaWJlIiwid2l0aFBpbm9QcmV0dHkiLCJsb2dMZXZlbE9yT3B0aW9ucyIsInByZXR0eSIsInBhcnNlUHJldHR5QXJnIiwiYXR0YWNoUmVjaXBlIiwid2l0aFBpbm9Sb2xsIiwib3B0aW9ucyIsInJvbGwiLCJ3aXRoUGlub0N1c3RvbSIsInRyYW5zcG9ydHMiLCJzdGF0aWMiLCJwbGFuIiwibG9nZ2VyRmFjdG9yeSIsImFwcGx5UmVjaXBlIiwiY2hhaW4iLCJPYmplY3QiLCJhc3NpZ24iLCJhbmQiLCJ0cmFuc3BvcnQiLCJhZGFwdGVyIiwiY29uZmlndXJlIiwiZW52aXJvbm1lbnQiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25maWdzIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwiaXRlbSIsImxlbmd0aCIsImF0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxTQUFTQSxTQUFTLFFBQVEsZ0NBQWdDO0FBQzFELFNBQVNDLGtCQUFrQixRQUEwQix5QkFBeUI7QUFDOUUsU0FFQ0MsZUFBZSxFQUVmQyx5QkFBeUIsRUFFekJDLE1BQU0sUUFDQSxtQkFBbUI7QUFPMUIsU0FBU0MsV0FBVyxRQUFRLHFCQUFxQjtBQUNqRCxTQUlDQyxVQUFVLFFBQ0osbUJBQW1CO0FBZ0UxQixPQUFPLE1BQU1DO0lBQ1osT0FDY0MsU0FDYkMsT0FBZSxFQUNmQyxNQUEyQyxFQUMzQ0MsUUFBaUMsRUFDaEM7UUFDRCxPQUFPQyxnQkFBZ0JILFNBQVM7WUFBRUU7UUFBUyxHQUFHRDtJ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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decohere/scribe-pino",
3
- "version": "0.0.1-dev.65",
3
+ "version": "0.0.1-dev.67",
4
4
  "description": "Pino adapter for @decohere/scribe",
5
5
  "keywords": [
6
6
  "typescript",
@@ -23,9 +23,21 @@
23
23
  "test": "echo \"Error: no test specified\" && exit 1"
24
24
  },
25
25
  "dependencies": {
26
- "@decohere/nexus": "0.0.1-dev.65",
27
- "@decohere/scribe": "0.0.1-dev.65",
26
+ "@decohere/nexus": "0.0.1-dev.67",
27
+ "@decohere/scribe": "0.0.1-dev.67",
28
28
  "pino": "^10.3.0"
29
29
  },
30
- "devDependencies": {}
30
+ "devDependencies": {},
31
+ "peerDependencies": {
32
+ "pino-pretty": "^13.0.0",
33
+ "pino-roll": "^4.0.0"
34
+ },
35
+ "peerDependenciesMeta": {
36
+ "pino-pretty": {
37
+ "optional": true
38
+ },
39
+ "pino-roll": {
40
+ "optional": true
41
+ }
42
+ }
31
43
  }
@@ -1,2 +1,3 @@
1
1
  export * from "./pino.adapater.js";
2
+ export * from "./pino.recipe.js";
2
3
  export * from "./scribe-pino.js";
@@ -0,0 +1,31 @@
1
+ import { type Environment } from "@decohere/nexus/system";
2
+ import type { TransportMultiOptions, TransportSingleOptions } from "pino";
3
+ /** Pretty and roll are local-dev conveniences. Production ships JSON on stdout. */
4
+ export type PinoWhen = "development" | "always";
5
+ export type PinoPrettyRecipeOptions = {
6
+ colorize?: boolean;
7
+ logLevel?: string;
8
+ when?: PinoWhen;
9
+ };
10
+ export type PinoRollRecipeOptions = {
11
+ file: string;
12
+ size?: string;
13
+ frequency?: string | number;
14
+ keep?: number;
15
+ mkdir?: boolean;
16
+ symlink?: boolean;
17
+ logLevel?: string;
18
+ when?: PinoWhen;
19
+ };
20
+ export type PinoRecipePlan = {
21
+ pretty?: PinoPrettyRecipeOptions;
22
+ roll?: PinoRollRecipeOptions;
23
+ logLevel?: string;
24
+ };
25
+ declare function currentEnvironment(): Environment;
26
+ declare function transport(plan: PinoRecipePlan, environment?: Environment): TransportSingleOptions | TransportMultiOptions | undefined;
27
+ export declare const pinoRecipe: {
28
+ transport: typeof transport;
29
+ currentEnvironment: typeof currentEnvironment;
30
+ };
31
+ export {};
@@ -1,6 +1,7 @@
1
1
  import { type Environment } from "@decohere/nexus/system";
2
2
  import { type DefaultLevels, type Logger, type ScribeOptions, scribe } from "@decohere/scribe";
3
3
  import type { TransportMultiOptions, TransportPipelineOptions, TransportSingleOptions } from "pino";
4
+ import { type PinoPrettyRecipeOptions, type PinoRollRecipeOptions } from "./pino.recipe.js";
4
5
  type TransportConfig = {
5
6
  environment?: Environment;
6
7
  transports: TransportSingleOptions | TransportMultiOptions | TransportPipelineOptions;
@@ -9,16 +10,41 @@ type CustomLevelOptions<T extends string = never, CustomOnly extends true = unde
9
10
  scribe?: ScribeOptions<T, CustomOnly>;
10
11
  transports?: TransportConfig | TransportConfig[];
11
12
  };
13
+ export type PinoLoggerFactory = (name?: string) => Logger;
14
+ export type PinoRecipeChain = {
15
+ withPinoPretty(logLevelOrOptions?: DefaultLevels | string | PinoPrettyRecipeOptions): PinoRecipe;
16
+ withPinoRoll(options: PinoRollRecipeOptions): PinoRecipe;
17
+ };
18
+ export type PinoRecipe = PinoLoggerFactory & PinoRecipeChain & {
19
+ readonly and: PinoRecipeChain;
20
+ };
12
21
  declare module "@decohere/scribe" {
13
22
  interface scribe {
14
- withPino(transports: TransportConfig | TransportConfig[], loglevel?: DefaultLevels | string): (name?: string) => Logger;
15
- withPinoPretty(logLevel?: DefaultLevels | string): (name?: string) => Logger;
16
- withPinoCustom<T extends string = never, CustomOnly extends true = undefined>(options?: CustomLevelOptions<T, CustomOnly>): (name?: string) => Logger<T, CustomOnly>;
23
+ withPino(transports: TransportConfig | TransportConfig[], loglevel?: DefaultLevels | string): PinoLoggerFactory;
24
+ /**
25
+ * Colorized pretty transport. Development only unless `{ when: "always" }`.
26
+ * Chain with `.and.withPinoRoll({ file })`. Production writes JSON to stdout
27
+ * so log shipping stays outside the process.
28
+ */
29
+ withPinoPretty(logLevelOrOptions?: DefaultLevels | string | PinoPrettyRecipeOptions): PinoRecipe;
30
+ /**
31
+ * Rolling log files. Development only unless `{ when: "always" }`.
32
+ * Do not enable in production — ship stdout from a sidecar or platform agent.
33
+ */
34
+ withPinoRoll(options: PinoRollRecipeOptions): PinoRecipe;
35
+ withPinoCustom<T extends string = never, CustomOnly extends true = undefined>(options?: CustomLevelOptions<T, CustomOnly>): PinoLoggerFactory;
36
+ }
37
+ namespace scribe {
38
+ function withPino(transports: TransportConfig | TransportConfig[], loglevel?: DefaultLevels | string): PinoLoggerFactory;
39
+ function withPinoPretty(logLevelOrOptions?: DefaultLevels | string | PinoPrettyRecipeOptions): PinoRecipe;
40
+ function withPinoRoll(options: PinoRollRecipeOptions): PinoRecipe;
41
+ function withPinoCustom<T extends string = never, CustomOnly extends true = undefined>(options?: CustomLevelOptions<T, CustomOnly>): PinoLoggerFactory;
17
42
  }
18
43
  }
19
44
  export declare class PinoExtensions {
20
45
  static withPino(factory: scribe, config: TransportConfig | TransportConfig[], logLevel?: DefaultLevels | string): (name?: string) => Logger<never, false>;
21
- static withPinoPretty(factory: scribe, logLevel?: DefaultLevels | string): (name?: string) => Logger<never, false>;
46
+ static withPinoPretty(factory: scribe, logLevelOrOptions?: DefaultLevels | string | PinoPrettyRecipeOptions): PinoRecipe;
47
+ static withPinoRoll(factory: scribe, options: PinoRollRecipeOptions): PinoRecipe;
22
48
  static withPinoCustom<T extends string = never, CustomOnly extends true = undefined>(factory: scribe, options?: CustomLevelOptions<T, CustomOnly>): (name?: string) => Logger<T, CustomOnly>;
23
49
  }
24
50
  export {};