standard-log 13.0.0 → 13.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 (132) hide show
  1. package/cjs/_virtual/_rolldown/runtime.js +23 -0
  2. package/cjs/console.d.ts +10 -7
  3. package/cjs/console.d.ts.map +1 -1
  4. package/cjs/console.js +54 -69
  5. package/cjs/console.js.map +1 -1
  6. package/cjs/errors.d.ts +9 -6
  7. package/cjs/errors.d.ts.map +1 -1
  8. package/cjs/errors.js +22 -45
  9. package/cjs/errors.js.map +1 -1
  10. package/cjs/formatter.d.ts +9 -6
  11. package/cjs/formatter.d.ts.map +1 -1
  12. package/cjs/formatter.js +42 -49
  13. package/cjs/formatter.js.map +1 -1
  14. package/cjs/index.d.ts +8 -9
  15. package/cjs/index.js +26 -28
  16. package/cjs/log_levels.d.ts +76 -73
  17. package/cjs/log_levels.d.ts.map +1 -1
  18. package/cjs/log_levels.js +104 -110
  19. package/cjs/log_levels.js.map +1 -1
  20. package/cjs/log_store.d.ts +20 -17
  21. package/cjs/log_store.d.ts.map +1 -1
  22. package/cjs/log_store.js +44 -39
  23. package/cjs/log_store.js.map +1 -1
  24. package/cjs/logger.d.ts +6 -3
  25. package/cjs/logger.d.ts.map +1 -1
  26. package/cjs/logger.js +66 -87
  27. package/cjs/logger.js.map +1 -1
  28. package/cjs/memory.d.ts +20 -17
  29. package/cjs/memory.d.ts.map +1 -1
  30. package/cjs/memory.js +55 -62
  31. package/cjs/memory.js.map +1 -1
  32. package/cjs/platform.browser.d.ts +7 -4
  33. package/cjs/platform.browser.d.ts.map +1 -1
  34. package/cjs/platform.browser.js +8 -6
  35. package/cjs/platform.browser.js.map +1 -1
  36. package/cjs/platform.d.ts +7 -4
  37. package/cjs/platform.d.ts.map +1 -1
  38. package/cjs/platform.js +9 -7
  39. package/cjs/platform.js.map +1 -1
  40. package/cjs/standard_log.ctx.d.ts +11 -8
  41. package/cjs/standard_log.ctx.d.ts.map +1 -1
  42. package/cjs/standard_log.ctx.js +6 -5
  43. package/cjs/standard_log.ctx.js.map +1 -1
  44. package/cjs/standard_log.d.ts +14 -12
  45. package/cjs/standard_log.d.ts.map +1 -1
  46. package/cjs/standard_log.js +84 -112
  47. package/cjs/standard_log.js.map +1 -1
  48. package/cjs/standard_log.testing.d.ts +16 -13
  49. package/cjs/standard_log.testing.d.ts.map +1 -1
  50. package/cjs/standard_log.testing.js +20 -35
  51. package/cjs/standard_log.testing.js.map +1 -1
  52. package/cjs/testing/index.d.ts +3 -3
  53. package/cjs/testing/index.js +3 -6
  54. package/cjs/types.d.ts +125 -124
  55. package/cjs/types.d.ts.map +1 -1
  56. package/cjs/types.js +0 -3
  57. package/dist/standard-log.esm.js +874 -1401
  58. package/dist/standard-log.esm.js.map +1 -1
  59. package/dist/standard-log.iife.js +952 -0
  60. package/dist/standard-log.iife.js.map +1 -0
  61. package/esm/console.d.ts +10 -7
  62. package/esm/console.d.ts.map +1 -1
  63. package/esm/console.js +54 -62
  64. package/esm/console.js.map +1 -1
  65. package/esm/errors.d.ts +9 -6
  66. package/esm/errors.d.ts.map +1 -1
  67. package/esm/errors.js +21 -21
  68. package/esm/errors.js.map +1 -1
  69. package/esm/formatter.d.ts +9 -6
  70. package/esm/formatter.d.ts.map +1 -1
  71. package/esm/formatter.js +38 -31
  72. package/esm/formatter.js.map +1 -1
  73. package/esm/index.d.ts +8 -9
  74. package/esm/index.js +7 -7
  75. package/esm/log_levels.d.ts +76 -73
  76. package/esm/log_levels.d.ts.map +1 -1
  77. package/esm/log_levels.js +102 -107
  78. package/esm/log_levels.js.map +1 -1
  79. package/esm/log_store.d.ts +20 -17
  80. package/esm/log_store.d.ts.map +1 -1
  81. package/esm/log_store.js +44 -37
  82. package/esm/log_store.js.map +1 -1
  83. package/esm/logger.d.ts +6 -3
  84. package/esm/logger.d.ts.map +1 -1
  85. package/esm/logger.js +66 -65
  86. package/esm/logger.js.map +1 -1
  87. package/esm/memory.d.ts +20 -17
  88. package/esm/memory.d.ts.map +1 -1
  89. package/esm/memory.js +55 -60
  90. package/esm/memory.js.map +1 -1
  91. package/esm/platform.browser.d.ts +7 -4
  92. package/esm/platform.browser.d.ts.map +1 -1
  93. package/esm/platform.browser.js +7 -3
  94. package/esm/platform.browser.js.map +1 -1
  95. package/esm/platform.d.ts +7 -4
  96. package/esm/platform.d.ts.map +1 -1
  97. package/esm/platform.js +8 -4
  98. package/esm/platform.js.map +1 -1
  99. package/esm/standard_log.ctx.d.ts +11 -8
  100. package/esm/standard_log.ctx.d.ts.map +1 -1
  101. package/esm/standard_log.ctx.js +6 -2
  102. package/esm/standard_log.ctx.js.map +1 -1
  103. package/esm/standard_log.d.ts +14 -12
  104. package/esm/standard_log.d.ts.map +1 -1
  105. package/esm/standard_log.js +83 -98
  106. package/esm/standard_log.js.map +1 -1
  107. package/esm/standard_log.testing.d.ts +16 -13
  108. package/esm/standard_log.testing.d.ts.map +1 -1
  109. package/esm/standard_log.testing.js +19 -20
  110. package/esm/standard_log.testing.js.map +1 -1
  111. package/esm/testing/index.d.ts +3 -3
  112. package/esm/testing/index.js +2 -2
  113. package/esm/types.d.ts +125 -124
  114. package/esm/types.d.ts.map +1 -1
  115. package/esm/types.js +0 -1
  116. package/package.json +8 -42
  117. package/cjs/index.d.ts.map +0 -1
  118. package/cjs/index.js.map +0 -1
  119. package/cjs/testing/index.d.ts.map +0 -1
  120. package/cjs/testing/index.js.map +0 -1
  121. package/cjs/types.js.map +0 -1
  122. package/dist/standard-log.es5.js +0 -10628
  123. package/dist/standard-log.es5.js.gz +0 -0
  124. package/dist/standard-log.es5.js.map +0 -1
  125. package/dist/standard-log.es5.js.map.gz +0 -0
  126. package/dist/standard-log.esm.js.gz +0 -0
  127. package/dist/standard-log.esm.js.map.gz +0 -0
  128. package/esm/index.d.ts.map +0 -1
  129. package/esm/index.js.map +0 -1
  130. package/esm/testing/index.d.ts.map +0 -1
  131. package/esm/testing/index.js.map +0 -1
  132. package/esm/types.js.map +0 -1
