@bazariodev/docket 0.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 (85) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +742 -169
  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-B-SP8Od_.js → chunk-CJmlBW-M.js} +69 -26
  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-Bvq4tF_F.cjs → chunk-DEyTe0f4.cjs} +68 -26
  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 +167 -0
  26. package/dist/client/index.cjs.map +1 -0
  27. package/dist/client/index.d.cts +40 -0
  28. package/dist/client/index.d.ts +40 -0
  29. package/dist/client/index.js +165 -0
  30. package/dist/client/index.js.map +1 -0
  31. package/dist/constants.d.cts +2 -4
  32. package/dist/constants.d.ts +2 -4
  33. package/dist/core/constants.d.cts +2 -0
  34. package/dist/core/constants.d.ts +2 -0
  35. package/dist/export/index.cjs +43 -15
  36. package/dist/export/index.cjs.map +1 -1
  37. package/dist/export/index.js +43 -15
  38. package/dist/export/index.js.map +1 -1
  39. package/dist/history/index.cjs +22 -1188
  40. package/dist/history/index.cjs.map +1 -1
  41. package/dist/history/index.d.cts +10 -112
  42. package/dist/history/index.d.ts +10 -112
  43. package/dist/history/index.js +22 -1188
  44. package/dist/history/index.js.map +1 -1
  45. package/dist/index.cjs +5 -5
  46. package/dist/index.d.cts +8 -4
  47. package/dist/index.d.ts +8 -4
  48. package/dist/index.js +5 -5
  49. package/dist/indexeddb/index.cjs +18 -7
  50. package/dist/indexeddb/index.cjs.map +1 -1
  51. package/dist/indexeddb/index.d.cts +19 -4
  52. package/dist/indexeddb/index.d.ts +19 -4
  53. package/dist/indexeddb/index.js +18 -8
  54. package/dist/indexeddb/index.js.map +1 -1
  55. package/dist/redaction/index.cjs +4 -2
  56. package/dist/redaction/index.cjs.map +1 -1
  57. package/dist/redaction/index.js +4 -2
  58. package/dist/redaction/index.js.map +1 -1
  59. package/dist/sip/index.cjs +1 -1
  60. package/dist/sip/index.js +1 -1
  61. package/dist/storage/contracts.d.cts +0 -4
  62. package/dist/storage/contracts.d.ts +0 -4
  63. package/dist/upload/constants.d.cts +17 -0
  64. package/dist/upload/constants.d.ts +17 -0
  65. package/dist/upload/index.cjs +246 -0
  66. package/dist/upload/index.cjs.map +1 -0
  67. package/dist/upload/index.d.cts +51 -0
  68. package/dist/upload/index.d.ts +51 -0
  69. package/dist/upload/index.js +244 -0
  70. package/dist/upload/index.js.map +1 -0
  71. package/package.json +25 -2
  72. package/dist/chunk-7ld72rnl.js.map +0 -1
  73. package/dist/chunk-B-SP8Od_.js.map +0 -1
  74. package/dist/chunk-BLf-eCDO.cjs.map +0 -1
  75. package/dist/chunk-Bvq4tF_F.cjs.map +0 -1
  76. package/dist/chunk-CEhpwtwJ.cjs.map +0 -1
  77. package/dist/chunk-CSS3f4_M.js.map +0 -1
  78. package/dist/chunk-CXZYNALm.cjs.map +0 -1
  79. package/dist/chunk-LRCHwVuE.js.map +0 -1
  80. package/dist/core/errors.d.cts +0 -8
  81. package/dist/core/errors.d.ts +0 -8
  82. package/dist/history/constants.d.cts +0 -35
  83. package/dist/history/constants.d.ts +0 -35
  84. package/dist/sip/constants.d.cts +0 -5
  85. package/dist/sip/constants.d.ts +0 -5
@@ -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',
@@ -207,9 +207,19 @@ function createLogging(options) {
207
207
  busy = wasBusy;
208
208
  reporting = false;
209
209
  }
210
+ for (const sink of options.sinks ?? []) addSink(sink);
210
211
  const levels = createLevels({ ...options, now, scheduler: scheduler$1 }, onError);
211
212
 
