ng2-logger 13.1.25 → 16.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +192 -192
  2. package/assets/shared/shared_folder_info.txt +1 -1
  3. package/browser/README.md +24 -24
  4. package/browser/esm2022/lib/log.mjs +162 -0
  5. package/browser/esm2022/lib/logger.mjs +237 -0
  6. package/{client/fesm2015 → browser/fesm2022}/ng2-logger.mjs +18 -17
  7. package/browser/{fesm2020 → fesm2022}/ng2-logger.mjs.map +1 -1
  8. package/browser/package.json +6 -12
  9. package/client/README.md +24 -24
  10. package/client/esm2022/lib/log.mjs +162 -0
  11. package/client/esm2022/lib/logger.mjs +237 -0
  12. package/{browser/fesm2020 → client/fesm2022}/ng2-logger.mjs +18 -17
  13. package/client/{fesm2020 → fesm2022}/ng2-logger.mjs.map +1 -1
  14. package/client/package.json +84 -82
  15. package/index.js.map +1 -1
  16. package/lib/backend-logging.js.map +1 -1
  17. package/lib/display.js.map +1 -1
  18. package/lib/index.js.map +1 -1
  19. package/lib/level.js.map +1 -1
  20. package/lib/log.js +1 -2
  21. package/lib/log.js.map +1 -1
  22. package/lib/logger.js.map +1 -1
  23. package/package.json +3 -3
  24. package/package.json_devDependencies.json +184 -184
  25. package/package.json_tnp.json5 +54 -54
  26. package/tmp-environment.json +89 -87
  27. package/websql/README.md +24 -24
  28. package/websql/esm2022/lib/log.mjs +162 -0
  29. package/websql/esm2022/lib/logger.mjs +237 -0
  30. package/websql/{fesm2015 → fesm2022}/ng2-logger.mjs +18 -17
  31. package/websql/{fesm2020 → fesm2022}/ng2-logger.mjs.map +1 -1
  32. package/websql/package.json +6 -12
  33. package/browser/esm2020/lib/log.mjs +0 -161
  34. package/browser/esm2020/lib/logger.mjs +0 -237
  35. package/browser/fesm2015/ng2-logger.mjs +0 -530
  36. package/browser/fesm2015/ng2-logger.mjs.map +0 -1
  37. package/client/esm2020/lib/log.mjs +0 -161
  38. package/client/esm2020/lib/logger.mjs +0 -237
  39. package/client/fesm2015/ng2-logger.mjs.map +0 -1
  40. package/client/fesm2020/ng2-logger.mjs +0 -530
  41. package/websql/esm2020/lib/log.mjs +0 -161
  42. package/websql/esm2020/lib/logger.mjs +0 -237
  43. package/websql/fesm2015/ng2-logger.mjs.map +0 -1
  44. package/websql/fesm2020/ng2-logger.mjs +0 -530
  45. /package/browser/{esm2020 → esm2022}/lib/backend-logging.mjs +0 -0
  46. /package/browser/{esm2020 → esm2022}/lib/display.mjs +0 -0
  47. /package/browser/{esm2020 → esm2022}/lib/index.mjs +0 -0
  48. /package/browser/{esm2020 → esm2022}/lib/level.mjs +0 -0
  49. /package/browser/{esm2020 → esm2022}/ng2-logger.mjs +0 -0
  50. /package/browser/{esm2020 → esm2022}/public-api.mjs +0 -0
  51. /package/browser/{ng2-logger.d.ts → index.d.ts} +0 -0
  52. /package/client/{esm2020 → esm2022}/lib/backend-logging.mjs +0 -0
  53. /package/client/{esm2020 → esm2022}/lib/display.mjs +0 -0
  54. /package/client/{esm2020 → esm2022}/lib/index.mjs +0 -0
  55. /package/client/{esm2020 → esm2022}/lib/level.mjs +0 -0
  56. /package/client/{esm2020 → esm2022}/ng2-logger.mjs +0 -0
  57. /package/client/{esm2020 → esm2022}/public-api.mjs +0 -0
  58. /package/client/{ng2-logger.d.ts → index.d.ts} +0 -0
  59. /package/websql/{esm2020 → esm2022}/lib/backend-logging.mjs +0 -0
  60. /package/websql/{esm2020 → esm2022}/lib/display.mjs +0 -0
  61. /package/websql/{esm2020 → esm2022}/lib/index.mjs +0 -0
  62. /package/websql/{esm2020 → esm2022}/lib/level.mjs +0 -0
  63. /package/websql/{esm2020 → esm2022}/ng2-logger.mjs +0 -0
  64. /package/websql/{esm2020 → esm2022}/public-api.mjs +0 -0
  65. /package/websql/{ng2-logger.d.ts → index.d.ts} +0 -0
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "smartContainerTarget": "",
36
36
  "type": "isomorphic-lib",
