@adriangalilea/utils 8.0.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 (42) hide show
  1. package/README.md +82 -33
  2. package/dist/bot/create.d.ts.map +1 -1
  3. package/dist/bot/create.js +8 -5
  4. package/dist/bot/create.js.map +1 -1
  5. package/dist/bot/payments/handlers.d.ts.map +1 -1
  6. package/dist/bot/payments/handlers.js +58 -18
  7. package/dist/bot/payments/handlers.js.map +1 -1
  8. package/dist/bot/payments/invoice.d.ts.map +1 -1
  9. package/dist/bot/payments/invoice.js +26 -8
  10. package/dist/bot/payments/invoice.js.map +1 -1
  11. package/dist/bot/payments/refund.d.ts.map +1 -1
  12. package/dist/bot/payments/refund.js +18 -10
  13. package/dist/bot/payments/refund.js.map +1 -1
  14. package/dist/bot/payments/waiver.js +3 -3
  15. package/dist/bot/payments/waiver.js.map +1 -1
  16. package/dist/bot/profile.d.ts.map +1 -1
  17. package/dist/bot/profile.js +18 -11
  18. package/dist/bot/profile.js.map +1 -1
  19. package/dist/bot/storage-d1.d.ts.map +1 -1
  20. package/dist/bot/storage-d1.js +4 -4
  21. package/dist/bot/storage-d1.js.map +1 -1
  22. package/dist/bot/storage.js +5 -5
  23. package/dist/bot/storage.js.map +1 -1
  24. package/dist/bot/worker.d.ts.map +1 -1
  25. package/dist/bot/worker.js +23 -11
  26. package/dist/bot/worker.js.map +1 -1
  27. package/dist/offensive.d.ts.map +1 -1
  28. package/dist/offensive.js +3 -4
  29. package/dist/offensive.js.map +1 -1
  30. package/dist/runtime.d.ts +6 -0
  31. package/dist/runtime.d.ts.map +1 -1
  32. package/dist/runtime.js +12 -0
  33. package/dist/runtime.js.map +1 -1
  34. package/dist/universal/format.d.ts +3 -2
  35. package/dist/universal/format.d.ts.map +1 -1
  36. package/dist/universal/format.js +3 -2
  37. package/dist/universal/format.js.map +1 -1
  38. package/dist/universal/log.d.ts +176 -95
  39. package/dist/universal/log.d.ts.map +1 -1
  40. package/dist/universal/log.js +677 -217
  41. package/dist/universal/log.js.map +1 -1
  42. package/package.json +1 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ts-utils
2
2
 
