@adriangalilea/utils 7.1.0 → 9.0.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 (134) hide show
  1. package/README.md +95 -56
  2. package/dist/bot/access-control.d.ts +89 -31
  3. package/dist/bot/access-control.d.ts.map +1 -1
  4. package/dist/bot/access-control.js +10 -28
  5. package/dist/bot/access-control.js.map +1 -1
  6. package/dist/bot/callbacks.d.ts +0 -13
  7. package/dist/bot/callbacks.d.ts.map +1 -1
  8. package/dist/bot/callbacks.js +0 -16
  9. package/dist/bot/callbacks.js.map +1 -1
  10. package/dist/bot/create.d.ts.map +1 -1
  11. package/dist/bot/create.js +8 -5
  12. package/dist/bot/create.js.map +1 -1
  13. package/dist/bot/kit.d.ts +4 -9
  14. package/dist/bot/kit.d.ts.map +1 -1
  15. package/dist/bot/kit.js +0 -1
  16. package/dist/bot/kit.js.map +1 -1
  17. package/dist/bot/lang.d.ts +46 -0
  18. package/dist/bot/lang.d.ts.map +1 -0
  19. package/dist/bot/lang.js +29 -0
  20. package/dist/bot/lang.js.map +1 -0
  21. package/dist/bot/language.d.ts +0 -2
  22. package/dist/bot/language.d.ts.map +1 -1
  23. package/dist/bot/language.js +0 -12
  24. package/dist/bot/language.js.map +1 -1
  25. package/dist/bot/llm.d.ts +1 -2
  26. package/dist/bot/llm.d.ts.map +1 -1
  27. package/dist/bot/llm.js +1 -2
  28. package/dist/bot/llm.js.map +1 -1
  29. package/dist/bot/menu.d.ts +7 -0
  30. package/dist/bot/menu.d.ts.map +1 -1
  31. package/dist/bot/menu.js +8 -2
  32. package/dist/bot/menu.js.map +1 -1
  33. package/dist/bot/payments/callbacks.d.ts +1 -1
  34. package/dist/bot/payments/callbacks.d.ts.map +1 -1
  35. package/dist/bot/payments/callbacks.js +9 -11
  36. package/dist/bot/payments/callbacks.js.map +1 -1
  37. package/dist/bot/payments/commands.d.ts +1 -1
  38. package/dist/bot/payments/commands.d.ts.map +1 -1
  39. package/dist/bot/payments/commands.js +2 -2
  40. package/dist/bot/payments/commands.js.map +1 -1
  41. package/dist/bot/payments/derive.d.ts.map +1 -1
  42. package/dist/bot/payments/derive.js +7 -6
  43. package/dist/bot/payments/derive.js.map +1 -1
  44. package/dist/bot/payments/handlers.d.ts +1 -5
  45. package/dist/bot/payments/handlers.d.ts.map +1 -1
  46. package/dist/bot/payments/handlers.js +59 -20
  47. package/dist/bot/payments/handlers.js.map +1 -1
  48. package/dist/bot/payments/invoice.d.ts.map +1 -1
  49. package/dist/bot/payments/invoice.js +27 -10
  50. package/dist/bot/payments/invoice.js.map +1 -1
  51. package/dist/bot/payments/menu-item.d.ts.map +1 -1
  52. package/dist/bot/payments/menu-item.js +2 -2
  53. package/dist/bot/payments/menu-item.js.map +1 -1
  54. package/dist/bot/payments/payouts.d.ts +3 -3
  55. package/dist/bot/payments/payouts.js +3 -3
  56. package/dist/bot/payments/plugin.d.ts +87 -29
  57. package/dist/bot/payments/plugin.d.ts.map +1 -1
  58. package/dist/bot/payments/refund.d.ts +1 -5
  59. package/dist/bot/payments/refund.d.ts.map +1 -1
  60. package/dist/bot/payments/refund.js +24 -42
  61. package/dist/bot/payments/refund.js.map +1 -1
  62. package/dist/bot/payments/types.d.ts +2 -9
  63. package/dist/bot/payments/types.d.ts.map +1 -1
  64. package/dist/bot/payments/types.js +0 -7
  65. package/dist/bot/payments/types.js.map +1 -1
  66. package/dist/bot/payments/waiver.d.ts +1 -17
  67. package/dist/bot/payments/waiver.d.ts.map +1 -1
  68. package/dist/bot/payments/waiver.js +5 -33
  69. package/dist/bot/payments/waiver.js.map +1 -1
  70. package/dist/bot/profile.d.ts.map +1 -1
  71. package/dist/bot/profile.js +18 -11
  72. package/dist/bot/profile.js.map +1 -1
  73. package/dist/bot/reactions.d.ts +0 -2
  74. package/dist/bot/reactions.d.ts.map +1 -1
  75. package/dist/bot/reactions.js +0 -16
  76. package/dist/bot/reactions.js.map +1 -1
  77. package/dist/bot/session.d.ts +1 -21
  78. package/dist/bot/session.d.ts.map +1 -1
  79. package/dist/bot/session.js +1 -29
  80. package/dist/bot/session.js.map +1 -1
  81. package/dist/bot/storage-d1.d.ts.map +1 -1
  82. package/dist/bot/storage-d1.js +4 -4
  83. package/dist/bot/storage-d1.js.map +1 -1
  84. package/dist/bot/storage.d.ts +1 -1
  85. package/dist/bot/storage.js +6 -6
  86. package/dist/bot/storage.js.map +1 -1
  87. package/dist/bot/worker.d.ts.map +1 -1
  88. package/dist/bot/worker.js +24 -15
  89. package/dist/bot/worker.js.map +1 -1
  90. package/dist/cli/text.d.ts.map +1 -1
  91. package/dist/cli/text.js +2 -3
  92. package/dist/cli/text.js.map +1 -1
  93. package/dist/llm/index.js +5 -5
  94. package/dist/llm/index.js.map +1 -1
  95. package/dist/offensive.d.ts.map +1 -1
  96. package/dist/offensive.js +3 -4
  97. package/dist/offensive.js.map +1 -1
  98. package/dist/runtime.d.ts +6 -4
  99. package/dist/runtime.d.ts.map +1 -1
  100. package/dist/runtime.js +12 -17
  101. package/dist/runtime.js.map +1 -1
  102. package/dist/tg-html/index.d.ts +11 -4
  103. package/dist/tg-html/index.d.ts.map +1 -1
  104. package/dist/tg-html/index.js +13 -8
  105. package/dist/tg-html/index.js.map +1 -1
  106. package/dist/tg-md/index.d.ts +6 -6
  107. package/dist/tg-md/index.d.ts.map +1 -1
  108. package/dist/tg-md/index.js +9 -19
  109. package/dist/tg-md/index.js.map +1 -1
  110. package/dist/universal/format.d.ts +3 -2
  111. package/dist/universal/format.d.ts.map +1 -1
  112. package/dist/universal/format.js +3 -2
  113. package/dist/universal/format.js.map +1 -1
  114. package/dist/universal/log.d.ts +176 -95
  115. package/dist/universal/log.d.ts.map +1 -1
  116. package/dist/universal/log.js +677 -217
  117. package/dist/universal/log.js.map +1 -1
  118. package/dist/universal/time.d.ts +11 -2
  119. package/dist/universal/time.d.ts.map +1 -1
  120. package/dist/universal/time.js +22 -2
  121. package/dist/universal/time.js.map +1 -1
  122. package/package.json +9 -15
  123. package/dist/bot/index.d.ts +0 -31
  124. package/dist/bot/index.d.ts.map +0 -1
  125. package/dist/bot/index.js +0 -31
  126. package/dist/bot/index.js.map +0 -1
  127. package/dist/universal/currency/download-crypto-list.d.ts +0 -10
  128. package/dist/universal/currency/download-crypto-list.d.ts.map +0 -1
  129. package/dist/universal/currency/download-crypto-list.js +0 -69
  130. package/dist/universal/currency/download-crypto-list.js.map +0 -1
  131. package/dist/universal/url/update-rules.d.ts +0 -15
  132. package/dist/universal/url/update-rules.d.ts.map +0 -1
  133. package/dist/universal/url/update-rules.js +0 -122
  134. package/dist/universal/url/update-rules.js.map +0 -1