37
- "version": "v3",
37
+ "version": "v4",
38
38
  "additionalNpmNames": [
39
39
  "firedev-logger"
40
40
  ],
@@ -55,7 +55,7 @@
55
55
  ]
56
56
  },
57
57
  "name": "ng2-logger",
58
- "version": "13.1.25",
58
+ "version": "16.0.2",
59
59
  "description": "isomorphic logger for browser/server in typescript",
60
60
  "repository": {
61
61
  "type": "git",
@@ -85,53 +85,55 @@
85
85
  "json-stringify-safe": "5.0.1",
86
86
  "json5": "2.2.1",
87
87
  "randomcolor": "0.5.3",
88
- "tnp-config": "~13.1.76"
88
+ "tnp-config": "~16.0.3"
89
89
  },
90
90
  "license": "MIT",
91
91
  "private": false,
92
- "lastBuildTagHash": "c379645780b8327138fd954ae073a76db5a53dc0",
92
+ "lastBuildTagHash": "6e43e4dd43aa36343a8b6716032ddf0889cf340e",
93
93
  "peerDependencies": {},
94
94
  "devDependencies": {
95
- "@angular-devkit/build-angular": "~13.3.9",
96
- "@angular-devkit/core": "~13.3.9",
95
+ "@angular-devkit/build-angular": "~16.0.5",
96
+ "@angular-devkit/core": "~16.0.5",
97
97
  "@angular-material-extensions/fab-menu": "~6.1.0",
98
- "@angular/animations": "~13.3.0",
99
- "@angular/cdk": "~13.3.9",
100
- "@angular/cli": "~13.3.9",
101
- "@angular/common": "~13.3.0",
102
- "@angular/compiler": "~13.3.0",
103
- "@angular/compiler-cli": "~13.3.0",
104
- "@angular/core": "~13.3.0",
105
- "@angular/elements": "~13.3.0",
106
- "@angular/flex-layout": "~13.0.0-beta.38",
107
- "@angular/forms": "~13.3.0",
108
- "@angular/material": "~13.3.9",
109
- "@angular/platform-browser": "~13.3.0",
110
- "@angular/platform-browser-dynamic": "~13.3.0",
111
- "@angular/pwa": "~13.3.9",
112
- "@angular/router": "~13.3.0",
113
- "@angular/service-worker": "~13.3.11",
98
+ "@angular/animations": "~16.0.0",
99
+ "@angular/cdk": "~16.0.3",
100
+ "@angular/cli": "~16.0.5",
101
+ "@angular/common": "~16.0.0",
102
+ "@angular/compiler": "~16.0.0",
103
+ "@angular/compiler-cli": "~16.0.4",
104
+ "@angular/core": "~16.0.0",
105
+ "@angular/elements": "~16.0.4",
106
+ "@angular/forms": "~16.0.0",
107
+ "@angular/material": "~16.0.3",
108
+ "@angular/platform-browser": "~16.0.4",
109
+ "@angular/platform-browser-dynamic": "~16.0.4",
110
+ "@angular/pwa": "~16.0.5",
111
+ "@angular/router": "~16.0.0",
112
+ "@angular/service-worker": "~16.0.4",
114
113
  "@babel/cli": "7.18.6",
115
114
  "@iconify/icons-fa-solid": "1.2.2",
116
115
  "@iconify/icons-mdi": "1.2.1",
117
- "@mdi/js": "6.5.95",
118
- "@ng-matero/extensions": "13.3.2",
116
+ "@mdi/js": "7.2.96",
117
+ "@ng-matero/extensions": "16.0.0",
119
118
  "@ngneat/falso": "6.4.0",
120
- "@ngneat/hot-toast": "4",
121
- "@ngneat/overview": "3.0.0",
122
- "@ngneat/until-destroy": "9.2.3",
123
- "@ngrx/component-store": "~13.0.2",
124
- "@ngrx/data": "~13.0.2",
125
- "@ngrx/effects": "~13.0.2",
126
- "@ngrx/entity": "~13.0.2",
127
- "@ngrx/router-store": "~13.0.2",
128
- "@ngrx/schematics": "~13.0.2",
129
- "@ngrx/store": "~13.0.2",
130
- "@ngrx/store-devtools": "~13.0.2",
131
- "@ngx-formly/core": "6.0.0-next.8",
132
- "@ngx-formly/material": "6.0.0-next.8",
133
- "@ngx-translate/core": "14.0.0",
134
- "@ngx-translate/http-loader": "7.0.0",
119
+ "@ngneat/hot-toast": "5.0.1",
120
+ "@ngneat/overview": "5.0.0",
121
+ "@ngneat/spectator": "15.0.0",
122
+ "@ngrx/component-store": "~16.0.1",
123
+ "@ngrx/data": "~16.0.1",
124
+ "@ngrx/effects": "~16.0.1",
125
+ "@ngrx/entity": "~16.0.1",
126
+ "@ngrx/router-store": "~16.0.1",
127
+ "@ngrx/schematics": "~16.0.1",
128
+ "@ngrx/store": "~16.0.1",
129
+ "@ngrx/store-devtools": "~16.0.1",
130
+ "@ngx-formly/core": "6.1.7",
131
+ "@ngx-formly/material": "6.1.7",
132
+ "@ngx-translate/core": "15.0.0",
133
+ "@ngx-translate/http-loader": "8.0.0",
134
+ "@testdeck/jasmine": "0.3.3",
135
+ "@testdeck/jest": "0.3.3",
136
+ "@testdeck/mocha": "0.3.3",
135
137
  "@types/chai": "4.1.2",
136
138
  "@types/chokidar": "2.1.3",
137
139
  "@types/dateformat": "1.0.1",
@@ -143,7 +145,7 @@
143
145
  "@types/http-proxy": "1.16.0",
144
146
  "@types/http-proxy-middleware": "0.19.2",
145
147
  "@types/inquirer": "7.3.1",
146
- "@types/jasmine": "3.10.0",
148
+ "@types/jasmine": "4.3.0",
147
149
  "@types/json-stringify-safe": "5.0.0",
148
150
  "@types/json5": "0.0.29",
149
151
  "@types/lockfile": "1.0.0",
@@ -162,10 +164,10 @@
162
164
  "@types/vinyl": "2.0.2",
163
165
  "@types/watch": "1.0.0",
164
166
  "accepts": "1.3.4",
165
- "angular-material-css-vars": "5.0.0",
166
- "any-project-cli": "~13.1.27",
167
+ "angular-material-css-vars": "5.0.2",
168
+ "any-project-cli": "~13.1.28",
167
169
  "axios": "1.3.5",
168
- "background-worker-process": "~13.1.44",
170
+ "background-worker-process": "~13.1.45",
169
171
  "base32": "0.0.7",
170
172
  "bcryptjs": "2.4.3",
171
173
  "better-sqlite3": "7.6.2",
@@ -205,13 +207,13 @@
205
207
  "express-session": "1.17.3",
206
208
  "file-loader": "1.1.5",
207
209
  "file-saver": "2.0.5",
208
- "firedev": "^13",
209
- "firedev-crud": "~13.1.49",
210
- "firedev-crud-deamon": "~13.1.39",
211
- "firedev-ports": "~13.1.44",
212
- "firedev-storage": "~13.2.36",
213
- "firedev-typeorm": "~13.1.31",
214
- "firedev-ui": "~13.2.9",
210
+ "firedev": "^16",
211
+ "firedev-crud": "~13.1.50",
212
+ "firedev-crud-deamon": "~13.1.40",
213
+ "firedev-ports": "~13.1.45",
214
+ "firedev-storage": "~13.2.37",
215
+ "firedev-typeorm": "~13.1.32",
216
+ "firedev-ui": "~16.0.1",
215
217
  "fkill": "6.1.0",
216
218
  "font-awesome": "4.7.0",
217
219
  "form-data": "4.0.0",
@@ -225,50 +227,50 @@
225
227
  "http-proxy-middleware": "0.19.1",
226
228
  "http-server": "0.11.1",
227
229
  "immutable": "4.3.0",
228
- "incremental-compiler": "~13.1.25",
230
+ "incremental-compiler": "~13.1.26",
229
231
  "inquirer": "7.3.3",
230
232
  "inquirer-autocomplete-prompt": "1.3.0",
231
233
  "is-elevated": "3.0.0",
232
- "isomorphic-region-loader": "~13.1.37",
234
+ "isomorphic-region-loader": "~13.1.38",
233
235
  "istanbul-instrumenter-loader": "2.0.0",
234
- "jasmine-core": "4.0.0",
236
+ "jasmine-core": "4.6.0",
235
237
  "jscodeshift": "0.6.3",
236
- "json10": "~13.1.44",
237
- "json10-writer": "~13.1.40",
238
+ "json10": "~13.1.45",
239
+ "json10-writer": "~13.1.41",
238
240
  "json5-writer": "0.2.0",
239
241
  "jszip": "3.10.1",
240
- "karma": "6.3.0",
241
- "karma-chrome-launcher": "3.1.0",
242
+ "karma": "6.4.0",
243
+ "karma-chrome-launcher": "3.2.0",
242
244
  "karma-cli": "1.0.1",
243
- "karma-coverage": "2.1.0",
244
- "karma-jasmine": "4.0.0",
245
- "karma-jasmine-html-reporter": "1.7.0",
245
+ "karma-coverage": "2.2.0",
246
+ "karma-jasmine": "5.1.0",
247
+ "karma-jasmine-html-reporter": "2.0.0",
246
248
  "lnk": "1.0.1",
247
249
  "localforage": "1.10.0",
248
250
  "lockfile": "1.0.4",
249
251
  "lodash": "4.17.20",
250
- "lodash-walk-object": "~13.1.44",
252
+ "lodash-walk-object": "~13.1.45",
251
253
  "lowdb": "1.0.0",
252
- "magic-renamer": "~13.1.41",
254
+ "magic-renamer": "~13.1.42",
253
255
  "material-design-icons": "3.0.1",
254
256
  "method-override": "2.3.10",
255
257
  "minimist": "1.2.0",
256
258
  "mkdirp": "0.5.1",
257
259
  "mocha": "5.2.0",
258
260
  "moment": "2.29.3",
259
- "morphi": "~13.2.11",
260
- "ng-in-viewport": "13.0.1",
261
- "ng-packagr": "13.0.0",
261
+ "morphi": "~16.0.2",
262
+ "ng-in-viewport": "15.0.2",
263
+ "ng-packagr": "16.0.1",
262
264
  "ng-talkback": "~13.1.19",
263
- "ng2-logger": "~13.1.24",
264
- "ng2-rest": "~13.2.8",
265
- "ngx-ace-wrapper": "12",
266
- "ngx-editor": "12.2.1",
267
- "ngx-highlightjs": "6.1.3",
265
+ "ng2-logger": "~13.1.25",
266
+ "ng2-rest": "~13.2.9",
267
+ "ngx-ace-wrapper": "14.0.0",
268
+ "ngx-editor": "15.3.0",
269
+ "ngx-highlightjs": "9.0.0",
268
270
  "ngx-moment": "6.0.2",
269
271
  "ngx-pipes": "3.0.0",
270
- "ngx-progressbar": "8.0.0",
271
- "ngx-scrollbar": "9.0.2",
272
+ "ngx-progressbar": "11.0.0",
273
+ "ngx-scrollbar": "12.0.0",
272
274
  "ngx-store": "3.1.1",
273
275
  "ngx-typed-js": "2.1.1",
274
276
  "node-cli-tester": "~13.1.19",
@@ -294,32 +296,32 @@
294
296
  "record-replay-req-res-scenario": "~13.1.20",
295
297
  "reflect-metadata": "0.1.10",
296
298
  "rimraf": "2.6.2",
297
- "rxjs": "~7.5.0",
299
+ "rxjs": "~7.8.0",
298
300
  "semver": "6.3.0",
299
301
  "simple-git": "1.96.0",
300
302
  "sloc": "0.2.0",
301
303
  "socket.io": "2.4.1",
302
304
  "sort-package-json": "1.11.0",
303
305
  "sql.js": "1.8.0",
304
- "static-columns": "~13.3.8",
306
+ "static-columns": "~16.0.1",
305
307
  "string-similarity": "4.0.2",
306
308
  "sudo-block": "3.0.0",
307
309
  "systeminformation": "3.45.7",
308
310
  "task.js": "0.1.5",
309
311
  "threads": "1.7.0",
310
- "tnp-cli": "~13.1.59",
311
- "tnp-core": "~13.2.20",
312
- "tnp-db": "~13.1.21",
313
- "tnp-helpers": "~13.1.38",
314
- "tnp-models": "~13.1.27",
312
+ "tnp-cli": "~13.1.60",
313
+ "tnp-core": "~16.0.6",
314
+ "tnp-db": "~13.1.22",
315
+ "tnp-helpers": "~13.1.39",
316
+ "tnp-models": "~13.1.28",
315
317
  "ts-debug": "1.3.0",
316
318
  "ts-loader": "2.3.1",
317
- "ts-node": "10.7.0",
319
+ "ts-node": "10.9.1",
318
320
  "tslib": "~2.3.0",
319
321
  "turndown": "7.1.2",
320
322
  "typeorm": "~0.3.10",
321
- "typescript": "~4.6.2",
322
- "typescript-class-helpers": "~13.2.12",
323
+ "typescript": "~5.0.2",
324
+ "typescript-class-helpers": "~13.2.13",
323
325
  "typescript-formatter": "~7.2.2",
324
326
  "underscore": "1.9.1",
325
327
  "uuid": "8.3.2",
@@ -328,13 +330,13 @@
328
330
  "vpn-split": "~13.1.23",
329
331
  "watch": "1.0.2",
330
332
  "yup": "1.1.1",
331
- "zone.js": "~0.11.4"
333
+ "zone.js": "~0.13.0"
332
334
  }
