1 | import * as symbol from './symbol.js'
|
2 | import * as time from './time.js'
|
3 | import * as env from './environment.js'
|
4 | import * as func from './function.js'
|
5 | import * as json from './json.js'
|
6 |
|
7 | export const BOLD = symbol.create()
|
8 | export const UNBOLD = symbol.create()
|
9 | export const BLUE = symbol.create()
|
10 | export const GREY = symbol.create()
|
11 | export const GREEN = symbol.create()
|
12 | export const RED = symbol.create()
|
13 | export const PURPLE = symbol.create()
|
14 | export const ORANGE = symbol.create()
|
15 | export const UNCOLOR = symbol.create()
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 | export const computeNoColorLoggingArgs = args => {
|
23 | if (args.length === 1 && args[0]?.constructor === Function) {
|
24 | args = ( (args)[0]())
|
25 | }
|
26 | const strBuilder = []
|
27 | const logArgs = []
|
28 |
|
29 | let i = 0
|
30 | for (; i < args.length; i++) {
|
31 | const arg = args[i]
|
32 | if (arg === undefined) {
|
33 | strBuilder.push('undefined')
|
34 | } else if (arg.constructor === String || arg.constructor === Number) {
|
35 | strBuilder.push(arg)
|
36 | } else if (arg.constructor === Object) {
|
37 | logArgs.push(JSON.stringify(arg))
|
38 | }
|
39 | }
|
40 | return logArgs
|
41 | }
|
42 |
|
43 |
|
44 | const loggingColors = [GREEN, PURPLE, ORANGE, BLUE]
|
45 | let nextColor = 0
|
46 | let lastLoggingTime = time.getUnixTime()
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 | export const createModuleLogger = (_print, moduleName) => {
|
55 | const color = loggingColors[nextColor]
|
56 | const debugRegexVar = env.getVariable('log')
|
57 | const doLogging = debugRegexVar !== null &&
|
58 | (debugRegexVar === '*' || debugRegexVar === 'true' ||
|
59 | new RegExp(debugRegexVar, 'gi').test(moduleName))
|
60 | nextColor = (nextColor + 1) % loggingColors.length
|
61 | moduleName += ': '
|
62 | return !doLogging
|
63 | ? func.nop
|
64 | : (...args) => {
|
65 | if (args.length === 1 && args[0]?.constructor === Function) {
|
66 | args = args[0]()
|
67 | }
|
68 | const timeNow = time.getUnixTime()
|
69 | const timeDiff = timeNow - lastLoggingTime
|
70 | lastLoggingTime = timeNow
|
71 | _print(
|
72 | color,
|
73 | moduleName,
|
74 | UNCOLOR,
|
75 | ...args.map((arg) => {
|
76 | if (arg != null && arg.constructor === Uint8Array) {
|
77 | arg = Array.from(arg)
|
78 | }
|
79 | const t = typeof arg
|
80 | switch (t) {
|
81 | case 'string':
|
82 | case 'symbol':
|
83 | return arg
|
84 | default: {
|
85 | return json.stringify(arg)
|
86 | }
|
87 | }
|
88 | }),
|
89 | color,
|
90 | ' +' + timeDiff + 'ms'
|
91 | )
|
92 | }
|
93 | }
|
94 |
|