@@ -25,8 +25,11 @@
25
25
  *
26
26
  * Typography (heading air, bullet glyph, the title underline) IS the opinion;
27
27
  * it becomes configurable when a second consumer needs a different look, not
28
- * before. Zero deps, worker-safe.
28
+ * before. Zero external deps, worker-safe; the HTML escaping comes from
29
+ * `tg-html`, which owns the same output dialect.
29
30
  */
31
+ import { escapeHtml } from "../tg-html/index.js";
32
+ export { escapeHtml };
30
33
  /** Unwrap a leading/trailing ```…``` code fence (some models add one) and trim. */
31
34
  export declare function tidyRichMarkdown(raw: string): string;
32
35
  /**
@@ -42,9 +45,8 @@ export declare function tidyRichMarkdown(raw: string): string;
42
45
  * `` `code` `` -> `<code>`; links -> `<a>`
43
46
  * Only `*`-based emphasis is honored (never `_`), so `snake_case` survives. Every tag
44
47
  * is balanced, so Telegram can't reject the message; unmatched markers stay literal.
45
- * The spacing is the legacy tghtml contract (now @adriangalilea/utils/tg-html): every
46
- * heading is followed by a blank line so sections breathe — a heading hugging its
47
- * bullets reads as a wall.
48
+ * Spacing follows the same contract as `tg-html`: every heading is followed by a
49
+ * blank line so sections breathe — a heading hugging its bullets reads as a wall.
48
50
  */