333
335
  },
334
336
  "build": {
335
- "number": 552,
336
- "date": "2023-06-04T12:36:18.000Z",
337
- "hash": "6e43e4dd43aa36343a8b6716032ddf0889cf340e",
337
+ "number": 555,
338
+ "date": "2023-06-08T21:16:17.000Z",
339
+ "hash": "5af901f954f14bbd8987e812186639d519366b39",
338
340
  "options": {}
339
341
  },
340
342
  "currentProjectName": "ng2-logger",
@@ -342,7 +344,7 @@
342
344
  "currentProjectLaunchConfiguration": "{\"version\":\"0.2.0\",\"configurations\":[{\"type\":\"node\",\"request\":\"launch\",\"name\":\"Launch Server standalone\",\"program\":\"${workspaceFolder}/run.js\",\"args\":[\"--ENVoverride=%7B%0A%20%20%20%20%22clientProjectName%22%3A%20%22ng2-logger%22%0A%7D\"],\"runtimeArgs\":[\"--nolazy\",\"-r\",\"ts-node/register\",\"--experimental-worker\"]},{\"name\":\"Debugger with ng serve\",\"type\":\"chrome\",\"request\":\"launch\",\"preLaunchTask\":\"Ng Serve\",\"postDebugTask\":\"terminateall\",\"sourceMaps\":true,\"webRoot\":\"${workspaceFolder}\",\"sourceMapPathOverrides\":{\"webpack:/*\":\"${webRoot}/*\",\"/./*\":\"${webRoot}/*\",\"/tmp-src/*\":\"${webRoot}/*\",\"/*\":\"*\",\"/./~/*\":\"${webRoot}/node_modules/*\"}},{\"type\":\"node\",\"request\":\"attach\",\"name\":\"Attach to global cli tool\",\"port\":9229,\"skipFiles\":[\"<node_internals>/**\"]}],\"compounds\":[{\"name\":\"Debug backend/frontend\",\"configurations\":[\"Launch Server standalone\",\"Debugger with ng serve\"]}]}",
