@wireio/shared 1.0.18 → 1.0.20

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 (343) hide show
  1. package/lib/cjs/guards/applyTypeGuardExtras.d.ts.map +1 -0
  2. package/lib/cjs/guards/applyTypeGuardExtras.js +8 -0
  3. package/lib/cjs/guards/array.d.ts.map +1 -0
  4. package/lib/cjs/guards/array.js +7 -0
  5. package/lib/cjs/guards/assert.d.ts.map +1 -0
  6. package/lib/cjs/guards/assert.js +56 -0
  7. package/lib/cjs/guards/class.d.ts.map +1 -0
  8. package/lib/{guards → cjs/guards}/class.js +15 -7
  9. package/lib/cjs/guards/guard-tools.d.ts.map +1 -0
  10. package/lib/cjs/guards/guard-tools.js +55 -0
  11. package/lib/cjs/guards/index.d.ts.map +1 -0
  12. package/lib/cjs/guards/index.js +24 -0
  13. package/lib/cjs/guards/primitive.d.ts.map +1 -0
  14. package/lib/cjs/guards/primitive.js +65 -0
  15. package/lib/cjs/guards/types.d.ts.map +1 -0
  16. package/lib/cjs/guards/types.js +3 -0
  17. package/lib/cjs/helpers/Deferred.d.ts.map +1 -0
  18. package/lib/cjs/helpers/Deferred.js +115 -0
  19. package/lib/cjs/helpers/index.d.ts.map +1 -0
  20. package/lib/cjs/helpers/index.js +18 -0
  21. package/lib/cjs/index.d.ts.map +1 -0
  22. package/lib/cjs/index.js +20 -0
  23. package/lib/cjs/logging/Appender.d.ts.map +1 -0
  24. package/lib/cjs/logging/Appender.js +3 -0
  25. package/lib/cjs/logging/Formatter.d.ts.map +1 -0
  26. package/lib/cjs/logging/Formatter.js +3 -0
  27. package/lib/cjs/logging/InternalLogger.d.ts.map +1 -0
  28. package/lib/cjs/logging/InternalLogger.js +27 -0
  29. package/lib/cjs/logging/Level.d.ts.map +1 -0
  30. package/lib/cjs/logging/Level.js +16 -0
  31. package/lib/cjs/logging/LogRecord.d.ts.map +1 -0
  32. package/lib/cjs/logging/LogRecord.js +3 -0
  33. package/lib/cjs/logging/Logger.d.ts.map +1 -0
  34. package/lib/cjs/logging/Logger.js +190 -0
  35. package/lib/cjs/logging/LoggingManager.d.ts.map +1 -0
  36. package/lib/cjs/logging/LoggingManager.js +253 -0
  37. package/lib/cjs/logging/appenders/ConsoleAppender.d.ts.map +1 -0
  38. package/lib/cjs/logging/appenders/ConsoleAppender.js +78 -0
  39. package/lib/cjs/logging/appenders/FileAppender.d.ts.map +1 -0
  40. package/lib/cjs/logging/appenders/FileAppender.js +254 -0
  41. package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts.map +1 -0
  42. package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseAppender.js +145 -0
  43. package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts.map +1 -0
  44. package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.js +105 -0
  45. package/lib/cjs/logging/appenders/index.d.ts.map +1 -0
  46. package/lib/cjs/logging/appenders/index.js +20 -0
  47. package/lib/cjs/logging/appenders/push/PushLogRecordsAppender.d.ts.map +1 -0
  48. package/lib/cjs/logging/appenders/push/PushLogRecordsAppender.js +294 -0
  49. package/lib/cjs/logging/appenders/push/index.d.ts.map +1 -0
  50. package/lib/cjs/logging/appenders/push/index.js +18 -0
  51. package/lib/cjs/logging/context/LogContext.d.ts.map +1 -0
  52. package/lib/cjs/logging/context/LogContext.js +62 -0
  53. package/lib/cjs/logging/context/LogContextContainer.d.ts.map +1 -0
  54. package/lib/cjs/logging/context/LogContextContainer.js +28 -0
  55. package/lib/cjs/logging/context/LogContextProvider.d.ts.map +1 -0
  56. package/lib/cjs/logging/context/LogContextProvider.js +21 -0
  57. package/lib/cjs/logging/context/index.d.ts.map +1 -0
  58. package/lib/cjs/logging/context/index.js +20 -0
  59. package/lib/cjs/logging/context/providers/node/NodeContextProvider.d.ts.map +1 -0
  60. package/lib/cjs/logging/context/providers/node/NodeContextProvider.js +33 -0
  61. package/lib/cjs/logging/context/providers/node/index.d.ts.map +1 -0
  62. package/lib/cjs/logging/context/providers/node/index.js +4 -0
  63. package/lib/cjs/logging/examples/example-debug-appender.d.ts.map +1 -0
  64. package/lib/cjs/logging/examples/example-debug-appender.js +16 -0
  65. package/lib/cjs/logging/examples/example-file-appender.d.ts.map +1 -0
  66. package/lib/cjs/logging/examples/example-file-appender.js +18 -0
  67. package/lib/cjs/logging/getLogger.d.ts.map +1 -0
  68. package/lib/cjs/logging/getLogger.js +8 -0
  69. package/lib/cjs/logging/index-node.d.ts.map +1 -0
  70. package/lib/cjs/logging/index-node.js +19 -0
  71. package/lib/cjs/logging/index.d.ts.map +1 -0
  72. package/lib/cjs/logging/index.js +27 -0
  73. package/lib/cjs/logging/util.d.ts.map +1 -0
  74. package/lib/cjs/logging/util.js +9 -0
  75. package/lib/esm/guards/applyTypeGuardExtras.d.ts +3 -0
  76. package/lib/esm/guards/applyTypeGuardExtras.d.ts.map +1 -0
  77. package/lib/esm/guards/applyTypeGuardExtras.js +5 -0
  78. package/lib/esm/guards/array.d.ts +2 -0
  79. package/lib/esm/guards/array.d.ts.map +1 -0
  80. package/lib/esm/guards/array.js +4 -0
  81. package/lib/esm/guards/assert.d.ts +19 -0
  82. package/lib/esm/guards/assert.d.ts.map +1 -0
  83. package/lib/esm/guards/assert.js +50 -0
  84. package/lib/esm/guards/class.d.ts +27 -0
  85. package/lib/esm/guards/class.d.ts.map +1 -0
  86. package/lib/esm/guards/class.js +34 -0
  87. package/lib/esm/guards/guard-tools.d.ts +20 -0
  88. package/lib/esm/guards/guard-tools.d.ts.map +1 -0
  89. package/lib/esm/guards/guard-tools.js +50 -0
  90. package/lib/esm/guards/index.d.ts +8 -0
  91. package/lib/esm/guards/index.d.ts.map +1 -0
  92. package/lib/esm/guards/index.js +8 -0
  93. package/lib/esm/guards/primitive.d.ts +26 -0
  94. package/lib/esm/guards/primitive.d.ts.map +1 -0
  95. package/lib/esm/guards/primitive.js +47 -0
  96. package/lib/esm/guards/types.d.ts +10 -0
  97. package/lib/esm/guards/types.d.ts.map +1 -0
  98. package/lib/esm/guards/types.js +2 -0
  99. package/lib/esm/helpers/Deferred.d.ts +31 -0
  100. package/lib/esm/helpers/Deferred.d.ts.map +1 -0
  101. package/lib/esm/helpers/Deferred.js +111 -0
  102. package/lib/esm/helpers/index.d.ts +2 -0
  103. package/lib/esm/helpers/index.d.ts.map +1 -0
  104. package/lib/esm/helpers/index.js +2 -0
  105. package/lib/esm/index.d.ts +4 -0
  106. package/lib/esm/index.d.ts.map +1 -0
  107. package/lib/esm/index.js +4 -0
  108. package/lib/esm/logging/Appender.d.ts +5 -0
  109. package/lib/esm/logging/Appender.d.ts.map +1 -0
  110. package/lib/esm/logging/Appender.js +2 -0
  111. package/lib/esm/logging/Formatter.d.ts +3 -0
  112. package/lib/esm/logging/Formatter.d.ts.map +1 -0
  113. package/lib/esm/logging/Formatter.js +2 -0
  114. package/lib/esm/logging/InternalLogger.d.ts +5 -0
  115. package/lib/esm/logging/InternalLogger.d.ts.map +1 -0
  116. package/lib/esm/logging/InternalLogger.js +23 -0
  117. package/lib/esm/logging/Level.d.ts +14 -0
  118. package/lib/esm/logging/Level.d.ts.map +1 -0
  119. package/lib/esm/logging/Level.js +13 -0
  120. package/lib/esm/logging/LogRecord.d.ts +19 -0
  121. package/lib/esm/logging/LogRecord.d.ts.map +1 -0
  122. package/lib/esm/logging/LogRecord.js +2 -0
  123. package/lib/esm/logging/Logger.d.ts +81 -0
  124. package/lib/esm/logging/Logger.d.ts.map +1 -0
  125. package/lib/esm/logging/Logger.js +184 -0
  126. package/lib/esm/logging/LoggingManager.d.ts +131 -0
  127. package/lib/esm/logging/LoggingManager.d.ts.map +1 -0
  128. package/lib/esm/logging/LoggingManager.js +248 -0
  129. package/lib/esm/logging/appenders/ConsoleAppender.d.ts +55 -0
  130. package/lib/esm/logging/appenders/ConsoleAppender.d.ts.map +1 -0
  131. package/lib/esm/logging/appenders/ConsoleAppender.js +72 -0
  132. package/lib/esm/logging/appenders/FileAppender.d.ts +65 -0
  133. package/lib/esm/logging/appenders/FileAppender.d.ts.map +1 -0
  134. package/lib/esm/logging/appenders/FileAppender.js +214 -0
  135. package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts +28 -0
  136. package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts.map +1 -0
  137. package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseAppender.js +138 -0
  138. package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts +29 -0
  139. package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts.map +1 -0
  140. package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.js +98 -0
  141. package/lib/esm/logging/appenders/index.d.ts +4 -0
  142. package/lib/esm/logging/appenders/index.d.ts.map +1 -0
  143. package/lib/esm/logging/appenders/index.js +4 -0
  144. package/lib/esm/logging/appenders/push/PushLogRecordsAppender.d.ts +76 -0
  145. package/lib/esm/logging/appenders/push/PushLogRecordsAppender.d.ts.map +1 -0
  146. package/lib/esm/logging/appenders/push/PushLogRecordsAppender.js +286 -0
  147. package/lib/esm/logging/appenders/push/index.d.ts +2 -0
  148. package/lib/esm/logging/appenders/push/index.d.ts.map +1 -0
  149. package/lib/esm/logging/appenders/push/index.js +2 -0
  150. package/lib/esm/logging/context/LogContext.d.ts +48 -0
  151. package/lib/esm/logging/context/LogContext.d.ts.map +1 -0
  152. package/lib/esm/logging/context/LogContext.js +58 -0
  153. package/lib/esm/logging/context/LogContextContainer.d.ts +9 -0
  154. package/lib/esm/logging/context/LogContextContainer.d.ts.map +1 -0
  155. package/lib/esm/logging/context/LogContextContainer.js +25 -0
  156. package/lib/esm/logging/context/LogContextProvider.d.ts +24 -0
  157. package/lib/esm/logging/context/LogContextProvider.d.ts.map +1 -0
  158. package/lib/esm/logging/context/LogContextProvider.js +18 -0
  159. package/lib/esm/logging/context/index.d.ts +4 -0
  160. package/lib/esm/logging/context/index.d.ts.map +1 -0
  161. package/lib/esm/logging/context/index.js +4 -0
  162. package/lib/esm/logging/context/providers/node/NodeContextProvider.d.ts +2 -0
  163. package/lib/esm/logging/context/providers/node/NodeContextProvider.d.ts.map +1 -0
  164. package/lib/esm/logging/context/providers/node/NodeContextProvider.js +31 -0
  165. package/lib/esm/logging/context/providers/node/index.d.ts +3 -0
  166. package/lib/esm/logging/context/providers/node/index.d.ts.map +1 -0
  167. package/lib/esm/logging/context/providers/node/index.js +2 -0
  168. package/lib/esm/logging/examples/example-debug-appender.d.ts +2 -0
  169. package/lib/esm/logging/examples/example-debug-appender.d.ts.map +1 -0
  170. package/lib/esm/logging/examples/example-debug-appender.js +14 -0
  171. package/lib/esm/logging/examples/example-file-appender.d.ts +2 -0
  172. package/lib/esm/logging/examples/example-file-appender.d.ts.map +1 -0
  173. package/lib/esm/logging/examples/example-file-appender.js +16 -0
  174. package/lib/esm/logging/getLogger.d.ts +3 -0
  175. package/lib/esm/logging/getLogger.d.ts.map +1 -0
  176. package/lib/esm/logging/getLogger.js +5 -0
  177. package/lib/esm/logging/index-node.d.ts +3 -0
  178. package/lib/esm/logging/index-node.d.ts.map +1 -0
  179. package/lib/esm/logging/index-node.js +3 -0
  180. package/lib/esm/logging/index.d.ts +11 -0
  181. package/lib/esm/logging/index.d.ts.map +1 -0
  182. package/lib/esm/logging/index.js +11 -0
  183. package/lib/esm/logging/util.d.ts +3 -0
  184. package/lib/esm/logging/util.d.ts.map +1 -0
  185. package/lib/esm/logging/util.js +6 -0
  186. package/lib/test-cjs/guards/array.test.d.ts +2 -0
  187. package/lib/test-cjs/guards/array.test.d.ts.map +1 -0
  188. package/lib/test-cjs/guards/array.test.js +33 -0
  189. package/lib/test-cjs/guards/array.test.js.map +1 -0
  190. package/lib/test-cjs/guards/assert.test.d.ts +2 -0
  191. package/lib/test-cjs/guards/assert.test.d.ts.map +1 -0
  192. package/lib/test-cjs/guards/assert.test.js +80 -0
  193. package/lib/test-cjs/guards/assert.test.js.map +1 -0
  194. package/lib/test-cjs/guards/class.test.d.ts +2 -0
  195. package/lib/test-cjs/guards/class.test.d.ts.map +1 -0
  196. package/lib/test-cjs/guards/class.test.js +78 -0
  197. package/lib/test-cjs/guards/class.test.js.map +1 -0
  198. package/lib/test-cjs/guards/guard-tools.test.d.ts +2 -0
  199. package/lib/test-cjs/guards/guard-tools.test.d.ts.map +1 -0
  200. package/lib/test-cjs/guards/guard-tools.test.js +68 -0
  201. package/lib/test-cjs/guards/guard-tools.test.js.map +1 -0
  202. package/lib/test-cjs/guards/primitive.test.d.ts +2 -0
  203. package/lib/test-cjs/guards/primitive.test.d.ts.map +1 -0
  204. package/lib/test-cjs/guards/primitive.test.js +238 -0
  205. package/lib/test-cjs/guards/primitive.test.js.map +1 -0
  206. package/lib/test-cjs/helpers/Deferred.test.d.ts +2 -0
  207. package/lib/test-cjs/helpers/Deferred.test.d.ts.map +1 -0
  208. package/lib/test-cjs/helpers/Deferred.test.js +196 -0
  209. package/lib/test-cjs/helpers/Deferred.test.js.map +1 -0
  210. package/lib/test-cjs/logging/ConsoleAppender.test.d.ts +2 -0
  211. package/lib/test-cjs/logging/ConsoleAppender.test.d.ts.map +1 -0
  212. package/lib/test-cjs/logging/ConsoleAppender.test.js +95 -0
  213. package/lib/test-cjs/logging/ConsoleAppender.test.js.map +1 -0
  214. package/lib/test-cjs/logging/Level.test.d.ts +2 -0
  215. package/lib/test-cjs/logging/Level.test.d.ts.map +1 -0
  216. package/lib/test-cjs/logging/Level.test.js +42 -0
  217. package/lib/test-cjs/logging/Level.test.js.map +1 -0
  218. package/lib/test-cjs/logging/Logger.test.d.ts +2 -0
  219. package/lib/test-cjs/logging/Logger.test.d.ts.map +1 -0
  220. package/lib/test-cjs/logging/Logger.test.js +121 -0
  221. package/lib/test-cjs/logging/Logger.test.js.map +1 -0
  222. package/lib/test-cjs/logging/LoggingManager.test.d.ts +2 -0
  223. package/lib/test-cjs/logging/LoggingManager.test.d.ts.map +1 -0
  224. package/lib/test-cjs/logging/LoggingManager.test.js +124 -0
  225. package/lib/test-cjs/logging/LoggingManager.test.js.map +1 -0
  226. package/lib/test-cjs/logging/util.test.d.ts +2 -0
  227. package/lib/test-cjs/logging/util.test.d.ts.map +1 -0
  228. package/lib/test-cjs/logging/util.test.js +48 -0
  229. package/lib/test-cjs/logging/util.test.js.map +1 -0
  230. package/lib/tsconfig.cjs.jest.tsbuildinfo +1 -0
  231. package/lib/tsconfig.cjs.tsbuildinfo +1 -0
  232. package/lib/tsconfig.esm.tsbuildinfo +1 -0
  233. package/package.json +18 -6
  234. package/lib/guards/applyTypeGuardExtras.d.ts.map +0 -1
  235. package/lib/guards/applyTypeGuardExtras.js +0 -5
  236. package/lib/guards/array.d.ts.map +0 -1
  237. package/lib/guards/array.js +0 -4
  238. package/lib/guards/assert.d.ts.map +0 -1
  239. package/lib/guards/assert.js +0 -50
  240. package/lib/guards/class.d.ts.map +0 -1
  241. package/lib/guards/guard-tools.d.ts.map +0 -1
  242. package/lib/guards/guard-tools.js +0 -50
  243. package/lib/guards/index.d.ts.map +0 -1
  244. package/lib/guards/index.js +0 -8
  245. package/lib/guards/primitive.d.ts.map +0 -1
  246. package/lib/guards/primitive.js +0 -47
  247. package/lib/guards/types.d.ts.map +0 -1
  248. package/lib/guards/types.js +0 -2
  249. package/lib/helpers/Deferred.d.ts.map +0 -1
  250. package/lib/helpers/Deferred.js +0 -111
  251. package/lib/helpers/index.d.ts.map +0 -1
  252. package/lib/helpers/index.js +0 -2
  253. package/lib/index.d.ts.map +0 -1
  254. package/lib/index.js +0 -4
  255. package/lib/logging/Appender.d.ts.map +0 -1
  256. package/lib/logging/Appender.js +0 -2
  257. package/lib/logging/Formatter.d.ts.map +0 -1
  258. package/lib/logging/Formatter.js +0 -2
  259. package/lib/logging/InternalLogger.d.ts.map +0 -1
  260. package/lib/logging/InternalLogger.js +0 -23
  261. package/lib/logging/Level.d.ts.map +0 -1
  262. package/lib/logging/Level.js +0 -13
  263. package/lib/logging/LogRecord.d.ts.map +0 -1
  264. package/lib/logging/LogRecord.js +0 -2
  265. package/lib/logging/Logger.d.ts.map +0 -1
  266. package/lib/logging/Logger.js +0 -183
  267. package/lib/logging/LoggingManager.d.ts.map +0 -1
  268. package/lib/logging/LoggingManager.js +0 -243
  269. package/lib/logging/appenders/ConsoleAppender.d.ts.map +0 -1
  270. package/lib/logging/appenders/ConsoleAppender.js +0 -72
  271. package/lib/logging/appenders/FileAppender.d.ts.map +0 -1
  272. package/lib/logging/appenders/FileAppender.js +0 -212
  273. package/lib/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts.map +0 -1
  274. package/lib/logging/appenders/aws-firehose/AWSFirehoseAppender.js +0 -138
  275. package/lib/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts.map +0 -1
  276. package/lib/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.js +0 -98
  277. package/lib/logging/appenders/index.d.ts.map +0 -1
  278. package/lib/logging/appenders/index.js +0 -4
  279. package/lib/logging/appenders/push/PushLogRecordsAppender.d.ts.map +0 -1
  280. package/lib/logging/appenders/push/PushLogRecordsAppender.js +0 -286
  281. package/lib/logging/appenders/push/index.d.ts.map +0 -1
  282. package/lib/logging/appenders/push/index.js +0 -2
  283. package/lib/logging/context/LogContext.d.ts.map +0 -1
  284. package/lib/logging/context/LogContext.js +0 -58
  285. package/lib/logging/context/LogContextContainer.d.ts.map +0 -1
  286. package/lib/logging/context/LogContextContainer.js +0 -25
  287. package/lib/logging/context/LogContextProvider.d.ts.map +0 -1
  288. package/lib/logging/context/LogContextProvider.js +0 -18
  289. package/lib/logging/context/index.d.ts.map +0 -1
  290. package/lib/logging/context/index.js +0 -4
  291. package/lib/logging/context/providers/node/NodeContextProvider.d.ts.map +0 -1
  292. package/lib/logging/context/providers/node/NodeContextProvider.js +0 -31
  293. package/lib/logging/context/providers/node/index.d.ts.map +0 -1
  294. package/lib/logging/context/providers/node/index.js +0 -2
  295. package/lib/logging/examples/example-debug-appender.d.ts.map +0 -1
  296. package/lib/logging/examples/example-debug-appender.js +0 -14
  297. package/lib/logging/examples/example-file-appender.d.ts.map +0 -1
  298. package/lib/logging/examples/example-file-appender.js +0 -16
  299. package/lib/logging/getLogger.d.ts.map +0 -1
  300. package/lib/logging/getLogger.js +0 -5
  301. package/lib/logging/index-node.d.ts.map +0 -1
  302. package/lib/logging/index-node.js +0 -3
  303. package/lib/logging/index.d.ts.map +0 -1
  304. package/lib/logging/index.js +0 -11
  305. package/lib/logging/util.d.ts.map +0 -1
  306. package/lib/logging/util.js +0 -6
  307. /package/lib/{guards → cjs/guards}/applyTypeGuardExtras.d.ts +0 -0
  308. /package/lib/{guards → cjs/guards}/array.d.ts +0 -0
  309. /package/lib/{guards → cjs/guards}/assert.d.ts +0 -0
  310. /package/lib/{guards → cjs/guards}/class.d.ts +0 -0
  311. /package/lib/{guards → cjs/guards}/guard-tools.d.ts +0 -0
  312. /package/lib/{guards → cjs/guards}/index.d.ts +0 -0
  313. /package/lib/{guards → cjs/guards}/primitive.d.ts +0 -0
  314. /package/lib/{guards → cjs/guards}/types.d.ts +0 -0
  315. /package/lib/{helpers → cjs/helpers}/Deferred.d.ts +0 -0
  316. /package/lib/{helpers → cjs/helpers}/index.d.ts +0 -0
  317. /package/lib/{index.d.ts → cjs/index.d.ts} +0 -0
  318. /package/lib/{logging → cjs/logging}/Appender.d.ts +0 -0
  319. /package/lib/{logging → cjs/logging}/Formatter.d.ts +0 -0
  320. /package/lib/{logging → cjs/logging}/InternalLogger.d.ts +0 -0
  321. /package/lib/{logging → cjs/logging}/Level.d.ts +0 -0
  322. /package/lib/{logging → cjs/logging}/LogRecord.d.ts +0 -0
  323. /package/lib/{logging → cjs/logging}/Logger.d.ts +0 -0
  324. /package/lib/{logging → cjs/logging}/LoggingManager.d.ts +0 -0
  325. /package/lib/{logging → cjs/logging}/appenders/ConsoleAppender.d.ts +0 -0
  326. /package/lib/{logging → cjs/logging}/appenders/FileAppender.d.ts +0 -0
  327. /package/lib/{logging → cjs/logging}/appenders/aws-firehose/AWSFirehoseAppender.d.ts +0 -0
  328. /package/lib/{logging → cjs/logging}/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts +0 -0
  329. /package/lib/{logging → cjs/logging}/appenders/index.d.ts +0 -0
  330. /package/lib/{logging → cjs/logging}/appenders/push/PushLogRecordsAppender.d.ts +0 -0
  331. /package/lib/{logging → cjs/logging}/appenders/push/index.d.ts +0 -0
  332. /package/lib/{logging → cjs/logging}/context/LogContext.d.ts +0 -0
  333. /package/lib/{logging → cjs/logging}/context/LogContextContainer.d.ts +0 -0
  334. /package/lib/{logging → cjs/logging}/context/LogContextProvider.d.ts +0 -0
  335. /package/lib/{logging → cjs/logging}/context/index.d.ts +0 -0
  336. /package/lib/{logging → cjs/logging}/context/providers/node/NodeContextProvider.d.ts +0 -0
  337. /package/lib/{logging → cjs/logging}/context/providers/node/index.d.ts +0 -0
  338. /package/lib/{logging → cjs/logging}/examples/example-debug-appender.d.ts +0 -0
  339. /package/lib/{logging → cjs/logging}/examples/example-file-appender.d.ts +0 -0
  340. /package/lib/{logging → cjs/logging}/getLogger.d.ts +0 -0
  341. /package/lib/{logging → cjs/logging}/index-node.d.ts +0 -0
  342. /package/lib/{logging → cjs/logging}/index.d.ts +0 -0
  343. /package/lib/{logging → cjs/logging}/util.d.ts +0 -0