49
51
  export declare function markdownToTelegramHtml(markdown: string): string;
50
52
  /**
@@ -64,8 +66,6 @@ export declare function markdownToTelegramHtml(markdown: string): string;
64
66
  * plain fallbacks have no image support, so they never carry a cover.
65
67
  */
66
68
  export declare function markdownToRichHtml(markdown: string, coverUrl?: string): string;
67
- /** Escape text/code content for Telegram HTML. */
68
- export declare function escapeHtml(s: string): string;
69
69
  /**
70
70
  * Strip Markdown to plain text: the fallback when Telegram rejects the rich message.
71
71
  * Removes heading/bullet markers and emphasis, unwraps links to their text, but KEEPS
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tg-md/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2E/D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GACf,MAAM,CAyFR;AA0ED,kDAAkD;AAClD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AAWD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAcpD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tg-md/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAc,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2E/D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GACf,MAAM,CAyFR;AA0ED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAcpD"}
@@ -25,8 +25,11 @@
25
25
  *
26
26
  * Typography (heading air, bullet glyph, the title underline) IS the opinion;
27
27
  * it becomes configurable when a second consumer needs a different look, not
28
- * before. Zero deps, worker-safe.
28
+ * before. Zero external deps, worker-safe; the HTML escaping comes from
29
+ * `tg-html`, which owns the same output dialect.
29
30
  */
31
+ import { escapeAttr, escapeHtml } from "../tg-html/index.js";
32
+ export { escapeHtml };
30
33
  /** Unwrap a leading/trailing ```…``` code fence (some models add one) and trim. */
