@adriangalilea/utils 7.0.0 → 8.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 (132) hide show
  1. package/README.md +13 -23
  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/kit.d.ts +4 -9
  11. package/dist/bot/kit.d.ts.map +1 -1
  12. package/dist/bot/kit.js +0 -1
  13. package/dist/bot/kit.js.map +1 -1
  14. package/dist/bot/lang.d.ts +46 -0
  15. package/dist/bot/lang.d.ts.map +1 -0
  16. package/dist/bot/lang.js +29 -0
  17. package/dist/bot/lang.js.map +1 -0
  18. package/dist/bot/language.d.ts +0 -2
  19. package/dist/bot/language.d.ts.map +1 -1
  20. package/dist/bot/language.js +0 -12
  21. package/dist/bot/language.js.map +1 -1
  22. package/dist/bot/llm.d.ts +1 -2
  23. package/dist/bot/llm.d.ts.map +1 -1
  24. package/dist/bot/llm.js +1 -2
  25. package/dist/bot/llm.js.map +1 -1
  26. package/dist/bot/menu.d.ts +7 -0
  27. package/dist/bot/menu.d.ts.map +1 -1
  28. package/dist/bot/menu.js +8 -2
  29. package/dist/bot/menu.js.map +1 -1
  30. package/dist/bot/payments/callbacks.d.ts +1 -1
  31. package/dist/bot/payments/callbacks.d.ts.map +1 -1
  32. package/dist/bot/payments/callbacks.js +9 -11
  33. package/dist/bot/payments/callbacks.js.map +1 -1
  34. package/dist/bot/payments/commands.d.ts +1 -1
  35. package/dist/bot/payments/commands.d.ts.map +1 -1
  36. package/dist/bot/payments/commands.js +2 -2
  37. package/dist/bot/payments/commands.js.map +1 -1
  38. package/dist/bot/payments/derive.d.ts.map +1 -1
  39. package/dist/bot/payments/derive.js +7 -6
  40. package/dist/bot/payments/derive.js.map +1 -1
  41. package/dist/bot/payments/handlers.d.ts +1 -5
  42. package/dist/bot/payments/handlers.d.ts.map +1 -1
  43. package/dist/bot/payments/handlers.js +1 -2
  44. package/dist/bot/payments/handlers.js.map +1 -1
  45. package/dist/bot/payments/invoice.d.ts.map +1 -1
  46. package/dist/bot/payments/invoice.js +1 -2
  47. package/dist/bot/payments/invoice.js.map +1 -1
  48. package/dist/bot/payments/menu-item.d.ts.map +1 -1
  49. package/dist/bot/payments/menu-item.js +2 -2
  50. package/dist/bot/payments/menu-item.js.map +1 -1
  51. package/dist/bot/payments/payouts.d.ts +3 -3
  52. package/dist/bot/payments/payouts.js +3 -3
  53. package/dist/bot/payments/plugin.d.ts +87 -29
  54. package/dist/bot/payments/plugin.d.ts.map +1 -1
  55. package/dist/bot/payments/refund.d.ts +1 -5
  56. package/dist/bot/payments/refund.d.ts.map +1 -1
  57. package/dist/bot/payments/refund.js +6 -32
  58. package/dist/bot/payments/refund.js.map +1 -1
  59. package/dist/bot/payments/types.d.ts +2 -9
  60. package/dist/bot/payments/types.d.ts.map +1 -1
  61. package/dist/bot/payments/types.js +0 -7
  62. package/dist/bot/payments/types.js.map +1 -1
  63. package/dist/bot/payments/waiver.d.ts +1 -17
  64. package/dist/bot/payments/waiver.d.ts.map +1 -1
  65. package/dist/bot/payments/waiver.js +2 -30
  66. package/dist/bot/payments/waiver.js.map +1 -1
  67. package/dist/bot/reactions.d.ts +0 -2
  68. package/dist/bot/reactions.d.ts.map +1 -1
  69. package/dist/bot/reactions.js +0 -16
  70. package/dist/bot/reactions.js.map +1 -1
  71. package/dist/bot/session.d.ts +1 -21
  72. package/dist/bot/session.d.ts.map +1 -1
  73. package/dist/bot/session.js +1 -29
  74. package/dist/bot/session.js.map +1 -1
  75. package/dist/bot/storage.d.ts +1 -1
  76. package/dist/bot/storage.js +1 -1
  77. package/dist/bot/worker.d.ts.map +1 -1
  78. package/dist/bot/worker.js +1 -4
  79. package/dist/bot/worker.js.map +1 -1
  80. package/dist/cli/text.d.ts.map +1 -1
  81. package/dist/cli/text.js +2 -3
  82. package/dist/cli/text.js.map +1 -1
  83. package/dist/llm/index.js +5 -5
  84. package/dist/llm/index.js.map +1 -1
  85. package/dist/metrics/d1.d.ts +4 -1
  86. package/dist/metrics/d1.d.ts.map +1 -1
  87. package/dist/metrics/d1.js +3 -0
  88. package/dist/metrics/d1.js.map +1 -1
  89. package/dist/metrics/index.d.ts +5 -0
  90. package/dist/metrics/index.d.ts.map +1 -1
  91. package/dist/metrics/index.js +8 -1
  92. package/dist/metrics/index.js.map +1 -1
  93. package/dist/metrics/libsql.d.ts +4 -1
  94. package/dist/metrics/libsql.d.ts.map +1 -1
  95. package/dist/metrics/libsql.js +3 -0
  96. package/dist/metrics/libsql.js.map +1 -1
  97. package/dist/metrics/report.d.ts +13 -0
  98. package/dist/metrics/report.d.ts.map +1 -1
  99. package/dist/metrics/report.js.map +1 -1
  100. package/dist/metrics/sqlite.d.ts +15 -1
  101. package/dist/metrics/sqlite.d.ts.map +1 -1
  102. package/dist/metrics/sqlite.js +70 -2
  103. package/dist/metrics/sqlite.js.map +1 -1
  104. package/dist/runtime.d.ts +0 -4
  105. package/dist/runtime.d.ts.map +1 -1
  106. package/dist/runtime.js +0 -17
  107. package/dist/runtime.js.map +1 -1
  108. package/dist/tg-html/index.d.ts +11 -4
  109. package/dist/tg-html/index.d.ts.map +1 -1
  110. package/dist/tg-html/index.js +13 -8
  111. package/dist/tg-html/index.js.map +1 -1
  112. package/dist/tg-md/index.d.ts +6 -6
  113. package/dist/tg-md/index.d.ts.map +1 -1
  114. package/dist/tg-md/index.js +9 -19
  115. package/dist/tg-md/index.js.map +1 -1
  116. package/dist/universal/time.d.ts +11 -2
  117. package/dist/universal/time.d.ts.map +1 -1
  118. package/dist/universal/time.js +22 -2
  119. package/dist/universal/time.js.map +1 -1
  120. package/package.json +9 -15
  121. package/dist/bot/index.d.ts +0 -31
  122. package/dist/bot/index.d.ts.map +0 -1
  123. package/dist/bot/index.js +0 -31
  124. package/dist/bot/index.js.map +0 -1
  125. package/dist/universal/currency/download-crypto-list.d.ts +0 -10
  126. package/dist/universal/currency/download-crypto-list.d.ts.map +0 -1
  127. package/dist/universal/currency/download-crypto-list.js +0 -69
  128. package/dist/universal/currency/download-crypto-list.js.map +0 -1
  129. package/dist/universal/url/update-rules.d.ts +0 -15
  130. package/dist/universal/url/update-rules.d.ts.map +0 -1
  131. package/dist/universal/url/update-rules.js +0 -122
  132. 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 { 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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"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Humanized time. Three questions, three functions: how long is this
3
- * duration (`span`), how long ago was this instant (`ago` — and its raw-
4
- * duration twin `since`), how long until this instant (`until`).
3
+ * duration (`span`, or `coarseSpan` for one unit only), how long ago was
4
+ * this instant (`ago` — and its raw-duration twin `since`), how long
5
+ * until this instant (`until`).
5
6
  *
6
7
  * `ago` degrades by distance instead of stacking units: fresh instants are
7
8
  * relative ("now", "3m ago", "2h 15m ago"), older ones snap to the clock the
@@ -18,6 +19,14 @@
18
19
  export type Dateish = Date | string | number | null | undefined;
19
20
  /** Duration in ms → "45s", "47m", "1h 40m", "2d 3h". Negative clamps to "0s". */
20
21
  export declare function span(ms: number): string;
22
+ /**
23
+ * Duration in ms → its coarsest single unit: "45s", "47min", "3h", "2d".
24
+ * For a line that has room for one number and no column to align it in
25
+ * (a notification, a list row); reach for `span` when the remainder
26
+ * matters. Minutes are spelled in full here because the value stands
27
+ * alone with no neighbouring unit to read "m" against.
28
+ */
29
+ export declare function coarseSpan(ms: number): string;
21
30
  /** Elapsed since an instant, as a bare duration: "47m", "1h 40m" (no "ago"). */
22
31
  export declare function since(d: Dateish, now?: Dateish): string;
23
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/universal/time.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAuBhE,iFAAiF;AACjF,wBAAgB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAOvC;AAED,gFAAgF;AAChF,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,GAAE,OAAoB,GAAG,MAAM,CAKnE;AAED;;;;GAIG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,GAAE,OAAoB,GAAG,MAAM,CAejE;AAED,4EAA4E;AAC5E,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,GAAE,OAAoB,GAAG,MAAM,CAOnE"}
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/universal/time.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAuBhE,iFAAiF;AACjF,wBAAgB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAOvC;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQ7C;AAED,gFAAgF;AAChF,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,GAAE,OAAoB,GAAG,MAAM,CAKnE;AAED;;;;GAIG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,GAAE,OAAoB,GAAG,MAAM,CAejE;AAED,4EAA4E;AAC5E,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,GAAE,OAAoB,GAAG,MAAM,CAOnE"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Humanized time. Three questions, three functions: how long is this
3
- * duration (`span`), how long ago was this instant (`ago` — and its raw-
4
- * duration twin `since`), how long until this instant (`until`).
3
+ * duration (`span`, or `coarseSpan` for one unit only), how long ago was
4
+ * this instant (`ago` — and its raw-duration twin `since`), how long
5
+ * until this instant (`until`).
5
6
  *
6
7
  * `ago` degrades by distance instead of stacking units: fresh instants are
7
8
  * relative ("now", "3m ago", "2h 15m ago"), older ones snap to the clock the
@@ -46,6 +47,25 @@ export function span(ms) {
46
47
  return `${Math.floor(ms / HOUR)}h ${Math.floor((ms % HOUR) / MIN)}m`;
47
48
  return `${Math.floor(ms / DAY)}d ${Math.floor((ms % DAY) / HOUR)}h`;
48
49
  }
50
+ /**
51
+ * Duration in ms → its coarsest single unit: "45s", "47min", "3h", "2d".
52
+ * For a line that has room for one number and no column to align it in
53
+ * (a notification, a list row); reach for `span` when the remainder
54
+ * matters. Minutes are spelled in full here because the value stands
55
+ * alone with no neighbouring unit to read "m" against.
56
+ */
57
+ export function coarseSpan(ms) {
58
+ const s = Math.floor(ms / 1000);
59
+ if (s < 60)
60
+ return `${s}s`;
61
+ const m = Math.floor(s / 60);
62
+ if (m < 60)
63
+ return `${m}min`;
64
+ const h = Math.floor(m / 60);
65
+ if (h < 24)
66
+ return `${h}h`;
67
+ return `${Math.floor(h / 24)}d`;
68
+ }
49
69
  /** Elapsed since an instant, as a bare duration: "47m", "1h 40m" (no "ago"). */
50
70
  export function since(d, now = Date.now()) {
51
71
  const ms = toMs(d);
@@ -1 +1 @@
1
- {"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/universal/time.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/universal/time.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adriangalilea/utils",
3
- "version": "7.0.0",
3
+ "version": "8.0.0",
4
4
  "description": "TypeScript utilities - logger, currency, formatter, GramIO bot plugins, and more",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -64,10 +64,6 @@
64
64
  "types": "./dist/tg-md/index.d.ts",
65
65
  "default": "./dist/tg-md/index.js"
66
66
  },
67
- "./bot": {
68
- "types": "./dist/bot/index.d.ts",
69
- "default": "./dist/bot/index.js"
70
- },
71
67
  "./bot/access-control": {
72
68
  "types": "./dist/bot/access-control.d.ts",
73
69
  "default": "./dist/bot/access-control.js"
@@ -225,17 +221,17 @@
225
221
  "dist"
226
222
  ],
227
223
  "scripts": {
228
- "build": "tsc",
229
- "dev": "tsx src/index.ts",
224
+ "build": "rm -rf dist && tsc",
230
225
  "test": "tsx tests/metrics-test.ts",
226
+ "test:all": "pnpm run test && pnpm run test:log && pnpm run test:runtime && pnpm run test:text && pnpm run test:tg-html && pnpm run test:tg-md && pnpm run test:flags && pnpm run test:groups && pnpm run test:user && pnpm run test:language-picker && pnpm run test:self-echo && pnpm run test:update-identity && pnpm run test:bot-text && pnpm run test:url && pnpm run test:bot-urls && pnpm run test:bot-updates && pnpm run test:bot-announce && pnpm run test:reactions && pnpm run test:llm-reset && pnpm run test:worker-safe",
231
227
  "test:log": "tsx tests/log-test.ts",
232
228
  "test:runtime": "tsx tests/runtime-test.ts",
233
229
  "test:text": "tsx tests/text-test.ts",
234
- "test:browser": "open tests/browser-test.html",
235
230
  "example": "tsx tests/example.ts",
236
- "update-crypto": "tsx src/universal/currency/download-crypto-list.ts",
237
- "update-url-rules": "tsx src/universal/url/update-rules.ts",
231
+ "update-crypto": "tsx scripts/update-crypto-list.ts",
232
+ "update-url-rules": "tsx scripts/update-url-rules.ts",
238
233
  "type-check": "tsc --noEmit",
234
+ "type-check:tests": "tsc -p tests/tsconfig.json",
239
235
  "lint": "biome lint",
240
236
  "format": "biome format",
241
237
  "check": "biome check",
@@ -244,6 +240,9 @@
244
240
  "prepublishOnly": "pnpm run build",
245
241
  "test:worker-safe": "pnpm run build && tsx tests/worker-safe-test.ts",
246
242
  "demo:bot": "tsx tests/create-demo.ts",
243
+ "demo:bot-integration": "tsx tests/bot-integration.ts",
244
+ "demo:cli": "tsx tests/cli-demo.ts",
245
+ "demo:live": "tsx tests/live-demo.ts",
247
246
  "test:tg-html": "tsx tests/tg-html-test.ts",
248
247
  "test:flags": "tsx tests/flags-test.ts",
249
248
  "test:groups": "tsx tests/groups-test.ts",
@@ -282,7 +281,6 @@
282
281
  "@types/node": "^24.3.0",
283
282
  "ai": "^7.0.22",
284
283
  "gramio": "^0.14.0",
285
- "marked": "^15.0.11",
286
284
  "tsx": "^4.20.4",
287
285
  "typescript": "^5.9.2",
288
286
  "zod": "^4.4.3"
@@ -297,7 +295,6 @@
297
295
  "@openrouter/ai-sdk-provider": "^3.0.0",
298
296
  "ai": "^7.0.0",
299
297
  "gramio": "^0.14.0",
300
- "marked": ">=12",
301
298
  "zod": ">=3.22"
302
299
  },
303
300
  "peerDependenciesMeta": {
@@ -313,9 +310,6 @@
313
310
  "gramio": {
314
311
  "optional": true
315
312
  },
316
- "marked": {
317
- "optional": true
318
- },
319
313
  "zod": {
320
314
  "optional": true
321
315
  },
@@ -1,31 +0,0 @@
1
- /**
2
- * Telegram bot plugins for GramIO. Imported as subpaths so this module
3
- * has zero footprint for consumers that don't use them.
4
- *
5
- * Peer deps (all optional): `gramio`, `@gramio/format`, `@gramio/storage`, `marked`.
6
- *
7
- * import { adminContext, gracefulStart } from '@adriangalilea/utils/bot/kit'
8
- * import { accessControl } from '@adriangalilea/utils/bot/access-control'
9
- * import { streamChatReply, llmHistory } from '@adriangalilea/utils/bot/llm'
10
- *
11
- * Or all-in-one (pulls every subpath):
12
- * import { ... } from '@adriangalilea/utils/bot'
13
- */
14
- export * from "./access-control.js";
15
- export * from "./admin.js";
16
- export * from "./callbacks.js";
17
- export * from "./coalesce.js";
18
- export * from "./ctx.js";
19
- export * from "./draft.js";
20
- export * from "./groups.js";
21
- export * from "./inline-feedback.js";
22
- export * from "./keys.js";
23
- export * from "./kit.js";
24
- export * from "./language.js";
25
- export * from "./llm.js";
26
- export * from "./menu.js";
27
- export * from "./notify.js";
28
- export * from "./payments/index.js";
29
- export * from "./storage.js";
30
- export * from "./user.js";
31
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bot/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
package/dist/bot/index.js DELETED
@@ -1,31 +0,0 @@
1
- /**
2
- * Telegram bot plugins for GramIO. Imported as subpaths so this module
3
- * has zero footprint for consumers that don't use them.
4
- *
5
- * Peer deps (all optional): `gramio`, `@gramio/format`, `@gramio/storage`, `marked`.
6
- *
7
- * import { adminContext, gracefulStart } from '@adriangalilea/utils/bot/kit'
8
- * import { accessControl } from '@adriangalilea/utils/bot/access-control'
9
- * import { streamChatReply, llmHistory } from '@adriangalilea/utils/bot/llm'
10
- *
11
- * Or all-in-one (pulls every subpath):
12
- * import { ... } from '@adriangalilea/utils/bot'
13
- */
14
- export * from "./access-control.js";
15
- export * from "./admin.js";
16
- export * from "./callbacks.js";
17
- export * from "./coalesce.js";
18
- export * from "./ctx.js";
19
- export * from "./draft.js";
20
- export * from "./groups.js";
21
- export * from "./inline-feedback.js";
22
- export * from "./keys.js";
23
- export * from "./kit.js";
24
- export * from "./language.js";
25
- export * from "./llm.js";
26
- export * from "./menu.js";
27
- export * from "./notify.js";
28
- export * from "./payments/index.js";
29
- export * from "./storage.js";
30
- export * from "./user.js";
31
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bot/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env tsx
2
- /**
3
- * Downloads the latest cryptocurrency symbols from CoinGecko API
4
- * and generates a TypeScript data file with all symbols.
5
- *
6
- * Usage: tsx src/currency/download-crypto-list.ts
7
- */
8
- declare function downloadCryptoSymbols(): Promise<void>;
9
- export { downloadCryptoSymbols };
10
- //# sourceMappingURL=download-crypto-list.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"download-crypto-list.d.ts","sourceRoot":"","sources":["../../../src/universal/currency/download-crypto-list.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AASH,iBAAe,qBAAqB,kBA8DnC;AAOD,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
@@ -1,69 +0,0 @@
1
- #!/usr/bin/env tsx
2
- /**
3
- * Downloads the latest cryptocurrency symbols from CoinGecko API
4
- * and generates a TypeScript data file with all symbols.
5
- *
6
- * Usage: tsx src/currency/download-crypto-list.ts
7
- */
8
- import { writeFileSync } from "node:fs";
9
- import { dirname, join } from "node:path";
10
- import { fileURLToPath } from "node:url";
11
- const __filename = fileURLToPath(import.meta.url);
12
- const __dirname = dirname(__filename);
13
- async function downloadCryptoSymbols() {
14
- console.log("Fetching cryptocurrency list from CoinGecko...");
15
- try {
16
- const response = await fetch("https://api.coingecko.com/api/v3/coins/list");
17
- if (!response.ok) {
18
- throw new Error(`HTTP error! status: ${response.status}`);
19
- }
20
- const coins = (await response.json());
21
- // Exclude list for problematic/invalid symbols
22
- const excludeSymbols = new Set([
23
- "", // Empty string
24
- "!", // Just exclamation mark
25
- '" "', // Quotes with full-width space
26
- " ", // Just full-width space
27
- ]);
28
- // Extract and uppercase all symbols, remove duplicates and excluded ones
29
- const symbols = [...new Set(coins.map((coin) => coin.symbol.toUpperCase()))]
30
- .filter((symbol) => !excludeSymbols.has(symbol))
31
- .sort();
32
- const now = new Date().toISOString();
33
- // Generate TypeScript file content
34
- const tsContent = `/**
35
- * Generated on ${now}
36
- * ${symbols.length.toLocaleString()} cryptocurrency symbols from CoinGecko API
37
- *
38
- * Run 'npm run update-crypto' to refresh this list
39
- */
40
-
41
- export const cryptoSymbolsData: readonly string[] = [
42
- ${symbols.map((s) => ` ${JSON.stringify(s)}`).join(",\n")}
43
- ]
44
-
45
- export const lastUpdated = "${now}"
46
- export const symbolCount = ${symbols.length}
47
- `;
48
- // Write to file
49
- const outputPath = join(__dirname, "crypto-symbols-data.ts");
50
- writeFileSync(outputPath, tsContent, "utf-8");
51
- console.log(`✅ Generated ${outputPath}`);
52
- console.log(` ${symbols.length.toLocaleString()} symbols`);
53
- console.log(` Last updated: ${now}`);
54
- // Also write a simple text file for reference (optional)
55
- const textPath = join(__dirname, `crypto-symbols-${now.split("T")[0]}.txt`);
56
- writeFileSync(textPath, symbols.join("\n"), "utf-8");
57
- console.log(`📄 Also saved text backup to ${textPath}`);
58
- }
59
- catch (error) {
60
- console.error("❌ Error downloading crypto symbols:", error);
61
- process.exit(1);
62
- }
63
- }
64
- // Run if executed directly
65
- if (import.meta.url === `file://${process.argv[1]}`) {
66
- downloadCryptoSymbols();
67
- }
68
- export { downloadCryptoSymbols };
69
- //# sourceMappingURL=download-crypto-list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"download-crypto-list.js","sourceRoot":"","sources":["../../../src/universal/currency/download-crypto-list.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env tsx
2
- /**
3
- * Vendors the tracking-parameter ruleset from @protontech/tidy-url (Proton's
4
- * maintained fork of DrKain/tidy-url, MIT) into ./tidy-rules.ts. Same pattern
5
- * as currency's download-crypto-list.ts: dataset knowledge is community-
6
- * maintained upstream; we vendor a snapshot instead of taking a runtime dep.
7
- *
8
- * Only the param-stripping fields are carried over (name, match, match_href,
9
- * rules, allow, exclude). Upstream's redirect-unwrapping, AMP, and base64-
10
- * decode features are out of scope — providers that ONLY do those are dropped.
11
- *
12
- * Usage: pnpm update-url-rules
13
- */
14
- export {};
15
- //# sourceMappingURL=update-rules.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-rules.d.ts","sourceRoot":"","sources":["../../../src/universal/url/update-rules.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG"}
@@ -1,122 +0,0 @@
1
- #!/usr/bin/env tsx
2
- /**
3
- * Vendors the tracking-parameter ruleset from @protontech/tidy-url (Proton's
4
- * maintained fork of DrKain/tidy-url, MIT) into ./tidy-rules.ts. Same pattern
5
- * as currency's download-crypto-list.ts: dataset knowledge is community-
6
- * maintained upstream; we vendor a snapshot instead of taking a runtime dep.
7
- *
8
- * Only the param-stripping fields are carried over (name, match, match_href,
9
- * rules, allow, exclude). Upstream's redirect-unwrapping, AMP, and base64-
10
- * decode features are out of scope — providers that ONLY do those are dropped.
11
- *
12
- * Usage: pnpm update-url-rules
13
- */
14
- import { execSync } from "node:child_process";
15
- import { mkdtempSync, readFileSync, writeFileSync } from "node:fs";
16
- import { createRequire } from "node:module";
17
- import { tmpdir } from "node:os";
18
- import { dirname, join } from "node:path";
19
- import { fileURLToPath } from "node:url";
20
- const OUT = join(dirname(fileURLToPath(import.meta.url)), "tidy-rules.ts");
21
- const PACKAGE = "@protontech/tidy-url";
22
- function fetchUpstream() {
23
- const dir = mkdtempSync(join(tmpdir(), "tidy-url-"));
24
- console.log(`Packing ${PACKAGE}@latest ...`);
25
- const tarball = execSync(`npm pack ${PACKAGE}@latest --pack-destination ${JSON.stringify(dir)}`, {
26
- encoding: "utf8",
27
- })
28
- .trim()
29
- .split("\n")
30
- .at(-1);
31
- if (!tarball)
32
- throw new Error("npm pack produced no tarball name");
33
- execSync(`tar xzf ${JSON.stringify(join(dir, tarball))} -C ${JSON.stringify(dir)}`);
34
- const pkg = JSON.parse(readFileSync(join(dir, "package/package.json"), "utf8"));
35
- // data/rules.js is CommonJS (`module.exports = [...]`) with RegExp literals;
36
- // requiring it yields real RegExp objects — no parsing of our own.
37
- const rules = createRequire(import.meta.url)(join(dir, "package/data/rules.js"));
38
- const copyright = readFileSync(join(dir, "package/LICENSE"), "utf8")
39
- .split("\n")
40
- .find((l) => l.startsWith("Copyright"));
41
- if (!Array.isArray(rules) || rules.length === 0)
42
- throw new Error("upstream rules did not load");
43
- if (pkg.license !== "MIT")
44
- throw new Error(`upstream license changed to ${pkg.license} — review before vendoring`);
45
- return {
46
- rules,
47
- version: pkg.version,
48
- license: `${pkg.license} — ${copyright ?? ""}`.trim(),
49
- };
50
- }
51
- /** A regex serialized for the generated file; `g`/`y` are dropped (statefulness). */
52
- function serializeRegex(re) {
53
- return { match: re.source, flags: re.flags.replace(/[gy]/g, "") };
54
- }
55
- function assertStrings(list, where) {
56
- for (const item of list) {
57
- if (typeof item !== "string")
58
- throw new Error(`non-string entry in ${where}: ${JSON.stringify(item)}`);
59
- }
60
- return list;
61
- }
62
- function generate() {
63
- const { rules, version, license } = fetchUpstream();
64
- const kept = rules
65
- .filter((r) => (r.rules?.length ?? 0) > 0 || (r.allow?.length ?? 0) > 0)
66
- .map((r) => {
67
- if (typeof r.name !== "string" || !(r.match instanceof RegExp)) {
68
- throw new Error(`malformed provider: ${JSON.stringify(r.name)}`);
69
- }
70
- return {
71
- name: r.name,
72
- ...serializeRegex(r.match),
73
- ...(r.match_href === true ? { matchHref: true } : {}),
74
- rules: assertStrings(r.rules ?? [], r.name),
75
- ...(r.allow?.length
76
- ? { allow: assertStrings(r.allow, `${r.name}.allow`) }
77
- : {}),
78
- ...(r.exclude?.length
79
- ? { exclude: r.exclude.map(serializeRegex) }
80
- : {}),
81
- };
82
- });
83
- const dropped = rules.length - kept.length;
84
- const body = kept.map((p) => `\t${JSON.stringify(p)},`).join("\n");
85
- const file = `// GENERATED FILE — do not edit; refresh with \`pnpm update-url-rules\`.
86
- //
87
- // Tracking-parameter ruleset vendored from ${PACKAGE}@${version} (data/rules.js),
88
- // Proton's maintained fork of https://github.com/DrKain/tidy-url.
89
- // Upstream license: ${license}
90
- //
91
- // Carried fields: the host matcher (match/flags; tested against the URL host,
92
- // or the full href when matchHref), the param names to strip (rules), params
93
- // protected from any rule (allow), and URL patterns that opt a URL out of the
94
- // provider (exclude). Upstream's redirect/AMP/decode features are out of scope;
95
- // ${dropped} providers that only did those were dropped (${kept.length} kept).
96
- // Generated ${new Date().toISOString().slice(0, 10)}.
97
-
98
- export interface TrackingProvider {
99
- name: string;
100
- /** Host-matcher regex source; tested against the URL host (href when matchHref). */
101
- match: string;
102
- flags: string;
103
- matchHref?: boolean;
104
- /** Param names to strip (compared lowercased). */
105
- rules: readonly string[];
106
- /** Param names protected from ANY rule on this provider's URLs. */
107
- allow?: readonly string[];
108
- /** URL patterns that opt a URL out of this provider entirely. */
109
- exclude?: readonly { match: string; flags: string }[];
110
- }
111
-
112
- export const TIDY_VERSION = ${JSON.stringify(version)};
113
-
114
- export const TIDY_RULES: readonly TrackingProvider[] = [
115
- ${body}
116
- ];
117
- `;
118
- writeFileSync(OUT, file);
119
- console.log(`Wrote ${kept.length} providers (${dropped} dropped) from ${PACKAGE}@${version} → ${OUT}`);
120
- }
121
- generate();
122
- //# sourceMappingURL=update-rules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-rules.js","sourceRoot":"","sources":["../../../src/universal/url/update-rules.ts"],"names":[],"mappings":"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"}