@grom.js/effect-tg 0.4.0 → 0.6.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 (122) hide show
  1. package/dist/Bot.d.ts +5 -1
  2. package/dist/Bot.d.ts.map +1 -1
  3. package/dist/Bot.js +2 -0
  4. package/dist/Bot.js.map +1 -0
  5. package/dist/BotApi.d.ts +12 -3
  6. package/dist/BotApi.d.ts.map +1 -1
  7. package/dist/BotApi.js +7 -2
  8. package/dist/BotApi.js.map +1 -0
  9. package/dist/BotApiTransport.d.ts +11 -10
  10. package/dist/BotApiTransport.d.ts.map +1 -1
  11. package/dist/BotApiTransport.js +6 -8
  12. package/dist/BotApiTransport.js.map +1 -0
  13. package/dist/BotApiUrl.d.ts +14 -0
  14. package/dist/BotApiUrl.d.ts.map +1 -0
  15. package/dist/BotApiUrl.js +13 -0
  16. package/dist/BotApiUrl.js.map +1 -0
  17. package/dist/Content.d.ts +288 -16
  18. package/dist/Content.d.ts.map +1 -1
  19. package/dist/Content.js +189 -28
  20. package/dist/Content.js.map +1 -0
  21. package/dist/Dialog.d.ts +61 -0
  22. package/dist/Dialog.d.ts.map +1 -0
  23. package/dist/Dialog.js +35 -0
  24. package/dist/Dialog.js.map +1 -0
  25. package/dist/File.d.ts +23 -0
  26. package/dist/File.d.ts.map +1 -0
  27. package/dist/File.js +24 -0
  28. package/dist/File.js.map +1 -0
  29. package/dist/LinkPreview.d.ts +2 -2
  30. package/dist/LinkPreview.d.ts.map +1 -1
  31. package/dist/LinkPreview.js +17 -16
  32. package/dist/LinkPreview.js.map +1 -0
  33. package/dist/Markup.d.ts +41 -0
  34. package/dist/Markup.d.ts.map +1 -0
  35. package/dist/Markup.js +10 -0
  36. package/dist/Markup.js.map +1 -0
  37. package/dist/Runner.d.ts +3 -3
  38. package/dist/Runner.d.ts.map +1 -1
  39. package/dist/Runner.js +1 -0
  40. package/dist/Runner.js.map +1 -0
  41. package/dist/Send.d.ts +177 -13
  42. package/dist/Send.d.ts.map +1 -1
  43. package/dist/Send.js +187 -18
  44. package/dist/Send.js.map +1 -0
  45. package/dist/Text.d.ts +21 -11
  46. package/dist/Text.d.ts.map +1 -1
  47. package/dist/Text.js +10 -17
  48. package/dist/Text.js.map +1 -0
  49. package/dist/index.d.ts +4 -4
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +5 -4
  52. package/dist/index.js.map +1 -0
  53. package/dist/internal/botApi.d.ts +3 -4
  54. package/dist/internal/botApi.d.ts.map +1 -1
  55. package/dist/internal/botApi.js +18 -22
  56. package/dist/internal/botApi.js.map +1 -0
  57. package/dist/internal/botApiMethods.gen.d.ts +19 -19
  58. package/dist/internal/botApiMethods.gen.d.ts.map +1 -1
  59. package/dist/internal/botApiMethods.gen.js +1 -0
  60. package/dist/internal/botApiMethods.gen.js.map +1 -0
  61. package/dist/internal/botApiShape.gen.d.ts +159 -159
  62. package/dist/internal/botApiShape.gen.d.ts.map +1 -1
  63. package/dist/internal/botApiShape.gen.js +1 -0
  64. package/dist/internal/botApiShape.gen.js.map +1 -0
  65. package/dist/internal/botApiTransport.d.ts +4 -6
  66. package/dist/internal/botApiTransport.d.ts.map +1 -1
  67. package/dist/internal/botApiTransport.js +89 -17
  68. package/dist/internal/botApiTransport.js.map +1 -0
  69. package/dist/internal/botApiTypes.gen.js +1 -0
  70. package/dist/internal/botApiTypes.gen.js.map +1 -0
  71. package/dist/internal/dialog.d.ts +12 -0
  72. package/dist/internal/dialog.d.ts.map +1 -0
  73. package/dist/internal/dialog.js +19 -0
  74. package/dist/internal/dialog.js.map +1 -0
  75. package/dist/internal/runner.d.ts +1 -1
  76. package/dist/internal/runner.d.ts.map +1 -1
  77. package/dist/internal/runner.js +8 -4
  78. package/dist/internal/runner.js.map +1 -0
  79. package/dist/internal/send.d.ts +13 -0
  80. package/dist/internal/send.d.ts.map +1 -0
  81. package/dist/internal/send.js +220 -0
  82. package/dist/internal/send.js.map +1 -0
  83. package/package.json +20 -14
  84. package/src/Bot.ts +16 -0
  85. package/src/BotApi.ts +68 -0
  86. package/src/BotApiTransport.ts +55 -0
  87. package/src/BotApiUrl.ts +28 -0
  88. package/src/Content.ts +410 -0
  89. package/src/Dialog.ts +54 -0
  90. package/src/File.ts +45 -0
  91. package/src/LinkPreview.ts +26 -0
  92. package/src/Markup.ts +33 -0
  93. package/src/Runner.ts +22 -0
  94. package/src/Send.ts +330 -0
  95. package/src/Text.ts +42 -0
  96. package/src/index.ts +12 -0
  97. package/src/internal/botApi.ts +31 -0
  98. package/src/internal/botApiMethods.gen.ts +2027 -0
  99. package/src/internal/botApiShape.gen.ts +398 -0
  100. package/src/internal/botApiTransport.ts +118 -0
  101. package/src/internal/botApiTypes.gen.ts +4178 -0
  102. package/src/internal/dialog.ts +33 -0
  103. package/src/internal/runner.ts +57 -0
  104. package/src/internal/send.ts +318 -0
  105. package/dist/BotApiWebhook.d.ts +0 -41
  106. package/dist/BotApiWebhook.d.ts.map +0 -1
  107. package/dist/BotApiWebhook.js +0 -43
  108. package/dist/Chat.d.ts +0 -96
  109. package/dist/Chat.d.ts.map +0 -1
  110. package/dist/Chat.js +0 -48
  111. package/dist/InputFile.d.ts +0 -4
  112. package/dist/InputFile.d.ts.map +0 -1
  113. package/dist/InputFile.js +0 -3
  114. package/dist/Middleware.d.ts +0 -6
  115. package/dist/Middleware.d.ts.map +0 -1
  116. package/dist/Middleware.js +0 -1
  117. package/dist/internal/botApiMethod.d.ts +0 -8
  118. package/dist/internal/botApiMethod.d.ts.map +0 -1
  119. package/dist/internal/botApiMethod.js +0 -1
  120. package/dist/internal/chat.d.ts +0 -14
  121. package/dist/internal/chat.d.ts.map +0 -1
  122. package/dist/internal/chat.js +0 -20