343
345
  "currentProjectTasksConfiguration": "{\"version\":\"2.0.0\",\"tasks\":[{\"label\":\"terminateall\",\"command\":\"echo ${input:terminate}\",\"type\":\"shell\",\"problemMatcher\":[]},{\"label\":\"Ng Serve\",\"type\":\"shell\",\"command\":\"tnp build\",\"isBackground\":true,\"presentation\":{\"reveal\":\"always\"},\"group\":{\"kind\":\"build\",\"isDefault\":true},\"problemMatcher\":{\"owner\":\"typescript\",\"source\":\"ts\",\"applyTo\":\"closedDocuments\",\"fileLocation\":[\"relative\",\"${cwd}\"],\"pattern\":\"$tsc\",\"background\":{\"activeOnStart\":true,\"beginsPattern\":{\"regexp\":\"(.*?)\"},\"endsPattern\":{\"regexp\":\"Compiled |Failed to compile.\"}}}}],\"inputs\":[{\"id\":\"terminate\",\"type\":\"command\",\"command\":\"workbench.action.tasks.terminate\",\"args\":\"terminateAll\"}]}",
344
346
  "currentProjectType": "isomorphic-lib",
345
- "currentFrameworkVersion": "13.1.214",
347
+ "currentFrameworkVersion": "16.0.0",
346
348
  "currentProjectIsStrictSite": false,
