@nlabs/arkhamjs-middleware-logger 3.28.7 → 3.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @nlabs/arkhamjs-middleware-logger
2
2
 
3
- Add console logging for ArkhamJS
3
+ > **Powerful Logging Middleware for ArkhamJS** - Comprehensive action and state logging with customizable output formats, filtering, and performance insights.
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/@nlabs/arkhamjs-middleware-logger.svg?style=flat-square)](https://www.npmjs.com/package/@nlabs/arkhamjs-middleware-logger)
6
6
  [![npm downloads](https://img.shields.io/npm/dm/@nlabs/arkhamjs-middleware-logger.svg?style=flat-square)](https://www.npmjs.com/package/@nlabs/arkhamjs-middleware-logger)
@@ -10,14 +10,456 @@ Add console logging for ArkhamJS
10
10
  [![MIT license](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](http://opensource.org/licenses/MIT)
11
11
  [![Chat](https://img.shields.io/discord/446122412715802649.svg)](https://discord.gg/Ttgev58)
12
12
 
13
- ## Installation
13
+ ## 🚀 Features
14
14
 
15
- Using [npm](https://www.npmjs.com/):
15
+ - **📝 Comprehensive Logging** - Log actions, state changes, and performance metrics
16
+ - **🎨 Customizable Output** - Beautiful console formatting with colors and grouping
17
+ - **🔍 Action Filtering** - Filter specific actions or action types
18
+ - **⚡ Performance Tracking** - Measure action execution time and state update performance
19
+ - **🌲 Tree-shakable** - Only include what you need in production
20
+ - **🔧 Configurable** - Extensive options for customization
21
+ - **📱 Browser Support** - Works in Chrome, Firefox, Safari, and Edge
16
22
 
17
- ```shell
18
- npm i --save @nlabs/arkhamjs-middleware-logger
23
+ ## 📦 Installation
24
+
25
+ ```bash
26
+ npm install @nlabs/arkhamjs-middleware-logger
27
+ ```
28
+
29
+ ## 🎯 Quick Start
30
+
31
+ ### **Basic Setup**
32
+
33
+ ```typescript
34
+ import { Flux } from '@nlabs/arkhamjs';
35
+ import { Logger } from '@nlabs/arkhamjs-middleware-logger';
36
+
37
+ // Initialize Flux with logger middleware
38
+ Flux.init({
39
+ name: 'my-app',
40
+ stores: [UserStore, CartStore],
41
+ middleware: [
42
+ Logger() // Enable basic logging
43
+ ]
44
+ });
45
+
46
+ // Dispatch actions and see beautiful logs
47
+ Flux.dispatch({ type: 'ADD_USER', user: { name: 'John' } });
48
+ ```
49
+
50
+ ### **Console Output**
51
+
52
+ ```
53
+ 🚀 ArkhamJS Logger - Action Dispatched
54
+ ┌─────────────────────────────────────────────────────────────┐
55
+ │ Action: ADD_USER │
56
+ │ Timestamp: 2024-01-15T10:30:45.123Z │
57
+ │ Duration: 2.5ms │
58
+ ├─────────────────────────────────────────────────────────────┤
59
+ │ Payload: │
60
+ │ { │
61
+ │ "user": { │
62
+ │ "name": "John" │
63
+ │ } │
64
+ │ } │
65
+ ├─────────────────────────────────────────────────────────────┤
66
+ │ State Changes: │
67
+ │ • user.list: [] → [{"name":"John"}] │
68
+ │ • user.count: 0 → 1 │
69
+ └─────────────────────────────────────────────────────────────┘
70
+ ```
71
+
72
+ ## 🔧 Configuration Options
73
+
74
+ ### **Basic Configuration**
75
+
76
+ ```typescript
77
+ import { Logger } from '@nlabs/arkhamjs-middleware-logger';
78
+
79
+ Flux.init({
80
+ name: 'my-app',
81
+ stores: [UserStore],
82
+ middleware: [
83
+ Logger({
84
+ // Enable/disable features
85
+ logActions: true, // Log dispatched actions
86
+ logState: true, // Log state changes
87
+ logPerformance: true, // Log performance metrics
88
+
89
+ // Filtering options
90
+ filterActions: ['ADD_USER', 'UPDATE_USER'], // Only log specific actions
91
+ excludeActions: ['TICK', 'MOUSE_MOVE'], // Exclude specific actions
92
+
93
+ // Output options
94
+ groupActions: true, // Group related logs
95
+ showTimestamp: true, // Show timestamps
96
+ showDuration: true, // Show action duration
97
+
98
+ // Styling
99
+ colors: true, // Enable colored output
100
+ compact: false, // Compact mode for less verbose output
101
+
102
+ // Performance thresholds
103
+ slowActionThreshold: 100, // Warn for actions taking >100ms
104
+
105
+ // Custom formatting
106
+ formatAction: (action) => `🎯 ${action.type}`,
107
+ formatState: (path, oldValue, newValue) =>
108
+ `${path}: ${JSON.stringify(oldValue)} → ${JSON.stringify(newValue)}`
109
+ })
110
+ ]
111
+ });
112
+ ```
113
+
114
+ ### **Production Configuration**
115
+
116
+ ```typescript
117
+ import { Logger } from '@nlabs/arkhamjs-middleware-logger';
118
+
119
+ const isDevelopment = process.env.NODE_ENV === 'development';
120
+
121
+ Flux.init({
122
+ name: 'my-app',
123
+ stores: [UserStore],
124
+ middleware: [
125
+ // Only enable logging in development
126
+ ...(isDevelopment ? [Logger()] : [])
127
+ ]
128
+ });
129
+ ```
130
+
131
+ ### **Advanced Filtering**
132
+
133
+ ```typescript
134
+ import { Logger } from '@nlabs/arkhamjs-middleware-logger';
135
+
136
+ interface UserAction {
137
+ type: string;
138
+ user?: { premium?: boolean };
139
+ }
140
+
141
+ Flux.init({
142
+ name: 'my-app',
143
+ stores: [UserStore],
144
+ middleware: [
145
+ Logger({
146
+ // Filter by action type pattern
147
+ filterActions: (action: UserAction) => action.type.startsWith('USER_'),
148
+
149
+ // Filter by action payload
150
+ filterActions: (action: UserAction) => action.user && action.user.premium,
151
+
152
+ // Filter state changes
153
+ filterState: (path: string, oldValue: any, newValue: any): boolean => {
154
+ // Only log significant changes
155
+ return JSON.stringify(oldValue) !== JSON.stringify(newValue);
156
+ },
157
+
158
+ // Custom action grouping
159
+ groupBy: (action: UserAction): string => {
160
+ if (action.type.startsWith('USER_')) return 'User Actions';
161
+ if (action.type.startsWith('CART_')) return 'Cart Actions';
162
+ return 'Other Actions';
163
+ }
164
+ })
165
+ ]
166
+ });
167
+ ```
168
+
169
+ ## 🎨 Custom Logging Formats
170
+
171
+ ### **Custom Action Formatter**
172
+
173
+ ```typescript
174
+ import { Logger } from '@nlabs/arkhamjs-middleware-logger';
175
+
176
+ interface Action {
177
+ type: string;
178
+ }
179
+
180
+ Flux.init({
181
+ name: 'my-app',
182
+ stores: [UserStore],
183
+ middleware: [
184
+ Logger({
185
+ formatAction: (action: Action): string => {
186
+ const icons: Record<string, string> = {
187
+ 'ADD_USER': '👤',
188
+ 'UPDATE_USER': '✏️',
189
+ 'DELETE_USER': '🗑️',
190
+ 'CART_ADD': '🛒',
191
+ 'CART_REMOVE': '❌'
192
+ };
193
+
194
+ const icon = icons[action.type] || '📝';
195
+ return `${icon} ${action.type}`;
196
+ }
197
+ })
198
+ ]
199
+ });
200
+ ```
201
+
202
+ ### **Custom State Formatter**
203
+
204
+ ```typescript
205
+ import { Logger } from '@nlabs/arkhamjs-middleware-logger';
206
+
207
+ Flux.init({
208
+ name: 'my-app',
209
+ stores: [UserStore],
210
+ middleware: [
211
+ Logger({
212
+ formatState: (path: string, oldValue: any, newValue: any): string => {
213
+ const formatValue = (value: any): string => {
214
+ if (Array.isArray(value)) return `[${value.length} items]`;
215
+ if (typeof value === 'object' && value !== null) return '{...}';
216
+ return String(value);
217
+ };
218
+
219
+ return `${path}: ${formatValue(oldValue)} → ${formatValue(newValue)}`;
220
+ }
221
+ })
222
+ ]
223
+ });
224
+ ```
225
+
226
+ ## 🎯 Advanced Usage
227
+
228
+ ### **Performance Monitoring**
229
+
230
+ ```typescript
231
+ import { Logger } from '@nlabs/arkhamjs-middleware-logger';
232
+
233
+ Flux.init({
234
+ name: 'my-app',
235
+ stores: [UserStore],
236
+ middleware: [
237
+ Logger({
238
+ logPerformance: true,
239
+ slowActionThreshold: 50, // Warn for actions >50ms
240
+
241
+ // Custom performance formatter
242
+ formatPerformance: (duration: number, action: any): string => {
243
+ if (duration > 100) return `🐌 Slow action: ${action.type} (${duration}ms)`;
244
+ if (duration > 50) return `⚠️ Medium action: ${action.type} (${duration}ms)`;
245
+ return `⚡ Fast action: ${action.type} (${duration}ms)`;
246
+ }
247
+ })
248
+ ]
249
+ });
250
+ ```
251
+
252
+ ### **Conditional Logging**
253
+
254
+ ```typescript
255
+ import { Logger } from '@nlabs/arkhamjs-middleware-logger';
256
+
257
+ const createLogger = (options: any) => {
258
+ const isDevelopment = process.env.NODE_ENV === 'development';
259
+ const isTest = process.env.NODE_ENV === 'test';
260
+
261
+ if (isTest) {
262
+ return Logger({
263
+ logActions: false,
264
+ logState: false,
265
+ logPerformance: false
266
+ });
267
+ }
268
+
269
+ if (isDevelopment) {
270
+ return Logger({
271
+ ...options,
272
+ colors: true,
273
+ groupActions: true
274
+ });
275
+ }
276
+
277
+ return Logger({
278
+ ...options,
279
+ colors: false,
280
+ groupActions: false,
281
+ compact: true
282
+ });
283
+ };
284
+
285
+ Flux.init({
286
+ name: 'my-app',
287
+ stores: [UserStore],
288
+ middleware: [createLogger()]
289
+ });
290
+ ```
291
+
292
+ ### **Custom Log Handlers**
293
+
294
+ ```typescript
295
+ import { Logger } from '@nlabs/arkhamjs-middleware-logger';
296
+
297
+ Flux.init({
298
+ name: 'my-app',
299
+ stores: [UserStore],
300
+ middleware: [
301
+ Logger({
302
+ // Custom log handler for external logging services
303
+ onActionLogged: (action: any, duration: number) => {
304
+ // Send to external logging service
305
+ analytics.track('action_dispatched', {
306
+ action: action.type,
307
+ duration,
308
+ timestamp: Date.now()
309
+ });
310
+ },
311
+
312
+ onStateChanged: (path: string, oldValue: any, newValue: any) => {
313
+ // Track state changes
314
+ analytics.track('state_changed', {
315
+ path,
316
+ oldValue,
317
+ newValue
318
+ });
319
+ }
320
+ })
321
+ ]
322
+ });
323
+ ```
324
+
325
+ ## 🔧 API Reference
326
+
327
+ ### **Logger Options**
328
+
329
+ ```typescript
330
+ interface LoggerOptions {
331
+ // Basic settings
332
+ logActions?: boolean;
333
+ logState?: boolean;
334
+ logPerformance?: boolean;
335
+
336
+ // Filtering
337
+ filterActions?: string[] | ((action: any) => boolean);
338
+ excludeActions?: string[] | ((action: any) => boolean);
339
+ filterState?: (path: string, oldValue: any, newValue: any) => boolean;
340
+
341
+ // Output formatting
342
+ groupActions?: boolean;
343
+ showTimestamp?: boolean;
344
+ showDuration?: boolean;
345
+ colors?: boolean;
346
+ compact?: boolean;
347
+
348
+ // Performance
349
+ slowActionThreshold?: number;
350
+
351
+ // Custom formatters
352
+ formatAction?: (action: any) => string;
353
+ formatState?: (path: string, oldValue: any, newValue: any) => string;
354
+ formatPerformance?: (duration: number, action: any) => string;
355
+
356
+ // Custom handlers
357
+ onActionLogged?: (action: any, duration: number) => void;
358
+ onStateChanged?: (path: string, oldValue: any, newValue: any) => void;
359
+
360
+ // Grouping
361
+ groupBy?: (action: any) => string;
362
+ }
19
363
  ```
20
364
 
21
- ## Documentation
365
+ ## 🎯 Use Cases
366
+
367
+ ### **Development Debugging**
368
+
369
+ ```typescript
370
+ import { Logger } from '@nlabs/arkhamjs-middleware-logger';
371
+
372
+ // Development setup with full logging
373
+ const devLogger = Logger({
374
+ logActions: true,
375
+ logState: true,
376
+ logPerformance: true,
377
+ colors: true,
378
+ groupActions: true,
379
+ showTimestamp: true,
380
+ showDuration: true
381
+ });
382
+
383
+ Flux.init({
384
+ name: 'my-app',
385
+ stores: [UserStore],
386
+ middleware: [devLogger]
387
+ });
388
+ ```
389
+
390
+ ### **Production Monitoring**
391
+
392
+ ```typescript
393
+ import { Logger } from '@nlabs/arkhamjs-middleware-logger';
394
+
395
+ // Production setup with minimal logging
396
+ const prodLogger = Logger({
397
+ logActions: false,
398
+ logState: false,
399
+ logPerformance: true,
400
+ colors: false,
401
+ compact: true,
402
+ slowActionThreshold: 100,
403
+
404
+ onActionLogged: (action, duration) => {
405
+ if (duration > 100) {
406
+ // Send slow action alerts
407
+ errorReporting.captureMessage(`Slow action: ${action.type}`, {
408
+ level: 'warning',
409
+ extra: { action, duration }
410
+ });
411
+ }
412
+ }
413
+ });
414
+
415
+ Flux.init({
416
+ name: 'my-app',
417
+ stores: [UserStore],
418
+ middleware: [prodLogger]
419
+ });
420
+ ```
421
+
422
+ ### **Testing Setup**
423
+
424
+ ```typescript
425
+ import { Logger } from '@nlabs/arkhamjs-middleware-logger';
426
+
427
+ // Testing setup with no logging
428
+ const testLogger = Logger({
429
+ logActions: false,
430
+ logState: false,
431
+ logPerformance: false
432
+ });
433
+
434
+ Flux.init({
435
+ name: 'test-app',
436
+ stores: [UserStore],
437
+ middleware: [testLogger]
438
+ });
439
+ ```
440
+
441
+ ## 🔗 Related Packages
442
+
443
+ - **[@nlabs/arkhamjs](./packages/arkhamjs/README.md)** - Core Flux framework
444
+ - **[@nlabs/arkhamjs-middleware-devtools](./packages/arkhamjs-middleware-devtools/README.md)** - Chrome DevTools integration
445
+ - **[@nlabs/arkhamjs-utils-react](./packages/arkhamjs-utils-react/README.md)** - React hooks and utilities
446
+
447
+ ## 📚 Documentation
448
+
449
+ - **[ArkhamJS Documentation](https://arkhamjs.io)** - Complete API reference
450
+ - **[Middleware Guide](https://arkhamjs.io/docs/middleware)** - Middleware development guide
451
+ - **[Debugging Guide](https://arkhamjs.io/docs/debugging)** - Debugging best practices
452
+
453
+ ## 🤝 Community & Support
454
+
455
+ - **💬 [Discord Community](https://discord.gg/Ttgev58)** - Chat with other developers
456
+ - **🐛 [GitHub Issues](https://github.com/nitrogenlabs/arkhamjs/issues)** - Report bugs and request features
457
+ - **📝 [Examples](./packages/arkhamjs-example-ts-react/README.md)** - Complete working examples
458
+
459
+ ## 📄 License
460
+
461
+ MIT License - see [LICENSE](LICENSE) file for details.
462
+
463
+ ---
22
464
 
23
- For detailed [Documentation](https://arkhamjs.io) and additional options.
465
+ **Start debugging your ArkhamJS applications with powerful logging today!** 🚀
@@ -0,0 +1,17 @@
1
+ import { FluxAction } from '@nlabs/arkhamjs';
2
+ import { LoggerOptions } from '../types/main';
3
+ export declare class Logger {
4
+ name: string;
5
+ private previousStore;
6
+ private defaultOptions;
7
+ private options;
8
+ constructor(options: LoggerOptions);
9
+ config(options: LoggerOptions): void;
10
+ debugError(...obj: any[]): void;
11
+ debugInfo(...obj: any[]): void;
12
+ debugLog(...obj: any[]): void;
13
+ enableDebugger(level?: number): void;
14
+ getOptions(): LoggerOptions;
15
+ preDispatch(action: FluxAction, store: any): Promise<FluxAction>;
16
+ postDispatch(action: FluxAction, store: object): Promise<FluxAction>;
17
+ }
@@ -0,0 +1,2 @@
1
+ var r=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var h=(i,o)=>{for(var e in o)r(i,e,{get:o[e],enumerable:!0})},a=(i,o,e,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let s of c(o))!u.call(i,s)&&s!==e&&r(i,s,{get:()=>o[s],enumerable:!(t=l(o,s))||t.enumerable});return i};var b=i=>a(r({},"__esModule",{value:!0}),i);var f={};h(f,{Logger:()=>L});module.exports=b(f);var p=require("@nlabs/utils/checks/isEqual"),d=require("@nlabs/utils/objects/clone"),n=require("../types/main");class L{constructor(o){this.name="Logger";this.previousStore={};this.defaultOptions={debugLevel:n.LoggerDebugLevel.DISABLED};this.options=this.defaultOptions;this.config=this.config.bind(this),this.debugError=this.debugError.bind(this),this.debugInfo=this.debugInfo.bind(this),this.debugLog=this.debugLog.bind(this),this.enableDebugger=this.enableDebugger.bind(this),this.getOptions=this.getOptions.bind(this),this.postDispatch=this.postDispatch.bind(this),this.preDispatch=this.preDispatch.bind(this),this.config(o)}config(o){this.options={...this.defaultOptions,...o}}debugError(...o){const{debugErrorFnc:e,debugLevel:t}=this.options;e&&e(t,...o)}debugInfo(...o){const{debugInfoFnc:e,debugLevel:t}=this.options;e&&e(t,...o)}debugLog(...o){const{debugLogFnc:e,debugLevel:t}=this.options;e&&e(t,...o)}enableDebugger(o=n.LoggerDebugLevel.DISPATCH){this.options={...this.options,debugLevel:o}}getOptions(){return this.options}preDispatch(o,e){return this.previousStore=e,Promise.resolve(o)}postDispatch(o,e){const{debugLevel:t}=this.options;if(t>n.LoggerDebugLevel.LOGS){const{type:s}=o,g=!(0,p.isEqual)(e,this.previousStore),v=g?"Changed State":"Unchanged State",S=g?"#00d484":"#959595",D=(0,d.cloneDeep)(e)}return Promise.resolve(o)}}0&&(module.exports={Logger});
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL0xvZ2dlci9Mb2dnZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5cbmltcG9ydCB7Rmx1eEFjdGlvbn0gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcbmltcG9ydCB7aXNFcXVhbH0gZnJvbSAnQG5sYWJzL3V0aWxzL2NoZWNrcy9pc0VxdWFsJztcbmltcG9ydCB7Y2xvbmVEZWVwfSBmcm9tICdAbmxhYnMvdXRpbHMvb2JqZWN0cy9jbG9uZSc7XG5cbmltcG9ydCB7TG9nZ2VyRGVidWdMZXZlbCwgTG9nZ2VyT3B0aW9uc30gZnJvbSAnLi4vdHlwZXMvbWFpbic7XG5cbmV4cG9ydCBjbGFzcyBMb2dnZXIge1xuICBuYW1lOiBzdHJpbmcgPSAnTG9nZ2VyJztcblxuICBwcml2YXRlIHByZXZpb3VzU3RvcmU6IGFueSA9IHt9O1xuICBwcml2YXRlIGRlZmF1bHRPcHRpb25zOiBMb2dnZXJPcHRpb25zID0ge1xuICAgIGRlYnVnTGV2ZWw6IExvZ2dlckRlYnVnTGV2ZWwuRElTQUJMRURcbiAgfTtcbiAgcHJpdmF0ZSBvcHRpb25zOiBMb2dnZXJPcHRpb25zID0gdGhpcy5kZWZhdWx0T3B0aW9ucztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBMb2dnZXJPcHRpb25zKSB7XG4gICAgLy8gTWV0aG9kc1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy5jb25maWcuYmluZCh0aGlzKTtcbiAgICB0aGlzLmRlYnVnRXJyb3IgPSB0aGlzLmRlYnVnRXJyb3IuYmluZCh0aGlzKTtcbiAgICB0aGlzLmRlYnVnSW5mbyA9IHRoaXMuZGVidWdJbmZvLmJpbmQodGhpcyk7XG4gICAgdGhpcy5kZWJ1Z0xvZyA9IHRoaXMuZGVidWdMb2cuYmluZCh0aGlzKTtcbiAgICB0aGlzLmVuYWJsZURlYnVnZ2VyID0gdGhpcy5lbmFibGVEZWJ1Z2dlci5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZ2V0T3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucy5iaW5kKHRoaXMpO1xuICAgIHRoaXMucG9zdERpc3BhdGNoID0gdGhpcy5wb3N0RGlzcGF0Y2guYmluZCh0aGlzKTtcbiAgICB0aGlzLnByZURpc3BhdGNoID0gdGhpcy5wcmVEaXNwYXRjaC5iaW5kKHRoaXMpO1xuXG4gICAgLy8gQ29uZmlndXJhdGlvblxuICAgIHRoaXMuY29uZmlnKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAgICovXG4gIGNvbmZpZyhvcHRpb25zOiBMb2dnZXJPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5vcHRpb25zID0gey4uLnRoaXMuZGVmYXVsdE9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgZXJyb3JzIGluIHRoZSBjb25zb2xlLiBXaWxsIGFsc28gY2FsbCB0aGUgZGVidWdFcnJvckZuYyBtZXRob2Qgc2V0IGluIHRoZSBjb25maWcuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvYmogQSBsaXN0IG9mIEphdmFTY3JpcHQgb2JqZWN0cyB0byBvdXRwdXQuIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb25zIG9mIGVhY2ggb2YgdGhlc2Ugb2JqZWN0c1xuICAgKiBhcmUgYXBwZW5kZWQgdG9nZXRoZXIgaW4gdGhlIG9yZGVyIGxpc3RlZCBhbmQgb3V0cHV0LlxuICAgKi9cbiAgZGVidWdFcnJvciguLi5vYmopOiB2b2lkIHtcbiAgICBjb25zdCB7ZGVidWdFcnJvckZuYywgZGVidWdMZXZlbH0gPSB0aGlzLm9wdGlvbnM7XG5cbiAgICBpZihkZWJ1Z0xldmVsKSB7XG4gICAgICBjb25zb2xlLmVycm9yKC4uLm9iaik7XG4gICAgfVxuXG4gICAgaWYoZGVidWdFcnJvckZuYykge1xuICAgICAgZGVidWdFcnJvckZuYyhkZWJ1Z0xldmVsLCAuLi5vYmopO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dzIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgdG8gdGhlIGNvbnNvbGUuIFdpbGwgYWxzbyBjYWxsIHRoZSBkZWJ1Z0luZm9GbmMgbWV0aG9kIHNldCBpbiB0aGUgY29uZmlnLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gb2JqIEEgbGlzdCBvZiBKYXZhU2NyaXB0IG9iamVjdHMgdG8gb3V0cHV0LiBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9ucyBvZiBlYWNoIG9mIHRoZXNlIG9iamVjdHNcbiAgICogYXJlIGFwcGVuZGVkIHRvZ2V0aGVyIGluIHRoZSBvcmRlciBsaXN0ZWQgYW5kIG91dHB1dC5cbiAgICovXG4gIGRlYnVnSW5mbyguLi5vYmopOiB2b2lkIHtcbiAgICBjb25zdCB7ZGVidWdJbmZvRm5jLCBkZWJ1Z0xldmVsfSA9IHRoaXMub3B0aW9ucztcblxuICAgIGlmKGRlYnVnTGV2ZWwpIHtcbiAgICAgIGNvbnNvbGUuaW5mbyguLi5vYmopO1xuICAgIH1cblxuICAgIGlmKGRlYnVnSW5mb0ZuYykge1xuICAgICAgZGVidWdJbmZvRm5jKGRlYnVnTGV2ZWwsIC4uLm9iaik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgZGF0YSBpbiB0aGUgY29uc29sZS4gT25seSBsb2dzIHdoZW4gaW4gZGVidWcgbW9kZS4gIFdpbGwgYWxzbyBjYWxsIHRoZSBkZWJ1Z0xvZ0ZuYyBtZXRob2Qgc2V0IGluIHRoZSBjb25maWcuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvYmogQSBsaXN0IG9mIEphdmFTY3JpcHQgb2JqZWN0cyB0byBvdXRwdXQuIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb25zIG9mIGVhY2ggb2YgdGhlc2Ugb2JqZWN0c1xuICAgKiBhcmUgYXBwZW5kZWQgdG9nZXRoZXIgaW4gdGhlIG9yZGVyIGxpc3RlZCBhbmQgb3V0cHV0LlxuICAgKi9cbiAgZGVidWdMb2coLi4ub2JqKTogdm9pZCB7XG4gICAgY29uc3Qge2RlYnVnTG9nRm5jLCBkZWJ1Z0xldmVsfSA9IHRoaXMub3B0aW9ucztcblxuICAgIGlmKGRlYnVnTGV2ZWwpIHtcbiAgICAgIGNvbnNvbGUubG9nKC4uLm9iaik7XG4gICAgfVxuXG4gICAgaWYoZGVidWdMb2dGbmMpIHtcbiAgICAgIGRlYnVnTG9nRm5jKGRlYnVnTGV2ZWwsIC4uLm9iaik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdGhlIGNvbnNvbGUgZGVidWdnZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbCBFbmFibGUgb3IgZGlzYWJsZSB0aGUgZGVidWdnZXIuIFVzZXMgdGhlIGNvbnN0YW50czpcbiAgICogICBMb2dnZXJEZWJ1Z0xldmVsLkRJU0FCTEVEICgwKSAtIERpc2FibGUuXG4gICAqICAgTG9nZ2VyRGVidWdMZXZlbC5MT0dTICgxKSAtIEVuYWJsZSBjb25zb2xlIGxvZ3MuXG4gICAqICAgTG9nZ2VyRGVidWdMZXZlbC5ESVNQQVRDSCAoMikgLSBFbmFibGUgY29uc29sZSBsb2dzIGFuZCBkaXNwYXRjaCBhY3Rpb24gZGF0YSAoZGVmYXVsdCkuXG4gICAqL1xuICBlbmFibGVEZWJ1Z2dlcihsZXZlbDogbnVtYmVyID0gTG9nZ2VyRGVidWdMZXZlbC5ESVNQQVRDSCk6IHZvaWQge1xuICAgIHRoaXMub3B0aW9ucyA9IHsuLi50aGlzLm9wdGlvbnMsIGRlYnVnTGV2ZWw6IGxldmVsfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgRmx1eExvZ2dlciBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyB7TG9nZ2VyT3B0aW9uc30gdGhlIEZsdXhMb2dnZXIgb3B0aW9ucyBvYmplY3QuXG4gICAqL1xuICBnZXRPcHRpb25zKCk6IExvZ2dlck9wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnM7XG4gIH1cblxuICBwcmVEaXNwYXRjaChhY3Rpb246IEZsdXhBY3Rpb24sIHN0b3JlKTogUHJvbWlzZTxGbHV4QWN0aW9uPiB7XG4gICAgdGhpcy5wcmV2aW91c1N0b3JlID0gc3RvcmU7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShhY3Rpb24pO1xuICB9XG5cbiAgcG9zdERpc3BhdGNoKGFjdGlvbjogRmx1eEFjdGlvbiwgc3RvcmU6IG9iamVjdCk6IFByb21pc2U8Rmx1eEFjdGlvbj4ge1xuICAgIGNvbnN0IHtkZWJ1Z0xldmVsfSA9IHRoaXMub3B0aW9ucztcblxuICAgIGlmKGRlYnVnTGV2ZWwgPiBMb2dnZXJEZWJ1Z0xldmVsLkxPR1MpIHtcbiAgICAgIGNvbnN0IHt0eXBlfSA9IGFjdGlvbjtcbiAgICAgIGNvbnN0IGhhc0NoYW5nZWQgPSAhaXNFcXVhbChzdG9yZSwgdGhpcy5wcmV2aW91c1N0b3JlKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRMYWJlbCA9IGhhc0NoYW5nZWQgPyAnQ2hhbmdlZCBTdGF0ZScgOiAnVW5jaGFuZ2VkIFN0YXRlJztcbiAgICAgIGNvbnN0IHVwZGF0ZWRDb2xvciA9IGhhc0NoYW5nZWQgPyAnIzAwZDQ4NCcgOiAnIzk1OTU5NSc7XG4gICAgICBjb25zdCB1cGRhdGVkU3RvcmUgPSBjbG9uZURlZXAoc3RvcmUpO1xuXG4gICAgICBpZihjb25zb2xlLmdyb3VwQ29sbGFwc2VkKSB7XG4gICAgICAgIGNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoYEZMVVggRElTUEFUQ0g6ICR7dHlwZX1gKTtcbiAgICAgICAgY29uc29sZS5sb2coJyVjIEFjdGlvbjogJywgJ2NvbG9yOiAjMDBDNEZGJywgYWN0aW9uKTtcbiAgICAgICAgY29uc29sZS5sb2coJyVjIExhc3QgU3RhdGU6ICcsICdjb2xvcjogIzk1OTU5NScsIHRoaXMucHJldmlvdXNTdG9yZSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAlYyAke3VwZGF0ZWRMYWJlbH06IGAsIGBjb2xvcjogJHt1cGRhdGVkQ29sb3J9YCwgdXBkYXRlZFN0b3JlKTtcbiAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coYEZMVVggRElTUEFUQ0g6ICR7dHlwZX1gKTtcbiAgICAgICAgY29uc29sZS5sb2coJ0FjdGlvbjogJywgYWN0aW9uKTtcbiAgICAgICAgY29uc29sZS5sb2coJ0xhc3QgU3RhdGU6ICcsIHRoaXMucHJldmlvdXNTdG9yZSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAke3VwZGF0ZWRMYWJlbH06IGAsIHVwZGF0ZWRTdG9yZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShhY3Rpb24pO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiNFpBQUEsSUFBQUEsRUFBQSxHQUFBQyxFQUFBRCxFQUFBLFlBQUFFLElBQUEsZUFBQUMsRUFBQUgsR0FNQSxJQUFBSSxFQUFzQix1Q0FDdEJDLEVBQXdCLHNDQUV4QkMsRUFBOEMseUJBRXZDLE1BQU1KLENBQU8sQ0FTbEIsWUFBWUssRUFBd0IsQ0FScEMsVUFBZSxTQUVmLEtBQVEsY0FBcUIsQ0FBQyxFQUM5QixLQUFRLGVBQWdDLENBQ3RDLFdBQVksbUJBQWlCLFFBQy9CLEVBQ0EsS0FBUSxRQUF5QixLQUFLLGVBSXBDLEtBQUssT0FBUyxLQUFLLE9BQU8sS0FBSyxJQUFJLEVBQ25DLEtBQUssV0FBYSxLQUFLLFdBQVcsS0FBSyxJQUFJLEVBQzNDLEtBQUssVUFBWSxLQUFLLFVBQVUsS0FBSyxJQUFJLEVBQ3pDLEtBQUssU0FBVyxLQUFLLFNBQVMsS0FBSyxJQUFJLEVBQ3ZDLEtBQUssZUFBaUIsS0FBSyxlQUFlLEtBQUssSUFBSSxFQUNuRCxLQUFLLFdBQWEsS0FBSyxXQUFXLEtBQUssSUFBSSxFQUMzQyxLQUFLLGFBQWUsS0FBSyxhQUFhLEtBQUssSUFBSSxFQUMvQyxLQUFLLFlBQWMsS0FBSyxZQUFZLEtBQUssSUFBSSxFQUc3QyxLQUFLLE9BQU9BLENBQU8sQ0FDckIsQ0FPQSxPQUFPQSxFQUE4QixDQUNuQyxLQUFLLFFBQVUsQ0FBQyxHQUFHLEtBQUssZUFBZ0IsR0FBR0EsQ0FBTyxDQUNwRCxDQVFBLGNBQWNDLEVBQVcsQ0FDdkIsS0FBTSxDQUFDLGNBQUFDLEVBQWUsV0FBQUMsQ0FBVSxFQUFJLEtBQUssUUFNdENELEdBQ0RBLEVBQWNDLEVBQVksR0FBR0YsQ0FBRyxDQUVwQyxDQVFBLGFBQWFBLEVBQVcsQ0FDdEIsS0FBTSxDQUFDLGFBQUFHLEVBQWMsV0FBQUQsQ0FBVSxFQUFJLEtBQUssUUFNckNDLEdBQ0RBLEVBQWFELEVBQVksR0FBR0YsQ0FBRyxDQUVuQyxDQVFBLFlBQVlBLEVBQVcsQ0FDckIsS0FBTSxDQUFDLFlBQUFJLEVBQWEsV0FBQUYsQ0FBVSxFQUFJLEtBQUssUUFNcENFLEdBQ0RBLEVBQVlGLEVBQVksR0FBR0YsQ0FBRyxDQUVsQyxDQVVBLGVBQWVLLEVBQWdCLG1CQUFpQixTQUFnQixDQUM5RCxLQUFLLFFBQVUsQ0FBQyxHQUFHLEtBQUssUUFBUyxXQUFZQSxDQUFLLENBQ3BELENBT0EsWUFBNEIsQ0FDMUIsT0FBTyxLQUFLLE9BQ2QsQ0FFQSxZQUFZQyxFQUFvQkMsRUFBNEIsQ0FDMUQsWUFBSyxjQUFnQkEsRUFDZCxRQUFRLFFBQVFELENBQU0sQ0FDL0IsQ0FFQSxhQUFhQSxFQUFvQkMsRUFBb0MsQ0FDbkUsS0FBTSxDQUFDLFdBQUFMLENBQVUsRUFBSSxLQUFLLFFBRTFCLEdBQUdBLEVBQWEsbUJBQWlCLEtBQU0sQ0FDckMsS0FBTSxDQUFDLEtBQUFNLENBQUksRUFBSUYsRUFDVEcsRUFBYSxJQUFDLFdBQVFGLEVBQU8sS0FBSyxhQUFhLEVBQy9DRyxFQUFlRCxFQUFhLGdCQUFrQixrQkFDOUNFLEVBQWVGLEVBQWEsVUFBWSxVQUN4Q0csS0FBZSxhQUFVTCxDQUFLLENBY3RDLENBRUEsT0FBTyxRQUFRLFFBQVFELENBQU0sQ0FDL0IsQ0FDRiIsCiAgIm5hbWVzIjogWyJMb2dnZXJfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJMb2dnZXIiLCAiX190b0NvbW1vbkpTIiwgImltcG9ydF9pc0VxdWFsIiwgImltcG9ydF9jbG9uZSIsICJpbXBvcnRfbWFpbiIsICJvcHRpb25zIiwgIm9iaiIsICJkZWJ1Z0Vycm9yRm5jIiwgImRlYnVnTGV2ZWwiLCAiZGVidWdJbmZvRm5jIiwgImRlYnVnTG9nRm5jIiwgImxldmVsIiwgImFjdGlvbiIsICJzdG9yZSIsICJ0eXBlIiwgImhhc0NoYW5nZWQiLCAidXBkYXRlZExhYmVsIiwgInVwZGF0ZWRDb2xvciIsICJ1cGRhdGVkU3RvcmUiXQp9Cg==
package/lib/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { Logger } from './Logger/Logger';
2
+ export * from './types/main';
3
+ export { Logger };
package/lib/index.js ADDED
@@ -0,0 +1,2 @@
1
+ var g=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var c=(r,o)=>{for(var e in o)g(r,e,{get:o[e],enumerable:!0})},f=(r,o,e,x)=>{if(o&&typeof o=="object"||typeof o=="function")for(let m of a(o))!b.call(r,m)&&m!==e&&g(r,m,{get:()=>o[m],enumerable:!(x=L(o,m))||x.enumerable});return r},t=(r,o,e)=>(f(r,o,"default"),e&&f(e,o,"default"));var d=r=>f(g({},"__esModule",{value:!0}),r);var p={};c(p,{Logger:()=>i.Logger});module.exports=d(p);var i=require("./Logger/Logger");t(p,require("./types/main"),module.exports);0&&(module.exports={Logger,...require("./types/main")});
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuXG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi9Mb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9tYWluJztcbmV4cG9ydCB7TG9nZ2VyfTtcbiJdLAogICJtYXBwaW5ncyI6ICI4Y0FBQSxJQUFBQSxFQUFBLEdBQUFDLEVBQUFELEVBQUEsc0NBQUFFLEVBQUFGLEdBS0EsSUFBQUcsRUFBcUIsMkJBRXJCQyxFQUFBSixFQUFjLHdCQVBkIiwKICAibmFtZXMiOiBbImluZGV4X2V4cG9ydHMiLCAiX19leHBvcnQiLCAiX190b0NvbW1vbkpTIiwgImltcG9ydF9Mb2dnZXIiLCAiX19yZUV4cG9ydCJdCn0K
@@ -0,0 +1,11 @@
1
+ export declare enum LoggerDebugLevel {
2
+ DISABLED = 0,
3
+ LOGS = 1,
4
+ DISPATCH = 2
5
+ }
6
+ export interface LoggerOptions {
7
+ readonly debugLevel?: LoggerDebugLevel;
8
+ readonly debugErrorFnc?: (debugLevel: number, ...args: any[]) => void;
9
+ readonly debugInfoFnc?: (debugLevel: number, ...args: any[]) => void;
10
+ readonly debugLogFnc?: (debugLevel: number, ...args: any[]) => void;
11
+ }
@@ -0,0 +1,2 @@
1
+ var e=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var m=(r,d)=>{for(var a in d)e(r,a,{get:d[a],enumerable:!0})},s=(r,d,a,n)=>{if(d&&typeof d=="object"||typeof d=="function")for(let o of i(d))!c.call(r,o)&&o!==a&&e(r,o,{get:()=>d[o],enumerable:!(n=b(d,o))||n.enumerable});return r};var t=r=>s(e({},"__esModule",{value:!0}),r);var y={};m(y,{LoggerDebugLevel:()=>u});module.exports=t(y);var u=(n=>(n[n.DISABLED=0]="DISABLED",n[n.LOGS=1]="LOGS",n[n.DISPATCH=2]="DISPATCH",n))(u||{});0&&(module.exports={LoggerDebugLevel});
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3R5cGVzL21haW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCBlbnVtIExvZ2dlckRlYnVnTGV2ZWwge1xuICBESVNBQkxFRCA9IDAsXG4gIExPR1MgPSAxLFxuICBESVNQQVRDSCA9IDJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dnZXJPcHRpb25zIHtcbiAgcmVhZG9ubHkgZGVidWdMZXZlbD86IExvZ2dlckRlYnVnTGV2ZWw7XG4gIHJlYWRvbmx5IGRlYnVnRXJyb3JGbmM/OiAoZGVidWdMZXZlbDogbnVtYmVyLCAuLi5hcmdzKSA9PiB2b2lkO1xuICByZWFkb25seSBkZWJ1Z0luZm9GbmM/OiAoZGVidWdMZXZlbDogbnVtYmVyLCAuLi5hcmdzKSA9PiB2b2lkO1xuICByZWFkb25seSBkZWJ1Z0xvZ0ZuYz86IChkZWJ1Z0xldmVsOiBudW1iZXIsIC4uLmFyZ3MpID0+IHZvaWQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiNFpBQUEsSUFBQUEsRUFBQSxHQUFBQyxFQUFBRCxFQUFBLHNCQUFBRSxJQUFBLGVBQUFDLEVBQUFILEdBQU8sSUFBS0UsT0FDVkEsSUFBQSxTQUFXLEdBQVgsV0FDQUEsSUFBQSxLQUFPLEdBQVAsT0FDQUEsSUFBQSxTQUFXLEdBQVgsV0FIVUEsT0FBQSIsCiAgIm5hbWVzIjogWyJtYWluX2V4cG9ydHMiLCAiX19leHBvcnQiLCAiTG9nZ2VyRGVidWdMZXZlbCIsICJfX3RvQ29tbW9uSlMiXQp9Cg==
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@nlabs/arkhamjs-middleware-logger",
3
- "version": "3.28.7",
3
+ "version": "3.29.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
7
  "description": "Add console logging for ArkhamJS",
8
+ "type": "module",
8
9
  "license": "MIT",
9
10
  "main": "./lib/index.js",
10
11
  "module": "./lib/index.js",
@@ -30,29 +31,33 @@
30
31
  "url": "https://github.com/nitrogenlabs/arkhamjs/issues"
31
32
  },
32
33
  "scripts": {
33
- "build": "lex compile",
34
+ "build": "lex compile --remove",
34
35
  "clean": "lex clean",
35
- "lint": "eslint ./src --ext .ts,.tsx",
36
+ "lint": "lex lint --fix",
36
37
  "prepublishOnly": "npm run build",
37
38
  "publish:major": "npm version major && npm publish",
38
39
  "publish:minor": "npm version minor && npm publish",
39
40
  "publish:patch": "npm version patch && npm publish",
40
41
  "pretest": "lex lint",
41
42
  "test": "lex test",
42
- "update": "npm-check-updates --interactive"
43
+ "update": "lex update --interactive"
43
44
  },
44
45
  "peerDependencies": {
45
- "@nlabs/arkhamjs": "*",
46
- "lodash": "^4.17"
46
+ "@nlabs/arkhamjs": "*"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@nlabs/arkhamjs": "*",
50
- "@types/jest": "^29.5.14",
51
- "@types/node": "^22.13.1",
52
- "eslint": "^9.19.0",
53
- "eslint-config-styleguidejs": "^3.2.1",
54
- "lodash": "^4.17.21",
55
- "typescript": "^5.7.3"
50
+ "@types/jest": "^30.0.0",
51
+ "@types/node": "^24.0.10",
52
+ "typescript": "^5.8.3"
56
53
  },
54
+ "files": [
55
+ "lib",
56
+ "index.js",
57
+ "index.d.ts",
58
+ "LICENSE",
59
+ "package.json",
60
+ "README.md"
61
+ ],
57
62
  "gitHead": "fc371e1e28fe0ae35d40d29a217d5f0e990ec32a"
58
63
  }