package/dist/Send.d.ts CHANGED
@@ -1,25 +1,189 @@
1
- import type { MethodParams } from './BotApi.ts';
2
- import type { Chat } from './Chat.ts';
3
- import type { Content } from './Content.ts';
1
+ /**
2
+ * Utilities for sending messages.
3
+ */
4
+ import type * as BotApi from './BotApi.ts';
5
+ import type * as BotApiTransport from './BotApiTransport.ts';
6
+ import type * as Content from './Content.ts';
7
+ import type * as Dialog_ from './Dialog.ts';
8
+ import type * as Markup from './Markup.ts';
9
+ import * as Context from 'effect/Context';
4
10
  import * as Data from 'effect/Data';
5
11
  import * as Effect from 'effect/Effect';
6
- import * as BotApi from './BotApi.ts';
12
+ import * as Inspectable from 'effect/Inspectable';
13
+ declare const MessageToSendTypeId: unique symbol;
14
+ declare const Dialog_base: Context.TagClass<Dialog, "@grom.js/effect-tg/Send/Dialog", Dialog_.Dialog>;
15
+ /**
16
+ * Service providing the target dialog for sending messages.
17
+ */
18
+ export declare class Dialog extends Dialog_base {
19
+ }
7
20
  /**
8
- * Creates an effect that sends a message.
21
+ * Options for sending a message.
9
22
  *
10
- * @todo Reply options are not supported.
11
- * @todo Reply markup is not supported.
23
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1message_send_options.html td.td_api.messageSendOptions}
12
24
  */
13
- export declare const message: (args: {
14
- chat: Chat;
15
- content: Content;
16
- options?: Options;
17
- }) => Effect.Effect<BotApi.Types.Message, import("./BotApiTransport.ts").BotApiTransportError | BotApi.BotApiError, BotApi.BotApi>;
18
25
  export declare class Options extends Data.Class<{
19
26
  disableNotification?: boolean;
20
27
  protectContent?: boolean;
21
28
  allowPaidBroadcast?: boolean;
22
29
  }> {
23
- sendParams(): Pick<MethodParams['sendMessage'], 'disable_notification' | 'protect_content' | 'allow_paid_broadcast'>;
24
30
  }
