@delta-ai/platform 0.1.1

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 (61) hide show
  1. package/dist/action/common/action.d.ts +75 -0
  2. package/dist/action/common/action.d.ts.map +1 -0
  3. package/dist/action/common/action.js +17 -0
  4. package/dist/action/common/action.js.map +1 -0
  5. package/dist/action/common/actionCommonCategories.d.ts +9 -0
  6. package/dist/action/common/actionCommonCategories.d.ts.map +1 -0
  7. package/dist/action/common/actionCommonCategories.js +14 -0
  8. package/dist/action/common/actionCommonCategories.js.map +1 -0
  9. package/dist/commands/common/commands.d.ts +52 -0
  10. package/dist/commands/common/commands.d.ts.map +1 -0
  11. package/dist/commands/common/commands.js +79 -0
  12. package/dist/commands/common/commands.js.map +1 -0
  13. package/dist/contextkey/common/contextkey.d.ts +439 -0
  14. package/dist/contextkey/common/contextkey.d.ts.map +1 -0
  15. package/dist/contextkey/common/contextkey.js +1729 -0
  16. package/dist/contextkey/common/contextkey.js.map +1 -0
  17. package/dist/contextkey/common/scanner.d.ts +142 -0
  18. package/dist/contextkey/common/scanner.d.ts.map +1 -0
  19. package/dist/contextkey/common/scanner.js +311 -0
  20. package/dist/contextkey/common/scanner.js.map +1 -0
  21. package/dist/environment/common/argv.d.ts +173 -0
  22. package/dist/environment/common/argv.d.ts.map +1 -0
  23. package/dist/environment/common/argv.js +6 -0
  24. package/dist/environment/common/argv.js.map +1 -0
  25. package/dist/environment/common/environment.d.ts +113 -0
  26. package/dist/environment/common/environment.d.ts.map +1 -0
  27. package/dist/environment/common/environment.js +9 -0
  28. package/dist/environment/common/environment.js.map +1 -0
  29. package/dist/environment/common/environmentService.d.ts +91 -0
  30. package/dist/environment/common/environmentService.d.ts.map +1 -0
  31. package/dist/environment/common/environmentService.js +278 -0
  32. package/dist/environment/common/environmentService.js.map +1 -0
  33. package/dist/instantiation/common/descriptors.d.ts +10 -0
  34. package/dist/instantiation/common/descriptors.d.ts.map +1 -0
  35. package/dist/instantiation/common/descriptors.js +15 -0
  36. package/dist/instantiation/common/descriptors.js.map +1 -0
  37. package/dist/instantiation/common/graph.d.ts +26 -0
  38. package/dist/instantiation/common/graph.d.ts.map +1 -0
  39. package/dist/instantiation/common/graph.js +96 -0
  40. package/dist/instantiation/common/graph.js.map +1 -0
  41. package/dist/instantiation/common/instantiation.d.ts +76 -0
  42. package/dist/instantiation/common/instantiation.d.ts.map +1 -0
  43. package/dist/instantiation/common/instantiation.js +49 -0
  44. package/dist/instantiation/common/instantiation.js.map +1 -0
  45. package/dist/instantiation/common/instantiationService.d.ts +56 -0
  46. package/dist/instantiation/common/instantiationService.d.ts.map +1 -0
  47. package/dist/instantiation/common/instantiationService.js +415 -0
  48. package/dist/instantiation/common/instantiationService.js.map +1 -0
  49. package/dist/instantiation/common/serviceCollection.d.ts +10 -0
  50. package/dist/instantiation/common/serviceCollection.d.ts.map +1 -0
  51. package/dist/instantiation/common/serviceCollection.js +25 -0
  52. package/dist/instantiation/common/serviceCollection.js.map +1 -0
  53. package/dist/log/common/log.d.ts +297 -0
  54. package/dist/log/common/log.d.ts.map +1 -0
  55. package/dist/log/common/log.js +668 -0
  56. package/dist/log/common/log.js.map +1 -0
  57. package/dist/registry/common/platform.d.ts +21 -0
  58. package/dist/registry/common/platform.d.ts.map +1 -0
  59. package/dist/registry/common/platform.js +31 -0
  60. package/dist/registry/common/platform.js.map +1 -0
  61. package/package.json +42 -0