347
349
  "currentProjectIsDependencySite": false,
348
350
  "currentProjectIsStatic": false,
package/websql/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.
@@ -0,0 +1,162 @@
1
+ import { Logger } from './logger';
2
+ import { Level, LevelOrder, LevelKey } from './level';
3
+ import { Helpers } from 'tnp-core/websql';
4
+ /* */
5
+ /* */
6
+ /* */
7
+ /* */
8
+ /* */
9
+ class Log {
10
+ constructor() {
11
+ this._logOnly = false;
12
+ this._logModules = false;
13
+ this.isDevelopmentMode = true;
14
+ this.modeIsSet = false;
15
+ this.fixedWidth = 0;
16
+ this.instances = {};
17
+ this.levels = [];
18
+ this.modules = [];
19
+ }
20
+ // @ts-ignore
21
+ static get instance() {
22
+ // @ts-ignore
23
+ if (!Log['_instance']) {
24
+ // @ts-ignore
25
+ Log['_instance'] = new Log();
26
+ }
27
+ // @ts-ignore
28
+ return Log['_instance'];
29
+ }
30
+ static { this.Logger = Logger; }
31
+ static create(name, ...level) {
32
+ return Log.instance.create(name, ...level);
33
+ }
34
+ static { this.consolelogfn = {}; }
35
+ static disableLogs(level = Level.__NOTHING) {
36
+ /* */
37
+ /* */
38
+ /* */
39
+ /* */
40
+ /* */
41
+ /* */
42
+ /* */
43
+ LevelOrder.reverse().find(a => {
44
+ // @ts-ignore
45
+ if (!this.consolelogfn[a]) {
46
+ // @ts-ignore
47
+ this.consolelogfn[a] = console[a];
48
+ }
49
+ // @ts-ignore
50
+ console[a] = () => { };
51
+ if (a === LevelKey[level]) {
52
+ return true;
53
+ }
54
+ return false;
55
+ });
56
+ }
57
+ static enableLogs() {
58
+ /* */
59
+ /* */
60
+ /* */
61
+ /* */
62
+ LevelOrder.forEach(a => {
63
+ // @ts-ignore
64
+ console[a] = this.consolelogfn[a];
65
+ });
66
+ }
67
+ setProductionMode() {
68
+ if (this.modeIsSet) {
69
+ this.modeIsSet = false;
70
+ throw '[ng2-logger] Production mode is already set';
71
+ }
72
+ else {
73
+ this.modeIsSet = true;
74
+ setTimeout(() => {
75
+ if (this.modeIsSet && console !== void 0 && console.clear !== void 0) {
76
+ console.clear();
77
+ console.log = () => { };
78
+ console.error = () => { };
79
+ console.warn = () => { };
80
+ console.info = () => { };
81
+ }
82
+ });
83
+ this.isDevelopmentMode = false;
84
+ }
85
+ }
86
+ onlyModules(...modules) {
87
+ if (this._logModules) {
88
+ throw '[ng2-logger] You should use funcion onlyModules only once';
89
+ }
90
+ if (!this._logModules) {
91
+ this._logModules = true;
92
+ }
93
+ if (modules.length === 0)
94
+ return;
95
+ this.modules = modules;
96
+ this.muteAllOtherModules();
97
+ }
98
+ onlyLevel(...level) {
99
+ if (this._logOnly) {
100
+ throw '[ng2-logger] You should use funcion onlyLevel only once';
101
+ }
102
+ if (!this._logOnly) {
103
+ this._logOnly = true;
104
+ }
105
+ this.levels = Array.isArray(level) ? level : [level];
106
+ for (const logName in this.instances) {
107
+ if (this.instances.hasOwnProperty(logName)) {
108
+ const element = this.instances[logName];
109
+ element['allowed'] = this.levels;
110
+ }
111
+ }
112
+ }
113
+ create(name, ...level) {
114
+ let i;
115
+ if (Array.isArray(this.levels) && this.levels.length > 0) {
116
+ level = this.levels;
117
+ }
118
+ if (this.instances[name] === void 0) {
119
+ i = new (Log.Logger)(name, getRandomColor(), this.isDevelopmentMode, level, this.isMutedModule(name), this.levels.length > 0 ? this.fixedWidth : void 0);
120
+ this.instances[name] = i;
121
+ }
122
+ else {
123
+ i = this.instances[name];
124
+ }
125
+ return i;
126
+ }
127
+ isMutedModule(moduleName) {
128
+ if (this.modules.length == 0)
129
+ return false;
130
+ if (!Helpers.contain(this.modules, moduleName))
131
+ return true;
132
+ return false;
133
+ }
134
+ muteAllOtherModules() {
135
+ for (var moduleName in this.instances) {
136
+ if (!Helpers.contain(this.modules, moduleName))
137
+ this.instances[moduleName].mute();
138
+ }
139
+ }
140
+ }
141
+ export { Log };
142
+ function getRandomColor() {
143
+ /* */
144
+ /* */
145
+ /* */
146
+ /* */
147
+ let letters = '012345'.split('');
148
+ let color = '#';
149
+ color += letters[Math.round(Math.random() * 5)];
150
+ letters = '0123456789ABCDEF'.split('');
151
+ for (let i = 0; i < 5; i++) {
152
+ color += letters[Math.round(Math.random() * 15)];
153
+ }
154
+ if (color === void 0) {
155
+ return getRandomColor();
156
+ }
157
+ ;
158
+ return color;
159
+ }
160
+ ;
161
+ ({}); // @--end-of-file-for-module=ng2-logger lib/log.ts
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS13ZWJzcWwvbmcyLWxvZ2dlci9wcm9qZWN0cy9uZzItbG9nZ2VyL3NyYy9saWIvbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFJTCxLQUFLO0FBQ0wsS0FBSztBQUlMLE1BQWEsR0FBRztJQUVkO1FBdURRLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsc0JBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGNBQVMsR0FBcUMsRUFBRSxDQUFDO1FBQ2pELFdBQU0sR0FBWSxFQUFFLENBQUM7UUFDckIsWUFBTyxHQUF3QixFQUFFLENBQUM7SUE5RGxCLENBQUM7SUFDekIsYUFBYTtJQUNMLE1BQU0sS0FBSyxRQUFRO1FBQ3pCLGFBQWE7UUFDYixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3JCLGFBQWE7WUFDYixHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztTQUM5QjtRQUNELGFBQWE7UUFDYixPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQixDQUFDO2FBR00sV0FBTSxHQUFvQixNQUFNLEFBQTFCLENBQTJCO0lBQ3hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBWSxFQUFFLEdBQUcsS0FBYztRQUMzQyxPQUFP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QUFFLENBQUMsRUFBRSxFQUFFO1FBQzFCLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUNsRDtJQUNELElBQUksS0FBSyxLQUFLLEtBQUssQ0FBQyxFQUFFO1FBQ3BCLE9BQU8sY0FBYyxFQUFFLENBQUE7S0FDeEI7SUFBQSxDQUFDO0lBQ0YsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrREFBa0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBMZXZlbCwgTGV2ZWxPcmRlciwgTGV2ZWxLZXkgfSBmcm9tICcuL2xldmVsJztcbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuZXhwb3J0IGNsYXNzIExvZyB7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHsgfVxuICAvLyBAdHMtaWdub3JlXG4gIHByaXZhdGUgc3RhdGljIGdldCBpbnN0YW5jZSgpOiBhbnkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIUxvZ1snX2luc3RhbmNlJ10pIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIExvZ1snX2luc3RhbmNlJ10gPSBuZXcgTG9nKCk7XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gTG9nWydfaW5zdGFuY2UnXTtcbiAgfVxuXG5cbiAgc3RhdGljIExvZ2dlcjogKHR5cGVvZiBMb2dnZXIpID0gTG9nZ2VyO1xuICBzdGF0aWMgY3JlYXRlKG5hbWU6IHN0cmluZywgLi4ubGV2ZWw6IExldmVsW10pOiBMb2dnZXIge1xuICAgIHJldHVybiBMb2cuaW5zdGFuY2UuY3JlYXRlKG5hbWUsIC4uLmxldmVsKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNvbnNvbGVsb2dmbiA9IHt9O1xuICBzdGF0aWMgZGlzYWJsZUxvZ3MobGV2ZWwgPSBMZXZlbC5fX05PVEhJTkcpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIExldmVsT3JkZXIucmV2ZXJzZSgpLmZpbmQoYSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAoIXRoaXMuY29uc29sZWxvZ2ZuW2FdKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy5jb25zb2xlbG9nZm5bYV0gPSBjb25zb2xlW2FdO1xuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc29sZVthXSA9ICgpID0+IHsgfTtcbiAgICAgIGlmIChhID09PSBMZXZlbEtleVtsZXZlbF0pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZW5hYmxlTG9ncygpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIExldmVsT3JkZXIuZm9yRWFjaChhID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnNvbGVbYV0gPSB0aGlzLmNvbnNvbGVsb2dmblthXVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9nT25seSA9IGZhbHNlO1xuICBwcml2YXRlIF9sb2dNb2R1bGVzID0gZmFsc2U7XG4gIHByaXZhdGUgaXNEZXZlbG9wbWVudE1vZGUgPSB0cnVlO1xuICBwcml2YXRlIG1vZGVJc1NldDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGZpeGVkV2lkdGggPSAwO1xuICBwcml2YXRlIGluc3RhbmNlczogeyBbbW9kdWxlTmFtZTogc3RyaW5nXTogTG9nZ2VyIH0gPSB7fTtcbiAgcHJpdmF0ZSBsZXZlbHM6IExldmVsW10gPSBbXTtcbiAgcHJpdmF0ZSBtb2R1bGVzOiAoc3RyaW5nIHwgUmVnRXhwKVtdID0gW107XG5cblxuICBwdWJsaWMgc2V0UHJvZHVjdGlvbk1vZGUoKSB7XG4gICAgaWYgKHRoaXMubW9kZUlzU2V0KSB7XG4gICAgICB0aGlzLm1vZGVJc1NldCA9IGZhbHNlXG4gICAgICB0aHJvdyAnW25nMi1sb2dnZXJdIFByb2R1Y3Rpb24gbW9kZSBpcyBhbHJlYWR5IHNldCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW9kZUlzU2V0ID0gdHJ1ZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuXG4gICAgICAgIGlmICh0aGlzLm1vZGVJc1NldCAmJiBjb25zb2xlICE9PSB2b2lkIDAgJiYgY29uc29sZS5jbGVhciAhPT0gdm9pZCAwKSB7XG5cbiAgICAgICAgICBjb25zb2xlLmNsZWFyKCk7XG4gICAgICAgICAgY29uc29sZS5sb2cgPSAoKSA9PiB7IH07XG4gICAgICAgICAgY29uc29sZS5lcnJvciA9ICgpID0+IHsgfTtcbiAgICAgICAgICBjb25zb2xlLndhcm4gPSAoKSA9PiB7IH07XG4gICAgICAgICAgY29uc29sZS5pbmZvID0gKCkgPT4geyB9O1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5pc0RldmVsb3BtZW50TW9kZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbmx5TW9kdWxlcyguLi5tb2R1bGVzOiAoc3RyaW5nIHwgUmVnRXhwKVtdKSB7XG4gICAgaWYgKHRoaXMuX2xvZ01vZHVsZXMpIHtcbiAgICAgIHRocm93ICdbbmcyLWxvZ2dlcl0gWW91IHNob3VsZCB1c2UgZnVuY2lvbiBvbmx5TW9kdWxlcyBvbmx5IG9uY2UnO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX2xvZ01vZHVsZXMpIHtcbiAgICAgIHRoaXMuX2xvZ01vZHVsZXMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAobW9kdWxlcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICB0aGlzLm1vZHVsZXMgPSBtb2R1bGVzO1xuXG4gICAgdGhpcy5tdXRlQWxsT3RoZXJNb2R1bGVzKCk7XG4gIH1cblxuXG4gIHB1YmxpYyBvbmx5TGV2ZWwoLi4ubGV2ZWw6IExldmVsW10pIHtcbiAgICBpZiAodGhpcy5fbG9nT25seSkge1xuICAgICAgdGhyb3cgJ1tuZzItbG9nZ2VyXSBZb3Ugc2hvdWxkIHVzZSBmdW5jaW9uIG9ubHlMZXZlbCBvbmx5IG9uY2UnO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX2xvZ09ubHkpIHtcbiAgICAgIHRoaXMuX2xvZ09ubHkgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMubGV2ZWxzID0gQXJyYXkuaXNBcnJheShsZXZlbCkgPyBsZXZlbCA6IFtsZXZlbF07XG5cblxuICAgIGZvciAoY29uc3QgbG9nTmFtZSBpbiB0aGlzLmluc3RhbmNlcykge1xuICAgICAgaWYgKHRoaXMuaW5zdGFuY2VzLmhhc093blByb3BlcnR5KGxvZ05hbWUpKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmluc3RhbmNlc1tsb2dOYW1lXTtcbiAgICAgICAgZWxlbWVudFsnYWxsb3dlZCddID0gdGhpcy5sZXZlbHM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuXG4gIHByaXZhdGUgY3JlYXRlKG5hbWU6IHN0cmluZywgLi4ubGV2ZWw6IExldmVsW10pOiBMb2dnZXIge1xuICAgIGxldCBpOiBMb2dnZXI7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5sZXZlbHMpICYmIHRoaXMubGV2ZWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIGxldmVsID0gdGhpcy5sZXZlbHM7XG4gICAgfVxuICAgIGlmICh0aGlzLmluc3RhbmNlc1tuYW1lXSA9PT0gdm9pZCAwKSB7XG4gICAgICBpID0gbmV3IChMb2cuTG9nZ2VyKShcbiAgICAgICAgbmFtZSxcbiAgICAgICAgZ2V0UmFuZG9tQ29sb3IoKSxcbiAgICAgICAgdGhpcy5pc0RldmVsb3BtZW50TW9kZSxcbiAgICAgICAgbGV2ZWwsXG4gICAgICAgIHRoaXMuaXNNdXRlZE1vZHVsZShuYW1lKSxcbiAgICAgICAgdGhpcy5sZXZlbHMubGVuZ3RoID4gMCA/IHRoaXMuZml4ZWRXaWR0aCA6IHZvaWQgMCxcblxuICAgICAgKTtcbiAgICAgIHRoaXMuaW5zdGFuY2VzW25hbWVdID0gaTtcbiAgICB9IGVsc2Uge1xuICAgICAgaSA9IHRoaXMuaW5zdGFuY2VzW25hbWVdO1xuICAgIH1cbiAgICByZXR1cm4gaTtcbiAgfVxuXG4gIHByaXZhdGUgaXNNdXRlZE1vZHVsZShtb2R1bGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5tb2R1bGVzLmxlbmd0aCA9PSAwKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCFIZWxwZXJzLmNvbnRhaW4odGhpcy5tb2R1bGVzLCBtb2R1bGVOYW1lKSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHByaXZhdGUgbXV0ZUFsbE90aGVyTW9kdWxlcygpIHtcbiAgICBmb3IgKHZhciBtb2R1bGVOYW1lIGluIHRoaXMuaW5zdGFuY2VzKSB7XG4gICAgICBpZiAoIUhlbHBlcnMuY29udGFpbih0aGlzLm1vZHVsZXMsIG1vZHVsZU5hbWUpKVxuICAgICAgICB0aGlzLmluc3RhbmNlc1ttb2R1bGVOYW1lXS5tdXRlKClcbiAgICB9XG4gIH1cblxufVxuXG5cbmZ1bmN0aW9uIGdldFJhbmRvbUNvbG9yKCk6IHN0cmluZyB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuICBsZXQgbGV0dGVycyA9ICcwMTIzNDUnLnNwbGl0KCcnKTtcbiAgbGV0IGNvbG9yID0gJyMnO1xuICBjb2xvciArPSBsZXR0ZXJzW01hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDUpXTtcbiAgbGV0dGVycyA9ICcwMTIzNDU2Nzg5QUJDREVGJy5zcGxpdCgnJyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29sb3IgKz0gbGV0dGVyc1tNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxNSldO1xuICB9XG4gIGlmIChjb2xvciA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGdldFJhbmRvbUNvbG9yKClcbiAgfTtcbiAgcmV0dXJuIGNvbG9yO1xufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bmcyLWxvZ2dlciBsaWIvbG9nLnRzIl19