ng2-logger 19.0.3 → 19.0.5
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 +192 -192
- package/browser/README.md +24 -24
- package/browser/fesm2022/ng2-logger.mjs +7 -11
- package/browser/fesm2022/ng2-logger.mjs.map +1 -1
- package/browser/package.json +1 -1
- package/client/README.md +24 -24
- package/client/fesm2022/ng2-logger.mjs +7 -11
- package/client/fesm2022/ng2-logger.mjs.map +1 -1
- package/client/package.json +1 -1
- package/index.js.map +1 -1
- package/lib/backend-logging.js +20 -20
- package/lib/backend-logging.js.map +1 -1
- package/lib/build-info._auto-generated_.d.ts +2 -1
- package/lib/build-info._auto-generated_.js +3 -2
- package/lib/build-info._auto-generated_.js.map +1 -1
- package/lib/display.js +2 -2
- package/lib/display.js.map +1 -1
- package/lib/index._auto-generated_.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/level.js.map +1 -1
- package/lib/log.js +4 -4
- package/lib/log.js.map +1 -1
- package/lib/logger.js +22 -22
- package/lib/logger.js.map +1 -1
- package/migrations/index.js.map +1 -1
- package/migrations/migrations_index._auto-generated_.js.map +1 -1
- package/package.json +1 -1
- package/tmp-environment.json +4 -4
- package/websql/README.md +24 -24
- package/websql/fesm2022/ng2-logger.mjs +7 -11
- package/websql/fesm2022/ng2-logger.mjs.map +1 -1
- package/websql/package.json +1 -1
- package/browser/esm2022/lib/backend-logging.mjs +0 -94
- package/browser/esm2022/lib/display.mjs +0 -97
- package/browser/esm2022/lib/index.mjs +0 -7
- package/browser/esm2022/lib/level.mjs +0 -33
- package/browser/esm2022/lib/log.mjs +0 -161
- package/browser/esm2022/lib/logger.mjs +0 -237
- package/browser/esm2022/ng2-logger.mjs +0 -5
- package/browser/esm2022/public-api.mjs +0 -2
- package/client/esm2022/lib/backend-logging.mjs +0 -94
- package/client/esm2022/lib/display.mjs +0 -97
- package/client/esm2022/lib/index.mjs +0 -7
- package/client/esm2022/lib/level.mjs +0 -33
- package/client/esm2022/lib/log.mjs +0 -161
- package/client/esm2022/lib/logger.mjs +0 -237
- package/client/esm2022/ng2-logger.mjs +0 -5
- package/client/esm2022/public-api.mjs +0 -2
- package/websql/esm2022/lib/backend-logging.mjs +0 -94
- package/websql/esm2022/lib/display.mjs +0 -97
- package/websql/esm2022/lib/index.mjs +0 -7
- package/websql/esm2022/lib/level.mjs +0 -33
- package/websql/esm2022/lib/log.mjs +0 -161
- package/websql/esm2022/lib/logger.mjs +0 -237
- package/websql/esm2022/ng2-logger.mjs +0 -5
- package/websql/esm2022/public-api.mjs +0 -2
package/README.md
CHANGED
|
@@ -1,192 +1,192 @@
|
|
|
1
|
-
## taon-logger (ng2-logger) ##
|
|
2
|
-
|
|
3
|
-
- Part of [taon.io](https://github.com/darekf77/taon)
|
|
4
|
-
- Isomorphic Logger for TypeScript and JavaScript apps.
|
|
5
|
-
- Purpose:
|
|
6
|
-
+ usefull/elegant backend/frontend logger
|
|
7
|
-
|
|
8
|
-
You can use this logger in your apps with **any**
|
|
9
|
-
TS/JS framework.
|
|
10
|
-
|
|
11
|
-
See what is going on in your app!
|
|
12
|
-
|
|
13
|
-
Now chrome console logs are full of colors!
|
|
14
|
-
|
|
15
|
-

|
|
16
|
-
|
|
17
|
-
See nice server logs:
|
|
18
|
-
|
|
19
|
-

|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
To install package run:
|
|
23
|
-
```
|
|
24
|
-
npm install ng2-logger --save
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
First import proper version for your environment:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
Nodejs server (or any taon's lib/app):
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
```ts
|
|
36
|
-
|
|
37
|
-
import { Log, Level } from 'ng2-logger'
|
|
38
|
-
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
or Browser:
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
```ts
|
|
46
|
-
|
|
47
|
-
import { Log, Level } from 'ng2-logger/browser' // new javascript module: es2015 + esnext + angular ivy support
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
Simple use:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
In your file with log:
|
|
58
|
-
|
|
59
|
-
```ts
|
|
60
|
-
|
|
61
|
-
const log = Log.create('books');
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
or if you wanna just log errors and warnings :
|
|
66
|
-
|
|
67
|
-
```ts
|
|
68
|
-
|
|
69
|
-
const log = Log.create('books', Level.ERROR, Level.WARN);
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
'books' is current class or anything inside *.ts/*.js file.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
You can also assign static color to specific module in application (browser for now only):
|
|
78
|
-
|
|
79
|
-
```ts
|
|
80
|
-
|
|
81
|
-
log.color = 'red';
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
After inited **log** you are able to start debugging:
|
|
86
|
-
|
|
87
|
-
```ts
|
|
88
|
-
|
|
89
|
-
log.d('object',obj) // console.log
|
|
90
|
-
|
|
91
|
-
log.er('object',obj) // console.error
|
|
92
|
-
|
|
93
|
-
log.i('object',obj) // console.info
|
|
94
|
-
|
|
95
|
-
log.w('object',obj) // console.warn
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
or
|
|
100
|
-
|
|
101
|
-
```ts
|
|
102
|
-
|
|
103
|
-
log.debug('object',obj) // console.log
|
|
104
|
-
|
|
105
|
-
log.error('object',obj) // console.error
|
|
106
|
-
|
|
107
|
-
log.info('object',obj) // console.info
|
|
108
|
-
|
|
109
|
-
log.warn('object',obj) // console.warn
|
|
110
|
-
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
**Production mode**
|
|
117
|
-
|
|
118
|
-
-------------------
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
You will not see anyting in prduction mode:
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
// enable production mode in your app
|
|
127
|
-
|
|
128
|
-
...
|
|
129
|
-
|
|
130
|
-
Log.setProductionMode();
|
|
131
|
-
|
|
132
|
-
...
|
|
133
|
-
|
|
134
|
-
// your app code with console and ng2-logger logs
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
It is important to set production mode before any log messages are executed.
|
|
140
|
-
|
|
141
|
-
This will ensure that log messages that should not be seen are leaked out.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
**Selective debug - global settings**
|
|
147
|
-
|
|
148
|
-
-------------------
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
Optional specify what you wanna see in yours debug console.
|
|
153
|
-
|
|
154
|
-
This settings will override settings from files.
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
```ts
|
|
159
|
-
|
|
160
|
-
Log.setProductionMode();
|
|
161
|
-
|
|
162
|
-
Log.onlyModules('src:books', 'src:records', 'src:page:login');
|
|
163
|
-
|
|
164
|
-
Log.onlyLevel(Level.ERROR,Level.INFO);
|
|
165
|
-
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
**Specifying `onlyModules` as regular expression(s)**
|
|
171
|
-
|
|
172
|
-
-------------------
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
In the above example you'll notice `module:books` and `module:records` were specified.
|
|
177
|
-
|
|
178
|
-
you might be using such syntax for namespace hierarchy etc. You may also pass in one or more regular
|
|
179
|
-
|
|
180
|
-
expression string(s) to the `onlyModule` function to specify a selection of modules you wish
|
|
181
|
-
|
|
182
|
-
to show, for instances those whose name begins with `src`:
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
```ts
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
Log.onlyModules( new RegEx('^.src') );
|
|
191
|
-
|
|
192
|
-
```
|
|
1
|
+
## taon-logger (ng2-logger) ##
|
|
2
|
+
|
|
3
|
+
- Part of [taon.io](https://github.com/darekf77/taon)
|
|
4
|
+
- Isomorphic Logger for TypeScript and JavaScript apps.
|
|
5
|
+
- Purpose:
|
|
6
|
+
+ usefull/elegant backend/frontend logger
|
|
7
|
+
|
|
8
|
+
You can use this logger in your apps with **any**
|
|
9
|
+
TS/JS framework.
|
|
10
|
+
|
|
11
|
+
See what is going on in your app!
|
|
12
|
+
|
|
13
|
+
Now chrome console logs are full of colors!
|
|
14
|
+
|
|
15
|
+

|
|
16
|
+
|
|
17
|
+
See nice server logs:
|
|
18
|
+
|
|
19
|
+

|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
To install package run:
|
|
23
|
+
```
|
|
24
|
+
npm install ng2-logger --save
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
First import proper version for your environment:
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
Nodejs server (or any taon's lib/app):
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
```ts
|
|
36
|
+
|
|
37
|
+
import { Log, Level } from 'ng2-logger'
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
or Browser:
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
|
|
47
|
+
import { Log, Level } from 'ng2-logger/browser' // new javascript module: es2015 + esnext + angular ivy support
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
Simple use:
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
In your file with log:
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
|
|
61
|
+
const log = Log.create('books');
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
or if you wanna just log errors and warnings :
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
|
|
69
|
+
const log = Log.create('books', Level.ERROR, Level.WARN);
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
'books' is current class or anything inside *.ts/*.js file.
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
You can also assign static color to specific module in application (browser for now only):
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
|
|
81
|
+
log.color = 'red';
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
After inited **log** you are able to start debugging:
|
|
86
|
+
|
|
87
|
+
```ts
|
|
88
|
+
|
|
89
|
+
log.d('object',obj) // console.log
|
|
90
|
+
|
|
91
|
+
log.er('object',obj) // console.error
|
|
92
|
+
|
|
93
|
+
log.i('object',obj) // console.info
|
|
94
|
+
|
|
95
|
+
log.w('object',obj) // console.warn
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
or
|
|
100
|
+
|
|
101
|
+
```ts
|
|
102
|
+
|
|
103
|
+
log.debug('object',obj) // console.log
|
|
104
|
+
|
|
105
|
+
log.error('object',obj) // console.error
|
|
106
|
+
|
|
107
|
+
log.info('object',obj) // console.info
|
|
108
|
+
|
|
109
|
+
log.warn('object',obj) // console.warn
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
**Production mode**
|
|
117
|
+
|
|
118
|
+
-------------------
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
You will not see anyting in prduction mode:
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
// enable production mode in your app
|
|
127
|
+
|
|
128
|
+
...
|
|
129
|
+
|
|
130
|
+
Log.setProductionMode();
|
|
131
|
+
|
|
132
|
+
...
|
|
133
|
+
|
|
134
|
+
// your app code with console and ng2-logger logs
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
It is important to set production mode before any log messages are executed.
|
|
140
|
+
|
|
141
|
+
This will ensure that log messages that should not be seen are leaked out.
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
**Selective debug - global settings**
|
|
147
|
+
|
|
148
|
+
-------------------
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
Optional specify what you wanna see in yours debug console.
|
|
153
|
+
|
|
154
|
+
This settings will override settings from files.
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
```ts
|
|
159
|
+
|
|
160
|
+
Log.setProductionMode();
|
|
161
|
+
|
|
162
|
+
Log.onlyModules('src:books', 'src:records', 'src:page:login');
|
|
163
|
+
|
|
164
|
+
Log.onlyLevel(Level.ERROR,Level.INFO);
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
**Specifying `onlyModules` as regular expression(s)**
|
|
171
|
+
|
|
172
|
+
-------------------
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
In the above example you'll notice `module:books` and `module:records` were specified.
|
|
177
|
+
|
|
178
|
+
you might be using such syntax for namespace hierarchy etc. You may also pass in one or more regular
|
|
179
|
+
|
|
180
|
+
expression string(s) to the `onlyModule` function to specify a selection of modules you wish
|
|
181
|
+
|
|
182
|
+
to show, for instances those whose name begins with `src`:
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
```ts
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
Log.onlyModules( new RegEx('^.src') );
|
|
191
|
+
|
|
192
|
+
```
|
package/browser/README.md
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
# MyLib
|
|
2
|
-
|
|
3
|
-
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
|
4
|
-
|
|
5
|
-
## Code scaffolding
|
|
6
|
-
|
|
7
|
-
Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
|
|
8
|
-
> Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
-
|
|
10
|
-
## Build
|
|
11
|
-
|
|
12
|
-
Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
-
|
|
14
|
-
## Publishing
|
|
15
|
-
|
|
16
|
-
After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
|
|
17
|
-
|
|
18
|
-
## Running unit tests
|
|
19
|
-
|
|
20
|
-
Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
-
|
|
22
|
-
## Further help
|
|
23
|
-
|
|
24
|
-
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
1
|
+
# MyLib
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
|
|
8
|
+
> Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -30,8 +30,6 @@ const LevelOrder = [
|
|
|
30
30
|
LevelKey[Level.WARN],
|
|
31
31
|
LevelKey[Level.ERROR],
|
|
32
32
|
];
|
|
33
|
-
;
|
|
34
|
-
({}); // @--end-of-file-for-module=ng2-logger lib/level.ts
|
|
35
33
|
|
|
36
34
|
/* */
|
|
37
35
|
/* */
|
|
@@ -61,6 +59,7 @@ class Display {
|
|
|
61
59
|
}
|
|
62
60
|
}
|
|
63
61
|
}
|
|
62
|
+
//#region @browser
|
|
64
63
|
if (Helpers.isBrowser
|
|
65
64
|
/* */
|
|
66
65
|
/* */
|
|
@@ -109,6 +108,7 @@ class Display {
|
|
|
109
108
|
console.log.apply(console, params);
|
|
110
109
|
}
|
|
111
110
|
}
|
|
111
|
+
//#endregion
|
|
112
112
|
/* */
|
|
113
113
|
/* */
|
|
114
114
|
/* */
|
|
@@ -125,8 +125,6 @@ class Display {
|
|
|
125
125
|
/* */
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
|
-
;
|
|
129
|
-
({}); // @--end-of-file-for-module=ng2-logger lib/display.ts
|
|
130
128
|
|
|
131
129
|
class Logger {
|
|
132
130
|
setLevel(l) {
|
|
@@ -359,8 +357,6 @@ class Logger {
|
|
|
359
357
|
return this;
|
|
360
358
|
}
|
|
361
359
|
}
|
|
362
|
-
;
|
|
363
|
-
({}); // @--end-of-file-for-module=ng2-logger lib/logger.ts
|
|
364
360
|
|
|
365
361
|
/* */
|
|
366
362
|
/* */
|
|
@@ -368,6 +364,7 @@ class Logger {
|
|
|
368
364
|
/* */
|
|
369
365
|
/* */
|
|
370
366
|
class Log {
|
|
367
|
+
//#region singleton
|
|
371
368
|
constructor() {
|
|
372
369
|
this._logOnly = false;
|
|
373
370
|
this._logModules = false;
|
|
@@ -388,6 +385,7 @@ class Log {
|
|
|
388
385
|
// @ts-ignore
|
|
389
386
|
return Log['_instance'];
|
|
390
387
|
}
|
|
388
|
+
//#endregion
|
|
391
389
|
static { this.Logger = Logger; }
|
|
392
390
|
static create(name, ...level) {
|
|
393
391
|
return Log.instance.create(name, ...level);
|
|
@@ -425,6 +423,7 @@ class Log {
|
|
|
425
423
|
console[a] = this.consolelogfn[a];
|
|
426
424
|
});
|
|
427
425
|
}
|
|
426
|
+
//#region public api
|
|
428
427
|
setProductionMode() {
|
|
429
428
|
if (this.modeIsSet) {
|
|
430
429
|
this.modeIsSet = false;
|
|
@@ -454,6 +453,7 @@ class Log {
|
|
|
454
453
|
if (modules.length === 0)
|
|
455
454
|
return;
|
|
456
455
|
this.modules = modules;
|
|
456
|
+
// console.log('only log this', Log.modules)
|
|
457
457
|
this.muteAllOtherModules();
|
|
458
458
|
}
|
|
459
459
|
onlyLevel(...level) {
|
|
@@ -471,6 +471,7 @@ class Log {
|
|
|
471
471
|
}
|
|
472
472
|
}
|
|
473
473
|
}
|
|
474
|
+
//#endregion
|
|
474
475
|
create(name, ...level) {
|
|
475
476
|
let i;
|
|
476
477
|
if (Array.isArray(this.levels) && this.levels.length > 0) {
|
|
@@ -517,11 +518,6 @@ function getRandomColor() {
|
|
|
517
518
|
;
|
|
518
519
|
return color;
|
|
519
520
|
}
|
|
520
|
-
;
|
|
521
|
-
({}); // @--end-of-file-for-module=ng2-logger lib/log.ts
|
|
522
|
-
|
|
523
|
-
;
|
|
524
|
-
({}); // @--end-of-file-for-module=ng2-logger lib/index.ts
|
|
525
521
|
|
|
526
522
|
/**
|
|
527
523
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng2-logger.mjs","sources":["../../../tmp-libs-for-dist/ng2-logger/projects/ng2-logger/src/lib/level.ts","../../../tmp-libs-for-dist/ng2-logger/projects/ng2-logger/src/lib/display.ts","../../../tmp-libs-for-dist/ng2-logger/projects/ng2-logger/src/lib/logger.ts","../../../tmp-libs-for-dist/ng2-logger/projects/ng2-logger/src/lib/log.ts","../../../tmp-libs-for-dist/ng2-logger/projects/ng2-logger/src/lib/index.ts","../../../tmp-libs-for-dist/ng2-logger/projects/ng2-logger/src/ng2-logger.ts"],"sourcesContent":["\n\nexport enum Level {\n DATA,\n INFO,\n WARN,\n ERROR ,\n SUCCESS,\n TASK_STARTED,\n TASK_DONE,\n __NOTHING ,\n}\n\nexport const LevelKey = {\n [Level.DATA] : 'log',\n [Level.INFO] : 'info',\n [Level.WARN] : 'warn',\n [Level.ERROR] : 'error',\n [Level.SUCCESS] : 'success',\n [Level.TASK_STARTED] : 'taskstarted',\n [Level.TASK_DONE] : 'taskdone',\n [Level.__NOTHING] : '',\n}\n\nexport const LevelOrder = [\n LevelKey[Level.DATA],\n LevelKey[Level.TASK_STARTED],\n LevelKey[Level.TASK_DONE],\n LevelKey[Level.INFO],\n LevelKey[Level.SUCCESS],\n LevelKey[Level.WARN],\n LevelKey[Level.ERROR],\n];\n\n ;({}); // @--end-of-file-for-module=ng2-logger lib/level.ts","\n\n/* */\n/* */\n \nimport { Level } from './level';\nimport { Helpers } from 'tnp-core/browser';\nimport { consoleLog, displayParams } from './backend-logging';\n\n/* */\n/* */\n \n\nexport class Display {\n\n static msg(\n message: string | any,\n params: any[],\n moduleName: string,\n moduleColor: string,\n level: Level,\n moduleWidth: number | undefined,\n isProductionMode: boolean\n ) {\n if (isProductionMode) {\n return;\n };\n let color = 'gray';\n if (level === Level.INFO) { color = 'deepskyblue'; }\n if (level === Level.ERROR) { color = 'red'; }\n if (level === Level.WARN) { color = 'orange'; }\n\n if (moduleWidth) {\n const diff = moduleWidth - moduleName.length;\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n moduleName += ' ';\n }\n }\n }\n\n\n if (Helpers.isBrowser\n/* */\n/* */\n \n ) {\n\n\n // @ts-ignore\n const isEdgeOrIe8orAbove = (document['documentMode'] || /Edge/.test(navigator.userAgent));\n\n if (isEdgeOrIe8orAbove) {\n if (typeof message === 'string') {\n let a1 = '[[ ' + moduleName + ' ]] ' + message + ' ';\n params.unshift(a1);\n } else {\n let a1 = '[[ ' + moduleName + ']] ';\n params.push(message);\n params.unshift(a1);\n }\n if (level === Level.INFO) {\n console.info.apply(console, params);\n } else if (level === Level.ERROR) {\n console.error.apply(console, params);\n } else if (level === Level.WARN) {\n console.warn.apply(console, params);\n } else {\n console.log.apply(console, params);\n }\n } else {\n if (typeof message === 'string') {\n let a1 = '%c ' + moduleName + ' %c ' + message + ' ';\n let a2 = 'background: ' + moduleColor + ';color:white; border: 1px solid ' + moduleColor + '; ';\n let a3 = 'border: 1px solid ' + color + '; ';\n params.unshift(a3);\n params.unshift(a2);\n params.unshift(a1);\n } else {\n let a1 = '%c ' + moduleName + ' ';\n let a2 = 'background: ' + moduleColor + ';color:white; border: 1px solid ' + color + '; ';\n params.push(message);\n params.unshift(a2);\n params.unshift(a1);\n }\n console.log.apply(console, params);\n }\n\n }\n\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=ng2-logger lib/display.ts","\n\nimport { Level } from './level';\nimport { Display } from './display';\nimport { Helpers } from 'tnp-core/browser';\n\nexport class Logger {\n\n private _level: Level;\n public setLevel(l: Level) {\n this._level = l;\n return this;\n }\n\n public get isProductionMode() {\n return !this.developmentMode;\n }\n\n public setProductionMode(productionMode: boolean) {\n this.developmentMode = !productionMode;\n return this;\n }\n\n public mute() {\n this.isMuted = true;\n return this;\n }\n\n constructor(\n private name: string,\n public color: string,\n private developmentMode: boolean,\n private allowed: Level[],\n private isMuted: boolean,\n public fixedWidth: number | undefined\n ) { }\n\n onlyWhen(expression: (() => boolean) | boolean) {\n if (typeof expression === 'function') {\n this.isMuted = !expression()\n } else if (typeof expression === 'boolean') {\n this.isMuted = !expression;\n }\n }\n\n private _data(name: string, ...data: any[]) {\n if (this.isMuted) return this;\n if (this.allowed.length >= 1 && Helpers.contain(this.allowed, Level.__NOTHING)\n && !Helpers.contain(this.allowed, Level.DATA)) return this;\n\n if (this.allowed.length === 0 || Helpers.contain(this.allowed, Level.DATA)) {\n // @ts-ignore\n Display.msg.apply(void 0, [\n name,\n ...data,\n this.name,\n this.color,\n Level.DATA,\n this.fixedWidth,\n this.isProductionMode,\n ]);\n }\n return this;\n }\n\n\n private _error(name: string, ...data: any[]) {\n if (this.isMuted) return this;\n if (this.allowed.length >= 1 && Helpers.contain(this.allowed, Level.__NOTHING)\n && !Helpers.contain(this.allowed, Level.ERROR)) return this;\n\n if (this.allowed.length === 0 || Helpers.contain(this.allowed, Level.ERROR)) {\n // @ts-ignore\n Display.msg.apply(void 0, [\n name,\n ...data,\n this.name,\n this.color,\n Level.ERROR,\n this.fixedWidth,\n this.isProductionMode,\n ]);\n }\n return this;\n }\n\n private _info(name: string, ...data: any[]) {\n if (this.isMuted) return this;\n if (this.allowed.length >= 1 && Helpers.contain(this.allowed, Level.__NOTHING)\n && !Helpers.contain(this.allowed, Level.INFO)) return this;\n\n if (this.allowed.length === 0 || Helpers.contain(this.allowed, Level.INFO)) {\n // @ts-ignore\n Display.msg.apply(void 0, [\n name,\n ...data,\n this.name,\n this.color,\n Level.INFO,\n this.fixedWidth,\n this.isProductionMode,\n ]);\n }\n return this;\n }\n\n private _success(name: string, ...data: any[]) {\n if (this.isMuted) return this;\n if (this.allowed.length >= 1 && Helpers.contain(this.allowed, Level.__NOTHING)\n && !Helpers.contain(this.allowed, Level.SUCCESS)) return this;\n\n if (this.allowed.length === 0 || Helpers.contain(this.allowed, Level.SUCCESS)) {\n // @ts-ignore\n Display.msg.apply(void 0, [\n name,\n ...data,\n this.name,\n this.color,\n Level.SUCCESS,\n this.fixedWidth,\n this.isProductionMode,\n ]);\n }\n return this;\n }\n\n private _taskStarted(name: string, ...data: any[]) {\n if (this.isMuted) return this;\n if (this.allowed.length >= 1 && Helpers.contain(this.allowed, Level.__NOTHING)\n && !Helpers.contain(this.allowed, Level.TASK_STARTED)) return this;\n\n if (this.allowed.length === 0 || Helpers.contain(this.allowed, Level.TASK_STARTED)) {\n // @ts-ignore\n Display.msg.apply(void 0, [\n name,\n ...data,\n this.name,\n this.color,\n Level.TASK_STARTED,\n this.fixedWidth,\n this.isProductionMode,\n ]);\n }\n return this;\n }\n\n private _taskDone(name: string, ...data: any[]) {\n if (this.isMuted) return this;\n if (this.allowed.length >= 1 && Helpers.contain(this.allowed, Level.__NOTHING)\n && !Helpers.contain(this.allowed, Level.TASK_DONE)) return this;\n\n if (this.allowed.length === 0 || Helpers.contain(this.allowed, Level.TASK_DONE)) {\n // @ts-ignore\n Display.msg.apply(void 0, [\n name,\n ...data,\n this.name,\n this.color,\n Level.TASK_DONE,\n this.fixedWidth,\n this.isProductionMode,\n ]);\n }\n return this;\n }\n\n private _warn(name: string, ...data: any[]) {\n if (this.isMuted) return this;\n if (this.allowed.length >= 1 && Helpers.contain(this.allowed, Level.__NOTHING)\n && !Helpers.contain(this.allowed, Level.WARN)) return this;\n\n if (this.allowed.length === 0 || Helpers.contain(this.allowed, Level.WARN)) {\n // @ts-ignore\n Display.msg.apply(void 0, [\n name,\n ...data,\n this.name,\n this.color,\n Level.WARN,\n this.fixedWidth,\n this.isProductionMode,\n ])\n }\n return this;\n }\n\n\n /**\n * @see data\n */\n d = (name: string | any, ...data: any[]) => this._data(name, data);\n\n /**\n * @see error\n */\n\n er = (name: string | any, ...data: any[]) => this._error(name, data);\n\n /**\n * @see info\n */\n i = (name: string | any, ...data: any[]) => this._info(name, data);\n\n /**\n * @see warn\n */\n w = (name: string | any, ...data: any[]) => this._warn(name, data);\n\n /**\n * Logs message and data with the level=data\n * @param message The message\n * @param otherParams Additional parameters\n */\n data = (message: string, ...otherParams: any[]) => { return this._data(message, otherParams); };\n\n /**\n * Logs message and data with the level=error\n * @param message The message\n * @param otherParams Additional parameters\n */\n error = (message: string, ...otherParams: any[]) => this._error(message, otherParams);\n\n /**\n * Logs message and data with the level=info\n * @param message The message\n * @param otherParams Additional parameters\n */\n info = (message: string, ...otherParams: any[]) => this._info(message, otherParams);\n\n /**\n * Logs message and data with the level=success\n * @param message The message\n * @param otherParams Additional parameters\n */\n success = (message: string, ...otherParams: any[]) => this._success(message, otherParams);\n\n\n /**\n * Logs message and data with the level=taskStarted\n * @param message The message\n * @param otherParams Additional parameters\n */\n taskStarted = (message: string, ...otherParams: any[]) => this._taskStarted(message, otherParams);\n\n /**\n * Logs message and data with the level=taskDone\n * @param message The message\n * @param otherParams Additional parameters\n */\n taskDone = (message?: string, ...otherParams: any[]) => this._taskDone(message, otherParams);\n\n /**\n * Logs message and data with the level=warn\n * @param message The message\n * @param otherParams Additional parameters\n */\n warn = (message: string, ...otherParams: any[]) => this._warn(message, otherParams);\n\n}\n\n ;({}); // @--end-of-file-for-module=ng2-logger lib/logger.ts","\n\nimport { Logger } from './logger';\nimport { Level, LevelOrder, LevelKey } from './level';\nimport { Helpers } from 'tnp-core/browser';\n/* */\n/* */\n/* */\n \n\n\n/* */\n/* */\n \n\n\nexport class Log {\n\n private constructor() { }\n // @ts-ignore\n private static get instance(): any {\n // @ts-ignore\n if (!Log['_instance']) {\n // @ts-ignore\n Log['_instance'] = new Log();\n }\n // @ts-ignore\n return Log['_instance'];\n }\n\n\n static Logger: (typeof Logger) = Logger;\n static create(name: string, ...level: Level[]): Logger {\n return Log.instance.create(name, ...level);\n }\n\n private static readonly consolelogfn = {};\n static disableLogs(level = Level.__NOTHING) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n LevelOrder.reverse().find(a => {\n // @ts-ignore\n if (!this.consolelogfn[a]) {\n // @ts-ignore\n this.consolelogfn[a] = console[a];\n }\n // @ts-ignore\n console[a] = () => { };\n if (a === LevelKey[level]) {\n return true;\n }\n return false;\n });\n }\n\n static enableLogs() {\n/* */\n/* */\n/* */\n/* */\n \n LevelOrder.forEach(a => {\n // @ts-ignore\n console[a] = this.consolelogfn[a]\n });\n }\n\n private _logOnly = false;\n private _logModules = false;\n private isDevelopmentMode = true;\n private modeIsSet: boolean = false;\n private fixedWidth = 0;\n private instances: { [moduleName: string]: Logger } = {};\n private levels: Level[] = [];\n private modules: (string | RegExp)[] = [];\n\n\n public setProductionMode() {\n if (this.modeIsSet) {\n this.modeIsSet = false\n throw '[ng2-logger] Production mode is already set';\n } else {\n this.modeIsSet = true;\n setTimeout(() => {\n\n if (this.modeIsSet && console !== void 0 && console.clear !== void 0) {\n\n console.clear();\n console.log = () => { };\n console.error = () => { };\n console.warn = () => { };\n console.info = () => { };\n }\n });\n\n this.isDevelopmentMode = false;\n }\n }\n\n public onlyModules(...modules: (string | RegExp)[]) {\n if (this._logModules) {\n throw '[ng2-logger] You should use funcion onlyModules only once';\n }\n if (!this._logModules) {\n this._logModules = true;\n }\n if (modules.length === 0) return;\n this.modules = modules;\n\n this.muteAllOtherModules();\n }\n\n\n public onlyLevel(...level: Level[]) {\n if (this._logOnly) {\n throw '[ng2-logger] You should use funcion onlyLevel only once';\n }\n if (!this._logOnly) {\n this._logOnly = true;\n }\n\n this.levels = Array.isArray(level) ? level : [level];\n\n\n for (const logName in this.instances) {\n if (this.instances.hasOwnProperty(logName)) {\n const element = this.instances[logName];\n element['allowed'] = this.levels;\n }\n }\n }\n\n\n\n private create(name: string, ...level: Level[]): Logger {\n let i: Logger;\n if (Array.isArray(this.levels) && this.levels.length > 0) {\n level = this.levels;\n }\n if (this.instances[name] === void 0) {\n i = new (Log.Logger)(\n name,\n getRandomColor(),\n this.isDevelopmentMode,\n level,\n this.isMutedModule(name),\n this.levels.length > 0 ? this.fixedWidth : void 0,\n\n );\n this.instances[name] = i;\n } else {\n i = this.instances[name];\n }\n return i;\n }\n\n private isMutedModule(moduleName: string): boolean {\n if (this.modules.length == 0) return false;\n if (!Helpers.contain(this.modules, moduleName)) return true;\n return false;\n }\n private muteAllOtherModules() {\n for (var moduleName in this.instances) {\n if (!Helpers.contain(this.modules, moduleName))\n this.instances[moduleName].mute()\n }\n }\n\n}\n\n\nfunction getRandomColor(): string {\n/* */\n/* */\n/* */\n/* */\n \n\n let letters = '012345'.split('');\n let color = '#';\n color += letters[Math.round(Math.random() * 5)];\n letters = '0123456789ABCDEF'.split('');\n for (let i = 0; i < 5; i++) {\n color += letters[Math.round(Math.random() * 15)];\n }\n if (color === void 0) {\n return getRandomColor()\n };\n return color;\n}\n\n ;({}); // @--end-of-file-for-module=ng2-logger lib/log.ts","\n\nexport * from './log';\nexport * from './level';\nexport * from './logger';\nexport * from './display';\n\n ;({}); // @--end-of-file-for-module=ng2-logger lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng2-logger.mjs","sources":["../../../tmp-libs-for-dist/ng2-logger/projects/ng2-logger/src/lib/level.ts","../../../tmp-libs-for-dist/ng2-logger/projects/ng2-logger/src/lib/display.ts","../../../tmp-libs-for-dist/ng2-logger/projects/ng2-logger/src/lib/logger.ts","../../../tmp-libs-for-dist/ng2-logger/projects/ng2-logger/src/lib/log.ts","../../../tmp-libs-for-dist/ng2-logger/projects/ng2-logger/src/ng2-logger.ts"],"sourcesContent":["export enum Level {\n DATA,\n INFO,\n WARN,\n ERROR ,\n SUCCESS,\n TASK_STARTED,\n TASK_DONE,\n __NOTHING ,\n}\n\nexport const LevelKey = {\n [Level.DATA] : 'log',\n [Level.INFO] : 'info',\n [Level.WARN] : 'warn',\n [Level.ERROR] : 'error',\n [Level.SUCCESS] : 'success',\n [Level.TASK_STARTED] : 'taskstarted',\n [Level.TASK_DONE] : 'taskdone',\n [Level.__NOTHING] : '',\n}\n\nexport const LevelOrder = [\n LevelKey[Level.DATA],\n LevelKey[Level.TASK_STARTED],\n LevelKey[Level.TASK_DONE],\n LevelKey[Level.INFO],\n LevelKey[Level.SUCCESS],\n LevelKey[Level.WARN],\n LevelKey[Level.ERROR],\n];\n","/* */\n/* */\n \nimport { Level } from './level';\nimport { Helpers } from 'tnp-core/browser';\nimport { consoleLog, displayParams } from './backend-logging';\n\n/* */\n/* */\n \n\nexport class Display {\n\n static msg(\n message: string | any,\n params: any[],\n moduleName: string,\n moduleColor: string,\n level: Level,\n moduleWidth: number | undefined,\n isProductionMode: boolean\n ) {\n if (isProductionMode) {\n return;\n };\n let color = 'gray';\n if (level === Level.INFO) { color = 'deepskyblue'; }\n if (level === Level.ERROR) { color = 'red'; }\n if (level === Level.WARN) { color = 'orange'; }\n\n if (moduleWidth) {\n const diff = moduleWidth - moduleName.length;\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n moduleName += ' ';\n }\n }\n }\n\n //#region @browser\n if (Helpers.isBrowser\n/* */\n/* */\n \n ) {\n\n\n // @ts-ignore\n const isEdgeOrIe8orAbove = (document['documentMode'] || /Edge/.test(navigator.userAgent));\n\n if (isEdgeOrIe8orAbove) {\n if (typeof message === 'string') {\n let a1 = '[[ ' + moduleName + ' ]] ' + message + ' ';\n params.unshift(a1);\n } else {\n let a1 = '[[ ' + moduleName + ']] ';\n params.push(message);\n params.unshift(a1);\n }\n if (level === Level.INFO) {\n console.info.apply(console, params);\n } else if (level === Level.ERROR) {\n console.error.apply(console, params);\n } else if (level === Level.WARN) {\n console.warn.apply(console, params);\n } else {\n console.log.apply(console, params);\n }\n } else {\n if (typeof message === 'string') {\n let a1 = '%c ' + moduleName + ' %c ' + message + ' ';\n let a2 = 'background: ' + moduleColor + ';color:white; border: 1px solid ' + moduleColor + '; ';\n let a3 = 'border: 1px solid ' + color + '; ';\n params.unshift(a3);\n params.unshift(a2);\n params.unshift(a1);\n } else {\n let a1 = '%c ' + moduleName + ' ';\n let a2 = 'background: ' + moduleColor + ';color:white; border: 1px solid ' + color + '; ';\n params.push(message);\n params.unshift(a2);\n params.unshift(a1);\n }\n console.log.apply(console, params);\n }\n\n }\n //#endregion\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n }\n\n}\n","import { Level } from './level';\nimport { Display } from './display';\nimport { Helpers } from 'tnp-core/browser';\n\nexport class Logger {\n\n private _level: Level;\n public setLevel(l: Level) {\n this._level = l;\n return this;\n }\n\n public get isProductionMode() {\n return !this.developmentMode;\n }\n\n public setProductionMode(productionMode: boolean) {\n this.developmentMode = !productionMode;\n return this;\n }\n\n public mute() {\n this.isMuted = true;\n return this;\n }\n\n constructor(\n private name: string,\n public color: string,\n private developmentMode: boolean,\n private allowed: Level[],\n private isMuted: boolean,\n public fixedWidth: number | undefined\n ) { }\n\n onlyWhen(expression: (() => boolean) | boolean) {\n if (typeof expression === 'function') {\n this.isMuted = !expression()\n } else if (typeof expression === 'boolean') {\n this.isMuted = !expression;\n }\n }\n\n private _data(name: string, ...data: any[]) {\n if (this.isMuted) return this;\n if (this.allowed.length >= 1 && Helpers.contain(this.allowed, Level.__NOTHING)\n && !Helpers.contain(this.allowed, Level.DATA)) return this;\n\n if (this.allowed.length === 0 || Helpers.contain(this.allowed, Level.DATA)) {\n // @ts-ignore\n Display.msg.apply(void 0, [\n name,\n ...data,\n this.name,\n this.color,\n Level.DATA,\n this.fixedWidth,\n this.isProductionMode,\n ]);\n }\n return this;\n }\n\n\n private _error(name: string, ...data: any[]) {\n if (this.isMuted) return this;\n if (this.allowed.length >= 1 && Helpers.contain(this.allowed, Level.__NOTHING)\n && !Helpers.contain(this.allowed, Level.ERROR)) return this;\n\n if (this.allowed.length === 0 || Helpers.contain(this.allowed, Level.ERROR)) {\n // @ts-ignore\n Display.msg.apply(void 0, [\n name,\n ...data,\n this.name,\n this.color,\n Level.ERROR,\n this.fixedWidth,\n this.isProductionMode,\n ]);\n }\n return this;\n }\n\n private _info(name: string, ...data: any[]) {\n if (this.isMuted) return this;\n if (this.allowed.length >= 1 && Helpers.contain(this.allowed, Level.__NOTHING)\n && !Helpers.contain(this.allowed, Level.INFO)) return this;\n\n if (this.allowed.length === 0 || Helpers.contain(this.allowed, Level.INFO)) {\n // @ts-ignore\n Display.msg.apply(void 0, [\n name,\n ...data,\n this.name,\n this.color,\n Level.INFO,\n this.fixedWidth,\n this.isProductionMode,\n ]);\n }\n return this;\n }\n\n private _success(name: string, ...data: any[]) {\n if (this.isMuted) return this;\n if (this.allowed.length >= 1 && Helpers.contain(this.allowed, Level.__NOTHING)\n && !Helpers.contain(this.allowed, Level.SUCCESS)) return this;\n\n if (this.allowed.length === 0 || Helpers.contain(this.allowed, Level.SUCCESS)) {\n // @ts-ignore\n Display.msg.apply(void 0, [\n name,\n ...data,\n this.name,\n this.color,\n Level.SUCCESS,\n this.fixedWidth,\n this.isProductionMode,\n ]);\n }\n return this;\n }\n\n private _taskStarted(name: string, ...data: any[]) {\n if (this.isMuted) return this;\n if (this.allowed.length >= 1 && Helpers.contain(this.allowed, Level.__NOTHING)\n && !Helpers.contain(this.allowed, Level.TASK_STARTED)) return this;\n\n if (this.allowed.length === 0 || Helpers.contain(this.allowed, Level.TASK_STARTED)) {\n // @ts-ignore\n Display.msg.apply(void 0, [\n name,\n ...data,\n this.name,\n this.color,\n Level.TASK_STARTED,\n this.fixedWidth,\n this.isProductionMode,\n ]);\n }\n return this;\n }\n\n private _taskDone(name: string, ...data: any[]) {\n if (this.isMuted) return this;\n if (this.allowed.length >= 1 && Helpers.contain(this.allowed, Level.__NOTHING)\n && !Helpers.contain(this.allowed, Level.TASK_DONE)) return this;\n\n if (this.allowed.length === 0 || Helpers.contain(this.allowed, Level.TASK_DONE)) {\n // @ts-ignore\n Display.msg.apply(void 0, [\n name,\n ...data,\n this.name,\n this.color,\n Level.TASK_DONE,\n this.fixedWidth,\n this.isProductionMode,\n ]);\n }\n return this;\n }\n\n private _warn(name: string, ...data: any[]) {\n if (this.isMuted) return this;\n if (this.allowed.length >= 1 && Helpers.contain(this.allowed, Level.__NOTHING)\n && !Helpers.contain(this.allowed, Level.WARN)) return this;\n\n if (this.allowed.length === 0 || Helpers.contain(this.allowed, Level.WARN)) {\n // @ts-ignore\n Display.msg.apply(void 0, [\n name,\n ...data,\n this.name,\n this.color,\n Level.WARN,\n this.fixedWidth,\n this.isProductionMode,\n ])\n }\n return this;\n }\n\n\n /**\n * @see data\n */\n d = (name: string | any, ...data: any[]) => this._data(name, data);\n\n /**\n * @see error\n */\n\n er = (name: string | any, ...data: any[]) => this._error(name, data);\n\n /**\n * @see info\n */\n i = (name: string | any, ...data: any[]) => this._info(name, data);\n\n /**\n * @see warn\n */\n w = (name: string | any, ...data: any[]) => this._warn(name, data);\n\n /**\n * Logs message and data with the level=data\n * @param message The message\n * @param otherParams Additional parameters\n */\n data = (message: string, ...otherParams: any[]) => { return this._data(message, otherParams); };\n\n /**\n * Logs message and data with the level=error\n * @param message The message\n * @param otherParams Additional parameters\n */\n error = (message: string, ...otherParams: any[]) => this._error(message, otherParams);\n\n /**\n * Logs message and data with the level=info\n * @param message The message\n * @param otherParams Additional parameters\n */\n info = (message: string, ...otherParams: any[]) => this._info(message, otherParams);\n\n /**\n * Logs message and data with the level=success\n * @param message The message\n * @param otherParams Additional parameters\n */\n success = (message: string, ...otherParams: any[]) => this._success(message, otherParams);\n\n\n /**\n * Logs message and data with the level=taskStarted\n * @param message The message\n * @param otherParams Additional parameters\n */\n taskStarted = (message: string, ...otherParams: any[]) => this._taskStarted(message, otherParams);\n\n /**\n * Logs message and data with the level=taskDone\n * @param message The message\n * @param otherParams Additional parameters\n */\n taskDone = (message?: string, ...otherParams: any[]) => this._taskDone(message, otherParams);\n\n /**\n * Logs message and data with the level=warn\n * @param message The message\n * @param otherParams Additional parameters\n */\n warn = (message: string, ...otherParams: any[]) => this._warn(message, otherParams);\n\n}\n","import { Logger } from './logger';\nimport { Level, LevelOrder, LevelKey } from './level';\nimport { Helpers } from 'tnp-core/browser';\n/* */\n/* */\n/* */\n \n\n\n/* */\n/* */\n \n\n\nexport class Log {\n //#region singleton\n private constructor() { }\n // @ts-ignore\n private static get instance(): any {\n // @ts-ignore\n if (!Log['_instance']) {\n // @ts-ignore\n Log['_instance'] = new Log();\n }\n // @ts-ignore\n return Log['_instance'];\n }\n //#endregion\n\n static Logger: (typeof Logger) = Logger;\n static create(name: string, ...level: Level[]): Logger {\n return Log.instance.create(name, ...level);\n }\n\n private static readonly consolelogfn = {};\n static disableLogs(level = Level.__NOTHING) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n LevelOrder.reverse().find(a => {\n // @ts-ignore\n if (!this.consolelogfn[a]) {\n // @ts-ignore\n this.consolelogfn[a] = console[a];\n }\n // @ts-ignore\n console[a] = () => { };\n if (a === LevelKey[level]) {\n return true;\n }\n return false;\n });\n }\n\n static enableLogs() {\n/* */\n/* */\n/* */\n/* */\n \n LevelOrder.forEach(a => {\n // @ts-ignore\n console[a] = this.consolelogfn[a]\n });\n }\n\n private _logOnly = false;\n private _logModules = false;\n private isDevelopmentMode = true;\n private modeIsSet: boolean = false;\n private fixedWidth = 0;\n private instances: { [moduleName: string]: Logger } = {};\n private levels: Level[] = [];\n private modules: (string | RegExp)[] = [];\n\n //#region public api\n public setProductionMode() {\n if (this.modeIsSet) {\n this.modeIsSet = false\n throw '[ng2-logger] Production mode is already set';\n } else {\n this.modeIsSet = true;\n setTimeout(() => {\n\n if (this.modeIsSet && console !== void 0 && console.clear !== void 0) {\n\n console.clear();\n console.log = () => { };\n console.error = () => { };\n console.warn = () => { };\n console.info = () => { };\n }\n });\n\n this.isDevelopmentMode = false;\n }\n }\n\n public onlyModules(...modules: (string | RegExp)[]) {\n if (this._logModules) {\n throw '[ng2-logger] You should use funcion onlyModules only once';\n }\n if (!this._logModules) {\n this._logModules = true;\n }\n if (modules.length === 0) return;\n this.modules = modules;\n // console.log('only log this', Log.modules)\n this.muteAllOtherModules();\n }\n\n\n public onlyLevel(...level: Level[]) {\n if (this._logOnly) {\n throw '[ng2-logger] You should use funcion onlyLevel only once';\n }\n if (!this._logOnly) {\n this._logOnly = true;\n }\n\n this.levels = Array.isArray(level) ? level : [level];\n\n\n for (const logName in this.instances) {\n if (this.instances.hasOwnProperty(logName)) {\n const element = this.instances[logName];\n element['allowed'] = this.levels;\n }\n }\n }\n\n //#endregion\n\n private create(name: string, ...level: Level[]): Logger {\n let i: Logger;\n if (Array.isArray(this.levels) && this.levels.length > 0) {\n level = this.levels;\n }\n if (this.instances[name] === void 0) {\n i = new (Log.Logger)(\n name,\n getRandomColor(),\n this.isDevelopmentMode,\n level,\n this.isMutedModule(name),\n this.levels.length > 0 ? this.fixedWidth : void 0,\n // Log.levels.length > 0 ? Log.display : undefined,\n );\n this.instances[name] = i;\n } else {\n i = this.instances[name];\n }\n return i;\n }\n\n private isMutedModule(moduleName: string): boolean {\n if (this.modules.length == 0) return false;\n if (!Helpers.contain(this.modules, moduleName)) return true;\n return false;\n }\n private muteAllOtherModules() {\n for (var moduleName in this.instances) {\n if (!Helpers.contain(this.modules, moduleName))\n this.instances[moduleName].mute()\n }\n }\n\n}\n\n\nfunction getRandomColor(): string {\n/* */\n/* */\n/* */\n/* */\n \n\n let letters = '012345'.split('');\n let color = '#';\n color += letters[Math.round(Math.random() * 5)];\n letters = '0123456789ABCDEF'.split('');\n for (let i = 0; i < 5; i++) {\n color += letters[Math.round(Math.random() * 15)];\n }\n if (color === void 0) {\n return getRandomColor()\n };\n return color;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;IAAY;AAAZ,CAAA,UAAY,KAAK,EAAA;AACb,IAAA,KAAA,CAAA,KAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,KAAA,CAAA,KAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,KAAA,CAAA,KAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,KAAA,CAAA,KAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,KAAA,CAAA,KAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,KAAA,CAAA,KAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY;AACZ,IAAA,KAAA,CAAA,KAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS;AACT,IAAA,KAAA,CAAA,KAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS;AACb,CAAC,EATW,KAAK,KAAL,KAAK,GAShB,EAAA,CAAA,CAAA;AAEY,MAAA,QAAQ,GAAG;AACtB,IAAA,CAAC,KAAK,CAAC,IAAI,GAAI,KAAK;AACpB,IAAA,CAAC,KAAK,CAAC,IAAI,GAAI,MAAM;AACrB,IAAA,CAAC,KAAK,CAAC,IAAI,GAAI,MAAM;AACrB,IAAA,CAAC,KAAK,CAAC,KAAK,GAAI,OAAO;AACvB,IAAA,CAAC,KAAK,CAAC,OAAO,GAAI,SAAS;AAC3B,IAAA,CAAC,KAAK,CAAC,YAAY,GAAI,aAAa;AACpC,IAAA,CAAC,KAAK,CAAC,SAAS,GAAI,UAAU;AAC9B,IAAA,CAAC,KAAK,CAAC,SAAS,GAAI,EAAE;;AAGX,MAAA,UAAU,GAAG;AACxB,IAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACpB,IAAA,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;AAC5B,IAAA,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;AACzB,IAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACpB,IAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;AACvB,IAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACpB,IAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;;;AC7BvB;AACA;AAMA;AACA;MAGa,OAAO,CAAA;AAElB,IAAA,OAAO,GAAG,CACR,OAAqB,EACrB,MAAa,EACb,UAAkB,EAClB,WAAmB,EACnB,KAAY,EACZ,WAA+B,EAC/B,gBAAyB,EAAA;QAEzB,IAAI,gBAAgB,EAAE;YACpB;;QACD;QACD,IAAI,KAAK,GAAG,MAAM;AAClB,QAAA,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE;YAAE,KAAK,GAAG,aAAa;;AACjD,QAAA,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;YAAE,KAAK,GAAG,KAAK;;AAC1C,QAAA,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE;YAAE,KAAK,GAAG,QAAQ;;QAE5C,IAAI,WAAW,EAAE;AACf,YAAA,MAAM,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC,MAAM;AAC5C,YAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACZ,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;oBAC7B,UAAU,IAAI,GAAG;;;;;QAMvB,IAAI,OAAO,CAAC;;;UAIV;;AAIA,YAAA,MAAM,kBAAkB,IAAI,QAAQ,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAEzF,IAAI,kBAAkB,EAAE;AACtB,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;oBAC/B,IAAI,EAAE,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,GAAG;AACpD,oBAAA,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;;qBACb;AACL,oBAAA,IAAI,EAAE,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK;AACnC,oBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACpB,oBAAA,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;;AAEpB,gBAAA,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE;oBACxB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;;AAC9B,qBAAA,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;oBAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;;AAC/B,qBAAA,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE;oBAC/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;;qBAC9B;oBACL,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;;;iBAE/B;AACL,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;oBAC/B,IAAI,EAAE,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,GAAG;oBACrD,IAAI,EAAE,GAAG,cAAc,GAAG,WAAW,GAAG,kCAAkC,GAAG,WAAW,GAAG,IAAI;AAC/F,oBAAA,IAAI,EAAE,GAAG,oBAAoB,GAAG,KAAK,GAAG,IAAI;AAC5C,oBAAA,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AAClB,oBAAA,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AAClB,oBAAA,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;;qBACb;AACL,oBAAA,IAAI,EAAE,GAAG,KAAK,GAAG,UAAU,GAAG,GAAG;oBACjC,IAAI,EAAE,GAAG,cAAc,GAAG,WAAW,GAAG,kCAAkC,GAAG,KAAK,GAAG,IAAI;AACzF,oBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACpB,oBAAA,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AAClB,oBAAA,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;;gBAEpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;AAwBzC;;MCvGY,MAAM,CAAA;AAGV,IAAA,QAAQ,CAAC,CAAQ,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC;AACf,QAAA,OAAO,IAAI;;AAGb,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,CAAC,IAAI,CAAC,eAAe;;AAGvB,IAAA,iBAAiB,CAAC,cAAuB,EAAA;AAC9C,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,cAAc;AACtC,QAAA,OAAO,IAAI;;IAGN,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,OAAO,IAAI;;IAGb,WACU,CAAA,IAAY,EACb,KAAa,EACZ,eAAwB,EACxB,OAAgB,EAChB,OAAgB,EACjB,UAA8B,EAAA;QAL7B,IAAI,CAAA,IAAA,GAAJ,IAAI;QACL,IAAK,CAAA,KAAA,GAAL,KAAK;QACJ,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAO,CAAA,OAAA,GAAP,OAAO;QACR,IAAU,CAAA,UAAA,GAAV,UAAU;AAyJnB;;AAEE;AACF,QAAA,IAAA,CAAA,CAAC,GAAG,CAAC,IAAkB,EAAE,GAAG,IAAW,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AAElE;;AAEE;AAEF,QAAA,IAAA,CAAA,EAAE,GAAG,CAAC,IAAkB,EAAE,GAAG,IAAW,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;AAEpE;;AAEE;AACF,QAAA,IAAA,CAAA,CAAC,GAAG,CAAC,IAAkB,EAAE,GAAG,IAAW,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AAElE;;AAEE;AACF,QAAA,IAAA,CAAA,CAAC,GAAG,CAAC,IAAkB,EAAE,GAAG,IAAW,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AAElE;;;;AAIG;QACH,IAAI,CAAA,IAAA,GAAG,CAAC,OAAe,EAAE,GAAG,WAAkB,KAAO,EAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE;AAE/F;;;;AAIG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,CAAC,OAAe,EAAE,GAAG,WAAkB,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC;AAErF;;;;AAIG;AACH,QAAA,IAAA,CAAA,IAAI,GAAG,CAAC,OAAe,EAAE,GAAG,WAAkB,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC;AAEnF;;;;AAIG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,OAAe,EAAE,GAAG,WAAkB,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;AAGzF;;;;AAIE;AACF,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,OAAe,EAAE,GAAG,WAAkB,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC;AAEjG;;;;AAIE;AACF,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,OAAgB,EAAE,GAAG,WAAkB,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC;AAE5F;;;;AAIG;AACH,QAAA,IAAA,CAAA,IAAI,GAAG,CAAC,OAAe,EAAE,GAAG,WAAkB,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC;;AA3NnF,IAAA,QAAQ,CAAC,UAAqC,EAAA;AAC5C,QAAA,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;AACpC,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,UAAU,EAAE;;AACvB,aAAA,IAAI,OAAO,UAAU,KAAK,SAAS,EAAE;AAC1C,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,UAAU;;;AAItB,IAAA,KAAK,CAAC,IAAY,EAAE,GAAG,IAAW,EAAA;QACxC,IAAI,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS;eACxE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,IAAI;QAE5D,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;;AAE1E,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAI;AACJ,gBAAA,GAAG,IAAI;AACP,gBAAA,IAAI,CAAC,IAAI;AACT,gBAAA,IAAI,CAAC,KAAK;AACV,gBAAA,KAAK,CAAC,IAAI;AACV,gBAAA,IAAI,CAAC,UAAU;AACf,gBAAA,IAAI,CAAC,gBAAgB;AACtB,aAAA,CAAC;;AAEJ,QAAA,OAAO,IAAI;;AAIL,IAAA,MAAM,CAAC,IAAY,EAAE,GAAG,IAAW,EAAA;QACzC,IAAI,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS;eACxE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;QAE7D,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;;AAE3E,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAI;AACJ,gBAAA,GAAG,IAAI;AACP,gBAAA,IAAI,CAAC,IAAI;AACT,gBAAA,IAAI,CAAC,KAAK;AACV,gBAAA,KAAK,CAAC,KAAK;AACX,gBAAA,IAAI,CAAC,UAAU;AACf,gBAAA,IAAI,CAAC,gBAAgB;AACtB,aAAA,CAAC;;AAEJ,QAAA,OAAO,IAAI;;AAGL,IAAA,KAAK,CAAC,IAAY,EAAE,GAAG,IAAW,EAAA;QACxC,IAAI,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS;eACxE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,IAAI;QAE5D,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;;AAE1E,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAI;AACJ,gBAAA,GAAG,IAAI;AACP,gBAAA,IAAI,CAAC,IAAI;AACT,gBAAA,IAAI,CAAC,KAAK;AACV,gBAAA,KAAK,CAAC,IAAI;AACV,gBAAA,IAAI,CAAC,UAAU;AACf,gBAAA,IAAI,CAAC,gBAAgB;AACtB,aAAA,CAAC;;AAEJ,QAAA,OAAO,IAAI;;AAGL,IAAA,QAAQ,CAAC,IAAY,EAAE,GAAG,IAAW,EAAA;QAC3C,IAAI,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS;eACxE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;AAAE,YAAA,OAAO,IAAI;QAE/D,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;;AAE7E,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAI;AACJ,gBAAA,GAAG,IAAI;AACP,gBAAA,IAAI,CAAC,IAAI;AACT,gBAAA,IAAI,CAAC,KAAK;AACV,gBAAA,KAAK,CAAC,OAAO;AACb,gBAAA,IAAI,CAAC,UAAU;AACf,gBAAA,IAAI,CAAC,gBAAgB;AACtB,aAAA,CAAC;;AAEJ,QAAA,OAAO,IAAI;;AAGL,IAAA,YAAY,CAAC,IAAY,EAAE,GAAG,IAAW,EAAA;QAC/C,IAAI,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS;eACxE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC;AAAE,YAAA,OAAO,IAAI;QAEpE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE;;AAElF,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAI;AACJ,gBAAA,GAAG,IAAI;AACP,gBAAA,IAAI,CAAC,IAAI;AACT,gBAAA,IAAI,CAAC,KAAK;AACV,gBAAA,KAAK,CAAC,YAAY;AAClB,gBAAA,IAAI,CAAC,UAAU;AACf,gBAAA,IAAI,CAAC,gBAAgB;AACtB,aAAA,CAAC;;AAEJ,QAAA,OAAO,IAAI;;AAGL,IAAA,SAAS,CAAC,IAAY,EAAE,GAAG,IAAW,EAAA;QAC5C,IAAI,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS;eACxE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;AAAE,YAAA,OAAO,IAAI;QAEjE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE;;AAE/E,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAI;AACJ,gBAAA,GAAG,IAAI;AACP,gBAAA,IAAI,CAAC,IAAI;AACT,gBAAA,IAAI,CAAC,KAAK;AACV,gBAAA,KAAK,CAAC,SAAS;AACf,gBAAA,IAAI,CAAC,UAAU;AACf,gBAAA,IAAI,CAAC,gBAAgB;AACtB,aAAA,CAAC;;AAEJ,QAAA,OAAO,IAAI;;AAGL,IAAA,KAAK,CAAC,IAAY,EAAE,GAAG,IAAW,EAAA;QACxC,IAAI,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS;eACxE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,IAAI;QAE5D,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;;AAE1E,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAI;AACJ,gBAAA,GAAG,IAAI;AACP,gBAAA,IAAI,CAAC,IAAI;AACT,gBAAA,IAAI,CAAC,KAAK;AACV,gBAAA,KAAK,CAAC,IAAI;AACV,gBAAA,IAAI,CAAC,UAAU;AACf,gBAAA,IAAI,CAAC,gBAAgB;AACtB,aAAA,CAAC;;AAEJ,QAAA,OAAO,IAAI;;AA2Ed;;AC7PD;AACA;AACA;AAIA;AACA;MAIa,GAAG,CAAA;;AAEd,IAAA,WAAA,GAAA;QAuDQ,IAAQ,CAAA,QAAA,GAAG,KAAK;QAChB,IAAW,CAAA,WAAA,GAAG,KAAK;QACnB,IAAiB,CAAA,iBAAA,GAAG,IAAI;QACxB,IAAS,CAAA,SAAA,GAAY,KAAK;QAC1B,IAAU,CAAA,UAAA,GAAG,CAAC;QACd,IAAS,CAAA,SAAA,GAAqC,EAAE;QAChD,IAAM,CAAA,MAAA,GAAY,EAAE;QACpB,IAAO,CAAA,OAAA,GAAwB,EAAE;;;AA5DjC,IAAA,WAAW,QAAQ,GAAA;;AAEzB,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;;AAErB,YAAA,GAAG,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,EAAE;;;AAG9B,QAAA,OAAO,GAAG,CAAC,WAAW,CAAC;;;aAIlB,IAAM,CAAA,MAAA,GAAoB,MAApB,CAA2B;AACxC,IAAA,OAAO,MAAM,CAAC,IAAY,EAAE,GAAG,KAAc,EAAA;QAC3C,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC;;aAGpB,IAAY,CAAA,YAAA,GAAG,EAAH,CAAM;AAC1C,IAAA,OAAO,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,EAAA;;;;;;;;QASxC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAG;;YAE5B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;;gBAEzB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;;;YAGnC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAK,GAAI;AACtB,YAAA,IAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,EAAE;AACzB,gBAAA,OAAO,IAAI;;AAEb,YAAA,OAAO,KAAK;AACd,SAAC,CAAC;;AAGJ,IAAA,OAAO,UAAU,GAAA;;;;;AAMf,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;;YAErB,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACnC,SAAC,CAAC;;;IAaG,iBAAiB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,YAAA,MAAM,6CAA6C;;aAC9C;AACL,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;YACrB,UAAU,CAAC,MAAK;AAEd,gBAAA,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;oBAEpE,OAAO,CAAC,KAAK,EAAE;AACf,oBAAA,OAAO,CAAC,GAAG,GAAG,MAAK,GAAI;AACvB,oBAAA,OAAO,CAAC,KAAK,GAAG,MAAK,GAAI;AACzB,oBAAA,OAAO,CAAC,IAAI,GAAG,MAAK,GAAI;AACxB,oBAAA,OAAO,CAAC,IAAI,GAAG,MAAK,GAAI;;AAE5B,aAAC,CAAC;AAEF,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;;;IAI3B,WAAW,CAAC,GAAG,OAA4B,EAAA;AAChD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,MAAM,2DAA2D;;AAEnE,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;AAEzB,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;;QAEtB,IAAI,CAAC,mBAAmB,EAAE;;IAIrB,SAAS,CAAC,GAAG,KAAc,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,yDAAyD;;AAEjE,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAGtB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;AAGpD,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YACpC,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACvC,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM;;;;;AAO9B,IAAA,MAAM,CAAC,IAAY,EAAE,GAAG,KAAc,EAAA;AAC5C,QAAA,IAAI,CAAS;AACb,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACxD,YAAA,KAAK,GAAG,IAAI,CAAC,MAAM;;QAErB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;YACnC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,EACjB,IAAI,EACJ,cAAc,EAAE,EAChB,IAAI,CAAC,iBAAiB,EACtB,KAAK,EACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EACxB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAElD;AACD,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;;aACnB;AACL,YAAA,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;AAE1B,QAAA,OAAO,CAAC;;AAGF,IAAA,aAAa,CAAC,UAAkB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;AAAE,YAAA,OAAO,KAAK;QAC1C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;AAAE,YAAA,OAAO,IAAI;AAC3D,QAAA,OAAO,KAAK;;IAEN,mBAAmB,GAAA;AACzB,QAAA,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;gBAC5C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE;;;;AAOzC,SAAS,cAAc,GAAA;;;;;IAOrB,IAAI,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IAChC,IAAI,KAAK,GAAG,GAAG;AACf,IAAA,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAC/C,IAAA,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;AACtC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,QAAA,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;;AAElD,IAAA,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;QACpB,OAAO,cAAc,EAAE;;IACxB;AACD,IAAA,OAAO,KAAK;AACd;;ACjMA;;AAEG;;;;"}
|