@bazariodev/docket 1.0.0 → 1.1.0

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 (53) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +33 -2
  3. package/dist/browser/index.cjs +2 -2
  4. package/dist/browser/index.js +2 -2
  5. package/dist/{chunk-LRCHwVuE.js → chunk---OIebMz.js} +31 -3
  6. package/dist/chunk---OIebMz.js.map +1 -0
  7. package/dist/{chunk-CEhpwtwJ.cjs → chunk-BMmKUicm.cjs} +9 -3
  8. package/dist/chunk-BMmKUicm.cjs.map +1 -0
  9. package/dist/{chunk-DkvWLziD.js → chunk-CJmlBW-M.js} +67 -24
  10. package/dist/chunk-CJmlBW-M.js.map +1 -0
  11. package/dist/{chunk-DYcNnkOV.js → chunk-D1NggH6k.js} +2 -2
  12. package/dist/{chunk-DYcNnkOV.js.map → chunk-D1NggH6k.js.map} +1 -1
  13. package/dist/{chunk-ieB8yTEn.cjs → chunk-DEyTe0f4.cjs} +67 -24
  14. package/dist/chunk-DEyTe0f4.cjs.map +1 -0
  15. package/dist/{chunk-BLf-eCDO.cjs → chunk-DLnBMRjo.cjs} +3 -1
  16. package/dist/chunk-DLnBMRjo.cjs.map +1 -0
  17. package/dist/{chunk-CSS3f4_M.js → chunk-Da877R_E.js} +4 -2
  18. package/dist/chunk-Da877R_E.js.map +1 -0
  19. package/dist/{chunk-7ld72rnl.js → chunk-De6BoS1P.js} +9 -3
  20. package/dist/chunk-De6BoS1P.js.map +1 -0
  21. package/dist/{chunk-CXZYNALm.cjs → chunk-Dl2KJDqt.cjs} +31 -2
  22. package/dist/chunk-Dl2KJDqt.cjs.map +1 -0
  23. package/dist/{chunk-DqK_3eFr.cjs → chunk-DlZYLPaU.cjs} +2 -2
  24. package/dist/{chunk-DqK_3eFr.cjs.map → chunk-DlZYLPaU.cjs.map} +1 -1
  25. package/dist/client/index.cjs +4 -4
  26. package/dist/client/index.js +4 -4
  27. package/dist/core/constants.d.cts +2 -0
  28. package/dist/core/constants.d.ts +2 -0
  29. package/dist/export/index.cjs +4 -4
  30. package/dist/export/index.js +4 -4
  31. package/dist/history/index.cjs +2 -2
  32. package/dist/history/index.js +2 -2
  33. package/dist/index.cjs +5 -5
  34. package/dist/index.d.cts +7 -4
  35. package/dist/index.d.ts +7 -4
  36. package/dist/index.js +5 -5
  37. package/dist/redaction/index.cjs +4 -2
  38. package/dist/redaction/index.cjs.map +1 -1
  39. package/dist/redaction/index.js +4 -2
  40. package/dist/redaction/index.js.map +1 -1
  41. package/dist/sip/index.cjs +1 -1
  42. package/dist/sip/index.js +1 -1
  43. package/dist/upload/index.cjs +2 -2
  44. package/dist/upload/index.js +2 -2
  45. package/package.json +2 -2
  46. package/dist/chunk-7ld72rnl.js.map +0 -1
  47. package/dist/chunk-BLf-eCDO.cjs.map +0 -1
  48. package/dist/chunk-CEhpwtwJ.cjs.map +0 -1
  49. package/dist/chunk-CSS3f4_M.js.map +0 -1
  50. package/dist/chunk-CXZYNALm.cjs.map +0 -1
  51. package/dist/chunk-DkvWLziD.js.map +0 -1
  52. package/dist/chunk-LRCHwVuE.js.map +0 -1
  53. package/dist/chunk-ieB8yTEn.cjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Add an optional third `options` argument to `debug`, `info`, `warn`, and `error`.
8
+ Use `{ metadata: { report: false } }` for application-defined sink selection without
9
+ a change to record severity. Docket does not interpret flag names or values.
10
+ - Retain metadata on completed records through redaction, diagnostic truncation, freezing,
11
+ history, copying, and upload. Accept at most 16 boolean flags with names of 1 to 64
12
+ JavaScript string units. Copy flags for each call and keep subsequent records independent.
13
+
14
+ ### Patch Changes
15
+
16
+ - Recheck admission after metadata inspection and before lazy data. Prevent record delivery
17
+ after an inspection callback or admission gate stops logging.
18
+ - Accept explicit and conditional `undefined` metadata with `exactOptionalPropertyTypes`
19
+ in ESM and CommonJS declarations.
20
+
21
+ ### Consumer notes
22
+
23
+ Custom redactors must return the supplied flags unchanged and include them in the total
24
+ record-size calculation before applications use flagged calls. Invalid options report source
25
+ `data`; missing or changed output flags report source `redactor`. Logger methods do not throw.
26
+ Calls without options retain their existing diagnostic data, severity, and serialization.
27
+
3
28
  ## 1.0.0
4
29
 
5
30
  ### Major Changes
package/README.md CHANGED
@@ -823,6 +823,35 @@ to a standalone cleanup provider. With Hopper `clearIndexedDbStore`, it clears e
823
823
  and metadata without creating a database. Listing can still access IndexedDB. The new memory
824
824
  entries never call this cleanup path.
825
825
 
826
+ ## Record metadata
827
+
828
+ Pass flags in the third argument. The application can use them to select records in a sink.
829
+
830
+ ```js
831
+ logger.warn('request.failed', { error }, { metadata: { report: false } });
832
+ // A sink can skip a record when record.metadata?.report === false.
833
+ ```
834
+
835
+ Use `undefined` for data when the call has no diagnostic data. Options must be a non-null
836
+ object and cannot be an array. Docket reads only the own `metadata` data property. It ignores
837
+ other and inherited properties. An accessor is invalid. Omitted or undefined options and empty
838
+ or undefined metadata add no property to the record.
839
+
840
+ Metadata must be a plain object or an object with a null prototype. It can have at most 16 own,
841
+ enumerable string data properties. Each name must contain 1 to 64 JavaScript string units.
842
+ Each value must be a boolean. Symbols and accessors are invalid. Use static, non-secret names.
843
+ Do not put diagnostic values or user identifiers in flags. Invalid input drops the record and
844
+ reports source `data`. Docket copies and freezes the flags before it calls lazy data.
845
+ Inspection runs under the reentry guard, and admission is checked again before lazy data.
846
+
847
+ Flags stay unchanged when diagnostic data is truncated. They count toward the total record size.
848
+ If the headers, flags, and truncation marker cannot fit, Docket drops the record and reports
849
+ source `redactor`. Custom redactors must support metadata before flagged calls are used. They
850
+ must return the same flags and include them in the record-size calculation. Docket checks the
851
+ returned flags against its original frozen copy. Changed, added, or missing flags drop the record
852
+ and report source `redactor`. Key order and object identity can differ. Text formatting does not
853
+ show flags. Structured records retain them.
854
+
826
855
  ## Behavior
827
856
 
828
857
  `isActive` is an optional admission guard. Returning `false` stops a record before conversion or
@@ -881,7 +910,7 @@ Other providers must state their supported behavior.
881
910
  | --- | --- |
882
911
  | Docket client | Hub options plus `history` and `upload`. Returns hub methods, `history`, `outbox`, and `upload`. Disabled features are `undefined`. Stop cancels sending before storage shutdown. |
883
912
  | Hub | Required `areas`, `redactor`; optional `sinks`, `context`, `levelStorage`, `maxOverrideMs`, `stormLimit`, `scheduler`, clocks, `createRunId`, `onError`, `isActive`. Methods: `getLogger`, `setContext`, `setLevel`, `resetLevel`, `reloadLevels`, `getLevels`, `addSink`, `flush`, `stop`. |
884
- | Logger | `debug`, `info`, `warn`, `error` accept `(message, data?)`. `child({ scope?, context? })` adds bindings. |
913
+ | Logger | `debug`, `info`, `warn`, `error` accept `(message, data?, options?)`. `child({ scope?, context? })` adds bindings. |
885
914
  | Redactor | Policy: `version`, `hash`, `fields`, `unknownFields`, `text`, `limits`. Methods: `redact`, `redactValue`, `redactText`, `mask`, optional `hash`. Resolved `limits` and `version` are public. |
886
915
  | Memory store | `maxSizePerArea`, `defaultMaxSizePerArea`, `maxTotalSize`, `maxAgeMs`, `now`, `overflowStrategy`, `onRotate`, `scheduler`, `onError`. Methods: `write`, `query`, `flush`, `clear`, `stop`, `getStatus`. |
887
916
  | IndexedDB store | Memory options plus required `databaseName` and `lockName`, optional `indexedDB`, `locks`, `allowUnprotected`, batch/queue/interval/count limits, and `fallback`. |
