@mapier/imsg-sdk 0.1.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 (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +68 -0
  3. package/dist/gateway/external-ids.d.ts +3 -0
  4. package/dist/gateway/external-ids.js +37 -0
  5. package/dist/gateway/external-ids.js.map +1 -0
  6. package/dist/gateway/fake.d.ts +161 -0
  7. package/dist/gateway/fake.js +870 -0
  8. package/dist/gateway/fake.js.map +1 -0
  9. package/dist/gateway/imsg.d.ts +77 -0
  10. package/dist/gateway/imsg.js +676 -0
  11. package/dist/gateway/imsg.js.map +1 -0
  12. package/dist/gateway/portable-chat.d.ts +65 -0
  13. package/dist/gateway/portable-chat.js +118 -0
  14. package/dist/gateway/portable-chat.js.map +1 -0
  15. package/dist/gateway/types.d.ts +169 -0
  16. package/dist/gateway/types.js +16 -0
  17. package/dist/gateway/types.js.map +1 -0
  18. package/dist/imsg/binary.d.ts +1 -0
  19. package/dist/imsg/binary.js +4 -0
  20. package/dist/imsg/binary.js.map +1 -0
  21. package/dist/imsg/react.d.ts +2 -0
  22. package/dist/imsg/react.js +24 -0
  23. package/dist/imsg/react.js.map +1 -0
  24. package/dist/imsg/rpc.d.ts +145 -0
  25. package/dist/imsg/rpc.js +227 -0
  26. package/dist/imsg/rpc.js.map +1 -0
  27. package/dist/imsg/status.d.ts +9 -0
  28. package/dist/imsg/status.js +37 -0
  29. package/dist/imsg/status.js.map +1 -0
  30. package/dist/index.d.ts +9 -0
  31. package/dist/index.js +9 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/interactions/catalog.d.ts +2 -0
  34. package/dist/interactions/catalog.js +98 -0
  35. package/dist/interactions/catalog.js.map +1 -0
  36. package/dist/interactions/harness.d.ts +25 -0
  37. package/dist/interactions/harness.js +69 -0
  38. package/dist/interactions/harness.js.map +1 -0
  39. package/dist/interactions/index.d.ts +5 -0
  40. package/dist/interactions/index.js +5 -0
  41. package/dist/interactions/index.js.map +1 -0
  42. package/dist/interactions/registry.d.ts +9 -0
  43. package/dist/interactions/registry.js +33 -0
  44. package/dist/interactions/registry.js.map +1 -0
  45. package/dist/interactions/types.d.ts +28 -0
  46. package/dist/interactions/types.js +5 -0
  47. package/dist/interactions/types.js.map +1 -0
  48. package/dist/polls.d.ts +12 -0
  49. package/dist/polls.js +102 -0
  50. package/dist/polls.js.map +1 -0
  51. package/dist/runtime-report.d.ts +3 -0
  52. package/dist/runtime-report.js +10 -0
  53. package/dist/runtime-report.js.map +1 -0
  54. package/dist/types.d.ts +73 -0
  55. package/dist/types.js +2 -0
  56. package/dist/types.js.map +1 -0
  57. package/package.json +59 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imsg.js","sourceRoot":"","sources":["../../src/gateway/imsg.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import type { GroupChatResolution, GroupChatResolutionRequest } from './types.js';
2
+ /**
3
+ * The participant a DM GUID names.
4
+ *
5
+ * A DM GUID carries its peer structurally, so a caller never has to hand a raw
6
+ * handle to anything: the portable identifier IS the handle, already validated.
7
+ * Returns null when the value is not a canonical DM GUID.
8
+ */
9
+ export declare function dmParticipantFromConversationExternalId(conversationExternalId: string): string | null;
10
+ export type DmChatResolution = {
11
+ status: 'resolved';
12
+ chatId: number;
13
+ conversationExternalId: string;
14
+ } | {
15
+ status: 'invalid_request';
16
+ } | {
17
+ status: 'participant_mismatch';
18
+ } | {
19
+ status: 'not_found';
20
+ } | {
21
+ status: 'identity_mismatch';
22
+ };
23
+ /**
24
+ * Approve a DM only when two independently declared identities agree about it.
25
+ *
26
+ * The load-bearing check is `declaredParticipantExternalIds`, and it is easy to
27
+ * mistake for a redundant one: a DM GUID structurally encodes its peer, so the
28
+ * declared peer looks like a value already known. It is required precisely
29
+ * because the GUID encodes it. `resolveDmChat(peer)` returns the chat OF THAT
30
+ * PEER, whose `chat_guid` is `any;-;<peer>` by construction — so the round-trip
31
+ * below holds for EVERY canonical DM GUID, including a mistyped one that names a
32
+ * stranger just as validly. The round-trip is a consistency check on the Mac; it
33
+ * cannot be a check on the operator, because the peer it verifies is derived
34
+ * from the very GUID being verified.
35
+ *
36
+ * The second identity is what breaks that circle. It reaches this function from
37
+ * a different operator-supplied value, so a single mistyped digit in either one
38
+ * makes them disagree and the DM is refused. This mirrors the group arm, where
39
+ * the opaque 32-hex GUID carries no membership and the declared set is the
40
+ * independent channel.
41
+ */
42
+ export declare function classifyDmChatResolution(input: {
43
+ conversationExternalId: string;
44
+ declaredParticipantExternalIds: readonly string[];
45
+ resolvedChatId: number | null;
46
+ resolvedConversationExternalId: string | null;
47
+ }): DmChatResolution;
48
+ export interface LocalGroupChatDescriptor {
49
+ chatId: number;
50
+ conversationExternalId: string;
51
+ participantExternalIds: readonly string[] | null;
52
+ }
53
+ /**
54
+ * The comparison form for a participant identity.
55
+ *
56
+ * Exported so that every caller comparing two operator-supplied handles agrees
57
+ * on what "the same person" means: a raw `===` would read `Foo@Bar.com` and
58
+ * `foo@bar.com` as two different peers.
59
+ */
60
+ export declare function normalizeParticipant(value: string): string;
61
+ export declare function classifyGroupChatResolution(input: {
62
+ request: GroupChatResolutionRequest;
63
+ directoryComplete: boolean;
64
+ groups: readonly LocalGroupChatDescriptor[];
65
+ }): GroupChatResolution;
@@ -0,0 +1,118 @@
1
+ import { isImessageDmConversationExternalId, isImessageGroupConversationExternalId, isImessageParticipantExternalId, } from './external-ids.js';
2
+ const DM_GUID_PREFIX = 'any;-;';
3
+ /**
4
+ * The participant a DM GUID names.
5
+ *
6
+ * A DM GUID carries its peer structurally, so a caller never has to hand a raw
7
+ * handle to anything: the portable identifier IS the handle, already validated.
8
+ * Returns null when the value is not a canonical DM GUID.
9
+ */
10
+ export function dmParticipantFromConversationExternalId(conversationExternalId) {
11
+ if (!isImessageDmConversationExternalId(conversationExternalId))
12
+ return null;
13
+ return conversationExternalId.slice(DM_GUID_PREFIX.length);
14
+ }
15
+ /**
16
+ * Approve a DM only when two independently declared identities agree about it.
17
+ *
18
+ * The load-bearing check is `declaredParticipantExternalIds`, and it is easy to
19
+ * mistake for a redundant one: a DM GUID structurally encodes its peer, so the
20
+ * declared peer looks like a value already known. It is required precisely
21
+ * because the GUID encodes it. `resolveDmChat(peer)` returns the chat OF THAT
22
+ * PEER, whose `chat_guid` is `any;-;<peer>` by construction — so the round-trip
23
+ * below holds for EVERY canonical DM GUID, including a mistyped one that names a
24
+ * stranger just as validly. The round-trip is a consistency check on the Mac; it
25
+ * cannot be a check on the operator, because the peer it verifies is derived
26
+ * from the very GUID being verified.
27
+ *
28
+ * The second identity is what breaks that circle. It reaches this function from
29
+ * a different operator-supplied value, so a single mistyped digit in either one
30
+ * makes them disagree and the DM is refused. This mirrors the group arm, where
31
+ * the opaque 32-hex GUID carries no membership and the declared set is the
32
+ * independent channel.
33
+ */
34
+ export function classifyDmChatResolution(input) {
35
+ const participant = dmParticipantFromConversationExternalId(input.conversationExternalId);
36
+ if (participant === null)
37
+ return { status: 'invalid_request' };
38
+ const declared = normalizedSet(input.declaredParticipantExternalIds);
39
+ if (declared.length !== 1 || declared[0] !== normalizeParticipant(participant)) {
40
+ return { status: 'participant_mismatch' };
41
+ }
42
+ if (input.resolvedChatId === null)
43
+ return { status: 'not_found' };
44
+ // A Mac that answers `resolveDmChat(peer)` with a chat reporting some other
45
+ // peer's GUID is lying, and an unreadable identity is a mismatch rather than a
46
+ // pass: a DM whose GUID could not be read has not been proven to be the
47
+ // requested one. This catches the binary, never the operator.
48
+ if (input.resolvedConversationExternalId !== input.conversationExternalId)
49
+ return { status: 'identity_mismatch' };
50
+ return { status: 'resolved', chatId: input.resolvedChatId, conversationExternalId: input.conversationExternalId };
51
+ }
52
+ /**
53
+ * The comparison form for a participant identity.
54
+ *
55
+ * Exported so that every caller comparing two operator-supplied handles agrees
56
+ * on what "the same person" means: a raw `===` would read `Foo@Bar.com` and
57
+ * `foo@bar.com` as two different peers.
58
+ */
59
+ export function normalizeParticipant(value) {
60
+ return value.trim().toLowerCase().normalize('NFC');
61
+ }
62
+ function normalizedSet(values) {
63
+ return values.map(normalizeParticipant).sort();
64
+ }
65
+ function hasDuplicates(values) {
66
+ return new Set(values).size !== values.length;
67
+ }
68
+ function sameValues(left, right) {
69
+ return left.length === right.length && left.every((value, index) => value === right[index]);
70
+ }
71
+ function requestIsValid(request) {
72
+ if (!isImessageGroupConversationExternalId(request.conversationExternalId))
73
+ return false;
74
+ if (request.expectedParticipantExternalIds.length === 0)
75
+ return false;
76
+ const expected = normalizedSet(request.expectedParticipantExternalIds);
77
+ const excluded = normalizedSet(request.excludedParticipantExternalIds ?? []);
78
+ if (hasDuplicates(expected) || hasDuplicates(excluded))
79
+ return false;
80
+ if (![...expected, ...excluded].every((value) => isImessageParticipantExternalId(value))) {
81
+ return false;
82
+ }
83
+ const excludedSet = new Set(excluded);
84
+ return expected.every((value) => !excludedSet.has(value));
85
+ }
86
+ // The directory must be complete before any match is accepted: finding one
87
+ // row in a partial scan does not prove uniqueness. Participant equality is
88
+ // evaluated only after pod/self identities have been removed.
89
+ export function classifyGroupChatResolution(input) {
90
+ if (!requestIsValid(input.request))
91
+ return { status: 'invalid_request' };
92
+ if (!input.directoryComplete)
93
+ return { status: 'directory_incomplete' };
94
+ const matches = input.groups.filter((group) => group.conversationExternalId === input.request.conversationExternalId);
95
+ if (matches.length === 0)
96
+ return { status: 'not_found' };
97
+ if (matches.length !== 1)
98
+ return { status: 'ambiguous', matchCount: matches.length };
99
+ const reported = matches[0].participantExternalIds;
100
+ // Unknown membership is its own outcome. Folding it into participant_mismatch
101
+ // would turn "the adapter could not see the members" into "these are the wrong
102
+ // members", which is exactly how ops-chat resolution would fail closed for a
103
+ // correct chat and take matching down without saying why.
104
+ if (reported === null)
105
+ return { status: 'participant_directory_unavailable' };
106
+ const excluded = new Set(normalizedSet(input.request.excludedParticipantExternalIds ?? []));
107
+ const actual = normalizedSet(reported).filter((value) => !excluded.has(value));
108
+ const expected = normalizedSet(input.request.expectedParticipantExternalIds);
109
+ if (hasDuplicates(actual) || !sameValues(actual, expected)) {
110
+ return { status: 'participant_mismatch', actualParticipantCount: actual.length };
111
+ }
112
+ return {
113
+ status: 'resolved',
114
+ chatId: matches[0].chatId,
115
+ conversationExternalId: input.request.conversationExternalId,
116
+ };
117
+ }
118
+ //# sourceMappingURL=portable-chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-chat.js","sourceRoot":"","sources":["../../src/gateway/portable-chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,169 @@
1
+ import type { ImsgMessage, SendResult } from '../types.js';
2
+ export type { ImsgMessage, SendResult };
3
+ export declare const REACTIONS: readonly ["love", "like", "dislike", "laugh", "emphasis", "question"];
4
+ export type Reaction = (typeof REACTIONS)[number];
5
+ export declare function toReactionNoteType(type: string): Reaction | 'custom';
6
+ export type GatewayEvent = ImsgMessage;
7
+ export type SendTarget = {
8
+ chatId: number;
9
+ } | {
10
+ to: string;
11
+ };
12
+ export interface ReactResult {
13
+ ok: boolean;
14
+ skipped?: 'already-reacted' | 'stale-target' | 'not-reacted';
15
+ }
16
+ export interface ReactionNote {
17
+ id: number;
18
+ reaction: Reaction | 'custom';
19
+ emoji?: string;
20
+ }
21
+ export interface GroupChatResolutionRequest {
22
+ conversationExternalId: string;
23
+ expectedParticipantExternalIds: readonly string[];
24
+ excludedParticipantExternalIds?: readonly string[];
25
+ }
26
+ export interface GatewayChat {
27
+ chatId: number;
28
+ conversationExternalId: string;
29
+ isGroup: boolean;
30
+ participantExternalIds: readonly string[];
31
+ lastMessageAt: string | null;
32
+ }
33
+ export interface GatewayHistoryRange {
34
+ startAt?: string;
35
+ endBefore?: string;
36
+ limit?: number;
37
+ includeAttachments?: boolean;
38
+ }
39
+ export type GroupChatResolution = {
40
+ status: 'resolved';
41
+ chatId: number;
42
+ conversationExternalId: string;
43
+ } | {
44
+ status: 'invalid_request';
45
+ } | {
46
+ status: 'directory_incomplete';
47
+ } | {
48
+ status: 'not_found';
49
+ } | {
50
+ status: 'ambiguous';
51
+ matchCount: number;
52
+ } | {
53
+ status: 'participant_directory_unavailable';
54
+ } | {
55
+ status: 'participant_mismatch';
56
+ actualParticipantCount: number;
57
+ };
58
+ export interface GatewayCapabilities {
59
+ emojiTapback: boolean;
60
+ stickerSend: boolean;
61
+ groupPhoto: boolean;
62
+ groupParticipants: boolean;
63
+ namePhotoSharing: boolean;
64
+ }
65
+ export declare const PATCHED_GATEWAY_CAPABILITIES: GatewayCapabilities;
66
+ export interface NamePhotoShareResult {
67
+ ok: boolean;
68
+ skipped?: 'not-offered';
69
+ effectStarted?: boolean;
70
+ }
71
+ export type SendState = 'pending' | 'sent' | 'delivered' | 'failed';
72
+ export interface SendStatusFields {
73
+ is_sent: boolean;
74
+ is_delivered: boolean;
75
+ is_finished: boolean;
76
+ error: number;
77
+ date_delivered: string | null;
78
+ date_read: string | null;
79
+ is_delayed: boolean;
80
+ is_prepared: boolean;
81
+ is_pending_satellite_send: boolean;
82
+ was_downgraded: boolean;
83
+ }
84
+ export interface SendStatus {
85
+ ok: boolean;
86
+ guid: string;
87
+ send_state: SendState;
88
+ service: string | null;
89
+ delivered_at: string | null;
90
+ date_read: string | null;
91
+ is_read: boolean;
92
+ status_fields: SendStatusFields | null;
93
+ }
94
+ export interface HandleCheck {
95
+ ok: boolean;
96
+ available: boolean;
97
+ idStatus: number;
98
+ destination: string;
99
+ service: 'iMessage';
100
+ aliasType: 'phone' | 'email' | null;
101
+ address: string;
102
+ }
103
+ export interface Gateway {
104
+ readonly capabilities: GatewayCapabilities;
105
+ subscribe(sinceId?: number): AsyncIterable<GatewayEvent>;
106
+ history(chatId: number, limit?: number): Promise<ImsgMessage[]>;
107
+ listChats(limit?: number): Promise<GatewayChat[]>;
108
+ historyRange(chatId: number, range: GatewayHistoryRange): Promise<ImsgMessage[]>;
109
+ send(target: SendTarget, text: string): Promise<SendResult>;
110
+ react(chatId: number, reaction: Reaction, expectedGuid?: string): Promise<ReactResult>;
111
+ createGroup(handles: string[], firstMessage: string): Promise<{
112
+ chatId: number;
113
+ }>;
114
+ recentReactions(chatId: number, limit?: number): Promise<ReactionNote[]>;
115
+ resolveDmChat(handle: string): Promise<number | null>;
116
+ resolveGroupChat(request: GroupChatResolutionRequest): Promise<GroupChatResolution>;
117
+ sendStatus(guid: string): Promise<SendStatus>;
118
+ checkHandle(address: string, opts?: {
119
+ aliasType?: 'phone' | 'email';
120
+ }): Promise<HandleCheck>;
121
+ tapback(chatId: number, targetGuid: string, reaction: Reaction, remove?: boolean): Promise<ReactResult>;
122
+ emojiTapback(chatId: number, targetGuid: string, emoji: string, remove?: boolean): Promise<ReactResult>;
123
+ sendRich(chatId: number, text: string, opts?: {
124
+ effect?: string;
125
+ replyToGuid?: string;
126
+ subject?: string;
127
+ }): Promise<SendResult>;
128
+ sendAttachment(chatId: number, filePath: string, opts?: {
129
+ audio?: boolean;
130
+ replyToGuid?: string;
131
+ }): Promise<SendResult>;
132
+ sendSticker(chatId: number, filePath: string, opts?: {
133
+ attachToGuid?: string;
134
+ partIndex?: number;
135
+ }): Promise<SendResult>;
136
+ sendPoll(chatId: number, question: string, options: string[]): Promise<SendResult>;
137
+ sendRichLink(chatId: number, url: string): Promise<SendResult>;
138
+ editMessage(chatId: number, targetGuid: string, text: string): Promise<{
139
+ ok: boolean;
140
+ }>;
141
+ unsendMessage(chatId: number, targetGuid: string): Promise<{
142
+ ok: boolean;
143
+ }>;
144
+ deleteMessage(chatId: number, targetGuid: string): Promise<{
145
+ ok: boolean;
146
+ }>;
147
+ setTyping(chatId: number, on: boolean): Promise<{
148
+ ok: boolean;
149
+ }>;
150
+ markRead(chatId: number): Promise<{
151
+ ok: boolean;
152
+ }>;
153
+ renameGroup(chatId: number, name: string): Promise<{
154
+ ok: boolean;
155
+ }>;
156
+ setGroupPhoto(chatId: number, filePath?: string): Promise<{
157
+ ok: boolean;
158
+ }>;
159
+ addParticipant(chatId: number, handle: string): Promise<{
160
+ ok: boolean;
161
+ }>;
162
+ removeParticipant(chatId: number, handle: string): Promise<{
163
+ ok: boolean;
164
+ }>;
165
+ leaveGroup(chatId: number): Promise<{
166
+ ok: boolean;
167
+ }>;
168
+ shareNamePhoto(chatId: number): Promise<NamePhotoShareResult>;
169
+ }
@@ -0,0 +1,16 @@
1
+ // The tapback vocabulary belongs to the contract, not to any one
2
+ // implementation: react() below is typed on it, and FakeGateway has to honor
3
+ // the same six with no AppleScript in sight.
4
+ export const REACTIONS = ['love', 'like', 'dislike', 'laugh', 'emphasis', 'question'];
5
+ const KNOWN_REACTIONS = new Set(REACTIONS);
6
+ export function toReactionNoteType(type) {
7
+ return (KNOWN_REACTIONS.has(type) ? type : 'custom');
8
+ }
9
+ export const PATCHED_GATEWAY_CAPABILITIES = {
10
+ emojiTapback: true,
11
+ stickerSend: true,
12
+ groupPhoto: true,
13
+ groupParticipants: true,
14
+ namePhotoSharing: true,
15
+ };
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/gateway/types.ts"],"names":[],"mappings":"AAOA,iEAAiE;AACjE,6EAA6E;AAC7E,6CAA6C;AAC7C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;AAG/F,MAAM,eAAe,GAAG,IAAI,GAAG,CAAS,SAAS,CAAC,CAAC;AAEnD,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAwB,CAAC;AAC9E,CAAC;AAwFD,MAAM,CAAC,MAAM,4BAA4B,GAAwB;IAC/D,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,IAAI;IAChB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;CACvB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function imsgBinary(): string;
@@ -0,0 +1,4 @@
1
+ export function imsgBinary() {
2
+ return process.env.IMSG_BIN || 'imsg';
3
+ }
4
+ //# sourceMappingURL=binary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/imsg/binary.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC;AACxC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Reaction } from '../gateway/types.js';
2
+ export declare function sendReaction(handle: string, reaction: Reaction): Promise<void>;
@@ -0,0 +1,24 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { fileURLToPath } from 'node:url';
3
+ const REACT_SCRIPT = fileURLToPath(new URL('../../scripts/react.applescript', import.meta.url));
4
+ const TAPBACK_KEY = {
5
+ love: '1',
6
+ like: '2',
7
+ dislike: '3',
8
+ laugh: '4',
9
+ emphasis: '5',
10
+ question: '6',
11
+ };
12
+ // Our own Messages.app automation (scripts/react.applescript), NOT
13
+ // `imsg react`: that CLI fires Cmd+T into whatever chat is focused when its
14
+ // 0.25s search-select race loses — observed live 2026-07-02 tapbacking an
15
+ // unrelated thread. Ours verifies the focused window title against the
16
+ // handle and aborts (rejects here) instead of misfiring. DM-only; targets
17
+ // the most recent incoming message; needs an unlocked GUI session plus
18
+ // Accessibility + Automation permissions.
19
+ export function sendReaction(handle, reaction) {
20
+ return new Promise((resolve, reject) => {
21
+ execFile('osascript', [REACT_SCRIPT, handle, TAPBACK_KEY[reaction]], { timeout: 30_000 }, (err) => err ? reject(err) : resolve());
22
+ });
23
+ }
24
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/imsg/react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEhG,MAAM,WAAW,GAA6B;IAC5C,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;CACd,CAAC;AAEF,mEAAmE;AACnE,4EAA4E;AAC5E,0EAA0E;AAC1E,uEAAuE;AACvE,0EAA0E;AAC1E,uEAAuE;AACvE,0CAA0C;AAC1C,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,QAAkB;IAC7D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAChG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,145 @@
1
+ import type { Reaction } from '../gateway/types.js';
2
+ import type { ImsgMessage, MessagePoll, SendResult } from '../types.js';
3
+ export interface Chat {
4
+ id: number;
5
+ guid?: string;
6
+ is_group: boolean;
7
+ participants?: string[];
8
+ last_message_at?: string;
9
+ display_name?: string;
10
+ }
11
+ interface NamePhotoStatus {
12
+ ok: boolean;
13
+ available: boolean;
14
+ should_offer?: boolean | null;
15
+ }
16
+ interface NamePhotoShare {
17
+ ok: boolean;
18
+ requested: boolean;
19
+ }
20
+ interface PollSendResponse {
21
+ guid: string;
22
+ message_id?: string;
23
+ poll?: MessagePoll;
24
+ }
25
+ export type SendState = 'pending' | 'sent' | 'delivered' | 'failed';
26
+ export interface SendStatusFields {
27
+ is_sent: boolean;
28
+ is_delivered: boolean;
29
+ is_finished: boolean;
30
+ error: number;
31
+ date_delivered: string | null;
32
+ date_read: string | null;
33
+ is_delayed: boolean;
34
+ is_prepared: boolean;
35
+ is_pending_satellite_send: boolean;
36
+ was_downgraded: boolean;
37
+ }
38
+ export interface SendStatusResponse {
39
+ ok: boolean;
40
+ guid: string;
41
+ send_state: SendState;
42
+ service: string;
43
+ checked_at: string;
44
+ delivered_at: string | null;
45
+ status_fields: SendStatusFields | null;
46
+ }
47
+ export interface HandleCheckResponse {
48
+ ok: boolean;
49
+ address: string;
50
+ alias_type: 'phone' | 'email';
51
+ destination: string;
52
+ id_status: number;
53
+ available: boolean;
54
+ service: 'iMessage';
55
+ }
56
+ export interface StickerSendResponse {
57
+ ok: boolean;
58
+ transfer_guid: string;
59
+ guid?: string;
60
+ message_id?: number;
61
+ }
62
+ export interface HistoryRangeOptions {
63
+ startAt?: string;
64
+ endBefore?: string;
65
+ limit?: number;
66
+ includeAttachments?: boolean;
67
+ }
68
+ export declare class ImsgRpc {
69
+ private onMessage;
70
+ private child;
71
+ private nextId;
72
+ private pending;
73
+ private stopping;
74
+ constructor(onMessage: (msg: ImsgMessage) => void, onExit: (code: number | null) => void);
75
+ private handleLine;
76
+ request<T>(method: string, params?: object): Promise<T>;
77
+ subscribe(sinceRowid?: number): Promise<number>;
78
+ send(target: {
79
+ chatId: number;
80
+ } | {
81
+ to: string;
82
+ }, text: string): Promise<SendResult>;
83
+ history(chatId: number, limit?: number): Promise<ImsgMessage[]>;
84
+ historyRange(chatId: number, options: HistoryRangeOptions): Promise<ImsgMessage[]>;
85
+ chats(limit?: number): Promise<Chat[]>;
86
+ tapback(chatId: number, targetGuid: string, reaction: Reaction, remove?: boolean): Promise<{
87
+ ok: boolean;
88
+ }>;
89
+ emojiTapback(chatId: number, targetGuid: string, emoji: string, remove?: boolean): Promise<{
90
+ ok: boolean;
91
+ }>;
92
+ sendRich(chatId: number, text: string, opts?: {
93
+ effect?: string;
94
+ replyToGuid?: string;
95
+ subject?: string;
96
+ }): Promise<SendResult>;
97
+ sendAttachment(chatId: number, filePath: string, opts?: {
98
+ audio?: boolean;
99
+ replyToGuid?: string;
100
+ }): Promise<SendResult>;
101
+ messageSendStatus(guid: string): Promise<SendStatusResponse>;
102
+ checkHandle(address: string, opts?: {
103
+ aliasType?: 'phone' | 'email';
104
+ }): Promise<HandleCheckResponse>;
105
+ sendSticker(chatId: number, filePath: string, opts?: {
106
+ attachToGuid?: string;
107
+ partIndex?: number;
108
+ }): Promise<StickerSendResponse>;
109
+ sendPoll(chatId: number, question: string, options: string[]): Promise<PollSendResponse>;
110
+ sendRichLink(chatId: number, url: string): Promise<SendResult>;
111
+ editMessage(chatId: number, targetGuid: string, text: string): Promise<{
112
+ ok: boolean;
113
+ }>;
114
+ unsendMessage(chatId: number, targetGuid: string): Promise<{
115
+ ok: boolean;
116
+ }>;
117
+ deleteMessage(chatId: number, targetGuid: string): Promise<{
118
+ ok: boolean;
119
+ }>;
120
+ setTyping(chatId: number, on: boolean): Promise<{
121
+ ok: boolean;
122
+ }>;
123
+ markRead(chatId: number): Promise<{
124
+ ok: boolean;
125
+ }>;
126
+ renameGroup(chatId: number, name: string): Promise<{
127
+ ok: boolean;
128
+ }>;
129
+ setGroupPhoto(chatId: number, filePath?: string): Promise<{
130
+ ok: boolean;
131
+ }>;
132
+ addParticipant(chatId: number, handle: string): Promise<{
133
+ ok: boolean;
134
+ }>;
135
+ removeParticipant(chatId: number, handle: string): Promise<{
136
+ ok: boolean;
137
+ }>;
138
+ leaveGroup(chatId: number): Promise<{
139
+ ok: boolean;
140
+ }>;
141
+ namePhotoStatus(chatId: number): Promise<NamePhotoStatus>;
142
+ shareNamePhoto(chatId: number): Promise<NamePhotoShare>;
143
+ stop(): void;
144
+ }
145
+ export {};