31
34
  export function tidyRichMarkdown(raw) {
32
35
  const trimmed = raw.trim();
@@ -46,9 +49,8 @@ export function tidyRichMarkdown(raw) {
46
49
  * `` `code` `` -> `<code>`; links -> `<a>`
47
50
  * Only `*`-based emphasis is honored (never `_`), so `snake_case` survives. Every tag
48
51
  * is balanced, so Telegram can't reject the message; unmatched markers stay literal.
49
- * The spacing is the legacy tghtml contract (now @adriangalilea/utils/tg-html): every
50
- * heading is followed by a blank line so sections breathe — a heading hugging its
51
- * bullets reads as a wall.
52
+ * Spacing follows the same contract as `tg-html`: every heading is followed by a
53
+ * blank line so sections breathe — a heading hugging its bullets reads as a wall.
52
54
  */
53
55
  export function markdownToTelegramHtml(markdown) {
54
56
  const lines = tidyRichMarkdown(markdown).split(/\r?\n/);
@@ -99,8 +101,8 @@ export function markdownToTelegramHtml(markdown) {
99
101
  if (heading) {
100
102
  const level = heading[1].length;
101
103
  const text = inlineMd(heading[2]);
102
- // ###### is the source footer: metadata, not a heading — it renders as a quiet
103
- // plain line (the legacy look), never bold.
104
+ // ###### is the source footer: metadata, not a heading — it renders as a
105
+ // quiet plain line, never bold.
104
106
  if (level === 1)
105
107
  out.push(`<b><u>${text}</u></b>`, "");
106
108
  else if (level === 6)
@@ -234,7 +236,7 @@ function insertCover(out, url) {
234
236
  out.splice(at, 0, "", img, "");
235
237
  }
236
238
  /** Normalize rendered HTML: strip trailing whitespace, collapse blank-line runs. Blank lines
237
- * around lists stay — that air is the layout (the legacy look); only runs of 3+ collapse. */
239
+ * around lists stay — that air is the layout; only runs of 3+ collapse. */
238
240
  function tidyHtml(html) {
239
241
  return html
240
242
  .replace(/[ \t]+\n/g, "\n")
@@ -273,18 +275,6 @@ function inlineMd(text) {
273
275
  s = s.replace(/\|\|([^|]+)\|\|/g, "<tg-spoiler>$1</tg-spoiler>");
274
276
  return s.replace(new RegExp(`${STASH}(\\d+)${STASH}`, "g"), (_, i) => tokens[Number(i)]);
275
277
  }
276
- /** Escape text/code content for Telegram HTML. */
277
- export function escapeHtml(s) {
278
- return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
279
- }
280
- /** Escape an href for a Telegram HTML attribute. */
281
- function escapeAttr(s) {
282
- return s
283
- .replace(/&/g, "&amp;")
284
- .replace(/"/g, "&quot;")
285
- .replace(/</g, "&lt;")
286
- .replace(/>/g, "&gt;");
287
- }
288
278
  /**
289
279
  * Strip Markdown to plain text: the fallback when Telegram rejects the rich message.
290
280
  * Removes heading/bullet markers and emphasis, unwraps links to their text, but KEEPS
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tg-md/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tg-md/index.ts"],"names":[],"mappings":"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"}
@@ -35,8 +35,9 @@ export declare function fixed(value: Numberish, decimals?: number): string;
35
35
  export declare function withCommas(value: number | bigint | null | undefined, decimals?: number): string;
36
36
  /**
37
37
  * Bytes → "12.7 TB", "2.0 TB", "850.0 GB", "500.0 MB". Decimal SI prefixes —
38
- * how drive manufacturers and SMART tools quote capacities (`df -h` too).
39
- * Below 1 MB the raw byte count is the honest answer.
38
+ * how drive manufacturers and SMART tools quote capacities (`df -H`; `df -h`
39
+ * is binary). Below 1 MB the raw byte count is the honest answer. The twin of
40
+ * go-utils `Bytes`: one rule whichever language prints the figure.
40
41
  */
41
42
  export declare function bytes(value: Numberish): string;
42
43
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/universal/format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAElD,sEAAsE;AACtE,eAAO,MAAM,OAAO,WAAM,CAAC;AAE3B,kDAAkD;AAClD,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAMhD;AAED,MAAM,WAAW,iBAAiB;IACjC,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,gFAAgF;AAChF,wBAAgB,UAAU,CACzB,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,iBAAsB,GAC1B,MAAM,CAaR;AAED,iFAAiF;AACjF,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,SAAI,GAAG,MAAM,CAG5D;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CACzB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,QAAQ,CAAC,EAAE,MAAM,GACf,MAAM,CASR;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAO9C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAKnD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpD"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/universal/format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAElD,sEAAsE;AACtE,eAAO,MAAM,OAAO,WAAM,CAAC;AAE3B,kDAAkD;AAClD,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAMhD;AAED,MAAM,WAAW,iBAAiB;IACjC,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,gFAAgF;AAChF,wBAAgB,UAAU,CACzB,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,iBAAsB,GAC1B,MAAM,CAaR;AAED,iFAAiF;AACjF,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,SAAI,GAAG,MAAM,CAG5D;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CACzB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,QAAQ,CAAC,EAAE,MAAM,GACf,MAAM,CASR;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAO9C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAKnD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpD"}
@@ -63,8 +63,9 @@ export function withCommas(value, decimals) {
63
63
  }
64
64
  /**
65
65
  * Bytes → "12.7 TB", "2.0 TB", "850.0 GB", "500.0 MB". Decimal SI prefixes —
66
- * how drive manufacturers and SMART tools quote capacities (`df -h` too).
67
- * Below 1 MB the raw byte count is the honest answer.
66
+ * how drive manufacturers and SMART tools quote capacities (`df -H`; `df -h`
67
+ * is binary). Below 1 MB the raw byte count is the honest answer. The twin of
68
+ * go-utils `Bytes`: one rule whichever language prints the figure.
68
69
  */
69
70
  export function bytes(value) {
70
71
  if (value == null)
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/universal/format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/universal/format.ts"],"names":[],"mappings":"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"}
@@ -1,113 +1,194 @@
1
1
  /**
2
- * Terminal-first logger with two renderings and one automatic decision.
2
+ * The logger: one stream of events, written the same way by go-utils,
3
+ * ts-utils and py-utils. The contract is the utils README
4
+ * (github.com/adriangalilea/utils); this file is the TypeScript side of it.
3
5
  *
4
- * Two knobs, never confusing: format = how lines render, time = whether
5
- * lines carry time. Each defaults sensibly and independently.
6
+ * Writing
7
+ * Every verb takes a message, then optional fields:
8
+ * log.warn("retrying", { attempt: 2 })
9
+ * log.error("charge failed", { err })
10
+ * The message says what happened, the fields say with what. Fields are a
11
+ * plain object; anything else panics.
6
12
  *
7
- * Format — LOG_FORMAT=human|record, or setLogFormat(). Default by TTY
8
- * detection on the sink: a TTY gets human (symbols, color, a line meant
9
- * for eyes), anything else gets record (level words, plain text, a line
10
- * meant for a file read later). Detection happens on the stream actually
11
- * written to (stderr), never a sibling stream.
13
+ * Verbs print at fixed levels
14
+ * error ⨯ · fail ⨯ (error) · warn ⚠ · warnOnce ⚠ (warn) · info · success ✓
15
+ * · wait ○ · ready ▶ · step • (info) · debug ◦ (debug) · trace » (trace).
16
+ * warnOnce fires once per message and scope (memory bounded).
12
17
  *
13
- * Time — LOG_TIME=1|0, or setLogTime(). Default: on in Node record mode,
14
- * off everywhere else (human eyes don't need stamps; browser and Worker
15
- * consoles stamp lines themselves). Record time opens the line with UTC
16
- * RFC3339; human time prefixes a dim local HH:MM:SS (a human knows
17
- * today's date).
18
+ * Scopes
19
+ * log.scope("api").scope("auth") carries ["api", "auth"]. Its threshold
20
+ * is read live from API_AUTH_LOG_LEVEL, then API_LOG_LEVEL, then
21
+ * LOG_LEVEL, then setLogLevel(), then info. Levels:
22
+ * silent < error < warn < info < debug < trace.
18
23
  *
19
- * The record line with time on, identical across go-utils and py-utils by
20
- * design:
21
- * 2026-08-07T12:34:56Z WARN [scope] message
22
- * UTC RFC3339 seconds precision · level word padded to 5 · scope brackets
23
- * only when scoped · no color, no symbols. Grep WARN, not ⚠.
24
+ * Spans
25
+ * A span is a piece of work written as two events (start, end) and a
26
+ * span is a logger: what is written through it carries its span_id and
27
+ * trace_id, nothing else does. There is no ambient context.
28
+ * await log.span("sync", { repo }, async (s) => {
29
+ * s.info("cloned", { files })
30
+ * await s.span("build", async (c) => { ... })
31
+ * s.set({ pushed: true })
32
+ * })
33
+ * span returns what fn returns; a throw ends the span failed (the error
34
+ * in fields.err) and rethrows. The open form, for work that does not fit
35
+ * a block: const s = log.begin("upload", { size }) ... s.end() or
36
+ * s.end(err). Ending twice, or set() after the end, panics.
37
+ * Whether a span is shown is decided once, at begin, by its start's level
38
+ * against its scope's threshold; the end follows, so a hidden span writes
39
+ * no end, failed or not. What a hidden span holds attaches to the nearest
40
+ * shown span, a joined remote one included: its lines carry that id, its
41
+ * children and its traceparent() name it. With no shown ancestor its
42
+ * lines carry no ids. A viewer never meets a missing parent.
24
43
  *
25
- * Sinks
26
- * Node/Bun/Deno: every level writes to stderr through console.error, so
27
- * stdout stays clean for data and cli/live's console routing keeps log
28
- * lines above an active region.
29
- * Browser: level-mapped console methods (debug/info/warn/error), human.
30
- * Workers: level-mapped console methods, record.
44
+ * Traces cross processes explicitly
45
+ * s.traceparent() is the W3C value to hand on (HTTP header, or the
46
+ * TRACEPARENT env of a child). log.join(value) returns a logger whose
47
+ * spans are children of that remote span; its lines outside a span carry
48
+ * no ids. null/undefined returns the logger itself; a malformed value is
49
+ * ignored with one warn per distinct value. TRACEPARENT in the
50
+ * environment at process start is joined by every root span.
31
51
  *
32
- * Levels vs verbs
33
- * Levels filter: silent < error < warn < info < debug < trace. An unknown
34
- * LOG_LEVEL is a misconfiguration and throws Panic.
35
- * Verbs express outcome and are renderings, never levels:
36
- * error ⨯ fail ⨯ (error) · warn ⚠ (warn) · info · success ✓ · wait ○ ·
37
- * ready ▶ · step • (info) · debug ◦ (debug) · trace » (trace).
38
- * In record mode a verb renders as its level word.
52
+ * Renderings
53
+ * json: one event per line, keys in the contract's order, fields sorted
54
+ * at every depth. human: symbols, colour (TTY, NO_COLOR, FORCE_COLOR),
55
+ * fields dim as key=value, an error's stack under its line, spans as
56
+ * "○ name" ... "✓ name 254ms" with what they hold indented.
57
+ * Default: Node/Bun/Deno human when stderr is a TTY, else json; browser
58
+ * human; Worker json.
39
59
  *
40
- * Scopes
41
- * log.scope('api') returns a child whose lines carry [api]; scopes nest
42
- * and join: log.scope('api').scope('auth') → [api auth]. A scoped logger
43
- * resolves its threshold from {SCOPE}_LOG_LEVEL (upper-cased, joined and
44
- * sanitized to A-Z0-9_: API_AUTH_LOG_LEVEL, then API_LOG_LEVEL), falling
45
- * back to setLogLevel(), then LOG_LEVEL, then info — read live, so one
46
- * subsystem can be silenced or opened up without touching code.
60
+ * Configuration
61
+ * Each variable has a setter; the setter is the program's default and the
62
+ * variable, read live, overrides it: LOG_FORMAT=human|json (setLogFormat),
63
+ * LOG_TIME=1|0 (setLogTime, a dim local HH:MM:SS before human lines, off
64
+ * by default), LOG_LEVEL and {SCOPE}_LOG_LEVEL (setLogLevel), LOG_SERVICE
65
+ * (setLogService). Values match without regard to case, an empty variable
66
+ * is unset, an unknown value panics. The service defaults to the entry
67
+ * script's name without extension; in a Worker or browser it must be
68
+ * set, or the first json event panics.
47
69
  *
48
- * Config is env plus three runtime setters — setLogLevel(), setLogFormat(),
49
- * setLogTime(). No handlers, no formatters, no init. NO_COLOR /
50
- * FORCE_COLOR override color within human mode. Unknown values of any
51
- * knob throw Panic. All internal memory is bounded.
70
+ * Sinks
71
+ * Node/Bun/Deno write every event through console.error: stderr is the
72
+ * log, stdout stays data, and cli/live's console patch keeps lines above
73
+ * a live region. Browsers and Workers use the level's console method.
52
74
  *
53
- * Siblings: go-utils and py-utils implement the same doctrine in their own
54
- * idioms; the record line format is identical by design.
75
+ * The wire shape is exported as LogEvent, and parseEvent(line) reads one back.
55
76
  */
56
- export type LogFormat = "human" | "record";
57
- /** Force human or record rendering at runtime. Wins over LOG_FORMAT and auto-detection. */
58
- export declare function setLogFormat(format: LogFormat): void;
59
- /** Force time prefixes on or off at runtime. Wins over LOG_TIME and the defaults. */
60
- export declare function setLogTime(on: boolean): void;
61
- declare const LEVELS: {
62
- readonly silent: 0;
63
- readonly error: 1;
64
- readonly warn: 2;
65
- readonly info: 3;
66
- readonly debug: 4;
67
- readonly trace: 5;
77
+ export type LogLevel = "silent" | "error" | "warn" | "info" | "debug" | "trace";
78
+ type EventLevel = Exclude<LogLevel, "silent">;
79
+ export type LogVerb = "error" | "fail" | "warn" | "info" | "success" | "wait" | "ready" | "step" | "debug" | "trace";
80
+ export type JsonValue = null | boolean | number | string | readonly JsonValue[] | {
81
+ readonly [key: string]: JsonValue;
68
82
  };
69
- export type LogLevel = keyof typeof LEVELS;
70
- /** Set the global log level at runtime. Wins over LOG_LEVEL; per-scope env vars still win over this. */
83
+ /** What a verb, span or set() takes: a plain object, any values (serialized by the contract's table). */
84
+ export type Fields = Readonly<Record<string, unknown>>;
85
+ interface EventBase {
86
+ readonly time: string;
87
+ readonly level: EventLevel;
88
+ readonly verb: LogVerb;
89
+ readonly msg: string;
90
+ readonly service: string;
91
+ readonly scope?: readonly string[];
92
+ readonly fields?: {
93
+ readonly [key: string]: JsonValue;
94
+ };
95
+ }
96
+ /** A log line. Inside a shown span it carries the span's trace_id and span_id. */
97
+ export interface LineEvent extends EventBase {
98
+ readonly phase?: undefined;
99
+ readonly trace_id?: string;
100
+ readonly span_id?: string;
101
+ readonly parent_id?: undefined;
102
+ readonly status?: undefined;
103
+ readonly dur_ms?: undefined;
104
+ }
105
+ export interface SpanStartEvent extends EventBase {
106
+ readonly level: "info";
107
+ readonly verb: "wait";
108
+ readonly phase: "start";
109
+ readonly trace_id: string;
110
+ readonly span_id: string;
111
+ readonly parent_id?: string;
112
+ readonly status?: undefined;
113
+ readonly dur_ms?: undefined;
114
+ }
115
+ interface SpanEndBase extends EventBase {
116
+ readonly phase: "end";
117
+ readonly trace_id: string;
118
+ readonly span_id: string;
119
+ readonly parent_id?: string;
120
+ /** Monotonic, milliseconds, 3 decimals. */
121
+ readonly dur_ms: number;
122
+ }
123
+ export interface SpanOkEvent extends SpanEndBase {
124
+ readonly level: "info";
125
+ readonly verb: "success";
126
+ readonly status: "ok";
127
+ }
128
+ /** A failed span's end: the error is in fields.err. */
129
+ export interface SpanFailEvent extends SpanEndBase {
130
+ readonly level: "error";
131
+ readonly verb: "fail";
132
+ readonly status: "error";
133
+ }
134
+ export type SpanEndEvent = SpanOkEvent | SpanFailEvent;
135
+ /** One event of the stream, as written on the wire. Keys appear in this order. */
136
+ export type LogEvent = LineEvent | SpanStartEvent | SpanEndEvent;
137
+ export type LogFormat = "human" | "json";
138
+ /** The program's default level. LOG_LEVEL and {SCOPE}_LOG_LEVEL override it. */
71
139
  export declare function setLogLevel(level: LogLevel): void;
140
+ /** The program's default rendering, human or json. LOG_FORMAT overrides it. */
141
+ export declare function setLogFormat(format: LogFormat): void;
142
+ /** A dim local HH:MM:SS before human lines (json always carries time). LOG_TIME overrides it. */
143
+ export declare function setLogTime(on: boolean): void;
144
+ /** The program's name in every event. LOG_SERVICE overrides it. */
145
+ export declare function setLogService(name: string): void;
72
146
  export interface Logger {
73
- error(...messages: unknown[]): void;
74
- fail(...messages: unknown[]): void;
75
- warn(...messages: unknown[]): void;
76
- /** warn() that fires once per distinct message for the process lifetime. */
77
- warnOnce(...messages: unknown[]): void;
78
- info(...messages: unknown[]): void;
79
- success(...messages: unknown[]): void;
80
- wait(...messages: unknown[]): void;
81
- ready(...messages: unknown[]): void;
82
- /** Indented sub-step bullet under a wait/ready line. */
83
- step(...messages: unknown[]): void;
84
- debug(...messages: unknown[]): void;
85
- trace(...messages: unknown[]): void;
86
- /** Start a duration measurement; timeEnd() reports it at trace level. */
87
- time(label: string): void;
88
- timeEnd(label: string): void;
89
- /** Child logger: lines carry [name], level reads {NAME}_LOG_LEVEL first. */
147
+ error(message: string, fields?: Fields): void;
148
+ fail(message: string, fields?: Fields): void;
149
+ warn(message: string, fields?: Fields): void;
150
+ /** warn, once per message and scope for the process. */
151
+ warnOnce(message: string, fields?: Fields): void;
152
+ info(message: string, fields?: Fields): void;
153
+ success(message: string, fields?: Fields): void;
154
+ wait(message: string, fields?: Fields): void;
155
+ ready(message: string, fields?: Fields): void;
156
+ /** An indented sub-step. */
157
+ step(message: string, fields?: Fields): void;
158
+ debug(message: string, fields?: Fields): void;
159
+ trace(message: string, fields?: Fields): void;
160
+ /** A child logger: events carry the scope, its level reads {SCOPE}_LOG_LEVEL first. */
90
161
  scope(name: string): Logger;
162
+ /**
163
+ * Run fn inside a span and return what it returns (a Promise when fn is
164
+ * async). A throw or rejection ends the span failed and is rethrown.
165
+ */
166
+ span<T>(name: string, fn: (s: Span) => T): T;
167
+ span<T>(name: string, fields: Fields, fn: (s: Span) => T): T;
168
+ /** Open a span by hand, for work that does not fit a block. End it once with end(). */
169
+ begin(name: string, fields?: Fields): Span;
170
+ /**
171
+ * A logger whose spans are children of a remote span. null/undefined
172
+ * returns this logger; a malformed value is ignored with one warn.
173
+ */
174
+ join(traceparent: string | null | undefined): Logger;
91
175
  }
92
- export declare const error: (...messages: unknown[]) => void;
93
- export declare const fail: (...messages: unknown[]) => void;
94
- export declare const warn: (...messages: unknown[]) => void;
95
- export declare const warnOnce: (...messages: unknown[]) => void;
96
- export declare const info: (...messages: unknown[]) => void;
97
- export declare const success: (...messages: unknown[]) => void;
98
- export declare const wait: (...messages: unknown[]) => void;
99
- export declare const ready: (...messages: unknown[]) => void;
100
- export declare const step: (...messages: unknown[]) => void;
101
- export declare const debug: (...messages: unknown[]) => void;
102
- export declare const trace: (...messages: unknown[]) => void;
103
- export declare const time: (label: string) => void;
104
- export declare const timeEnd: (label: string) => void;
105
- export declare const scope: (name: string) => Logger;
106
- /** The root logger plus its runtime knobs, for namespace-style consumers. */
107
- export declare const log: Logger & {
108
- setLogLevel: typeof setLogLevel;
109
- setLogFormat: typeof setLogFormat;
110
- setLogTime: typeof setLogTime;
111
- };
176
+ export interface Span extends Logger {
177
+ /** Fields learned while the span runs, carried on its end event. */
178
+ set(fields: Fields): void;
179
+ /** The W3C traceparent value to hand to a child process or request. */
180
+ traceparent(): string;
181
+ /** End the span: ok with no error, failed with one (in fields.err). Twice panics. */
182
+ end(err?: unknown): void;
183
+ }
184
+ /** The root logger. */
185
+ export declare const log: Logger;
186
+ /**
187
+ * One line of a stream as an event, or null for a line that is not one (a
188
+ * runtime panic, a library writing to stderr itself) so a viewer can pass it
189
+ * through. A JSON object with a "verb" key claims to be an event: if it
190
+ * breaks the contract's shape, that is a bug in a writer and it panics.
191
+ */
192
+ export declare function parseEvent(text: string): LogEvent | null;
112
193
  export {};
113
194
  //# sourceMappingURL=log.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/universal/log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/universal/log.ts"],"names":[],"mappings":"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"}