@mtcute/dispatcher 0.7.0 → 0.8.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 (59) hide show
  1. package/README.md +3 -3
  2. package/cjs/context/base.d.ts +2 -1
  3. package/cjs/context/base.js.map +1 -1
  4. package/cjs/context/callback-query.d.ts +2 -1
  5. package/cjs/context/callback-query.js.map +1 -1
  6. package/cjs/context/chat-join-request.d.ts +2 -1
  7. package/cjs/context/chat-join-request.js.map +1 -1
  8. package/cjs/context/chosen-inline-result.d.ts +2 -1
  9. package/cjs/context/chosen-inline-result.js.map +1 -1
  10. package/cjs/context/inline-query.d.ts +2 -1
  11. package/cjs/context/inline-query.js.map +1 -1
  12. package/cjs/context/message.d.ts +3 -5
  13. package/cjs/context/message.js.map +1 -1
  14. package/cjs/context/parse.js.map +1 -1
  15. package/cjs/context/pre-checkout-query.d.ts +2 -1
  16. package/cjs/context/pre-checkout-query.js.map +1 -1
  17. package/cjs/dispatcher.d.ts +2 -1
  18. package/cjs/dispatcher.js.map +1 -1
  19. package/cjs/handler.d.ts +2 -1
  20. package/cjs/handler.js.map +1 -1
  21. package/esm/context/base.d.ts +2 -1
  22. package/esm/context/base.js.map +1 -1
  23. package/esm/context/callback-query.d.ts +2 -1
  24. package/esm/context/callback-query.js.map +1 -1
  25. package/esm/context/chat-join-request.d.ts +2 -1
  26. package/esm/context/chat-join-request.js.map +1 -1
  27. package/esm/context/chosen-inline-result.d.ts +2 -1
  28. package/esm/context/chosen-inline-result.js.map +1 -1
  29. package/esm/context/inline-query.d.ts +2 -1
  30. package/esm/context/inline-query.js.map +1 -1
  31. package/esm/context/message.d.ts +3 -5
  32. package/esm/context/message.js.map +1 -1
  33. package/esm/context/parse.js.map +1 -1
  34. package/esm/context/pre-checkout-query.d.ts +2 -1
  35. package/esm/context/pre-checkout-query.js.map +1 -1
  36. package/esm/dispatcher.d.ts +2 -1
  37. package/esm/dispatcher.js.map +1 -1
  38. package/esm/filters/message.d.ts +1 -1
  39. package/esm/handler.d.ts +2 -1
  40. package/esm/handler.js.map +1 -1
  41. package/package.json +4 -3
  42. package/cjs/callback-data-builder.test.d.ts +0 -1
  43. package/cjs/callback-data-builder.test.js +0 -74
  44. package/cjs/callback-data-builder.test.js.map +0 -1
  45. package/cjs/filters/bots.test.d.ts +0 -1
  46. package/cjs/filters/bots.test.js +0 -121
  47. package/cjs/filters/bots.test.js.map +0 -1
  48. package/cjs/filters/logic.test.d.ts +0 -1
  49. package/cjs/filters/logic.test.js +0 -169
  50. package/cjs/filters/logic.test.js.map +0 -1
  51. package/esm/callback-data-builder.test.d.ts +0 -1
  52. package/esm/callback-data-builder.test.js +0 -72
  53. package/esm/callback-data-builder.test.js.map +0 -1
  54. package/esm/filters/bots.test.d.ts +0 -1
  55. package/esm/filters/bots.test.js +0 -119
  56. package/esm/filters/bots.test.js.map +0 -1
  57. package/esm/filters/logic.test.d.ts +0 -1
  58. package/esm/filters/logic.test.js +0 -167
  59. package/esm/filters/logic.test.js.map +0 -1