31
+ /**
32
+ * Sends a message directly with explicit parameters.
33
+ *
34
+ * Prefer {@linkcode message} for more composability.
35
+ *
36
+ * Example:
37
+ * ```ts
38
+ * yield* Send.sendMessage({
39
+ * content: new Content.Text({
40
+ * text,
41
+ * linkPreview: Option.none(),
42
+ * }),
43
+ * dialog: new Dialog.UserId(userId),
44
+ * options: new Send.Options({
45
+ * protectContent: true,
46
+ * }),
47
+ * })
48
+ * ```
49
+ *
50
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1send_message.html td.td_api.sendMessage}
51
+ */
52
+ export declare const sendMessage: (params: {
53
+ content: Content.Content;
54
+ dialog: Dialog_.Dialog;
55
+ options?: Options;
56
+ markup?: Markup.Markup;
57
+ }) => Effect.Effect<BotApi.Types.Message, BotApi.BotApiError | BotApiTransport.BotApiTransportError, BotApi.BotApi>;
58
+ type MessageToSendEffect = Effect.Effect<BotApi.Types.Message, BotApi.BotApiError | BotApiTransport.BotApiTransportError, BotApi.BotApi | Dialog>;
59
+ /**
60
+ * A message prepared to be sent.
61
+ */
62
+ export interface MessageToSend extends Inspectable.Inspectable, MessageToSendEffect {
63
+ readonly [MessageToSendTypeId]: typeof MessageToSendTypeId;
64
+ readonly content: Content.Content;
65
+ readonly options: Options;
66
+ readonly markup: Markup.Markup | undefined;
67
+ }
68
+ /**
69
+ * Creates a message to send with the given content.
70
+ *
71
+ * Example:
72
+ * ```ts
73
+ * yield* Send.message(content).pipe(
74
+ * Send.withProtection,
75
+ * Send.to(dialog),
76
+ * )
77
+ * ```
78
+ */
79
+ export declare const message: (content: Content.Content) => MessageToSend;
80
+ export declare const to: {
81
+ /**
82
+ * Provides the target dialog for sending messages.
83
+ *
84
+ * Example:
85
+ * ```ts
86
+ * // Per-message
87
+ * yield* Send.message(content).pipe(
88
+ * Send.withProtection,
89
+ * Send.to(dialog),
90
+ * )
91
+ *
92
+ * // For entire handler (multiple sends)
93
+ * const handler = Effect.gen(function* () {
94
+ * yield* Send.message(content1)
95
+ * yield* Send.message(content2)
96
+ * }).pipe(Send.to(dialog))
97
+ * ```
98
+ */
99
+ (dialog: Dialog_.Dialog): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Dialog>>;
100
+ <A, E, R>(effect: Effect.Effect<A, E, R>, dialog: Dialog_.Dialog): Effect.Effect<A, E, Exclude<R, Dialog>>;
101
+ };
102
+ /**
103
+ * Modifies the options for sending a message by merging with existing options.
104
+ *
105
+ * Example:
106
+ * ```ts
107
+ * yield* Send.message(content).pipe(
108
+ * Send.withOptions({
109
+ * disableNotification: true,
110
+ * protectContent: true,
111
+ * }),
112
+ * Send.to(dialog),
113
+ * )
114
+ * ```
115
+ *
116
+ * Available shortcuts:
117
+ * - {@linkcode withoutNotification}
118
+ * - {@linkcode withNotification}
119
+ * - {@linkcode withoutContentProtection}
120
+ * - {@linkcode withContentProtection}
121
+ * - {@linkcode withoutPaidBroadcast}
122
+ * - {@linkcode withPaidBroadcast}
123
+ */
124
+ export declare const withOptions: {
125
+ (options: Options): (self: MessageToSend) => MessageToSend;
126
+ (self: MessageToSend, options: Options): MessageToSend;
127
+ };
128
+ /**
129
+ * Disables notification for the message.
130
+ *
131
+ * Shortcut for `withOptions({ disableNotification: true })`.
132
+ */
133
+ export declare const withoutNotification: (self: MessageToSend) => MessageToSend;
134
+ /**
135
+ * Enables notification for the message.
136
+ *
137
+ * Shortcut for `withOptions({ disableNotification: false })`.
138
+ */
139
+ export declare const withNotification: (self: MessageToSend) => MessageToSend;
140
+ /**
141
+ * Allows message content to be saved and forwarded.
142
+ *
143
+ * Shortcut for `withOptions({ protectContent: false })`.
144
+ */
145
+ export declare const withoutContentProtection: (self: MessageToSend) => MessageToSend;
146
+ /**
147
+ * Protects message content from saving and forwarding.
148
+ *
149
+ * Shortcut for `withOptions({ protectContent: true })`.
150
+ */
151
+ export declare const withContentProtection: (self: MessageToSend) => MessageToSend;
152
+ /**
153
+ * Disallows paid broadcast for the message.
154
+ *
155
+ * Shortcut for `withOptions({ allowPaidBroadcast: false })`.
156
+ */
157
+ export declare const withoutPaidBroadcast: (self: MessageToSend) => MessageToSend;
158
+ /**
159
+ * Allows paid broadcast for the message.
160
+ *
161
+ * Shortcut for `withOptions({ allowPaidBroadcast: true })`.
162
+ */
163
+ export declare const withPaidBroadcast: (self: MessageToSend) => MessageToSend;
164
+ /**
165
+ * Sets the reply markup for the message.
166
+ *
167
+ * Example:
168
+ * ```ts
169
+ * yield* Send.message(content).pipe(
170
+ * Send.withMarkup(
171
+ * new Markup.ForceReply({
172
+ * selective: false,
173
+ * inputPlaceholder: Option.some("effect-tg or grammY?"),
174
+ * }),
175
+ * ),
176
+ * Send.to(dialog),
177
+ * )
178
+ * ```
179
+ */
180
+ export declare const withMarkup: {
181
+ (markup: Markup.Markup): (self: MessageToSend) => MessageToSend;
182
+ (self: MessageToSend, markup: Markup.Markup): MessageToSend;
183
+ };
184
+ /**
185
+ * Removes the reply markup from the message.
186
+ */
187
+ export declare const withoutMarkup: (self: MessageToSend) => MessageToSend;
188
+ export {};
25
189
  //# sourceMappingURL=Send.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Send.d.ts","sourceRoot":"","sources":["../src/Send.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM;IAC5B,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,iIAcA,CAAA;AAED,qBAAa,OAAQ,SAAQ,IAAI,CAAC,KAAK,CAAC;IACtC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAC;IACA,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,sBAAsB,GAAG,iBAAiB,GAAG,sBAAsB,CAAC;CAOrH"}
