@imessaging/core 0.7.1 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imessaging/core",
3
- "version": "0.7.1",
3
+ "version": "0.7.2",
4
4
  "description": "Core messaging transport contracts and Telegram peer storage",
5
5
  "keywords": [
6
6
  "messaging",
package/src/index.ts CHANGED
@@ -13,6 +13,7 @@ export type {
13
13
  ChannelCommand,
14
14
  CommandMenuTransport,
15
15
  IncomingAttachment,
16
+ IncomingLink,
16
17
  IncomingMessage,
17
18
  IncomingMessageTransport,
18
19
  ReadReceiptTransport,
package/src/types.ts CHANGED
@@ -217,6 +217,25 @@ export type IncomingAttachment = {
217
217
  sizeBytes?: number;
218
218
  };
219
219
 
220
+ /**
221
+ * Адрес, вложенный в сообщение.
222
+ *
223
+ * Отдельным полем, а не поиском по тексту: половина адресов в тексте НЕ ЛЕЖИТ. Слово со скрытой
224
+ * гиперссылкой («откликнуться»), надпись на кнопке и предпросмотр страницы приходят сущностями
225
+ * разметки, и потребитель, разбирающий `text` регулярным выражением, их не увидит вовсе — а
226
+ * промах здесь выглядит не ошибкой, а вакансией без ссылки.
227
+ *
228
+ * Выбор адреса за потребителем: одному нужна площадка, другому форма выгрузки резюме, и решать за
229
+ * них здесь значит отдавать одному чужое.
230
+ */
231
+ export type IncomingLink = {
232
+ url: string;
233
+ /** Что видит человек на месте адреса: слово гиперссылки или надпись на кнопке. */
234
+ label?: string;
235
+ /** Где адрес лежал. Разные места — разный смысл, и «кнопка» отличается от «упомянут в тексте». */
236
+ origin: "text" | "markup" | "button" | "preview";
237
+ };
238
+
220
239
  /**
221
240
  * Входящее сообщение — общий вид для всех каналов.
222
241
  *
@@ -234,6 +253,13 @@ export type IncomingMessage = {
234
253
  messageId: string;
235
254
  text: string;
236
255
  attachments: IncomingAttachment[];
256
+ /**
257
+ * Адреса из сообщения, в порядке появления.
258
+ *
259
+ * `undefined` — канал разметку не разбирает вовсе; пустой список — разобрал и не нашёл. Это
260
+ * РАЗНЫЕ вещи: первое молчит о своём незнании, второе утверждает, что адресов нет.
261
+ */
262
+ links?: IncomingLink[];
237
263
  replyToMessageId?: string;
238
264
  threadId?: number;
239
265
  /**