package/esm/logger.js CHANGED
@@ -1,74 +1,75 @@
1
- import { logLevels } from './log_levels.js';
2
- export function createLogger(store, id, options) {
3
- var _a;
4
- id = sanitizeId(id);
5
- const writeTo = (_a = options === null || options === void 0 ? void 0 : options.writeTo) !== null && _a !== void 0 ? _a : (() => true);
6
- const [filter, reporters] = typeof writeTo === 'string'
7
- ? [id => id === writeTo, store.reporters]
8
- : writeTo instanceof RegExp
9
- ? [id => writeTo.test(id), store.reporters]
10
- : typeof writeTo === 'function'
11
- ? [writeTo, store.reporters]
12
- : [() => true, [writeTo]];
13
- function write(entry) {
14
- writeToReporters(reporters, entry, filter);
15
- }
16
- const logger = {
17
- level: options === null || options === void 0 ? void 0 : options.level,
18
- write
19
- };
20
- Object.defineProperties(logger, {
21
- id: { value: id, writable: false },
22
- count: {
23
- writable: false,
24
- value: (counter => (...args) => {
25
- if (shouldLog(store, logLevels.debug, logger.level))
26
- write({
27
- id,
28
- level: logLevels.debug,
29
- args: [++counter, ...args],
30
- timestamp: new Date()
31
- });
32
- })(0)
33
- },
34
- on: {
35
- writable: false,
36
- value: (level, logFn) => {
37
- var _a;
38
- const logLevel = typeof level === 'string' ? store.logLevelStore.getLevel(level) : level;
39
- if (shouldLog(store, logLevel, logger.level)) {
40
- const methodName = store.logLevelStore.getName(logLevel);
41
- const bindedMethod = logger[methodName].bind(logger);
42
- const result = logFn(bindedMethod, (_a = logger.level) !== null && _a !== void 0 ? _a : store.logLevel);
43
- if (result)
44
- bindedMethod(result);
45
- }
46
- }
47
- }
48
- });
49
- store.logLevelStore.getAllLevels().forEach(function addMethod({ name, level }) {
50
- Object.defineProperty(logger, name, {
51
- writable: false,
52
- value: (...args) => {
53
- if (shouldLog(store, level, logger.level))
54
- write({ id, level, args, timestamp: new Date() });
55
- }
56
- });
57
- });
58
- return logger;
1
+ import { logLevels } from "./log_levels.js";
2
+ //#region ts/logger.ts
3
+ function createLogger(store, id, options) {
4
+ id = sanitizeId(id);
5
+ const writeTo = options?.writeTo ?? (() => true);
6
+ const [filter, reporters] = typeof writeTo === "string" ? [(id) => id === writeTo, store.reporters] : writeTo instanceof RegExp ? [(id) => writeTo.test(id), store.reporters] : typeof writeTo === "function" ? [writeTo, store.reporters] : [() => true, [writeTo]];
7
+ function write(entry) {
8
+ writeToReporters(reporters, entry, filter);
9
+ }
10
+ const logger = {
11
+ level: options?.level,
12
+ write
13
+ };
14
+ Object.defineProperties(logger, {
15
+ id: {
16
+ value: id,
17
+ writable: false
18
+ },
19
+ count: {
20
+ writable: false,
21
+ value: ((counter) => (...args) => {
22
+ if (shouldLog(store, logLevels.debug, logger.level)) write({
23
+ id,
24
+ level: logLevels.debug,
25
+ args: [++counter, ...args],
26
+ timestamp: /* @__PURE__ */ new Date()
27
+ });
28
+ })(0)
29
+ },
30
+ on: {
31
+ writable: false,
32
+ value: (level, logFn) => {
33
+ const logLevel = typeof level === "string" ? store.logLevelStore.getLevel(level) : level;
34
+ if (shouldLog(store, logLevel, logger.level)) {
35
+ const methodName = store.logLevelStore.getName(logLevel);
36
+ const bindedMethod = logger[methodName].bind(logger);
37
+ const result = logFn(bindedMethod, logger.level ?? store.logLevel);
38
+ if (result) bindedMethod(result);
39
+ }
40
+ }
41
+ }
42
+ });
43
+ store.logLevelStore.getAllLevels().forEach(function addMethod({ name, level }) {
44
+ Object.defineProperty(logger, name, {
45
+ writable: false,
46
+ value: (...args) => {
47
+ if (shouldLog(store, level, logger.level)) write({
48
+ id,
49
+ level,
50
+ args,
51
+ timestamp: /* @__PURE__ */ new Date()
52
+ });
53
+ }
54
+ });
55
+ });
56
+ return logger;
59
57
  }
60
58
  function sanitizeId(id) {
61
- return id.replace(/[`~!#$%^&*()=+[\]{},|<>?]/g, '-');
59
+ return id.replace(/[`~!#$%^&*()=+[\]{},|<>?]/g, "-");
62
60
  }
63
61
  function writeToReporters(reporters, logEntry, filter) {
64
- reporters.filter(r => filter(r.id)).forEach(r => r.write(logEntry));
62
+ reporters.filter((r) => filter(r.id)).forEach((r) => r.write(logEntry));
65
63
  }
66
64
  /**
67
- * Determines should you log.
68
- * @param loggerLevel Log level of the logger.
69
- * It can be undefined which the global log level will be used.
70
- */
65
+ * Determines should you log.
66
+ * @param loggerLevel Log level of the logger.
67
+ * It can be undefined which the global log level will be used.
68
+ */
71
69
  function shouldLog(store, targetLevel, loggerLevel) {
72
- return targetLevel <= (loggerLevel !== undefined ? loggerLevel : store.logLevel);
70
+ return targetLevel <= (loggerLevel !== void 0 ? loggerLevel : store.logLevel);
73
71
  }
72
+ //#endregion
73
+ export { createLogger };
74
+
74
75
  //# sourceMappingURL=logger.js.map
package/esm/logger.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../ts/logger.ts"],"names":[],"mappings":"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","sourcesContent":["import { logLevels } from './log_levels.js'\nimport type { LogStore } from './log_store.js'\nimport type {\n\tLogEntry,\n\tLogFunction,\n\tLogger,\n\tLoggerOptions,\n\tLogLevel,\n\tLogMethodNames,\n\tLogReporter\n} from './types.js'\n\nexport function createLogger<N extends string = LogMethodNames>(\n\tstore: LogStore,\n\tid: string,\n\toptions?: LoggerOptions\n): Logger<N | LogMethodNames> {\n\tid = sanitizeId(id)\n\tconst writeTo = options?.writeTo ?? (() => true)\n\tconst [filter, reporters]: [(reporterId: string) => boolean, LogReporter[]] =\n\t\ttypeof writeTo === 'string'\n\t\t\t? [id => id === writeTo, store.reporters]\n\t\t\t: writeTo instanceof RegExp\n\t\t\t\t? [id => writeTo.test(id), store.reporters]\n\t\t\t\t: typeof writeTo === 'function'\n\t\t\t\t\t? [writeTo, store.reporters]\n\t\t\t\t\t: [() => true, [writeTo]]\n\n\tfunction write(entry: LogEntry) {\n\t\twriteToReporters(reporters, entry, filter)\n\t}\n\n\tconst logger = {\n\t\tlevel: options?.level,\n\t\twrite\n\t} as any\n\n\tObject.defineProperties(logger, {\n\t\tid: { value: id, writable: false },\n\t\tcount: {\n\t\t\twritable: false,\n\t\t\tvalue: (\n\t\t\t\tcounter =>\n\t\t\t\t(...args: any[]): void => {\n\t\t\t\t\tif (shouldLog(store, logLevels.debug, logger.level))\n\t\t\t\t\t\twrite({\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tlevel: logLevels.debug,\n\t\t\t\t\t\t\targs: [++counter, ...args],\n\t\t\t\t\t\t\ttimestamp: new Date()\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t)(0)\n\t\t},\n\t\ton: {\n\t\t\twritable: false,\n\t\t\tvalue: (level: number | N | LogMethodNames, logFn: LogFunction) => {\n\t\t\t\tconst logLevel = typeof level === 'string' ? store.logLevelStore.getLevel(level)! : level\n\t\t\t\tif (shouldLog(store, logLevel, logger.level)) {\n\t\t\t\t\tconst methodName = store.logLevelStore.getName(logLevel)\n\t\t\t\t\tconst bindedMethod = logger[methodName].bind(logger)\n\t\t\t\t\tconst result = logFn(bindedMethod, logger.level ?? store.logLevel)\n\t\t\t\t\tif (result) bindedMethod(result)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\tstore.logLevelStore.getAllLevels().forEach(function addMethod({ name, level }) {\n\t\tObject.defineProperty(logger, name, {\n\t\t\twritable: false,\n\t\t\tvalue: (...args: any[]) => {\n\t\t\t\tif (shouldLog(store, level, logger.level)) write({ id, level, args, timestamp: new Date() })\n\t\t\t}\n\t\t})\n\t})\n\treturn logger\n}\n\nfunction sanitizeId(id: string) {\n\treturn id.replace(/[`~!#$%^&*()=+[\\]{},|<>?]/g, '-')\n}\n\nfunction writeToReporters(\n\treporters: LogReporter[],\n\tlogEntry: LogEntry,\n\tfilter: (reporterId: string) => boolean\n) {\n\treporters.filter(r => filter(r.id)).forEach(r => r.write(logEntry!))\n}\n\n/**\n * Determines should you log.\n * @param loggerLevel Log level of the logger.\n * It can be undefined which the global log level will be used.\n */\nfunction shouldLog(store: LogStore, targetLevel: LogLevel, loggerLevel: LogLevel | undefined) {\n\treturn targetLevel <= (loggerLevel !== undefined ? loggerLevel : store.logLevel)\n}\n"]}
1
+ {"version":3,"file":"logger.js","names":[],"sources":["../ts/logger.ts"],"sourcesContent":["import { logLevels } from './log_levels.js'\nimport type { LogStore } from './log_store.js'\nimport type {\n\tLogEntry,\n\tLogFunction,\n\tLogger,\n\tLoggerOptions,\n\tLogLevel,\n\tLogMethodNames,\n\tLogReporter\n} from './types.js'\n\nexport function createLogger<N extends string = LogMethodNames>(\n\tstore: LogStore,\n\tid: string,\n\toptions?: LoggerOptions\n): Logger<N | LogMethodNames> {\n\tid = sanitizeId(id)\n\tconst writeTo = options?.writeTo ?? (() => true)\n\tconst [filter, reporters]: [(reporterId: string) => boolean, LogReporter[]] =\n\t\ttypeof writeTo === 'string'\n\t\t\t? [id => id === writeTo, store.reporters]\n\t\t\t: writeTo instanceof RegExp\n\t\t\t\t? [id => writeTo.test(id), store.reporters]\n\t\t\t\t: typeof writeTo === 'function'\n\t\t\t\t\t? [writeTo, store.reporters]\n\t\t\t\t\t: [() => true, [writeTo]]\n\n\tfunction write(entry: LogEntry) {\n\t\twriteToReporters(reporters, entry, filter)\n\t}\n\n\tconst logger = {\n\t\tlevel: options?.level,\n\t\twrite\n\t} as any\n\n\tObject.defineProperties(logger, {\n\t\tid: { value: id, writable: false },\n\t\tcount: {\n\t\t\twritable: false,\n\t\t\tvalue: (\n\t\t\t\tcounter =>\n\t\t\t\t(...args: any[]): void => {\n\t\t\t\t\tif (shouldLog(store, logLevels.debug, logger.level))\n\t\t\t\t\t\twrite({\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tlevel: logLevels.debug,\n\t\t\t\t\t\t\targs: [++counter, ...args],\n\t\t\t\t\t\t\ttimestamp: new Date()\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t)(0)\n\t\t},\n\t\ton: {\n\t\t\twritable: false,\n\t\t\tvalue: (level: number | N | LogMethodNames, logFn: LogFunction) => {\n\t\t\t\tconst logLevel = typeof level === 'string' ? store.logLevelStore.getLevel(level)! : level\n\t\t\t\tif (shouldLog(store, logLevel, logger.level)) {\n\t\t\t\t\tconst methodName = store.logLevelStore.getName(logLevel)\n\t\t\t\t\tconst bindedMethod = logger[methodName].bind(logger)\n\t\t\t\t\tconst result = logFn(bindedMethod, logger.level ?? store.logLevel)\n\t\t\t\t\tif (result) bindedMethod(result)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\tstore.logLevelStore.getAllLevels().forEach(function addMethod({ name, level }) {\n\t\tObject.defineProperty(logger, name, {\n\t\t\twritable: false,\n\t\t\tvalue: (...args: any[]) => {\n\t\t\t\tif (shouldLog(store, level, logger.level)) write({ id, level, args, timestamp: new Date() })\n\t\t\t}\n\t\t})\n\t})\n\treturn logger\n}\n\nfunction sanitizeId(id: string) {\n\treturn id.replace(/[`~!#$%^&*()=+[\\]{},|<>?]/g, '-')\n}\n\nfunction writeToReporters(\n\treporters: LogReporter[],\n\tlogEntry: LogEntry,\n\tfilter: (reporterId: string) => boolean\n) {\n\treporters.filter(r => filter(r.id)).forEach(r => r.write(logEntry!))\n}\n\n/**\n * Determines should you log.\n * @param loggerLevel Log level of the logger.\n * It can be undefined which the global log level will be used.\n */\nfunction shouldLog(store: LogStore, targetLevel: LogLevel, loggerLevel: LogLevel | undefined) {\n\treturn targetLevel <= (loggerLevel !== undefined ? loggerLevel : store.logLevel)\n}\n"],"mappings":";;AAYA,SAAgB,aACf,OACA,IACA,SAC6B;CAC7B,KAAK,WAAW,EAAE;CAClB,MAAM,UAAU,SAAS,kBAAkB;CAC3C,MAAM,CAAC,QAAQ,aACd,OAAO,YAAY,WAChB,EAAC,OAAM,OAAO,SAAS,MAAM,SAAS,IACtC,mBAAmB,SAClB,EAAC,OAAM,QAAQ,KAAK,EAAE,GAAG,MAAM,SAAS,IACxC,OAAO,YAAY,aAClB,CAAC,SAAS,MAAM,SAAS,IACzB,OAAO,MAAM,CAAC,OAAO,CAAC;CAE5B,SAAS,MAAM,OAAiB;EAC/B,iBAAiB,WAAW,OAAO,MAAM;CAC1C;CAEA,MAAM,SAAS;EACd,OAAO,SAAS;EAChB;CACD;CAEA,OAAO,iBAAiB,QAAQ;EAC/B,IAAI;GAAE,OAAO;GAAI,UAAU;EAAM;EACjC,OAAO;GACN,UAAU;GACV,SACC,aACC,GAAG,SAAsB;IACzB,IAAI,UAAU,OAAO,UAAU,OAAO,OAAO,KAAK,GACjD,MAAM;KACL;KACA,OAAO,UAAU;KACjB,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI;KACzB,2BAAW,IAAI,KAAK;IACrB,CAAC;GACH,EAAA,CACC,CAAC;EACJ;EACA,IAAI;GACH,UAAU;GACV,QAAQ,OAAoC,UAAuB;IAClE,MAAM,WAAW,OAAO,UAAU,WAAW,MAAM,cAAc,SAAS,KAAK,IAAK;IACpF,IAAI,UAAU,OAAO,UAAU,OAAO,KAAK,GAAG;KAC7C,MAAM,aAAa,MAAM,cAAc,QAAQ,QAAQ;KACvD,MAAM,eAAe,OAAO,WAAW,CAAC,KAAK,MAAM;KACnD,MAAM,SAAS,MAAM,cAAc,OAAO,SAAS,MAAM,QAAQ;KACjE,IAAI,QAAQ,aAAa,MAAM;IAChC;GACD;EACD;CACD,CAAC;CACD,MAAM,cAAc,aAAa,CAAC,CAAC,QAAQ,SAAS,UAAU,EAAE,MAAM,SAAS;EAC9E,OAAO,eAAe,QAAQ,MAAM;GACnC,UAAU;GACV,QAAQ,GAAG,SAAgB;IAC1B,IAAI,UAAU,OAAO,OAAO,OAAO,KAAK,GAAG,MAAM;KAAE;KAAI;KAAO;KAAM,2BAAW,IAAI,KAAK;IAAE,CAAC;GAC5F;EACD,CAAC;CACF,CAAC;CACD,OAAO;AACR;AAEA,SAAS,WAAW,IAAY;CAC/B,OAAO,GAAG,QAAQ,8BAA8B,GAAG;AACpD;AAEA,SAAS,iBACR,WACA,UACA,QACC;CACD,UAAU,QAAO,MAAK,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,SAAQ,MAAK,EAAE,MAAM,QAAS,CAAC;AACpE;;;;;;AAOA,SAAS,UAAU,OAAiB,aAAuB,aAAmC;CAC7F,OAAO,gBAAgB,gBAAgB,KAAA,IAAY,cAAc,MAAM;AACxE"}
package/esm/memory.d.ts CHANGED
@@ -1,19 +1,22 @@
1
- import type { LogEntry, LogFormatter, LogReporter, LogReporterOptions } from './types.js';
2
- export type MemoryLogReporter = LogReporter<LogEntry> & {
3
- logs: LogEntry[];
4
- /**
5
- * Gets a simple log message for testing.
6
- * The message only contains arguments for each log entry.
7
- */
8
- getLogMessage(): string;
9
- getLogMessages(): string[];
10
- getLogMessageWithLevel(): string;
11
- getLogMessagesWithLevel(): string[];
12
- getLogMessagesWithIdAndLevel(): string[];
13
- emit(): void;
1
+ import { LogEntry, LogFormatter, LogReporter, LogReporterOptions } from "./types.js";
2
+ //#region ts/memory.d.ts
3
+ type MemoryLogReporter = LogReporter<LogEntry> & {
4
+ logs: LogEntry[];
5
+ /**
6
+ * Gets a simple log message for testing.
7
+ * The message only contains arguments for each log entry.
8
+ */
9
+ getLogMessage(): string;
10
+ getLogMessages(): string[];
11
+ getLogMessageWithLevel(): string;
12
+ getLogMessagesWithLevel(): string[];
13
+ getLogMessagesWithIdAndLevel(): string[];
14
+ emit(): void;
14
15
  };
15
- export type MemoryLogFormatter = LogFormatter<LogEntry>;
16
- export declare function toMessageWithLevel(logs: LogEntry[]): string;
17
- export declare function createMemoryLogReporter(options?: LogReporterOptions<LogEntry>): MemoryLogReporter;
18
- export declare function createMemoryWithConsoleLogReporter(options?: LogReporterOptions<LogEntry>): MemoryLogReporter;
16
+ type MemoryLogFormatter = LogFormatter<LogEntry>;
17
+ declare function toMessageWithLevel(logs: LogEntry[]): string;
18
+ declare function createMemoryLogReporter(options?: LogReporterOptions<LogEntry>): MemoryLogReporter;
19
+ declare function createMemoryWithConsoleLogReporter(options?: LogReporterOptions<LogEntry>): MemoryLogReporter;
20
+ //#endregion
21
+ export { MemoryLogFormatter, MemoryLogReporter, createMemoryLogReporter, createMemoryWithConsoleLogReporter, toMessageWithLevel };
19
22
  //# sourceMappingURL=memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../ts/memory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEzF,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG;IACvD,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB;;;OAGG;IACH,aAAa,IAAI,MAAM,CAAA;IACvB,cAAc,IAAI,MAAM,EAAE,CAAA;IAC1B,sBAAsB,IAAI,MAAM,CAAA;IAChC,uBAAuB,IAAI,MAAM,EAAE,CAAA;IACnC,4BAA4B,IAAI,MAAM,EAAE,CAAA;IACxC,IAAI,IAAI,IAAI,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AAEvD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAWlD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,iBAAiB,CAEjG;AA6CD,wBAAgB,kCAAkC,CACjD,OAAO,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GACpC,iBAAiB,CAMnB"}
1
+ {"version":3,"file":"memory.d.ts","names":[],"sources":["../ts/memory.ts"],"mappings":";;KAMY,oBAAoB,YAAY;EAC3C,MAAM;;;;;EAKN;EACA;EACA;EACA;EACA;EACA;;KAGW,qBAAqB,aAAa;iBAE9B,mBAAmB,MAAM;iBAazB,wBAAwB,UAAU,mBAAmB,YAAY;iBA+CjE,mCACf,UAAU,mBAAmB,YAC3B"}
package/esm/memory.js CHANGED
@@ -1,66 +1,61 @@
1
- import { required, unpartial } from 'type-plus';
2
- import { createConsoleLogReporter } from './console.js';
3
- import { formatLogLevel } from './formatter.js';
4
- import { toInspectLogEntry } from './platform.js';
5
- export function toMessageWithLevel(logs) {
6
- return (logs
7
- .map(toInspectLogEntry)
8
- .map(log => `${formatLogLevel(log.level)} ${log.args.join(' ')}`)
9
- .join('\n')
10
- // if it has more than this log,
11
- // we assume it is running under tests,
12
- // and remove this log to simplify testing.
13
- .replace(/^\(WARN\) already configured for test, ignoring config\(\) call\n/, ''));
1
+ import { formatLogLevel } from "./formatter.js";
2
+ import { toInspectLogEntry } from "./platform.js";
3
+ import { createConsoleLogReporter } from "./console.js";
4
+ import { required, unpartial } from "type-plus";
5
+ //#region ts/memory.ts
6
+ function toMessageWithLevel(logs) {
7
+ return logs.map(toInspectLogEntry).map((log) => `${formatLogLevel(log.level)} ${log.args.join(" ")}`).join("\n").replace(/^\(WARN\) already configured for test, ignoring config\(\) call\n/, "");
14
8
  }
15
- export function createMemoryLogReporter(options) {
16
- return Object.freeze(buildMemoryReporter(unpartial({ id: 'memory' }, options)));
9
+ function createMemoryLogReporter(options) {
10
+ return Object.freeze(buildMemoryReporter(unpartial({ id: "memory" }, options)));
17
11
  }
18
12
  function buildMemoryReporter(options) {
19
- const { id, formatter, filter } = required({ id: 'memory', formatter: (e) => e }, options);
20
- const logs = [];
21
- return {
22
- id,
23
- get formatter() {
24
- return formatter;
25
- },
26
- get filter() {
27
- return filter;
28
- },
29
- logs,
30
- write(entry) {
31
- if (filter && !filter(entry))
32
- return;
33
- logs.push(formatter(entry));
34
- },
35
- getLogMessage() {
36
- return this.getLogMessages().join('\n');
37
- },
38
- getLogMessages() {
39
- return logs.map(toInspectLogEntry).map(log => log.args.join(' '));
40
- },
41
- getLogMessagesWithLevel() {
42
- return logs.map(toInspectLogEntry).map(log => `${formatLogLevel(log.level)} ${log.args.join(' ')}`);
43
- },
44
- getLogMessagesWithIdAndLevel() {
45
- return logs
46
- .map(toInspectLogEntry)
47
- .map(log => `${log.id} ${formatLogLevel(log.level)} ${log.args.join(' ')}`);
48
- },
49
- getLogMessageWithLevel() {
50
- return toMessageWithLevel(logs);
51
- },
52
- /**
53
- * emit the saved log to console for easy debugging
54
- */
55
- emit() {
56
- const reporter = createConsoleLogReporter();
57
- logs.forEach(l => reporter.write(l));
58
- }
59
- };
13
+ const { id, formatter, filter } = required({
14
+ id: "memory",
15
+ formatter: (e) => e
16
+ }, options);
17
+ const logs = [];
18
+ return {
19
+ id,
20
+ get formatter() {
21
+ return formatter;
22
+ },
23
+ get filter() {
24
+ return filter;
25
+ },
26
+ logs,
27
+ write(entry) {
28
+ if (filter && !filter(entry)) return;
29
+ logs.push(formatter(entry));
30
+ },
31
+ getLogMessage() {
32
+ return this.getLogMessages().join("\n");
33
+ },
34
+ getLogMessages() {
35
+ return logs.map(toInspectLogEntry).map((log) => log.args.join(" "));
36
+ },
37
+ getLogMessagesWithLevel() {
38
+ return logs.map(toInspectLogEntry).map((log) => `${formatLogLevel(log.level)} ${log.args.join(" ")}`);
39
+ },
40
+ getLogMessagesWithIdAndLevel() {
41
+ return logs.map(toInspectLogEntry).map((log) => `${log.id} ${formatLogLevel(log.level)} ${log.args.join(" ")}`);
42
+ },
43
+ getLogMessageWithLevel() {
44
+ return toMessageWithLevel(logs);
45
+ },
46
+ /**
47
+ * emit the saved log to console for easy debugging
48
+ */
49
+ emit() {
50
+ const reporter = createConsoleLogReporter();
51
+ logs.forEach((l) => reporter.write(l));
52
+ }
53
+ };
60
54
  }
61
- export function createMemoryWithConsoleLogReporter(options) {
62
- return Object.freeze(Object.assign(buildMemoryReporter(unpartial({ id: 'memory-with-console' }, options)), {
63
- isConsoleReporter: true
64
- }));
55
+ function createMemoryWithConsoleLogReporter(options) {
56
+ return Object.freeze(Object.assign(buildMemoryReporter(unpartial({ id: "memory-with-console" }, options)), { isConsoleReporter: true }));
65
57
  }
58
+ //#endregion
59
+ export { createMemoryLogReporter, createMemoryWithConsoleLogReporter, toMessageWithLevel };
60
+
66
61
  //# sourceMappingURL=memory.js.map
package/esm/memory.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../ts/memory.ts"],"names":[],"mappings":"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","sourcesContent":["import { required, unpartial } from 'type-plus'\nimport { createConsoleLogReporter } from './console.js'\nimport { formatLogLevel } from './formatter.js'\nimport { toInspectLogEntry } from './platform.js'\nimport type { LogEntry, LogFormatter, LogReporter, LogReporterOptions } from './types.js'\n\nexport type MemoryLogReporter = LogReporter<LogEntry> & {\n\tlogs: LogEntry[]\n\t/**\n\t * Gets a simple log message for testing.\n\t * The message only contains arguments for each log entry.\n\t */\n\tgetLogMessage(): string\n\tgetLogMessages(): string[]\n\tgetLogMessageWithLevel(): string\n\tgetLogMessagesWithLevel(): string[]\n\tgetLogMessagesWithIdAndLevel(): string[]\n\temit(): void\n}\n\nexport type MemoryLogFormatter = LogFormatter<LogEntry>\n\nexport function toMessageWithLevel(logs: LogEntry[]) {\n\treturn (\n\t\tlogs\n\t\t\t.map(toInspectLogEntry)\n\t\t\t.map(log => `${formatLogLevel(log.level)} ${log.args.join(' ')}`)\n\t\t\t.join('\\n')\n\t\t\t// if it has more than this log,\n\t\t\t// we assume it is running under tests,\n\t\t\t// and remove this log to simplify testing.\n\t\t\t.replace(/^\\(WARN\\) already configured for test, ignoring config\\(\\) call\\n/, '')\n\t)\n}\n\nexport function createMemoryLogReporter(options?: LogReporterOptions<LogEntry>): MemoryLogReporter {\n\treturn Object.freeze(buildMemoryReporter(unpartial({ id: 'memory' }, options)))\n}\n\nfunction buildMemoryReporter(options?: LogReporterOptions<LogEntry>) {\n\tconst { id, formatter, filter } = required({ id: 'memory', formatter: (e: LogEntry) => e }, options)\n\tconst logs: LogEntry[] = []\n\treturn {\n\t\tid,\n\t\tget formatter() {\n\t\t\treturn formatter\n\t\t},\n\t\tget filter() {\n\t\t\treturn filter\n\t\t},\n\t\tlogs,\n\t\twrite(entry: LogEntry) {\n\t\t\tif (filter && !filter(entry)) return\n\t\t\tlogs.push(formatter(entry))\n\t\t},\n\t\tgetLogMessage() {\n\t\t\treturn this.getLogMessages().join('\\n')\n\t\t},\n\t\tgetLogMessages() {\n\t\t\treturn logs.map(toInspectLogEntry).map(log => log.args.join(' '))\n\t\t},\n\t\tgetLogMessagesWithLevel() {\n\t\t\treturn logs.map(toInspectLogEntry).map(log => `${formatLogLevel(log.level)} ${log.args.join(' ')}`)\n\t\t},\n\t\tgetLogMessagesWithIdAndLevel() {\n\t\t\treturn logs\n\t\t\t\t.map(toInspectLogEntry)\n\t\t\t\t.map(log => `${log.id} ${formatLogLevel(log.level)} ${log.args.join(' ')}`)\n\t\t},\n\t\tgetLogMessageWithLevel() {\n\t\t\treturn toMessageWithLevel(logs)\n\t\t},\n\t\t/**\n\t\t * emit the saved log to console for easy debugging\n\t\t */\n\t\temit() {\n\t\t\tconst reporter = createConsoleLogReporter()\n\t\t\tlogs.forEach(l => reporter.write(l))\n\t\t}\n\t}\n}\n\nexport function createMemoryWithConsoleLogReporter(\n\toptions?: LogReporterOptions<LogEntry>\n): MemoryLogReporter {\n\treturn Object.freeze(\n\t\tObject.assign(buildMemoryReporter(unpartial({ id: 'memory-with-console' }, options)), {\n\t\t\tisConsoleReporter: true\n\t\t})\n\t)\n}\n"]}
1
+ {"version":3,"file":"memory.js","names":[],"sources":["../ts/memory.ts"],"sourcesContent":["import { required, unpartial } from 'type-plus'\nimport { createConsoleLogReporter } from './console.js'\nimport { formatLogLevel } from './formatter.js'\nimport { toInspectLogEntry } from './platform.js'\nimport type { LogEntry, LogFormatter, LogReporter, LogReporterOptions } from './types.js'\n\nexport type MemoryLogReporter = LogReporter<LogEntry> & {\n\tlogs: LogEntry[]\n\t/**\n\t * Gets a simple log message for testing.\n\t * The message only contains arguments for each log entry.\n\t */\n\tgetLogMessage(): string\n\tgetLogMessages(): string[]\n\tgetLogMessageWithLevel(): string\n\tgetLogMessagesWithLevel(): string[]\n\tgetLogMessagesWithIdAndLevel(): string[]\n\temit(): void\n}\n\nexport type MemoryLogFormatter = LogFormatter<LogEntry>\n\nexport function toMessageWithLevel(logs: LogEntry[]) {\n\treturn (\n\t\tlogs\n\t\t\t.map(toInspectLogEntry)\n\t\t\t.map(log => `${formatLogLevel(log.level)} ${log.args.join(' ')}`)\n\t\t\t.join('\\n')\n\t\t\t// if it has more than this log,\n\t\t\t// we assume it is running under tests,\n\t\t\t// and remove this log to simplify testing.\n\t\t\t.replace(/^\\(WARN\\) already configured for test, ignoring config\\(\\) call\\n/, '')\n\t)\n}\n\nexport function createMemoryLogReporter(options?: LogReporterOptions<LogEntry>): MemoryLogReporter {\n\treturn Object.freeze(buildMemoryReporter(unpartial({ id: 'memory' }, options)))\n}\n\nfunction buildMemoryReporter(options?: LogReporterOptions<LogEntry>) {\n\tconst { id, formatter, filter } = required({ id: 'memory', formatter: (e: LogEntry) => e }, options)\n\tconst logs: LogEntry[] = []\n\treturn {\n\t\tid,\n\t\tget formatter() {\n\t\t\treturn formatter\n\t\t},\n\t\tget filter() {\n\t\t\treturn filter\n\t\t},\n\t\tlogs,\n\t\twrite(entry: LogEntry) {\n\t\t\tif (filter && !filter(entry)) return\n\t\t\tlogs.push(formatter(entry))\n\t\t},\n\t\tgetLogMessage() {\n\t\t\treturn this.getLogMessages().join('\\n')\n\t\t},\n\t\tgetLogMessages() {\n\t\t\treturn logs.map(toInspectLogEntry).map(log => log.args.join(' '))\n\t\t},\n\t\tgetLogMessagesWithLevel() {\n\t\t\treturn logs.map(toInspectLogEntry).map(log => `${formatLogLevel(log.level)} ${log.args.join(' ')}`)\n\t\t},\n\t\tgetLogMessagesWithIdAndLevel() {\n\t\t\treturn logs\n\t\t\t\t.map(toInspectLogEntry)\n\t\t\t\t.map(log => `${log.id} ${formatLogLevel(log.level)} ${log.args.join(' ')}`)\n\t\t},\n\t\tgetLogMessageWithLevel() {\n\t\t\treturn toMessageWithLevel(logs)\n\t\t},\n\t\t/**\n\t\t * emit the saved log to console for easy debugging\n\t\t */\n\t\temit() {\n\t\t\tconst reporter = createConsoleLogReporter()\n\t\t\tlogs.forEach(l => reporter.write(l))\n\t\t}\n\t}\n}\n\nexport function createMemoryWithConsoleLogReporter(\n\toptions?: LogReporterOptions<LogEntry>\n): MemoryLogReporter {\n\treturn Object.freeze(\n\t\tObject.assign(buildMemoryReporter(unpartial({ id: 'memory-with-console' }, options)), {\n\t\t\tisConsoleReporter: true\n\t\t})\n\t)\n}\n"],"mappings":";;;;;AAsBA,SAAgB,mBAAmB,MAAkB;CACpD,OACC,KACE,IAAI,iBAAiB,CAAC,CACtB,KAAI,QAAO,GAAG,eAAe,IAAI,KAAK,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,GAAG,CAAC,CAChE,KAAK,IAAI,CAAC,CAIV,QAAQ,qEAAqE,EAAE;AAEnF;AAEA,SAAgB,wBAAwB,SAA2D;CAClG,OAAO,OAAO,OAAO,oBAAoB,UAAU,EAAE,IAAI,SAAS,GAAG,OAAO,CAAC,CAAC;AAC/E;AAEA,SAAS,oBAAoB,SAAwC;CACpE,MAAM,EAAE,IAAI,WAAW,WAAW,SAAS;EAAE,IAAI;EAAU,YAAY,MAAgB;CAAE,GAAG,OAAO;CACnG,MAAM,OAAmB,CAAC;CAC1B,OAAO;EACN;EACA,IAAI,YAAY;GACf,OAAO;EACR;EACA,IAAI,SAAS;GACZ,OAAO;EACR;EACA;EACA,MAAM,OAAiB;GACtB,IAAI,UAAU,CAAC,OAAO,KAAK,GAAG;GAC9B,KAAK,KAAK,UAAU,KAAK,CAAC;EAC3B;EACA,gBAAgB;GACf,OAAO,KAAK,eAAe,CAAC,CAAC,KAAK,IAAI;EACvC;EACA,iBAAiB;GAChB,OAAO,KAAK,IAAI,iBAAiB,CAAC,CAAC,KAAI,QAAO,IAAI,KAAK,KAAK,GAAG,CAAC;EACjE;EACA,0BAA0B;GACzB,OAAO,KAAK,IAAI,iBAAiB,CAAC,CAAC,KAAI,QAAO,GAAG,eAAe,IAAI,KAAK,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,GAAG;EACnG;EACA,+BAA+B;GAC9B,OAAO,KACL,IAAI,iBAAiB,CAAC,CACtB,KAAI,QAAO,GAAG,IAAI,GAAG,GAAG,eAAe,IAAI,KAAK,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,GAAG;EAC5E;EACA,yBAAyB;GACxB,OAAO,mBAAmB,IAAI;EAC/B;;;;EAIA,OAAO;GACN,MAAM,WAAW,yBAAyB;GAC1C,KAAK,SAAQ,MAAK,SAAS,MAAM,CAAC,CAAC;EACpC;CACD;AACD;AAEA,SAAgB,mCACf,SACoB;CACpB,OAAO,OAAO,OACb,OAAO,OAAO,oBAAoB,UAAU,EAAE,IAAI,sBAAsB,GAAG,OAAO,CAAC,GAAG,EACrF,mBAAmB,KACpB,CAAC,CACF;AACD"}
@@ -1,6 +1,9 @@
1
- import type { ConsoleLike, LogEntry } from './types.js';
2
- export declare const toInspectLogEntry: (e: LogEntry) => LogEntry;
3
- export declare const polyfill: {
4
- console?: ConsoleLike;
1
+ import { ConsoleLike, LogEntry } from "./types.js";
2
+ //#region ts/platform.browser.d.ts
3
+ declare const toInspectLogEntry: (e: LogEntry) => LogEntry;
4
+ declare const polyfill: {
5
+ console?: ConsoleLike;
5
6
  };
7
+ //#endregion
8
+ export { polyfill, toInspectLogEntry };
6
9
  //# sourceMappingURL=platform.browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.browser.d.ts","sourceRoot":"","sources":["../ts/platform.browser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAEvD,eAAO,MAAM,iBAAiB,GAAI,GAAG,QAAQ,aAAM,CAAA;AAEnD,eAAO,MAAM,QAAQ,EAAE;IAAE,OAAO,CAAC,EAAE,WAAW,CAAA;CAAa,CAAA"}
1
+ {"version":3,"file":"platform.browser.d.ts","names":[],"sources":["../ts/platform.browser.ts"],"mappings":";;cAGa,oBAAiB,GAAO,aAAQ;cAEhC;EAAY,UAAU"}
@@ -1,4 +1,8 @@
1
- import { record } from 'type-plus';
2
- export const toInspectLogEntry = (e) => e;
3
- export const polyfill = record();
1
+ import { record } from "type-plus";
2
+ //#region ts/platform.browser.ts
3
+ const toInspectLogEntry = (e) => e;
4
+ const polyfill = record();
5
+ //#endregion
6
+ export { polyfill, toInspectLogEntry };
7
+
4
8
  //# sourceMappingURL=platform.browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.browser.js","sourceRoot":"","sources":["../ts/platform.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGlC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAA;AAEnD,MAAM,CAAC,MAAM,QAAQ,GAA8B,MAAM,EAAE,CAAA","sourcesContent":["import { record } from 'type-plus'\nimport type { ConsoleLike, LogEntry } from './types.js'\n\nexport const toInspectLogEntry = (e: LogEntry) => e\n\nexport const polyfill: { console?: ConsoleLike } = record()\n"]}
1
+ {"version":3,"file":"platform.browser.js","names":[],"sources":["../ts/platform.browser.ts"],"sourcesContent":["import { record } from 'type-plus'\nimport type { ConsoleLike, LogEntry } from './types.js'\n\nexport const toInspectLogEntry = (e: LogEntry) => e\n\nexport const polyfill: { console?: ConsoleLike } = record()\n"],"mappings":";;AAGA,MAAa,qBAAqB,MAAgB;AAElD,MAAa,WAAsC,OAAO"}
package/esm/platform.d.ts CHANGED
@@ -1,6 +1,9 @@
1
- import type { ConsoleLike, LogEntry } from './types.js';
2
- export declare const toInspectLogEntry: (e: LogEntry) => LogEntry;
3
- export declare const polyfill: {
4
- console?: ConsoleLike;
1
+ import { ConsoleLike, LogEntry } from "./types.js";
2
+ //#region ts/platform.d.ts
3
+ declare const toInspectLogEntry: (e: LogEntry) => LogEntry;
4
+ declare const polyfill: {
5
+ console?: ConsoleLike;
5
6
  };
7
+ //#endregion
8
+ export { polyfill, toInspectLogEntry };
6
9
  //# sourceMappingURL=platform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../ts/platform.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAEvD,eAAO,MAAM,iBAAiB,GAAI,GAAG,QAAQ,aAE5C,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE;IAAE,OAAO,CAAC,EAAE,WAAW,CAAA;CAAa,CAAA"}
1
+ {"version":3,"file":"platform.d.ts","names":[],"sources":["../ts/platform.ts"],"mappings":";;cAIa,oBAAiB,GAAO,aAAQ;cAIhC;EAAY,UAAU"}
package/esm/platform.js CHANGED
@@ -1,5 +1,9 @@
1
- import { inspect } from 'node:util';
2
- import { record } from 'type-plus';
3
- export const toInspectLogEntry = (e) => ((e.args = e.args.map(value => (typeof value === 'object' && value !== null ? inspect(value) : value))), e);
4
- export const polyfill = record();
1
+ import { record } from "type-plus";
2
+ import { inspect } from "node:util";
3
+ //#region ts/platform.ts
4
+ const toInspectLogEntry = (e) => (e.args = e.args.map((value) => typeof value === "object" && value !== null ? inspect(value) : value), e);
5
+ const polyfill = record();
6
+ //#endregion
7
+ export { polyfill, toInspectLogEntry };
8
+
5
9
  //# sourceMappingURL=platform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../ts/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGlC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAW,EAAE,EAAE,CAAC,CACjD,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CACzG,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAA8B,MAAM,EAAE,CAAA","sourcesContent":["import { inspect } from 'node:util'\nimport { record } from 'type-plus'\nimport type { ConsoleLike, LogEntry } from './types.js'\n\nexport const toInspectLogEntry = (e: LogEntry) => (\n\t(e.args = e.args.map(value => (typeof value === 'object' && value !== null ? inspect(value) : value))), e\n)\n\nexport const polyfill: { console?: ConsoleLike } = record()\n"]}
1
+ {"version":3,"file":"platform.js","names":[],"sources":["../ts/platform.ts"],"sourcesContent":["import { inspect } from 'node:util'\nimport { record } from 'type-plus'\nimport type { ConsoleLike, LogEntry } from './types.js'\n\nexport const toInspectLogEntry = (e: LogEntry) => (\n\t(e.args = e.args.map(value => (typeof value === 'object' && value !== null ? inspect(value) : value))), e\n)\n\nexport const polyfill: { console?: ConsoleLike } = record()\n"],"mappings":";;;AAIA,MAAa,qBAAqB,OAChC,EAAE,OAAO,EAAE,KAAK,KAAI,UAAU,OAAO,UAAU,YAAY,UAAU,OAAO,QAAQ,KAAK,IAAI,KAAM,GAAI;AAGzG,MAAa,WAAsC,OAAO"}
@@ -1,10 +1,13 @@
1
- import type { LogStore } from './log_store.js';
2
- import type { LogMethodNames, StandardLogInstance } from './types.js';
3
- export declare const ctx: {
4
- configured?: boolean;
5
- gsl?: {
6
- store: LogStore;
7
- standardLog: StandardLogInstance<LogMethodNames>;
8
- };
1
+ import { LogMethodNames, StandardLogInstance } from "./types.js";
2
+ import { LogStore } from "./log_store.js";
3
+ //#region ts/standard_log.ctx.d.ts
4
+ declare const ctx: {
5
+ configured?: boolean;
6
+ gsl?: {
7
+ store: LogStore;
8
+ standardLog: StandardLogInstance<LogMethodNames>;
9
+ };
9
10
  };
11
+ //#endregion
12
+ export { ctx };
10
13
  //# sourceMappingURL=standard_log.ctx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"standard_log.ctx.d.ts","sourceRoot":"","sources":["../ts/standard_log.ctx.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErE,eAAO,MAAM,GAAG,EAAE;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,GAAG,CAAC,EAAE;QAAE,KAAK,EAAE,QAAQ,CAAC;QAAC,WAAW,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAA;KAAE,CAAA;CAChE,CAAA"}
1
+ {"version":3,"file":"standard_log.ctx.d.ts","names":[],"sources":["../ts/standard_log.ctx.ts"],"mappings":";;;cAIa;EACZ;EACA;IAAQ,OAAO;IAAU,aAAa,oBAAoB"}
@@ -1,3 +1,7 @@
1
- import { record } from 'type-plus';
2
- export const ctx = record();
1
+ import { record } from "type-plus";
2
+ //#region ts/standard_log.ctx.ts
3
+ const ctx = record();
4
+ //#endregion
5
+ export { ctx };
6
+
3
7
  //# sourceMappingURL=standard_log.ctx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standard_log.ctx.js","sourceRoot":"","sources":["../ts/standard_log.ctx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAIlC,MAAM,CAAC,MAAM,GAAG,GAGZ,MAAM,EAAE,CAAA","sourcesContent":["import { record } from 'type-plus'\nimport type { LogStore } from './log_store.js'\nimport type { LogMethodNames, StandardLogInstance } from './types.js'\n\nexport const ctx: {\n\tconfigured?: boolean\n\tgsl?: { store: LogStore; standardLog: StandardLogInstance<LogMethodNames> }\n} = record()\n"]}
1
+ {"version":3,"file":"standard_log.ctx.js","names":[],"sources":["../ts/standard_log.ctx.ts"],"sourcesContent":["import { record } from 'type-plus'\nimport type { LogStore } from './log_store.js'\nimport type { LogMethodNames, StandardLogInstance } from './types.js'\n\nexport const ctx: {\n\tconfigured?: boolean\n\tgsl?: { store: LogStore; standardLog: StandardLogInstance<LogMethodNames> }\n} = record()\n"],"mappings":";;AAIA,MAAa,MAGT,OAAO"}
@@ -1,17 +1,19 @@
1
- import { type LogStore } from './log_store.js';
2
- import type { Logger, LoggerOptions, LogMethodNames, StandardLogInstance, StandardLogOptions } from './types.js';
3
- export interface StandardLog<N extends string = LogMethodNames> extends Readonly<StandardLogInstance<N>> {
4
- }
5
- export declare function createStandardLog<N extends string = LogMethodNames>(options?: StandardLogOptions<N>): StandardLog<N>;
6
- export declare function createStandardLogClosure<N extends string = LogMethodNames>(options?: StandardLogOptions<N>): {
7
- store: LogStore;
8
- standardLog: StandardLog<N>;
1
+ import { LogMethodNames, Logger, LoggerOptions, StandardLogInstance, StandardLogOptions } from "./types.js";
2
+ import { LogStore } from "./log_store.js";
3
+ //#region ts/standard_log.d.ts
4
+ interface StandardLog<N extends string = LogMethodNames> extends Readonly<StandardLogInstance<N>> {}
5
+ declare function createStandardLog<N extends string = LogMethodNames>(options?: StandardLogOptions<N>): StandardLog<N>;
6
+ declare function createStandardLogClosure<N extends string = LogMethodNames>(options?: StandardLogOptions<N>): {
7
+ store: LogStore;
8
+ standardLog: StandardLog<N>;
9
9
  };
10
10
  /**
11
11
  * Suppress logging within the code block.
12
12
  */
13
- export declare function suppressLogs<R>(block: () => R, log: Logger, ...logs: Logger[]): R;
14
- export type GetLogger<N extends string = LogMethodNames> = (id: string, options?: LoggerOptions) => Logger<LogMethodNames | N>;
15
- export declare function getLogger<N extends string = LogMethodNames>(id: string, options?: LoggerOptions): Logger<LogMethodNames | N>;
16
- export declare function configGlobal(options: Omit<StandardLogOptions, 'customLevels'>): void;
13
+ declare function suppressLogs<R>(block: () => R, log: Logger, ...logs: Logger[]): R;
14
+ type GetLogger<N extends string = LogMethodNames> = (id: string, options?: LoggerOptions) => Logger<LogMethodNames | N>;
15
+ declare function getLogger<N extends string = LogMethodNames>(id: string, options?: LoggerOptions): Logger<N | LogMethodNames>;
16
+ declare function configGlobal(options: Omit<StandardLogOptions, 'customLevels'>): void;
17
+ //#endregion
18
+ export { GetLogger, StandardLog, configGlobal, createStandardLog, createStandardLogClosure, getLogger, suppressLogs };
17
19
  //# sourceMappingURL=standard_log.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"standard_log.d.ts","sourceRoot":"","sources":["../ts/standard_log.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAG9D,OAAO,KAAK,EACX,MAAM,EACN,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,cAAc,CAAE,SAAQ,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;CAAG;AAE3G,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,cAAc,EAClE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,WAAW,CAAC,CAAC,CAAC,CAWhB;AAID,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,MAAM,GAAG,cAAc,EACzE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;CAAE,CAgDlD;AASD;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;AASlF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,cAAc,IAAI,CAC1D,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,aAAa,KACnB,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA;AAE/B,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,8BAE/F;AAQD,wBAAgB,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC,QAqB7E"}
1
+ {"version":3,"file":"standard_log.d.ts","names":[],"sources":["../ts/standard_log.ts"],"mappings":";;;UAaiB,YAAY,mBAAmB,wBAAwB,SAAS,oBAAoB;iBAErF,kBAAkB,mBAAmB,gBACpD,UAAU,mBAAmB,KAC3B,YAAY;iBAeC,yBAAyB,mBAAmB,gBAC3D,UAAU,mBAAmB;EACzB,OAAO;EAAU,aAAa,YAAY;;;;;iBA4D/B,aAAa,GAAG,aAAa,GAAG,KAAK,WAAW,MAAM,WAAW;KASrE,UAAU,mBAAmB,mBACxC,YACA,UAAU,kBACN,OAAO,iBAAiB;iBAEb,UAAU,mBAAmB,gBAAgB,YAAY,UAAU,gBAAa,OAAA,IAAA;iBAUhF,aAAa,SAAS,KAAK"}