@@ -978,7 +1007,9 @@ Import `MemoryHistoryOptions` and `MemoryHistory` from `@bazariodev/docket/histo
978
1007
  `UploadSinkOptions`, `UploadSinkStatus`, `UploadSink`, and `UploadOutbox` from
979
1008
  `@bazariodev/docket/upload`. Hopper's `Outbox<LogRecord>` satisfies the upload port.
980
1009
  Queue types are internal. Consumers do not supply or import them for memory history.
981
- Import `LogRecord` from `@bazariodev/docket`. Use `createMemoryStore<LogRecord>` when selecting
1010
+ Import `LogRecord`, `LogMetadata`, and `LogOptions` from `@bazariodev/docket`.
1011
+ `LogOptions.metadata` accepts explicit or conditional `undefined` with `exactOptionalPropertyTypes`.
1012
+ Use `createMemoryStore<LogRecord>` when selecting
982
1013
  Hopper's standalone store or rotation snapshots. The export source receives a query argument.
983
1014
 
984
1015
  ## License
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var common = require('../chunk-CXZYNALm.cjs');
4
- require('../chunk-BLf-eCDO.cjs');
3
+ var common = require('../chunk-Dl2KJDqt.cjs');
4
+ require('../chunk-DLnBMRjo.cjs');
5
5
 
6
6
  const ENVIRONMENT_FIELDS = /* @__PURE__ */ Object.freeze({
7
7
  LANGUAGE: 'language',
@@ -1,5 +1,5 @@
1
- import { b as report } from '../chunk-LRCHwVuE.js';
2
- import '../chunk-CSS3f4_M.js';
1
+ import { b as report } from '../chunk---OIebMz.js';
2
+ import '../chunk-Da877R_E.js';
3
3
 
4
4
  const ENVIRONMENT_FIELDS = /* @__PURE__ */ Object.freeze({
5
5
  LANGUAGE: 'language',
@@ -1,4 +1,4 @@
1
- import { L as LEVELS, a as LIMITS } from './chunk-CSS3f4_M.js';
1
+ import { L as LEVELS, a as LIMITS, b as LOGGING_LIMITS } from './chunk-Da877R_E.js';
2
2
 
3
3
  const levelOrder = Object.values(LEVELS);
4
4
 
@@ -56,6 +56,34 @@ function own(value, key) {
56
56
  return Object.getOwnPropertyDescriptor(value, key)?.value;
57
57
  }
58
58
 
59
+ function copyMetadata(value) {
60
+ if (value === undefined) return undefined;
61
+ if (
62
+ !value ||
63
+ typeof value !== 'object' ||
64
+ ![Object.prototype, null].includes(Object.getPrototypeOf(value))
65
+ )
66
+ throw new TypeError('Invalid metadata');
67
+ const keys = Reflect.ownKeys(value);
68
+ if (keys.length > LOGGING_LIMITS.METADATA_KEYS)
69
+ throw new TypeError('Invalid metadata');
70
+ const result = {};
71
+ for (const key of keys) {
72
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
73
+ if (
74
+ typeof key !== 'string' ||
75
+ !key.length ||
76
+ key.length > LOGGING_LIMITS.METADATA_KEY_LENGTH ||
77
+ !descriptor?.enumerable ||
78
+ !Object.hasOwn(descriptor, 'value') ||
79
+ typeof descriptor.value !== 'boolean'
80
+ )
81
+ throw new TypeError('Invalid metadata');
82
+ define(result, key, descriptor.value);
83
+ }
84
+ return keys.length ? Object.freeze(result) : undefined;
85
+ }
86
+
59
87
  function isError(value) {
60
88
  try {
61
89
  return Error.isError?.(value) || value instanceof Error;
@@ -106,5 +134,5 @@ function validateQuery(query = {}) {
106
134
  record.at <= (to ?? Infinity);
107
135
  }
108
136
 
109
- export { assertLevel as a, report as b, assertStormLimit as c, define as d, randomHex as e, copyBindings as f, isError as i, levelRank as l, own as o, positive as p, resolveLimits as r, scheduler as s, validateQuery as v };
110
- //# sourceMappingURL=chunk-LRCHwVuE.js.map
137
+ export { assertLevel as a, report as b, copyMetadata as c, define as d, assertStormLimit as e, randomHex as f, copyBindings as g, isError as i, levelRank as l, own as o, positive as p, resolveLimits as r, scheduler as s, validateQuery as v };
138
+ //# sourceMappingURL=chunk---OIebMz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk---OIebMz.js","sources":["../src/core/common.js"],"sourcesContent":["import { LEVELS, LIMITS, LOGGING_LIMITS } from './constants.js';\n\nconst levelOrder = Object.values(LEVELS);\n\nexport const scheduler = Object.freeze({\n setTimeout: (callback, delay) => globalThis.setTimeout(callback, delay),\n clearTimeout: (handle) => globalThis.clearTimeout(handle),\n});\nexport const levelRank = (level) => levelOrder.indexOf(level);\n\nexport function assertLevel(level) {\n if (levelRank(level) < 0) throw new TypeError('Invalid log level');\n}\n\nexport function assertStormLimit(value) {\n if (\n value !== undefined &&\n value !== false &&\n (!Number.isSafeInteger(value) || value < 1)\n )\n throw new TypeError('Invalid storm limit');\n}\n\nexport function positive(value, name) {\n if (!Number.isSafeInteger(value) || value < 1)\n throw new TypeError(`${name} must be a positive safe integer`);\n return value;\n}\n\nexport function resolveLimits(limits = {}) {\n const result = {};\n for (const [key, fallback] of Object.entries(LIMITS))\n result[key] = positive(limits[key] ?? fallback, key);\n return Object.freeze(result);\n}\n\nexport function report(callback, ...args) {\n try {\n const result = callback?.(...args);\n if (result) Promise.resolve(result).catch(() => {});\n } catch {\n /* The reporter cannot interrupt cleanup. */\n }\n}\n\nexport function define(target, key, value) {\n Object.defineProperty(target, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n}\n\nexport function own(value, key) {\n return Object.getOwnPropertyDescriptor(value, key)?.value;\n}\n\nexport function copyMetadata(value) {\n if (value === undefined) return undefined;\n if (\n !value ||\n typeof value !== 'object' ||\n ![Object.prototype, null].includes(Object.getPrototypeOf(value))\n )\n throw new TypeError('Invalid metadata');\n const keys = Reflect.ownKeys(value);\n if (keys.length > LOGGING_LIMITS.METADATA_KEYS)\n throw new TypeError('Invalid metadata');\n const result = {};\n for (const key of keys) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (\n typeof key !== 'string' ||\n !key.length ||\n key.length > LOGGING_LIMITS.METADATA_KEY_LENGTH ||\n !descriptor?.enumerable ||\n !Object.hasOwn(descriptor, 'value') ||\n typeof descriptor.value !== 'boolean'\n )\n throw new TypeError('Invalid metadata');\n define(result, key, descriptor.value);\n }\n return keys.length ? Object.freeze(result) : undefined;\n}\n\nexport function isError(value) {\n try {\n return Error.isError?.(value) || value instanceof Error;\n } catch {\n return false;\n }\n}\n\nexport function randomHex(length) {\n if (!globalThis.crypto?.getRandomValues)\n throw new Error('Cryptographic randomness is unavailable');\n return Array.from(\n globalThis.crypto.getRandomValues(new Uint8Array(length)),\n (byte) => byte.toString(16).padStart(2, '0'),\n ).join('');\n}\n\nexport function copyBindings(value = {}) {\n const result = {};\n for (const key of Reflect.ownKeys(value)) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (\n typeof key === 'string' &&\n descriptor?.enumerable &&\n Object.hasOwn(descriptor, 'value')\n )\n Object.defineProperty(result, key, descriptor);\n }\n return result;\n}\n\nexport function validateQuery(query = {}) {\n const { from, to, areas } = query;\n if (\n (from !== undefined && !Number.isFinite(from)) ||\n (to !== undefined && !Number.isFinite(to)) ||\n (from ?? -Infinity) > (to ?? Infinity)\n )\n throw new TypeError('Invalid record time range');\n if (\n areas !== undefined &&\n (!Array.isArray(areas) || areas.some((area) => typeof area !== 'string'))\n )\n throw new TypeError('Invalid record areas');\n return (record) =>\n (!areas || areas.includes(record.area)) &&\n record.at >= (from ?? -Infinity) &&\n record.at <= (to ?? Infinity);\n}\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var common = require('./chunk-CXZYNALm.cjs');
4
- var constants = require('./chunk-BLf-eCDO.cjs');
3
+ var common = require('./chunk-Dl2KJDqt.cjs');
4
+ var constants = require('./chunk-DLnBMRjo.cjs');
5
5
 
6
6
  const errorKeys = ['name', 'message', 'stack', 'cause', 'errors', 'fields'];
7
7
  const recordKeys = [
@@ -17,6 +17,7 @@ const recordKeys = [
17
17
  'context',
18
18
  'error',
19
19
  'truncated',
20
+ 'metadata',
20
21
  ];
21
22
 
22
23
  function errorShape(keys, descriptors) {
@@ -317,6 +318,11 @@ function ownJson(value, limits, { record = false } = {}) {
317
318
  childDepth = depth;
318
319
  childOverflow = descriptor.value === constants.MARKERS.LIMIT;
319
320
  }
321
+ if (kind === 'record' && key === 'metadata') {
322
+ const metadata = common.copyMetadata(descriptor.value);
323
+ if (metadata) common.define(result, key, metadata);
324
+ continue;
325
+ }
320
326
  common.define(
321
327
  result,
322
328
  key,
@@ -376,4 +382,4 @@ function ownRecord(record, limits) {
376
382
 
377
383
  exports.ownJson = ownJson;
378
384
  exports.ownRecord = ownRecord;
379
- //# sourceMappingURL=chunk-CEhpwtwJ.cjs.map
385
+ //# sourceMappingURL=chunk-BMmKUicm.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-BMmKUicm.cjs","sources":["../src/core/conversion.js"],"sourcesContent":["import { copyMetadata, define, own } from './common.js';\nimport { LEVELS, MARKERS } from './constants.js';\n\nconst errorKeys = ['name', 'message', 'stack', 'cause', 'errors', 'fields'];\nconst recordKeys = [\n 'runId',\n 'seq',\n 'at',\n 'level',\n 'area',\n 'scope',\n 'message',\n 'redactionVersion',\n 'fields',\n 'context',\n 'error',\n 'truncated',\n 'metadata',\n];\n\nfunction errorShape(keys, descriptors) {\n return (\n keys.every((key) => errorKeys.includes(key)) &&\n typeof descriptors.get('name')?.value === 'string' &&\n typeof descriptors.get('message')?.value === 'string' &&\n (!descriptors.has('stack') ||\n typeof descriptors.get('stack').value === 'string')\n );\n}\n\nfunction errorMarker({ array, keys, descriptors }) {\n return (\n !array &&\n keys.length === 2 &&\n descriptors.get('name')?.value === 'Error' &&\n descriptors.get('message')?.value === MARKERS.LIMIT\n );\n}\n\nfunction arrayIndex(key, length) {\n const index = typeof key === 'string' ? Number(key) : -1;\n return (\n Number.isSafeInteger(index) &&\n index >= 0 &&\n index < length &&\n String(index) === key\n );\n}\n\nexport function ownJson(value, limits, { record = false } = {}) {\n let nodes = 0;\n let classifiedNodes = 0;\n const ancestors = new Set();\n const snapshots = new WeakMap();\n const classifications = new WeakMap();\n const classifying = new Set();\n\n function inspect(value, kind = '') {\n const cached = snapshots.get(value);\n if (cached) return cached;\n const array = Array.isArray(value);\n const length = array ? own(value, 'length') : 0;\n if (\n array &&\n (!Number.isSafeInteger(length) ||\n length < 0 ||\n length > limits.maxArrayLength + 1)\n )\n throw new TypeError('Invalid redactor bounds');\n const keys = Reflect.ownKeys(value).filter(\n (key) => !(array && key === 'length'),\n );\n const ceiling =\n kind === 'marker'\n ? 2\n : kind === 'record'\n ? recordKeys.length\n : Math.max(limits.maxKeys + 1, errorKeys.length);\n if (\n (array && keys.length > limits.maxArrayLength + 1) ||\n (!array && keys.length > ceiling)\n )\n throw new TypeError('Invalid redactor bounds');\n const descriptors = new Map();\n for (const key of keys) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (!descriptor || !Object.hasOwn(descriptor, 'value'))\n throw new TypeError('Invalid redactor property');\n descriptors.set(key, descriptor);\n }\n const snapshot = { array, length, keys, descriptors };\n snapshots.set(value, snapshot);\n return snapshot;\n }\n\n function errorRelationships({ descriptors }, depth) {\n const fields = descriptors.get('fields');\n if (\n fields &&\n (!fields.value ||\n typeof fields.value !== 'object' ||\n Array.isArray(fields.value))\n )\n return false;\n const cause = descriptors.get('cause');\n if (cause && !canonicalError(cause.value, depth + 1)) return false;\n const errors = descriptors.get('errors');\n if (!errors) return true;\n if (!Array.isArray(errors.value)) return false;\n const { length, keys, descriptors: children } = inspect(errors.value);\n if (length !== keys.length || !keys.every((key) => arrayIndex(key, length)))\n return false;\n for (const key of keys)\n if (!canonicalError(children.get(key).value, depth + 1)) return false;\n return (\n length <= limits.maxArrayLength ||\n errorMarker(inspect(children.get(String(length - 1)).value))\n );\n }\n\n function canonicalError(value, depth) {\n if (!value || typeof value !== 'object' || Array.isArray(value))\n return false;\n const cached = classifications.get(value);\n if (cached !== undefined) return cached;\n if (classifying.has(value)) return false;\n const snapshot = inspect(\n value,\n depth > limits.maxDepth || classifiedNodes >= limits.maxNodes\n ? 'marker'\n : '',\n );\n if (!errorShape(snapshot.keys, snapshot.descriptors)) {\n classifications.set(value, false);\n return false;\n }\n if (errorMarker(snapshot)) {\n classifications.set(value, true);\n return true;\n }\n if (depth > limits.maxDepth) return false;\n if (++classifiedNodes > limits.maxNodes)\n throw new TypeError('Invalid redactor bounds');\n classifying.add(value);\n const valid = errorRelationships(snapshot, depth);\n classifying.delete(value);\n classifications.set(value, valid);\n return valid;\n }\n\n function charge(kind, marker) {\n if (\n !marker &&\n ![\n 'record',\n 'header',\n 'fixed',\n 'error-name',\n 'error-text',\n 'errors',\n 'error-fields',\n 'boxed-fields',\n ].includes(kind) &&\n ++nodes > limits.maxNodes\n )\n throw new TypeError('Invalid redactor bounds');\n }\n\n function copy(value, depth, kind = '', overflow = false) {\n const compound = value && typeof value === 'object';\n const marker = overflow && value === MARKERS.LIMIT;\n if (!compound) {\n if (\n [\n 'error',\n 'errors',\n 'error-fields',\n 'record',\n 'fields',\n 'context',\n ].includes(kind)\n )\n throw new TypeError('Invalid redactor JSON');\n charge(kind, marker);\n if (depth > limits.maxDepth && value !== MARKERS.LIMIT)\n throw new TypeError('Invalid redactor bounds');\n if (\n value === null ||\n typeof value === 'boolean' ||\n (typeof value === 'number' && Number.isFinite(value))\n )\n return value;\n if (\n typeof value === 'string' &&\n (value.length <= limits.maxStringLength ||\n Object.values(MARKERS).includes(value) ||\n (kind === 'fixed' && value.length <= 64) ||\n (kind === 'error-name' && value === 'Error'))\n )\n return value;\n throw new TypeError('Invalid redactor JSON');\n }\n if (ancestors.has(value)) throw new TypeError('Invalid redactor JSON');\n if (\n depth > limits.maxDepth &&\n kind !== 'errors' &&\n !(overflow && kind === 'error')\n )\n throw new TypeError('Invalid redactor bounds');\n const { array, length, keys, descriptors } = inspect(\n value,\n depth > limits.maxDepth && kind === 'error' ? 'marker' : kind,\n );\n if (\n (kind === 'errors' && !array) ||\n (['record', 'error', 'error-fields', 'fields', 'context'].includes(\n kind,\n ) &&\n array)\n )\n throw new TypeError('Invalid redactor JSON');\n const shapedError = !array && errorShape(keys, descriptors);\n if (kind === 'error' && !shapedError)\n throw new TypeError('Invalid serialized error');\n if (!kind && shapedError && canonicalError(value, depth)) kind = 'error';\n if (kind === 'fields' && keys.length === 1 && keys[0] === 'value')\n kind = 'boxed-fields';\n const overflowMarker =\n overflow && kind === 'error' && errorMarker({ array, keys, descriptors });\n if (overflowMarker)\n return Object.freeze({ name: 'Error', message: MARKERS.LIMIT });\n if (depth > limits.maxDepth && kind !== 'errors')\n throw new TypeError('Invalid redactor bounds');\n charge(kind, false);\n const schema = kind === 'record' || kind === 'error';\n const keyLimit = schema\n ? kind === 'record'\n ? recordKeys.length\n : errorKeys.length\n : array\n ? limits.maxArrayLength\n : limits.maxKeys;\n const lastKey = array && length ? String(length - 1) : '';\n const last = descriptors.get(lastKey)?.value;\n const markerCount = array\n ? Number(\n last === MARKERS.LIMIT ||\n (kind === 'errors' && last && typeof last === 'object'),\n )\n : Number(descriptors.get(MARKERS.LIMIT)?.value === MARKERS.LIMIT);\n if (\n keys.length > keyLimit + markerCount ||\n (array &&\n (length !== keys.length ||\n length > limits.maxArrayLength + markerCount))\n )\n throw new TypeError('Invalid redactor bounds');\n if (kind === 'record' && keys.some((key) => !recordKeys.includes(key)))\n throw new TypeError('Invalid record property');\n const result = array ? [] : {};\n ancestors.add(value);\n for (const key of keys) {\n if (array && !arrayIndex(key, length))\n throw new TypeError('Invalid redactor index');\n const descriptor = descriptors.get(key);\n if (\n typeof key !== 'string' ||\n (!schema &&\n !array &&\n kind !== 'boxed-fields' &&\n key.length > limits.maxStringLength &&\n !Object.values(MARKERS).includes(key)) ||\n !Object.hasOwn(descriptor, 'value')\n )\n throw new TypeError('Invalid redactor property');\n let childKind = '';\n let childDepth = depth + 1;\n let childOverflow =\n (array &&\n key === lastKey &&\n (last === MARKERS.LIMIT || (kind === 'errors' && markerCount))) ||\n (key === MARKERS.LIMIT && descriptor.value === MARKERS.LIMIT);\n if (kind === 'record') {\n childDepth = 0;\n childKind = 'header';\n if (key === 'context') childKind = 'context';\n if (key === 'fields') childKind = 'fields';\n if (key === 'error') {\n childKind = 'error';\n childOverflow = true;\n }\n if (['runId', 'level', 'redactionVersion'].includes(key))\n childKind = 'fixed';\n } else if (kind === 'error') {\n switch (key) {\n case 'cause':\n childKind = 'error';\n childOverflow = true;\n break;\n case 'errors':\n childKind = 'errors';\n break;\n case 'fields':\n childKind = 'error-fields';\n childDepth = depth;\n break;\n default:\n childKind = key === 'name' ? 'error-name' : 'error-text';\n childDepth = depth;\n }\n } else if (kind === 'errors') {\n childKind = 'error';\n childDepth = depth;\n if (depth > limits.maxDepth) childOverflow = true;\n } else if (kind === 'boxed-fields') {\n childDepth = depth;\n childOverflow = descriptor.value === MARKERS.LIMIT;\n }\n if (kind === 'record' && key === 'metadata') {\n const metadata = copyMetadata(descriptor.value);\n if (metadata) define(result, key, metadata);\n continue;\n }\n define(\n result,\n key,\n copy(descriptor.value, childDepth, childKind, childOverflow),\n );\n }\n\n if (array && length > limits.maxArrayLength) {\n const end = result[length - 1];\n if (\n end !== MARKERS.LIMIT &&\n !(\n kind === 'errors' &&\n end &&\n typeof end === 'object' &&\n Object.keys(end).length === 2 &&\n end.name === 'Error' &&\n end.message === MARKERS.LIMIT\n )\n )\n throw new TypeError('Invalid redactor bounds');\n }\n\n ancestors.delete(value);\n return Object.freeze(result);\n }\n const result = copy(value, 0, record ? 'record' : '');\n if (JSON.stringify(result).length > limits.maxRecordSize)\n throw new TypeError('Invalid record size');\n return result;\n}\n\nexport function ownRecord(record, limits) {\n const result = ownJson(record, limits, { record: true });\n for (const key of ['runId', 'area', 'scope', 'message', 'redactionVersion'])\n if (typeof result[key] !== 'string')\n throw new TypeError('Invalid record header');\n if (\n !Number.isSafeInteger(result.seq) ||\n result.seq < 1 ||\n !Number.isFinite(result.at) ||\n !Object.values(LEVELS).includes(result.level)\n )\n throw new TypeError('Invalid record header');\n if (\n result.context !== undefined &&\n Object.values(result.context).some(\n (value) => typeof value !== 'string' && typeof value !== 'number',\n )\n )\n throw new TypeError('Invalid record context');\n\n if (result.truncated !== undefined && result.truncated !== true)\n throw new TypeError('Invalid truncation flag');\n return result;\n}\n"],"names":["MARKERS","own","copyMetadata","define","LEVELS"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { p as positive, a as assertLevel, l as levelRank, d as define, s as scheduler, r as resolveLimits, c as assertStormLimit, e as randomHex, f as copyBindings, b as report } from './chunk-LRCHwVuE.js';
2
- import { b as LOGGING_ERROR_CODES, c as LOGGING_LIMITS, d as LOGGING_ERROR_SOURCES, L as LEVELS } from './chunk-CSS3f4_M.js';
3
- import { a as ownRecord } from './chunk-7ld72rnl.js';
1
+ import { p as positive, a as assertLevel, l as levelRank, d as define, s as scheduler, r as resolveLimits, e as assertStormLimit, f as randomHex, g as copyBindings, b as report, c as copyMetadata } from './chunk---OIebMz.js';
2
+ import { c as LOGGING_ERROR_CODES, b as LOGGING_LIMITS, d as LOGGING_ERROR_SOURCES, L as LEVELS } from './chunk-Da877R_E.js';
3
+ import { a as ownRecord } from './chunk-De6BoS1P.js';
4
4
 
5
5
  const LOGGING_ERRORS = /* @__PURE__ */ Object.freeze({
6
6
  [LOGGING_ERROR_CODES.RECURSIVE_LOGGING]: 'Recursive logging is rejected',
@@ -210,7 +210,16 @@ function createLogging(options) {
210
210
  for (const sink of options.sinks ?? []) addSink(sink);
211
211
  const levels = createLevels({ ...options, now, scheduler: scheduler$1 }, onError);
212
212
 
213
- function emit(area, scope, binding, level, message, data, bypass = false) {
213
+ function emit(
214
+ area,
215
+ scope,
216
+ binding,
217
+ level,
218
+ message,
219
+ data,
220
+ callOptions,
221
+ bypass = false,
222
+ ) {
214
223
  try {
215
224
  if (busy) {
216
225
  onError(
@@ -222,6 +231,7 @@ function createLogging(options) {
222
231
  if (
223
232
  closed ||
224
233
  options.isActive?.() === false ||
234
+ closed ||
225
235
  sinks.size === 0 ||
226
236
  (!bypass && !levels.enabled(area, level))
227
237
  )
@@ -266,36 +276,68 @@ function createLogging(options) {
266
276
  busy = true;
267
277
  try {
268
278
  let value;
279
+ let metadata;
269
280
  try {
281
+ if (callOptions !== undefined) {
282
+ if (
283
+ !callOptions ||
284
+ typeof callOptions !== 'object' ||
285
+ Array.isArray(callOptions)
286
+ )
287
+ throw new TypeError('Invalid log options');
288
+ const descriptor = Object.getOwnPropertyDescriptor(
289
+ callOptions,
290
+ 'metadata',
291
+ );
292
+ if (descriptor && !Object.hasOwn(descriptor, 'value'))
293
+ throw new TypeError('Invalid log options');
294
+ metadata = copyMetadata(descriptor?.value);
295
+ if (options.isActive?.() === false || closed || sinks.size === 0)
296
+ return;
297
+ }
270
298
  value = typeof data === 'function' ? data() : data;
271
299
  } catch (error) {
272
300
  onError(error, LOGGING_ERROR_SOURCES.DATA);
273
301
  return;
274
302
  }
275
- if (options.isActive?.() === false || sinks.size === 0) return;
303
+ if (options.isActive?.() === false || closed || sinks.size === 0)
304
+ return;
276
305
  let record;
277
306
  try {
278
- record = ownRecord(
279
- redactor.redact({
280
- runId,
281
- seq: ++seq,
282
- at: now(),
283
- area,
284
- scope,
285
- level,
286
- message,
287
- context: { ...context, ...binding },
288
- data: value,
289
- }),
290
- limits,
291
- );
307
+ const draft = {
308
+ runId,
309
+ seq: ++seq,
310
+ at: now(),
311
+ area,
312
+ scope,
313
+ level,
314
+ message,
315
+ context: { ...context, ...binding },
316
+ data: value,
317
+ };
318
+ if (metadata) draft.metadata = metadata;
319
+ record = ownRecord(redactor.redact(draft), limits);
320
+ const actual = record.metadata;
321
+ const keys = metadata ? Object.keys(metadata) : [];
322
+ if (
323
+ (actual ? Object.keys(actual).length : 0) !== keys.length ||
324
+ keys.some(
325
+ (key) =>
326
+ !Object.hasOwn(actual, key) || actual[key] !== metadata[key],
327
+ )
328
+ )
329
+ throw new TypeError('Invalid redactor metadata');
292
330
  } catch (error) {
293
331
  onError(error, LOGGING_ERROR_SOURCES.REDACTOR);
294
332
  return;
295
333
  }
296
- if (options.isActive?.() === false) return;
334
+ if (options.isActive?.() === false || closed) return;
297
335
  for (const registration of registrations) {
298
- if (options.isActive?.() === false || !sinks.has(registration))
336
+ if (
337
+ options.isActive?.() === false ||
338
+ closed ||
339
+ !sinks.has(registration)
340
+ )
299
341
  continue;
300
342
  try {
301
343
  registration.sink.write(record);
@@ -325,6 +367,7 @@ function createLogging(options) {
325
367
  'warn',
326
368
  'logging.suppressed',
327
369
  { scope: counter.scope, dropped },
370
+ undefined,
328
371
  true,
329
372
  );
330
373
  }
@@ -333,8 +376,8 @@ function createLogging(options) {
333
376
  function logger(area, scope, binding = {}) {
334
377
  const result = {};
335
378
  for (const level of Object.values(LEVELS))
336
- result[level] = (message, data) =>
337
- emit(area, scope, binding, level, message, data);
379
+ result[level] = (message, data, callOptions) =>
380
+ emit(area, scope, binding, level, message, data, callOptions);
338
381
  result.child = ({
339
382
  scope: childScope = scope,
340
383
  context: childContext = {},
@@ -434,4 +477,4 @@ function createLogging(options) {
434
477
  }
435
478
 
436
479
  export { createLogging as c };
437
- //# sourceMappingURL=chunk-DkvWLziD.js.map
480
+ //# sourceMappingURL=chunk-CJmlBW-M.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-CJmlBW-M.js","sources":["../src/core/errors.js","../src/core/levels.js","../src/core/hub.js"],"sourcesContent":["import { LOGGING_ERROR_CODES } from './constants.js';\n\nexport const LOGGING_ERRORS = /* @__PURE__ */ Object.freeze({\n [LOGGING_ERROR_CODES.RECURSIVE_LOGGING]: 'Recursive logging is rejected',\n [LOGGING_ERROR_CODES.ROOT_LOGGER_CACHE_LIMIT]:\n 'Root logger cache exceeds 1000 pairs',\n [LOGGING_ERROR_CODES.STOPPED]: 'Logging is stopped',\n});\n\nexport function loggingError(code) {\n return Object.assign(new Error(LOGGING_ERRORS[code]), { code });\n}\n","import { assertLevel, define, levelRank, positive } from './common.js';\nimport { LOGGING_ERROR_SOURCES, LOGGING_LIMITS } from './constants.js';\n\nexport function createLevels(options, reportError) {\n const { now, scheduler, levelStorage, areas } = options;\n const maxDuration = positive(\n options.maxOverrideMs ?? LOGGING_LIMITS.DEFAULT_LEVEL_OVERRIDE_MS,\n 'maxOverrideMs',\n );\n const states = new Map();\n let stopped = false;\n for (const { id, level = 'info' } of areas) {\n assertLevel(level);\n if (typeof id !== 'string' || !id || states.has(id))\n throw new TypeError('Areas must have unique non-empty IDs');\n states.set(id, {\n level,\n defaultLevel: level,\n rank: levelRank(level),\n until: undefined,\n timer: undefined,\n });\n }\n const requireArea = (area) => {\n const state = states.get(area);\n if (!state) throw new TypeError('Unknown log area');\n return state;\n };\n\n function save() {\n if (!levelStorage || stopped) return;\n const overrides = {};\n for (const [id, state] of states)\n if (state.until)\n define(overrides, id, { level: state.level, until: state.until });\n try {\n levelStorage.storage.setItem(levelStorage.key, JSON.stringify(overrides));\n } catch (error) {\n reportError(error, LOGGING_ERROR_SOURCES.STORAGE);\n }\n }\n\n function reset(state) {\n scheduler.clearTimeout(state.timer);\n state.timer = undefined;\n state.until = undefined;\n state.level = state.defaultLevel;\n state.rank = levelRank(state.level);\n }\n\n function apply(state, level, until) {\n reset(state);\n state.level = level;\n state.rank = levelRank(level);\n state.until = until;\n state.timer = scheduler.setTimeout(\n () => {\n if (stopped) return;\n if (until > now()) {\n apply(state, level, until);\n return;\n }\n reset(state);\n save();\n },\n Math.min(LOGGING_LIMITS.MAX_TIMER_DELAY_MS, Math.max(0, until - now())),\n );\n }\n\n function reloadLevels() {\n if (stopped) return;\n for (const state of states.values()) reset(state);\n if (!levelStorage) return;\n try {\n const saved = JSON.parse(\n levelStorage.storage.getItem(levelStorage.key) ?? '{}',\n );\n if (!saved || typeof saved !== 'object') return;\n const time = now();\n for (const [id, state] of states) {\n const override = Object.hasOwn(saved, id) && saved[id];\n if (\n override &&\n levelRank(override.level) >= 0 &&\n Number.isFinite(override.until) &&\n override.until > time\n )\n apply(\n state,\n override.level,\n Math.min(override.until, time + maxDuration),\n );\n }\n } catch (error) {\n reportError(error, LOGGING_ERROR_SOURCES.STORAGE);\n }\n }\n reloadLevels();\n return {\n requireArea,\n enabled(area, level) {\n const state = requireArea(area);\n if (state.until && state.until <= now()) {\n reset(state);\n save();\n }\n return levelRank(level) >= state.rank;\n },\n\n setLevel(area, level, { durationMs = maxDuration } = {}) {\n assertLevel(level);\n positive(durationMs, 'durationMs');\n const state = requireArea(area);\n if (stopped) return;\n apply(state, level, now() + Math.min(durationMs, maxDuration));\n save();\n },\n\n resetLevel(area) {\n if (stopped) return;\n if (area !== undefined) reset(requireArea(area));\n else for (const state of states.values()) reset(state);\n save();\n },\n reloadLevels,\n getLevels() {\n const result = {};\n for (const [id, state] of states) {\n if (state.until && state.until <= now()) {\n reset(state);\n save();\n }\n define(\n result,\n id,\n Object.freeze({\n level: state.level,\n defaultLevel: state.defaultLevel,\n ...(state.until ? { until: state.until } : {}),\n }),\n );\n }\n return Object.freeze(result);\n },\n\n stop() {\n stopped = true;\n for (const state of states.values()) scheduler.clearTimeout(state.timer);\n },\n };\n}\n","import {\n assertStormLimit,\n copyBindings,\n copyMetadata,\n scheduler as hostScheduler,\n randomHex,\n report,\n resolveLimits,\n} from './common.js';\nimport {\n LEVELS,\n LOGGING_ERROR_CODES,\n LOGGING_ERROR_SOURCES,\n LOGGING_LIMITS,\n} from './constants.js';\nimport { ownRecord } from './conversion.js';\nimport { loggingError } from './errors.js';\nimport { createLevels } from './levels.js';\n\nexport function createLogging(options) {\n if (\n !Array.isArray(options?.areas) ||\n !options.redactor ||\n typeof options.redactor.redact !== 'function'\n )\n throw new TypeError('Areas and an explicit redactor are required');\n const {\n redactor,\n now = Date.now,\n monotonicNow = () => globalThis.performance?.now() ?? Date.now(),\n scheduler = hostScheduler,\n stormLimit = LOGGING_LIMITS.DEFAULT_STORM_LIMIT,\n } = options;\n const limits = resolveLimits(redactor.limits);\n if (\n !redactor.limits ||\n Object.keys(limits).some((key) => !Object.hasOwn(redactor.limits, key))\n )\n throw new TypeError('Redactor limits are required');\n assertStormLimit(stormLimit);\n const runId = options.createRunId?.() ?? randomHex(16);\n if (typeof runId !== 'string' || !runId)\n throw new TypeError('Invalid run ID');\n const sinks = new Set();\n const roots = new Map();\n const storms = new Map();\n let context = copyBindings(options.context);\n let seq = 0;\n let closed = false;\n let busy = false;\n let scopeReported = false;\n let reporting = false;\n let stormTimer;\n let stopPromise;\n\n function onError(error, source) {\n if (reporting) return;\n reporting = true;\n const wasBusy = busy;\n busy = true;\n report(options.onError, error, source);\n busy = wasBusy;\n reporting = false;\n }\n for (const sink of options.sinks ?? []) addSink(sink);\n const levels = createLevels({ ...options, now, scheduler }, onError);\n\n function emit(\n area,\n scope,\n binding,\n level,\n message,\n data,\n callOptions,\n bypass = false,\n ) {\n try {\n if (busy) {\n onError(\n loggingError(LOGGING_ERROR_CODES.RECURSIVE_LOGGING),\n LOGGING_ERROR_SOURCES.REENTRY,\n );\n return;\n }\n if (\n closed ||\n options.isActive?.() === false ||\n closed ||\n sinks.size === 0 ||\n (!bypass && !levels.enabled(area, level))\n )\n return;\n if (!bypass && stormLimit !== false) {\n const key = JSON.stringify([area, scope]);\n let counter = storms.get(key);\n if (!counter) {\n const cacheKey =\n storms.size < LOGGING_LIMITS.STORM_SCOPE_PAIRS ? key : 'overflow';\n counter = storms.get(cacheKey);\n if (!counter) {\n counter = {\n area,\n scope,\n start: monotonicNow(),\n count: 0,\n dropped: 0,\n };\n storms.set(cacheKey, counter);\n }\n }\n const time = monotonicNow();\n if (\n time - counter.start >= LOGGING_LIMITS.STORM_WINDOW_MS ||\n time < counter.start\n ) {\n counter.start = time;\n counter.count = 0;\n }\n if (counter.count++ >= stormLimit) {\n counter.dropped++;\n if (stormTimer === undefined)\n stormTimer = scheduler.setTimeout(\n summarize,\n LOGGING_LIMITS.STORM_SUMMARY_DELAY_MS,\n );\n return;\n }\n }\n const registrations = Array.from(sinks);\n busy = true;\n try {\n let value;\n let metadata;\n try {\n if (callOptions !== undefined) {\n if (\n !callOptions ||\n typeof callOptions !== 'object' ||\n Array.isArray(callOptions)\n )\n throw new TypeError('Invalid log options');\n const descriptor = Object.getOwnPropertyDescriptor(\n callOptions,\n 'metadata',\n );\n if (descriptor && !Object.hasOwn(descriptor, 'value'))\n throw new TypeError('Invalid log options');\n metadata = copyMetadata(descriptor?.value);\n if (options.isActive?.() === false || closed || sinks.size === 0)\n return;\n }\n value = typeof data === 'function' ? data() : data;\n } catch (error) {\n onError(error, LOGGING_ERROR_SOURCES.DATA);\n return;\n }\n if (options.isActive?.() === false || closed || sinks.size === 0)\n return;\n let record;\n try {\n const draft = {\n runId,\n seq: ++seq,\n at: now(),\n area,\n scope,\n level,\n message,\n context: { ...context, ...binding },\n data: value,\n };\n if (metadata) draft.metadata = metadata;\n record = ownRecord(redactor.redact(draft), limits);\n const actual = record.metadata;\n const keys = metadata ? Object.keys(metadata) : [];\n if (\n (actual ? Object.keys(actual).length : 0) !== keys.length ||\n keys.some(\n (key) =>\n !Object.hasOwn(actual, key) || actual[key] !== metadata[key],\n )\n )\n throw new TypeError('Invalid redactor metadata');\n } catch (error) {\n onError(error, LOGGING_ERROR_SOURCES.REDACTOR);\n return;\n }\n if (options.isActive?.() === false || closed) return;\n for (const registration of registrations) {\n if (\n options.isActive?.() === false ||\n closed ||\n !sinks.has(registration)\n )\n continue;\n try {\n registration.sink.write(record);\n } catch (error) {\n onError(error, LOGGING_ERROR_SOURCES.SINK);\n }\n }\n } finally {\n busy = false;\n }\n } catch (error) {\n busy = false;\n onError(error, LOGGING_ERROR_SOURCES.DATA);\n }\n }\n\n function summarize() {\n stormTimer = undefined;\n for (const counter of storms.values()) {\n if (!counter.dropped) continue;\n const dropped = counter.dropped;\n counter.dropped = 0;\n emit(\n counter.area,\n counter.scope,\n {},\n 'warn',\n 'logging.suppressed',\n { scope: counter.scope, dropped },\n undefined,\n true,\n );\n }\n }\n\n function logger(area, scope, binding = {}) {\n const result = {};\n for (const level of Object.values(LEVELS))\n result[level] = (message, data, callOptions) =>\n emit(area, scope, binding, level, message, data, callOptions);\n result.child = ({\n scope: childScope = scope,\n context: childContext = {},\n } = {}) =>\n logger(area, childScope, { ...binding, ...copyBindings(childContext) });\n return Object.freeze(result);\n }\n\n function addSink(sink) {\n if (!sink || typeof sink.write !== 'function')\n throw new TypeError('A sink must have write');\n if (closed) throw loggingError(LOGGING_ERROR_CODES.STOPPED);\n const registration = { sink };\n sinks.add(registration);\n return () => {\n sinks.delete(registration);\n };\n }\n\n async function lifecycle(registrations, methods) {\n const failures = [];\n for (const method of methods) {\n await Promise.all(\n registrations.map(async ({ sink }) => {\n try {\n const previous = busy;\n busy = true;\n let result;\n try {\n result = sink[method]?.();\n } finally {\n busy = previous;\n }\n await result;\n } catch (error) {\n failures.push(error);\n onError(error, LOGGING_ERROR_SOURCES.SINK);\n }\n }),\n );\n }\n if (failures.length)\n throw new AggregateError(failures, 'Logging lifecycle failed');\n }\n return Object.freeze({\n runId,\n getLogger(area, scope) {\n levels.requireArea(area);\n if (typeof scope !== 'string')\n throw new TypeError('Scope must be a string');\n const key = JSON.stringify([area, scope]);\n const cached = roots.get(key);\n if (cached) return cached;\n const created = logger(area, scope);\n if (roots.size < LOGGING_LIMITS.ROOT_LOGGER_CACHE_PAIRS) {\n roots.set(key, created);\n return created;\n }\n if (!scopeReported) {\n scopeReported = true;\n onError(\n loggingError(LOGGING_ERROR_CODES.ROOT_LOGGER_CACHE_LIMIT),\n LOGGING_ERROR_SOURCES.SCOPE,\n );\n }\n return created;\n },\n\n setContext(values) {\n context = { ...context, ...copyBindings(values) };\n for (const key of Object.keys(context))\n if (context[key] === undefined) delete context[key];\n },\n setLevel: levels.setLevel,\n resetLevel: levels.resetLevel,\n reloadLevels: levels.reloadLevels,\n getLevels: levels.getLevels,\n addSink,\n flush() {\n const registrations = Array.from(sinks);\n return Promise.resolve().then(() => lifecycle(registrations, ['flush']));\n },\n\n stop() {\n if (!stopPromise) {\n closed = true;\n levels.stop();\n scheduler.clearTimeout(stormTimer);\n const registrations = Array.from(sinks);\n stopPromise = Promise.resolve().then(() =>\n lifecycle(registrations, ['flush', 'stop']),\n );\n }\n return stopPromise;\n },\n });\n}\n"],"names":["scheduler","hostScheduler"],"mappings":";;;;AAEO,MAAM,cAAc,mBAAmB,MAAM,CAAC,MAAM,CAAC;AAC5D,EAAE,CAAC,mBAAmB,CAAC,iBAAiB,GAAG,+BAA+B;AAC1E,EAAE,CAAC,mBAAmB,CAAC,uBAAuB;AAC9C,IAAI,sCAAsC;AAC1C,EAAE,CAAC,mBAAmB,CAAC,OAAO,GAAG,oBAAoB;AACrD,CAAC,CAAC;;AAEK,SAAS,YAAY,CAAC,IAAI,EAAE;AACnC,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;AACjE;;ACRO,SAAS,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE;AACnD,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,OAAO;AACzD,EAAE,MAAM,WAAW,GAAG,QAAQ;AAC9B,IAAI,OAAO,CAAC,aAAa,IAAI,cAAc,CAAC,yBAAyB;AACrE,IAAI,eAAe;AACnB,GAAG;AACH,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE;AAC1B,EAAE,IAAI,OAAO,GAAG,KAAK;AACrB,EAAE,KAAK,MAAM,EAAE,EAAE,EAAE,KAAK,GAAG,MAAM,EAAE,IAAI,KAAK,EAAE;AAC9C,IAAI,WAAW,CAAC,KAAK,CAAC;AACtB,IAAI,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACvD,MAAM,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC;AACjE,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE;AACnB,MAAM,KAAK;AACX,MAAM,YAAY,EAAE,KAAK;AACzB,MAAM,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC;AAC5B,MAAM,KAAK,EAAE,SAAS;AACtB,MAAM,KAAK,EAAE,SAAS;AACtB,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,WAAW,GAAG,CAAC,IAAI,KAAK;AAChC,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAClC,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC;AACvD,IAAI,OAAO,KAAK;AAChB,EAAE,CAAC;;AAEH,EAAE,SAAS,IAAI,GAAG;AAClB,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,EAAE;AAClC,IAAI,MAAM,SAAS,GAAG,EAAE;AACxB,IAAI,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM;AACpC,MAAM,IAAI,KAAK,CAAC,KAAK;AACrB,QAAQ,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;AACzE,IAAI,IAAI;AACR,MAAM,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC/E,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,WAAW,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC;AACvD,IAAI;AACJ,EAAE;;AAEF,EAAE,SAAS,KAAK,CAAC,KAAK,EAAE;AACxB,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;AACvC,IAAI,KAAK,CAAC,KAAK,GAAG,SAAS;AAC3B,IAAI,KAAK,CAAC,KAAK,GAAG,SAAS;AAC3B,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY;AACpC,IAAI,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AACvC,EAAE;;AAEF,EAAE,SAAS,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AACtC,IAAI,KAAK,CAAC,KAAK,CAAC;AAChB,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK;AACvB,IAAI,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;AACjC,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK;AACvB,IAAI,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,UAAU;AACtC,MAAM,MAAM;AACZ,QAAQ,IAAI,OAAO,EAAE;AACrB,QAAQ,IAAI,KAAK,GAAG,GAAG,EAAE,EAAE;AAC3B,UAAU,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACpC,UAAU;AACV,QAAQ;AACR,QAAQ,KAAK,CAAC,KAAK,CAAC;AACpB,QAAQ,IAAI,EAAE;AACd,MAAM,CAAC;AACP,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC;AAC7E,KAAK;AACL,EAAE;;AAEF,EAAE,SAAS,YAAY,GAAG;AAC1B,IAAI,IAAI,OAAO,EAAE;AACjB,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC;AACrD,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,IAAI,IAAI;AACR,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AAC9B,QAAQ,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI;AAC9D,OAAO;AACP,MAAM,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC/C,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE;AACxB,MAAM,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;AACxC,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;AAC9D,QAAQ;AACR,UAAU,QAAQ;AAClB,UAAU,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACxC,UAAU,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzC,UAAU,QAAQ,CAAC,KAAK,GAAG;AAC3B;AACA,UAAU,KAAK;AACf,YAAY,KAAK;AACjB,YAAY,QAAQ,CAAC,KAAK;AAC1B,YAAY,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,WAAW,CAAC;AACxD,WAAW;AACX,MAAM;AACN,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,WAAW,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC;AACvD,IAAI;AACJ,EAAE;AACF,EAAE,YAAY,EAAE;AAChB,EAAE,OAAO;AACT,IAAI,WAAW;AACf,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;AACzB,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC;AACrC,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE;AAC/C,QAAQ,KAAK,CAAC,KAAK,CAAC;AACpB,QAAQ,IAAI,EAAE;AACd,MAAM;AACN,MAAM,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI;AAC3C,IAAI,CAAC;;AAEL,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,UAAU,GAAG,WAAW,EAAE,GAAG,EAAE,EAAE;AAC7D,MAAM,WAAW,CAAC,KAAK,CAAC;AACxB,MAAM,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;AACxC,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC;AACrC,MAAM,IAAI,OAAO,EAAE;AACnB,MAAM,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACpE,MAAM,IAAI,EAAE;AACZ,IAAI,CAAC;;AAEL,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,MAAM,IAAI,OAAO,EAAE;AACnB,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACtD,WAAW,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC;AAC5D,MAAM,IAAI,EAAE;AACZ,IAAI,CAAC;AACL,IAAI,YAAY;AAChB,IAAI,SAAS,GAAG;AAChB,MAAM,MAAM,MAAM,GAAG,EAAE;AACvB,MAAM,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;AACxC,QAAQ,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE;AACjD,UAAU,KAAK,CAAC,KAAK,CAAC;AACtB,UAAU,IAAI,EAAE;AAChB,QAAQ;AACR,QAAQ,MAAM;AACd,UAAU,MAAM;AAChB,UAAU,EAAE;AACZ,UAAU,MAAM,CAAC,MAAM,CAAC;AACxB,YAAY,KAAK,EAAE,KAAK,CAAC,KAAK;AAC9B,YAAY,YAAY,EAAE,KAAK,CAAC,YAAY;AAC5C,YAAY,IAAI,KAAK,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;AAC1D,WAAW,CAAC;AACZ,SAAS;AACT,MAAM;AACN,MAAM,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC,IAAI,CAAC;;AAEL,IAAI,IAAI,GAAG;AACX,MAAM,OAAO,GAAG,IAAI;AACpB,MAAM,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;AAC9E,IAAI,CAAC;AACL,GAAG;AACH;;ACnIO,SAAS,aAAa,CAAC,OAAO,EAAE;AACvC,EAAE;AACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;AAClC,IAAI,CAAC,OAAO,CAAC,QAAQ;AACrB,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK;AACvC;AACA,IAAI,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC;AACtE,EAAE,MAAM;AACR,IAAI,QAAQ;AACZ,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG;AAClB,IAAI,YAAY,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE;AACpE,eAAIA,WAAS,GAAGC,SAAa;AAC7B,IAAI,UAAU,GAAG,cAAc,CAAC,mBAAmB;AACnD,GAAG,GAAG,OAAO;AACb,EAAE,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC/C,EAAE;AACF,IAAI,CAAC,QAAQ,CAAC,MAAM;AACpB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;AAC1E;AACA,IAAI,MAAM,IAAI,SAAS,CAAC,8BAA8B,CAAC;AACvD,EAAE,gBAAgB,CAAC,UAAU,CAAC;AAC9B,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC;AACxD,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK;AACzC,IAAI,MAAM,IAAI,SAAS,CAAC,gBAAgB,CAAC;AACzC,EAAE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE;AACzB,EAAE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE;AACzB,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE;AAC1B,EAAE,IAAI,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7C,EAAE,IAAI,GAAG,GAAG,CAAC;AACb,EAAE,IAAI,MAAM,GAAG,KAAK;AACpB,EAAE,IAAI,IAAI,GAAG,KAAK;AAClB,EAAE,IAAI,aAAa,GAAG,KAAK;AAC3B,EAAE,IAAI,SAAS,GAAG,KAAK;AACvB,EAAE,IAAI,UAAU;AAChB,EAAE,IAAI,WAAW;;AAEjB,EAAE,SAAS,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;AAClC,IAAI,IAAI,SAAS,EAAE;AACnB,IAAI,SAAS,GAAG,IAAI;AACpB,IAAI,MAAM,OAAO,GAAG,IAAI;AACxB,IAAI,IAAI,GAAG,IAAI;AACf,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC;AAC1C,IAAI,IAAI,GAAG,OAAO;AAClB,IAAI,SAAS,GAAG,KAAK;AACrB,EAAE;AACF,EAAE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC;AACvD,EAAE,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,aAAED,WAAS,EAAE,EAAE,OAAO,CAAC;;AAEtE,EAAE,SAAS,IAAI;AACf,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,IAAI;AACR,IAAI,WAAW;AACf,IAAI,MAAM,GAAG,KAAK;AAClB,IAAI;AACJ,IAAI,IAAI;AACR,MAAM,IAAI,IAAI,EAAE;AAChB,QAAQ,OAAO;AACf,UAAU,YAAY,CAAC,mBAAmB,CAAC,iBAAiB,CAAC;AAC7D,UAAU,qBAAqB,CAAC,OAAO;AACvC,SAAS;AACT,QAAQ;AACR,MAAM;AACN,MAAM;AACN,QAAQ,MAAM;AACd,QAAQ,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK;AACtC,QAAQ,MAAM;AACd,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC;AACxB,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AAChD;AACA,QAAQ;AACR,MAAM,IAAI,CAAC,MAAM,IAAI,UAAU,KAAK,KAAK,EAAE;AAC3C,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACjD,QAAQ,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACrC,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,UAAU,MAAM,QAAQ;AACxB,YAAY,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,iBAAiB,GAAG,GAAG,GAAG,UAAU;AAC7E,UAAU,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxC,UAAU,IAAI,CAAC,OAAO,EAAE;AACxB,YAAY,OAAO,GAAG;AACtB,cAAc,IAAI;AAClB,cAAc,KAAK;AACnB,cAAc,KAAK,EAAE,YAAY,EAAE;AACnC,cAAc,KAAK,EAAE,CAAC;AACtB,cAAc,OAAO,EAAE,CAAC;AACxB,aAAa;AACb,YAAY,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC;AACzC,UAAU;AACV,QAAQ;AACR,QAAQ,MAAM,IAAI,GAAG,YAAY,EAAE;AACnC,QAAQ;AACR,UAAU,IAAI,GAAG,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC,eAAe;AAChE,UAAU,IAAI,GAAG,OAAO,CAAC;AACzB,UAAU;AACV,UAAU,OAAO,CAAC,KAAK,GAAG,IAAI;AAC9B,UAAU,OAAO,CAAC,KAAK,GAAG,CAAC;AAC3B,QAAQ;AACR,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,UAAU,EAAE;AAC3C,UAAU,OAAO,CAAC,OAAO,EAAE;AAC3B,UAAU,IAAI,UAAU,KAAK,SAAS;AACtC,YAAY,UAAU,GAAGA,WAAS,CAAC,UAAU;AAC7C,cAAc,SAAS;AACvB,cAAc,cAAc,CAAC,sBAAsB;AACnD,aAAa;AACb,UAAU;AACV,QAAQ;AACR,MAAM;AACN,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7C,MAAM,IAAI,GAAG,IAAI;AACjB,MAAM,IAAI;AACV,QAAQ,IAAI,KAAK;AACjB,QAAQ,IAAI,QAAQ;AACpB,QAAQ,IAAI;AACZ,UAAU,IAAI,WAAW,KAAK,SAAS,EAAE;AACzC,YAAY;AACZ,cAAc,CAAC,WAAW;AAC1B,cAAc,OAAO,WAAW,KAAK,QAAQ;AAC7C,cAAc,KAAK,CAAC,OAAO,CAAC,WAAW;AACvC;AACA,cAAc,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC;AACxD,YAAY,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB;AAC9D,cAAc,WAAW;AACzB,cAAc,UAAU;AACxB,aAAa;AACb,YAAY,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;AACjE,cAAc,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC;AACxD,YAAY,QAAQ,GAAG,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC;AACtD,YAAY,IAAI,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;AAC5E,cAAc;AACd,UAAU;AACV,UAAU,KAAK,GAAG,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,EAAE,GAAG,IAAI;AAC5D,QAAQ,CAAC,CAAC,OAAO,KAAK,EAAE;AACxB,UAAU,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC;AACpD,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;AACxE,UAAU;AACV,QAAQ,IAAI,MAAM;AAClB,QAAQ,IAAI;AACZ,UAAU,MAAM,KAAK,GAAG;AACxB,YAAY,KAAK;AACjB,YAAY,GAAG,EAAE,EAAE,GAAG;AACtB,YAAY,EAAE,EAAE,GAAG,EAAE;AACrB,YAAY,IAAI;AAChB,YAAY,KAAK;AACjB,YAAY,KAAK;AACjB,YAAY,OAAO;AACnB,YAAY,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE;AAC/C,YAAY,IAAI,EAAE,KAAK;AACvB,WAAW;AACX,UAAU,IAAI,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ;AACjD,UAAU,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;AAC5D,UAAU,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ;AACxC,UAAU,MAAM,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;AAC5D,UAAU;AACV,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM;AACrE,YAAY,IAAI,CAAC,IAAI;AACrB,cAAc,CAAC,GAAG;AAClB,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC;AAC5E;AACA;AACA,YAAY,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC;AAC5D,QAAQ,CAAC,CAAC,OAAO,KAAK,EAAE;AACxB,UAAU,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC,QAAQ,CAAC;AACxD,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,MAAM,EAAE;AACtD,QAAQ,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;AAClD,UAAU;AACV,YAAY,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK;AAC1C,YAAY,MAAM;AAClB,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY;AACnC;AACA,YAAY;AACZ,UAAU,IAAI;AACd,YAAY,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC3C,UAAU,CAAC,CAAC,OAAO,KAAK,EAAE;AAC1B,YAAY,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC;AACtD,UAAU;AACV,QAAQ;AACR,MAAM,CAAC,SAAS;AAChB,QAAQ,IAAI,GAAG,KAAK;AACpB,MAAM;AACN,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,IAAI,GAAG,KAAK;AAClB,MAAM,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC;AAChD,IAAI;AACJ,EAAE;;AAEF,EAAE,SAAS,SAAS,GAAG;AACvB,IAAI,UAAU,GAAG,SAAS;AAC1B,IAAI,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE;AAC3C,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;AACrC,MAAM,OAAO,CAAC,OAAO,GAAG,CAAC;AACzB,MAAM,IAAI;AACV,QAAQ,OAAO,CAAC,IAAI;AACpB,QAAQ,OAAO,CAAC,KAAK;AACrB,QAAQ,EAAE;AACV,QAAQ,MAAM;AACd,QAAQ,oBAAoB;AAC5B,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE;AACzC,QAAQ,SAAS;AACjB,QAAQ,IAAI;AACZ,OAAO;AACP,IAAI;AACJ,EAAE;;AAEF,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AAC7C,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7C,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW;AACjD,QAAQ,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC;AACrE,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC;AACpB,MAAM,KAAK,EAAE,UAAU,GAAG,KAAK;AAC/B,MAAM,OAAO,EAAE,YAAY,GAAG,EAAE;AAChC,KAAK,GAAG,EAAE;AACV,MAAM,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;AAC7E,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAChC,EAAE;;AAEF,EAAE,SAAS,OAAO,CAAC,IAAI,EAAE;AACzB,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU;AACjD,MAAM,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC;AACnD,IAAI,IAAI,MAAM,EAAE,MAAM,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC;AAC/D,IAAI,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE;AACjC,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;AAC3B,IAAI,OAAO,MAAM;AACjB,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;AAChC,IAAI,CAAC;AACL,EAAE;;AAEF,EAAE,eAAe,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE;AACnD,IAAI,MAAM,QAAQ,GAAG,EAAE;AACvB,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,MAAM,MAAM,OAAO,CAAC,GAAG;AACvB,QAAQ,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK;AAC9C,UAAU,IAAI;AACd,YAAY,MAAM,QAAQ,GAAG,IAAI;AACjC,YAAY,IAAI,GAAG,IAAI;AACvB,YAAY,IAAI,MAAM;AACtB,YAAY,IAAI;AAChB,cAAc,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;AACvC,YAAY,CAAC,SAAS;AACtB,cAAc,IAAI,GAAG,QAAQ;AAC7B,YAAY;AACZ,YAAY,MAAM,MAAM;AACxB,UAAU,CAAC,CAAC,OAAO,KAAK,EAAE;AAC1B,YAAY,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,YAAY,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC;AACtD,UAAU;AACV,QAAQ,CAAC,CAAC;AACV,OAAO;AACP,IAAI;AACJ,IAAI,IAAI,QAAQ,CAAC,MAAM;AACvB,MAAM,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,0BAA0B,CAAC;AACpE,EAAE;AACF,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,IAAI,KAAK;AACT,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;AAC3B,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;AAC9B,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ;AACnC,QAAQ,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC;AACrD,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACnC,MAAM,IAAI,MAAM,EAAE,OAAO,MAAM;AAC/B,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;AACzC,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,uBAAuB,EAAE;AAC/D,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;AAC/B,QAAQ,OAAO,OAAO;AACtB,MAAM;AACN,MAAM,IAAI,CAAC,aAAa,EAAE;AAC1B,QAAQ,aAAa,GAAG,IAAI;AAC5B,QAAQ,OAAO;AACf,UAAU,YAAY,CAAC,mBAAmB,CAAC,uBAAuB,CAAC;AACnE,UAAU,qBAAqB,CAAC,KAAK;AACrC,SAAS;AACT,MAAM;AACN,MAAM,OAAO,OAAO;AACpB,IAAI,CAAC;;AAEL,IAAI,UAAU,CAAC,MAAM,EAAE;AACvB,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE;AACvD,MAAM,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5C,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC;AAC3D,IAAI,CAAC;AACL,IAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC7B,IAAI,UAAU,EAAE,MAAM,CAAC,UAAU;AACjC,IAAI,YAAY,EAAE,MAAM,CAAC,YAAY;AACrC,IAAI,SAAS,EAAE,MAAM,CAAC,SAAS;AAC/B,IAAI,OAAO;AACX,IAAI,KAAK,GAAG;AACZ,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7C,MAAM,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9E,IAAI,CAAC;;AAEL,IAAI,IAAI,GAAG;AACX,MAAM,IAAI,CAAC,WAAW,EAAE;AACxB,QAAQ,MAAM,GAAG,IAAI;AACrB,QAAQ,MAAM,CAAC,IAAI,EAAE;AACrB,QAAQA,WAAS,CAAC,YAAY,CAAC,UAAU,CAAC;AAC1C,QAAQ,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/C,QAAQ,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;AAC7C,UAAU,SAAS,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACrD,SAAS;AACT,MAAM;AACN,MAAM,OAAO,WAAW;AACxB,IAAI,CAAC;AACL,GAAG,CAAC;AACJ;;"}
@@ -1,4 +1,4 @@
1
- import { a as assertLevel, l as levelRank } from './chunk-LRCHwVuE.js';
1
+ import { a as assertLevel, l as levelRank } from './chunk---OIebMz.js';
2
2
 
3
3
  function escapeText(value) {
4
4
  return String(value).replace(
@@ -47,4 +47,4 @@ function createConsoleSink({
47
47
  }
48
48
 
49
49
  export { createConsoleSink as c, formatRecord as f };
50
- //# sourceMappingURL=chunk-DYcNnkOV.js.map
50
+ //# sourceMappingURL=chunk-D1NggH6k.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-DYcNnkOV.js","sources":["../src/core/format.js"],"sourcesContent":["import { assertLevel, levelRank } from './common.js';\n\nfunction escapeText(value) {\n return String(value).replace(\n // biome-ignore lint/suspicious/noControlCharactersInRegex: Escape record control characters.\n /[\\u0000-\\u001f\\u007f-\\u009f\\u2028\\u2029\\u202a-\\u202e\\u2066-\\u2069]/g,\n (character) =>\n `\\\\u${character.charCodeAt(0).toString(16).padStart(4, '0')}`,\n );\n}\n\nfunction quote(value) {\n const text = escapeText(value);\n return /[\\s=\"\\\\]/.test(text) ? JSON.stringify(text) : text;\n}\n\nexport function formatRecord(record) {\n const { at, level, area, scope, message, runId, context, fields, error } =\n record;\n let header = `${new Date(at).toISOString()} ${level.toUpperCase()} area=${quote(area)} scope=${quote(scope)} message=${quote(message)} runId=${quote(runId)}`;\n for (const values of [context, fields])\n for (const [key, value] of Object.entries(values ?? {}))\n header += ` ${quote(key)}=${quote(typeof value === 'object' ? JSON.stringify(value) : value)}`;\n if (error)\n header += `\\n ${escapeText(error.name)}: ${escapeText(error.message)}${\n error.stack\n ? `\\n${error.stack\n .split(/\\r?\\n/)\n .map((line) => ` ${escapeText(line)}`)\n .join('\\n')}`\n : ''\n }${error.cause ? `\\n cause=${escapeText(JSON.stringify(error.cause))}` : ''}${error.errors ? `\\n errors=${escapeText(JSON.stringify(error.errors))}` : ''}${error.fields ? `\\n fields=${escapeText(JSON.stringify(error.fields))}` : ''}`;\n return header;\n}\n\nexport function createConsoleSink({\n level = 'debug',\n console: output = globalThis.console,\n} = {}) {\n assertLevel(level);\n return Object.freeze({\n write(record) {\n if (levelRank(record.level) >= levelRank(level))\n output[record.level](formatRecord(record));\n },\n });\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chunk-D1NggH6k.js","sources":["../src/core/format.js"],"sourcesContent":["import { assertLevel, levelRank } from './common.js';\n\nfunction escapeText(value) {\n return String(value).replace(\n // biome-ignore lint/suspicious/noControlCharactersInRegex: Escape record control characters.\n /[\\u0000-\\u001f\\u007f-\\u009f\\u2028\\u2029\\u202a-\\u202e\\u2066-\\u2069]/g,\n (character) =>\n `\\\\u${character.charCodeAt(0).toString(16).padStart(4, '0')}`,\n );\n}\n\nfunction quote(value) {\n const text = escapeText(value);\n return /[\\s=\"\\\\]/.test(text) ? JSON.stringify(text) : text;\n}\n\nexport function formatRecord(record) {\n const { at, level, area, scope, message, runId, context, fields, error } =\n record;\n let header = `${new Date(at).toISOString()} ${level.toUpperCase()} area=${quote(area)} scope=${quote(scope)} message=${quote(message)} runId=${quote(runId)}`;\n for (const values of [context, fields])\n for (const [key, value] of Object.entries(values ?? {}))\n header += ` ${quote(key)}=${quote(typeof value === 'object' ? JSON.stringify(value) : value)}`;\n if (error)\n header += `\\n ${escapeText(error.name)}: ${escapeText(error.message)}${\n error.stack\n ? `\\n${error.stack\n .split(/\\r?\\n/)\n .map((line) => ` ${escapeText(line)}`)\n .join('\\n')}`\n : ''\n }${error.cause ? `\\n cause=${escapeText(JSON.stringify(error.cause))}` : ''}${error.errors ? `\\n errors=${escapeText(JSON.stringify(error.errors))}` : ''}${error.fields ? `\\n fields=${escapeText(JSON.stringify(error.fields))}` : ''}`;\n return header;\n}\n\nexport function createConsoleSink({\n level = 'debug',\n console: output = globalThis.console,\n} = {}) {\n assertLevel(level);\n return Object.freeze({\n write(record) {\n if (levelRank(record.level) >= levelRank(level))\n output[record.level](formatRecord(record));\n },\n });\n}\n"],"names":[],"mappings":"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"}