@@ -0,0 +1,131 @@
1
+ import type { Appender } from "./Appender.js";
2
+ import { LevelKind } from "./Level.js";
3
+ import { Logger, LoggerOptions } from "./Logger.js";
4
+ import type { LogMetadata, LogRecord } from "./LogRecord.js";
5
+ import { LogContext } from "./context/index.js";
6
+ export type CategoryMatch = RegExp | string;
7
+ export type ThresholdOverride = [match: CategoryMatch, level: LevelKind];
8
+ export interface LoggingManagerState<Record extends LogRecord> {
9
+ rootLevel: LevelKind;
10
+ globalMetadata?: LogMetadata;
11
+ appenders: Array<Appender<Record>>;
12
+ thresholdOverrides: Array<ThresholdOverride>;
13
+ }
14
+ export type LoggingManagerOptions<Record extends LogRecord> = Partial<LoggingManagerState<Record>>;
15
+ export declare const kEnvThresholdOverrides: ThresholdOverride[];
16
+ /**
17
+ * Logging manager
18
+ */
19
+ export declare class LoggingManager<Record extends LogRecord = any> {
20
+ private readonly loggers;
21
+ private readonly state;
22
+ get rootLevel(): LevelKind;
23
+ get globalMetadata(): LogMetadata;
24
+ set globalMetadata(newMetadata: LogMetadata);
25
+ set rootLevel(newRootLevel: LevelKind);
26
+ get rootThreshold(): number;
27
+ /**
28
+ * Get the current handler
29
+ *
30
+ * @returns {Appender<Record>}
31
+ */
32
+ get appenders(): Array<Appender<Record>>;
33
+ /**
34
+ * Global threshold overrides
35
+ */
36
+ get thresholdOverrides(): ThresholdOverride[];
37
+ /**
38
+ * Update the overrides
39
+ *
40
+ * @param newOverrides
41
+ */
42
+ set thresholdOverrides(newOverrides: ThresholdOverride[]);
43
+ /**
44
+ * Set global appenders
45
+ *
46
+ * @param {Array<Appender<Record>>} newAppenders
47
+ */
48
+ setAppenders(...newAppenders: Array<Appender<Record> | Appender<Record>[]>): this;
49
+ /**
50
+ * Add one or more appenders to existing appender set
51
+ *
52
+ * @param {Appender<Record> | Appender<Record>[]} newAppenders
53
+ * @returns {this<Record>}
54
+ */
55
+ addAppenders(...newAppenders: Array<Appender<Record> | Appender<Record>[]>): this;
56
+ /**
57
+ * Clear threshold overrides
58
+ *
59
+ * @returns {this<Record>}
60
+ */
61
+ clearThresholdOverrides(): this;
62
+ setThresholdOverrides(...overrides: Array<ThresholdOverride>): this;
63
+ addThresholdOverrides(...overrides: Array<ThresholdOverride>): this;
64
+ /**
65
+ * Get applicable current contexts
66
+ *
67
+ * @param {string} category
68
+ * @returns {LogContext[]}
69
+ */
70
+ getApplicableCurrentContexts(category: string): LogContext[];
71
+ /**
72
+ * Check for any matching threshold overrides
73
+ *
74
+ * @param category
75
+ */
76
+ determineThresholdOverride(category: string): number;
77
+ /**
78
+ * Set the root logging level
79
+ *
80
+ * @param {LevelKind} newLevel
81
+ * @returns {this<Record>}
82
+ */
83
+ setRootLevel(newLevel: LevelKind): this;
84
+ /**
85
+ * Fire a log event, eventually
86
+ * invert this by making `Logger` an
87
+ * `EventEmitter3` and having the `LoggingManager`
88
+ * subscribe to `record` event
89
+ *
90
+ * @param {LogRecord<Record>} record
91
+ * @internal
92
+ */
93
+ fire(record: LogRecord<Record>): void;
94
+ /**
95
+ * Get a logger from cache, if the category
96
+ * does not have an existing logger, then create one.
97
+ *
98
+ * @param {string} categoryOrFilename
99
+ * @param {Partial<LoggerOptions>} inOptions
100
+ * @returns {Logger}
101
+ */
102
+ getLogger(categoryOrFilename: string, inOptions?: Partial<LoggerOptions>): Logger;
103
+ /**
104
+ * Configure the logging manager,
105
+ * this function is additive, so simply calling
106
+ * `configure` with a single option `rootLevel`,
107
+ * will not affect other options like `appenders` *
108
+ *
109
+ * @param {LoggingManagerOptions<any>} options
110
+ * @returns {this<Record>}
111
+ */
112
+ configure(options: LoggingManagerOptions<any>): this;
113
+ private constructor();
114
+ /**
115
+ * Singleton instance
116
+ *
117
+ * @type {LoggingManager}
118
+ * @private
119
+ */
120
+ private static manager;
121
+ /**
122
+ * Get logging manager and optionally provided
123
+ * configuration options
124
+ *
125
+ * @param {LoggingManagerOptions<Record>} options
126
+ * @returns {LoggingManager<Record>}
127
+ */
128
+ static get<Record extends LogRecord = any>(options?: LoggingManagerOptions<Record>): LoggingManager<Record>;
129
+ }
130
+ export declare function getLoggingManager(): LoggingManager;
131
+ //# sourceMappingURL=LoggingManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoggingManager.d.ts","sourceRoot":"","sources":["../../../src/logging/LoggingManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,248 @@
1
+ import { isNumber, isObject, isString } from "../guards/index.js";
2
+ import { Option } from "@3fv/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.split(",").map(s => [new RegExp(s), level]);
11
+ }
12
+ export const kEnvThresholdOverrides = Option.ofNullable(typeof process !== "undefined" && process.env.DEBUG_PATTERNS)
13
+ .filter(negate(isEmpty))
14
+ .map(parseThresholdOverridePatterns)
15
+ .getOrElse([]);
16
+ /**
17
+ * Logging manager
18
+ */
19
+ export class LoggingManager {
20
+ loggers = new Map();
21
+ state = {
22
+ appenders: [],
23
+ globalMetadata: {},
24
+ rootLevel: Level.info,
25
+ thresholdOverrides: kEnvThresholdOverrides
26
+ };
27
+ get rootLevel() {
28
+ return this.state.rootLevel;
29
+ }
30
+ get globalMetadata() {
31
+ return this.state.globalMetadata;
32
+ }
33
+ set globalMetadata(newMetadata) {
34
+ this.state.globalMetadata = newMetadata ?? {};
35
+ }
36
+ set rootLevel(newRootLevel) {
37
+ this.state.rootLevel = newRootLevel;
38
+ }
39
+ get rootThreshold() {
40
+ return LevelThresholds[this.rootLevel];
41
+ }
42
+ /**
43
+ * Get the current handler
44
+ *
45
+ * @returns {Appender<Record>}
46
+ */
47
+ get appenders() {
48
+ return Option.ofNullable(this.state.appenders)
49
+ .filter(appenders => appenders.length > 0)
50
+ .getOrCall(() => {
51
+ this.state.appenders.push(new ConsoleAppender());
52
+ return this.state.appenders;
53
+ });
54
+ }
55
+ /**
56
+ * Global threshold overrides
57
+ */
58
+ get thresholdOverrides() {
59
+ return this.state.thresholdOverrides;
60
+ }
61
+ /**
62
+ * Update the overrides
63
+ *
64
+ * @param newOverrides
65
+ */
66
+ set thresholdOverrides(newOverrides) {
67
+ this.state.thresholdOverrides = newOverrides;
68
+ }
69
+ /**
70
+ * Set global appenders
71
+ *
72
+ * @param {Array<Appender<Record>>} newAppenders
73
+ */
74
+ setAppenders(...newAppenders) {
75
+ // WE MUTATE DO TO THE LIKELIHOOD OF SOMEONE HOLDING A REF TO THE ARRAY,
76
+ // CONVERT TO OBSERVABLE AT SOME POINT
77
+ const persistentAppenders = this.state.appenders;
78
+ persistentAppenders.length = 0;
79
+ persistentAppenders.push(...flatten(newAppenders));
80
+ return this;
81
+ }
82
+ /**
83
+ * Add one or more appenders to existing appender set
84
+ *
85
+ * @param {Appender<Record> | Appender<Record>[]} newAppenders
86
+ * @returns {this<Record>}
87
+ */
88
+ addAppenders(...newAppenders) {
89
+ this.state.appenders.push(...flatten(newAppenders));
90
+ return this;
91
+ }
92
+ /**
93
+ * Clear threshold overrides
94
+ *
95
+ * @returns {this<Record>}
96
+ */
97
+ clearThresholdOverrides() {
98
+ this.state.thresholdOverrides.length = 0;
99
+ return this;
100
+ }
101
+ setThresholdOverrides(...overrides) {
102
+ this.state.thresholdOverrides.length = 0;
103
+ this.state.thresholdOverrides.push(...overrides);
104
+ return this;
105
+ }
106
+ addThresholdOverrides(...overrides) {
107
+ this.state.thresholdOverrides.push(...overrides);
108
+ return this;
109
+ }
110
+ /**
111
+ * Get applicable current contexts
112
+ *
113
+ * @param {string} category
114
+ * @returns {LogContext[]}
115
+ */
116
+ getApplicableCurrentContexts(category) {
117
+ return LogContextContainer.currentContext().filter(({ pattern }) => !pattern || pattern.test(category));
118
+ }
119
+ /**
120
+ * Check for any matching threshold overrides
121
+ *
122
+ * @param category
123
+ */
124
+ determineThresholdOverride(category) {
125
+ const contexts = this.getApplicableCurrentContexts(category),
126
+ // FIND CONFIGURED OVERRIDE LEVEL
127
+ overrideThreshold = Option.ofNullable(this.thresholdOverrides.find(([match]) => isString(match)
128
+ ? match === category
129
+ : match.test(category)))
130
+ .map(nth(1))
131
+ .map(level => LevelThresholds[level])
132
+ .getOrNull(),
133
+ // FIND `LogContext` OVERRIDE LEVEL
134
+ contextThresholds = contexts
135
+ .filter(flow(get("thresholdLevel"), isString))
136
+ .map(({ thresholdLevel }) => LevelThresholds[thresholdLevel]),
137
+ // IF ANY OVERRIDES, GET THE MOST VERBOSE LEVEL
138
+ override = Option.ofNullable([...contextThresholds, overrideThreshold].filter(isNumber))
139
+ .filter(negate(isEmpty))
140
+ .map(min)
141
+ .getOrNull();
142
+ return override;
143
+ }
144
+ /**
145
+ * Set the root logging level
146
+ *
147
+ * @param {LevelKind} newLevel
148
+ * @returns {this<Record>}
149
+ */
150
+ setRootLevel(newLevel) {
151
+ this.state.rootLevel = newLevel;
152
+ return this;
153
+ }
154
+ /**
155
+ * Fire a log event, eventually
156
+ * invert this by making `Logger` an
157
+ * `EventEmitter3` and having the `LoggingManager`
158
+ * subscribe to `record` event
159
+ *
160
+ * @param {LogRecord<Record>} record
161
+ * @internal
162
+ */
163
+ fire(record) {
164
+ const { category } = record, contexts = this.getApplicableCurrentContexts(category), contextAppenders = contexts.flatMap(get("appenders")), appenders = [...this.appenders, ...contextAppenders];
165
+ appenders.forEach(appender => appender.append(record));
166
+ }
167
+ /**
168
+ * Get a logger from cache, if the category
169
+ * does not have an existing logger, then create one.
170
+ *
171
+ * @param {string} categoryOrFilename
172
+ * @param {Partial<LoggerOptions>} inOptions
173
+ * @returns {Logger}
174
+ */
175
+ getLogger(categoryOrFilename, inOptions = {}) {
176
+ const options = Logger.hydrateOptions(inOptions);
177
+ const category = Logger.interoplateCategory(categoryOrFilename, options);
178
+ return Option.ofNullable(category)
179
+ .map(category => this.loggers.get(category))
180
+ .getOrCall(() => {
181
+ const logger = new Logger(this, category, options);
182
+ this.loggers.set(category, logger);
183
+ return logger;
184
+ });
185
+ }
186
+ /**
187
+ * Configure the logging manager,
188
+ * this function is additive, so simply calling
189
+ * `configure` with a single option `rootLevel`,
190
+ * will not affect other options like `appenders` *
191
+ *
192
+ * @param {LoggingManagerOptions<any>} options
193
+ * @returns {this<Record>}
194
+ */
195
+ configure(options) {
196
+ if (Level[options?.rootLevel]) {
197
+ this.setRootLevel(options.rootLevel);
198
+ }
199
+ if (options?.appenders) {
200
+ this.setAppenders(options.appenders);
201
+ }
202
+ if (options?.thresholdOverrides) {
203
+ this.addThresholdOverrides(...options.thresholdOverrides);
204
+ }
205
+ return this;
206
+ }
207
+ constructor() {
208
+ this.configure({});
209
+ }
210
+ /**
211
+ * Singleton instance
212
+ *
213
+ * @type {LoggingManager}
214
+ * @private
215
+ */
216
+ static manager;
217
+ /**
218
+ * Get logging manager and optionally provided
219
+ * configuration options
220
+ *
221
+ * @param {LoggingManagerOptions<Record>} options
222
+ * @returns {LoggingManager<Record>}
223
+ */
224
+ static get(options = null) {
225
+ if (!this.manager) {
226
+ this.manager = new LoggingManager();
227
+ }
228
+ if (options) {
229
+ this.manager.configure(options);
230
+ }
231
+ return this.manager;
232
+ }
233
+ }
234
+ export function getLoggingManager() {
235
+ return LoggingManager.get();
236
+ }
237
+ if (Option.try(() => process.env.NODE_ENV === "development").getOrElse(false)) {
238
+ ;
239
+ [
240
+ typeof window !== "undefined" && window,
241
+ typeof global !== "undefined" && global
242
+ ]
243
+ .filter(isObject)
244
+ .map(target => Object.assign(target, {
245
+ loggingManager: getLoggingManager()
246
+ }));
247
+ }
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nZ2luZ01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbG9nZ2luZy9Mb2dnaW5nTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUV0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDaEUsT0FBTyxFQUFFLEtBQUssRUFBYSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBaUIsTUFBTSxhQUFhLENBQUE7QUFFbkQsT0FBTyxFQUFjLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDcEUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBaUI3QyxTQUFTLDhCQUE4QixDQUNyQyxLQUFhLEVBQ2IsUUFBbUIsT0FBTztJQUUxQixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQXNCLENBQUMsQ0FBQTtBQUMvRSxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FDckQsT0FBTyxPQUFPLEtBQUssV0FBVyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUM3RDtLQUNFLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDdkIsR0FBRyxD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QUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxjQUFjLEVBQVUsQ0FBQTtRQUM3QyxDQUFDO1FBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2pDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDckIsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixPQUFPLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtBQUM3QixDQUFDO0FBRUQsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzlFLENBQUM7SUFBQTtRQUNDLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNO1FBQ3ZDLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNO0tBQ3hDO1NBQ0UsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUNoQixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDWixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNwQixjQUFjLEVBQUUsaUJBQWlCLEVBQUU7S0FDcEMsQ0FBQyxDQUNILENBQUE7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdW1iZXIsIGlzT2JqZWN0LCBpc1N0cmluZyB9IGZyb20gXCIuLi9ndWFyZHMvaW5kZXguanNcIlxuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSBcIkAzZnYvcHJlbHVkZS10c1wiXG5pbXBvcnQgeyBmbGF0dGVuLCBpc0VtcHR5LCBtaW4sIG5lZ2F0ZSB9IGZyb20gXCJsb2Rhc2hcIlxuaW1wb3J0IHR5cGUgeyBBcHBlbmRlciB9IGZyb20gXCIuL0FwcGVuZGVyLmpzXCJcbmltcG9ydCB7IENvbnNvbGVBcHBlbmRlciB9IGZyb20gXCIuL2FwcGVuZGVycy9Db25zb2xlQXBwZW5kZXIuanNcIlxuaW1wb3J0IHsgTGV2ZWwsIExldmVsS2luZCwgTGV2ZWxUaHJlc2hvbGRzIH0gZnJvbSBcIi4vTGV2ZWwuanNcIlxuaW1wb3J0IHsgTG9nZ2VyLCBMb2dnZXJPcHRpb25zIH0gZnJvbSBcIi4vTG9nZ2VyLmpzXCJcbmltcG9ydCB0eXBlIHsgTG9nTWV0YWRhdGEsIExvZ1JlY29yZCB9IGZyb20gXCIuL0xvZ1JlY29yZC5qc1wiXG5pbXBvcnQgeyBMb2dDb250ZXh0LCBMb2dDb250ZXh0Q29udGFpbmVyIH0gZnJvbSBcIi4vY29udGV4dC9pbmRleC5qc1wiXG5pbXBvcnQgeyBmbG93LCBnZXQsIG50aCB9IGZyb20gXCJsb2Rhc2gvZnAuanNcIlxuXG5leHBvcnQgdHlwZSBDYXRlZ29yeU1hdGNoID0gUmVnRXhwIHwgc3RyaW5nXG5cbmV4cG9ydCB0eXBlIFRocmVzaG9sZE92ZXJyaWRlID0gW21hdGNoOiBDYXRlZ29yeU1hdGNoLCBsZXZlbDogTGV2ZWxLaW5kXVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dpbmdNYW5hZ2VyU3RhdGU8UmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkPiB7XG4gIHJvb3RMZXZlbDogTGV2ZWxLaW5kXG4gIGdsb2JhbE1ldGFkYXRhPzogTG9nTWV0YWRhdGFcbiAgYXBwZW5kZXJzOiBBcnJheTxBcHBlbmRlcjxSZWNvcmQ+PlxuICB0aHJlc2hvbGRPdmVycmlkZXM6IEFycmF5PFRocmVzaG9sZE92ZXJyaWRlPlxufVxuXG5leHBvcnQgdHlwZSBMb2dnaW5nTWFuYWdlck9wdGlvbnM8UmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkPiA9IFBhcnRpYWw8XG4gIExvZ2dpbmdNYW5hZ2VyU3RhdGU8UmVjb3JkPlxuPlxuXG5mdW5jdGlvbiBwYXJzZVRocmVzaG9sZE92ZXJyaWRlUGF0dGVybnMoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIGxldmVsOiBMZXZlbEtpbmQgPSBcImRlYnVnXCJcbik6IFRocmVzaG9sZE92ZXJyaWRlW10ge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoXCIsXCIpLm1hcChzID0+IFtuZXcgUmVnRXhwKHMpLCBsZXZlbF0gYXMgVGhyZXNob2xkT3ZlcnJpZGUpXG59XG5cbmV4cG9ydCBjb25zdCBrRW52VGhyZXNob2xkT3ZlcnJpZGVzID0gT3B0aW9uLm9mTnVsbGFibGUoXG4gIHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiICYmIHByb2Nlc3MuZW52LkRFQlVHX1BBVFRFUk5TXG4pXG4gIC5maWx0ZXIobmVnYXRlKGlzRW1wdHkpKVxuICAubWFwKHBhcnNlVGhyZXNob2xkT3ZlcnJpZGVQYXR0ZXJucylcbiAgLmdldE9yRWxzZShbXSlcblxuLyoqXG4gKiBMb2dnaW5nIG1hbmFnZXJcbiAqL1xuZXhwb3J0IGNsYXNzIExvZ2dpbmdNYW5hZ2VyPFJlY29yZCBleHRlbmRzIExvZ1JlY29yZCA9IGFueT4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcnMgPSBuZXcgTWFwPHN0cmluZywgTG9nZ2VyPigpXG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZTogTG9nZ2luZ01hbmFnZXJTdGF0ZTxSZWNvcmQ+ID0ge1xuICAgIGFwcGVuZGVyczogW10sXG4gICAgZ2xvYmFsTWV0YWRhdGE6IHt9LFxuICAgIHJvb3RMZXZlbDogTGV2ZWwuaW5mbyxcbiAgICB0aHJlc2hvbGRPdmVycmlkZXM6IGtFbnZUaHJlc2hvbGRPdmVycmlkZXNcbiAgfVxuXG4gIGdldCByb290TGV2ZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUucm9vdExldmVsXG4gIH1cblxuICBnZXQgZ2xvYmFsTWV0YWRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZ2xvYmFsTWV0YWRhdGFcbiAgfVxuXG4gIHNldCBnbG9iYWxNZXRhZGF0YShuZXdNZXRhZGF0YTogTG9nTWV0YWRhdGEpIHtcbiAgICB0aGlzLnN0YXRlLmdsb2JhbE1ldGFkYXRhID0gbmV3TWV0YWRhdGEgPz8ge31cbiAgfVxuXG4gIHNldCByb290TGV2ZWwobmV3Um9vdExldmVsOiBMZXZlbEtpbmQpIHtcbiAgICB0aGlzLnN0YXRlLnJvb3RMZXZlbCA9IG5ld1Jvb3RMZXZlbFxuICB9XG5cbiAgZ2V0IHJvb3RUaHJlc2hvbGQoKSB7XG4gICAgcmV0dXJuIExldmVsVGhyZXNob2xkc1t0aGlzLnJvb3RMZXZlbF1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgaGFuZGxlclxuICAgKlxuICAgKiBAcmV0dXJucyB7QXBwZW5kZXI8UmVjb3JkPn1cbiAgICovXG4gIGdldCBhcHBlbmRlcnMoKTogQXJyYXk8QXBwZW5kZXI8UmVjb3JkPj4ge1xuICAgIHJldHVybiBPcHRpb24ub2ZOdWxsYWJsZSh0aGlzLnN0YXRlLmFwcGVuZGVycylcbiAgICAgIC5maWx0ZXIoYXBwZW5kZXJzID0+IGFwcGVuZGVycy5sZW5ndGggPiAwKVxuICAgICAgLmdldE9yQ2FsbCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhdGUuYXBwZW5kZXJzLnB1c2gobmV3IENvbnNvbGVBcHBlbmRlcigpKVxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5hcHBlbmRlcnNcbiAgICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogR2xvYmFsIHRocmVzaG9sZCBvdmVycmlkZXNcbiAgICovXG4gIGdldCB0aHJlc2hvbGRPdmVycmlkZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUudGhyZXNob2xkT3ZlcnJpZGVzXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBvdmVycmlkZXNcbiAgICpcbiAgICogQHBhcmFtIG5ld092ZXJyaWRlc1xuICAgKi9cbiAgc2V0IHRocmVzaG9sZE92ZXJyaWRlcyhuZXdPdmVycmlkZXM6IFRocmVzaG9sZE92ZXJyaWRlW10pIHtcbiAgICB0aGlzLnN0YXRlLnRocmVzaG9sZE92ZXJyaWRlcyA9IG5ld092ZXJyaWRlc1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBnbG9iYWwgYXBwZW5kZXJzXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8QXBwZW5kZXI8UmVjb3JkPj59IG5ld0FwcGVuZGVyc1xuICAgKi9cbiAgc2V0QXBwZW5kZXJzKC4uLm5ld0FwcGVuZGVyczogQXJyYXk8QXBwZW5kZXI8UmVjb3JkPiB8IEFwcGVuZGVyPFJlY29yZD5bXT4pIHtcbiAgICAvLyBXRSBNVVRBVEUgRE8gVE8gVEhFIExJS0VMSUhPT0QgT0YgU09NRU9ORSBIT0xESU5HIEEgUkVGIFRPIFRIRSBBUlJBWSxcbiAgICAvLyBDT05WRVJUIFRPIE9CU0VSVkFCTEUgQVQgU09NRSBQT0lOVFxuICAgIGNvbnN0IHBlcnNpc3RlbnRBcHBlbmRlcnMgPSB0aGlzLnN0YXRlLmFwcGVuZGVyc1xuICAgIHBlcnNpc3RlbnRBcHBlbmRlcnMubGVuZ3RoID0gMFxuICAgIHBlcnNpc3RlbnRBcHBlbmRlcnMucHVzaCguLi5mbGF0dGVuKG5ld0FwcGVuZGVycykpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBvbmUgb3IgbW9yZSBhcHBlbmRlcnMgdG8gZXhpc3RpbmcgYXBwZW5kZXIgc2V0XG4gICAqXG4gICAqIEBwYXJhbSB7QXBwZW5kZXI8UmVjb3JkPiB8IEFwcGVuZGVyPFJlY29yZD5bXX0gbmV3QXBwZW5kZXJzXG4gICAqIEByZXR1cm5zIHt0aGlzPFJlY29yZD59XG4gICAqL1xuICBhZGRBcHBlbmRlcnMoXG4gICAgLi4ubmV3QXBwZW5kZXJzOiBBcnJheTxBcHBlbmRlcjxSZWNvcmQ+IHwgQXBwZW5kZXI8UmVjb3JkPltdPlxuICApOiB0aGlzIHtcbiAgICB0aGlzLnN0YXRlLmFwcGVuZGVycy5wdXNoKC4uLmZsYXR0ZW4obmV3QXBwZW5kZXJzKSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRocmVzaG9sZCBvdmVycmlkZXNcbiAgICpcbiAgICogQHJldHVybnMge3RoaXM8UmVjb3JkPn1cbiAgICovXG4gIGNsZWFyVGhyZXNob2xkT3ZlcnJpZGVzKCk6IHRoaXMge1xuICAgIHRoaXMuc3RhdGUudGhyZXNob2xkT3ZlcnJpZGVzLmxlbmd0aCA9IDBcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc2V0VGhyZXNob2xkT3ZlcnJpZGVzKC4uLm92ZXJyaWRlczogQXJyYXk8VGhyZXNob2xkT3ZlcnJpZGU+KSB7XG4gICAgdGhpcy5zdGF0ZS50aHJlc2hvbGRPdmVycmlkZXMubGVuZ3RoID0gMFxuICAgIHRoaXMuc3RhdGUudGhyZXNob2xkT3ZlcnJpZGVzLnB1c2goLi4ub3ZlcnJpZGVzKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBhZGRUaHJlc2hvbGRPdmVycmlkZXMoLi4ub3ZlcnJpZGVzOiBBcnJheTxUaHJlc2hvbGRPdmVycmlkZT4pIHtcbiAgICB0aGlzLnN0YXRlLnRocmVzaG9sZE92ZXJyaWRlcy5wdXNoKC4uLm92ZXJyaWRlcylcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhcHBsaWNhYmxlIGN1cnJlbnQgY29udGV4dHNcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNhdGVnb3J5XG4gICAqIEByZXR1cm5zIHtMb2dDb250ZXh0W119XG4gICAqL1xuICBnZXRBcHBsaWNhYmxlQ3VycmVudENvbnRleHRzKGNhdGVnb3J5OiBzdHJpbmcpOiBMb2dDb250ZXh0W10ge1xuICAgIHJldHVybiBMb2dDb250ZXh0Q29udGFpbmVyLmN1cnJlbnRDb250ZXh0KCkuZmlsdGVyKFxuICAgICAgKHsgcGF0dGVybiB9KSA9PiAhcGF0dGVybiB8fCBwYXR0ZXJuLnRlc3QoY2F0ZWdvcnkpXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGZvciBhbnkgbWF0Y2hpbmcgdGhyZXNob2xkIG92ZXJyaWRlc1xuICAgKlxuICAgKiBAcGFyYW0gY2F0ZWdvcnlcbiAgICovXG4gIGRldGVybWluZVRocmVzaG9sZE92ZXJyaWRlKGNhdGVnb3J5OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGNvbnN0IGNvbnRleHRzID0gdGhpcy5nZXRBcHBsaWNhYmxlQ3VycmVudENvbnRleHRzKGNhdGVnb3J5KSxcbiAgICAgIC8vIEZJTkQgQ09ORklHVVJFRCBPVkVSUklERSBMRVZFTFxuICAgICAgb3ZlcnJpZGVUaHJlc2hvbGQgPSBPcHRpb24ub2ZOdWxsYWJsZShcbiAgICAgICAgdGhpcy50aHJlc2hvbGRPdmVycmlkZXMuZmluZCgoW21hdGNoXSkgPT5cbiAgICAgICAgICBpc1N0cmluZyhtYXRjaClcbiAgICAgICAgICAgID8gbWF0Y2ggPT09IGNhdGVnb3J5XG4gICAgICAgICAgICA6IChtYXRjaCBhcyBSZWdFeHApLnRlc3QoY2F0ZWdvcnkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgICAgLm1hcChudGgoMSkpXG4gICAgICAgIC5tYXAobGV2ZWwgPT4gTGV2ZWxUaHJlc2hvbGRzW2xldmVsIGFzIExldmVsXSlcbiAgICAgICAgLmdldE9yTnVsbCgpLFxuICAgICAgLy8gRklORCBgTG9nQ29udGV4dGAgT1ZFUlJJREUgTEVWRUxcbiAgICAgIGNvbnRleHRUaHJlc2hvbGRzID0gY29udGV4dHNcbiAgICAgICAgLmZpbHRlcihmbG93KGdldChcInRocmVzaG9sZExldmVsXCIpLCBpc1N0cmluZykpXG4gICAgICAgIC5tYXAoKHsgdGhyZXNob2xkTGV2ZWwgfSkgPT4gTGV2ZWxUaHJlc2hvbGRzW3RocmVzaG9sZExldmVsXSksXG4gICAgICAvLyBJRiBBTlkgT1ZFUlJJREVTLCBHRVQgVEhFIE1PU1QgVkVSQk9TRSBMRVZFTFxuICAgICAgb3ZlcnJpZGUgPSBPcHRpb24ub2ZOdWxsYWJsZShcbiAgICAgICAgWy4uLmNvbnRleHRUaHJlc2hvbGRzLCBvdmVycmlkZVRocmVzaG9sZF0uZmlsdGVyKGlzTnVtYmVyKVxuICAgICAgKVxuICAgICAgICAuZmlsdGVyKG5lZ2F0ZShpc0VtcHR5KSlcbiAgICAgICAgLm1hcChtaW4pXG4gICAgICAgIC5nZXRPck51bGwoKVxuXG4gICAgcmV0dXJuIG92ZXJyaWRlIGFzIG51bWJlclxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcm9vdCBsb2dnaW5nIGxldmVsXG4gICAqXG4gICAqIEBwYXJhbSB7TGV2ZWxLaW5kfSBuZXdMZXZlbFxuICAgKiBAcmV0dXJucyB7dGhpczxSZWNvcmQ+fVxuICAgKi9cbiAgc2V0Um9vdExldmVsKG5ld0xldmVsOiBMZXZlbEtpbmQpOiB0aGlzIHtcbiAgICB0aGlzLnN0YXRlLnJvb3RMZXZlbCA9IG5ld0xldmVsXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlIGEgbG9nIGV2ZW50LCBldmVudHVhbGx5XG4gICAqIGludmVydCB0aGlzIGJ5IG1ha2luZyBgTG9nZ2VyYCBhblxuICAgKiBgRXZlbnRFbWl0dGVyM2AgYW5kIGhhdmluZyB0aGUgYExvZ2dpbmdNYW5hZ2VyYFxuICAgKiBzdWJzY3JpYmUgdG8gYHJlY29yZGAgZXZlbnRcbiAgICpcbiAgICogQHBhcmFtIHtMb2dSZWNvcmQ8UmVjb3JkPn0gcmVjb3JkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZmlyZShyZWNvcmQ6IExvZ1JlY29yZDxSZWNvcmQ+KSB7XG4gICAgY29uc3QgeyBjYXRlZ29yeSB9ID0gcmVjb3JkLFxuICAgICAgY29udGV4dHMgPSB0aGlzLmdldEFwcGxpY2FibGVDdXJyZW50Q29udGV4dHMoY2F0ZWdvcnkpLFxuICAgICAgY29udGV4dEFwcGVuZGVycyA9IGNvbnRleHRzLmZsYXRNYXAoZ2V0KFwiYXBwZW5kZXJzXCIpKSxcbiAgICAgIGFwcGVuZGVycyA9IFsuLi50aGlzLmFwcGVuZGVycywgLi4uY29udGV4dEFwcGVuZGVyc11cblxuICAgIGFwcGVuZGVycy5mb3JFYWNoKGFwcGVuZGVyID0+IGFwcGVuZGVyLmFwcGVuZChyZWNvcmQgYXMgUmVjb3JkKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBsb2dnZXIgZnJvbSBjYWNoZSwgaWYgdGhlIGNhdGVnb3J5XG4gICAqIGRvZXMgbm90IGhhdmUgYW4gZXhpc3RpbmcgbG9nZ2VyLCB0aGVuIGNyZWF0ZSBvbmUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjYXRlZ29yeU9yRmlsZW5hbWVcbiAgICogQHBhcmFtIHtQYXJ0aWFsPExvZ2dlck9wdGlvbnM+fSBpbk9wdGlvbnNcbiAgICogQHJldHVybnMge0xvZ2dlcn1cbiAgICovXG4gIGdldExvZ2dlcihcbiAgICBjYXRlZ29yeU9yRmlsZW5hbWU6IHN0cmluZyxcbiAgICBpbk9wdGlvbnM6IFBhcnRpYWw8TG9nZ2VyT3B0aW9ucz4gPSB7fVxuICApOiBMb2dnZXIge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBMb2dnZXIuaHlkcmF0ZU9wdGlvbnMoaW5PcHRpb25zKVxuICAgIGNvbnN0IGNhdGVnb3J5ID0gTG9nZ2VyLmludGVyb3BsYXRlQ2F0ZWdvcnkoY2F0ZWdvcnlPckZpbGVuYW1lLCBvcHRpb25zKVxuXG4gICAgcmV0dXJuIE9wdGlvbi5vZk51bGxhYmxlKGNhdGVnb3J5KVxuICAgICAgLm1hcChjYXRlZ29yeSA9PiB0aGlzLmxvZ2dlcnMuZ2V0KGNhdGVnb3J5KSlcbiAgICAgIC5nZXRPckNhbGwoKCkgPT4ge1xuICAgICAgICBjb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMsIGNhdGVnb3J5LCBvcHRpb25zKVxuICAgICAgICB0aGlzLmxvZ2dlcnMuc2V0KGNhdGVnb3J5LCBsb2dnZXIpXG4gICAgICAgIHJldHVybiBsb2dnZXJcbiAgICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIHRoZSBsb2dnaW5nIG1hbmFnZXIsXG4gICAqIHRoaXMgZnVuY3Rpb24gaXMgYWRkaXRpdmUsIHNvIHNpbXBseSBjYWxsaW5nXG4gICAqIGBjb25maWd1cmVgIHdpdGggYSBzaW5nbGUgb3B0aW9uIGByb290TGV2ZWxgLFxuICAgKiB3aWxsIG5vdCBhZmZlY3Qgb3RoZXIgb3B0aW9ucyBsaWtlIGBhcHBlbmRlcnNgICAgKlxuICAgKlxuICAgKiBAcGFyYW0ge0xvZ2dpbmdNYW5hZ2VyT3B0aW9uczxhbnk+fSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHt0aGlzPFJlY29yZD59XG4gICAqL1xuICBjb25maWd1cmUob3B0aW9uczogTG9nZ2luZ01hbmFnZXJPcHRpb25zPGFueT4pOiB0aGlzIHtcbiAgICBpZiAoTGV2ZWxbb3B0aW9ucz8ucm9vdExldmVsXSkge1xuICAgICAgdGhpcy5zZXRSb290TGV2ZWwob3B0aW9ucy5yb290TGV2ZWwpXG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnM/LmFwcGVuZGVycykge1xuICAgICAgdGhpcy5zZXRBcHBlbmRlcnMob3B0aW9ucy5hcHBlbmRlcnMpXG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnM/LnRocmVzaG9sZE92ZXJyaWRlcykge1xuICAgICAgdGhpcy5hZGRUaHJlc2hvbGRPdmVycmlkZXMoLi4ub3B0aW9ucy50aHJlc2hvbGRPdmVycmlkZXMpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jb25maWd1cmUoe30pXG4gIH1cblxuICAvKipcbiAgICogU2luZ2xldG9uIGluc3RhbmNlXG4gICAqXG4gICAqIEB0eXBlIHtMb2dnaW5nTWFuYWdlcn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIG1hbmFnZXI6IExvZ2dpbmdNYW5hZ2VyXG5cbiAgLyoqXG4gICAqIEdldCBsb2dnaW5nIG1hbmFnZXIgYW5kIG9wdGlvbmFsbHkgcHJvdmlkZWRcbiAgICogY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqXG4gICAqIEBwYXJhbSB7TG9nZ2luZ01hbmFnZXJPcHRpb25zPFJlY29yZD59IG9wdGlvbnNcbiAgICogQHJldHVybnMge0xvZ2dpbmdNYW5hZ2VyPFJlY29yZD59XG4gICAqL1xuICBzdGF0aWMgZ2V0PFJlY29yZCBleHRlbmRzIExvZ1JlY29yZCA9IGFueT4oXG4gICAgb3B0aW9uczogTG9nZ2luZ01hbmFnZXJPcHRpb25zPFJlY29yZD4gPSBudWxsXG4gICk6IExvZ2dpbmdNYW5hZ2VyPFJlY29yZD4ge1xuICAgIGlmICghdGhpcy5tYW5hZ2VyKSB7XG4gICAgICB0aGlzLm1hbmFnZXIgPSBuZXcgTG9nZ2luZ01hbmFnZXI8UmVjb3JkPigpXG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMubWFuYWdlci5jb25maWd1cmUob3B0aW9ucylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tYW5hZ2VyXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ2dpbmdNYW5hZ2VyKCk6IExvZ2dpbmdNYW5hZ2VyIHtcbiAgcmV0dXJuIExvZ2dpbmdNYW5hZ2VyLmdldCgpXG59XG5cbmlmIChPcHRpb24udHJ5KCgpID0+IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpLmdldE9yRWxzZShmYWxzZSkpIHtcbiAgO1tcbiAgICB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvdyxcbiAgICB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiICYmIGdsb2JhbFxuICBdXG4gICAgLmZpbHRlcihpc09iamVjdClcbiAgICAubWFwKHRhcmdldCA9PlxuICAgICAgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHtcbiAgICAgICAgbG9nZ2luZ01hbmFnZXI6IGdldExvZ2dpbmdNYW5hZ2VyKClcbiAgICAgIH0pXG4gICAgKVxufVxuIl19
@@ -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,CAC1B,MAAM,SAAS,SAAS,CACxB,YAAW,QAAQ,CAAC,MAAM,CAAC;IAC3B,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 "@3fv/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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc29sZUFwcGVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xvZ2dpbmcvYXBwZW5kZXJzL0NvbnNvbGVBcHBlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFJeEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBc0MsQ0FBQTtBQUV4RSxTQUFTLGlCQUFpQixDQUFDLEtBQWdCO0lBQ3pDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtBQUN0RCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBZ0I7SUFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25DLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUN6RCxDQUFDO0lBRUQsT0FBTyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDdEMsQ0FBQztBQWtCRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBMEIsQ0FBQyxFQUN0RCxLQUFLLEVBQ0wsT0FBTyxFQUNQLElBQUksRUFDSixJQUFJLEVBQ0osUUFBUSxFQUNSLFNBQVMsRUFDVixFQUFFLEVBQUUsQ0FBQztJQUNKLElBQUksUUFBUSxPQUFPLEtBQUssTUFBTSxPQUFPLEVBQUU7SUFDdkMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUN6QyxDQUFBO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQTBCO0lBQ2xFLFlBQVksRUFBRSxJQUFJO0lBQ2xCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLFNBQVMsRUFBRSxnQkFBZ0I7Q0FDNUIsQ0FBQTtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBR2pCLE1BQU0sQ0FBdUI7SUFFdEM7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxNQUFjO1FBQ25CLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQTtRQUNsRSxNQUFNLEVBQUUsU0FBUyxHQUFHLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUNwRCxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUM1QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLEtBQUssQ0FBQyxLQUFnQixFQUFFLEdBQUcsSUFBVztRQUM5QyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM5QixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDNUMsR0FBRyxDQUFDLENBQUMsRUFBWSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLFVBQW1ELEVBQUU7UUFDL0QsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsNkJBQTZCO1lBQ2hDLEdBQUcsT0FBTztTQUNYLENBQUE7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExvZ1JlY29yZCB9IGZyb20gXCIuLi9Mb2dSZWNvcmRcIlxuaW1wb3J0IHR5cGUgeyBBcHBlbmRlciB9IGZyb20gXCIuLi9BcHBlbmRlclwiXG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tIFwiQDNmdi9wcmVsdWRlLXRzXCJcbmltcG9ydCB0eXBlIHsgTGV2ZWxLaW5kIH0gZnJvbSBcIi4uL0xldmVsXCJcbmltcG9ydCB0eXBlIHsgRm9ybWF0dGVyIH0gZnJvbSBcIi4uL0Zvcm1hdHRlclwiXG5cbmNvbnN0IGNvbnNvbGVMb2dCaW5kaW5ncyA9IG5ldyBNYXA8TGV2ZWxLaW5kLCAoLi4uYXJnczogYW55W10pID0+IGFueT4oKVxuXG5mdW5jdGlvbiBnZXRCb3VuZENvbnNvbGVGbihsZXZlbDogTGV2ZWxLaW5kKSB7XG4gIHJldHVybiAoY29uc29sZVtsZXZlbF0gPz8gY29uc29sZS5sb2cpLmJpbmQoY29uc29sZSlcbn1cblxuLyoqXG4gKiBHZXQgYSBjYWNoZWQgY29uc29sZSBib3VuZCBsb2cgZnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge0xldmVsS2luZH0gbGV2ZWxcbiAqIEByZXR1cm5zIHsoLi4uYXJnczogYW55W10pID0+IGFueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnNvbGVMb2dCaW5kaW5nKGxldmVsOiBMZXZlbEtpbmQpIHtcbiAgaWYgKCFjb25zb2xlTG9nQmluZGluZ3MuaGFzKGxldmVsKSkge1xuICAgIGNvbnNvbGVMb2dCaW5kaW5ncy5zZXQobGV2ZWwsIGdldEJvdW5kQ29uc29sZUZuKGxldmVsKSlcbiAgfVxuXG4gIHJldHVybiBjb25zb2xlTG9nQmluZGluZ3MuZ2V0KGxldmVsKVxufVxuXG4vKipcbiAqIENvbnNvbGVBcHBlbmRlciBDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc29sZUFwcGVuZGVyQ29uZmlnPFJlY29yZCBleHRlbmRzIExvZ1JlY29yZCA9IGFueT4ge1xuICBjYWNoZUVuYWJsZWQ6IGJvb2xlYW5cbiAgcHJldHR5UHJpbnQ6IGJvb2xlYW5cbiAgZm9ybWF0dGVyPzogRm9ybWF0dGVyPHN0cmluZyB8IEFycmF5PGFueT4+XG59XG5cbi8qKlxuICogUGFydGlhbCBvZiBjb25maWcsIHVzZWQgZm9yIHNob3J0ZW5pbmcgaW5zdGVhZCBvZiBQYXJ0aWFsPC4uLj5cbiAqL1xuZXhwb3J0IHR5cGUgQ29uc29sZUFwcGVuZGVyT3B0aW9uczxSZWNvcmQgZXh0ZW5kcyBMb2dSZWNvcmQ+ID0gUGFydGlhbDxcbiAgQ29uc29sZUFwcGVuZGVyQ29uZmlnPFJlY29yZD5cbj5cblxuZXhwb3J0IGNvbnN0IGNvbnNvbGVGb3JtYXR0ZXI6IEZvcm1hdHRlcjxBcnJheTxhbnk+PiA9ICh7XG4gIGxldmVsLFxuICBtZXNzYWdlLFxuICBkYXRhLFxuICBhcmdzLFxuICBjYXRlZ29yeSxcbiAgdGltZXN0YW1wXG59KSA9PiBbXG4gIGBbJHtjYXRlZ29yeX1dICAoJHtsZXZlbH0pICAke21lc3NhZ2V9YCxcbiAgLi4uKEFycmF5LmlzQXJyYXkoYXJncykgPyBhcmdzIDogW2FyZ3NdKVxuXVxuXG4vKipcbiAqIERlZmF1bHQgY29uc29sZSBjb25maWdcbiAqIEB0eXBlIHtDb25zb2xlQXBwZW5kZXJDb25maWd9XG4gKi9cbmV4cG9ydCBjb25zdCBrRGVmYXVsdENvbnNvbGVBcHBlbmRlckNvbmZpZzogQ29uc29sZUFwcGVuZGVyQ29uZmlnID0ge1xuICBjYWNoZUVuYWJsZWQ6IHRydWUsXG4gIHByZXR0eVByaW50OiB0cnVlLFxuICBmb3JtYXR0ZXI6IGNvbnNvbGVGb3JtYXR0ZXJcbn1cblxuLyoqXG4gKiBDb25zb2xlIGFwcGVuZGVyLCB0aGUgc2ltcGxlIGRlZmF1bHQgYXBwZW5kZXIgdXNlZFxuICogZXZlcnl3aGVyZSBPT0JcbiAqL1xuZXhwb3J0IGNsYXNzIENvbnNvbGVBcHBlbmRlcjxcbiAgUmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkXG4+IGltcGxlbWVudHMgQXBwZW5kZXI8UmVjb3JkPiB7XG4gIHJlYWRvbmx5IGNvbmZpZzogQ29uc29sZUFwcGVuZGVyQ29uZmlnXG5cbiAgLyoqXG4gICAqIEhhbmRsZSBsb2cgcmVjb3JkcywgdHJhbnNmb3JtLCBwdXNoIHRvIEVTXG4gICAqXG4gICAqIEBwYXJhbSByZWNvcmRcbiAgICovXG4gIGFwcGVuZChyZWNvcmQ6IFJlY29yZCk6IHZvaWQge1xuICAgIGNvbnN0IHsgbGV2ZWwsIG1lc3NhZ2UsIGRhdGEsIGFyZ3MsIGNhdGVnb3J5LCB0aW1lc3RhbXAgfSA9IHJlY29yZFxuICAgIGNvbnN0IHsgZm9ybWF0dGVyID0gY29uc29sZUZvcm1hdHRlciB9ID0gdGhpcy5jb25maWdcbiAgICBPcHRpb24ub2ZOdWxsYWJsZShmb3JtYXR0ZXIocmVjb3JkKSkubWFwKHJlc3VsdCA9PiB7XG4gICAgICBjb25zdCBhcmdzID0gQXJyYXkuaXNBcnJheShyZXN1bHQpID8gcmVzdWx0IDogW3Jlc3VsdF1cbiAgICAgIHRoaXMud3JpdGUobGV2ZWwsIC4uLmFyZ3MpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSBhcmdzIHRvIGNvbnNvbGVcbiAgICpcbiAgICogQHBhcmFtIGxldmVsXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqL1xuICBwcm90ZWN0ZWQgd3JpdGUobGV2ZWw6IExldmVsS2luZCwgLi4uYXJnczogYW55W10pIHtcbiAgICBPcHRpb24ub2ZOdWxsYWJsZShjb25zb2xlW2xldmVsXSlcbiAgICAgIC5vckNhbGwoKCkgPT4gT3B0aW9uLm9mTnVsbGFibGUoY29uc29sZS5sb2cpKVxuICAgICAgLm1hcCgoZm46IEZ1bmN0aW9uKSA9PiBmbi5hcHBseShjb25zb2xlLCBhcmdzKSlcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpYWw8Q29uc29sZUFwcGVuZGVyT3B0aW9uczxSZWNvcmQ+Pn0gb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUGFydGlhbDxDb25zb2xlQXBwZW5kZXJPcHRpb25zPFJlY29yZD4+ID0ge30pIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLmtEZWZhdWx0Q29uc29sZUFwcGVuZGVyQ29uZmlnLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,65 @@
1
+ import type { LogRecord } from "../LogRecord";
2
+ import type { Appender } from "../Appender";
3
+ import { Buffer } from "buffer";
4
+ export interface FileAppenderConfig<Record extends LogRecord = any> {
5
+ filename: string;
6
+ /**
7
+ * For rolling
8
+ */
9
+ maxFiles: number;
10
+ /**
11
+ * For rolling
12
+ */
13
+ maxSize: number;
14
+ enableRolling: boolean;
15
+ prettyPrint: boolean;
16
+ sync: boolean;
17
+ }
18
+ export type FileAppenderOptions<Record extends LogRecord = any> = Partial<FileAppenderConfig<Record>>;
19
+ export declare class FileAppender<Record extends LogRecord> implements Appender<Record> {
20
+ readonly config: FileAppenderConfig<Record>;
21
+ private readonly state;
22
+ get enableRolling(): boolean;
23
+ isReady(): boolean;
24
+ /**
25
+ * Initialize and setup the appender
26
+ *
27
+ * @returns {FileAppender<Record>}
28
+ */
29
+ setup(): FileAppender<Record>;
30
+ /**
31
+ * Only exposed for the sake of tests & examples
32
+ * DO NOT USE
33
+ *
34
+ * This should all be async, but i was in a rush :(
35
+ *
36
+ * @returns
37
+ */
38
+ rollFile(): void;
39
+ /**
40
+ * Close the handler
41
+ *
42
+ * @returns {Promise<void>}
43
+ */
44
+ close(): Promise<void>;
45
+ get queue(): Buffer<ArrayBufferLike>[];
46
+ get file(): number;
47
+ get flushing(): boolean;
48
+ get filename(): string;
49
+ /**
50
+ * Appends the log queue records to the file
51
+ */
52
+ private flush;
53
+ /**
54
+ * Handle log records, transform, push to ES
55
+ *
56
+ * @param record
57
+ */
58
+ append(record: Record): void;
59
+ /**
60
+ *
61
+ * @param {Partial<FileAppenderOptions<Record>>} options
62
+ */
63
+ constructor(options?: Partial<FileAppenderOptions<Record>>);
64
+ }
65
+ //# sourceMappingURL=FileAppender.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileAppender.d.ts","sourceRoot":"","sources":["../../../../src/logging/appenders/FileAppender.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAsB/B,MAAM,WAAW,kBAAkB,CAAC,MAAM,SAAS,SAAS,GAAG,GAAG;IAChE,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf,aAAa,EAAE,OAAO,CAAA;IACtB,WAAW,EAAE,OAAO,CAAA;IACpB,IAAI,EAAE,OAAO,CAAA;CACd;AAED,MAAM,MAAM,mBAAmB,CAAC,MAAM,SAAS,SAAS,GAAG,GAAG,IAAI,OAAO,CACvE,kBAAkB,CAAC,MAAM,CAAC,CAC3B,CAAA;AAED,qBAAa,YAAY,CACvB,MAAM,SAAS,SAAS,CACxB,YAAW,QAAQ,CAAC,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAE3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAiBrB;IAED,IAAI,aAAa,YAEhB;IAED,OAAO;IAIP;;;;OAIG;IACH,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC;IA2B7B;;;;;;;OAOG;IACH,QAAQ;IAkDR;;;;OAIG;IACH,KAAK;IAML,IAAI,KAAK,8BAER;IAED,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,YAEX;IAED,IAAI,QAAQ,WAEX;IAED;;OAEG;IACH,OAAO,CAAC,KAAK;IAoCb;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAsB5B;;;OAGG;gBACS,OAAO,GAAE,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAM;CAW/D"}