yaebal 0.0.2 → 0.0.4

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.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  ### yaebal
5
5
 
6
- *the batteries-included telegram bot framework*
6
+ *the batteries-included telegram bot framework*
7
7
  **one import** · **type-safe** · **runtime-agnostic**
8
8
 
9
9
  [🔗 docs](https://yaebal.pages.dev) · [⭐ github](https://github.com/neverlane/yaebal) · [📦 npmx](https://npmx.dev/org/yaebal)
@@ -58,21 +58,21 @@ bot.on("callback_query:data", (ctx) => ctx.answer("ok")); // CallbackQueryContex
58
58
 
59
59
  one `import { … } from "yaebal"` gives you, ready to use:
60
60
 
61
- | from | exports | what |
62
- |:------------------|:--------------------------------------------------------------|:--------------------------------------|
63
- | core | `Bot`, `Composer`, `Context`, `media`, `Api` hooks | the engine, filter queries, transports |
64
- | contexts | `createBot`, the per-update context classes | typed `ctx.react` / `ctx.editText` / … |
65
- | `@yaebal/keyboard`| `InlineKeyboard`, `Keyboard` | fluent keyboard builders |
66
- | `@yaebal/callback-data` | `callbackData` | typed `callback_data` pack / unpack |
67
- | `@yaebal/fmt` | `html`, `md` (+ `*ToEntities`) | tagged templates with auto-escaping |
68
- | `@yaebal/filters` | `filters`, `and`, `or`, `not` | composable, type-narrowing filters |
69
- | `@yaebal/session` | `session` | per-chat state, pluggable storage |
70
- | `@yaebal/i18n` | `i18n` | per-chat locale, `ctx.t` |
71
- | `@yaebal/web` | `serve`, `webhook`, `setWebhook`, `deleteWebhook` | webhooks on edge/web runtimes |
61
+ | from | exports | what |
62
+ |:------------------------|:---------------------------------------------------------------|:---------------------------------------|
63
+ | core | `Bot`, `Composer`, `Context`, `media`, `Api` hooks | the engine, filter queries, transports |
64
+ | contexts | `createBot`, the per-update context classes | typed `ctx.react` / `ctx.editText` / … |
65
+ | `@yaebal/keyboard` | `InlineKeyboard`, `Keyboard` | fluent keyboard builders |
66
+ | `@yaebal/callback-data` | `callbackData` | typed `callback_data` pack / unpack |
67
+ | `@yaebal/fmt` | `html`, `md` (+ `*ToEntities`) | tagged templates with auto-escaping |
68
+ | `@yaebal/filters` | `filters`, `and`, `or`, `not` | composable, type-narrowing filters |
69
+ | `@yaebal/session` | `session` | per-chat state, pluggable storage |
70
+ | `@yaebal/i18n` | `i18n` | per-chat locale, `ctx.t` |
71
+ | `@yaebal/web` | `serve`, `webhook`, `setWebhook`, `deleteWebhook` | webhooks on edge/web runtimes |
72
72
 
73
73
  ## a quick tour
74
74
 
75
- **keyboards + typed callback data**
75
+ ### keyboards + typed callback data
76
76
 
77
77
  ```ts
78
78
  import { InlineKeyboard, callbackData } from "yaebal";
@@ -94,7 +94,7 @@ bot.on("callback_query:data", (ctx) => {
94
94
  });
95
95
  ```
96
96
 
97
- **per-chat sessions**
97
+ ### per-chat sessions
98
98
 
99
99
  ```ts
100
100
  import { session } from "yaebal";
@@ -103,7 +103,7 @@ bot.install(session({ initial: () => ({ count: 0 }) }));
103
103
  bot.command("count", (ctx) => ctx.reply(`#${++ctx.session.count}`));
104
104
  ```
105
105
 
106
- **i18n**
106
+ ### i18n (internationalization)
107
107
 
108
108
  ```ts
109
109
  import { i18n } from "yaebal";
@@ -115,7 +115,7 @@ bot.install(i18n({
115
115
  bot.command("start", (ctx) => ctx.reply(ctx.t("hi")));
116
116
  ```
117
117
 
118
- **media — no platform package**
118
+ ### media — no platform package
119
119
 
120
120
  ```ts
121
121
  import { media } from "yaebal";
@@ -124,7 +124,7 @@ bot.command("pic", (ctx) => ctx.sendPhoto(media.path("./cat.jpg"))); // node/bun
124
124
  // on edge, send media.url(...) / media.buffer(...) instead
125
125
  ```
126
126
 
127
- **run on the edge (webhooks)**
127
+ ### run on the edge (webhooks)
128
128
 
129
129
  ```ts
130
130
  import { Bot, webhook } from "yaebal";
@@ -133,6 +133,7 @@ export default {
133
133
  fetch(request: Request, env: { BOT_TOKEN: string; SECRET: string }) {
134
134
  const bot = new Bot(env.BOT_TOKEN);
135
135
  bot.command("start", (ctx) => ctx.reply("running on the edge ⚡"));
136
+
136
137
  return webhook(bot, { secretToken: env.SECRET })(request);
137
138
  },
138
139
  };
package/lib/index.d.ts CHANGED
@@ -4,17 +4,17 @@
4
4
  * a single import. `createBot()` wires the rich per-update contexts (with their
5
5
  * auto-generated shortcut methods) onto every update via the core context factory.
6
6
  */
7
- export * from "@yaebal/core";
7
+ export { callbackData } from "@yaebal/callback-data";
8
8
  export * from "@yaebal/contexts";
9
+ export * from "@yaebal/core";
9
10
  export { and, filters, not, or } from "@yaebal/filters";
10
11
  export { html, htmlToEntities, md, mdToEntities } from "@yaebal/fmt";
12
+ export { i18n } from "@yaebal/i18n";
11
13
  export { InlineKeyboard, Keyboard } from "@yaebal/keyboard";
12
- export { callbackData } from "@yaebal/callback-data";
13
14
  export { session } from "@yaebal/session";
14
- export { i18n } from "@yaebal/i18n";
15
15
  export { deleteWebhook, serve, setWebhook, webhook } from "@yaebal/web";
16
16
  import { type ContextByType } from "@yaebal/contexts";
17
- import { type BotOptions, Context, Bot as CoreBot, type FilterQuery, type Filtered, type Middleware } from "@yaebal/core";
17
+ import { type BotOptions, Context, Bot as CoreBot, type Filtered, type FilterQuery, type Middleware } from "@yaebal/core";
18
18
  type ContextFactory = NonNullable<BotOptions["contextFactory"]>;
19
19
  /**
20
20
  * build a base {@link Context} and graft the auto-generated shortcut methods
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,kBAAkB,CAAC;AAClE,OAAO,EACN,KAAK,UAAU,EACf,OAAO,EACP,GAAG,IAAI,OAAO,EAEd,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,MAAM,cAAc,CAAC;AAEtB,KAAK,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;AA0BhE;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,cA0CzB,CAAC;AAGF,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5E,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,aAAa,GACtE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAC3B,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAExB;;;;;GAKG;AACH,qBAAa,GAAG,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;gBACnD,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe;IAK1C,EAAE,CAAC,CAAC,SAAS,WAAW,EAChC,KAAK,EAAE,CAAC,EACR,GAAG,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GACpD,IAAI;IAIE,OAAO,CACf,IAAI,EAAE,MAAM,EACZ,GAAG,QAAQ,EAAE,UAAU,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,GAC3F,IAAI;CAMP;AAED,kGAAkG;AAClG,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,GAAG,CAEtE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,kBAAkB,CAAC;AAClE,OAAO,EACN,KAAK,UAAU,EACf,OAAO,EACP,GAAG,IAAI,OAAO,EAEd,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,MAAM,cAAc,CAAC;AAEtB,KAAK,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;AA0BhE;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,cA0CzB,CAAC;AAGF,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5E,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,IAC5B,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAE/F;;;;;GAKG;AACH,qBAAa,GAAG,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;gBACnD,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe;IAK1C,EAAE,CAAC,CAAC,SAAS,WAAW,EAChC,KAAK,EAAE,CAAC,EACR,GAAG,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GACpD,IAAI;IAIE,OAAO,CACf,IAAI,EAAE,MAAM,EACZ,GAAG,QAAQ,EAAE,UAAU,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,GAC3F,IAAI;CAMP;AAED,kGAAkG;AAClG,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,GAAG,CAEtE"}
package/lib/index.js CHANGED
@@ -4,14 +4,14 @@
4
4
  * a single import. `createBot()` wires the rich per-update contexts (with their
5
5
  * auto-generated shortcut methods) onto every update via the core context factory.
6
6
  */
7
- export * from "@yaebal/core";
7
+ export { callbackData } from "@yaebal/callback-data";
8
8
  export * from "@yaebal/contexts";
9
+ export * from "@yaebal/core";
9
10
  export { and, filters, not, or } from "@yaebal/filters";
10
11
  export { html, htmlToEntities, md, mdToEntities } from "@yaebal/fmt";
12
+ export { i18n } from "@yaebal/i18n";
11
13
  export { InlineKeyboard, Keyboard } from "@yaebal/keyboard";
12
- export { callbackData } from "@yaebal/callback-data";
13
14
  export { session } from "@yaebal/session";
14
- export { i18n } from "@yaebal/i18n";
15
15
  export { deleteWebhook, serve, setWebhook, webhook } from "@yaebal/web";
16
16
  import { contextFor } from "@yaebal/contexts";
17
17
  import { Context, Bot as CoreBot, } from "@yaebal/core";
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yaebal",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "yaebal — batteries-included Telegram Bot API framework: core + auto-generated contexts + the common plugins, one import.",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -16,15 +16,15 @@
16
16
  "src"
17
17
  ],
18
18
  "dependencies": {
19
- "@yaebal/keyboard": "0.0.1",
20
- "@yaebal/callback-data": "0.0.1",
21
- "@yaebal/fmt": "0.0.1",
22
- "@yaebal/session": "0.0.1",
23
- "@yaebal/filters": "0.0.1",
24
- "@yaebal/core": "0.0.1",
25
- "@yaebal/contexts": "0.0.1",
26
- "@yaebal/i18n": "0.0.1",
27
- "@yaebal/web": "0.0.1"
19
+ "@yaebal/core": "0.0.5",
20
+ "@yaebal/contexts": "0.0.2",
21
+ "@yaebal/keyboard": "0.0.2",
22
+ "@yaebal/callback-data": "0.0.2",
23
+ "@yaebal/filters": "0.0.2",
24
+ "@yaebal/session": "0.0.2",
25
+ "@yaebal/i18n": "0.0.3",
26
+ "@yaebal/fmt": "0.0.2",
27
+ "@yaebal/web": "0.0.2"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/node": "latest"
package/src/index.test.ts CHANGED
@@ -56,6 +56,6 @@ test("typed routers expose the generated shortcuts + narrowed fields", () => {
56
56
  void args;
57
57
  void ctx.react; // command handlers get the message context
58
58
  });
59
-
59
+
60
60
  assert.ok(bot);
61
61
  });
package/src/index.ts CHANGED
@@ -5,14 +5,14 @@
5
5
  * auto-generated shortcut methods) onto every update via the core context factory.
6
6
  */
7
7
 
8
- export * from "@yaebal/core";
8
+ export { callbackData } from "@yaebal/callback-data";
9
9
  export * from "@yaebal/contexts";
10
+ export * from "@yaebal/core";
10
11
  export { and, filters, not, or } from "@yaebal/filters";
11
12
  export { html, htmlToEntities, md, mdToEntities } from "@yaebal/fmt";
13
+ export { i18n } from "@yaebal/i18n";
12
14
  export { InlineKeyboard, Keyboard } from "@yaebal/keyboard";
13
- export { callbackData } from "@yaebal/callback-data";
14
15
  export { session } from "@yaebal/session";
15
- export { i18n } from "@yaebal/i18n";
16
16
  export { deleteWebhook, serve, setWebhook, webhook } from "@yaebal/web";
17
17
 
18
18
  import { type ContextByType, contextFor } from "@yaebal/contexts";
@@ -21,8 +21,8 @@ import {
21
21
  Context,
22
22
  Bot as CoreBot,
23
23
  type FileReader,
24
- type FilterQuery,
25
24
  type Filtered,
25
+ type FilterQuery,
26
26
  type Middleware,
27
27
  } from "@yaebal/core";
28
28
 
@@ -46,7 +46,7 @@ const autoReadFile: FileReader = async (path) => {
46
46
  if (g.Deno) return g.Deno.readFile(path);
47
47
  if (g.Bun) return g.Bun.file(path).bytes();
48
48
  if (g.process?.versions?.node) return (await import("node:fs/promises")).readFile(path);
49
-
49
+
50
50
  throw new Error(
51
51
  "yaebal: no filesystem in this runtime — send media.buffer()/url() instead of media.path().",
52
52
  );
@@ -103,9 +103,8 @@ export const richContext: ContextFactory = (api, update, updateType) => {
103
103
 
104
104
  // map a filter query to the matching generated context (the part before `:`).
105
105
  type QueryHead<Q extends string> = Q extends `${infer H}:${string}` ? H : Q;
106
- type RichFor<Q extends string> = QueryHead<Q> extends keyof ContextByType
107
- ? ContextByType[QueryHead<Q>]
108
- : Record<never, never>;
106
+ type RichFor<Q extends string> =
107
+ QueryHead<Q> extends keyof ContextByType ? ContextByType[QueryHead<Q>] : Record<never, never>;
109
108
 
110
109
  /**
111
110
  * a {@link CoreBot} whose routers type the handler context to the matching