@@ -1,74 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const core_1 = require("@mtcute/core");
5
- const utils_js_1 = require("@mtcute/core/utils.js");
6
- const test_1 = require("@mtcute/test");
7
- const callback_data_builder_js_1 = require("./callback-data-builder.js");
8
- (0, vitest_1.describe)('CallbackDataBuilder', () => {
9
- (0, vitest_1.it)('should correctly build data', () => {
10
- const cdb = new callback_data_builder_js_1.CallbackDataBuilder('prefix', 'foo', 'bar');
11
- (0, vitest_1.expect)(cdb.build({ foo: 'foo', bar: 'bar' })).toEqual('prefix:foo:bar');
12
- });
13
- (0, vitest_1.it)('should correctly throw on invalid data when building', () => {
14
- const cdb = new callback_data_builder_js_1.CallbackDataBuilder('prefix', 'foo', 'bar');
15
- (0, vitest_1.expect)(() => cdb.build({ foo: 'foo:1', bar: 'bar' })).toThrow(core_1.MtArgumentError);
16
- });
17
- (0, vitest_1.it)('should correctly throw on too long data when building', () => {
18
- const cdb = new callback_data_builder_js_1.CallbackDataBuilder('prefix', 'foo', 'bar');
19
- (0, vitest_1.expect)(() => cdb.build({
20
- foo: 'foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo',
21
- bar: 'bar',
22
- })).toThrow(core_1.MtArgumentError);
23
- });
24
- (0, vitest_1.it)('should correctly parse data', () => {
25
- const cdb = new callback_data_builder_js_1.CallbackDataBuilder('prefix', 'foo', 'bar');
26
- (0, vitest_1.expect)(cdb.parse('prefix:foo:bar')).toEqual({ foo: 'foo', bar: 'bar' });
27
- });
28
- (0, vitest_1.it)('should throw on invalid prefix when parsing', () => {
29
- const cdb = new callback_data_builder_js_1.CallbackDataBuilder('prefix', 'foo', 'bar');
30
- (0, vitest_1.expect)(() => cdb.parse('123:foo:bar')).toThrow(core_1.MtArgumentError);
31
- });
32
- (0, vitest_1.it)('should throw on invalid parts count when parsing', () => {
33
- const cdb = new callback_data_builder_js_1.CallbackDataBuilder('prefix', 'foo', 'bar');
34
- (0, vitest_1.expect)(() => cdb.parse('prefix:foo:bar:baz')).toThrow(core_1.MtArgumentError);
35
- });
36
- (0, vitest_1.describe)('filter', () => {
37
- const createCb = (data) => new core_1.CallbackQuery((0, test_1.createStub)('updateBotCallbackQuery', {
38
- data: (0, utils_js_1.utf8EncodeToBuffer)(data),
39
- }), new core_1.PeersIndex());
40
- const getFilterMatch = (filter, data) => {
41
- const cb = createCb(data);
42
- const matched = filter(cb);
43
- if (!matched)
44
- return null;
45
- // eslint-disable-next-line
46
- return cb.match;
47
- };
48
- (0, vitest_1.it)('should create a filter without params', () => {
49
- const cdb = new callback_data_builder_js_1.CallbackDataBuilder('prefix', 'foo', 'bar');
50
- (0, vitest_1.expect)(getFilterMatch(cdb.filter(), 'prefix:foo:bar')).toEqual({
51
- foo: 'foo',
52
- bar: 'bar',
53
- });
54
- (0, vitest_1.expect)(getFilterMatch(cdb.filter(), 'prefix:foo:bar:baz')).toEqual(null);
55
- });
56
- (0, vitest_1.it)('should create a filter with params', () => {
57
- const cdb = new callback_data_builder_js_1.CallbackDataBuilder('prefix', 'foo', 'bar');
58
- (0, vitest_1.expect)(getFilterMatch(cdb.filter({ foo: 'foo' }), 'prefix:foo:bar')).toEqual({
59
- foo: 'foo',
60
- bar: 'bar',
61
- });
62
- (0, vitest_1.expect)(getFilterMatch(cdb.filter({ foo: 'foo' }), 'prefix:bar:bar')).toEqual(null);
63
- });
64
- (0, vitest_1.it)('should create a filter with regex params', () => {
65
- const cdb = new callback_data_builder_js_1.CallbackDataBuilder('prefix', 'foo', 'bar');
66
- (0, vitest_1.expect)(getFilterMatch(cdb.filter({ foo: /\d+/ }), 'prefix:123:bar')).toEqual({
67
- foo: '123',
68
- bar: 'bar',
69
- });
70
- (0, vitest_1.expect)(getFilterMatch(cdb.filter({ foo: /\d+/ }), 'prefix:bar:bar')).toEqual(null);
71
- });
72
- });
73
- });
74
- //# sourceMappingURL=callback-data-builder.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"callback-data-builder.test.js","sourceRoot":"","sources":["../../src/callback-data-builder.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { CallbackQuery, MtArgumentError, PeersIndex } from '@mtcute/core'\nimport { utf8EncodeToBuffer } from '@mtcute/core/utils.js'\nimport { createStub } from '@mtcute/test'\n\nimport { CallbackDataBuilder } from './callback-data-builder.js'\nimport { UpdateFilter } from './filters/index.js'\n\ndescribe('CallbackDataBuilder', () => {\n it('should correctly build data', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(cdb.build({ foo: 'foo', bar: 'bar' })).toEqual('prefix:foo:bar')\n })\n\n it('should correctly throw on invalid data when building', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(() => cdb.build({ foo: 'foo:1', bar: 'bar' })).toThrow(MtArgumentError)\n })\n\n it('should correctly throw on too long data when building', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(() =>\n cdb.build({\n foo: 'foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo',\n bar: 'bar',\n }),\n ).toThrow(MtArgumentError)\n })\n\n it('should correctly parse data', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(cdb.parse('prefix:foo:bar')).toEqual({ foo: 'foo', bar: 'bar' })\n })\n\n it('should throw on invalid prefix when parsing', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(() => cdb.parse('123:foo:bar')).toThrow(MtArgumentError)\n })\n\n it('should throw on invalid parts count when parsing', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(() => cdb.parse('prefix:foo:bar:baz')).toThrow(MtArgumentError)\n })\n\n describe('filter', () => {\n const createCb = (data: string) =>\n new CallbackQuery(\n createStub('updateBotCallbackQuery', {\n data: utf8EncodeToBuffer(data),\n }),\n new PeersIndex(),\n )\n\n const getFilterMatch = (filter: UpdateFilter<CallbackQuery>, data: string) => {\n const cb = createCb(data)\n\n const matched = filter(cb)\n if (!matched) return null\n\n // eslint-disable-next-line\n return (cb as any).match\n }\n\n it('should create a filter without params', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(getFilterMatch(cdb.filter(), 'prefix:foo:bar')).toEqual({\n foo: 'foo',\n bar: 'bar',\n })\n expect(getFilterMatch(cdb.filter(), 'prefix:foo:bar:baz')).toEqual(null)\n })\n\n it('should create a filter with params', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(getFilterMatch(cdb.filter({ foo: 'foo' }), 'prefix:foo:bar')).toEqual({\n foo: 'foo',\n bar: 'bar',\n })\n expect(getFilterMatch(cdb.filter({ foo: 'foo' }), 'prefix:bar:bar')).toEqual(null)\n })\n\n it('should create a filter with regex params', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(getFilterMatch(cdb.filter({ foo: /\\d+/ }), 'prefix:123:bar')).toEqual({\n foo: '123',\n bar: 'bar',\n })\n expect(getFilterMatch(cdb.filter({ foo: /\\d+/ }), 'prefix:bar:bar')).toEqual(null)\n })\n })\n})\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,121 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const core_1 = require("@mtcute/core");
5
- const test_1 = require("@mtcute/test");
6
- const index_js_1 = require("../index.js");
7
- const bots_js_1 = require("./bots.js");
8
- const peers = new core_1.PeersIndex();
9
- peers.users.set(1, (0, test_1.createStub)('user', { id: 1 }));
10
- peers.chats.set(1, (0, test_1.createStub)('channel', { id: 1 }));
11
- const createMessageContext = (partial) => new index_js_1.MessageContext(test_1.StubTelegramClient.full(), // eslint-disable-line
12
- new core_1.Message((0, test_1.createStub)('message', partial), peers, false));
13
- (0, vitest_1.describe)('filters.command', () => {
14
- const getParsedCommand = (text, ...params) => {
15
- const ctx = createMessageContext({
16
- message: text,
17
- });
18
- void ctx.client.storage.self.store({
19
- isBot: true,
20
- isPremium: false,
21
- userId: 0,
22
- usernames: ['testbot'],
23
- });
24
- // eslint-disable-next-line
25
- if ((0, bots_js_1.command)(...params)(ctx))
26
- return ctx.command;
27
- return null;
28
- };
29
- (0, vitest_1.it)('should only parse given commands', () => {
30
- (0, vitest_1.expect)(getParsedCommand('/start', 'start')).toEqual(['start']);
31
- (0, vitest_1.expect)(getParsedCommand('/start', 'stop')).toEqual(null);
32
- (0, vitest_1.expect)(getParsedCommand('/start', ['start', 'stop'])).toEqual(['start']);
33
- });
34
- (0, vitest_1.it)('should only parse commands to the current bot', () => {
35
- (0, vitest_1.expect)(getParsedCommand('/start@testbot', 'start')).toEqual(['start']);
36
- (0, vitest_1.expect)(getParsedCommand('/start@otherbot', 'start')).toEqual(null);
37
- });
38
- (0, vitest_1.it)('should parse command arguments', () => {
39
- (0, vitest_1.expect)(getParsedCommand('/start foo bar baz', 'start')).toEqual(['start', 'foo', 'bar', 'baz']);
40
- (0, vitest_1.expect)(getParsedCommand('/start@testbot foo bar baz', 'start')).toEqual(['start', 'foo', 'bar', 'baz']);
41
- });
42
- (0, vitest_1.it)('should parse quoted command arguments', () => {
43
- (0, vitest_1.expect)(getParsedCommand('/start foo "bar baz"', 'start')).toEqual(['start', 'foo', 'bar baz']);
44
- (0, vitest_1.expect)(getParsedCommand('/start foo "bar \\" baz"', 'start')).toEqual(['start', 'foo', 'bar " baz']);
45
- (0, vitest_1.expect)(getParsedCommand('/start foo "bar \\\\" baz"', 'start')).toEqual(['start', 'foo', 'bar \\" baz']);
46
- });
47
- (0, vitest_1.it)('should parse custom prefixes', () => {
48
- (0, vitest_1.expect)(getParsedCommand('!start foo "bar baz"', 'start', { prefixes: '!' })).toEqual([
49
- 'start',
50
- 'foo',
51
- 'bar baz',
52
- ]);
53
- });
54
- (0, vitest_1.it)('should be case insensitive by default', () => {
55
- (0, vitest_1.expect)(getParsedCommand('/START foo', 'start')).toEqual(['start', 'foo']);
56
- (0, vitest_1.expect)(getParsedCommand('/START foo BAR', 'start')).toEqual(['start', 'foo', 'BAR']);
57
- });
58
- (0, vitest_1.it)('should be case sensitive if asked', () => {
59
- (0, vitest_1.expect)(getParsedCommand('/START foo', 'start', { caseSensitive: true })).toEqual(null);
60
- (0, vitest_1.expect)(getParsedCommand('/START foo', 'START', { caseSensitive: true })).toEqual(['START', 'foo']);
61
- });
62
- (0, vitest_1.it)('should accept multiple commands to match', () => {
63
- (0, vitest_1.expect)(getParsedCommand('/foo', ['foo', 'bar'])).toEqual(['foo']);
64
- (0, vitest_1.expect)(getParsedCommand('/bar', ['foo', 'bar'])).toEqual(['bar']);
65
- (0, vitest_1.expect)(getParsedCommand('/baz', ['foo', 'bar'])).toEqual(null);
66
- });
67
- });
68
- (0, vitest_1.describe)('filters.deeplink', () => {
69
- (0, vitest_1.it)('should only match given param', () => {
70
- const ctx = createMessageContext({
71
- message: '/start foo',
72
- peerId: { _: 'peerUser', userId: 1 },
73
- });
74
- (0, vitest_1.expect)((0, bots_js_1.deeplink)('bar')(ctx)).toEqual(false);
75
- (0, vitest_1.expect)((0, bots_js_1.deeplink)('foo')(ctx)).toEqual(true);
76
- // eslint-disable-next-line
77
- (0, vitest_1.expect)(ctx.command).toEqual(['start', 'foo']);
78
- });
79
- (0, vitest_1.it)('should add regex matches', () => {
80
- const ctx = createMessageContext({
81
- message: '/start foo_123',
82
- peerId: { _: 'peerUser', userId: 1 },
83
- });
84
- (0, vitest_1.expect)((0, bots_js_1.deeplink)(/^foo_(\d+)$/)(ctx)).toEqual(true);
85
- // eslint-disable-next-line
86
- (0, vitest_1.expect)(ctx.command).toEqual(['start', 'foo_123', '123']);
87
- });
88
- (0, vitest_1.it)('should accept multiple params', () => {
89
- const ctx = createMessageContext({
90
- message: '/start foo',
91
- peerId: { _: 'peerUser', userId: 1 },
92
- });
93
- (0, vitest_1.expect)((0, bots_js_1.deeplink)(['foo', 'bar'])(ctx)).toEqual(true);
94
- // eslint-disable-next-line
95
- (0, vitest_1.expect)(ctx.command).toEqual(['start', 'foo']);
96
- });
97
- (0, vitest_1.it)('should accept multiple regex params', () => {
98
- const ctx = createMessageContext({
99
- message: '/start foo',
100
- peerId: { _: 'peerUser', userId: 1 },
101
- });
102
- (0, vitest_1.expect)((0, bots_js_1.deeplink)([/foo/, /bar/])(ctx)).toEqual(true);
103
- // eslint-disable-next-line
104
- (0, vitest_1.expect)(ctx.command).toEqual(['start', 'foo']);
105
- });
106
- (0, vitest_1.it)('should fail for >1 arguments', () => {
107
- const ctx = createMessageContext({
108
- message: '/start foo bar',
109
- peerId: { _: 'peerUser', userId: 1 },
110
- });
111
- (0, vitest_1.expect)((0, bots_js_1.deeplink)('foo')(ctx)).toEqual(false);
112
- });
113
- (0, vitest_1.it)('should fail for non-pm messages', () => {
114
- const ctx = createMessageContext({
115
- message: '/start foo',
116
- peerId: { _: 'peerChannel', channelId: 1 },
117
- });
118
- (0, vitest_1.expect)((0, bots_js_1.deeplink)('foo')(ctx)).toEqual(false);
119
- });
120
- });
121
- //# sourceMappingURL=bots.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bots.test.js","sourceRoot":"","sources":["../../../src/filters/bots.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { Message, PeersIndex, tl } from '@mtcute/core'\nimport { createStub, StubTelegramClient } from '@mtcute/test'\n\nimport { MessageContext } from '../index.js'\nimport { command, deeplink } from './bots.js'\n\nconst peers = new PeersIndex()\npeers.users.set(1, createStub('user', { id: 1 }))\npeers.chats.set(1, createStub('channel', { id: 1 }))\nconst createMessageContext = (partial: Partial<tl.RawMessage>) =>\n new MessageContext(\n StubTelegramClient.full(), // eslint-disable-line\n new Message(createStub('message', partial), peers, false),\n )\n\ndescribe('filters.command', () => {\n const getParsedCommand = (text: string, ...params: Parameters<typeof command>) => {\n const ctx = createMessageContext({\n message: text,\n })\n void ctx.client.storage.self.store({\n isBot: true,\n isPremium: false,\n userId: 0,\n usernames: ['testbot'],\n })\n\n // eslint-disable-next-line\n if (command(...params)(ctx)) return (ctx as any).command\n\n return null\n }\n\n it('should only parse given commands', () => {\n expect(getParsedCommand('/start', 'start')).toEqual(['start'])\n expect(getParsedCommand('/start', 'stop')).toEqual(null)\n expect(getParsedCommand('/start', ['start', 'stop'])).toEqual(['start'])\n })\n\n it('should only parse commands to the current bot', () => {\n expect(getParsedCommand('/start@testbot', 'start')).toEqual(['start'])\n expect(getParsedCommand('/start@otherbot', 'start')).toEqual(null)\n })\n\n it('should parse command arguments', () => {\n expect(getParsedCommand('/start foo bar baz', 'start')).toEqual(['start', 'foo', 'bar', 'baz'])\n expect(getParsedCommand('/start@testbot foo bar baz', 'start')).toEqual(['start', 'foo', 'bar', 'baz'])\n })\n\n it('should parse quoted command arguments', () => {\n expect(getParsedCommand('/start foo \"bar baz\"', 'start')).toEqual(['start', 'foo', 'bar baz'])\n expect(getParsedCommand('/start foo \"bar \\\\\" baz\"', 'start')).toEqual(['start', 'foo', 'bar \" baz'])\n expect(getParsedCommand('/start foo \"bar \\\\\\\\\" baz\"', 'start')).toEqual(['start', 'foo', 'bar \\\\\" baz'])\n })\n\n it('should parse custom prefixes', () => {\n expect(getParsedCommand('!start foo \"bar baz\"', 'start', { prefixes: '!' })).toEqual([\n 'start',\n 'foo',\n 'bar baz',\n ])\n })\n\n it('should be case insensitive by default', () => {\n expect(getParsedCommand('/START foo', 'start')).toEqual(['start', 'foo'])\n expect(getParsedCommand('/START foo BAR', 'start')).toEqual(['start', 'foo', 'BAR'])\n })\n\n it('should be case sensitive if asked', () => {\n expect(getParsedCommand('/START foo', 'start', { caseSensitive: true })).toEqual(null)\n expect(getParsedCommand('/START foo', 'START', { caseSensitive: true })).toEqual(['START', 'foo'])\n })\n\n it('should accept multiple commands to match', () => {\n expect(getParsedCommand('/foo', ['foo', 'bar'])).toEqual(['foo'])\n expect(getParsedCommand('/bar', ['foo', 'bar'])).toEqual(['bar'])\n expect(getParsedCommand('/baz', ['foo', 'bar'])).toEqual(null)\n })\n})\n\ndescribe('filters.deeplink', () => {\n it('should only match given param', () => {\n const ctx = createMessageContext({\n message: '/start foo',\n peerId: { _: 'peerUser', userId: 1 },\n })\n\n expect(deeplink('bar')(ctx)).toEqual(false)\n expect(deeplink('foo')(ctx)).toEqual(true)\n // eslint-disable-next-line\n expect((ctx as any).command).toEqual(['start', 'foo'])\n })\n\n it('should add regex matches', () => {\n const ctx = createMessageContext({\n message: '/start foo_123',\n peerId: { _: 'peerUser', userId: 1 },\n })\n\n expect(deeplink(/^foo_(\\d+)$/)(ctx)).toEqual(true)\n // eslint-disable-next-line\n expect((ctx as any).command).toEqual(['start', 'foo_123', '123'])\n })\n\n it('should accept multiple params', () => {\n const ctx = createMessageContext({\n message: '/start foo',\n peerId: { _: 'peerUser', userId: 1 },\n })\n\n expect(deeplink(['foo', 'bar'])(ctx)).toEqual(true)\n // eslint-disable-next-line\n expect((ctx as any).command).toEqual(['start', 'foo'])\n })\n\n it('should accept multiple regex params', () => {\n const ctx = createMessageContext({\n message: '/start foo',\n peerId: { _: 'peerUser', userId: 1 },\n })\n\n expect(deeplink([/foo/, /bar/])(ctx)).toEqual(true)\n // eslint-disable-next-line\n expect((ctx as any).command).toEqual(['start', 'foo'])\n })\n\n it('should fail for >1 arguments', () => {\n const ctx = createMessageContext({\n message: '/start foo bar',\n peerId: { _: 'peerUser', userId: 1 },\n })\n\n expect(deeplink('foo')(ctx)).toEqual(false)\n })\n\n it('should fail for non-pm messages', () => {\n const ctx = createMessageContext({\n message: '/start foo',\n peerId: { _: 'peerChannel', channelId: 1 },\n })\n\n expect(deeplink('foo')(ctx)).toEqual(false)\n })\n})\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,169 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const logic_js_1 = require("./logic.js");
5
- (0, vitest_1.describe)('filters.not', () => {
6
- (0, vitest_1.it)('should negate a given sync filter', () => {
7
- const filter = vitest_1.vi.fn().mockReturnValue(true);
8
- const negated = (0, logic_js_1.not)(filter);
9
- (0, vitest_1.expect)(negated(1)).toBe(false);
10
- (0, vitest_1.expect)(filter).toHaveBeenCalledTimes(1);
11
- (0, vitest_1.expect)(filter).toHaveBeenCalledWith(1, undefined);
12
- });
13
- (0, vitest_1.it)('should negate a given async filter', async () => {
14
- const filter = vitest_1.vi.fn().mockResolvedValue(true);
15
- const negated = (0, logic_js_1.not)(filter);
16
- await (0, vitest_1.expect)(negated(1)).resolves.toBe(false);
17
- (0, vitest_1.expect)(filter).toHaveBeenCalledTimes(1);
18
- (0, vitest_1.expect)(filter).toHaveBeenCalledWith(1, undefined);
19
- });
20
- });
21
- (0, vitest_1.describe)('filters.and', () => {
22
- vitest_1.it.each([
23
- ['sync', 'sync'],
24
- ['sync', 'async'],
25
- ['async', 'sync'],
26
- ['async', 'async'],
27
- ])('should combine %s and %s filters', async (aType, bType) => {
28
- const a = vitest_1.vi.fn().mockReturnValue(aType === 'sync' ? true : Promise.resolve(true));
29
- const b = vitest_1.vi.fn().mockReturnValue(bType === 'sync' ? true : Promise.resolve(true));
30
- const combined = (0, logic_js_1.and)(a, b);
31
- (0, vitest_1.expect)(await combined(1)).toBe(true);
32
- (0, vitest_1.expect)(a).toHaveBeenCalledTimes(1);
33
- (0, vitest_1.expect)(a).toHaveBeenCalledWith(1, undefined);
34
- (0, vitest_1.expect)(b).toHaveBeenCalledTimes(1);
35
- (0, vitest_1.expect)(b).toHaveBeenCalledWith(1, undefined);
36
- });
37
- vitest_1.it.each([
38
- ['sync', 'sync'],
39
- ['sync', 'async'],
40
- ['async', 'sync'],
41
- ['async', 'async'],
42
- ])('should not continue execution after false (%s and %s filters)', async (aType, bType) => {
43
- const a = vitest_1.vi.fn().mockReturnValue(aType === 'sync' ? false : Promise.resolve(false));
44
- const b = vitest_1.vi.fn().mockReturnValue(bType === 'sync' ? true : Promise.resolve(true));
45
- const combined = (0, logic_js_1.and)(a, b);
46
- (0, vitest_1.expect)(await combined(1)).toBe(false);
47
- (0, vitest_1.expect)(a).toHaveBeenCalledTimes(1);
48
- (0, vitest_1.expect)(a).toHaveBeenCalledWith(1, undefined);
49
- (0, vitest_1.expect)(b).not.toHaveBeenCalled();
50
- });
51
- vitest_1.it.each([
52
- ['sync', 'sync', 'sync'],
53
- ['sync', 'sync', 'async'],
54
- ['sync', 'async', 'sync'],
55
- ['sync', 'async', 'async'],
56
- ['async', 'sync', 'sync'],
57
- ['async', 'sync', 'async'],
58
- ['async', 'async', 'sync'],
59
- ['async', 'async', 'async'],
60
- ])('should combine %s, %s and %s filters', async (aType, bType) => {
61
- const a = vitest_1.vi.fn().mockReturnValue(aType === 'sync' ? true : Promise.resolve(true));
62
- const b = vitest_1.vi.fn().mockReturnValue(bType === 'sync' ? true : Promise.resolve(true));
63
- const c = vitest_1.vi.fn().mockReturnValue(bType === 'sync' ? true : Promise.resolve(true));
64
- const combined = (0, logic_js_1.and)(a, b, c);
65
- (0, vitest_1.expect)(await combined(1)).toBe(true);
66
- (0, vitest_1.expect)(a).toHaveBeenCalledTimes(1);
67
- (0, vitest_1.expect)(a).toHaveBeenCalledWith(1, undefined);
68
- (0, vitest_1.expect)(b).toHaveBeenCalledTimes(1);
69
- (0, vitest_1.expect)(b).toHaveBeenCalledWith(1, undefined);
70
- (0, vitest_1.expect)(c).toHaveBeenCalledTimes(1);
71
- (0, vitest_1.expect)(c).toHaveBeenCalledWith(1, undefined);
72
- });
73
- vitest_1.it.each([
74
- ['sync', 'sync', 'sync'],
75
- ['sync', 'sync', 'async'],
76
- ['sync', 'async', 'sync'],
77
- ['sync', 'async', 'async'],
78
- ['async', 'sync', 'sync'],
79
- ['async', 'sync', 'async'],
80
- ['async', 'async', 'sync'],
81
- ['async', 'async', 'async'],
82
- ])('should not continue execution after false (%s, %s and %s filters)', async (aType, bType) => {
83
- const a = vitest_1.vi.fn().mockReturnValue(aType === 'sync' ? true : Promise.resolve(true));
84
- const b = vitest_1.vi.fn().mockReturnValue(bType === 'sync' ? false : Promise.resolve(false));
85
- const c = vitest_1.vi.fn().mockReturnValue(bType === 'sync' ? true : Promise.resolve(true));
86
- const combined = (0, logic_js_1.and)(a, b, c);
87
- (0, vitest_1.expect)(await combined(1)).toBe(false);
88
- (0, vitest_1.expect)(a).toHaveBeenCalledTimes(1);
89
- (0, vitest_1.expect)(a).toHaveBeenCalledWith(1, undefined);
90
- (0, vitest_1.expect)(b).toHaveBeenCalledTimes(1);
91
- (0, vitest_1.expect)(b).toHaveBeenCalledWith(1, undefined);
92
- (0, vitest_1.expect)(c).not.toHaveBeenCalled();
93
- });
94
- });
95
- (0, vitest_1.describe)('filters.or', () => {
96
- vitest_1.it.each([
97
- ['sync', 'sync'],
98
- ['sync', 'async'],
99
- ['async', 'sync'],
100
- ['async', 'async'],
101
- ])('should combine %s and %s filters', async (aType, bType) => {
102
- const a = vitest_1.vi.fn().mockReturnValue(aType === 'sync' ? false : Promise.resolve(false));
103
- const b = vitest_1.vi.fn().mockReturnValue(bType === 'sync' ? false : Promise.resolve(false));
104
- const combined = (0, logic_js_1.or)(a, b);
105
- (0, vitest_1.expect)(await combined(1)).toBe(false);
106
- (0, vitest_1.expect)(a).toHaveBeenCalledTimes(1);
107
- (0, vitest_1.expect)(a).toHaveBeenCalledWith(1, undefined);
108
- (0, vitest_1.expect)(b).toHaveBeenCalledTimes(1);
109
- (0, vitest_1.expect)(b).toHaveBeenCalledWith(1, undefined);
110
- });
111
- vitest_1.it.each([
112
- ['sync', 'sync'],
113
- ['sync', 'async'],
114
- ['async', 'sync'],
115
- ['async', 'async'],
116
- ])('should not continue execution after true (%s and %s filters)', async (aType, bType) => {
117
- const a = vitest_1.vi.fn().mockReturnValue(bType === 'sync' ? true : Promise.resolve(true));
118
- const b = vitest_1.vi.fn().mockReturnValue(aType === 'sync' ? false : Promise.resolve(false));
119
- const combined = (0, logic_js_1.or)(a, b);
120
- (0, vitest_1.expect)(await combined(1)).toBe(true);
121
- (0, vitest_1.expect)(a).toHaveBeenCalledTimes(1);
122
- (0, vitest_1.expect)(a).toHaveBeenCalledWith(1, undefined);
123
- (0, vitest_1.expect)(b).not.toHaveBeenCalled();
124
- });
125
- vitest_1.it.each([
126
- ['sync', 'sync', 'sync'],
127
- ['sync', 'sync', 'async'],
128
- ['sync', 'async', 'sync'],
129
- ['sync', 'async', 'async'],
130
- ['async', 'sync', 'sync'],
131
- ['async', 'sync', 'async'],
132
- ['async', 'async', 'sync'],
133
- ['async', 'async', 'async'],
134
- ])('should combine %s, %s and %s filters', async (aType, bType) => {
135
- const a = vitest_1.vi.fn().mockReturnValue(aType === 'sync' ? false : Promise.resolve(false));
136
- const b = vitest_1.vi.fn().mockReturnValue(bType === 'sync' ? false : Promise.resolve(false));
137
- const c = vitest_1.vi.fn().mockReturnValue(bType === 'sync' ? false : Promise.resolve(false));
138
- const combined = (0, logic_js_1.or)(a, b, c);
139
- (0, vitest_1.expect)(await combined(1)).toBe(false);
140
- (0, vitest_1.expect)(a).toHaveBeenCalledTimes(1);
141
- (0, vitest_1.expect)(a).toHaveBeenCalledWith(1, undefined);
142
- (0, vitest_1.expect)(b).toHaveBeenCalledTimes(1);
143
- (0, vitest_1.expect)(b).toHaveBeenCalledWith(1, undefined);
144
- (0, vitest_1.expect)(c).toHaveBeenCalledTimes(1);
145
- (0, vitest_1.expect)(c).toHaveBeenCalledWith(1, undefined);
146
- });
147
- vitest_1.it.each([
148
- ['sync', 'sync', 'sync'],
149
- ['sync', 'sync', 'async'],
150
- ['sync', 'async', 'sync'],
151
- ['sync', 'async', 'async'],
152
- ['async', 'sync', 'sync'],
153
- ['async', 'sync', 'async'],
154
- ['async', 'async', 'sync'],
155
- ['async', 'async', 'async'],
156
- ])('should not continue execution after true (%s, %s and %s filters)', async (aType, bType) => {
157
- const a = vitest_1.vi.fn().mockReturnValue(aType === 'sync' ? false : Promise.resolve(false));
158
- const b = vitest_1.vi.fn().mockReturnValue(bType === 'sync' ? true : Promise.resolve(true));
159
- const c = vitest_1.vi.fn().mockReturnValue(bType === 'sync' ? false : Promise.resolve(false));
160
- const combined = (0, logic_js_1.or)(a, b, c);
161
- (0, vitest_1.expect)(await combined(1)).toBe(true);
162
- (0, vitest_1.expect)(a).toHaveBeenCalledTimes(1);
163
- (0, vitest_1.expect)(a).toHaveBeenCalledWith(1, undefined);
164
- (0, vitest_1.expect)(b).toHaveBeenCalledTimes(1);
165
- (0, vitest_1.expect)(b).toHaveBeenCalledWith(1, undefined);
166
- (0, vitest_1.expect)(c).not.toHaveBeenCalled();
167
- });
168
- });
169
- //# sourceMappingURL=logic.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logic.test.js","sourceRoot":"","sources":["../../../src/filters/logic.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it, vi } from 'vitest'\n\nimport { and, not, or } from './logic.js'\n\ndescribe('filters.not', () => {\n it('should negate a given sync filter', () => {\n const filter = vi.fn().mockReturnValue(true)\n const negated = not(filter)\n\n expect(negated(1)).toBe(false)\n expect(filter).toHaveBeenCalledTimes(1)\n expect(filter).toHaveBeenCalledWith(1, undefined)\n })\n\n it('should negate a given async filter', async () => {\n const filter = vi.fn().mockResolvedValue(true)\n const negated = not(filter)\n\n await expect(negated(1)).resolves.toBe(false)\n expect(filter).toHaveBeenCalledTimes(1)\n expect(filter).toHaveBeenCalledWith(1, undefined)\n })\n})\n\ndescribe('filters.and', () => {\n it.each([\n ['sync', 'sync'],\n ['sync', 'async'],\n ['async', 'sync'],\n ['async', 'async'],\n ])('should combine %s and %s filters', async (aType, bType) => {\n const a = vi.fn().mockReturnValue(aType === 'sync' ? true : Promise.resolve(true))\n const b = vi.fn().mockReturnValue(bType === 'sync' ? true : Promise.resolve(true))\n\n const combined = and(a, b)\n\n expect(await combined(1)).toBe(true)\n expect(a).toHaveBeenCalledTimes(1)\n expect(a).toHaveBeenCalledWith(1, undefined)\n expect(b).toHaveBeenCalledTimes(1)\n expect(b).toHaveBeenCalledWith(1, undefined)\n })\n\n it.each([\n ['sync', 'sync'],\n ['sync', 'async'],\n ['async', 'sync'],\n ['async', 'async'],\n ])('should not continue execution after false (%s and %s filters)', async (aType, bType) => {\n const a = vi.fn().mockReturnValue(aType === 'sync' ? false : Promise.resolve(false))\n const b = vi.fn().mockReturnValue(bType === 'sync' ? true : Promise.resolve(true))\n\n const combined = and(a, b)\n\n expect(await combined(1)).toBe(false)\n expect(a).toHaveBeenCalledTimes(1)\n expect(a).toHaveBeenCalledWith(1, undefined)\n expect(b).not.toHaveBeenCalled()\n })\n\n it.each([\n ['sync', 'sync', 'sync'],\n ['sync', 'sync', 'async'],\n ['sync', 'async', 'sync'],\n ['sync', 'async', 'async'],\n ['async', 'sync', 'sync'],\n ['async', 'sync', 'async'],\n ['async', 'async', 'sync'],\n ['async', 'async', 'async'],\n ])('should combine %s, %s and %s filters', async (aType, bType) => {\n const a = vi.fn().mockReturnValue(aType === 'sync' ? true : Promise.resolve(true))\n const b = vi.fn().mockReturnValue(bType === 'sync' ? true : Promise.resolve(true))\n const c = vi.fn().mockReturnValue(bType === 'sync' ? true : Promise.resolve(true))\n\n const combined = and(a, b, c)\n\n expect(await combined(1)).toBe(true)\n expect(a).toHaveBeenCalledTimes(1)\n expect(a).toHaveBeenCalledWith(1, undefined)\n expect(b).toHaveBeenCalledTimes(1)\n expect(b).toHaveBeenCalledWith(1, undefined)\n expect(c).toHaveBeenCalledTimes(1)\n expect(c).toHaveBeenCalledWith(1, undefined)\n })\n\n it.each([\n ['sync', 'sync', 'sync'],\n ['sync', 'sync', 'async'],\n ['sync', 'async', 'sync'],\n ['sync', 'async', 'async'],\n ['async', 'sync', 'sync'],\n ['async', 'sync', 'async'],\n ['async', 'async', 'sync'],\n ['async', 'async', 'async'],\n ])('should not continue execution after false (%s, %s and %s filters)', async (aType, bType) => {\n const a = vi.fn().mockReturnValue(aType === 'sync' ? true : Promise.resolve(true))\n const b = vi.fn().mockReturnValue(bType === 'sync' ? false : Promise.resolve(false))\n const c = vi.fn().mockReturnValue(bType === 'sync' ? true : Promise.resolve(true))\n\n const combined = and(a, b, c)\n\n expect(await combined(1)).toBe(false)\n expect(a).toHaveBeenCalledTimes(1)\n expect(a).toHaveBeenCalledWith(1, undefined)\n expect(b).toHaveBeenCalledTimes(1)\n expect(b).toHaveBeenCalledWith(1, undefined)\n expect(c).not.toHaveBeenCalled()\n })\n})\n\ndescribe('filters.or', () => {\n it.each([\n ['sync', 'sync'],\n ['sync', 'async'],\n ['async', 'sync'],\n ['async', 'async'],\n ])('should combine %s and %s filters', async (aType, bType) => {\n const a = vi.fn().mockReturnValue(aType === 'sync' ? false : Promise.resolve(false))\n const b = vi.fn().mockReturnValue(bType === 'sync' ? false : Promise.resolve(false))\n\n const combined = or(a, b)\n\n expect(await combined(1)).toBe(false)\n expect(a).toHaveBeenCalledTimes(1)\n expect(a).toHaveBeenCalledWith(1, undefined)\n expect(b).toHaveBeenCalledTimes(1)\n expect(b).toHaveBeenCalledWith(1, undefined)\n })\n\n it.each([\n ['sync', 'sync'],\n ['sync', 'async'],\n ['async', 'sync'],\n ['async', 'async'],\n ])('should not continue execution after true (%s and %s filters)', async (aType, bType) => {\n const a = vi.fn().mockReturnValue(bType === 'sync' ? true : Promise.resolve(true))\n const b = vi.fn().mockReturnValue(aType === 'sync' ? false : Promise.resolve(false))\n\n const combined = or(a, b)\n\n expect(await combined(1)).toBe(true)\n expect(a).toHaveBeenCalledTimes(1)\n expect(a).toHaveBeenCalledWith(1, undefined)\n expect(b).not.toHaveBeenCalled()\n })\n\n it.each([\n ['sync', 'sync', 'sync'],\n ['sync', 'sync', 'async'],\n ['sync', 'async', 'sync'],\n ['sync', 'async', 'async'],\n ['async', 'sync', 'sync'],\n ['async', 'sync', 'async'],\n ['async', 'async', 'sync'],\n ['async', 'async', 'async'],\n ])('should combine %s, %s and %s filters', async (aType, bType) => {\n const a = vi.fn().mockReturnValue(aType === 'sync' ? false : Promise.resolve(false))\n const b = vi.fn().mockReturnValue(bType === 'sync' ? false : Promise.resolve(false))\n const c = vi.fn().mockReturnValue(bType === 'sync' ? false : Promise.resolve(false))\n\n const combined = or(a, b, c)\n\n expect(await combined(1)).toBe(false)\n expect(a).toHaveBeenCalledTimes(1)\n expect(a).toHaveBeenCalledWith(1, undefined)\n expect(b).toHaveBeenCalledTimes(1)\n expect(b).toHaveBeenCalledWith(1, undefined)\n expect(c).toHaveBeenCalledTimes(1)\n expect(c).toHaveBeenCalledWith(1, undefined)\n })\n\n it.each([\n ['sync', 'sync', 'sync'],\n ['sync', 'sync', 'async'],\n ['sync', 'async', 'sync'],\n ['sync', 'async', 'async'],\n ['async', 'sync', 'sync'],\n ['async', 'sync', 'async'],\n ['async', 'async', 'sync'],\n ['async', 'async', 'async'],\n ])('should not continue execution after true (%s, %s and %s filters)', async (aType, bType) => {\n const a = vi.fn().mockReturnValue(aType === 'sync' ? false : Promise.resolve(false))\n const b = vi.fn().mockReturnValue(bType === 'sync' ? true : Promise.resolve(true))\n const c = vi.fn().mockReturnValue(bType === 'sync' ? false : Promise.resolve(false))\n\n const combined = or(a, b, c)\n\n expect(await combined(1)).toBe(true)\n expect(a).toHaveBeenCalledTimes(1)\n expect(a).toHaveBeenCalledWith(1, undefined)\n expect(b).toHaveBeenCalledTimes(1)\n expect(b).toHaveBeenCalledWith(1, undefined)\n expect(c).not.toHaveBeenCalled()\n })\n})\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,72 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { CallbackQuery, MtArgumentError, PeersIndex } from '@mtcute/core';
3
- import { utf8EncodeToBuffer } from '@mtcute/core/utils.js';
4
- import { createStub } from '@mtcute/test';
5
- import { CallbackDataBuilder } from './callback-data-builder.js';
6
- describe('CallbackDataBuilder', () => {
7
- it('should correctly build data', () => {
8
- const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar');
9
- expect(cdb.build({ foo: 'foo', bar: 'bar' })).toEqual('prefix:foo:bar');
10
- });
11
- it('should correctly throw on invalid data when building', () => {
12
- const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar');
13
- expect(() => cdb.build({ foo: 'foo:1', bar: 'bar' })).toThrow(MtArgumentError);
14
- });
15
- it('should correctly throw on too long data when building', () => {
16
- const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar');
17
- expect(() => cdb.build({
18
- foo: 'foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo',
19
- bar: 'bar',
20
- })).toThrow(MtArgumentError);
21
- });
22
- it('should correctly parse data', () => {
23
- const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar');
24
- expect(cdb.parse('prefix:foo:bar')).toEqual({ foo: 'foo', bar: 'bar' });
25
- });
26
- it('should throw on invalid prefix when parsing', () => {
27
- const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar');
28
- expect(() => cdb.parse('123:foo:bar')).toThrow(MtArgumentError);
29
- });
30
- it('should throw on invalid parts count when parsing', () => {
31
- const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar');
32
- expect(() => cdb.parse('prefix:foo:bar:baz')).toThrow(MtArgumentError);
33
- });
34
- describe('filter', () => {
35
- const createCb = (data) => new CallbackQuery(createStub('updateBotCallbackQuery', {
36
- data: utf8EncodeToBuffer(data),
37
- }), new PeersIndex());
38
- const getFilterMatch = (filter, data) => {
39
- const cb = createCb(data);
40
- const matched = filter(cb);
41
- if (!matched)
42
- return null;
43
- // eslint-disable-next-line
44
- return cb.match;
45
- };
46
- it('should create a filter without params', () => {
47
- const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar');
48
- expect(getFilterMatch(cdb.filter(), 'prefix:foo:bar')).toEqual({
49
- foo: 'foo',
50
- bar: 'bar',
51
- });
52
- expect(getFilterMatch(cdb.filter(), 'prefix:foo:bar:baz')).toEqual(null);
53
- });
54
- it('should create a filter with params', () => {
55
- const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar');
56
- expect(getFilterMatch(cdb.filter({ foo: 'foo' }), 'prefix:foo:bar')).toEqual({
57
- foo: 'foo',
58
- bar: 'bar',
59
- });
60
- expect(getFilterMatch(cdb.filter({ foo: 'foo' }), 'prefix:bar:bar')).toEqual(null);
61
- });
62
- it('should create a filter with regex params', () => {
63
- const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar');
64
- expect(getFilterMatch(cdb.filter({ foo: /\d+/ }), 'prefix:123:bar')).toEqual({
65
- foo: '123',
66
- bar: 'bar',
67
- });
68
- expect(getFilterMatch(cdb.filter({ foo: /\d+/ }), 'prefix:bar:bar')).toEqual(null);
69
- });
70
- });
71
- });
72
- //# sourceMappingURL=callback-data-builder.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"callback-data-builder.test.js","sourceRoot":"","sources":["../../src/callback-data-builder.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { CallbackQuery, MtArgumentError, PeersIndex } from '@mtcute/core'\nimport { utf8EncodeToBuffer } from '@mtcute/core/utils.js'\nimport { createStub } from '@mtcute/test'\n\nimport { CallbackDataBuilder } from './callback-data-builder.js'\nimport { UpdateFilter } from './filters/index.js'\n\ndescribe('CallbackDataBuilder', () => {\n it('should correctly build data', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(cdb.build({ foo: 'foo', bar: 'bar' })).toEqual('prefix:foo:bar')\n })\n\n it('should correctly throw on invalid data when building', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(() => cdb.build({ foo: 'foo:1', bar: 'bar' })).toThrow(MtArgumentError)\n })\n\n it('should correctly throw on too long data when building', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(() =>\n cdb.build({\n foo: 'foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo',\n bar: 'bar',\n }),\n ).toThrow(MtArgumentError)\n })\n\n it('should correctly parse data', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(cdb.parse('prefix:foo:bar')).toEqual({ foo: 'foo', bar: 'bar' })\n })\n\n it('should throw on invalid prefix when parsing', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(() => cdb.parse('123:foo:bar')).toThrow(MtArgumentError)\n })\n\n it('should throw on invalid parts count when parsing', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(() => cdb.parse('prefix:foo:bar:baz')).toThrow(MtArgumentError)\n })\n\n describe('filter', () => {\n const createCb = (data: string) =>\n new CallbackQuery(\n createStub('updateBotCallbackQuery', {\n data: utf8EncodeToBuffer(data),\n }),\n new PeersIndex(),\n )\n\n const getFilterMatch = (filter: UpdateFilter<CallbackQuery>, data: string) => {\n const cb = createCb(data)\n\n const matched = filter(cb)\n if (!matched) return null\n\n // eslint-disable-next-line\n return (cb as any).match\n }\n\n it('should create a filter without params', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(getFilterMatch(cdb.filter(), 'prefix:foo:bar')).toEqual({\n foo: 'foo',\n bar: 'bar',\n })\n expect(getFilterMatch(cdb.filter(), 'prefix:foo:bar:baz')).toEqual(null)\n })\n\n it('should create a filter with params', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(getFilterMatch(cdb.filter({ foo: 'foo' }), 'prefix:foo:bar')).toEqual({\n foo: 'foo',\n bar: 'bar',\n })\n expect(getFilterMatch(cdb.filter({ foo: 'foo' }), 'prefix:bar:bar')).toEqual(null)\n })\n\n it('should create a filter with regex params', () => {\n const cdb = new CallbackDataBuilder('prefix', 'foo', 'bar')\n\n expect(getFilterMatch(cdb.filter({ foo: /\\d+/ }), 'prefix:123:bar')).toEqual({\n foo: '123',\n bar: 'bar',\n })\n expect(getFilterMatch(cdb.filter({ foo: /\\d+/ }), 'prefix:bar:bar')).toEqual(null)\n })\n })\n})\n"]}
@@ -1 +0,0 @@
1
- export {};