@wireio/shared 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/lib/guards/applyTypeGuardExtras.d.ts +3 -0
  2. package/lib/guards/applyTypeGuardExtras.d.ts.map +1 -0
  3. package/lib/guards/applyTypeGuardExtras.js +5 -0
  4. package/lib/guards/applyTypeGuardExtras.js.map +1 -0
  5. package/lib/guards/array.d.ts +2 -0
  6. package/lib/guards/array.d.ts.map +1 -0
  7. package/lib/guards/array.js +4 -0
  8. package/lib/guards/array.js.map +1 -0
  9. package/lib/guards/assert.d.ts +19 -0
  10. package/lib/guards/assert.d.ts.map +1 -0
  11. package/lib/guards/assert.js +50 -0
  12. package/lib/guards/assert.js.map +1 -0
  13. package/lib/guards/class.d.ts +27 -0
  14. package/lib/guards/class.d.ts.map +1 -0
  15. package/lib/guards/class.js +34 -0
  16. package/lib/guards/class.js.map +1 -0
  17. package/lib/guards/guard-tools.d.ts +20 -0
  18. package/lib/guards/guard-tools.d.ts.map +1 -0
  19. package/lib/guards/guard-tools.js +50 -0
  20. package/lib/guards/guard-tools.js.map +1 -0
  21. package/lib/guards/index.d.ts +8 -0
  22. package/lib/guards/index.d.ts.map +1 -0
  23. package/lib/guards/index.js +8 -0
  24. package/lib/guards/index.js.map +1 -0
  25. package/lib/guards/primitive.d.ts +26 -0
  26. package/lib/guards/primitive.d.ts.map +1 -0
  27. package/lib/guards/primitive.js +47 -0
  28. package/lib/guards/primitive.js.map +1 -0
  29. package/lib/guards/types.d.ts +10 -0
  30. package/lib/guards/types.d.ts.map +1 -0
  31. package/lib/guards/types.js +2 -0
  32. package/lib/guards/types.js.map +1 -0
  33. package/lib/helpers/Deferred.d.ts +31 -0
  34. package/lib/helpers/Deferred.d.ts.map +1 -0
  35. package/lib/helpers/Deferred.js +111 -0
  36. package/lib/helpers/Deferred.js.map +1 -0
  37. package/lib/helpers/index.d.ts +2 -0
  38. package/lib/helpers/index.d.ts.map +1 -0
  39. package/lib/helpers/index.js +2 -0
  40. package/lib/helpers/index.js.map +1 -0
  41. package/lib/index.d.ts +4 -0
  42. package/lib/index.d.ts.map +1 -0
  43. package/lib/index.js +4 -0
  44. package/lib/index.js.map +1 -0
  45. package/lib/logging/Appender.d.ts +5 -0
  46. package/lib/logging/Appender.d.ts.map +1 -0
  47. package/lib/logging/Appender.js +2 -0
  48. package/lib/logging/Appender.js.map +1 -0
  49. package/lib/logging/Formatter.d.ts +3 -0
  50. package/lib/logging/Formatter.d.ts.map +1 -0
  51. package/lib/logging/Formatter.js +2 -0
  52. package/lib/logging/Formatter.js.map +1 -0
  53. package/lib/logging/InternalLogger.d.ts +2 -0
  54. package/lib/logging/InternalLogger.d.ts.map +1 -0
  55. package/lib/logging/InternalLogger.js +6 -0
  56. package/lib/logging/InternalLogger.js.map +1 -0
  57. package/lib/logging/Level.d.ts +14 -0
  58. package/lib/logging/Level.d.ts.map +1 -0
  59. package/lib/logging/Level.js +13 -0
  60. package/lib/logging/Level.js.map +1 -0
  61. package/lib/logging/LogRecord.d.ts +16 -0
  62. package/lib/logging/LogRecord.d.ts.map +1 -0
  63. package/lib/logging/LogRecord.js +2 -0
  64. package/lib/logging/LogRecord.js.map +1 -0
  65. package/lib/logging/Logger.d.ts +77 -0
  66. package/lib/logging/Logger.d.ts.map +1 -0
  67. package/lib/logging/Logger.js +158 -0
  68. package/lib/logging/Logger.js.map +1 -0
  69. package/lib/logging/LoggingManager.d.ts +128 -0
  70. package/lib/logging/LoggingManager.d.ts.map +1 -0
  71. package/lib/logging/LoggingManager.js +236 -0
  72. package/lib/logging/LoggingManager.js.map +1 -0
  73. package/lib/logging/appenders/ConsoleAppender.d.ts +55 -0
  74. package/lib/logging/appenders/ConsoleAppender.d.ts.map +1 -0
  75. package/lib/logging/appenders/ConsoleAppender.js +72 -0
  76. package/lib/logging/appenders/ConsoleAppender.js.map +1 -0
  77. package/lib/logging/appenders/DebugAppender.d.ts +53 -0
  78. package/lib/logging/appenders/DebugAppender.d.ts.map +1 -0
  79. package/lib/logging/appenders/DebugAppender.js +183 -0
  80. package/lib/logging/appenders/DebugAppender.js.map +1 -0
  81. package/lib/logging/appenders/FileAppender.d.ts +65 -0
  82. package/lib/logging/appenders/FileAppender.d.ts.map +1 -0
  83. package/lib/logging/appenders/FileAppender.js +212 -0
  84. package/lib/logging/appenders/FileAppender.js.map +1 -0
  85. package/lib/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts +27 -0
  86. package/lib/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts.map +1 -0
  87. package/lib/logging/appenders/aws-firehose/AWSFirehoseAppender.js +135 -0
  88. package/lib/logging/appenders/aws-firehose/AWSFirehoseAppender.js.map +1 -0
  89. package/lib/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts +27 -0
  90. package/lib/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts.map +1 -0
  91. package/lib/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.js +94 -0
  92. package/lib/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.js.map +1 -0
  93. package/lib/logging/appenders/index.d.ts +4 -0
  94. package/lib/logging/appenders/index.d.ts.map +1 -0
  95. package/lib/logging/appenders/index.js +4 -0
  96. package/lib/logging/appenders/index.js.map +1 -0
  97. package/lib/logging/context/LogContext.d.ts +48 -0
  98. package/lib/logging/context/LogContext.d.ts.map +1 -0
  99. package/lib/logging/context/LogContext.js +58 -0
  100. package/lib/logging/context/LogContext.js.map +1 -0
  101. package/lib/logging/context/LogContextContainer.d.ts +9 -0
  102. package/lib/logging/context/LogContextContainer.d.ts.map +1 -0
  103. package/lib/logging/context/LogContextContainer.js +25 -0
  104. package/lib/logging/context/LogContextContainer.js.map +1 -0
  105. package/lib/logging/context/LogContextProvider.d.ts +24 -0
  106. package/lib/logging/context/LogContextProvider.d.ts.map +1 -0
  107. package/lib/logging/context/LogContextProvider.js +18 -0
  108. package/lib/logging/context/LogContextProvider.js.map +1 -0
  109. package/lib/logging/context/index.d.ts +4 -0
  110. package/lib/logging/context/index.d.ts.map +1 -0
  111. package/lib/logging/context/index.js +4 -0
  112. package/lib/logging/context/index.js.map +1 -0
  113. package/lib/logging/context/providers/node/NodeContextProvider.d.ts +2 -0
  114. package/lib/logging/context/providers/node/NodeContextProvider.d.ts.map +1 -0
  115. package/lib/logging/context/providers/node/NodeContextProvider.js +31 -0
  116. package/lib/logging/context/providers/node/NodeContextProvider.js.map +1 -0
  117. package/lib/logging/context/providers/node/index.d.ts +3 -0
  118. package/lib/logging/context/providers/node/index.d.ts.map +1 -0
  119. package/lib/logging/context/providers/node/index.js +2 -0
  120. package/lib/logging/context/providers/node/index.js.map +1 -0
  121. package/lib/logging/examples/example-debug-appender.d.ts +2 -0
  122. package/lib/logging/examples/example-debug-appender.d.ts.map +1 -0
  123. package/lib/logging/examples/example-debug-appender.js +14 -0
  124. package/lib/logging/examples/example-debug-appender.js.map +1 -0
  125. package/lib/logging/examples/example-file-appender.d.ts +2 -0
  126. package/lib/logging/examples/example-file-appender.d.ts.map +1 -0
  127. package/lib/logging/examples/example-file-appender.js +16 -0
  128. package/lib/logging/examples/example-file-appender.js.map +1 -0
  129. package/lib/logging/getLogger.d.ts +3 -0
  130. package/lib/logging/getLogger.d.ts.map +1 -0
  131. package/lib/logging/getLogger.js +5 -0
  132. package/lib/logging/getLogger.js.map +1 -0
  133. package/lib/logging/index-node.d.ts +3 -0
  134. package/lib/logging/index-node.d.ts.map +1 -0
  135. package/lib/logging/index-node.js +3 -0
  136. package/lib/logging/index-node.js.map +1 -0
  137. package/lib/logging/index.d.ts +11 -0
  138. package/lib/logging/index.d.ts.map +1 -0
  139. package/lib/logging/index.js +11 -0
  140. package/lib/logging/index.js.map +1 -0
  141. package/lib/logging/util.d.ts +3 -0
  142. package/lib/logging/util.d.ts.map +1 -0
  143. package/lib/logging/util.js +6 -0
  144. package/lib/logging/util.js.map +1 -0
  145. package/package.json +31 -0
  146. package/src/guards/applyTypeGuardExtras.ts +9 -0
  147. package/src/guards/array.ts +5 -0
  148. package/src/guards/assert.ts +83 -0
  149. package/src/guards/class.ts +56 -0
  150. package/src/guards/guard-tools.ts +78 -0
  151. package/src/guards/index.ts +7 -0
  152. package/src/guards/primitive.ts +77 -0
  153. package/src/guards/types.ts +15 -0
  154. package/src/helpers/Deferred.ts +149 -0
  155. package/src/helpers/index.ts +1 -0
  156. package/src/index.ts +3 -0
  157. package/src/logging/Appender.ts +5 -0
  158. package/src/logging/Formatter.ts +8 -0
  159. package/src/logging/InternalLogger.ts +6 -0
  160. package/src/logging/Level.ts +19 -0
  161. package/src/logging/LogRecord.ts +17 -0
  162. package/src/logging/Logger.ts +222 -0
  163. package/src/logging/LoggingManager.ts +306 -0
  164. package/src/logging/appenders/ConsoleAppender.ts +110 -0
  165. package/src/logging/appenders/DebugAppender.ts +254 -0
  166. package/src/logging/appenders/FileAppender.ts +281 -0
  167. package/src/logging/appenders/aws-firehose/AWSFirehoseAppender.ts +176 -0
  168. package/src/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.ts +132 -0
  169. package/src/logging/appenders/index.ts +3 -0
  170. package/src/logging/context/LogContext.ts +74 -0
  171. package/src/logging/context/LogContextContainer.ts +28 -0
  172. package/src/logging/context/LogContextProvider.ts +43 -0
  173. package/src/logging/context/index.ts +3 -0
  174. package/src/logging/context/providers/node/NodeContextProvider.ts +45 -0
  175. package/src/logging/context/providers/node/index.ts +3 -0
  176. package/src/logging/examples/example-debug-appender.ts +19 -0
  177. package/src/logging/examples/example-file-appender.ts +19 -0
  178. package/src/logging/getLogger.ts +9 -0
  179. package/src/logging/index-node.ts +2 -0
  180. package/src/logging/index.ts +11 -0
  181. package/src/logging/util.ts +6 -0
  182. package/tsconfig.json +9 -0
  183. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,236 @@
