@wirecat/whatsapp-cli 0.1.0 → 0.3.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.
- package/README.md +213 -94
- package/dist/adapter/adapter.d.ts +8 -4
- package/dist/adapter/adapter.d.ts.map +1 -1
- package/dist/adapter/adapter.js +349 -90
- package/dist/adapter/adapter.js.map +1 -1
- package/dist/adapter/channels.d.ts +43 -0
- package/dist/adapter/channels.d.ts.map +1 -0
- package/dist/adapter/channels.js +100 -0
- package/dist/adapter/channels.js.map +1 -0
- package/dist/adapter/checks.d.ts +2 -3
- package/dist/adapter/checks.d.ts.map +1 -1
- package/dist/adapter/checks.js +1 -2
- package/dist/adapter/checks.js.map +1 -1
- package/dist/adapter/errors.d.ts +0 -5
- package/dist/adapter/errors.d.ts.map +1 -1
- package/dist/adapter/errors.js +7 -9
- package/dist/adapter/errors.js.map +1 -1
- package/dist/adapter/groups.d.ts +5 -1
- package/dist/adapter/groups.d.ts.map +1 -1
- package/dist/adapter/groups.js +51 -9
- package/dist/adapter/groups.js.map +1 -1
- package/dist/adapter/map.d.ts +17 -2
- package/dist/adapter/map.d.ts.map +1 -1
- package/dist/adapter/map.js +68 -7
- package/dist/adapter/map.js.map +1 -1
- package/dist/adapter/pins.d.ts +11 -0
- package/dist/adapter/pins.d.ts.map +1 -0
- package/dist/adapter/pins.js +10 -0
- package/dist/adapter/pins.js.map +1 -0
- package/dist/adapter/polls.d.ts +1 -1
- package/dist/adapter/polls.d.ts.map +1 -1
- package/dist/adapter/polls.js +2 -2
- package/dist/adapter/polls.js.map +1 -1
- package/dist/adapter/privacy.d.ts +18 -0
- package/dist/adapter/privacy.d.ts.map +1 -0
- package/dist/adapter/privacy.js +94 -0
- package/dist/adapter/privacy.js.map +1 -0
- package/dist/adapter/settings.d.ts +21 -0
- package/dist/adapter/settings.d.ts.map +1 -0
- package/dist/adapter/settings.js +76 -0
- package/dist/adapter/settings.js.map +1 -0
- package/dist/bin/wa.js +0 -13
- package/dist/bin/wa.js.map +1 -1
- package/dist/commands/session.d.ts +18 -7
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +92 -93
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +77 -129
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +3 -22
- package/dist/commands/update.js.map +1 -1
- package/dist/engine/channels.d.ts +109 -0
- package/dist/engine/channels.d.ts.map +1 -0
- package/dist/engine/channels.js +29 -0
- package/dist/engine/channels.js.map +1 -0
- package/dist/engine/contract.d.ts +617 -43
- package/dist/engine/contract.d.ts.map +1 -1
- package/dist/engine/contract.js +226 -11
- package/dist/engine/contract.js.map +1 -1
- package/dist/engine/go-engine.d.ts.map +1 -1
- package/dist/engine/go-engine.js +23 -34
- package/dist/engine/go-engine.js.map +1 -1
- package/dist/engine/groups.d.ts +32 -14
- package/dist/engine/groups.d.ts.map +1 -1
- package/dist/engine/groups.js +2 -0
- package/dist/engine/groups.js.map +1 -1
- package/dist/engine/privacy.d.ts +33 -0
- package/dist/engine/privacy.d.ts.map +1 -0
- package/dist/engine/privacy.js +23 -0
- package/dist/engine/privacy.js.map +1 -0
- package/dist/engine/settings.d.ts +45 -0
- package/dist/engine/settings.d.ts.map +1 -0
- package/dist/engine/settings.js +34 -0
- package/dist/engine/settings.js.map +1 -0
- package/dist/install/postinstall.d.ts.map +1 -1
- package/dist/install/postinstall.js +4 -3
- package/dist/install/postinstall.js.map +1 -1
- package/dist/messenger.d.ts +3 -4
- package/dist/messenger.d.ts.map +1 -1
- package/dist/messenger.js +31 -14
- package/dist/messenger.js.map +1 -1
- package/dist/program.d.ts +5 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +10 -38
- package/dist/program.js.map +1 -1
- package/dist/reasons.d.ts.map +1 -1
- package/dist/reasons.js +8 -0
- package/dist/reasons.js.map +1 -1
- package/dist/update.d.ts +0 -1
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +0 -7
- package/dist/update.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +10 -10
- package/skills/whatsapp-cli/SKILL.md +59 -24
- package/dist/commands/answer.d.ts +0 -7
- package/dist/commands/answer.d.ts.map +0 -1
- package/dist/commands/answer.js +0 -11
- package/dist/commands/answer.js.map +0 -1
package/dist/engine/groups.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as v from "valibot";
|
|
2
|
-
import { type WaContact } from "./contract.js";
|
|
2
|
+
import { type EngineOp, type WaContact } from "./contract.js";
|
|
3
3
|
export declare const waMember: v.StrictObjectSchema<{
|
|
4
4
|
readonly jid: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IncludesAction<string, "@", undefined>]>;
|
|
5
5
|
readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -13,13 +13,18 @@ export declare const waMember: v.StrictObjectSchema<{
|
|
|
13
13
|
export declare const waGroup: v.StrictObjectSchema<{
|
|
14
14
|
readonly chat: v.StrictObjectSchema<{
|
|
15
15
|
readonly jid: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IncludesAction<string, "@", undefined>]>;
|
|
16
|
-
readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
16
|
+
readonly name: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
17
17
|
readonly kind: v.PicklistSchema<["dm", "self", "group", "newsletter", "broadcast"], undefined>;
|
|
18
|
-
readonly unread: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
19
|
-
readonly lastMessageAt: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>;
|
|
20
|
-
readonly participants: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
18
|
+
readonly unread: v.OptionalSchema<v.NullableSchema<v.NumberSchema<undefined>, undefined>, undefined>;
|
|
19
|
+
readonly lastMessageAt: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>, undefined>;
|
|
20
|
+
readonly participants: v.OptionalSchema<v.NullableSchema<v.NumberSchema<undefined>, undefined>, undefined>;
|
|
21
21
|
readonly archived: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
22
22
|
readonly muted: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
23
|
+
readonly mutedUntil: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>;
|
|
24
|
+
readonly markedUnread: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
25
|
+
readonly parent: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IncludesAction<string, "@", undefined>]>, undefined>, undefined>;
|
|
26
|
+
readonly community: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
|
|
27
|
+
readonly membershipState: v.OptionalSchema<v.PicklistSchema<["left", "member"], undefined>, undefined>;
|
|
23
28
|
}, undefined>;
|
|
24
29
|
readonly description: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
25
30
|
readonly link: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -39,13 +44,18 @@ export declare const waCreated: v.StrictObjectSchema<{
|
|
|
39
44
|
readonly group: v.StrictObjectSchema<{
|
|
40
45
|
readonly chat: v.StrictObjectSchema<{
|
|
41
46
|
readonly jid: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IncludesAction<string, "@", undefined>]>;
|
|
42
|
-
readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
47
|
+
readonly name: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
43
48
|
readonly kind: v.PicklistSchema<["dm", "self", "group", "newsletter", "broadcast"], undefined>;
|
|
44
|
-
readonly unread: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
45
|
-
readonly lastMessageAt: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>;
|
|
46
|
-
readonly participants: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
49
|
+
readonly unread: v.OptionalSchema<v.NullableSchema<v.NumberSchema<undefined>, undefined>, undefined>;
|
|
50
|
+
readonly lastMessageAt: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>, undefined>;
|
|
51
|
+
readonly participants: v.OptionalSchema<v.NullableSchema<v.NumberSchema<undefined>, undefined>, undefined>;
|
|
47
52
|
readonly archived: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
48
53
|
readonly muted: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
54
|
+
readonly mutedUntil: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>;
|
|
55
|
+
readonly markedUnread: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
56
|
+
readonly parent: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IncludesAction<string, "@", undefined>]>, undefined>, undefined>;
|
|
57
|
+
readonly community: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
|
|
58
|
+
readonly membershipState: v.OptionalSchema<v.PicklistSchema<["left", "member"], undefined>, undefined>;
|
|
49
59
|
}, undefined>;
|
|
50
60
|
readonly description: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
51
61
|
readonly link: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -66,13 +76,18 @@ export declare const waJoined: v.StrictObjectSchema<{
|
|
|
66
76
|
readonly group: v.NullableSchema<v.StrictObjectSchema<{
|
|
67
77
|
readonly chat: v.StrictObjectSchema<{
|
|
68
78
|
readonly jid: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IncludesAction<string, "@", undefined>]>;
|
|
69
|
-
readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
79
|
+
readonly name: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
70
80
|
readonly kind: v.PicklistSchema<["dm", "self", "group", "newsletter", "broadcast"], undefined>;
|
|
71
|
-
readonly unread: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
72
|
-
readonly lastMessageAt: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>;
|
|
73
|
-
readonly participants: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
81
|
+
readonly unread: v.OptionalSchema<v.NullableSchema<v.NumberSchema<undefined>, undefined>, undefined>;
|
|
82
|
+
readonly lastMessageAt: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>, undefined>;
|
|
83
|
+
readonly participants: v.OptionalSchema<v.NullableSchema<v.NumberSchema<undefined>, undefined>, undefined>;
|
|
74
84
|
readonly archived: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
75
85
|
readonly muted: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
86
|
+
readonly mutedUntil: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, undefined>]>, undefined>;
|
|
87
|
+
readonly markedUnread: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
88
|
+
readonly parent: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IncludesAction<string, "@", undefined>]>, undefined>, undefined>;
|
|
89
|
+
readonly community: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
|
|
90
|
+
readonly membershipState: v.OptionalSchema<v.PicklistSchema<["left", "member"], undefined>, undefined>;
|
|
76
91
|
}, undefined>;
|
|
77
92
|
readonly description: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
78
93
|
readonly link: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
@@ -137,6 +152,9 @@ export interface GroupEngine {
|
|
|
137
152
|
join(link: string): Promise<WaJoined>;
|
|
138
153
|
leave(jid: string): Promise<void>;
|
|
139
154
|
updateGroup(jid: string, change: WaGroupChange): Promise<WaGroup>;
|
|
155
|
+
/** The group's photo from a JPEG at `path`, an absolute path; the engine refuses one WhatsApp would not take. */
|
|
156
|
+
setGroupPhoto(jid: string, path: string): Promise<WaGroup>;
|
|
157
|
+
removeGroupPhoto(jid: string): Promise<WaGroup>;
|
|
140
158
|
/** A new invite link; the old one stops working. */
|
|
141
159
|
resetInviteLink(jid: string): Promise<WaGroup>;
|
|
142
160
|
/** Adds, removes, promotes to admin or demotes; only `add` may leave some out. */
|
|
@@ -153,7 +171,7 @@ export interface GroupEngine {
|
|
|
153
171
|
/** The phone's address book, as the engine's store holds it. */
|
|
154
172
|
contacts(): Promise<WaContact[]>;
|
|
155
173
|
}
|
|
156
|
-
export type EngineRequest = <T>(op:
|
|
174
|
+
export type EngineRequest = <T>(op: EngineOp, fields: Record<string, unknown>, schema: v.GenericSchema<unknown, T>) => Promise<T>;
|
|
157
175
|
/** The group and people requests over the Go engine's JSON lines. */
|
|
158
176
|
export declare const goGroups: (request: EngineRequest) => GroupEngine;
|
|
159
177
|
//# sourceMappingURL=groups.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../src/engine/groups.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../src/engine/groups.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/groups.js
CHANGED
|
@@ -48,6 +48,8 @@ export const goGroups = (request) => ({
|
|
|
48
48
|
await request("leave", { jid }, nothing);
|
|
49
49
|
},
|
|
50
50
|
updateGroup: (jid, change) => request("updateGroup", { jid, ...change }, waGroup),
|
|
51
|
+
setGroupPhoto: (jid, path) => request("setGroupPhoto", { jid, path }, waGroup),
|
|
52
|
+
removeGroupPhoto: (jid) => request("setGroupPhoto", { jid, removePhoto: true }, waGroup),
|
|
51
53
|
resetInviteLink: (jid) => request("resetLink", { jid }, waGroup),
|
|
52
54
|
participants: (jid, action, people) => request("participants", { jid, action, people }, waNotAdded),
|
|
53
55
|
joinRequests: (jid) => request("requests", { jid }, v.array(waJoinRequest)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groups.js","sourceRoot":"","sources":["../../src/engine/groups.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,
|
|
1
|
+
{"version":3,"file":"groups.js","sourceRoot":"","sources":["../../src/engine/groups.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
import type { EngineRequest } from "./groups.js";
|
|
3
|
+
/**
|
|
4
|
+
* The account's privacy in WhatsApp's own names and values (whatsmeow's `types.PrivacySettings`): `groupadd` who may
|
|
5
|
+
* add the account to groups, `last` who sees last seen, `online` who sees it online (`match_last_seen`: those who see
|
|
6
|
+
* last seen), `calladd` whose calls ring (`known`: unknown callers are silenced), `profile` who sees the profile photo,
|
|
7
|
+
* `status` who sees the about text, `readreceipts` whether read receipts go (`all`) or not (`none`). An audience is
|
|
8
|
+
* `all`, `contacts`, `contact_blacklist` (contacts but those the phone excepts) or `none`. `""` is a setting WhatsApp
|
|
9
|
+
* did not send.
|
|
10
|
+
*/
|
|
11
|
+
export declare const waPrivacy: v.StrictObjectSchema<{
|
|
12
|
+
readonly groupadd: v.StringSchema<undefined>;
|
|
13
|
+
readonly last: v.StringSchema<undefined>;
|
|
14
|
+
readonly online: v.StringSchema<undefined>;
|
|
15
|
+
readonly calladd: v.StringSchema<undefined>;
|
|
16
|
+
readonly profile: v.StringSchema<undefined>;
|
|
17
|
+
readonly status: v.StringSchema<undefined>;
|
|
18
|
+
readonly readreceipts: v.StringSchema<undefined>;
|
|
19
|
+
}, undefined>;
|
|
20
|
+
export type WaPrivacy = v.InferOutput<typeof waPrivacy>;
|
|
21
|
+
export interface WaPrivacyChange {
|
|
22
|
+
name: keyof WaPrivacy;
|
|
23
|
+
value: string;
|
|
24
|
+
}
|
|
25
|
+
/** The engine's privacy requests. A change is seen by everyone the setting is about. */
|
|
26
|
+
export interface PrivacyEngine {
|
|
27
|
+
/** Asked of WhatsApp each time, never from a cache another device may have outdated. */
|
|
28
|
+
privacy(): Promise<WaPrivacy>;
|
|
29
|
+
/** In order, one request each; answers every setting as it now is. Nothing is sent unless every change is valid. */
|
|
30
|
+
setPrivacy(changes: WaPrivacyChange[]): Promise<WaPrivacy>;
|
|
31
|
+
}
|
|
32
|
+
export declare const goPrivacy: (request: EngineRequest) => PrivacyEngine;
|
|
33
|
+
//# sourceMappingURL=privacy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../../src/engine/privacy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS;;;;;;;;aAQpB,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,SAAS,CAAC,CAAA;AAEvD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,SAAS,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,wFAAwF;IACxF,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAAA;IAC7B,oHAAoH;IACpH,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;CAC3D;AAED,eAAO,MAAM,SAAS,YAAa,aAAa,KAAG,aAGjD,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
/**
|
|
3
|
+
* The account's privacy in WhatsApp's own names and values (whatsmeow's `types.PrivacySettings`): `groupadd` who may
|
|
4
|
+
* add the account to groups, `last` who sees last seen, `online` who sees it online (`match_last_seen`: those who see
|
|
5
|
+
* last seen), `calladd` whose calls ring (`known`: unknown callers are silenced), `profile` who sees the profile photo,
|
|
6
|
+
* `status` who sees the about text, `readreceipts` whether read receipts go (`all`) or not (`none`). An audience is
|
|
7
|
+
* `all`, `contacts`, `contact_blacklist` (contacts but those the phone excepts) or `none`. `""` is a setting WhatsApp
|
|
8
|
+
* did not send.
|
|
9
|
+
*/
|
|
10
|
+
export const waPrivacy = v.strictObject({
|
|
11
|
+
groupadd: v.string(),
|
|
12
|
+
last: v.string(),
|
|
13
|
+
online: v.string(),
|
|
14
|
+
calladd: v.string(),
|
|
15
|
+
profile: v.string(),
|
|
16
|
+
status: v.string(),
|
|
17
|
+
readreceipts: v.string(),
|
|
18
|
+
});
|
|
19
|
+
export const goPrivacy = (request) => ({
|
|
20
|
+
privacy: () => request("privacy", {}, waPrivacy),
|
|
21
|
+
setPrivacy: (changes) => request("setPrivacy", { privacy: changes }, waPrivacy),
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=privacy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy.js","sourceRoot":"","sources":["../../src/engine/privacy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAG5B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC;IACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;CACzB,CAAC,CAAA;AAiBF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAsB,EAAiB,EAAE,CAAC,CAAC;IACnE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,CAAC;IAChD,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC;CAChF,CAAC,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type WaAccount, type WaAnchor, type WaKey } from "./contract.js";
|
|
2
|
+
import type { EngineRequest } from "./groups.js";
|
|
3
|
+
/** The account's own name, "about" line and photo; a field left out stays. */
|
|
4
|
+
export interface WaProfileChange {
|
|
5
|
+
pushName?: string;
|
|
6
|
+
about?: string;
|
|
7
|
+
/** The new photo's absolute path: a square JPEG of 190 to 720 pixels a side, checked before anything changes. */
|
|
8
|
+
path?: string;
|
|
9
|
+
}
|
|
10
|
+
/** The engine's writes to the account's synced settings, which WhatsApp syncs to the account's other devices. */
|
|
11
|
+
export interface SettingsEngine {
|
|
12
|
+
/** `until`: `forever`, an ISO 8601 time, or `null` to unmute. Nobody in the chat is told. */
|
|
13
|
+
mute(jid: string, until: string | null): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* The name goes to the owner's devices as a setting, then the about and the photo to WhatsApp; answers the account
|
|
16
|
+
* as it now is.
|
|
17
|
+
*/
|
|
18
|
+
updateProfile(change: WaProfileChange): Promise<WaAccount>;
|
|
19
|
+
/**
|
|
20
|
+
* Deletes `last`'s chat from the account's devices, up to `last`, the chat's newest stored message: WhatsApp needs
|
|
21
|
+
* it to know what the deletion covers. The photos and files the phone saved from it stay. Nobody else is told.
|
|
22
|
+
*/
|
|
23
|
+
deleteChat(last: WaAnchor): Promise<void>;
|
|
24
|
+
/** Deletes every message of `last`'s chat up to `last`, starred ones too, and keeps the chat; as `deleteChat`. */
|
|
25
|
+
clearChat(last: WaAnchor): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Deletes `message` from the account's devices alone; the others in the chat keep it. WhatsApp names the message by
|
|
28
|
+
* its key and the time it was sent, both from the store. The photos and files the phone saved from it stay.
|
|
29
|
+
*/
|
|
30
|
+
deleteForMe(message: WaAnchor): Promise<void>;
|
|
31
|
+
/** Stars `message`, or takes the star off, on the account's devices alone; nobody in the chat is told. */
|
|
32
|
+
star(message: WaKey, starred: boolean): Promise<void>;
|
|
33
|
+
/** Moves `last`'s chat into the archive, which unpins it, or back out; bounded by `last` as `deleteChat` is. */
|
|
34
|
+
archiveChat(last: WaAnchor, archived: boolean): Promise<void>;
|
|
35
|
+
/** Pins the chat at the top of the account's chat list, or unpins it. Not a message pin. */
|
|
36
|
+
pinChat(jid: string, pinned: boolean): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Marks `last`'s chat read on the account's devices up to `last`, which takes a mark-unread off; no receipt is sent.
|
|
39
|
+
*/
|
|
40
|
+
markChatRead(last: WaAnchor): Promise<void>;
|
|
41
|
+
/** Marks `last`'s chat unread on the account's devices; no receipt is sent or taken back. */
|
|
42
|
+
markChatUnread(last: WaAnchor): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
export declare const goSettings: (request: EngineRequest) => SettingsEngine;
|
|
45
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/engine/settings.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAa,MAAM,eAAe,CAAA;AAC/F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iHAAiH;IACjH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,iHAAiH;AACjH,MAAM,WAAW,cAAc;IAC7B,6FAA6F;IAC7F,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAC1D;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,kHAAkH;IAClH,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,0GAA0G;IAC1G,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrD,gHAAgH;IAChH,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D,4FAA4F;IAC5F,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,6FAA6F;IAC7F,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9C;AAID,eAAO,MAAM,UAAU,YAAa,aAAa,KAAG,cAiClD,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
import { keyFields, waAccount } from "./contract.js";
|
|
3
|
+
const nothing = v.nullable(v.unknown());
|
|
4
|
+
export const goSettings = (request) => ({
|
|
5
|
+
mute: async (jid, until) => {
|
|
6
|
+
await request("mute", { jid, until }, nothing);
|
|
7
|
+
},
|
|
8
|
+
updateProfile: (change) => request("updateProfile", { ...change }, waAccount),
|
|
9
|
+
deleteChat: async (last) => {
|
|
10
|
+
await request("deleteChat", { ...keyFields(last), timestamp: last.timestamp }, nothing);
|
|
11
|
+
},
|
|
12
|
+
clearChat: async (last) => {
|
|
13
|
+
await request("clearChat", { ...keyFields(last), timestamp: last.timestamp }, nothing);
|
|
14
|
+
},
|
|
15
|
+
deleteForMe: async (message) => {
|
|
16
|
+
await request("deleteForMe", { ...keyFields(message), timestamp: message.timestamp }, nothing);
|
|
17
|
+
},
|
|
18
|
+
star: async (message, starred) => {
|
|
19
|
+
await request("star", { ...keyFields(message), starred }, nothing);
|
|
20
|
+
},
|
|
21
|
+
archiveChat: async (last, archived) => {
|
|
22
|
+
await request(archived ? "archiveChat" : "unarchiveChat", { ...keyFields(last), timestamp: last.timestamp }, nothing);
|
|
23
|
+
},
|
|
24
|
+
pinChat: async (jid, pinned) => {
|
|
25
|
+
await request(pinned ? "pinChat" : "unpinChat", { jid }, nothing);
|
|
26
|
+
},
|
|
27
|
+
markChatRead: async (last) => {
|
|
28
|
+
await request("markChatRead", { ...keyFields(last), timestamp: last.timestamp }, nothing);
|
|
29
|
+
},
|
|
30
|
+
markChatUnread: async (last) => {
|
|
31
|
+
await request("markChatUnread", { ...keyFields(last), timestamp: last.timestamp }, nothing);
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/engine/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,SAAS,EAA6C,SAAS,EAAE,MAAM,eAAe,CAAA;AA8C/F,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAsB,EAAkB,EAAE,CAAC,CAAC;IACrE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACzB,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAA;IAChD,CAAC;IACD,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,SAAS,CAAC;IAC7E,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,OAAO,CAAC,YAAY,EAAE,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAA;IACzF,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACxB,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAA;IACxF,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC7B,MAAM,OAAO,CAAC,aAAa,EAAE,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAA;IAChG,CAAC;IACD,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAC/B,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAA;IACpE,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QACpC,MAAM,OAAO,CACX,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,EAC1C,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EACjD,OAAO,CACR,CAAA;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QAC7B,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA;IACnE,CAAC;IACD,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,OAAO,CAAC,cAAc,EAAE,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAA;IAC3F,CAAC;IACD,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC7B,MAAM,OAAO,CAAC,gBAAgB,EAAE,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAA;IAC7F,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postinstall.d.ts","sourceRoot":"","sources":["../../src/install/postinstall.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,qBAAqB;;sBA+Bf,MAAM;;;uBA3BL,MAAM;MA4BjB,
|
|
1
|
+
{"version":3,"file":"postinstall.d.ts","sourceRoot":"","sources":["../../src/install/postinstall.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,qBAAqB;;sBA+Bf,MAAM;;;uBA3BL,MAAM;MA4BjB,IA6BR,CAAA"}
|
|
@@ -33,11 +33,12 @@ export const completeGlobalInstall = ({ env = process.env, platform = process.pl
|
|
|
33
33
|
repair(prefix);
|
|
34
34
|
note("wa: Windows user PATH updated; new terminals can run wa directly.");
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
// npm hides a lifecycle script's output, so writing into the owner's agent folders here must be asked for.
|
|
37
|
+
const agent = env.WA_INSTALL_AGENT;
|
|
38
|
+
if (agent === undefined || agent === "none") {
|
|
39
|
+
note("wa: agent skill not installed; wa personal setup offers it, or run wa skill install --for all.");
|
|
38
40
|
}
|
|
39
41
|
else {
|
|
40
|
-
const agent = env.WA_INSTALL_AGENT ?? "all";
|
|
41
42
|
if (!["all", "codex", "cursor", "claude", "gemini"].includes(agent))
|
|
42
43
|
throw new Error("WA_INSTALL_AGENT must be all, codex, cursor, claude, gemini or none");
|
|
43
44
|
const targets = agent === "all"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postinstall.js","sourceRoot":"","sources":["../../src/install/postinstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;AAEtE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,GAAG,GAAG,OAAO,CAAC,GAAG,EACjB,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAC3B,WAAW,GAAG,IAAI,EAClB,MAAM,GAAG,CAAC,MAAc,EAAE,EAAE;IAC1B,MAAM,KAAK,GAAG,SAAS,CACrB,gBAAgB,EAChB;QACE,YAAY;QACZ,iBAAiB;QACjB,kBAAkB;QAClB,QAAQ;QACR,iBAAiB;QACjB,MAAM,CAAC,IAAI,CACT,+GAA+G,EAC/G,SAAS,CACV,CAAC,QAAQ,CAAC,QAAQ,CAAC;KACrB,EACD;QACE,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE;YACH,GAAG,GAAG;YACN,iBAAiB,EAAE,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC;YAC9D,iBAAiB,EAAE,MAAM;YACzB,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;SAC3C;KACF,CACF,CAAA;IACD,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAA;AACvG,CAAC,EACD,IAAI,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,GACjE,GAAG,EAAE,EAAQ,EAAE;IACd,IAAI,GAAG,CAAC,iBAAiB,KAAK,MAAM;QAAE,OAAM;IAC5C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,GAAG,CAAC,iBAAiB,CAAA;QACpC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;QAChG,MAAM,CAAC,MAAM,CAAC,CAAA;QACd,IAAI,CAAC,mEAAmE,CAAC,CAAA;IAC3E,CAAC;IACD,
|
|
1
|
+
{"version":3,"file":"postinstall.js","sourceRoot":"","sources":["../../src/install/postinstall.ts"],"names":[],"mappings":"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"}
|
package/dist/messenger.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type BaseContext, type BaseEnvironment, type
|
|
1
|
+
import { type BaseContext, type BaseEnvironment, type Messenger } from "@wirecat/cli-core/cli";
|
|
2
2
|
import type { UpdateEnvironment } from "@wirecat/cli-core/update";
|
|
3
3
|
import type { Command } from "commander";
|
|
4
4
|
import { type WhatsAppEngine } from "./engine/contract.js";
|
|
@@ -21,6 +21,7 @@ export interface Environment extends BaseEnvironment {
|
|
|
21
21
|
historyWait?: {
|
|
22
22
|
firstMs: number;
|
|
23
23
|
quietMs: number;
|
|
24
|
+
slowMs?: number;
|
|
24
25
|
};
|
|
25
26
|
/** npm, the package manager and this install's path, for `upgrade` and the update notice; tests hand them in. */
|
|
26
27
|
update?: UpdateEnvironment;
|
|
@@ -50,14 +51,12 @@ export interface Linked {
|
|
|
50
51
|
* Links the profile's device, showing each code through `onCode`. A newly linked engine stays open and is handed to
|
|
51
52
|
* the command's next `connect`; an already linked one is closed and nothing is asked.
|
|
52
53
|
*/
|
|
53
|
-
export declare const linkDevice: (command: Command, base: Pick<BaseContext, "settings" | "env" | "renderer">, { method, phone, onCode, beforeLink,
|
|
54
|
+
export declare const linkDevice: (command: Command, base: Pick<BaseContext, "settings" | "env" | "renderer">, { method, phone, onCode, beforeLink, }: {
|
|
54
55
|
method: "qr" | "phone";
|
|
55
56
|
phone: () => Promise<string>;
|
|
56
57
|
onCode: (code: LinkCode) => void;
|
|
57
58
|
/** Throws when nobody could answer: a store can exist without a device, after a link that did not finish. */
|
|
58
59
|
beforeLink?: () => void;
|
|
59
|
-
/** Closed by the caller's deadline as well. */
|
|
60
|
-
track?: (engine: Closeable) => void;
|
|
61
60
|
}) => Promise<Linked>;
|
|
62
61
|
export declare const SKILL: import("url").URL;
|
|
63
62
|
export declare const WHATSAPP: Messenger;
|
package/dist/messenger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messenger.d.ts","sourceRoot":"","sources":["../src/messenger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messenger.d.ts","sourceRoot":"","sources":["../src/messenger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAiB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAC7G,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQxC,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAIvE,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,qFAAqF;IACrF,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,OAAO,CAAA;CACd;AAED,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,yCAAyC;IACzC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7E,8EAA8E;IAC9E,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IAChD,4EAA4E;IAC5E,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnE,iHAAiH;IACjH,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;AAaD,kFAAkF;AAClF,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,IAAI,GAAG,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,YACZ,OAAO,QACV,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC,qBACtB;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,KACrE,OAAO,CAAC,cAAc,CASxB,CAAA;AA+BD,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAC5C,wDAAwD;IACxD,aAAa,EAAE,OAAO,CAAA;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,YACZ,OAAO,QACV,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC,0CAMrD;IACD,MAAM,EAAE,IAAI,GAAG,OAAO,CAAA;IACtB,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;IAChC,6GAA6G;IAC7G,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB,KACA,OAAO,CAAC,MAAM,CAkBhB,CAAA;AAED,eAAO,MAAM,KAAK,mBAA8D,CAAA;AAEhF,eAAO,MAAM,QAAQ,EAAE,SAqGtB,CAAA"}
|
package/dist/messenger.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { CliError } from "@wirecat/cli-base";
|
|
3
|
-
import {
|
|
3
|
+
import { checkWords } from "@wirecat/cli-core";
|
|
4
|
+
import { environmentOf } from "@wirecat/cli-core/cli";
|
|
4
5
|
import { whatsAppAdapter } from "./adapter/adapter.js";
|
|
5
6
|
import { fromEngine } from "./adapter/errors.js";
|
|
6
7
|
import { ADMIN_RIGHTS, GROUP_SETTINGS } from "./adapter/groups.js";
|
|
8
|
+
import { PRIVACY_SETTINGS } from "./adapter/privacy.js";
|
|
7
9
|
import { resolveSettings, WA } from "./app.js";
|
|
8
10
|
import { diagnoseWhatsApp } from "./diagnose.js";
|
|
9
11
|
import { EngineError } from "./engine/contract.js";
|
|
@@ -15,9 +17,8 @@ const holderOf = (command) => {
|
|
|
15
17
|
words.unshift(at.name());
|
|
16
18
|
return words.join(" ") || "wa";
|
|
17
19
|
};
|
|
18
|
-
const COMMANDS = { "chats.list": "chats list", serve: "serve", "session.start": "session start" };
|
|
19
20
|
/** The commands the adapter's messages send a person to, with this profile named first. */
|
|
20
|
-
const wordsFor = (profile) => (
|
|
21
|
+
const wordsFor = (profile) => checkWords("wa", profile);
|
|
21
22
|
const loginHint = (profile) => wordsFor(profile)("session.start");
|
|
22
23
|
/**
|
|
23
24
|
* Starts the engine for the command's profile, or throws saying how to log in. Only a login (`link`) may start on
|
|
@@ -59,9 +60,8 @@ const handedOver = new WeakMap();
|
|
|
59
60
|
* Links the profile's device, showing each code through `onCode`. A newly linked engine stays open and is handed to
|
|
60
61
|
* the command's next `connect`; an already linked one is closed and nothing is asked.
|
|
61
62
|
*/
|
|
62
|
-
export const linkDevice = async (command, base, { method, phone, onCode, beforeLink,
|
|
63
|
+
export const linkDevice = async (command, base, { method, phone, onCode, beforeLink, }) => {
|
|
63
64
|
const engine = await openEngine(command, base, { link: true, listen: true });
|
|
64
|
-
track?.(engine);
|
|
65
65
|
let keep = false;
|
|
66
66
|
try {
|
|
67
67
|
const alreadyLinked = engine.self() !== null;
|
|
@@ -92,13 +92,15 @@ export const WHATSAPP = {
|
|
|
92
92
|
name: "WhatsApp",
|
|
93
93
|
resolveSettings,
|
|
94
94
|
history: "store",
|
|
95
|
+
// WhatsApp sends a chat's unread count only in the history push; between pushes the store counts new messages.
|
|
96
|
+
unreadCounts: "store",
|
|
95
97
|
historyOnDemand: true,
|
|
96
98
|
// WhatsApp drops the older of two connections, so while serve holds the device every command runs through it.
|
|
97
99
|
connection: "exclusive",
|
|
98
100
|
// Ids are WhatsApp's own strings, so held stretches are keyed by time. A page is one request to the phone for older
|
|
99
101
|
// messages (the adapter's `history`), and WhatsApp's own clients ask 50 at a time.
|
|
100
102
|
fetching: { page: 50, maxPageSize: 50, pause: "2s", jitter: true, maxPages: 20, orderBy: "time" },
|
|
101
|
-
chatArgument: "a chat: its name, or its WhatsApp id (…@lid, …@g.us)",
|
|
103
|
+
chatArgument: "a chat: its name, or its WhatsApp id (…@lid, …@g.us, …@newsletter)",
|
|
102
104
|
inviteLinks: /chat\.whatsapp\.com\/[A-Za-z0-9]+/i,
|
|
103
105
|
// The chat with yourself has your own id.
|
|
104
106
|
savedChatId: (account) => account.account,
|
|
@@ -118,9 +120,17 @@ export const WHATSAPP = {
|
|
|
118
120
|
joinRequestsAll: false,
|
|
119
121
|
channelComments: false,
|
|
120
122
|
addsWithHistory: false,
|
|
123
|
+
// A member's record has no date the account was made, so the moderation rule `newAccount` could never match.
|
|
124
|
+
knowsAccountAge: false,
|
|
121
125
|
// A document carries the name the recipient sees; WhatsApp has no spoiler and no caption above.
|
|
122
126
|
mediaOptions: ["fileName"],
|
|
127
|
+
// A sticker is an uploaded .webp, not one of a set. Meta's Cloud API caps an animated one at 500 KB and a still one
|
|
128
|
+
// at 100 KB; one cap has to let animated stickers through.
|
|
129
|
+
stickerFileBytes: 500 * 1024,
|
|
123
130
|
groupSettings: GROUP_SETTINGS,
|
|
131
|
+
groupPhoto: true,
|
|
132
|
+
groupPhotoRemoval: true,
|
|
133
|
+
profilePhotoTypes: [".jpg", ".jpeg"],
|
|
124
134
|
adminRights: ADMIN_RIGHTS,
|
|
125
135
|
pickAdminRights: false,
|
|
126
136
|
// A WhatsApp poll stays open, and any vote in it can be changed; everyone sees who voted for what.
|
|
@@ -132,10 +142,18 @@ export const WHATSAPP = {
|
|
|
132
142
|
silentSends: false,
|
|
133
143
|
sendAs: false,
|
|
134
144
|
scheduledSends: false,
|
|
145
|
+
// A pin is for the whole chat and tells its members; it ends after one of the lengths WhatsApp's apps offer.
|
|
146
|
+
quietPins: false,
|
|
147
|
+
pinDurations: [86_400, 604_800, 2_592_000],
|
|
148
|
+
pinDefaultDuration: 604_800,
|
|
135
149
|
// Nothing sends unless a typed command asked: WhatsApp bans accounts that answer like a bot.
|
|
136
150
|
autoReplies: false,
|
|
151
|
+
chatMute: true,
|
|
152
|
+
chatDeletion: true,
|
|
153
|
+
chatArchive: true,
|
|
154
|
+
chatPin: true,
|
|
155
|
+
chatMarkUnread: true,
|
|
137
156
|
lacks: [
|
|
138
|
-
"updateProfile",
|
|
139
157
|
"sessions",
|
|
140
158
|
"endOtherSessions",
|
|
141
159
|
"chatEvents",
|
|
@@ -148,24 +166,23 @@ export const WHATSAPP = {
|
|
|
148
166
|
"removeContact",
|
|
149
167
|
"renameContact",
|
|
150
168
|
"importContacts",
|
|
151
|
-
"pin",
|
|
152
|
-
"unpin",
|
|
153
169
|
],
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
170
|
+
deleteForMe: true,
|
|
171
|
+
privacy: true,
|
|
172
|
+
privacySettings: PRIVACY_SETTINGS,
|
|
173
|
+
messageStars: true,
|
|
157
174
|
connect: async (command, base, options = {}) => {
|
|
158
175
|
const linked = handedOver.get(command);
|
|
159
176
|
handedOver.delete(command);
|
|
160
177
|
const words = wordsFor(base.settings.profile);
|
|
161
178
|
if (linked)
|
|
162
|
-
return whatsAppAdapter(linked, options.stored, words);
|
|
179
|
+
return whatsAppAdapter(linked, options.stored, words, base.renderer.warn);
|
|
163
180
|
const engine = await openEngine(command, base, { listen: options.listen === true });
|
|
164
181
|
if (engine.self() === null) {
|
|
165
182
|
await engine.close();
|
|
166
183
|
throw new CliError("authentication_error", `profile "${base.settings.profile}" is not linked to WhatsApp — run ${loginHint(base.settings.profile)}`);
|
|
167
184
|
}
|
|
168
|
-
return whatsAppAdapter(engine, options.stored, words);
|
|
185
|
+
return whatsAppAdapter(engine, options.stored, words, base.renderer.warn);
|
|
169
186
|
},
|
|
170
187
|
};
|
|
171
188
|
//# sourceMappingURL=messenger.js.map
|
package/dist/messenger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messenger.js","sourceRoot":"","sources":["../src/messenger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"messenger.js","sourceRoot":"","sources":["../src/messenger.ts"],"names":[],"mappings":"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"}
|
package/dist/program.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
import { type Environment } from "./messenger.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* A revoked or missing login fails the same on every retry, and a restart during a ban would connect to WhatsApp
|
|
5
|
+
* again while it holds the account. `device.replaced` and `client.outdated` exit 12 with a crashed engine, which
|
|
6
|
+
* should restart, so an exit code cannot keep them from it.
|
|
7
|
+
*/
|
|
4
8
|
export declare const NO_RESTART_ON: number[];
|
|
5
9
|
export declare const createProgram: () => Command;
|
|
6
10
|
/** Never throws: every outcome is an exit code, and a failure is said once, on stderr. */
|
package/dist/program.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,gBAAgB,CAAA;AAGlE
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,gBAAgB,CAAA;AAGlE;;;;GAIG;AACH,eAAO,MAAM,aAAa,UAAyE,CAAA;AAkEnG,eAAO,MAAM,aAAa,QAAO,OAA6B,CAAA;AAE9D,0FAA0F;AAC1F,eAAO,MAAM,GAAG,SAAgB,MAAM,EAAE,gBAAe,WAAW,KAAQ,OAAO,CAAC,MAAM,CAUvF,CAAA"}
|