Skip to content

Commit 7176d70

Browse files
authored
wip (#13)
- Added knip to detect unused code; - Added Effect LSP to typechecking process; - Removed `InputFile` module; - Added `File` module was introduced with types supported for uploading, and with file downloading utilities; - Added support for uploading files in `BotApiTransport`; - Renamed `Chat` module to `Dialog`; - Added support for more content types with convenient constructors; - Merged `Middleware` module into `Bot`; - Added `BotApi.callMethod` method for convenient calling arbitrary API methods; - Added `BotApiUrl` module that encapsulates Bot API URL paths configuration; - Removed `BotApiWebhook` module (needs better API design); - Added `Markup` module (WIP); - Enhanced `Send` module API by introducing `MessageToSend` model and `Send.Dialog` service; - Updated dependencies; - Other minor API changes and internal refactoring.
1 parent 983b9fa commit 7176d70

35 files changed

Lines changed: 2196 additions & 1039 deletions

.github/workflows/qa.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,18 @@ jobs:
3838
cache: pnpm
3939
- run: pnpm install --frozen-lockfile
4040
- run: pnpm run typecheck
41+
42+
knip:
43+
name: Knip
44+
runs-on: ubuntu-latest
45+
steps:
46+
- uses: actions/checkout@v5
47+
- uses: pnpm/action-setup@v4
48+
with:
49+
run_install: false
50+
- uses: actions/setup-node@v6
51+
with:
52+
node-version: 22
53+
cache: pnpm
54+
- run: pnpm install --frozen-lockfile
55+
- run: pnpm run knip

.vscode/settings.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
{
2+
// Use TypeScript patched by Effect LSP
3+
"typescript.tsdk": "./node_modules/typescript/lib",
4+
"typescript.enablePromptUseWorkspaceTsdk": true,
5+
26
// Disable the default formatter, use eslint instead
37
"prettier.enable": false,
48
"editor.formatOnSave": false,

eslint.config.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,8 @@ export default antfu({
1111
}, {
1212
rules: {
1313
'antfu/top-level-function': 'off',
14+
'yoda': 'off',
15+
'ts/no-namespace': 'off',
16+
'ts/no-redeclare': 'off',
1417
},
1518
})

knip.config.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import type { KnipConfig } from 'knip'
2+
3+
const config: KnipConfig = {
4+
entry: ['src/index.ts!'],
5+
project: ['src/**/*.ts!'],
6+
rules: {
7+
files: 'error',
8+
dependencies: 'error',
9+
devDependencies: 'error',
10+
optionalPeerDependencies: 'error',
11+
unlisted: 'error',
12+
binaries: 'error',
13+
catalog: 'error',
14+
unresolved: 'error',
15+
exports: 'error',
16+
nsExports: 'error',
17+
classMembers: 'error',
18+
enumMembers: 'error',
19+
types: 'error',
20+
nsTypes: 'error',
21+
duplicates: 'error',
22+
},
23+
eslint: {
24+
config: 'eslint.config.js',
25+
},
26+
typescript: {
27+
config: [
28+
'tsconfig.dev.json',
29+
'tsconfig.lib.json',
30+
],
31+
},
32+
}
33+
34+
export default config

package.json

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "@grom.js/effect-tg",
33
"type": "module",
44
"version": "0.4.0",
5-
"packageManager": "pnpm@10.22.0",
5+
"packageManager": "pnpm@10.25.0",
66
"description": "Effectful library for crafting Telegram bots.",
77
"author": {
88
"name": "Vladislav Deryabkin",
@@ -25,18 +25,21 @@
2525
}
2626
},
2727
"files": [
28-
"dist/"
28+
"./dist/",
29+
"./src/"
2930
],
3031
"engines": {
3132
"node": "22.x"
3233
},
3334
"scripts": {
34-
"gen:bot-api": "node scripts/gen-bot-api.ts",
35+
"prepare": "effect-language-service patch",
36+
"gen:bot-api": "node ./scripts/gen-bot-api.ts",
3537
"typecheck": "tsc --build --noEmit tsconfig.json",
36-
"build": "rm -rf dist/ && tsc --project tsconfig.lib.json",
38+
"build": "rm -rf ./dist/ && tsc --project ./tsconfig.lib.json",
3739
"deps": "taze --write --interactive --include-locked minor",
3840
"lint": "eslint",
3941
"lint:fix": "eslint --fix",
42+
"knip": "knip --config ./knip.config.ts",
4043
"release": "bumpp"
4144
},
4245
"peerDependencies": {
@@ -45,14 +48,15 @@
4548
"effect": "^3.19.3"
4649
},
4750
"devDependencies": {
48-
"@antfu/eslint-config": "6.2.0",
49-
"@effect/platform-node": "0.100.0",
51+
"@antfu/eslint-config": "6.5.1",
52+
"@effect/language-service": "0.60.0",
5053
"@grom.js/bot-api-spec": "0.4.1",
51-
"@types/node": "22.19.1",
52-
"bumpp": "10.3.1",
54+
"@types/node": "22.19.2",
55+
"bumpp": "10.3.2",
5356
"eslint": "9.39.1",
54-
"eslint-plugin-format": "1.0.2",
55-
"taze": "19.9.0",
57+
"eslint-plugin-format": "1.1.0",
58+
"knip": "5.72.0",
59+
"taze": "19.9.2",
5660
"ts-morph": "27.0.2",
5761
"typescript": "5.9.3"
5862
}

0 commit comments

Comments
 (0)