1
+ import { isNumber, isObject, isString } from "../guards/index.js";
2
+ import { Option } from "prelude-ts";
3
+ import { flatten, isEmpty, min, negate } from "lodash";
4
+ import { ConsoleAppender } from "./appenders/ConsoleAppender.js";
5
+ import { Level, LevelThresholds } from "./Level.js";
6
+ import { Logger } from "./Logger.js";
7
+ import { LogContextContainer } from "./context/index.js";
8
+ import { flow, get, nth } from "lodash/fp.js";
9
+ function parseThresholdOverridePatterns(value, level = "debug") {
10
+ return value
11
+ .split(",")
12
+ .map((s) => [new RegExp(s), level]);
13
+ }
14
+ export const kEnvThresholdOverrides = Option.ofNullable(typeof process !== "undefined" && process.env.DEBUG_PATTERNS)
15
+ .filter(negate(isEmpty))
16
+ .map(parseThresholdOverridePatterns)
17
+ .getOrElse([]);
18
+ /**
19
+ * Logging manager
20
+ */
21
+ export class LoggingManager {
22
+ loggers = new Map();
23
+ state = {
24
+ appenders: [],
25
+ rootLevel: Level.info,
26
+ thresholdOverrides: kEnvThresholdOverrides
27
+ };
28
+ get rootLevel() {
29
+ return this.state.rootLevel;
30
+ }
31
+ set rootLevel(newRootLevel) {
32
+ this.state.rootLevel = newRootLevel;
33
+ }
34
+ get rootThreshold() {
35
+ return LevelThresholds[this.rootLevel];
36
+ }
37
+ /**
38
+ * Get the current handler
39
+ *
40
+ * @returns {Appender<Record>}
41
+ */
42
+ get appenders() {
43
+ return Option.ofNullable(this.state.appenders)
44
+ .filter((appenders) => appenders.length > 0)
45
+ .getOrCall(() => {
46
+ this.state.appenders.push(new ConsoleAppender());
47
+ return this.state.appenders;
48
+ });
49
+ }
50
+ /**
51
+ * Global threshold overrides
52
+ */
53
+ get thresholdOverrides() {
54
+ return this.state.thresholdOverrides;
55
+ }
56
+ /**
57
+ * Update the overrides
58
+ *
59
+ * @param newOverrides
60
+ */
61
+ set thresholdOverrides(newOverrides) {
62
+ this.state.thresholdOverrides = newOverrides;
63
+ }
64
+ /**
65
+ * Set global appenders
66
+ *
67
+ * @param {Array<Appender<Record>>} newAppenders
68
+ */
69
+ setAppenders(...newAppenders) {
70
+ // WE MUTATE DO TO THE LIKELIHOOD OF SOMEONE HOLDING A REF TO THE ARRAY,
71
+ // CONVERT TO OBSERVABLE AT SOME POINT
72
+ const persistentAppenders = this.state.appenders;
73
+ persistentAppenders.length = 0;
74
+ persistentAppenders.push(...flatten(newAppenders));
75
+ return this;
76
+ }
77
+ /**
78
+ * Add one or more appenders to existing appender set
79
+ *
80
+ * @param {Appender<Record> | Appender<Record>[]} newAppenders
81
+ * @returns {this<Record>}
82
+ */
83
+ addAppenders(...newAppenders) {
84
+ this.state.appenders.push(...flatten(newAppenders));
85
+ return this;
86
+ }
87
+ /**
88
+ * Clear threshold overrides
89
+ *
90
+ * @returns {this<Record>}
91
+ */
92
+ clearThresholdOverrides() {
93
+ this.state.thresholdOverrides.length = 0;
94
+ return this;
95
+ }
96
+ setThresholdOverrides(...overrides) {
97
+ this.state.thresholdOverrides.length = 0;
98
+ this.state.thresholdOverrides.push(...overrides);
99
+ return this;
100
+ }
101
+ addThresholdOverrides(...overrides) {
102
+ this.state.thresholdOverrides.push(...overrides);
103
+ return this;
104
+ }
105
+ /**
106
+ * Get applicable current contexts
107
+ *
108
+ * @param {string} category
109
+ * @returns {LogContext[]}
110
+ */
111
+ getApplicableCurrentContexts(category) {
112
+ return LogContextContainer.currentContext().filter(({ pattern }) => !pattern || pattern.test(category));
113
+ }
114
+ /**
115
+ * Check for any matching threshold overrides
116
+ *
117
+ * @param category
118
+ */
119
+ determineThresholdOverride(category) {
120
+ const contexts = this.getApplicableCurrentContexts(category),
121
+ // FIND CONFIGURED OVERRIDE LEVEL
122
+ overrideThreshold = Option.ofNullable(this.thresholdOverrides.find(([match]) => isString(match) ? match === category : match.test(category)))
123
+ .map(nth(1))
124
+ .map((level) => LevelThresholds[level])
125
+ .getOrNull(),
126
+ // FIND `LogContext` OVERRIDE LEVEL
127
+ contextThresholds = contexts
128
+ .filter(flow(get("thresholdLevel"), isString))
129
+ .map(({ thresholdLevel }) => LevelThresholds[thresholdLevel]),
130
+ // IF ANY OVERRIDES, GET THE MOST VERBOSE LEVEL
131
+ override = Option.ofNullable([...contextThresholds, overrideThreshold].filter(isNumber))
132
+ .filter(negate(isEmpty))
133
+ .map(min)
134
+ .getOrNull();
135
+ return override;
136
+ }
137
+ /**
138
+ * Set the root logging level
139
+ *
140
+ * @param {LevelKind} newLevel
141
+ * @returns {this<Record>}
142
+ */
143
+ setRootLevel(newLevel) {
144
+ this.state.rootLevel = newLevel;
145
+ return this;
146
+ }
147
+ /**
148
+ * Fire a log event, eventually
149
+ * invert this by making `Logger` an
150
+ * `EventEmitter3` and having the `LoggingManager`
151
+ * subscribe to `record` event
152
+ *
153
+ * @param {LogRecord<Record>} record
154
+ * @internal
155
+ */
156
+ fire(record) {
157
+ const { category } = record, contexts = this.getApplicableCurrentContexts(category), contextAppenders = contexts.flatMap(get("appenders")), appenders = [...this.appenders, ...contextAppenders];
158
+ appenders.forEach((appender) => appender.append(record));
159
+ }
160
+ /**
161
+ * Get a logger from cache, if the category
162
+ * does not have an existing logger, then create one.
163
+ *
164
+ * @param {string} categoryOrFilename
165
+ * @param {Partial<LoggerOptions>} inOptions
166
+ * @returns {Logger}
167
+ */
168
+ getLogger(categoryOrFilename, inOptions = {}) {
169
+ const options = Logger.hydrateOptions(inOptions);
170
+ const category = Logger.interoplateCategory(categoryOrFilename, options);
171
+ return Option.ofNullable(category)
172
+ .map((category) => this.loggers.get(category))
173
+ .getOrCall(() => {
174
+ const logger = new Logger(this, category, options);
175
+ this.loggers.set(category, logger);
176
+ return logger;
177
+ });
178
+ }
179
+ /**
180
+ * Configure the logging manager,
181
+ * this function is additive, so simply calling
182
+ * `configure` with a single option `rootLevel`,
183
+ * will not affect other options like `appenders` *
184
+ *
185
+ * @param {LoggingManagerOptions<any>} options
186
+ * @returns {this<Record>}
187
+ */
188
+ configure(options) {
189
+ if (Level[options?.rootLevel]) {
190
+ this.setRootLevel(options.rootLevel);
191
+ }
192
+ if (options?.appenders) {
193
+ this.setAppenders(options.appenders);
194
+ }
195
+ if (options?.thresholdOverrides) {
196
+ this.addThresholdOverrides(...options.thresholdOverrides);
197
+ }
198
+ return this;
199
+ }
200
+ constructor() {
201
+ this.configure({});
202
+ }
203
+ /**
204
+ * Singleton instance
205
+ *
206
+ * @type {LoggingManager}
207
+ * @private
208
+ */
209
+ static manager;
210
+ /**
211
+ * Get logging manager and optionally provided
212
+ * configuration options
213
+ *
214
+ * @param {LoggingManagerOptions<Record>} options
215
+ * @returns {LoggingManager<Record>}
216
+ */
217
+ static get(options = null) {
218
+ if (!this.manager) {
219
+ this.manager = new LoggingManager();
220
+ }
221
+ if (options) {
222
+ this.manager.configure(options);
223
+ }
224
+ return this.manager;
225
+ }
226
+ }
227
+ export function getLoggingManager() {
228
+ return LoggingManager.get();
229
+ }
230
+ if (Option.try_(() => process.env.NODE_ENV === "development").getOrElse(false)) {
231
+ [typeof window !== "undefined" && window, typeof global !== "undefined" && global].filter(isObject)
232
+ .map(target => Object.assign(target, {
233
+ loggingManager: getLoggingManager()
234
+ }));
235
+ }
236
+ //# sourceMappingURL=LoggingManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoggingManager.js","sourceRoot":"","sources":["../../src/logging/LoggingManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { LogRecord } from "../LogRecord";
2
+ import type { Appender } from "../Appender";
3
+ import type { LevelKind } from "../Level";
4
+ import type { Formatter } from "../Formatter";
5
+ /**
6
+ * Get a cached console bound log function
7
+ *
8
+ * @param {LevelKind} level
9
+ * @returns {(...args: any[]) => any}
10
+ */
11
+ export declare function getConsoleLogBinding(level: LevelKind): (...args: any[]) => any;
12
+ /**
13
+ * ConsoleAppender Configuration
14
+ */
15
+ export interface ConsoleAppenderConfig<Record extends LogRecord = any> {
16
+ cacheEnabled: boolean;
17
+ prettyPrint: boolean;
18
+ formatter?: Formatter<string | Array<any>>;
19
+ }
20
+ /**
21
+ * Partial of config, used for shortening instead of Partial<...>
22
+ */
23
+ export type ConsoleAppenderOptions<Record extends LogRecord> = Partial<ConsoleAppenderConfig<Record>>;
24
+ export declare const consoleFormatter: Formatter<Array<any>>;
25
+ /**
26
+ * Default console config
27
+ * @type {ConsoleAppenderConfig}
28
+ */
29
+ export declare const kDefaultConsoleAppenderConfig: ConsoleAppenderConfig;
30
+ /**
31
+ * Console appender, the simple default appender used
32
+ * everywhere OOB
33
+ */
34
+ export declare class ConsoleAppender<Record extends LogRecord> implements Appender<Record> {
35
+ readonly config: ConsoleAppenderConfig;
36
+ /**
37
+ * Handle log records, transform, push to ES
38
+ *
39
+ * @param record
40
+ */
41
+ append(record: Record): void;
42
+ /**
43
+ * Write args to console
44
+ *
45
+ * @param level
46
+ * @param args
47
+ */
48
+ protected write(level: LevelKind, ...args: any[]): void;
49
+ /**
50
+ *
51
+ * @param {Partial<ConsoleAppenderOptions<Record>>} options
52
+ */
53
+ constructor(options?: Partial<ConsoleAppenderOptions<Record>>);
54
+ }
55
+ //# sourceMappingURL=ConsoleAppender.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsoleAppender.d.ts","sourceRoot":"","sources":["../../../src/logging/appenders/ConsoleAppender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAQ7C;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,aAZG,GAAG,EAAE,KAAK,GAAG,CAkBpE;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,MAAM,SAAS,SAAS,GAAG,GAAG;IACnE,YAAY,EAAE,OAAO,CAAA;IACrB,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;CAC3C;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAAC,MAAM,SAAS,SAAS,IAAI,OAAO,CACpE,qBAAqB,CAAC,MAAM,CAAC,CAC9B,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAUlD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,qBAI3C,CAAA;AAED;;;GAGG;AACH,qBAAa,eAAe,CAAC,MAAM,SAAS,SAAS,CACnD,YAAW,QAAQ,CAAC,MAAM,CAAC;IAE3B,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;IAEtC;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAS5B;;;;;OAKG;IACH,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;IAMhD;;;OAGG;gBACS,OAAO,GAAE,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAM;CAMlE"}
@@ -0,0 +1,72 @@
1
+ import { Option } from "prelude-ts";
2
+ const consoleLogBindings = new Map();
3
+ function getBoundConsoleFn(level) {
4
+ return (console[level] ?? console.log).bind(console);
5
+ }
6
+ /**
7
+ * Get a cached console bound log function
8
+ *
9
+ * @param {LevelKind} level
10
+ * @returns {(...args: any[]) => any}
11
+ */
12
+ export function getConsoleLogBinding(level) {
13
+ if (!consoleLogBindings.has(level)) {
14
+ consoleLogBindings.set(level, getBoundConsoleFn(level));
15
+ }
16
+ return consoleLogBindings.get(level);
17
+ }
18
+ export const consoleFormatter = ({ level, message, data, args, category, timestamp }) => [
19
+ `[${category}] (${level}) ${message}`,
20
+ ...(Array.isArray(args) ? args : [args])
21
+ ];
22
+ /**
23
+ * Default console config
24
+ * @type {ConsoleAppenderConfig}
25
+ */
26
+ export const kDefaultConsoleAppenderConfig = {
27
+ cacheEnabled: true,
28
+ prettyPrint: true,
29
+ formatter: consoleFormatter
30
+ };
31
+ /**
32
+ * Console appender, the simple default appender used
33
+ * everywhere OOB
34
+ */
35
+ export class ConsoleAppender {
36
+ config;
37
+ /**
38
+ * Handle log records, transform, push to ES
39
+ *
40
+ * @param record
41
+ */
42
+ append(record) {
43
+ const { level, message, data, args, category, timestamp } = record;
44
+ const { formatter = consoleFormatter } = this.config;
45
+ Option.ofNullable(formatter(record)).map((result) => {
46
+ const args = Array.isArray(result) ? result : [result];
47
+ this.write(level, ...args);
48
+ });
49
+ }
50
+ /**
51
+ * Write args to console
52
+ *
53
+ * @param level
54
+ * @param args
55
+ */
56
+ write(level, ...args) {
57
+ Option.ofNullable(console[level])
58
+ .orCall(() => Option.ofNullable(console.log))
59
+ .map((fn) => fn.apply(console, args));
60
+ }
61
+ /**
62
+ *
63
+ * @param {Partial<ConsoleAppenderOptions<Record>>} options
64
+ */
65
+ constructor(options = {}) {
66
+ this.config = {
67
+ ...kDefaultConsoleAppenderConfig,
68
+ ...options
69
+ };
70
+ }
71
+ }
72
+ //# sourceMappingURL=ConsoleAppender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsoleAppender.js","sourceRoot":"","sources":["../../../src/logging/appenders/ConsoleAppender.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAInC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAsC,CAAA;AAExE,SAAS,iBAAiB,CAAC,KAAgB;IACzC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAgB;IACnD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAA;IACzD,CAAC;IAED,OAAO,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACtC,CAAC;AAkBD,MAAM,CAAC,MAAM,gBAAgB,GAA0B,CAAC,EACtD,KAAK,EACL,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,SAAS,EACV,EAAE,EAAE,CAAC;IACJ,IAAI,QAAQ,OAAO,KAAK,MAAM,OAAO,EAAE;IACvC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CACzC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAA0B;IAClE,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,gBAAgB;CAC5B,CAAA;AAED;;;GAGG;AACH,MAAM,OAAO,eAAe;IAGjB,MAAM,CAAuB;IAEtC;;;;OAIG;IACH,MAAM,CAAC,MAAc;QACnB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;QAClE,MAAM,EAAE,SAAS,GAAG,gBAAgB,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QACpD,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAClD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YACtD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAA;QAC5B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,KAAgB,EAAE,GAAG,IAAW;QAC9C,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aAC5B,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aAC5C,GAAG,CAAC,CAAC,EAAY,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;IACrD,CAAC;IAED;;;OAGG;IACH,YAAY,UAAmD,EAAE;QAC/D,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,6BAA6B;YAChC,GAAG,OAAO;SACX,CAAA;IACH,CAAC;CACF"}
@@ -0,0 +1,53 @@
1
+ import type { LogRecord } from "../LogRecord";
2
+ import type { Appender } from "../Appender";
3
+ import Debug from "debug";
4
+ import { ConsoleAppender, ConsoleAppenderConfig } from "./ConsoleAppender.js";
5
+ import type { Formatter } from "../Formatter";
6
+ /**
7
+ * DebugAppender Configuration
8
+ */
9
+ export interface DebugAppenderConfig extends ConsoleAppenderConfig {
10
+ hideDate: boolean;
11
+ timeOnly: boolean;
12
+ useConsole: boolean;
13
+ useStdout: boolean;
14
+ categoryPrefix: string;
15
+ }
16
+ /**
17
+ * Partial of config, used for shortening instead of Partial<...>
18
+ */
19
+ export type DebugAppenderOptions = Partial<DebugAppenderConfig>;
20
+ /**
21
+ * Context for using `debugFormatter`
22
+ */
23
+ export type DebugFormatterContext = {
24
+ debugConfig: DebugAppenderConfig;
25
+ debug: Debug.Debugger;
26
+ };
27
+ /**
28
+ * Uses `debug` package for logging, very useful
29
+ *
30
+ * @param {LogRecord} record to format
31
+ * @param {DebugFormatterContext} context for this formatter
32
+ * @returns
33
+ */
34
+ export declare const debugFormatter: Formatter<Array<any>, DebugFormatterContext>;
35
+ /**
36
+ * Debug appender, the simple default appender used
37
+ * everywhere OOB
38
+ */
39
+ export declare class DebugAppender<Record extends LogRecord> extends ConsoleAppender<Record> implements Appender<Record> {
40
+ readonly debugConfig: DebugAppenderConfig;
41
+ /**
42
+ * Handle log records, transform, push to ES
43
+ *
44
+ * @param record
45
+ */
46
+ append(record: Record): void;
47
+ /**
48
+ *
49
+ * @param {Partial<DebugAppenderOptions>} options
50
+ */
51
+ constructor(options?: Partial<Omit<DebugAppenderOptions, "formatter">>);
52
+ }
53
+ //# sourceMappingURL=DebugAppender.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugAppender.d.ts","sourceRoot":"","sources":["../../../src/logging/appenders/DebugAppender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EACL,eAAe,EAAE,qBAAqB,EACvC,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAiC7C;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAChE,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAsE/D;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,mBAAmB,CAAA;IAChC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAA;CACtB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAqCvE,CAAA;AAmBD;;;GAGG;AACH,qBAAa,aAAa,CAAC,MAAM,SAAS,SAAS,CACjD,SAAQ,eAAe,CAAC,MAAM,CAC9B,YAAW,QAAQ,CAAC,MAAM,CAAC;IAE3B,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAA;IAGzC;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA6B5B;;;OAGG;gBACS,OAAO,GAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAM;CAS3E"}
@@ -0,0 +1,183 @@
1
+ import Debug from "debug";
2
+ import { ConsoleAppender, kDefaultConsoleAppenderConfig } from "./ConsoleAppender.js";
3
+ import { isEmpty, negate } from "lodash";
4
+ // let chalk: any = null
5
+ // if (
6
+ // typeof process !== "undefined" &&
7
+ // (process as any).type !== "renderer" &&
8
+ // (process as any).browser !== true
9
+ // ) {
10
+ // chalk = require("chalk")
11
+ // }
12
+ const useColors = false;
13
+ const makeColorFn = (fn) => {
14
+ // if (!useColors) {
15
+ // return (s: string) => s
16
+ // }
17
+ //
18
+ // return (s: string) => fn(chalk, s)
19
+ return (s) => s;
20
+ };
21
+ const colorFns = {
22
+ debug: makeColorFn((c, s) => c.green(s)),
23
+ error: makeColorFn((c, s) => c.red(s)),
24
+ fatal: makeColorFn((c, s) => c.bgRed.black(s)),
25
+ info: makeColorFn((c, s) => c.blue(s)),
26
+ trace: makeColorFn((c, s) => c.gray(s)),
27
+ warn: makeColorFn((c, s) => c.yellow(s))
28
+ };
29
+ const debuggers = new Map();
30
+ //const debugAppPrefix = "app"
31
+ function getDebug({ categoryPrefix }, cat) {
32
+ let debug = debuggers.get(cat);
33
+ if (!debug) {
34
+ debug = Debug([categoryPrefix, cat].filter(negate(isEmpty)).join(":"));
35
+ debuggers.set(cat, debug);
36
+ }
37
+ return debug;
38
+ }
39
+ // const timeFormatter = new Intl.DateTimeFormat('en-US', {
40
+ // timeStyle: "short"
41
+ // })
42
+ /**
43
+ *
44
+ * Get ISO date if `hideDate !== true`
45
+ *
46
+ * @param {DebugFormatterContext}
47
+ * @returns
48
+ */
49
+ function getDate({ debugConfig: config }) {
50
+ if (config.hideDate) {
51
+ return "";
52
+ }
53
+ const date = new Date();
54
+ return config.timeOnly
55
+ ? date.toLocaleTimeString("default", {
56
+ hour12: false
57
+ })
58
+ : date.toISOString();
59
+ }
60
+ /**
61
+ *
62
+ * Formats args for output, directly based on Debug.formatArgs
63
+ *
64
+ * @param {DebugFormatterContext} context
65
+ * @param {any[]} args
66
+ */
67
+ function formatArgs(context, record, args) {
68
+ const { debug } = context;
69
+ const { namespace: name } = debug;
70
+ const prefix = colorFns[record.level]([
71
+ getDate(context),
72
+ Debug.humanize(debug.diff),
73
+ `(` + record.level.toUpperCase() + `)`,
74
+ `[${name}]`
75
+ ]
76
+ .filter(negate(isEmpty))
77
+ .join(" "));
78
+ const msg = [prefix, args[0]].filter(negate(isEmpty)).join(" ");
79
+ args[0] = msg;
80
+ }
81
+ /**
82
+ * Uses `debug` package for logging, very useful
83
+ *
84
+ * @param {LogRecord} record to format
85
+ * @param {DebugFormatterContext} context for this formatter
86
+ * @returns
87
+ */
88
+ export const debugFormatter = (record, { debug, debugConfig: config }) => {
89
+ const { level, message, data, args: argsIn, category, timestamp } = record;
90
+ const args = [message, ...argsIn];
91
+ args[0] = Debug.coerce(args[0]);
92
+ if (typeof args[0] !== "string") {
93
+ // Anything else let's inspect with %O
94
+ args.unshift("%O");
95
+ }
96
+ // Apply any `formatters` transformations
97
+ let index = 0;
98
+ args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {
99
+ // If we encounter an escaped % then don't increase the array index
100
+ if (match === "%%") {
101
+ return "%";
102
+ }
103
+ index++;
104
+ const formatter = Debug.formatters[format];
105
+ if (typeof formatter === "function") {
106
+ const val = args[index];
107
+ match = formatter.call(debug, val);
108
+ // Now we need to remove `args[index]` since it's inlined in the `format`
109
+ args.splice(index, 1);
110
+ index--;
111
+ }
112
+ return match;
113
+ });
114
+ // Apply env-specific formatting (colors, etc.)
115
+ formatArgs({ debug, debugConfig: config }, record, args);
116
+ return args;
117
+ };
118
+ // [
119
+ // `[${category}] (${level}) ${message}`,
120
+ // ...(Array.isArray(args) ? args : [args])
121
+ // ]
122
+ /**
123
+ * Default console config
124
+ * @type {DebugAppenderConfig}
125
+ */
126
+ const defaultConfig = {
127
+ hideDate: false,
128
+ timeOnly: true,
129
+ useConsole: false,
130
+ useStdout: true,
131
+ categoryPrefix: null,
132
+ ...kDefaultConsoleAppenderConfig,
133
+ formatter: debugFormatter
134
+ };
135
+ /**
136
+ * Debug appender, the simple default appender used
137
+ * everywhere OOB
138
+ */
139
+ export class DebugAppender extends ConsoleAppender {
140
+ debugConfig;
141
+ /**
142
+ * Handle log records, transform, push to ES
143
+ *
144
+ * @param record
145
+ */
146
+ append(record) {
147
+ const { level, message, args: argsIn, category } = record;
148
+ // if (!this.levels.includes(level)) {
149
+ // super.append(record)
150
+ // return
151
+ // }
152
+ const debug = getDebug(this.debugConfig, category);
153
+ let prevTime = debug.prevTime;
154
+ // Set `diff` timestamp
155
+ const curr = Number(new Date());
156
+ const ms = curr - (prevTime || curr);
157
+ debug.diff = ms;
158
+ debug.prev = prevTime;
159
+ debug.curr = curr;
160
+ debug.prevTime = curr;
161
+ const logFn = debug.log || Debug.log;
162
+ const args = debugFormatter(record, { debug, debugConfig: this.debugConfig });
163
+ if (this.debugConfig.useConsole) {
164
+ super.write(level, ...args);
165
+ }
166
+ if (this.debugConfig.useStdout) {
167
+ logFn.apply(debug, args);
168
+ }
169
+ }
170
+ /**
171
+ *
172
+ * @param {Partial<DebugAppenderOptions>} options
173
+ */
174
+ constructor(options = {}) {
175
+ super({
176
+ ...defaultConfig,
177
+ ...options,
178
+ formatter: debugFormatter
179
+ });
180
+ this.debugConfig = this.config;
181
+ }
182
+ }
183
+ //# sourceMappingURL=DebugAppender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugAppender.js","sourceRoot":"","sources":["../../../src/logging/appenders/DebugAppender.ts"],"names":[],"mappings":"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"}