@effect-ak/tg-bot-client 0.1.0 → 0.2.1

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 (86) hide show
  1. package/dist/cjs/bot/factory/_service.js +59 -0
  2. package/dist/cjs/bot/factory/client-config.js +68 -0
  3. package/dist/cjs/bot/factory/make-bot.js +59 -0
  4. package/dist/cjs/bot/message-handler/_service.js +51 -0
  5. package/dist/cjs/bot/message-handler/types.js +5 -0
  6. package/dist/cjs/bot/message-handler/utils.js +19 -0
  7. package/dist/cjs/bot/run.js +10 -0
  8. package/dist/cjs/bot/update-poller/_service.js +78 -0
  9. package/dist/cjs/bot/update-poller/errors.js +5 -0
  10. package/dist/cjs/bot/update-poller/fetch-updates.js +109 -0
  11. package/dist/cjs/bot/update-poller/poll-and-handle.js +89 -0
  12. package/dist/cjs/bot/update-poller/settings.js +23 -0
  13. package/dist/cjs/client/_client.js +56 -14
  14. package/dist/cjs/client/config.js +56 -0
  15. package/dist/cjs/client/errors.js +47 -9
  16. package/dist/cjs/client/execute-request/_service.js +59 -0
  17. package/dist/cjs/client/execute-request/execute.js +98 -0
  18. package/dist/cjs/client/{request.js → execute-request/payload.js} +2 -2
  19. package/dist/cjs/client/file/_service.js +61 -0
  20. package/dist/cjs/client/file/get-file.js +77 -0
  21. package/dist/cjs/client/guards.js +12 -0
  22. package/dist/cjs/const.js +20 -0
  23. package/dist/cjs/index.js +24 -22
  24. package/dist/dts/bot/factory/_service.d.ts +37 -0
  25. package/dist/dts/bot/factory/client-config.d.ts +3 -0
  26. package/dist/dts/bot/factory/make-bot.d.ts +7 -0
  27. package/dist/dts/bot/message-handler/_service.d.ts +6 -0
  28. package/dist/dts/bot/message-handler/types.d.ts +16 -0
  29. package/dist/dts/bot/message-handler/utils.d.ts +6 -0
  30. package/dist/dts/bot/run.d.ts +7 -0
  31. package/dist/dts/bot/update-poller/_service.d.ts +21 -0
  32. package/dist/dts/bot/update-poller/errors.d.ts +1 -0
  33. package/dist/dts/bot/update-poller/fetch-updates.d.ts +17 -0
  34. package/dist/dts/bot/update-poller/poll-and-handle.d.ts +16 -0
  35. package/dist/dts/bot/update-poller/settings.d.ts +6 -0
  36. package/dist/dts/client/_client.d.ts +6 -17
  37. package/dist/dts/client/config.d.ts +8 -0
  38. package/dist/dts/client/errors.d.ts +6 -4
  39. package/dist/dts/client/execute-request/_service.d.ts +15 -0
  40. package/dist/dts/client/execute-request/execute.d.ts +5 -0
  41. package/dist/dts/client/file/_service.d.ts +16 -0
  42. package/dist/dts/client/file/get-file.d.ts +5 -0
  43. package/dist/dts/client/guards.d.ts +17 -0
  44. package/dist/dts/index.d.ts +4 -1
  45. package/dist/dts/specification/api.d.ts +14 -14
  46. package/dist/dts/specification/types.d.ts +77 -77
  47. package/dist/esm/bot/factory/_service.js +49 -0
  48. package/dist/esm/bot/factory/client-config.js +57 -0
  49. package/dist/esm/bot/factory/make-bot.js +46 -0
  50. package/dist/esm/bot/message-handler/_service.js +41 -0
  51. package/dist/esm/bot/message-handler/types.js +2 -0
  52. package/dist/esm/bot/message-handler/utils.js +16 -0
  53. package/dist/esm/bot/run.js +10 -0
  54. package/dist/esm/bot/update-poller/_service.js +68 -0
  55. package/dist/esm/bot/update-poller/errors.js +2 -0
  56. package/dist/esm/bot/update-poller/fetch-updates.js +86 -0
  57. package/dist/esm/bot/update-poller/poll-and-handle.js +74 -0
  58. package/dist/esm/bot/update-poller/settings.js +19 -0
  59. package/dist/esm/client/_client.js +50 -12
  60. package/dist/esm/client/config.js +46 -0
  61. package/dist/esm/client/errors.js +42 -8
  62. package/dist/esm/client/execute-request/_service.js +49 -0
  63. package/dist/esm/client/execute-request/execute.js +74 -0
  64. package/dist/esm/client/{request.js → execute-request/payload.js} +7 -5
  65. package/dist/esm/client/file/_service.js +51 -0
  66. package/dist/esm/client/file/get-file.js +61 -0
  67. package/dist/esm/client/guards.js +13 -0
  68. package/dist/esm/const.js +17 -0
  69. package/dist/esm/index.js +21 -4
  70. package/dist/esm/specification/api.js +2 -1
  71. package/dist/esm/specification/types.js +2 -1
  72. package/package.json +13 -9
  73. package/readme.md +75 -25
  74. package/dist/cjs/client/const.js +0 -20
  75. package/dist/cjs/client/download-file.js +0 -44
  76. package/dist/cjs/client/execute-request.js +0 -69
  77. package/dist/cjs/client/response.js +0 -22
  78. package/dist/dts/client/download-file.d.ts +0 -13
  79. package/dist/dts/client/execute-request.d.ts +0 -13
  80. package/dist/dts/client/response.d.ts +0 -7
  81. package/dist/esm/client/const.js +0 -13
  82. package/dist/esm/client/download-file.js +0 -36
  83. package/dist/esm/client/execute-request.js +0 -62
  84. package/dist/esm/client/response.js +0 -15
  85. /package/dist/dts/client/{request.d.ts → execute-request/payload.d.ts} +0 -0
  86. /package/dist/dts/{client/const.d.ts → const.d.ts} +0 -0
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.makeBot = void 0;
37
+ const Micro = __importStar(require("effect/Micro"));
38
+ const _service_js_1 = require("../../bot/update-poller/_service.js");
39
+ const makeBot = (messageHandler) => Micro.gen(function* () {
40
+ const { runBot } = yield* Micro.service(_service_js_1.BotUpdatePollerService);
41
+ return yield* runBot(messageHandler);
42
+ }).pipe(Micro.provideServiceEffect(_service_js_1.BotUpdatePollerService, _service_js_1.BotUpdatesPollerServiceDefault), Micro.tapError(error => {
43
+ console.error(error);
44
+ return Micro.void;
45
+ }));
46
+ exports.makeBot = makeBot;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.BotMessageHandler = void 0;
37
+ const Context = __importStar(require("effect/Context"));
38
+ class BotMessageHandler extends Context.Tag("BotMessageHandler")() {
39
+ }
40
+ exports.BotMessageHandler = BotMessageHandler;
41
+ ;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractUpdate = void 0;
4
+ const extractUpdate = (input) => {
5
+ for (const [field, value] of Object.entries(input)) {
6
+ if (field == "update_id") {
7
+ continue;
8
+ }
9
+ return {
10
+ type: field,
11
+ ...value
12
+ };
13
+ }
14
+ return undefined;
15
+ };
16
+ exports.extractUpdate = extractUpdate;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runTgChatBot = void 0;
4
+ const effect_1 = require("effect");
5
+ const _service_js_1 = require("./factory/_service.js");
6
+ const runTgChatBot = (input) => _service_js_1.BotFactoryServiceDefault
7
+ .runBot(input)
8
+ .pipe(effect_1.Micro.runPromise)
9
+ .finally(() => "Telegram chat bot has been shutdown");
10
+ exports.runTgChatBot = runTgChatBot;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.BotUpdatesPollerServiceDefault = exports.BotUpdatePollerService = void 0;
37
+ const Micro = __importStar(require("effect/Micro"));
38
+ const Context = __importStar(require("effect/Context"));
39
+ const _service_js_1 = require("../../client/execute-request/_service.js");
40
+ const poll_and_handle_js_1 = require("./poll-and-handle.js");
41
+ class BotUpdatePollerService extends Context.Tag("BotUpdatePollerService")() {
42
+ }
43
+ exports.BotUpdatePollerService = BotUpdatePollerService;
44
+ ;
45
+ exports.BotUpdatesPollerServiceDefault = Micro.gen(function* () {
46
+ const state = {
47
+ isActive: false,
48
+ };
49
+ const client = yield* Micro.service(_service_js_1.ClientExecuteRequestService);
50
+ const runBot = (messageHandler) => Micro.gen(function* () {
51
+ if (state.isActive) {
52
+ return yield* Micro.fail("AlreadyRunning");
53
+ }
54
+ const fiber = yield* (0, poll_and_handle_js_1.pollAndHandle)({
55
+ settings: messageHandler,
56
+ execute: client.execute
57
+ }).pipe(Micro.forkDaemon);
58
+ fiber.addObserver((exit) => {
59
+ console.log("bot's fiber has been closed", exit);
60
+ state.isActive = false;
61
+ });
62
+ console.log("Reading bot's updates...");
63
+ return fiber;
64
+ });
65
+ return {
66
+ runBot
67
+ };
68
+ }).pipe(Micro.provideServiceEffect(_service_js_1.ClientExecuteRequestService, _service_js_1.ClientExecuteRequestServiceDefault));
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.fetchUpdates = void 0;
37
+ const Micro = __importStar(require("effect/Micro"));
38
+ const utils_js_1 = require("../../bot/message-handler/utils.js");
39
+ const fetchUpdates = ({ state, settings, execute, handlers }) => Micro.gen(function* () {
40
+ const updateId = state.lastUpdateId;
41
+ console.info("getting updates", state);
42
+ const updates = yield* execute("get_updates", {
43
+ ...settings,
44
+ ...(updateId ? { offset: updateId } : undefined)
45
+ }).pipe(Micro.andThen(_ => _.sort(_ => _.update_id)));
46
+ let lastSuccessId = undefined;
47
+ let hasError = false;
48
+ for (const updateObject of updates) {
49
+ const update = (0, utils_js_1.extractUpdate)(updateObject);
50
+ if (!update) {
51
+ console.warn("Unknown update", update);
52
+ hasError = true;
53
+ break;
54
+ }
55
+ const handler = handlers[`on_${update.type}`];
56
+ if (!handler) {
57
+ console.warn("Handler for update not defined", update);
58
+ hasError = true;
59
+ break;
60
+ }
61
+ const handleResult = handler(update);
62
+ if ("chat" in update) {
63
+ const response = yield* execute(`send_${handleResult.type}`, {
64
+ ...handleResult,
65
+ chat_id: update.chat.id
66
+ });
67
+ console.log("bot response", response);
68
+ }
69
+ if (!handleResult) {
70
+ hasError = true;
71
+ console.log(handleResult);
72
+ break;
73
+ }
74
+ ;
75
+ lastSuccessId = updateObject.update_id;
76
+ }
77
+ if (hasError && lastSuccessId) {
78
+ const resp = //commit successfully handled messages
79
+ yield* execute("get_updates", {
80
+ offset: lastSuccessId,
81
+ limit: 0
82
+ });
83
+ }
84
+ return { updates, lastSuccessId, hasError };
85
+ });
86
+ exports.fetchUpdates = fetchUpdates;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.pollAndHandle = void 0;
37
+ const Micro = __importStar(require("effect/Micro"));
38
+ const settings_js_1 = require("./settings.js");
39
+ const fetch_updates_js_1 = require("./fetch-updates.js");
40
+ const pollAndHandle = (input) => {
41
+ const state = {
42
+ lastUpdateId: undefined,
43
+ emptyResponses: 0
44
+ };
45
+ const settings = (0, settings_js_1.makeSettingsFrom)(input.settings);
46
+ return Micro.delay(1000)((0, fetch_updates_js_1.fetchUpdates)({
47
+ state, settings,
48
+ execute: input.execute,
49
+ handlers: input.settings,
50
+ })).pipe(Micro.repeat({
51
+ while: ({ updates, lastSuccessId, hasError }) => {
52
+ if (hasError) {
53
+ console.warn("error in handler, quitting");
54
+ return false;
55
+ }
56
+ if (updates.length == 0) {
57
+ state.emptyResponses += 1;
58
+ if (state.emptyResponses > 200) {
59
+ console.info("too many empty responses, quitting");
60
+ return false;
61
+ }
62
+ }
63
+ else {
64
+ state.emptyResponses = 0;
65
+ }
66
+ ;
67
+ if (lastSuccessId) {
68
+ state.lastUpdateId = lastSuccessId + 1;
69
+ }
70
+ return true;
71
+ }
72
+ }));
73
+ };
74
+ exports.pollAndHandle = pollAndHandle;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeSettingsFrom = void 0;
4
+ const makeSettingsFrom = (input) => {
5
+ let limit = input.batch_size ?? 10;
6
+ let timeout = input.timeout ?? 10;
7
+ if (limit < 10 || limit > 100) {
8
+ console.warn("Wrong limit, must be in [10..100], using 10 instead");
9
+ limit = 10;
10
+ }
11
+ if (timeout < 2 || timeout > 10) {
12
+ console.warn("Wrong timeout, must be in [2..10], using 2 instead");
13
+ limit = 10;
14
+ }
15
+ return {
16
+ limit, timeout
17
+ };
18
+ };
19
+ exports.makeSettingsFrom = makeSettingsFrom;
@@ -1,15 +1,53 @@
1
- import { makeExecute } from "./execute-request.js";
2
- import { makeDownloadFile } from "./download-file.js";
3
- import { defaultBaseUrl } from "./const.js";
4
- export const makeTgBotClient = (inputConfig) => {
5
- const config = {
6
- ...inputConfig,
7
- baseUrl: inputConfig.baseUrl ?? defaultBaseUrl
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
8
26
  };
9
- const execute = makeExecute(config);
10
- const file = makeDownloadFile(config, execute);
11
- return {
12
- ...execute,
13
- ...file
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
14
33
  };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.makeTgBotClient = void 0;
37
+ const Micro = __importStar(require("effect/Micro"));
38
+ const config_js_1 = require("./config.js");
39
+ const _service_js_1 = require("./execute-request/_service.js");
40
+ const _service_js_2 = require("./file/_service.js");
41
+ const makeTgBotClient = (input) => {
42
+ const config = (0, config_js_1.makeTgBotClientConfig)(input);
43
+ const client = Micro.gen(function* () {
44
+ const execute = yield* Micro.service(_service_js_1.ClientExecuteRequestService);
45
+ const file = yield* Micro.service(_service_js_2.ClientFileService);
46
+ return {
47
+ execute: (method, input) => execute.execute(method, input).pipe(Micro.runPromise),
48
+ getFile: (input) => file.getFile(input).pipe(Micro.runPromise)
49
+ };
50
+ }).pipe(Micro.provideServiceEffect(_service_js_1.ClientExecuteRequestService, _service_js_1.ClientExecuteRequestServiceDefault), Micro.provideServiceEffect(_service_js_2.ClientFileService, _service_js_2.ClientFileServiceDefault), Micro.provideService(config_js_1.TgBotClientConfig, config), Micro.runSync);
51
+ return client;
15
52
  };
53
+ exports.makeTgBotClient = makeTgBotClient;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.TgBotClientConfig = exports.makeTgBotClientConfig = void 0;
37
+ const Context = __importStar(require("effect/Context"));
38
+ const const_js_1 = require("../const.js");
39
+ const makeTgBotClientConfig = (input) => TgBotClientConfig.of({
40
+ ...input,
41
+ ["base-url"]: input["base-url"] ?? const_js_1.defaultBaseUrl
42
+ });
43
+ exports.makeTgBotClientConfig = makeTgBotClientConfig;
44
+ class TgBotClientConfig extends Context.Tag("TgBotClientConfig")() {
45
+ }
46
+ exports.TgBotClientConfig = TgBotClientConfig;
@@ -1,12 +1,46 @@
1
- export class TgBotClientError extends Error {
2
- reason;
3
- _tag = "TgBotClientError";
4
- constructor(reason) {
5
- super();
6
- this.reason = reason;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
7
  }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.TgBotClientError = void 0;
37
+ const Data = __importStar(require("effect/Data"));
38
+ class TgBotClientError extends Data.TaggedError("TgBotClientError") {
8
39
  static missingSuccess = new TgBotClientError({
9
- type: "ClientInternalError",
10
- cause: "Expected 'success' to be defined"
40
+ reason: {
41
+ type: "ClientInternalError",
42
+ cause: "Expected 'success' to be defined"
43
+ },
11
44
  });
12
45
  }
46
+ exports.TgBotClientError = TgBotClientError;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ClientExecuteRequestServiceDefault = exports.ClientExecuteRequestService = void 0;
37
+ const Micro = __importStar(require("effect/Micro"));
38
+ const Context = __importStar(require("effect/Context"));
39
+ const config_js_1 = require("../config.js");
40
+ const execute_js_1 = require("./execute.js");
41
+ class ClientExecuteRequestService extends Context.Tag("ClientExecuteRequestService")() {
42
+ }
43
+ exports.ClientExecuteRequestService = ClientExecuteRequestService;
44
+ exports.ClientExecuteRequestServiceDefault = Micro.gen(function* () {
45
+ const config = yield* Micro.service(config_js_1.TgBotClientConfig);
46
+ return {
47
+ execute: (method, input) => (0, execute_js_1.execute)(config, method, input)
48
+ };
49
+ });
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.execute = void 0;
37
+ const Micro = __importStar(require("effect/Micro"));
38
+ const String = __importStar(require("effect/String"));
39
+ const errors_js_1 = require("../errors.js");
40
+ const payload_js_1 = require("./payload.js");
41
+ const guards_js_1 = require("../guards.js");
42
+ const execute = (config, method, input) => Micro.gen(function* () {
43
+ const httpResponse = yield* Micro.tryPromise({
44
+ try: () => fetch(`${config["base-url"]}/bot${config["bot-token"]}/${String.snakeToCamel(method)}`, {
45
+ body: (0, payload_js_1.makePayload)(input) ?? null,
46
+ method: "POST",
47
+ }),
48
+ catch: cause => new errors_js_1.TgBotClientError({
49
+ reason: { type: "ClientInternalError", cause }
50
+ })
51
+ });
52
+ const response = yield* Micro.tryPromise({
53
+ try: () => httpResponse.json(),
54
+ catch: () => new errors_js_1.TgBotClientError({
55
+ reason: { type: "UnexpectedResponse", response: httpResponse }
56
+ })
57
+ });
58
+ if (!(0, guards_js_1.isTgBotApiResponse)(response)) {
59
+ return yield* Micro.fail(new errors_js_1.TgBotClientError({
60
+ reason: { type: "UnexpectedResponse", response }
61
+ }));
62
+ }
63
+ if (!httpResponse.ok) {
64
+ return yield* Micro.fail(new errors_js_1.TgBotClientError({
65
+ reason: {
66
+ type: "NotOkResponse",
67
+ ...(response.error_code ? { errorCode: response.error_code } : undefined),
68
+ ...(response.description ? { details: response.description } : undefined)
69
+ }
70
+ }));
71
+ }
72
+ return response.result;
73
+ });
74
+ exports.execute = execute;