1
+ {"version":3,"file":"Send.d.ts","sourceRoot":"","sources":["../src/Send.ts"],"names":[],"mappings":"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"}
package/dist/Send.js CHANGED
@@ -1,26 +1,195 @@
1
+ /**
2
+ * Utilities for sending messages.
3
+ */
4
+ import * as Context from 'effect/Context';
1
5
  import * as Data from 'effect/Data';
2
6
  import * as Effect from 'effect/Effect';
3
- import * as Match from 'effect/Match';
4
- import * as BotApi from "./BotApi.js";
7
+ import * as Effectable from 'effect/Effectable';
8
+ import * as Function from 'effect/Function';
9
+ import * as Inspectable from 'effect/Inspectable';
10
+ import * as Pipeable from 'effect/Pipeable';
11
+ import * as internal from "./internal/send.js";
12
+ // ─── Type ID ──────────────────────────────────────────────────────
13
+ const MessageToSendTypeId = Symbol.for('@grom.js/effect-tg/Send/MessageToSend');
14
+ // ─── Services ─────────────────────────────────────────────────────
15
+ /**
16
+ * Service providing the target dialog for sending messages.
17
+ */
18
+ export class Dialog extends Context.Tag('@grom.js/effect-tg/Send/Dialog')() {
19
+ }
20
+ // ─── Options ──────────────────────────────────────────────────────
5
21
  /**
6
- * Creates an effect that sends a message.
22
+ * Options for sending a message.
7
23
  *
8
- * @todo Reply options are not supported.
9
- * @todo Reply markup is not supported.
24
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1message_send_options.html td.td_api.messageSendOptions}
10
25
  */
