@jilimb0/tgwrapper 0.4.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.
- package/README.md +38 -0
- package/dist/adapters/aws-lambda-handler.d.ts +29 -0
- package/dist/adapters/aws-lambda-handler.d.ts.map +1 -0
- package/dist/adapters/aws-lambda-handler.js +39 -0
- package/dist/adapters/aws-lambda-handler.js.map +1 -0
- package/dist/adapters/cloudflare-worker-handler.d.ts +7 -0
- package/dist/adapters/cloudflare-worker-handler.d.ts.map +1 -0
- package/dist/adapters/cloudflare-worker-handler.js +24 -0
- package/dist/adapters/cloudflare-worker-handler.js.map +1 -0
- package/dist/adapters/node-http-handler.d.ts +20 -0
- package/dist/adapters/node-http-handler.d.ts.map +1 -0
- package/dist/adapters/node-http-handler.js +41 -0
- package/dist/adapters/node-http-handler.js.map +1 -0
- package/dist/adapters/webhook-handler.d.ts +14 -0
- package/dist/adapters/webhook-handler.d.ts.map +1 -0
- package/dist/adapters/webhook-handler.js +54 -0
- package/dist/adapters/webhook-handler.js.map +1 -0
- package/dist/core/api-client.d.ts +18 -0
- package/dist/core/api-client.d.ts.map +1 -0
- package/dist/core/api-client.js +139 -0
- package/dist/core/api-client.js.map +1 -0
- package/dist/core/bot-kernel.d.ts +29 -0
- package/dist/core/bot-kernel.d.ts.map +1 -0
- package/dist/core/bot-kernel.js +99 -0
- package/dist/core/bot-kernel.js.map +1 -0
- package/dist/core/circuit-breaker.d.ts +19 -0
- package/dist/core/circuit-breaker.d.ts.map +1 -0
- package/dist/core/circuit-breaker.js +59 -0
- package/dist/core/circuit-breaker.js.map +1 -0
- package/dist/core/context.d.ts +29 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +67 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/errors.d.ts +21 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +45 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/fsm/session-manager.d.ts +22 -0
- package/dist/fsm/session-manager.d.ts.map +1 -0
- package/dist/fsm/session-manager.js +79 -0
- package/dist/fsm/session-manager.js.map +1 -0
- package/dist/guards/bounded-concurrency.d.ts +14 -0
- package/dist/guards/bounded-concurrency.d.ts.map +1 -0
- package/dist/guards/bounded-concurrency.js +48 -0
- package/dist/guards/bounded-concurrency.js.map +1 -0
- package/dist/guards/token-bucket-rate-limiter.d.ts +11 -0
- package/dist/guards/token-bucket-rate-limiter.d.ts.map +1 -0
- package/dist/guards/token-bucket-rate-limiter.js +27 -0
- package/dist/guards/token-bucket-rate-limiter.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/observability/ecs-logger.d.ts +18 -0
- package/dist/observability/ecs-logger.d.ts.map +1 -0
- package/dist/observability/ecs-logger.js +42 -0
- package/dist/observability/ecs-logger.js.map +1 -0
- package/dist/observability/metrics.d.ts +12 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +31 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/router/router.d.ts +30 -0
- package/dist/router/router.d.ts.map +1 -0
- package/dist/router/router.js +62 -0
- package/dist/router/router.js.map +1 -0
- package/dist/runtime/bot-runtime.d.ts +25 -0
- package/dist/runtime/bot-runtime.d.ts.map +1 -0
- package/dist/runtime/bot-runtime.js +59 -0
- package/dist/runtime/bot-runtime.js.map +1 -0
- package/dist/storage/memory-session-storage.d.ts +12 -0
- package/dist/storage/memory-session-storage.d.ts.map +1 -0
- package/dist/storage/memory-session-storage.js +53 -0
- package/dist/storage/memory-session-storage.js.map +1 -0
- package/dist/storage/redis-session-storage.d.ts +45 -0
- package/dist/storage/redis-session-storage.d.ts.map +1 -0
- package/dist/storage/redis-session-storage.js +101 -0
- package/dist/storage/redis-session-storage.js.map +1 -0
- package/dist/tenant/key-namespace.d.ts +7 -0
- package/dist/tenant/key-namespace.d.ts.map +1 -0
- package/dist/tenant/key-namespace.js +7 -0
- package/dist/tenant/key-namespace.js.map +1 -0
- package/dist/types/core.d.ts +106 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +2 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/telegram.d.ts +2 -0
- package/dist/types/telegram.d.ts.map +1 -0
- package/dist/types/telegram.js +2 -0
- package/dist/types/telegram.js.map +1 -0
- package/dist/update-loop/polling.d.ts +13 -0
- package/dist/update-loop/polling.d.ts.map +1 -0
- package/dist/update-loop/polling.js +40 -0
- package/dist/update-loop/polling.js.map +1 -0
- package/dist/update-loop/update-validator.d.ts +4 -0
- package/dist/update-loop/update-validator.d.ts.map +1 -0
- package/dist/update-loop/update-validator.js +17 -0
- package/dist/update-loop/update-validator.js.map +1 -0
- package/dist/update-loop/webhook.d.ts +15 -0
- package/dist/update-loop/webhook.d.ts.map +1 -0
- package/dist/update-loop/webhook.js +30 -0
- package/dist/update-loop/webhook.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/types/telegram.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,aAAa,EACb,IAAI,EACJ,OAAO,EACP,MAAM,EACN,IAAI,EACL,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/types/telegram.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ApiClient } from '../core/api-client.js';
|
|
2
|
+
import type { PollingOptions, UpdateSource } from '../types/core.js';
|
|
3
|
+
import type { Update } from '../types/telegram.js';
|
|
4
|
+
export declare class PollingSource implements UpdateSource {
|
|
5
|
+
private readonly apiClient;
|
|
6
|
+
private readonly options;
|
|
7
|
+
private running;
|
|
8
|
+
private offset;
|
|
9
|
+
constructor(apiClient: ApiClient, options?: PollingOptions);
|
|
10
|
+
run(onUpdate: (update: Update) => Promise<void>): Promise<void>;
|
|
11
|
+
stop(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=polling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polling.d.ts","sourceRoot":"","sources":["../../src/update-loop/polling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAUnD,qBAAa,aAAc,YAAW,YAAY;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAK;gBAEA,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE,cAAmB;IAUxD,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B/D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAGnC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { isFreshUpdate, isValidTelegramUpdate } from './update-validator.js';
|
|
2
|
+
export class PollingSource {
|
|
3
|
+
apiClient;
|
|
4
|
+
options;
|
|
5
|
+
running = false;
|
|
6
|
+
offset = 0;
|
|
7
|
+
constructor(apiClient, options = {}) {
|
|
8
|
+
this.apiClient = apiClient;
|
|
9
|
+
this.options = {
|
|
10
|
+
limit: options.limit ?? 100,
|
|
11
|
+
timeoutSeconds: options.timeoutSeconds ?? 30,
|
|
12
|
+
dropPendingUpdates: options.dropPendingUpdates ?? true,
|
|
13
|
+
signal: options.signal
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
async run(onUpdate) {
|
|
17
|
+
this.running = true;
|
|
18
|
+
while (this.running && !this.options.signal?.aborted) {
|
|
19
|
+
const response = await this.apiClient.callApi('getUpdates', {
|
|
20
|
+
offset: this.offset,
|
|
21
|
+
timeout: this.options.timeoutSeconds,
|
|
22
|
+
limit: this.options.limit
|
|
23
|
+
});
|
|
24
|
+
for (const update of response) {
|
|
25
|
+
this.offset = update.update_id + 1;
|
|
26
|
+
if (!isValidTelegramUpdate(update)) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (this.options.dropPendingUpdates && !isFreshUpdate(update)) {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
await onUpdate(update);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async stop() {
|
|
37
|
+
this.running = false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=polling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polling.js","sourceRoot":"","sources":["../../src/update-loop/polling.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAS7E,MAAM,OAAO,aAAa;IACP,SAAS,CAAY;IACrB,OAAO,CAAyB;IACzC,OAAO,GAAG,KAAK,CAAC;IAChB,MAAM,GAAG,CAAC,CAAC;IAEnB,YAAmB,SAAoB,EAAE,UAA0B,EAAE;QACnE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG;YACb,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG;YAC3B,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,EAAE;YAC5C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,IAAI;YACtD,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,QAA2C;QAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAW,YAAY,EAAE;gBACpE,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;gBACpC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;aAC1B,CAAC,CAAC;YAEH,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;gBAEnC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnC,SAAS;gBACX,CAAC;gBAED,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC9D,SAAS;gBACX,CAAC;gBAED,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-validator.d.ts","sourceRoot":"","sources":["../../src/update-loop/update-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAInD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAOrE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAa,GAAG,OAAO,CAQzE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const FIVE_MINUTES_MS = 5 * 60 * 1000;
|
|
2
|
+
export function isValidTelegramUpdate(value) {
|
|
3
|
+
if (typeof value !== 'object' || value === null) {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
const candidate = value;
|
|
7
|
+
return typeof candidate.update_id === 'number';
|
|
8
|
+
}
|
|
9
|
+
export function isFreshUpdate(update, nowMs = Date.now()) {
|
|
10
|
+
const messageDate = update.message?.date ?? update.callback_query?.message?.date;
|
|
11
|
+
if (!messageDate) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
const ageMs = nowMs - messageDate * 1000;
|
|
15
|
+
return ageMs <= FIVE_MINUTES_MS;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=update-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-validator.js","sourceRoot":"","sources":["../../src/update-loop/update-validator.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtC,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,KAAgC,CAAC;IACnD,OAAO,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC;IACjF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC;IACzC,OAAO,KAAK,IAAI,eAAe,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Update } from '../types/telegram.js';
|
|
2
|
+
import type { UpdateSource } from '../types/core.js';
|
|
3
|
+
export interface WebhookValidationOptions {
|
|
4
|
+
headerName: string;
|
|
5
|
+
secretToken: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class WebhookSource implements UpdateSource {
|
|
8
|
+
private readonly updates;
|
|
9
|
+
private running;
|
|
10
|
+
run(onUpdate: (update: Update) => Promise<void>): Promise<void>;
|
|
11
|
+
stop(): Promise<void>;
|
|
12
|
+
ingest(update: unknown): void;
|
|
13
|
+
validateSignature(headers: Record<string, string | undefined>, options: WebhookValidationOptions): boolean;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=webhook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/update-loop/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,aAAc,YAAW,YAAY;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,OAAO,CAAS;IAEX,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAO7B,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,wBAAwB,GAAG,OAAO;CAIlH"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { isValidTelegramUpdate } from './update-validator.js';
|
|
2
|
+
export class WebhookSource {
|
|
3
|
+
updates = [];
|
|
4
|
+
running = false;
|
|
5
|
+
async run(onUpdate) {
|
|
6
|
+
this.running = true;
|
|
7
|
+
while (this.running) {
|
|
8
|
+
const next = this.updates.shift();
|
|
9
|
+
if (!next) {
|
|
10
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
await onUpdate(next);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
async stop() {
|
|
17
|
+
this.running = false;
|
|
18
|
+
}
|
|
19
|
+
ingest(update) {
|
|
20
|
+
if (!isValidTelegramUpdate(update)) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
this.updates.push(update);
|
|
24
|
+
}
|
|
25
|
+
validateSignature(headers, options) {
|
|
26
|
+
const current = headers[options.headerName.toLowerCase()] ?? headers[options.headerName];
|
|
27
|
+
return current === options.secretToken;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=webhook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/update-loop/webhook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAO9D,MAAM,OAAO,aAAa;IACP,OAAO,GAAa,EAAE,CAAC;IAChC,OAAO,GAAG,KAAK,CAAC;IAEjB,KAAK,CAAC,GAAG,CAAC,QAA2C;QAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxD,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,MAAe;QAC3B,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAEM,iBAAiB,CAAC,OAA2C,EAAE,OAAiC;QACrG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzF,OAAO,OAAO,KAAK,OAAO,CAAC,WAAW,CAAC;IACzC,CAAC;CACF"}
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@jilimb0/tgwrapper",
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "Serverless-first Telegram bot framework without external bot libraries",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"telegram",
|
|
16
|
+
"bot",
|
|
17
|
+
"framework",
|
|
18
|
+
"fsm",
|
|
19
|
+
"serverless"
|
|
20
|
+
],
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=18"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@grammyjs/types": "^3.8.0"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@changesets/cli": "^2.29.6",
|
|
29
|
+
"typedoc": "^0.27.9",
|
|
30
|
+
"typescript": "5.8.2",
|
|
31
|
+
"vitest": "^4.0.18"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"dist",
|
|
35
|
+
"README.md"
|
|
36
|
+
],
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "public"
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "tsc -p tsconfig.json",
|
|
42
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
43
|
+
"test": "vitest run",
|
|
44
|
+
"test:watch": "vitest",
|
|
45
|
+
"test:integration": "pnpm --filter @jilimb0/tgwrapper-adapter-redis test:integration",
|
|
46
|
+
"test:load": "vitest run test/load/throughput.load.test.ts",
|
|
47
|
+
"test:chaos": "vitest run test/chaos/multi-tenant.chaos.test.ts",
|
|
48
|
+
"test:phase4": "pnpm test:load && pnpm test:chaos && pnpm test:integration",
|
|
49
|
+
"benchmark": "pnpm build && node benchmark/run-benchmark.mjs",
|
|
50
|
+
"docs": "typedoc src/index.ts --out docs/api",
|
|
51
|
+
"release:status": "changeset status",
|
|
52
|
+
"release:version": "changeset version",
|
|
53
|
+
"release:publish": "changeset publish"
|
|
54
|
+
}
|
|
55
|
+
}
|