212
- 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
+ ) {
213
223
  try {
214
224
  if (busy) {
215
225
  onError(
@@ -221,6 +231,7 @@ function createLogging(options) {
221
231
  if (
222
232
  closed ||
223
233
  options.isActive?.() === false ||
234
+ closed ||
224
235
  sinks.size === 0 ||
225
236
  (!bypass && !levels.enabled(area, level))
226
237
  )
@@ -265,36 +276,68 @@ function createLogging(options) {
265
276
  busy = true;
266
277
  try {
267
278
  let value;
279
+ let metadata;
268
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
+ }
269
298
  value = typeof data === 'function' ? data() : data;
270
299
  } catch (error) {
271
300
  onError(error, LOGGING_ERROR_SOURCES.DATA);
272
301
  return;
273
302
  }
274
- if (options.isActive?.() === false || sinks.size === 0) return;
303
+ if (options.isActive?.() === false || closed || sinks.size === 0)
304
+ return;
275
305
  let record;
276
306
  try {
277
- record = ownRecord(
278
- redactor.redact({
279
- runId,
280
- seq: ++seq,
281
- at: now(),
282
- area,
283
- scope,
284
- level,
285
- message,
286
- context: { ...context, ...binding },
287
- data: value,
288
- }),
289
- limits,
290
- );
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');
291
330
  } catch (error) {
292
331
  onError(error, LOGGING_ERROR_SOURCES.REDACTOR);
293
332
  return;
294
333
  }
295
- if (options.isActive?.() === false) return;
334
+ if (options.isActive?.() === false || closed) return;
296
335
  for (const registration of registrations) {
297
- if (options.isActive?.() === false || !sinks.has(registration))
336
+ if (
337
+ options.isActive?.() === false ||
338
+ closed ||
339
+ !sinks.has(registration)
340
+ )
298
341
  continue;
299
342
  try {
300
343
  registration.sink.write(record);
@@ -324,6 +367,7 @@ function createLogging(options) {
324
367
  'warn',
325
368
  'logging.suppressed',
326
369
  { scope: counter.scope, dropped },
370
+ undefined,
327
371
  true,
328
372
  );
329
373
  }
@@ -332,8 +376,8 @@ function createLogging(options) {
332
376
  function logger(area, scope, binding = {}) {
333
377
  const result = {};
334
378
  for (const level of Object.values(LEVELS))
335
- result[level] = (message, data) =>
336
- emit(area, scope, binding, level, message, data);
379
+ result[level] = (message, data, callOptions) =>
380
+ emit(area, scope, binding, level, message, data, callOptions);
337
381
  result.child = ({
338
382
  scope: childScope = scope,
339
383
  context: childContext = {},
@@ -352,7 +396,6 @@ function createLogging(options) {
352
396
  sinks.delete(registration);
353
397
  };
354
398
  }
355
- for (const sink of options.sinks ?? []) addSink(sink);
356
399
 
357
400
  async function lifecycle(registrations, methods) {
358
401
  const failures = [];
@@ -433,5 +476,5 @@ function createLogging(options) {
433
476
  });
434
477
  }
435
478
 
436
- export { createLogging as c, loggingError as l };
437
- //# sourceMappingURL=chunk-B-SP8Od_.js.map
479
+ export { createLogging as c };
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":"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"}
@@ -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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"}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var common = require('./chunk-CXZYNALm.cjs');
4
- var constants = require('./chunk-BLf-eCDO.cjs');
5
- var conversion = require('./chunk-CEhpwtwJ.cjs');
3
+ var common = require('./chunk-Dl2KJDqt.cjs');
4
+ var constants = require('./chunk-DLnBMRjo.cjs');
5
+ var conversion = require('./chunk-BMmKUicm.cjs');
6
6
 
7
7
  const LOGGING_ERRORS = /* @__PURE__ */ Object.freeze({
8
8
  [constants.LOGGING_ERROR_CODES.RECURSIVE_LOGGING]: 'Recursive logging is rejected',
@@ -209,9 +209,19 @@ function createLogging(options) {
209
209
  busy = wasBusy;
210
210
  reporting = false;
211
211
  }
212
+ for (const sink of options.sinks ?? []) addSink(sink);
212
213
  const levels = createLevels({ ...options, now, scheduler }, onError);
213
214
 
214
- function emit(area, scope, binding, level, message, data, bypass = false) {
215
+ function emit(
216
+ area,
217
+ scope,
218
+ binding,
219
+ level,
220
+ message,
221
+ data,
222
+ callOptions,
223
+ bypass = false,
224
+ ) {
215
225
  try {
216
226
  if (busy) {
217
227
  onError(
@@ -223,6 +233,7 @@ function createLogging(options) {
223
233
  if (
224
234
  closed ||
225
235
  options.isActive?.() === false ||
236
+ closed ||
226
237
  sinks.size === 0 ||
227
238
  (!bypass && !levels.enabled(area, level))
228
239
  )
@@ -267,36 +278,68 @@ function createLogging(options) {
267
278
  busy = true;
268
279
  try {
269
280
  let value;
281
+ let metadata;
270
282
  try {
283
+ if (callOptions !== undefined) {
284
+ if (
285
+ !callOptions ||
286
+ typeof callOptions !== 'object' ||
287
+ Array.isArray(callOptions)
288
+ )
289
+ throw new TypeError('Invalid log options');
290
+ const descriptor = Object.getOwnPropertyDescriptor(
291
+ callOptions,
292
+ 'metadata',
293
+ );
294
+ if (descriptor && !Object.hasOwn(descriptor, 'value'))
295
+ throw new TypeError('Invalid log options');
296
+ metadata = common.copyMetadata(descriptor?.value);
297
+ if (options.isActive?.() === false || closed || sinks.size === 0)
298
+ return;
299
+ }
271
300
  value = typeof data === 'function' ? data() : data;
272
301
  } catch (error) {
273
302
  onError(error, constants.LOGGING_ERROR_SOURCES.DATA);
274
303
  return;
275
304
  }
276
- if (options.isActive?.() === false || sinks.size === 0) return;
305
+ if (options.isActive?.() === false || closed || sinks.size === 0)
306
+ return;
277
307
  let record;
278
308
  try {
279
- record = conversion.ownRecord(
280
- redactor.redact({
281
- runId,
282
- seq: ++seq,
283
- at: now(),
284
- area,
285
- scope,
286
- level,
287
- message,
288
- context: { ...context, ...binding },
289
- data: value,
290
- }),
291
- limits,
292
- );
309
+ const draft = {
310
+ runId,
311
+ seq: ++seq,
312
+ at: now(),
313
+ area,
314
+ scope,
315
+ level,
316
+ message,
317
+ context: { ...context, ...binding },
318
+ data: value,
319
+ };
320
+ if (metadata) draft.metadata = metadata;
321
+ record = conversion.ownRecord(redactor.redact(draft), limits);
322
+ const actual = record.metadata;
323
+ const keys = metadata ? Object.keys(metadata) : [];
324
+ if (
325
+ (actual ? Object.keys(actual).length : 0) !== keys.length ||
326
+ keys.some(
327
+ (key) =>
328
+ !Object.hasOwn(actual, key) || actual[key] !== metadata[key],
329
+ )
330
+ )
331
+ throw new TypeError('Invalid redactor metadata');
293
332
  } catch (error) {
294
333
  onError(error, constants.LOGGING_ERROR_SOURCES.REDACTOR);
295
334
  return;
296
335
  }
297
- if (options.isActive?.() === false) return;
336
+ if (options.isActive?.() === false || closed) return;
298
337
  for (const registration of registrations) {
299
- if (options.isActive?.() === false || !sinks.has(registration))
338
+ if (
339
+ options.isActive?.() === false ||
340
+ closed ||
341
+ !sinks.has(registration)
342
+ )
300
343
  continue;
301
344
  try {
302
345
  registration.sink.write(record);
@@ -326,6 +369,7 @@ function createLogging(options) {
326
369
  'warn',
327
370
  'logging.suppressed',
328
371
  { scope: counter.scope, dropped },
372
+ undefined,
329
373
  true,
330
374
  );
331
375
  }
@@ -334,8 +378,8 @@ function createLogging(options) {
334
378
  function logger(area, scope, binding = {}) {
335
379
  const result = {};
336
380
  for (const level of Object.values(constants.LEVELS))
337
- result[level] = (message, data) =>
338
- emit(area, scope, binding, level, message, data);
381
+ result[level] = (message, data, callOptions) =>
382
+ emit(area, scope, binding, level, message, data, callOptions);
339
383
  result.child = ({
340
384
  scope: childScope = scope,
341
385
  context: childContext = {},
@@ -354,7 +398,6 @@ function createLogging(options) {
354
398
  sinks.delete(registration);
355
399
  };
356
400
  }
357
- for (const sink of options.sinks ?? []) addSink(sink);
358
401
 
359
402
  async function lifecycle(registrations, methods) {
360
403
  const failures = [];
@@ -436,5 +479,4 @@ function createLogging(options) {
436
479
  }
437
480
 
438
481
  exports.createLogging = createLogging;
439
- exports.loggingError = loggingError;
440
- //# sourceMappingURL=chunk-Bvq4tF_F.cjs.map
482
+ //# sourceMappingURL=chunk-DEyTe0f4.cjs.map