11
- export const message = (args) => {
12
- const rest = {
13
- ...args.chat.sendParams(),
14
- ...args.options?.sendParams(),
15
- };
16
- return BotApi.BotApi.pipe(Effect.andThen(api => Match.value(args.content).pipe(Match.tag('text', content => api.sendMessage({ ...rest, ...content.sendParams() })), Match.tag('photo', content => api.sendPhoto({ ...rest, ...content.sendParams() })), Match.exhaustive)));
17
- };
18
26
  export class Options extends Data.Class {
19
- sendParams() {
27
+ }
28
+ // ─── Direct Send ──────────────────────────────────────────────────
29
+ /**
30
+ * Sends a message directly with explicit parameters.
31
+ *
32
+ * Prefer {@linkcode message} for more composability.
33
+ *
34
+ * Example:
35
+ * ```ts
36
+ * yield* Send.sendMessage({
37
+ * content: new Content.Text({
38
+ * text,
39
+ * linkPreview: Option.none(),
40
+ * }),
41
+ * dialog: new Dialog.UserId(userId),
42
+ * options: new Send.Options({
43
+ * protectContent: true,
44
+ * }),
45
+ * })
46
+ * ```
47
+ *
48
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1send_message.html td.td_api.sendMessage}
49
+ */
50
+ export const sendMessage = internal.sendMessage;
51
+ const Proto = {
52
+ [MessageToSendTypeId]: MessageToSendTypeId,
53
+ ...Effectable.CommitPrototype,
54
+ ...Inspectable.BaseProto,
55
+ commit() {
56
+ return Effect.flatMap(Dialog, dialog => sendMessage({
57
+ dialog,
58
+ content: this.content,
59
+ options: this.options,
60
+ markup: this.markup,
61
+ }));
62
+ },
63
+ toJSON() {
20
64
  return {
21
- disable_notification: this.disableNotification || undefined,
22
- protect_content: this.protectContent || undefined,
23
- allow_paid_broadcast: this.allowPaidBroadcast || undefined,
65
+ _id: this[MessageToSendTypeId].description,
66
+ content: this.content,
67
+ options: this.options,
68
+ markup: this.markup,
24
69
  };
25
- }
26
- }
70
+ },
71
+ pipe() {
72
+ // eslint-disable-next-line prefer-rest-params
73
+ return Pipeable.pipeArguments(this, arguments);
74
+ },
75
+ };
76
+ const make = (args) => {
77
+ const self = Object.create(Proto);
78
+ self.content = args.content;
79
+ self.options = args.options;
80
+ self.markup = args.markup;
81
+ return self;
82
+ };
83
+ // ─── Constructors ─────────────────────────────────────────────────
84
+ /**
85
+ * Creates a message to send with the given content.
86
+ *
87
+ * Example:
88
+ * ```ts
89
+ * yield* Send.message(content).pipe(
90
+ * Send.withProtection,
91
+ * Send.to(dialog),
92
+ * )
93
+ * ```
94
+ */
95
+ export const message = (content) => make({ content });
96
+ // ─── Dialog Provider ──────────────────────────────────────────────
97
+ export const to = Function.dual(2, (effect, dialog) => (Effect.provideService(effect, Dialog, dialog)));
98
+ // ─── Options Combinators ──────────────────────────────────────────
99
+ /**
100
+ * Modifies the options for sending a message by merging with existing options.
101
+ *
102
+ * Example:
103
+ * ```ts
104
+ * yield* Send.message(content).pipe(
105
+ * Send.withOptions({
106
+ * disableNotification: true,
107
+ * protectContent: true,
108
+ * }),
109
+ * Send.to(dialog),
110
+ * )
111
+ * ```
112
+ *
113
+ * Available shortcuts:
114
+ * - {@linkcode withoutNotification}
115
+ * - {@linkcode withNotification}
116
+ * - {@linkcode withoutContentProtection}
117
+ * - {@linkcode withContentProtection}
118
+ * - {@linkcode withoutPaidBroadcast}
119
+ * - {@linkcode withPaidBroadcast}
120
+ */
121
+ export const withOptions = Function.dual(2, (self, options) => (make({
122
+ content: self.content,
123
+ options: new Options({
124
+ ...self.options,
125
+ ...options,
126
+ }),
127
+ markup: self.markup,
128
+ })));
129
+ /**
130
+ * Disables notification for the message.
131
+ *
132
+ * Shortcut for `withOptions({ disableNotification: true })`.
133
+ */
134
+ export const withoutNotification = withOptions({ disableNotification: true });
135
+ /**
136
+ * Enables notification for the message.
137
+ *
138
+ * Shortcut for `withOptions({ disableNotification: false })`.
139
+ */
140
+ export const withNotification = withOptions({ disableNotification: false });
141
+ /**
142
+ * Allows message content to be saved and forwarded.
143
+ *
144
+ * Shortcut for `withOptions({ protectContent: false })`.
145
+ */
146
+ export const withoutContentProtection = withOptions({ protectContent: false });
147
+ /**
148
+ * Protects message content from saving and forwarding.
149
+ *
150
+ * Shortcut for `withOptions({ protectContent: true })`.
151
+ */
152
+ export const withContentProtection = withOptions({ protectContent: true });
153
+ /**
154
+ * Disallows paid broadcast for the message.
155
+ *
156
+ * Shortcut for `withOptions({ allowPaidBroadcast: false })`.
157
+ */
158
+ export const withoutPaidBroadcast = withOptions({ allowPaidBroadcast: false });
159
+ /**
160
+ * Allows paid broadcast for the message.
161
+ *
162
+ * Shortcut for `withOptions({ allowPaidBroadcast: true })`.
163
+ */
164
+ export const withPaidBroadcast = withOptions({ allowPaidBroadcast: true });
165
+ // ─── Markup Combinators ──────────────────────────────────────────
166
+ /**
167
+ * Sets the reply markup for the message.
168
+ *
169
+ * Example:
170
+ * ```ts
171
+ * yield* Send.message(content).pipe(
172
+ * Send.withMarkup(
173
+ * new Markup.ForceReply({
174
+ * selective: false,
175
+ * inputPlaceholder: Option.some("effect-tg or grammY?"),
176
+ * }),
177
+ * ),
178
+ * Send.to(dialog),
179
+ * )
180
+ * ```
181
+ */
182
+ export const withMarkup = Function.dual(2, (self, markup) => (make({
183
+ content: self.content,
184
+ options: self.options,
185
+ markup,
186
+ })));
187
+ /**
188
+ * Removes the reply markup from the message.
189
+ */
190
+ export const withoutMarkup = self => make({
191
+ content: self.content,
192
+ options: self.options,
193
+ markup: undefined,
194
+ });
195
+ //# sourceMappingURL=Send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Send.js","sourceRoot":"","sources":["../src/Send.ts"],"names":[],"mappings":"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"}
package/dist/Text.d.ts CHANGED
@@ -1,31 +1,41 @@
1
1
  import type { TgxElement } from '@grom.js/tgx/types';