@@ -0,0 +1,668 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License. See License.txt in the project root for license information.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import * as nls from '@delta-ai/base/nls.js';
6
+ import { toErrorMessage } from '@delta-ai/base/common/errorMessage.js';
7
+ import { Emitter, Event } from '@delta-ai/base/common/event.js';
8
+ import { hash } from '@delta-ai/base/common/hash.js';
9
+ import { Disposable, toDisposable } from '@delta-ai/base/common/lifecycle.js';
10
+ import { ResourceMap } from '@delta-ai/base/common/map.js';
11
+ import { isWindows } from '@delta-ai/base/common/platform.js';
12
+ import { joinPath } from '@delta-ai/base/common/resources.js';
13
+ import { isNumber, isString } from '@delta-ai/base/common/types.js';
14
+ import { URI } from '@delta-ai/base/common/uri.js';
15
+ import { RawContextKey } from '@delta-ai/platform/contextkey/common/contextkey.js';
16
+ import { IEnvironmentService } from '../../environment/common/environment.js';
17
+ import { createDecorator } from '@delta-ai/platform/instantiation/common/instantiation.js';
18
+ export const ILogService = createDecorator('logService');
19
+ export const ILoggerService = createDecorator('loggerService');
20
+ function now() {
21
+ return new Date().toISOString();
22
+ }
23
+ export function isLogLevel(thing) {
24
+ return isNumber(thing);
25
+ }
26
+ export var LogLevel;
27
+ (function (LogLevel) {
28
+ LogLevel[LogLevel["Off"] = 0] = "Off";
29
+ LogLevel[LogLevel["Trace"] = 1] = "Trace";
30
+ LogLevel[LogLevel["Debug"] = 2] = "Debug";
31
+ LogLevel[LogLevel["Info"] = 3] = "Info";
32
+ LogLevel[LogLevel["Warning"] = 4] = "Warning";
33
+ LogLevel[LogLevel["Error"] = 5] = "Error";
34
+ })(LogLevel || (LogLevel = {}));
35
+ export const DEFAULT_LOG_LEVEL = LogLevel.Info;
36
+ export function canLog(loggerLevel, messageLevel) {
37
+ return loggerLevel !== LogLevel.Off && loggerLevel <= messageLevel;
38
+ }
39
+ export function log(logger, level, message) {
40
+ switch (level) {
41
+ case LogLevel.Trace:
42
+ logger.trace(message);
43
+ break;
44
+ case LogLevel.Debug:
45
+ logger.debug(message);
46
+ break;
47
+ case LogLevel.Info:
48
+ logger.info(message);
49
+ break;
50
+ case LogLevel.Warning:
51
+ logger.warn(message);
52
+ break;
53
+ case LogLevel.Error:
54
+ logger.error(message);
55
+ break;
56
+ case LogLevel.Off: /* do nothing */ break;
57
+ default: throw new Error(`Invalid log level ${level}`);
58
+ }
59
+ }
60
+ /**
61
+ * Flag to enable forwarding of console.* calls to the log service in development.
62
+ * This is intended for the use of agents to quickly instrument the code with console.logs
63
+ * which will end up in the log service's file outputs.
64
+ */
65
+ export const isDevConsoleLogForwardingEnabled = false;
66
+ let isConsoleForwarding = false;
67
+ let isLogServiceConsoleEcho = false;
68
+ function getConsoleMethod(method) {
69
+ switch (method) {
70
+ case 'debug': return console.debug;
71
+ case 'error': return console.error;
72
+ case 'info': return console.info;
73
+ case 'log': return console.log;
74
+ case 'warn': return console.warn;
75
+ }
76
+ }
77
+ function setConsoleMethod(method, fn) {
78
+ switch (method) {
79
+ case 'debug':
80
+ console.debug = fn;
81
+ break;
82
+ case 'error':
83
+ console.error = fn;
84
+ break;
85
+ case 'info':
86
+ console.info = fn;
87
+ break;
88
+ case 'log':
89
+ console.log = fn;
90
+ break;
91
+ case 'warn':
92
+ console.warn = fn;
93
+ break;
94
+ }
95
+ }
96
+ function logToConsole(method, ...args) {
97
+ if (isConsoleForwarding) {
98
+ return;
99
+ }
100
+ isLogServiceConsoleEcho = true;
101
+ try {
102
+ getConsoleMethod(method).apply(console, args);
103
+ }
104
+ finally {
105
+ isLogServiceConsoleEcho = false;
106
+ }
107
+ }
108
+ export function registerDevConsoleLogForwarder(logService) {
109
+ const originalConsoleMethods = {
110
+ debug: console.debug,
111
+ error: console.error,
112
+ info: console.info,
113
+ log: console.log,
114
+ warn: console.warn
115
+ };
116
+ const forward = (method, level, args) => {
117
+ if (!isLogServiceConsoleEcho) {
118
+ isConsoleForwarding = true;
119
+ try {
120
+ log(logService, level, format(args));
121
+ }
122
+ catch {
123
+ // Best-effort development logging must not break normal console semantics.
124
+ }
125
+ finally {
126
+ isConsoleForwarding = false;
127
+ }
128
+ }
129
+ originalConsoleMethods[method].apply(console, args);
130
+ };
131
+ const wrappers = {
132
+ debug: (...args) => forward('debug', LogLevel.Debug, args),
133
+ error: (...args) => forward('error', LogLevel.Error, args),
134
+ info: (...args) => forward('info', LogLevel.Info, args),
135
+ log: (...args) => forward('log', LogLevel.Info, args),
136
+ warn: (...args) => forward('warn', LogLevel.Warning, args)
137
+ };
138
+ setConsoleMethod('debug', wrappers.debug);
139
+ setConsoleMethod('error', wrappers.error);
140
+ setConsoleMethod('info', wrappers.info);
141
+ setConsoleMethod('log', wrappers.log);
142
+ setConsoleMethod('warn', wrappers.warn);
143
+ return toDisposable(() => {
144
+ if (console.debug === wrappers.debug) {
145
+ console.debug = originalConsoleMethods.debug;
146
+ }
147
+ if (console.error === wrappers.error) {
148
+ console.error = originalConsoleMethods.error;
149
+ }
150
+ if (console.info === wrappers.info) {
151
+ console.info = originalConsoleMethods.info;
152
+ }
153
+ if (console.log === wrappers.log) {
154
+ console.log = originalConsoleMethods.log;
155
+ }
156
+ if (console.warn === wrappers.warn) {
157
+ console.warn = originalConsoleMethods.warn;
158
+ }
159
+ });
160
+ }
161
+ function format(args, verbose = false) {
162
+ let result = '';
163
+ for (let i = 0; i < args.length; i++) {
164
+ let a = args[i];
165
+ if (a instanceof Error) {
166
+ a = toErrorMessage(a, verbose);
167
+ }
168
+ if (typeof a === 'object') {
169
+ try {
170
+ a = JSON.stringify(a);
171
+ }
172
+ catch (e) { }
173
+ }
174
+ result += (i > 0 ? ' ' : '') + a;
175
+ }
176
+ return result;
177
+ }
178
+ export class AbstractLogger extends Disposable {
179
+ level = DEFAULT_LOG_LEVEL;
180
+ _onDidChangeLogLevel = this._register(new Emitter());
181
+ get onDidChangeLogLevel() { return this._onDidChangeLogLevel.event; }
182
+ setLevel(level) {
183
+ if (this.level !== level) {
184
+ this.level = level;
185
+ this._onDidChangeLogLevel.fire(this.level);
186
+ }
187
+ }
188
+ getLevel() {
189
+ return this.level;
190
+ }
191
+ checkLogLevel(level) {
192
+ return canLog(this.level, level);
193
+ }
194
+ canLog(level) {
195
+ if (this._store.isDisposed) {
196
+ return false;
197
+ }
198
+ return this.checkLogLevel(level);
199
+ }
200
+ }
201
+ export class AbstractMessageLogger extends AbstractLogger {
202
+ logAlways;
203
+ constructor(logAlways) {
204
+ super();
205
+ this.logAlways = logAlways;
206
+ }
207
+ checkLogLevel(level) {
208
+ return this.logAlways || super.checkLogLevel(level);
209
+ }
210
+ trace(message, ...args) {
211
+ if (this.canLog(LogLevel.Trace)) {
212
+ this.log(LogLevel.Trace, format([message, ...args], true));
213
+ }
214
+ }
215
+ debug(message, ...args) {
216
+ if (this.canLog(LogLevel.Debug)) {
217
+ this.log(LogLevel.Debug, format([message, ...args]));
218
+ }
219
+ }
220
+ info(message, ...args) {
221
+ if (this.canLog(LogLevel.Info)) {
222
+ this.log(LogLevel.Info, format([message, ...args]));
223
+ }
224
+ }
225
+ warn(message, ...args) {
226
+ if (this.canLog(LogLevel.Warning)) {
227
+ this.log(LogLevel.Warning, format([message, ...args]));
228
+ }
229
+ }
230
+ error(message, ...args) {
231
+ if (this.canLog(LogLevel.Error)) {
232
+ if (message instanceof Error) {
233
+ const array = Array.prototype.slice.call(arguments);
234
+ array[0] = message.stack;
235
+ this.log(LogLevel.Error, format(array));
236
+ }
237
+ else {
238
+ this.log(LogLevel.Error, format([message, ...args]));
239
+ }
240
+ }
241
+ }
242
+ flush() { }
243
+ }
244
+ export class ConsoleMainLogger extends AbstractLogger {
245
+ useColors;
246
+ constructor(logLevel = DEFAULT_LOG_LEVEL) {
247
+ super();
248
+ this.setLevel(logLevel);
249
+ this.useColors = !isWindows;
250
+ }
251
+ trace(message, ...args) {
252
+ if (this.canLog(LogLevel.Trace)) {
253
+ if (this.useColors) {
254
+ logToConsole('log', `\x1b[90m[main ${now()}]\x1b[0m`, message, ...args);
255
+ }
256
+ else {
257
+ logToConsole('log', `[main ${now()}]`, message, ...args);
258
+ }
259
+ }
260
+ }
261
+ debug(message, ...args) {
262
+ if (this.canLog(LogLevel.Debug)) {
263
+ if (this.useColors) {
264
+ logToConsole('log', `\x1b[90m[main ${now()}]\x1b[0m`, message, ...args);
265
+ }
266
+ else {
267
+ logToConsole('log', `[main ${now()}]`, message, ...args);
268
+ }
269
+ }
270
+ }
271
+ info(message, ...args) {
272
+ if (this.canLog(LogLevel.Info)) {
273
+ if (this.useColors) {
274
+ logToConsole('log', `\x1b[90m[main ${now()}]\x1b[0m`, message, ...args);
275
+ }
276
+ else {
277
+ logToConsole('log', `[main ${now()}]`, message, ...args);
278
+ }
279
+ }
280
+ }
281
+ warn(message, ...args) {
282
+ if (this.canLog(LogLevel.Warning)) {
283
+ if (this.useColors) {
284
+ logToConsole('warn', `\x1b[93m[main ${now()}]\x1b[0m`, message, ...args);
285
+ }
286
+ else {
287
+ logToConsole('warn', `[main ${now()}]`, message, ...args);
288
+ }
289
+ }
290
+ }
291
+ error(message, ...args) {
292
+ if (this.canLog(LogLevel.Error)) {
293
+ if (this.useColors) {
294
+ logToConsole('error', `\x1b[91m[main ${now()}]\x1b[0m`, message, ...args);
295
+ }
296
+ else {
297
+ logToConsole('error', `[main ${now()}]`, message, ...args);
298
+ }
299
+ }
300
+ }
301
+ flush() {
302
+ // noop
303
+ }
304
+ }
305
+ export class ConsoleLogger extends AbstractLogger {
306
+ useColors;
307
+ constructor(logLevel = DEFAULT_LOG_LEVEL, useColors = true) {
308
+ super();
309
+ this.useColors = useColors;
310
+ this.setLevel(logLevel);
311
+ }
312
+ trace(message, ...args) {
313
+ if (this.canLog(LogLevel.Trace)) {
314
+ if (this.useColors) {
315
+ logToConsole('log', '%cTRACE', 'color: #888', message, ...args);
316
+ }
317
+ else {
318
+ logToConsole('log', message, ...args);
319
+ }
320
+ }
321
+ }
322
+ debug(message, ...args) {
323
+ if (this.canLog(LogLevel.Debug)) {
324
+ if (this.useColors) {
325
+ logToConsole('log', '%cDEBUG', 'background: #eee; color: #888', message, ...args);
326
+ }
327
+ else {
328
+ logToConsole('log', message, ...args);
329
+ }
330
+ }
331
+ }
332
+ info(message, ...args) {
333
+ if (this.canLog(LogLevel.Info)) {
334
+ if (this.useColors) {
335
+ logToConsole('log', '%c INFO', 'color: #33f', message, ...args);
336
+ }
337
+ else {
338
+ logToConsole('log', message, ...args);
339
+ }
340
+ }
341
+ }
342
+ warn(message, ...args) {
343
+ if (this.canLog(LogLevel.Warning)) {
344
+ if (this.useColors) {
345
+ logToConsole('warn', '%c WARN', 'color: #993', message, ...args);
346
+ }
347
+ else {
348
+ logToConsole('log', message, ...args);
349
+ }
350
+ }
351
+ }
352
+ error(message, ...args) {
353
+ if (this.canLog(LogLevel.Error)) {
354
+ if (this.useColors) {
355
+ logToConsole('error', '%c ERR', 'color: #f33', message, ...args);
356
+ }
357
+ else {
358
+ logToConsole('error', message, ...args);
359
+ }
360
+ }
361
+ }
362
+ flush() {
363
+ // noop
364
+ }
365
+ }
366
+ export class AdapterLogger extends AbstractLogger {
367
+ adapter;
368
+ constructor(adapter, logLevel = DEFAULT_LOG_LEVEL) {
369
+ super();
370
+ this.adapter = adapter;
371
+ this.setLevel(logLevel);
372
+ }
373
+ trace(message, ...args) {
374
+ if (this.canLog(LogLevel.Trace)) {
375
+ this.adapter.log(LogLevel.Trace, [this.extractMessage(message), ...args]);
376
+ }
377
+ }
378
+ debug(message, ...args) {
379
+ if (this.canLog(LogLevel.Debug)) {
380
+ this.adapter.log(LogLevel.Debug, [this.extractMessage(message), ...args]);
381
+ }
382
+ }
383
+ info(message, ...args) {
384
+ if (this.canLog(LogLevel.Info)) {
385
+ this.adapter.log(LogLevel.Info, [this.extractMessage(message), ...args]);
386
+ }
387
+ }
388
+ warn(message, ...args) {
389
+ if (this.canLog(LogLevel.Warning)) {
390
+ this.adapter.log(LogLevel.Warning, [this.extractMessage(message), ...args]);
391
+ }
392
+ }
393
+ error(message, ...args) {
394
+ if (this.canLog(LogLevel.Error)) {
395
+ this.adapter.log(LogLevel.Error, [this.extractMessage(message), ...args]);
396
+ }
397
+ }
398
+ extractMessage(msg) {
399
+ if (typeof msg === 'string') {
400
+ return msg;
401
+ }
402
+ return toErrorMessage(msg, this.canLog(LogLevel.Trace));
403
+ }
404
+ flush() {
405
+ // noop
406
+ }
407
+ }
408
+ export class MultiplexLogger extends AbstractLogger {
409
+ loggers;
410
+ constructor(loggers) {
411
+ super();
412
+ this.loggers = loggers;
413
+ if (loggers.length) {
414
+ this.setLevel(loggers[0].getLevel());
415
+ }
416
+ }
417
+ setLevel(level) {
418
+ for (const logger of this.loggers) {
419
+ logger.setLevel(level);
420
+ }
421
+ super.setLevel(level);
422
+ }
423
+ trace(message, ...args) {
424
+ for (const logger of this.loggers) {
425
+ logger.trace(message, ...args);
426
+ }
427
+ }
428
+ debug(message, ...args) {
429
+ for (const logger of this.loggers) {
430
+ logger.debug(message, ...args);
431
+ }
432
+ }
433
+ info(message, ...args) {
434
+ for (const logger of this.loggers) {
435
+ logger.info(message, ...args);
436
+ }
437
+ }
438
+ warn(message, ...args) {
439
+ for (const logger of this.loggers) {
440
+ logger.warn(message, ...args);
441
+ }
442
+ }
443
+ error(message, ...args) {
444
+ for (const logger of this.loggers) {
445
+ logger.error(message, ...args);
446
+ }
447
+ }
448
+ flush() {
449
+ for (const logger of this.loggers) {
450
+ logger.flush();
451
+ }
452
+ }
453
+ dispose() {
454
+ for (const logger of this.loggers) {
455
+ logger.dispose();
456
+ }
457
+ super.dispose();
458
+ }
459
+ }
460
+ export class AbstractLoggerService extends Disposable {
461
+ logLevel;
462
+ logsHome;
463
+ _loggers = new ResourceMap();
464
+ _onDidChangeLoggers = this._register(new Emitter);
465
+ onDidChangeLoggers = this._onDidChangeLoggers.event;
466
+ _onDidChangeLogLevel = this._register(new Emitter);
467
+ onDidChangeLogLevel = this._onDidChangeLogLevel.event;
468
+ _onDidChangeVisibility = this._register(new Emitter);
469
+ onDidChangeVisibility = this._onDidChangeVisibility.event;
470
+ constructor(logLevel, logsHome, loggerResources) {
471
+ super();
472
+ this.logLevel = logLevel;
473
+ this.logsHome = logsHome;
474
+ if (loggerResources) {
475
+ for (const loggerResource of loggerResources) {
476
+ this._loggers.set(loggerResource.resource, { logger: undefined, info: loggerResource });
477
+ }
478
+ }
479
+ }
480
+ getLoggerEntry(resourceOrId) {
481
+ if (isString(resourceOrId)) {
482
+ return [...this._loggers.values()].find(logger => logger.info.id === resourceOrId);
483
+ }
484
+ return this._loggers.get(resourceOrId);
485
+ }
486
+ getLogger(resourceOrId) {
487
+ return this.getLoggerEntry(resourceOrId)?.logger;
488
+ }
489
+ createLogger(idOrResource, options) {
490
+ const resource = this.toResource(idOrResource);
491
+ const id = isString(idOrResource) ? idOrResource : (options?.id ?? hash(resource.toString()).toString(16));
492
+ let logger = this._loggers.get(resource)?.logger;
493
+ const logLevel = options?.logLevel === 'always' ? LogLevel.Trace : options?.logLevel;
494
+ if (!logger) {
495
+ logger = this.doCreateLogger(resource, logLevel ?? this.getLogLevel(resource) ?? this.logLevel, { ...options, id });
496
+ }
497
+ const loggerEntry = {
498
+ logger,
499
+ info: {
500
+ resource,
501
+ id,
502
+ logLevel,
503
+ name: options?.name,
504
+ hidden: options?.hidden,
505
+ group: options?.group,
506
+ extensionId: options?.extensionId,
507
+ when: options?.when
508
+ }
509
+ };
510
+ this.registerLogger(loggerEntry.info);
511
+ // TODO: @sandy081 Remove this once registerLogger can take ILogger
512
+ this._loggers.set(resource, loggerEntry);
513
+ return logger;
514
+ }
515
+ toResource(idOrResource) {
516
+ return isString(idOrResource) ? joinPath(this.logsHome, `${idOrResource.replace(/[\\/:\*\?"<>\|]/g, '')}.log`) : idOrResource;
517
+ }
518
+ setLogLevel(arg1, arg2) {
519
+ if (URI.isUri(arg1)) {
520
+ const resource = arg1;
521
+ const logLevel = arg2;
522
+ const logger = this._loggers.get(resource);
523
+ if (logger && logLevel !== logger.info.logLevel) {
524
+ logger.info.logLevel = logLevel === this.logLevel ? undefined : logLevel;
525
+ logger.logger?.setLevel(logLevel);
526
+ this._loggers.set(logger.info.resource, logger);
527
+ this._onDidChangeLogLevel.fire([resource, logLevel]);
528
+ }
529
+ }
530
+ else {
531
+ this.logLevel = arg1;
532
+ for (const [resource, logger] of this._loggers.entries()) {
533
+ if (this._loggers.get(resource)?.info.logLevel === undefined) {
534
+ logger.logger?.setLevel(this.logLevel);
535
+ }
536
+ }
537
+ this._onDidChangeLogLevel.fire(this.logLevel);
538
+ }
539
+ }
540
+ setVisibility(resourceOrId, visibility) {
541
+ const logger = this.getLoggerEntry(resourceOrId);
542
+ if (logger && visibility !== !logger.info.hidden) {
543
+ logger.info.hidden = !visibility;
544
+ this._loggers.set(logger.info.resource, logger);
545
+ this._onDidChangeVisibility.fire([logger.info.resource, visibility]);
546
+ }
547
+ }
548
+ getLogLevel(resource) {
549
+ let logLevel;
550
+ if (resource) {
551
+ logLevel = this._loggers.get(resource)?.info.logLevel;
552
+ }
553
+ return logLevel ?? this.logLevel;
554
+ }
555
+ registerLogger(resource) {
556
+ const existing = this._loggers.get(resource.resource);
557
+ if (existing) {
558
+ if (existing.info.hidden !== resource.hidden) {
559
+ this.setVisibility(resource.resource, !resource.hidden);
560
+ }
561
+ }
562
+ else {
563
+ this._loggers.set(resource.resource, { info: resource, logger: undefined });
564
+ this._onDidChangeLoggers.fire({ added: [resource], removed: [] });
565
+ }
566
+ }
567
+ deregisterLogger(idOrResource) {
568
+ const resource = this.toResource(idOrResource);
569
+ const existing = this._loggers.get(resource);
570
+ if (existing) {
571
+ if (existing.logger) {
572
+ existing.logger.dispose();
573
+ }
574
+ this._loggers.delete(resource);
575
+ this._onDidChangeLoggers.fire({ added: [], removed: [existing.info] });
576
+ }
577
+ }
578
+ *getRegisteredLoggers() {
579
+ for (const entry of this._loggers.values()) {
580
+ yield entry.info;
581
+ }
582
+ }
583
+ getRegisteredLogger(resource) {
584
+ return this._loggers.get(resource)?.info;
585
+ }
586
+ dispose() {
587
+ this._loggers.forEach(logger => logger.logger?.dispose());
588
+ this._loggers.clear();
589
+ super.dispose();
590
+ }
591
+ }
592
+ export class NullLogger {
593
+ onDidChangeLogLevel = new Emitter().event;
594
+ setLevel(level) { }
595
+ getLevel() { return LogLevel.Info; }
596
+ trace(message, ...args) { }
597
+ debug(message, ...args) { }
598
+ info(message, ...args) { }
599
+ warn(message, ...args) { }
600
+ error(message, ...args) { }
601
+ critical(message, ...args) { }
602
+ dispose() { }
603
+ flush() { }
604
+ }
605
+ export class NullLogService extends NullLogger {
606
+ }
607
+ export class NullLoggerService extends AbstractLoggerService {
608
+ constructor() {
609
+ super(LogLevel.Off, URI.parse('log:///log'));
610
+ }
611
+ doCreateLogger(resource, logLevel, options) {
612
+ return new NullLogger();
613
+ }
614
+ }
615
+ export function getLogLevel(environmentService) {
616
+ if (environmentService.verbose) {
617
+ return LogLevel.Trace;
618
+ }
619
+ if (typeof environmentService.logLevel === 'string') {
620
+ const logLevel = parseLogLevel(environmentService.logLevel.toLowerCase());
621
+ if (logLevel !== undefined) {
622
+ return logLevel;
623
+ }
624
+ }
625
+ return DEFAULT_LOG_LEVEL;
626
+ }
627
+ export function LogLevelToString(logLevel) {
628
+ switch (logLevel) {
629
+ case LogLevel.Trace: return 'trace';
630
+ case LogLevel.Debug: return 'debug';
631
+ case LogLevel.Info: return 'info';
632
+ case LogLevel.Warning: return 'warn';
633
+ case LogLevel.Error: return 'error';
634
+ case LogLevel.Off: return 'off';
635
+ }
636
+ }
637
+ export function LogLevelToLocalizedString(logLevel) {
638
+ switch (logLevel) {
639
+ case LogLevel.Trace: return { original: 'Trace', value: nls.localize('trace', "Trace") };
640
+ case LogLevel.Debug: return { original: 'Debug', value: nls.localize('debug', "Debug") };
641
+ case LogLevel.Info: return { original: 'Info', value: nls.localize('info', "Info") };
642
+ case LogLevel.Warning: return { original: 'Warning', value: nls.localize('warn', "Warning") };
643
+ case LogLevel.Error: return { original: 'Error', value: nls.localize('error', "Error") };
644
+ case LogLevel.Off: return { original: 'Off', value: nls.localize('off', "Off") };
645
+ }
646
+ }
647
+ export function parseLogLevel(logLevel) {
648
+ switch (logLevel) {
649
+ case 'trace':
650
+ return LogLevel.Trace;
651
+ case 'debug':
652
+ return LogLevel.Debug;
653
+ case 'info':
654
+ return LogLevel.Info;
655
+ case 'warn':
656
+ return LogLevel.Warning;
657
+ case 'error':
658
+ return LogLevel.Error;
659
+ case 'critical':
660
+ return LogLevel.Error;
661
+ case 'off':
662
+ return LogLevel.Off;
663
+ }
664
+ return undefined;
665
+ }
666
+ // Contexts
667
+ export const CONTEXT_LOG_LEVEL = new RawContextKey('logLevel', LogLevelToString(LogLevel.Info));
668
+ //# sourceMappingURL=log.js.map