3
- TypeScript utilities - logger, currency, offensive programming, file operations, environment management, and more. The sibling of [swift-utils](https://github.com/adriangalilea/swift-utils), [py-utils](https://github.com/adriangalilea/py-utils), and [go-utils](https://github.com/adriangalilea/go-utils). The logging doctrine the three share, and the harness that proves they emit the same record line, live in [utils](https://github.com/adriangalilea/utils).
3
+ TypeScript utilities - logger, currency, offensive programming, file operations, environment management, and more. The sibling of [swift-utils](https://github.com/adriangalilea/swift-utils), [py-utils](https://github.com/adriangalilea/py-utils), and [go-utils](https://github.com/adriangalilea/go-utils). The logging contract the three share, and the harness that proves they write the same event stream, live in [utils](https://github.com/adriangalilea/utils).
4
4
 
5
5
  ## Product metrics
6
6
 
@@ -87,50 +87,99 @@ pnpm add @adriangalilea/utils
87
87
 
88
88
  ### Logger
89
89
 
90
- Two renderings, one automatic decision: a TTY gets *human* (symbols, color), anything else gets *record* (level words, plain text, greppable). The same program prints `✓ synced` while you develop it and `2026-08-07T12:34:56Z INFO synced` the moment launchd points it at a file. Detection happens on the stream actually written to (stderr in Node; stdout stays clean for data).
90
+ A program's logs and traces are one stream of events. A line is an event; a span is a piece of work written as a start and an end; every line written through a span carries its id. go-utils and py-utils write the same stream byte for byte, so their output can be read, merged and traced together. The contract, its JSON schema and the harness that runs all three live in [utils](https://github.com/adriangalilea/utils).
91
91
 
92
92
  ```typescript
93
- import { wait, step, error, fail, warn, warnOnce, ready, info, success, debug, trace, scope, time, timeEnd } from '@adriangalilea/utils/log'
93
+ import { log } from '@adriangalilea/utils/log'
94
94
 
95
- // Verbs express outcome; each renders at its level (fail is error-level, the rest info)
96
- wait('Loading...') // ○
97
- step('resolving config') // • (indented sub-step)
98
- info('Information message')
99
- success('Operation successful') // ✓
100
- ready('Server is ready') // ▶
101
- warn('This is a warning') // ⚠
102
- error('Something went wrong') // ⨯
103
- fail('Deploy failed') // ⨯
104
- debug('Cache miss') // ◦
105
- trace('Trace message') // »
95
+ log.info('ready')
96
+ log.warn('retrying', { attempt: 2 })
97
+ log.error('charge failed', { err })
98
+ ```
99
+
100
+ Every verb takes a message, then optional fields. The message says what happened, the fields say with what. Fields are a plain object; anything else (an `Error`, a string, extra arguments) panics.
101
+
102
+ | verb | level | human |
103
+ |---|---|---|
104
+ | `error`, `fail` | error | `⨯` |
105
+ | `warn` | warn | `⚠` |
106
+ | `warnOnce` | warn, once per message and scope (bounded memory) | `⚠` |
107
+ | `info` | info | |
108
+ | `success` | info | `✓` |
109
+ | `wait` | info | `○` |
110
+ | `ready` | info | `▶` |
111
+ | `step` | info | `•`, indented |
112
+ | `debug` | debug | `◦` |
113
+ | `trace` | trace | `»` |
106
114
 
107
- // Warn once (won't repeat same message)
108
- warnOnce('This warning appears only once')
115
+ **Scopes.** `log.scope('api')` returns a child logger whose events carry `["api"]`; `log.scope('api').scope('auth')` carries `["api", "auth"]`.
109
116
 
110
- // Timer functionality (reports at trace level)
111
- time('operation')
112
- // ... do something
113
- timeEnd('operation') // operation: 123ms
117
+ **Spans.** A span is a logger: what is written through it belongs to it, and nothing else does (there is no ambient context, a function that logs inside a span takes the span). `span` returns what the callback returns, a Promise when it is async; a throw ends the span failed, with the error in `fields.err`, and is rethrown.
118
+
119
+ ```typescript
120
+ await log.span('sync', { repo }, async (s) => {
121
+ s.info('cloned', { files: 3 })
122
+ await s.span('build', async (c) => { c.step('compiling') })
123
+ s.set({ pushed: true }) // carried on the span's end event
124
+ })
114
125
 
115
- // Scoped logger — lines carry [api], and API_LOG_LEVEL controls it from env
116
- const api = scope('api')
117
- api.info('Request received') // [api] Request received
118
- api.scope('auth').warn('token old') // ⚠ [api auth] token old
126
+ // Work that does not fit a block: open it, end it once (twice panics).
127
+ const up = log.begin('upload', { size })
128
+ stream.on('end', () => up.end())
129
+ stream.on('error', (err) => up.end(err))
119
130
  ```
120
131
 
121
- Levels filter (`silent < error < warn < info < debug < trace`); an unknown `LOG_LEVEL` throws. A scoped logger reads `{SCOPE}_LOG_LEVEL` before `LOG_LEVEL`, live: `GZIP_LOG_LEVEL=silent` shuts one subsystem up without touching code, `GZIP_LOG_LEVEL=trace` opens it wide while the rest stays quiet.
132
+ **Traces cross processes explicitly.** `s.traceparent()` is the W3C value to hand on, in an HTTP `traceparent` header or the `TRACEPARENT` env of a child process. `log.join(req.headers.get('traceparent'))` returns a logger whose spans are children of that remote span; `null` or `undefined` returns the logger itself, and a malformed value is ignored with one warn per distinct value. A process started with `TRACEPARENT` set joins it for every root span, with no code.
133
+
134
+ **Levels.** `silent < error < warn < info < debug < trace`, default `info`. A scoped event reads its threshold live from the most specific variable set: `["api", "auth"]` reads `API_AUTH_LOG_LEVEL`, then `API_LOG_LEVEL`, then `LOG_LEVEL`, then `setLogLevel()`, then `info`. `GZIP_LOG_LEVEL=silent` shuts one subsystem up without touching code. Whether a span is shown is decided once, when it begins; a hidden span writes no end, and what it holds (lines, child spans, `traceparent()`) attaches to the nearest shown span, so a viewer never meets a missing parent. A remote span joined through `join` or `TRACEPARENT` counts as shown. With no shown ancestor, a hidden span's lines carry no ids, as lines outside any span.
122
135
 
123
- Two knobs, both env + runtime setter, both with sane defaults:
136
+ **Renderings.** `json` is one event per line on stderr, keys in the contract's order, fields sorted at every depth, errors as `{type, message, stack, cause, …}`:
124
137
 
125
- - `LOG_FORMAT=human|record` / `setLogFormat()` — how lines render. Default: TTY → human, otherwise record. Workers and browsers use level-mapped console methods; Node funnels everything to stderr.
126
- - `LOG_TIME=1|0` / `setLogTime()` — whether lines open with time. Default: on in Node record mode (a daemon's log file must answer "when"), off everywhere else (human eyes don't need stamps; Worker and browser consoles stamp lines themselves). Record time is UTC RFC3339; human time is a dim local `HH:MM:SS`.
138
+ ```json
139
+ {"time":"2026-10-12T12:20:39.123Z","level":"warn","verb":"warn","msg":"retrying","service":"checkout","scope":["payments"],"trace_id":"4bf92f3577b34da6a3ce929d0e0e4736","span_id":"00f067aa0ba902b7","fields":{"attempt":2}}
140
+ ```
127
141
 
128
- The record line format is identical across go-utils and py-utils by design:
142
+ `human` is symbols, colour (TTY, `NO_COLOR`, `FORCE_COLOR`), fields dim as `key=value`, an error's stack under its line, and spans with what they hold indented:
129
143
 
130
144
  ```
131
- 2026-08-07T12:34:56Z WARN [scope] message
145
+ ○ sync repo=ui
146
+ cloned files=3
147
+ ○ build
148
+ • compiling
149
+ ✓ build 51ms
150
+ ✓ sync 51ms pushed=true
132
151
  ```
133
152
 
153
+ Node, Bun and Deno write every event through `console.error` (stdout stays data, and a `cli` live region keeps lines above it); browsers and Workers use the level's console method.
154
+
155
+ **Configuration.** Each variable has a setter. The setter is the program's default and the variable, read live, overrides it. Values match without regard to case, an empty variable is unset, and an unknown value panics.
156
+
157
+ | variable | setter | values | default |
158
+ |---|---|---|---|
159
+ | `LOG_FORMAT` | `setLogFormat` | `human`, `json` | Node: human when stderr is a TTY, else json. Browser: human. Worker: json |
160
+ | `LOG_TIME` | `setLogTime` | `1`, `0` | off. Puts a dim local `HH:MM:SS` before human lines; json always carries `time` |
161
+ | `LOG_LEVEL`, `{SCOPE}_LOG_LEVEL` | `setLogLevel` | the levels | `info` |
162
+ | `LOG_SERVICE` | `setLogService` | a name | the entry script's name without extension. A Worker or browser has none: set it, or the first json event panics |
163
+
164
+ **Reading the stream.** `LogEvent` is the wire shape as a type (a line, a span start, an ok end or a failed end, discriminated by `phase` and `status`), and `parseEvent(line)` reads one line back: an event, `null` for a line that is not one (pass it through), or a `Panic` for a JSON object with a `verb` key that breaks the shape.
165
+
166
+ ```typescript
167
+ import { parseEvent, type LogEvent } from '@adriangalilea/utils/log'
168
+
169
+ const e = parseEvent(line)
170
+ if (e?.phase === 'end') e.dur_ms
171
+ ```
172
+
173
+ #### Migrating from 8.x
174
+
175
+ - Messages are one string plus fields: `log.warn('retry', n, err)` becomes `log.warn('retry', { attempt: n, err })`, and `log.scope(e.source).error(e.operation, e.toJSON())` becomes `log.scope(e.source).error(e.operation, { err: e })`.
176
+ - Import `log` and call its verbs: the bare `info`, `warn`, `scope`, … exports are gone.
177
+ - `time`/`timeEnd` are gone: wrap the work in `log.span(name, fn)`, which writes its duration.
178
+ - `LOG_FORMAT=record` and `setLogFormat('record')` are gone: `json` replaces the record line, and `logs` from go-utils renders a file back into a greppable line.
179
+ - The environment now wins over `setLogFormat` and `setLogTime`, and `LOG_TIME` is off by default.
180
+ - A Worker that writes json must call `setLogService(name)`.
181
+ - `SourcedError.message` is the message given, without the `[source:operation]` prefix.
182
+
134
183
  ### Currency
135
184
 
136
185
  Currency utilities with comprehensive crypto support (500+ symbols):
@@ -479,7 +528,7 @@ catch (e) {
479
528
  return { error: 'card declined' }
480
529
  }
481
530
  if (isSourcedError(e)) {
482
- log.scope(e.source).error(e.operation, e.toJSON()) // structured forensics
531
+ log.scope(e.source).error(e.operation, { err: e }) // source, operation, status, context, cause
483
532
  throw e
484
533
  }
485
534
  throw e // unknown — re-throw
@@ -490,7 +539,7 @@ Every `SourcedError` carries `source`, `operation`, `status`, `context`, and the
490
539
 
491
540
  ## Features
492
541
 
493
- - **Logger**: human/record dual rendering (TTY-detected), scoped env-controlled levels, shared record format with go-utils and py-utils
542
+ - **Logger**: one event stream shared byte for byte with go-utils and py-utils (lines and spans, W3C trace ids), json or human rendering, scoped env-controlled levels
494
543
  - **Currency**:
495
544
  - 13,750+ crypto symbols from CoinGecko (auto-updatable)
496
545
  - Alternative ticker support (XBT→BTC, wrapped tokens, etc.)
@@ -691,7 +740,7 @@ Telegram's [Threaded Mode](https://telegram.org/blog/threaded-conversations) for
691
740
  | `@adriangalilea/utils/metrics/sqlite` | Atomic SQLite driver, explicit provisioning schema, and inclusive UTC daily reports; libSQL is its own module (`metrics/libsql`) over the same driver shape. Connections and credentials belong to the application. |
692
741
  | `@adriangalilea/utils/bot/menu` | `botMenu({ command, description, items, privacy?, personalData?, adminContact })` — `/settings` command + InlineKeyboard router. Root view always renders a `🛡️ Privacy & data` submenu button that wraps the privacy policy link plus (if `personalData: { storage }`) 🗑 Forget + 📥 Export buttons. Items take `keepRow` (render on the same row as the next item — e.g. a two-per-row language picker) and `rootExtra` (render at the bottom of the root menu, below Privacy & data). `label` / `header` / `style` / `visible` resolvers may be **async** (read your db at render time — never cache render strings in the session); `parseMode: 'HTML'` renders the header formatted (you own escaping); `personalData.onForget(ctx, userId)` wipes YOUR tables inside the same try as the session delete, so Forget either forgets everything or reports failure. `toggleMenuItem({ id, read, write, label: { off, on }, toast? })` — convenience factory for boolean-toggle items with dynamic label + optional toast, storage-agnostic via `read`/`write` closures. |
693
742
  | `@adriangalilea/utils/bot/payments` | `botPayments({ session, storage, paysupport, paysupportHint?, legal, waiver, vip?, credits?, perks? })` — Telegram Stars monetization in one drop-in plugin. **Three axes, all optional:** `vip` (positional tier ladder — single rung in v1 is just `vip: [{...}]`, ladder is `vip: [{...}, {...}]`; ids are `vip.1`, `vip.2`, …), `credits` (consumable balance + top-up packs `credits.1`, `credits.2`, …), `perks` (orthogonal one-shot unlocks `perks.<key>`). **Surface:** `ctx.payments.atLeast('vip')` / `atLeast('vip.2')` (typed rank check), `ctx.payments.tier()` / `.tier.level()` / `.tier.label()`, `ctx.payments.credits.{balance, consume, tryConsume}` (throws `InsufficientCredits`), `ctx.payments.has(perkId)`, `await ctx.payments.require('vip', { feature? })` (gate that sends a localized upgrade prompt deep-linked to `/settings → 💎 VIP`), `await ctx.payments.invoice(productKey)` (threads Art. 103(m) TRLGDCU consent inline before `sendInvoice`). **Owns:** waiver consent flow (versioned text → forces re-consent on bump, snapshotted on every charge for audit), `/paysupport` slash command (Telegram ToS §6.5; `paysupportHint` overrides the where-to-manage-charges line when your menu isn't `/settings`), idempotent `successful_payment` fulfillment via `pay:idempotency:{chargeId}` sentinel, lazy subscription expiry (no cron needed), tier upgrade auto-cancel of the lower rung's renewal, and admin-DM refund approval (mirror of `accessControl`'s [✅ Aprobar][❌ Denegar] pattern). **Returns:** `{ plugin, menuItem, payouts, admin, onFulfilled, onRefunded }` — `menuItem` is the drop-in `💎 VIP` entry for `botMenu`; `admin.{listCharges, getCharge}` backs custom admin commands; `payouts.{record, list, export, exportForUsers}` is the Fragment payout ledger (you receive TON, log the EUR conversion, export time-windowed CSV/JSON for your gestor); `onFulfilled(productKey \| '*', handler)` / `onRefunded(...)` register fire-and-forget hooks (purchase applied / admin-approved refund — a revenue ledger writes on one, reverses on the other). **Stars-only by design** — Telegram ToS §6.2 forbids third-party payment providers for digital goods. Crypto Pay deferred (MiCA risk); Stripe-outside-Telegram is a future v2 channel. Full compliance memo (Spanish-autónomo seller-of-record analysis, Verifactu vs Crea y Crece, MiCA, Art. 103(m) waiver text, GDPR retention) in `src/bot/payments/CLAUDE.md`. |
694
- | `@adriangalilea/utils/bot/create` | `createBot<S>({ token?, storage?, initial?, admins?, language?, menu?, access?, payments?, handlers?, worker? })` — the composer (see "One bot file, ideation → production" above). Returns `{ build, session, poll, isMain, fetch }`: `poll()` long-polls, `export default app` is a complete Worker, `app.session(ctx)` / the `handlers` callback's `session(ctx)` is the TYPED accessor for your `S` fields. Owns storage+session wiring; resolves storage per environment (D1 binding → `bot/storage-d1`; `BOT_PERSIST` path → sqlite, `redis://` → redis, lazily-imported optional peers; else announced-ephemeral memory) — or pass `storage: (env) => Storage` when the choice is env-dependent (e.g. a D1 binding not named `DB`). Boot NARRATES the composition (`session: memory …`, `features: language(en,es) · menu(/settings)`) so every implicit decision is visible where you're looking. Runnable demo: `pnpm demo:bot`. |
743
+ | `@adriangalilea/utils/bot/create` | `createBot<S>({ token?, storage?, initial?, admins?, language?, menu?, access?, payments?, handlers?, worker? })` — the composer (see "One bot file, ideation → production" above). Returns `{ build, session, poll, isMain, fetch }`: `poll()` long-polls, `export default app` is a complete Worker, `app.session(ctx)` / the `handlers` callback's `session(ctx)` is the TYPED accessor for your `S` fields. Owns storage+session wiring; resolves storage per environment (D1 binding → `bot/storage-d1`; `BOT_PERSIST` path → sqlite, `redis://` → redis, lazily-imported optional peers; else announced-ephemeral memory) — or pass `storage: (env) => Storage` when the choice is env-dependent (e.g. a D1 binding not named `DB`). Boot NARRATES the composition (`session storage kind="memory (ephemeral …)"`, `features features=["language(en,es)","menu(/settings)"]`) so every implicit decision is visible where you're looking. Runnable demo: `pnpm demo:bot`. |
695
744
  | `@adriangalilea/utils/bot/worker` | `botWorkerFetch(resolve)` — the Cloudflare Worker cap: secret-checked webhook (ack fast, work + storage flush ride `ctx.waitUntil`, errors DM admins throttled), `POST /setup` (webhook registration with handler-derived `allowed_updates` + a commit-narrating 🚀 deploy DM from the request body), `POST /deploy-started` (the 🛳 "what is shipping" DM — curl it from your deploy script on the still-live version, body `{sha, author, message, etaSeconds?}`), operator-authed `/pause` `/resume` `/webhook-status` (+ `statusExtra`), and a `routes` escape hatch tried before the built-ins. Structural bot type — no workers-types dependency. |
696
745
  | `@adriangalilea/utils/bot/flags` | `defineFlags(spec, { read, write? })` — feature flags declared ONCE in code, resolved LIVE from the bot's operator-config record (D1 json row, Redis hash — storage-agnostic, Worker-safe, zero deps). Each flag: `{ kind: 'bool'\|'number'\|'string', label, help?, default }`, where `default` is a scalar or a **tier map** `{ free, vip?, 'vip.N'? }` resolved off `ctx.payments.tier()` — "free users get this limit, premium users get that model" is one declaration, zero branching at the call site (ladder walks down: exact rung → lower rungs → `vip` → `free`). Read sites: `await flags.<key>(ctx)` — stored override wins over the code default, per-ctx reads coalesce into one config fetch. `flags.describe()` is the JSON schema admin panels render generically, so a new flag appears in every panel with zero panel edits; `flags.set(ctx, key, value)` writes a kind-checked live override (`null` clears it — RFC 7386 null-delete, matching SQLite `json_patch`); `flags.overrides(ctx)` lists what's overridden. Corrupt stored values scream (`SourcedError`); bad specs panic at construction. |
697
746
  | `@adriangalilea/utils/bot/storage-d1` | `d1Storage({ db, table? })` — `@gramio/storage` adapter over a D1 `session` table (schema in the module doc). `flush()` matters: the session plugin writes un-awaited and workerd freezes the isolate the instant `fetch()` returns — hand `flush` to `bot/worker` (automatic via `createBot`) so writes survive. |
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/bot/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/bot/create.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,7 @@
31
31
  import { inMemoryStorage } from "@gramio/storage";
32
32
  import { Bot } from "gramio";
33
33
  import { runtime } from "../runtime.js";
34
- import { scope } from "../universal/log.js";
34
+ import { log as root } from "../universal/log.js";
35
35
  import { accessControl } from "./access-control.js";
36
36
  import { adminContext } from "./admin.js";
37
37
  import { language } from "./language.js";
@@ -40,7 +40,7 @@ import { botPayments } from "./payments/index.js";
40
40
  import { botSession } from "./session.js";
41
41
  import { d1Storage } from "./storage-d1.js";
42
42
  import { botWorkerFetch } from "./worker.js";
43
- const log = scope("bot");
43
+ const log = root.scope("bot");
44
44
  // Optional Node-only peers, loaded lazily on the poll path. The specifier goes
45
45
  // through a variable so TS doesn't demand types for an optional dependency.
46
46
  async function importPeer(name, why) {
@@ -104,7 +104,7 @@ export function createBot(opts = {}) {
104
104
  const e = env ?? (runtime.isNode ? process.env : {});
105
105
  const bot = new Bot(resolveToken(e));
106
106
  const { storage, kind, flush } = await resolveStorage(e);
107
- log.info(`session: ${kind}`);
107
+ log.info("session storage", { kind });
108
108
  // ONE session, threaded everywhere — the composer's whole job.
109
109
  const session = botSession({
110
110
  storage,
@@ -168,7 +168,7 @@ export function createBot(opts = {}) {
168
168
  : null,
169
169
  ].filter(Boolean);
170
170
  if (features.length > 0)
171
- log.info(`features: ${features.join(" · ")}`);
171
+ log.info("features", { features });
172
172
  return { bot, storage, flush };
173
173
  })();
174
174
  return built;
@@ -207,7 +207,10 @@ export function createBot(opts = {}) {
207
207
  async poll() {
208
208
  const { bot } = await build();
209
209
  await bot.start();
210
- log.ready(`${opts.name ?? "bot"} polling as @${bot.info?.username}`);
210
+ log.ready("polling", {
211
+ bot: opts.name ?? "bot",
212
+ username: bot.info?.username,
213
+ });
211
214
  },
212
215
  isMain(meta) {
213
216
  const main = meta.main;
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/bot/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/bot/create.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/bot/payments/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAS,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAIlE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EACX,iBAAiB,EAGjB,gBAAgB,EAEhB,cAAc,EACd,WAAW,EAEX,MAAM,YAAY,CAAC;AAMpB;;;;;GAKG;AACH,KAAK,aAAa,GAAG;IACpB,sBAAsB,EAAE,CAAC,MAAM,EAAE;QAChC,qBAAqB,EAAE,MAAM,CAAC;QAC9B,EAAE,EAAE,OAAO,CAAC;QACZ,aAAa,CAAC,EAAE,MAAM,CAAC;KACvB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvB,wBAAwB,EAAE,CAAC,MAAM,EAAE;QAClC,OAAO,EAAE,MAAM,CAAC;QAChB,0BAA0B,EAAE,MAAM,CAAC;QACnC,WAAW,EAAE,OAAO,CAAC;KACrB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,OAAO,CAAC;KACvB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,KAAK,cAAc,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAEvD;;;;;;;GAOG;AACH,KAAK,UAAU,GAAG,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAkB5D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,cAAc,MACjB,KAAK,cAAc,KAAG,OAAO,CAAC,IAAI,CA+DxC,CAAC;AA4CH,MAAM,MAAM,+BAA+B,GAAG;IAC7C,MAAM,EAAE,cAAc,CAAC;IACvB,GAAG,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,cAAc,CAAC;IACxB;;;;;;;;OAQG;IACH,WAAW,EAAE,WAAW,CACvB,MAAM,EACN,aAAa,CAAC,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC,CACjE,CAAC;CACF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,6BAA6B,GACxC,MAAM,+BAA+B,MAC/B,KAAK,UAAU,KAAG,OAAO,CAAC,IAAI,CA2JpC,CAAC;AAmDH,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/bot/payments/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAS,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAIlE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EACX,iBAAiB,EAGjB,gBAAgB,EAEhB,cAAc,EACd,WAAW,EAEX,MAAM,YAAY,CAAC;AAMpB;;;;;GAKG;AACH,KAAK,aAAa,GAAG;IACpB,sBAAsB,EAAE,CAAC,MAAM,EAAE;QAChC,qBAAqB,EAAE,MAAM,CAAC;QAC9B,EAAE,EAAE,OAAO,CAAC;QACZ,aAAa,CAAC,EAAE,MAAM,CAAC;KACvB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvB,wBAAwB,EAAE,CAAC,MAAM,EAAE;QAClC,OAAO,EAAE,MAAM,CAAC;QAChB,0BAA0B,EAAE,MAAM,CAAC;QACnC,WAAW,EAAE,OAAO,CAAC;KACrB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,OAAO,CAAC;KACvB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,KAAK,cAAc,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAEvD;;;;;;;GAOG;AACH,KAAK,UAAU,GAAG,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAkB5D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,cAAc,MACjB,KAAK,cAAc,KAAG,OAAO,CAAC,IAAI,CAqExC,CAAC;AA4CH,MAAM,MAAM,+BAA+B,GAAG;IAC7C,MAAM,EAAE,cAAc,CAAC;IACvB,GAAG,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,cAAc,CAAC;IACxB;;;;;;;;OAQG;IACH,WAAW,EAAE,WAAW,CACvB,MAAM,EACN,aAAa,CAAC,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC,CACjE,CAAC;CACF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,6BAA6B,GACxC,MAAM,+BAA+B,MAC/B,KAAK,UAAU,KAAG,OAAO,CAAC,IAAI,CA6KpC,CAAC;AAmDH,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -22,11 +22,11 @@
22
22
  */
23
23
  import { panic, SourcedError } from "../../offensive.js";
24
24
  import { say } from "../../say/index.js";
25
- import { scope } from "../../universal/log.js";
25
+ import { log as root } from "../../universal/log.js";
26
26
  import { ctxLang, FALLBACK_LANG } from "../lang.js";
27
27
  import { decodePayload } from "./payload.js";
28
28
  import { applyCharge } from "./state.js";
29
- const log = scope("bot/payments");
29
+ const log = root.scope("bot/payments");
30
30
  // Single-sourced product discriminator. Order (vip, credits, perk-default)
31
31
  // is load-bearing: it mirrors the prefix checks both builders rely on.
32
32
  const kindOf = (product) => product.id.startsWith("vip.")
@@ -50,9 +50,15 @@ const kindOf = (product) => product.id.startsWith("vip.")
50
50
  * user sees Telegram's "Payment failed" sheet with that reason.
51
51
  */
52
52
  export const buildPreCheckoutHandler = (catalog) => async (ctx) => {
53
- log.success(`pre_checkout_query received: user=${ctx.from.id} currency=${ctx.currency} amount=${ctx.totalAmount} payload="${ctx.invoicePayload}" id=${ctx.id}`);
53
+ log.success("pre_checkout_query received", {
54
+ user: ctx.from.id,
55
+ currency: ctx.currency,
56
+ amount: ctx.totalAmount,
57
+ payload: ctx.invoicePayload,
58
+ id: ctx.id,
59
+ });
54
60
  const reject = async (reasonEn, reasonEs) => {
55
- log.warn(`pre_checkout rejecting: ${reasonEn} (id=${ctx.id})`);
61
+ log.warn("pre_checkout rejecting", { reason: reasonEn, id: ctx.id });
56
62
  try {
57
63
  await ctx.bot.api.answerPreCheckoutQuery({
58
64
  pre_checkout_query_id: ctx.id,
@@ -64,7 +70,7 @@ export const buildPreCheckoutHandler = (catalog) => async (ctx) => {
64
70
  });
65
71
  }
66
72
  catch (e) {
67
- log.error(`answerPreCheckoutQuery(false) failed: ${e}`);
73
+ log.error("answerPreCheckoutQuery failed", { ok: false, err: e });
68
74
  }
69
75
  };
70
76
  if (ctx.currency !== "XTR") {
@@ -89,7 +95,11 @@ export const buildPreCheckoutHandler = (catalog) => async (ctx) => {
89
95
  await reject(`Price changed (expected ${product.xtr}, got ${ctx.totalAmount}).`, "Precio cambiado.");
90
96
  return;
91
97
  }
92
- log.success(`pre_checkout approving: product=${decoded.productKey} user=${ctx.from.id} amount=${ctx.totalAmount}`);
98
+ log.success("pre_checkout approving", {
99
+ product: decoded.productKey,
100
+ user: ctx.from.id,
101
+ amount: ctx.totalAmount,
102
+ });
93
103
  try {
94
104
  await ctx.bot.api.answerPreCheckoutQuery({
95
105
  pre_checkout_query_id: ctx.id,
@@ -97,7 +107,7 @@ export const buildPreCheckoutHandler = (catalog) => async (ctx) => {
97
107
  });
98
108
  }
99
109
  catch (e) {
100
- log.error(`answerPreCheckoutQuery(true) failed: ${e}`);
110
+ log.error("answerPreCheckoutQuery failed", { ok: true, err: e });
101
111
  }
102
112
  };
103
113
  // ─── successful_payment handler ────────────────────────────────────
@@ -150,15 +160,23 @@ const buildChargeRecord = (product, userId, payment, waiverSnapshot) => {
150
160
  export const buildSuccessfulPaymentHandler = (opts) => async (ctx) => {
151
161
  const payment = ctx.eventPayment?.payload;
152
162
  if (!payment) {
153
- log.warn("successful_payment handler fired but ctx.eventPayment.payload is undefined — gramio context shape changed?");
163
+ log.warn("successful_payment without ctx.eventPayment.payload, gramio context shape changed?");
154
164
  return;
155
165
  }
156
166
  if (payment.currency !== "XTR")
157
167
  return; // fiat — not ours
158
- log.success(`successful_payment received: chargeId=${payment.telegram_payment_charge_id} amount=${payment.total_amount} payload="${payment.invoice_payload}" subExpires=${payment.subscription_expiration_date ?? "n/a"}`);
168
+ log.success("successful_payment received", {
169
+ charge_id: payment.telegram_payment_charge_id,
170
+ amount: payment.total_amount,
171
+ payload: payment.invoice_payload,
172
+ subscription_expires: payment.subscription_expiration_date,
173
+ });
159
174
  const decoded = decodePayload(payment.invoice_payload);
160
175
  if (!decoded) {
161
- log.error(`successful_payment un-decodable payload — fulfillment skipped: chargeId=${payment.telegram_payment_charge_id} payload="${payment.invoice_payload}"`);
176
+ log.error("successful_payment payload undecodable, fulfillment skipped", {
177
+ charge_id: payment.telegram_payment_charge_id,
178
+ payload: payment.invoice_payload,
179
+ });
162
180
  return;
163
181
  }
164
182
  const userId = ctx.from?.id ?? decoded.userId;
@@ -170,12 +188,17 @@ export const buildSuccessfulPaymentHandler = (opts) => async (ctx) => {
170
188
  // bounded by Telegram's retry delay and acceptable for v1.
171
189
  const claimed = await opts.stores.idempotency.claim(ctx, payment.telegram_payment_charge_id);
172
190
  if (!claimed) {
173
- log.info(`successful_payment idempotent no-op: chargeId=${payment.telegram_payment_charge_id} already fulfilled`);
191
+ log.info("successful_payment already fulfilled, no-op", {
192
+ charge_id: payment.telegram_payment_charge_id,
193
+ });
174
194
  return;
175
195
  }
176
196
  const product = opts.catalog.byKey.get(decoded.productKey);
177
197
  if (!product) {
178
- log.error(`successful_payment for unknown productKey "${decoded.productKey}" — config drift? chargeId=${payment.telegram_payment_charge_id}`);
198
+ log.error("successful_payment for unknown productKey, config drift?", {
199
+ product_key: decoded.productKey,
200
+ charge_id: payment.telegram_payment_charge_id,
201
+ });
179
202
  return;
180
203
  }
181
204
  const waiverSnapshot = ctx.session.pay?.waiver;
@@ -187,7 +210,10 @@ export const buildSuccessfulPaymentHandler = (opts) => async (ctx) => {
187
210
  // snapshot" entry that's auditable. The `panic` is
188
211
  // intentionally after the persistence path on purpose to keep
189
212
  // the user whole; the next event will crash.
190
- log.error(`CRITICAL: successful_payment without prior waiver — gate bypassed? userId=${userId} chargeId=${payment.telegram_payment_charge_id}`);
213
+ log.error("CRITICAL: successful_payment without prior waiver, gate bypassed?", {
214
+ user: userId,
215
+ charge_id: payment.telegram_payment_charge_id,
216
+ });
191
217
  }
192
218
  const charge = buildChargeRecord(product, userId, payment, waiverSnapshot ?? {
193
219
  at: Date.now(),
@@ -198,7 +224,13 @@ export const buildSuccessfulPaymentHandler = (opts) => async (ctx) => {
198
224
  // (Idempotency sentinel was already claimed above.)
199
225
  await opts.stores.charges.set(ctx, charge.chargeId, charge);
200
226
  await opts.stores.userCharges(userId).prepend(ctx, charge.chargeId);
201
- log.info(`charge persisted: chargeId=${charge.chargeId} product=${charge.productKey} user=${userId} xtr=${charge.xtr} creditsGranted=${charge.creditsGranted}`);
227
+ log.info("charge persisted", {
228
+ charge_id: charge.chargeId,
229
+ product: charge.productKey,
230
+ user: userId,
231
+ xtr: charge.xtr,
232
+ credits_granted: charge.creditsGranted,
233
+ });
202
234
  // 2. Apply to session (cache). Capture the previous vip chargeId
203
235
  // FIRST so we can cancel its renewal below if this was an upgrade.
204
236
  const previousVipChargeId = ctx.session.pay?.vip?.chargeId;
@@ -221,11 +253,15 @@ export const buildSuccessfulPaymentHandler = (opts) => async (ctx) => {
221
253
  telegram_payment_charge_id: previousVipChargeId,
222
254
  is_canceled: true,
223
255
  });
224
- log.info(`auto-canceled previous vip rung ${previousVipRung} on upgrade to ${charge.vipRung} (user=${userId})`);
256
+ log.info("auto-canceled previous vip rung on upgrade", {
257
+ from_rung: previousVipRung,
258
+ to_rung: charge.vipRung,
259
+ user: userId,
260
+ });
225
261
  }
226
262
  catch (e) {
227
263
  // Already canceled, expired, etc. Log; don't block fulfillment.
228
- log.warn(`auto-cancel previous vip subscription failed (likely already canceled/expired): user=${userId} previousChargeId=${previousVipChargeId} err=${e instanceof Error ? e.message : String(e)}`);
264
+ log.warn("auto-cancel of the previous vip subscription failed, likely already canceled or expired", { user: userId, previous_charge_id: previousVipChargeId, err: e });
229
265
  }
230
266
  }
231
267
  // 4. User-facing confirmation
@@ -248,13 +284,17 @@ export const buildSuccessfulPaymentHandler = (opts) => async (ctx) => {
248
284
  fn(event, ctx);
249
285
  }
250
286
  catch (e) {
251
- log.error(`onFulfilled handler for "${key}" threw: ${e}`);
287
+ log.error("onFulfilled handler threw", { key, err: e });
252
288
  }
253
289
  }
254
290
  };
255
291
  fireBucket(product.id);
256
292
  fireBucket("*");
257
- log.success(`fulfillment complete: product=${product.id} user=${userId} chargeId=${charge.chargeId}`);
293
+ log.success("fulfillment complete", {
294
+ product: product.id,
295
+ user: userId,
296
+ charge_id: charge.chargeId,
297
+ });
258
298
  // 6. Sanity-fail AFTER everything has been persisted + the user
259
299
  // has their confirmation — defensive, see CRITICAL log above.
260
300
  if (!waiverSnapshot) {
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/bot/payments/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/bot/payments/handlers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"invoice.d.ts","sourceRoot":"","sources":["../../../src/bot/payments/invoice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,OAAO,KAAK,EACX,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,eAAe,EACf,MAAM,YAAY,CAAC;AASpB;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACxB,GAAG,EAAE;QACJ,GAAG,EAAE;YACJ,WAAW,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;SAC7D,CAAC;KACF,CAAC;IACF,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACtB,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACvD,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,eAAe,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD,CAAC;AAEF,qEAAqE;AACrE,KAAK,iBAAiB,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAyHF;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GACjC,KAAK,UAAU,EACf,KAAK,iBAAiB,CAAC,MAAM,CAAC,EAC9B,SAAS,eAAe,GAAG,mBAAmB,GAAG,YAAY,EAC7D,QAAQ,MAAM,KACZ,OAAO,CAAC,IAAI,CAsDd,CAAC;AAIF;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAC7B,cAAc,GACd,oBAAoB,GACpB,iBAAiB,CAAC;AAErB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc,GAC1B,KAAK,UAAU,GAAG;IACjB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D,EACD,KAAK,iBAAiB,CAAC,MAAM,CAAC,EAC9B,SAAS,cAAc,EACvB,YAAY,MAAM,KAChB,OAAO,CAAC,oBAAoB,CAuC9B,CAAC"}
1
+ {"version":3,"file":"invoice.d.ts","sourceRoot":"","sources":["../../../src/bot/payments/invoice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,OAAO,KAAK,EACX,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,eAAe,EACf,MAAM,YAAY,CAAC;AASpB;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACxB,GAAG,EAAE;QACJ,GAAG,EAAE;YACJ,WAAW,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;SAC7D,CAAC;KACF,CAAC;IACF,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACtB,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACvD,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,eAAe,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD,CAAC;AAEF,qEAAqE;AACrE,KAAK,iBAAiB,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAyHF;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GACjC,KAAK,UAAU,EACf,KAAK,iBAAiB,CAAC,MAAM,CAAC,EAC9B,SAAS,eAAe,GAAG,mBAAmB,GAAG,YAAY,EAC7D,QAAQ,MAAM,KACZ,OAAO,CAAC,IAAI,CA2Dd,CAAC;AAIF;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAC7B,cAAc,GACd,oBAAoB,GACpB,iBAAiB,CAAC;AAErB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc,GAC1B,KAAK,UAAU,GAAG;IACjB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D,EACD,KAAK,iBAAiB,CAAC,MAAM,CAAC,EAC9B,SAAS,cAAc,EACvB,YAAY,MAAM,KAChB,OAAO,CAAC,oBAAoB,CA4C9B,CAAC"}
@@ -18,11 +18,11 @@
18
18
  */
19
19
  import { panic, SourcedError } from "../../offensive.js";
20
20
  import { say } from "../../say/index.js";
21
- import { scope } from "../../universal/log.js";
21
+ import { log as root } from "../../universal/log.js";
22
22
  import { ctxLang, FALLBACK_LANG } from "../lang.js";
23
23
  import { encodePayload } from "./payload.js";
24
24
  import { renderConsentBody, waiverKeyboard } from "./waiver.js";
25
- const log = scope("bot/payments");
25
+ const log = root.scope("bot/payments");
26
26
  // Telegram caps from the Bot API (sendInvoice §):
27
27
  const TITLE_MAX = 32;
28
28
  const DESCRIPTION_MAX = 255;
@@ -140,14 +140,23 @@ export const sendInvoiceForProduct = async (ctx, cfg, product, userId) => {
140
140
  if (product.id.startsWith("vip.")) {
141
141
  params.subscription_period = product.periodSeconds;
142
142
  }
143
- log.success(`sendInvoice → telegram: product=${product.id} user=${userId} xtr=${product.xtr} title="${title}" subscription_period=${params.subscription_period ?? "none"}`);
143
+ log.success("sendInvoice sent to telegram", {
144
+ product: product.id,
145
+ user: userId,
146
+ xtr: product.xtr,
147
+ title,
148
+ subscription_period: params.subscription_period,
149
+ });
144
150
  try {
145
151
  await ctx.bot.api.sendInvoice(params);
146
- log.success(`sendInvoice accepted by telegram: product=${product.id} user=${userId}`);
152
+ log.success("sendInvoice accepted by telegram", {
153
+ product: product.id,
154
+ user: userId,
155
+ });
147
156
  }
148
157
  catch (e) {
149
158
  const msg = e instanceof Error ? e.message : String(e);
150
- log.error(`sendInvoice rejected by telegram: ${msg}`);
159
+ log.error("sendInvoice rejected by telegram", { err: e });
151
160
  // Hint on the specific subscription-export setup gotcha — there's
152
161
  // no documented fix path in gramio/telegram docs, so surface ours.
153
162
  if (msg.includes("SUBSCRIPTION_EXPORT_MISSING")) {
@@ -179,7 +188,7 @@ export const sendInvoiceForProduct = async (ctx, cfg, product, userId) => {
179
188
  export const presentInvoice = async (ctx, cfg, catalog, productKey) => {
180
189
  const product = catalog.byKey.get(productKey);
181
190
  if (!product) {
182
- log.warn(`presentInvoice unknown productKey "${productKey}"`);
191
+ log.warn("presentInvoice unknown productKey", { product_key: productKey });
183
192
  const lang = ctxLang(ctx);
184
193
  await ctx.send(say({
185
194
  en: `❌ Unknown product "${productKey}".`,
@@ -194,14 +203,23 @@ export const presentInvoice = async (ctx, cfg, catalog, productKey) => {
194
203
  const stored = ctx.session?.pay?.waiver;
195
204
  const fresh = stored && stored.version === cfg.waiver.version;
196
205
  if (!fresh) {
197
- log.info(`presentInvoice: waiver ${stored ? `stale (${stored.version} ≠ ${cfg.waiver.version})` : "missing"} — sending consent prompt for ${product.id} user=${userId}`);
206
+ log.info("presentInvoice sending waiver consent prompt", {
207
+ waiver: stored ? "stale" : "missing",
208
+ stored_version: stored?.version,
209
+ current_version: cfg.waiver.version,
210
+ product: product.id,
211
+ user: userId,
212
+ });
198
213
  const lang = ctxLang(ctx);
199
214
  await ctx.send(renderConsentBody(cfg, lang), {
200
215
  reply_markup: waiverKeyboard(cfg, product.id, lang),
201
216
  });
202
217
  return "waiver_prompt_sent";
203
218
  }
204
- log.info(`presentInvoice: waiver fresh — going straight to sendInvoice for ${product.id} user=${userId}`);
219
+ log.info("presentInvoice waiver fresh, sending invoice", {
220
+ product: product.id,
221
+ user: userId,
222
+ });
205
223
  await sendInvoiceForProduct(ctx, cfg, product, userId);
206
224
  return "invoice_sent";
207
225
  };