2
- import type { MethodParams, Types } from './BotApi.ts';
3
- import * as Data from 'effect/Data';
2
+ import type { Types } from './BotApi.ts';
4
3
  /**
5
4
  * Formatted text.
6
5
  */
7
6
  export type Text = Plain | Html | Markdown | Tgx;
8
- export declare class Plain extends Data.Class<{
7
+ declare const Plain_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
8
+ readonly _tag: "Plain";
9
+ };
10
+ export declare class Plain extends Plain_base<{
9
11
  text: string;
10
12
  entities?: Array<Types.MessageEntity>;
11
13
  }> {
12
- sendParams(): SendParams;
13
14
  }
14
- export declare class Html extends Data.Class<{
15
+ declare const Html_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
16
+ readonly _tag: "Html";
17
+ };
18
+ export declare class Html extends Html_base<{
15
19
  html: string;
16
20
  }> {
17
- sendParams(): SendParams;
18
21
  }
19
- export declare class Markdown extends Data.Class<{
22
+ declare const Markdown_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
23
+ readonly _tag: "Markdown";
24
+ };
25
+ export declare class Markdown extends Markdown_base<{
20
26
  markdown: string;
21
27
  }> {
22
- sendParams(): SendParams;
23
28
  }
24
- export declare class Tgx extends Data.Class<{
29
+ declare const Tgx_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
30
+ readonly _tag: "Tgx";
31
+ };
32
+ export declare class Tgx extends Tgx_base<{
25
33
  tgx: TgxElement;
26
34
  }> {
27
- sendParams(): SendParams;
28
35
  }
29
- type SendParams = Pick<MethodParams['sendMessage'], 'text' | 'entities' | 'parse_mode'>;
36
+ export declare const plain: (text: string, entities?: Array<Types.MessageEntity>) => Plain;
37
+ export declare const html: (html: string) => Html;
38
+ export declare const markdown: (markdown: string) => Markdown;
39
+ export declare const tgx: (tgx: TgxElement) => Tgx;
30
40
  export {};
31
41
  //# sourceMappingURL=Text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../src/Text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAEtD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AAEnC;;GAEG;AACH,MAAM,MAAM,IAAI,GACV,KAAK,GACL,IAAI,GACJ,QAAQ,GACR,GAAG,CAAA;AAET,qBAAa,KAAM,SAAQ,IAAI,CAAC,KAAK,CAAC;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;CACtC,CAAC;IACA,UAAU,IAAI,UAAU;CAGzB;AAED,qBAAa,IAAK,SAAQ,IAAI,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;IACpD,UAAU,IAAI,UAAU;CAGzB;AAED,qBAAa,QAAS,SAAQ,IAAI,CAAC,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;IAC5D,UAAU,IAAI,UAAU;CAGzB;AAED,qBAAa,GAAI,SAAQ,IAAI,CAAC,KAAK,CAAC;IAAE,GAAG,EAAE,UAAU,CAAA;CAAE,CAAC;IACtD,UAAU,IAAI,UAAU;CAGzB;AAED,KAAK,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC,CAAA"}
