@imessaging/core 0.8.4 → 0.8.6

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.8.4",
3
+ "version": "0.8.6",
4
4
  "description": "Core messaging transport contracts and Telegram peer storage",
5
5
  "keywords": [
6
6
  "messaging",
package/src/index.ts CHANGED
@@ -15,6 +15,7 @@ export { MemoryPeerStore } from "./memory-peer-store";
15
15
  export { createPeerKey } from "./peer-key";
16
16
  export {
17
17
  canEdit,
18
+ canFindByPhone,
18
19
  canMarkRead,
19
20
  canReact,
20
21
  canReceive,
@@ -43,6 +44,9 @@ export type {
43
44
  EditedMessageTransport,
44
45
  MessageDraft,
45
46
  OutgoingObserverTransport,
47
+ PhoneLookupOptions,
48
+ PhoneLookupTransport,
49
+ PhoneMatch,
46
50
  EditResult,
47
51
  EmailRecipient,
48
52
  HeadhunterRecipient,
package/src/types.ts CHANGED
@@ -409,6 +409,33 @@ export function canObserveOutgoing(
409
409
  );
410
410
  }
411
411
 
412
+ /** Учётка, найденная по номеру телефона. */
413
+ export type PhoneMatch = { userId: string; username?: string; firstName?: string };
414
+
415
+ export type PhoneLookupOptions = {
416
+ /**
417
+ * Контакт, заведённый ради поиска, остаётся в адресной книге (по умолчанию): с человеком будут работать, и
418
+ * оператор на телефоне видит его имя, а не номер. `false` — удалить сразу, для массового перебора номеров.
419
+ */
420
+ keepContact?: boolean;
421
+ /** Имя контакта; без него — сам номер. */
422
+ firstName?: string;
423
+ lastName?: string;
424
+ };
425
+
426
+ /**
427
+ * Поиск учётки по номеру телефона — когда о человеке известен только номер. Найденный пир транспорт
428
+ * запоминает: следующий send по `{ type: "user", id: userId }` уходит без повторного поиска.
429
+ */
430
+ export interface PhoneLookupTransport extends MessageTransport {
431
+ /** Номер — E.164 (`+79991234567`). Не найден — `null`; прочие отказы канала — исключением с его текстом. */
432
+ findByPhone(phone: string, options?: PhoneLookupOptions): Promise<PhoneMatch | null>;
433
+ }
434
+
435
+ export function canFindByPhone(transport: MessageTransport): transport is PhoneLookupTransport {
436
+ return typeof (transport as PhoneLookupTransport).findByPhone === "function";
437
+ }
438
+
412
439
  /** Пункт меню команд канала: `/menu` и подпись рядом с ним. */
413
440
  export type ChannelCommand = {
414
441
  /** Без ведущей косой черты. */