@elizaos/plugin-imessage 2.0.0-beta.1 → 2.0.3-beta.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/LICENSE +21 -0
- package/README.md +13 -18
- package/auto-enable.ts +1 -1
- package/package.json +21 -4
- package/dist/accounts.d.ts +0 -135
- package/dist/accounts.d.ts.map +0 -1
- package/dist/accounts.js +0 -209
- package/dist/accounts.js.map +0 -1
- package/dist/api/bluebubbles-routes.d.ts +0 -10
- package/dist/api/bluebubbles-routes.d.ts.map +0 -1
- package/dist/api/bluebubbles-routes.js +0 -132
- package/dist/api/bluebubbles-routes.js.map +0 -1
- package/dist/api/imessage-routes.d.ts +0 -80
- package/dist/api/imessage-routes.d.ts.map +0 -1
- package/dist/api/imessage-routes.js +0 -230
- package/dist/api/imessage-routes.js.map +0 -1
- package/dist/chatdb-reader.d.ts +0 -240
- package/dist/chatdb-reader.d.ts.map +0 -1
- package/dist/chatdb-reader.js +0 -647
- package/dist/chatdb-reader.js.map +0 -1
- package/dist/config.d.ts +0 -60
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -8
- package/dist/config.js.map +0 -1
- package/dist/connector-account-provider.d.ts +0 -18
- package/dist/connector-account-provider.d.ts.map +0 -1
- package/dist/connector-account-provider.js +0 -83
- package/dist/connector-account-provider.js.map +0 -1
- package/dist/contacts-reader.d.ts +0 -147
- package/dist/contacts-reader.d.ts.map +0 -1
- package/dist/contacts-reader.js +0 -481
- package/dist/contacts-reader.js.map +0 -1
- package/dist/index.d.ts +0 -23
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -78
- package/dist/index.js.map +0 -1
- package/dist/providers/index.d.ts +0 -4
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js +0 -5
- package/dist/providers/index.js.map +0 -1
- package/dist/rpc.d.ts +0 -206
- package/dist/rpc.d.ts.map +0 -1
- package/dist/rpc.js +0 -393
- package/dist/rpc.js.map +0 -1
- package/dist/service.d.ts +0 -266
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -1694
- package/dist/service.js.map +0 -1
- package/dist/setup-routes.d.ts +0 -38
- package/dist/setup-routes.d.ts.map +0 -1
- package/dist/setup-routes.js +0 -322
- package/dist/setup-routes.js.map +0 -1
- package/dist/types.d.ts +0 -192
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -138
- package/dist/types.js.map +0 -1
package/dist/types.d.ts
DELETED
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type definitions for the iMessage plugin.
|
|
3
|
-
*/
|
|
4
|
-
import type { Service } from "@elizaos/core";
|
|
5
|
-
/** Maximum message length for iMessage */
|
|
6
|
-
export declare const MAX_IMESSAGE_MESSAGE_LENGTH = 4000;
|
|
7
|
-
/** Default poll interval in ms */
|
|
8
|
-
export declare const DEFAULT_POLL_INTERVAL_MS = 5000;
|
|
9
|
-
/** iMessage service name constant */
|
|
10
|
-
export declare const IMESSAGE_SERVICE_NAME = "imessage";
|
|
11
|
-
/**
|
|
12
|
-
* Event types emitted by the iMessage plugin
|
|
13
|
-
*/
|
|
14
|
-
export declare const IMessageEventTypes: {
|
|
15
|
-
readonly MESSAGE_RECEIVED: "IMESSAGE_MESSAGE_RECEIVED";
|
|
16
|
-
readonly MESSAGE_SENT: "IMESSAGE_MESSAGE_SENT";
|
|
17
|
-
readonly REACTION_RECEIVED: "IMESSAGE_REACTION_RECEIVED";
|
|
18
|
-
readonly SYSTEM_EVENT: "IMESSAGE_SYSTEM_EVENT";
|
|
19
|
-
readonly CONNECTION_READY: "IMESSAGE_CONNECTION_READY";
|
|
20
|
-
readonly ERROR: "IMESSAGE_ERROR";
|
|
21
|
-
};
|
|
22
|
-
export type IMessageEventType = (typeof IMessageEventTypes)[keyof typeof IMessageEventTypes];
|
|
23
|
-
/**
|
|
24
|
-
* iMessage chat types
|
|
25
|
-
*/
|
|
26
|
-
export type IMessageChatType = "direct" | "group";
|
|
27
|
-
/**
|
|
28
|
-
* Configuration settings for the iMessage plugin
|
|
29
|
-
*/
|
|
30
|
-
export interface IMessageSettings {
|
|
31
|
-
/** Path to iMessage CLI tool */
|
|
32
|
-
cliPath: string;
|
|
33
|
-
/** Path to iMessage database */
|
|
34
|
-
dbPath?: string;
|
|
35
|
-
/** Polling interval in ms */
|
|
36
|
-
pollIntervalMs: number;
|
|
37
|
-
/** DM policy */
|
|
38
|
-
dmPolicy: "open" | "pairing" | "allowlist" | "disabled";
|
|
39
|
-
/** Group policy */
|
|
40
|
-
groupPolicy: "open" | "allowlist" | "disabled";
|
|
41
|
-
/** Handles/phone numbers for allowlist */
|
|
42
|
-
allowFrom: string[];
|
|
43
|
-
/** Enable/disable the plugin */
|
|
44
|
-
enabled: boolean;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* iMessage contact
|
|
48
|
-
*/
|
|
49
|
-
export interface IMessageContact {
|
|
50
|
-
/** Handle (phone number or email) */
|
|
51
|
-
handle: string;
|
|
52
|
-
/** Display name */
|
|
53
|
-
displayName?: string;
|
|
54
|
-
/** Is this a phone number? */
|
|
55
|
-
isPhoneNumber: boolean;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* iMessage chat
|
|
59
|
-
*/
|
|
60
|
-
export interface IMessageChat {
|
|
61
|
-
/** Chat ID */
|
|
62
|
-
chatId: string;
|
|
63
|
-
/** Chat type */
|
|
64
|
-
chatType: IMessageChatType;
|
|
65
|
-
/** Display name */
|
|
66
|
-
displayName?: string;
|
|
67
|
-
/** Participants */
|
|
68
|
-
participants: IMessageContact[];
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* iMessage message
|
|
72
|
-
*/
|
|
73
|
-
export interface IMessageMessage {
|
|
74
|
-
/** Message ID (ROWID) */
|
|
75
|
-
id: string;
|
|
76
|
-
/** Message text */
|
|
77
|
-
text: string;
|
|
78
|
-
/** Sender handle */
|
|
79
|
-
handle: string;
|
|
80
|
-
/** Chat ID */
|
|
81
|
-
chatId: string;
|
|
82
|
-
/** Timestamp */
|
|
83
|
-
timestamp: number;
|
|
84
|
-
/** Is from me */
|
|
85
|
-
isFromMe: boolean;
|
|
86
|
-
/** Has attachments */
|
|
87
|
-
hasAttachments: boolean;
|
|
88
|
-
/** Attachment paths */
|
|
89
|
-
attachmentPaths?: string[];
|
|
90
|
-
}
|
|
91
|
-
export interface IMessageListMessagesOptions {
|
|
92
|
-
/** Return only messages from this chat identifier. */
|
|
93
|
-
chatId?: string;
|
|
94
|
-
/** Maximum number of rows to return. */
|
|
95
|
-
limit?: number;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Options for sending a message
|
|
99
|
-
*/
|
|
100
|
-
export interface IMessageSendOptions {
|
|
101
|
-
/** Connector account ID. iMessage currently supports only the local default account. */
|
|
102
|
-
accountId?: string;
|
|
103
|
-
/** Media URL or path to attach */
|
|
104
|
-
mediaUrl?: string;
|
|
105
|
-
/** Max bytes for media */
|
|
106
|
-
maxBytes?: number;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Result from sending a message
|
|
110
|
-
*/
|
|
111
|
-
export interface IMessageSendResult {
|
|
112
|
-
success: boolean;
|
|
113
|
-
messageId?: string;
|
|
114
|
-
chatId?: string;
|
|
115
|
-
error?: string;
|
|
116
|
-
}
|
|
117
|
-
export interface IMessagePermissionAction {
|
|
118
|
-
type: "full_disk_access";
|
|
119
|
-
label: string;
|
|
120
|
-
url: string;
|
|
121
|
-
instructions: string[];
|
|
122
|
-
}
|
|
123
|
-
export interface IMessageServiceStatus {
|
|
124
|
-
available: boolean;
|
|
125
|
-
connected: boolean;
|
|
126
|
-
chatDbAvailable: boolean;
|
|
127
|
-
sendOnly: boolean;
|
|
128
|
-
chatDbPath: string;
|
|
129
|
-
reason: string | null;
|
|
130
|
-
permissionAction: IMessagePermissionAction | null;
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Service interface for iMessage
|
|
134
|
-
*/
|
|
135
|
-
export interface IIMessageService extends Service {
|
|
136
|
-
/** Check if the service is connected */
|
|
137
|
-
isConnected(): boolean;
|
|
138
|
-
/** Get structured readiness for UI/API callers */
|
|
139
|
-
getStatus(): IMessageServiceStatus;
|
|
140
|
-
/** Check if running on macOS */
|
|
141
|
-
isMacOS(): boolean;
|
|
142
|
-
/** Send a message */
|
|
143
|
-
sendMessage(to: string, text: string, options?: IMessageSendOptions): Promise<IMessageSendResult>;
|
|
144
|
-
/** Get recent messages */
|
|
145
|
-
getRecentMessages(limit?: number): Promise<IMessageMessage[]>;
|
|
146
|
-
/** List newest messages, optionally filtered to one chat. */
|
|
147
|
-
getMessages(options?: IMessageListMessagesOptions): Promise<IMessageMessage[]>;
|
|
148
|
-
/** Get chats */
|
|
149
|
-
getChats(): Promise<IMessageChat[]>;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* iMessage plugin errors
|
|
153
|
-
*/
|
|
154
|
-
export declare class IMessagePluginError extends Error {
|
|
155
|
-
readonly code: string;
|
|
156
|
-
readonly details?: Record<string, unknown> | undefined;
|
|
157
|
-
constructor(message: string, code: string, details?: Record<string, unknown> | undefined);
|
|
158
|
-
}
|
|
159
|
-
export declare class IMessageConfigurationError extends IMessagePluginError {
|
|
160
|
-
constructor(message: string, setting?: string);
|
|
161
|
-
}
|
|
162
|
-
export declare class IMessageNotSupportedError extends IMessagePluginError {
|
|
163
|
-
constructor(message?: string);
|
|
164
|
-
}
|
|
165
|
-
export declare class IMessageCliError extends IMessagePluginError {
|
|
166
|
-
constructor(message: string, exitCode?: number);
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Check if a string looks like a phone number
|
|
170
|
-
*/
|
|
171
|
-
export declare function isPhoneNumber(input: string): boolean;
|
|
172
|
-
/**
|
|
173
|
-
* Check if a string looks like an email
|
|
174
|
-
*/
|
|
175
|
-
export declare function isEmail(input: string): boolean;
|
|
176
|
-
/**
|
|
177
|
-
* Check if a string is a valid iMessage target (phone or email)
|
|
178
|
-
*/
|
|
179
|
-
export declare function isValidIMessageTarget(target: string): boolean;
|
|
180
|
-
/**
|
|
181
|
-
* Normalize an iMessage target
|
|
182
|
-
*/
|
|
183
|
-
export declare function normalizeIMessageTarget(target: string): string | null;
|
|
184
|
-
/**
|
|
185
|
-
* Format a phone number for iMessage
|
|
186
|
-
*/
|
|
187
|
-
export declare function formatPhoneNumber(phone: string): string;
|
|
188
|
-
/**
|
|
189
|
-
* Split text for iMessage
|
|
190
|
-
*/
|
|
191
|
-
export declare function splitMessageForIMessage(text: string, maxLength?: number): string[];
|
|
192
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,0CAA0C;AAC1C,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD,kCAAkC;AAClC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,qCAAqC;AACrC,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;CAOrB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE7F;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IACxD,mBAAmB;IACnB,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;IAC/C,0CAA0C;IAC1C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB;IACnB,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,sBAAsB;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,gBAAgB,EAAE,wBAAwB,GAAG,IAAI,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,OAAO;IAC/C,wCAAwC;IACxC,WAAW,IAAI,OAAO,CAAC;IAEvB,kDAAkD;IAClD,SAAS,IAAI,qBAAqB,CAAC;IAEnC,gCAAgC;IAChC,OAAO,IAAI,OAAO,CAAC;IAEnB,qBAAqB;IACrB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAElG,0BAA0B;IAC1B,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAE9D,6DAA6D;IAC7D,WAAW,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAE/E,gBAAgB;IAChB,QAAQ,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAG1B,IAAI,EAAE,MAAM;aACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjD,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAKpD;AAED,qBAAa,0BAA2B,SAAQ,mBAAmB;gBACrD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAI9C;AAED,qBAAa,yBAA0B,SAAQ,mBAAmB;gBACpD,OAAO,GAAE,MAA8C;CAIpE;AAED,qBAAa,gBAAiB,SAAQ,mBAAmB;gBAC3C,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAI/C;AAID;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKpD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAG7D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkBrE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUvD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,MAAoC,GAC9C,MAAM,EAAE,CAiCV"}
|
package/dist/types.js
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type definitions for the iMessage plugin.
|
|
3
|
-
*/
|
|
4
|
-
/** Maximum message length for iMessage */
|
|
5
|
-
export const MAX_IMESSAGE_MESSAGE_LENGTH = 4000;
|
|
6
|
-
/** Default poll interval in ms */
|
|
7
|
-
export const DEFAULT_POLL_INTERVAL_MS = 5000;
|
|
8
|
-
/** iMessage service name constant */
|
|
9
|
-
export const IMESSAGE_SERVICE_NAME = "imessage";
|
|
10
|
-
/**
|
|
11
|
-
* Event types emitted by the iMessage plugin
|
|
12
|
-
*/
|
|
13
|
-
export const IMessageEventTypes = {
|
|
14
|
-
MESSAGE_RECEIVED: "IMESSAGE_MESSAGE_RECEIVED",
|
|
15
|
-
MESSAGE_SENT: "IMESSAGE_MESSAGE_SENT",
|
|
16
|
-
REACTION_RECEIVED: "IMESSAGE_REACTION_RECEIVED",
|
|
17
|
-
SYSTEM_EVENT: "IMESSAGE_SYSTEM_EVENT",
|
|
18
|
-
CONNECTION_READY: "IMESSAGE_CONNECTION_READY",
|
|
19
|
-
ERROR: "IMESSAGE_ERROR",
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* iMessage plugin errors
|
|
23
|
-
*/
|
|
24
|
-
export class IMessagePluginError extends Error {
|
|
25
|
-
code;
|
|
26
|
-
details;
|
|
27
|
-
constructor(message, code, details) {
|
|
28
|
-
super(message);
|
|
29
|
-
this.code = code;
|
|
30
|
-
this.details = details;
|
|
31
|
-
this.name = "IMessagePluginError";
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
export class IMessageConfigurationError extends IMessagePluginError {
|
|
35
|
-
constructor(message, setting) {
|
|
36
|
-
super(message, "CONFIGURATION_ERROR", setting ? { setting } : undefined);
|
|
37
|
-
this.name = "IMessageConfigurationError";
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
export class IMessageNotSupportedError extends IMessagePluginError {
|
|
41
|
-
constructor(message = "iMessage is only supported on macOS") {
|
|
42
|
-
super(message, "NOT_SUPPORTED");
|
|
43
|
-
this.name = "IMessageNotSupportedError";
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
export class IMessageCliError extends IMessagePluginError {
|
|
47
|
-
constructor(message, exitCode) {
|
|
48
|
-
super(message, "CLI_ERROR", exitCode !== undefined ? { exitCode } : undefined);
|
|
49
|
-
this.name = "IMessageCliError";
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
// Utility functions
|
|
53
|
-
/**
|
|
54
|
-
* Check if a string looks like a phone number
|
|
55
|
-
*/
|
|
56
|
-
export function isPhoneNumber(input) {
|
|
57
|
-
// Remove common formatting
|
|
58
|
-
const cleaned = input.replace(/[\s\-().]/g, "");
|
|
59
|
-
// Check if it's a phone number pattern
|
|
60
|
-
return /^\+?\d{10,15}$/.test(cleaned);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Check if a string looks like an email
|
|
64
|
-
*/
|
|
65
|
-
export function isEmail(input) {
|
|
66
|
-
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(input);
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Check if a string is a valid iMessage target (phone or email)
|
|
70
|
-
*/
|
|
71
|
-
export function isValidIMessageTarget(target) {
|
|
72
|
-
const trimmed = target.trim();
|
|
73
|
-
return isPhoneNumber(trimmed) || isEmail(trimmed) || trimmed.startsWith("chat_id:");
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Normalize an iMessage target
|
|
77
|
-
*/
|
|
78
|
-
export function normalizeIMessageTarget(target) {
|
|
79
|
-
const trimmed = target.trim();
|
|
80
|
-
if (!trimmed) {
|
|
81
|
-
return null;
|
|
82
|
-
}
|
|
83
|
-
// Handle chat_id: prefix
|
|
84
|
-
if (trimmed.startsWith("chat_id:")) {
|
|
85
|
-
return trimmed;
|
|
86
|
-
}
|
|
87
|
-
// Handle imessage: prefix
|
|
88
|
-
if (trimmed.toLowerCase().startsWith("imessage:")) {
|
|
89
|
-
return trimmed.slice(9).trim();
|
|
90
|
-
}
|
|
91
|
-
// Return as-is for phone numbers and emails
|
|
92
|
-
return trimmed;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Format a phone number for iMessage
|
|
96
|
-
*/
|
|
97
|
-
export function formatPhoneNumber(phone) {
|
|
98
|
-
// Remove formatting
|
|
99
|
-
let cleaned = phone.replace(/[\s\-().]/g, "");
|
|
100
|
-
// Add + prefix if missing for international
|
|
101
|
-
if (cleaned.length > 10 && !cleaned.startsWith("+")) {
|
|
102
|
-
cleaned = `+${cleaned}`;
|
|
103
|
-
}
|
|
104
|
-
return cleaned;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Split text for iMessage
|
|
108
|
-
*/
|
|
109
|
-
export function splitMessageForIMessage(text, maxLength = MAX_IMESSAGE_MESSAGE_LENGTH) {
|
|
110
|
-
if (text.length <= maxLength) {
|
|
111
|
-
return [text];
|
|
112
|
-
}
|
|
113
|
-
const chunks = [];
|
|
114
|
-
let remaining = text;
|
|
115
|
-
while (remaining.length > 0) {
|
|
116
|
-
if (remaining.length <= maxLength) {
|
|
117
|
-
chunks.push(remaining);
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
let breakPoint = maxLength;
|
|
121
|
-
// Try newline first
|
|
122
|
-
const newlineIdx = remaining.lastIndexOf("\n", maxLength);
|
|
123
|
-
if (newlineIdx > maxLength / 2) {
|
|
124
|
-
breakPoint = newlineIdx + 1;
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
// Try space
|
|
128
|
-
const spaceIdx = remaining.lastIndexOf(" ", maxLength);
|
|
129
|
-
if (spaceIdx > maxLength / 2) {
|
|
130
|
-
breakPoint = spaceIdx + 1;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
chunks.push(remaining.slice(0, breakPoint).trimEnd());
|
|
134
|
-
remaining = remaining.slice(breakPoint).trimStart();
|
|
135
|
-
}
|
|
136
|
-
return chunks;
|
|
137
|
-
}
|
|
138
|
-
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|