1
+ {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../src/Text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAGxC;;GAEG;AACH,MAAM,MAAM,IAAI,GACV,KAAK,GACL,IAAI,GACJ,QAAQ,GACR,GAAG,CAAA;;;;AAET,qBAAa,KAAM,SAAQ,WAA0B;IACnD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;CACtC,CAAC;CAAG;;;;AAEL,qBAAa,IAAK,SAAQ,UAAyB;IACjD,IAAI,EAAE,MAAM,CAAA;CACb,CAAC;CAAG;;;;AAEL,qBAAa,QAAS,SAAQ,cAA6B;IACzD,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAC;CAAG;;;;AAEL,qBAAa,GAAI,SAAQ,SAAwB;IAC/C,GAAG,EAAE,UAAU,CAAA;CAChB,CAAC;CAAG;AAIL,eAAO,MAAM,KAAK,GAChB,MAAM,MAAM,EACZ,WAAW,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,KACpC,KAAsC,CAAA;AAEzC,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,KAAG,IAA0B,CAAA;AAE9D,eAAO,MAAM,QAAQ,GAAI,UAAU,MAAM,KAAG,QAAsC,CAAA;AAElF,eAAO,MAAM,GAAG,GAAI,KAAK,UAAU,KAAG,GAAuB,CAAA"}
package/dist/Text.js CHANGED
@@ -1,22 +1,15 @@
1
- import { html as tgxToHtml } from '@grom.js/tgx';
2
1
  import * as Data from 'effect/Data';
3
- export class Plain extends Data.Class {
4
- sendParams() {
5
- return { text: this.text, entities: this.entities };
6
- }
2
+ export class Plain extends Data.TaggedClass('Plain') {
7
3
  }
8
- export class Html extends Data.Class {
9
- sendParams() {
10
- return { text: this.html, parse_mode: 'HTML' };
11
- }
4
+ export class Html extends Data.TaggedClass('Html') {
12
5
  }
13
- export class Markdown extends Data.Class {
14
- sendParams() {
15
- return { text: this.markdown, parse_mode: 'MarkdownV2' };
16
- }
6
+ export class Markdown extends Data.TaggedClass('Markdown') {
17
7
  }
18
- export class Tgx extends Data.Class {
19
- sendParams() {
20
- return { text: tgxToHtml(this.tgx), parse_mode: 'HTML' };
21
- }
8
+ export class Tgx extends Data.TaggedClass('Tgx') {
22
9
  }
10
+ // ———— Constructors ———————————————————————————————————————————————————————————
11
+ export const plain = (text, entities) => new Plain({ text, entities });
12
+ export const html = (html) => new Html({ html });
13
+ export const markdown = (markdown) => new Markdown({ markdown });
14
+ export const tgx = (tgx) => new Tgx({ tgx });
15
+ //# sourceMappingURL=Text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Text.js","sourceRoot":"","sources":["../src/Text.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AAWnC,MAAM,OAAO,KAAM,SAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,CAGjD;CAAG;AAEL,MAAM,OAAO,IAAK,SAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAE/C;CAAG;AAEL,MAAM,OAAO,QAAS,SAAQ,IAAI,CAAC,WAAW,CAAC,UAAU,CAEvD;CAAG;AAEL,MAAM,OAAO,GAAI,SAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,CAE7C;CAAG;AAEL,gFAAgF;AAEhF,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,IAAY,EACZ,QAAqC,EAC9B,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;AAEzC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,IAAY,EAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;AAE9D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,QAAgB,EAAY,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AAElF,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAe,EAAO,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  export * as Bot from './Bot.ts';
2
2
  export * as BotApi from './BotApi.ts';
3
3
  export * as BotApiTransport from './BotApiTransport.ts';
4
- export * as BotApiWebhook from './BotApiWebhook.ts';
5
- export * as Chat from './Chat.ts';
4
+ export * as BotApiUrl from './BotApiUrl.ts';
6
5
  export * as Content from './Content.ts';
7
- export * as InputFile from './InputFile.ts';
6
+ export * as Dialog from './Dialog.ts';
7
+ export * as File from './File.ts';
8
8
  export * as LinkPreview from './LinkPreview.ts';
9
- export * as Middleware from './Middleware.ts';
9
+ export * as Markup from './Markup.ts';
10
10
  export * as Runner from './Runner.ts';
11
11
  export * as Send from './Send.ts';
12
12
  export * as Text from './Text.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA"}
package/dist/index.js CHANGED
@@ -1,12 +1,13 @@
1
1
  export * as Bot from "./Bot.js";
2
2
  export * as BotApi from "./BotApi.js";
3
3
  export * as BotApiTransport from "./BotApiTransport.js";
4
- export * as BotApiWebhook from "./BotApiWebhook.js";
5
- export * as Chat from "./Chat.js";
4
+ export * as BotApiUrl from "./BotApiUrl.js";
6
5
  export * as Content from "./Content.js";
7
- export * as InputFile from "./InputFile.js";
6
+ export * as Dialog from "./Dialog.js";
7
+ export * as File from "./File.js";
8
8
  export * as LinkPreview from "./LinkPreview.js";
9
- export * as Middleware from "./Middleware.js";
9
+ export * as Markup from "./Markup.js";
10
10
  export * as Runner from "./Runner.js";
11
11
  export * as Send from "./Send.js";
12
12
  export * as Text from "./Text.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA"}
@@ -1,5 +1,4 @@
1
- import type { BotApiShape } from './botApiShape.gen.ts';
2
- import * as Effect from 'effect/Effect';
3
- import { BotApiTransport } from '../BotApiTransport.ts';
4
- export declare const make: Effect.Effect<BotApiShape, never, BotApiTransport>;
1
+ import type * as BotApiTransport from '../BotApiTransport.ts';
2
+ import * as BotApi from '../BotApi.ts';
3
+ export declare const make: (transport: BotApiTransport.BotApiTransport.Service) => BotApi.BotApi.Service;
5
4
  //# sourceMappingURL=botApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"botApi.d.ts","sourceRoot":"","sources":["../../src/internal/botApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,eAAO,MAAM,IAAI,oDA0Bf,CAAA"}
1
+ {"version":3,"file":"botApi.d.ts","sourceRoot":"","sources":["../../src/internal/botApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,eAAe,MAAM,uBAAuB,CAAA;AAE7D,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAEtC,eAAO,MAAM,IAAI,GACf,WAAW,eAAe,CAAC,eAAe,CAAC,OAAO,KACjD,MAAM,CAAC,MAAM,CAAC,OAwBhB,CAAA"}
@@ -1,26 +1,22 @@
1
1
  import * as Effect from 'effect/Effect';
2
- import { BotApiError } from "../BotApi.js";
3
- import { BotApiTransport } from "../BotApiTransport.js";
4
- export const make = Effect.gen(function* () {
5
- const transport = yield* BotApiTransport;
6
- const botApi = new Proxy({}, {
7
- get: (_target, prop) => {
8
- if (typeof prop !== 'string') {
9
- return;
2
+ import * as BotApi from "../BotApi.js";
3
+ export const make = (transport) => new Proxy({}, {
4
+ get: (_target, prop) => {
5
+ if (typeof prop !== 'string') {
6
+ return;
7
+ }
8
+ const method = prop;
9
+ return Effect.fnUntraced(function* (params = {}) {
10
+ const response = yield* transport.sendRequest(method, params);
11
+ if (response.ok) {
12
+ return response.result;
10
13
  }
11
- const method = prop;
12
- return (params = {}) => (Effect.gen(function* () {
13
- const response = yield* transport.sendRequest(method, params);
14
- if (response.ok) {
15
- return response.result;
16
- }
17
- yield* Effect.fail(new BotApiError({
18
- code: response.error_code,
19
- description: response.description,
20
- parameters: response.parameters,
21
- }));
14
+ return yield* Effect.fail(new BotApi.BotApiError({
15
+ code: response.error_code,
16
+ description: response.description,
17
+ parameters: response.parameters,
22
18
  }));
23
- },
24
- });
25
- return botApi;
19
+ });
20
+ },
26
21
  });
22
+ //# sourceMappingURL=botApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"botApi.js","sourceRoot":"","sources":["../../src/internal/botApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,SAAkD,EAC3B,EAAE,CACzB,IAAI,KAAK,CAAC,EAAE,EAAE;IACZ,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAM;QACR,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAA;QACnB,OAAO,MAAM,CAAC,UAAU,CACtB,QAAQ,CAAC,EAAE,SAAyC,EAAE;YACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAC7D,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,OAAO,QAAQ,CAAC,MAAM,CAAA;YACxB,CAAC;YACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,MAAM,CAAC,WAAW,CAAC;gBACrB,IAAI,EAAE,QAAQ,CAAC,UAAU;gBACzB,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;aAChC,CAAC,CACH,CAAA;QACH,CAAC,CACF,CAAA;IACH,CAAC;CACF,CACF,CAAA"}