n8n-nodes-meower 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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Rui Menezes
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # n8n-nodes-meower
2
+
3
+ Node comunitário do [n8n](https://n8n.io) para automatizar WhatsApp através da
4
+ [Meower](https://github.com/ruizivo/meower) (integração própria em Go com
5
+ [whatsmeow](https://github.com/tulir/whatsmeow)).
6
+
7
+ ## Instalação
8
+
9
+ No seu n8n self-hosted: **Settings → Community Nodes → Install** e informe
10
+ `n8n-nodes-meower`.
11
+
12
+ ## Credencial
13
+
14
+ Crie uma credencial do tipo **Meower API** com:
15
+
16
+ - **Base URL**: endereço onde a sua instância da Meower está rodando (ex:
17
+ `https://meower.seudominio.com`), sem barra no final.
18
+ - **API Key**: gerada em Configurações → API Keys dentro da própria Meower.
19
+
20
+ ## Recursos disponíveis
21
+
22
+ - **Message**: enviar texto/mídia, editar, apagar, reagir, listar histórico.
23
+ - **Chat**: listar conversas, iniciar conversa, indicador de "digitando...",
24
+ buscar preview de link.
25
+ - **Group**: criar, editar (nome/descrição/foto), entrar por link, sair,
26
+ adicionar/remover/promover/rebaixar participantes, restringir envio a
27
+ admins.
28
+ - **Contact**: listar contatos, buscar avatar.
29
+
30
+ Cada operação também pede a **Instance** (dropdown, carregado da sua conta
31
+ via API) — a Meower suporta múltiplas instâncias/números no mesmo servidor.
32
+
33
+ ## Desenvolvimento
34
+
35
+ ```bash
36
+ npm install
37
+ npm run build
38
+ ```
39
+
40
+ Pra testar localmente antes de publicar, aponte a variável de ambiente
41
+ `N8N_CUSTOM_EXTENSIONS` do seu n8n pra essa pasta (depois de `npm run build`),
42
+ ou rode `npm link` aqui e `npm link n8n-nodes-meower` dentro da pasta custom
43
+ do seu n8n.
44
+
45
+ ## Licença
46
+
47
+ MIT
@@ -0,0 +1,9 @@
1
+ import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from "n8n-workflow";
2
+ export declare class MeowerApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ documentationUrl: string;
6
+ properties: INodeProperties[];
7
+ authenticate: IAuthenticateGeneric;
8
+ test: ICredentialTestRequest;
9
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MeowerApi = void 0;
4
+ class MeowerApi {
5
+ constructor() {
6
+ this.name = "meowerApi";
7
+ this.displayName = "Meower API";
8
+ this.documentationUrl = "https://github.com/ruizivo/meower";
9
+ this.properties = [
10
+ {
11
+ displayName: "Base URL",
12
+ name: "baseUrl",
13
+ type: "string",
14
+ default: "",
15
+ placeholder: "https://meower.seu-dominio.com",
16
+ description: "URL onde a sua instância da Meower está rodando, sem barra no final",
17
+ required: true,
18
+ },
19
+ {
20
+ displayName: "API Key",
21
+ name: "apiKey",
22
+ type: "string",
23
+ typeOptions: { password: true },
24
+ default: "",
25
+ description: "Gerada em Configurações → API Keys dentro da Meower",
26
+ required: true,
27
+ },
28
+ ];
29
+ this.authenticate = {
30
+ type: "generic",
31
+ properties: {
32
+ headers: {
33
+ apikey: "={{$credentials.apiKey}}",
34
+ },
35
+ },
36
+ };
37
+ this.test = {
38
+ request: {
39
+ baseURL: "={{$credentials.baseUrl}}",
40
+ url: "/auth/me",
41
+ },
42
+ };
43
+ }
44
+ }
45
+ exports.MeowerApi = MeowerApi;
46
+ //# sourceMappingURL=MeowerApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeowerApi.credentials.js","sourceRoot":"","sources":["../../credentials/MeowerApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,SAAS;IAAtB;QACE,SAAI,GAAG,WAAW,CAAC;QAEnB,gBAAW,GAAG,YAAY,CAAC;QAE3B,qBAAgB,GAAG,mCAAmC,CAAC;QAEvD,eAAU,GAAsB;YAC9B;gBACE,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,gCAAgC;gBAC7C,WAAW,EAAE,qEAAqE;gBAClF,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,qDAAqD;gBAClE,QAAQ,EAAE,IAAI;aACf;SACF,CAAC;QAIF,iBAAY,GAAyB;YACnC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,MAAM,EAAE,0BAA0B;iBACnC;aACF;SACF,CAAC;QAEF,SAAI,GAA2B;YAC7B,OAAO,EAAE;gBACP,OAAO,EAAE,2BAA2B;gBACpC,GAAG,EAAE,UAAU;aAChB;SACF,CAAC;IACJ,CAAC;CAAA;AA7CD,8BA6CC"}
@@ -0,0 +1,5 @@
1
+ import type { IDataObject, IExecuteFunctions, IHttpRequestMethods, ILoadOptionsFunctions, INodePropertyOptions } from "n8n-workflow";
2
+ import FormData from "form-data";
3
+ export declare function meowerApiRequest(this: IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, path: string, body?: IDataObject, qs?: IDataObject): Promise<any>;
4
+ export declare function meowerApiRequestMultipart(this: IExecuteFunctions, method: IHttpRequestMethods, path: string, form: FormData): Promise<any>;
5
+ export declare function getInstances(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.meowerApiRequest = meowerApiRequest;
4
+ exports.meowerApiRequestMultipart = meowerApiRequestMultipart;
5
+ exports.getInstances = getInstances;
6
+ async function resolveUrl(path) {
7
+ const credentials = await this.getCredentials("meowerApi");
8
+ const baseUrl = credentials.baseUrl.replace(/\/+$/, "");
9
+ return `${baseUrl}${path}`;
10
+ }
11
+ async function meowerApiRequest(method, path, body, qs) {
12
+ const options = {
13
+ method,
14
+ url: await resolveUrl.call(this, path),
15
+ json: true,
16
+ };
17
+ if (body !== undefined && Object.keys(body).length > 0)
18
+ options.body = body;
19
+ if (qs !== undefined && Object.keys(qs).length > 0)
20
+ options.qs = qs;
21
+ return this.helpers.httpRequestWithAuthentication.call(this, "meowerApi", options);
22
+ }
23
+ async function meowerApiRequestMultipart(method, path, form) {
24
+ const options = {
25
+ method,
26
+ url: await resolveUrl.call(this, path),
27
+ body: form,
28
+ headers: form.getHeaders(),
29
+ json: true,
30
+ };
31
+ return this.helpers.httpRequestWithAuthentication.call(this, "meowerApi", options);
32
+ }
33
+ async function getInstances() {
34
+ const instances = (await meowerApiRequest.call(this, "GET", "/instance"));
35
+ return instances.map((instance) => ({
36
+ name: `${instance.instanceName} (${instance.status})`,
37
+ value: instance.instanceName,
38
+ }));
39
+ }
40
+ //# sourceMappingURL=GenericFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/Meower/GenericFunctions.ts"],"names":[],"mappings":";;AA0BA,4CAgBC;AAED,8DAeC;AAID,oCAYC;AA7DD,KAAK,UAAU,UAAU,CAEvB,IAAY;IAEZ,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAI,WAAW,CAAC,OAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpE,OAAO,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC;AAC7B,CAAC;AAKM,KAAK,UAAU,gBAAgB,CAEpC,MAA2B,EAC3B,IAAY,EACZ,IAAkB,EAClB,EAAgB;IAEhB,MAAM,OAAO,GAAwB;QACnC,MAAM;QACN,GAAG,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;QACtC,IAAI,EAAE,IAAI;KACX,CAAC;IACF,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAC5E,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAEpE,OAAO,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AACrF,CAAC;AAEM,KAAK,UAAU,yBAAyB,CAE7C,MAA2B,EAC3B,IAAY,EACZ,IAAc;IAEd,MAAM,OAAO,GAAwB;QACnC,MAAM;QACN,GAAG,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;QACtC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;QAC1B,IAAI,EAAE,IAAI;KACX,CAAC;IAEF,OAAO,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AACrF,CAAC;AAIM,KAAK,UAAU,YAAY;IAGhC,MAAM,SAAS,GAAG,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAGtE,CAAC;IAEH,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,EAAE,GAAG,QAAQ,CAAC,YAAY,KAAK,QAAQ,CAAC,MAAM,GAAG;QACrD,KAAK,EAAE,QAAQ,CAAC,YAAY;KAC7B,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from "n8n-workflow";
2
+ import { getInstances } from "./GenericFunctions";
3
+ export declare class Meower implements INodeType {
4
+ description: INodeTypeDescription;
5
+ methods: {
6
+ loadOptions: {
7
+ getInstances: typeof getInstances;
8
+ };
9
+ };
10
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
11
+ }
@@ -0,0 +1,570 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Meower = void 0;
7
+ const n8n_workflow_1 = require("n8n-workflow");
8
+ const form_data_1 = __importDefault(require("form-data"));
9
+ const GenericFunctions_1 = require("./GenericFunctions");
10
+ function splitList(value) {
11
+ return value
12
+ .split(",")
13
+ .map((v) => v.trim())
14
+ .filter((v) => v.length > 0);
15
+ }
16
+ const instanceProperty = {
17
+ displayName: "Instance Name or ID",
18
+ name: "instance",
19
+ type: "options",
20
+ typeOptions: { loadOptionsMethod: "getInstances" },
21
+ required: true,
22
+ default: "",
23
+ description: 'Instância da Meower a usar. Escolha na lista, ou informe o nome via <a href="https://docs.n8n.io/code/expressions/">expressão</a>.',
24
+ };
25
+ const jidProperty = (operations) => ({
26
+ displayName: "Chat/Group JID",
27
+ name: "jid",
28
+ type: "string",
29
+ required: true,
30
+ default: "",
31
+ placeholder: "5511999999999@s.whatsapp.net ou 123456-123456@g.us",
32
+ description: "Identificador da conversa ou grupo no WhatsApp",
33
+ displayOptions: { show: { operation: operations } },
34
+ });
35
+ class Meower {
36
+ constructor() {
37
+ this.description = {
38
+ displayName: "Meower",
39
+ name: "meower",
40
+ icon: "file:meower.svg",
41
+ group: ["transform"],
42
+ version: 1,
43
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
44
+ description: "Envia mensagens e gerencia WhatsApp através da Meower (whatsmeow + Chatwoot bridge)",
45
+ defaults: { name: "Meower" },
46
+ inputs: ["main"],
47
+ outputs: ["main"],
48
+ credentials: [{ name: "meowerApi", required: true }],
49
+ properties: [
50
+ {
51
+ displayName: "Resource",
52
+ name: "resource",
53
+ type: "options",
54
+ noDataExpression: true,
55
+ options: [
56
+ { name: "Message", value: "message" },
57
+ { name: "Chat", value: "chat" },
58
+ { name: "Group", value: "group" },
59
+ { name: "Contact", value: "contact" },
60
+ ],
61
+ default: "message",
62
+ },
63
+ {
64
+ displayName: "Operation",
65
+ name: "operation",
66
+ type: "options",
67
+ noDataExpression: true,
68
+ displayOptions: { show: { resource: ["message"] } },
69
+ options: [
70
+ { name: "Send Text", value: "sendText", action: "Send a text message" },
71
+ { name: "Send Media", value: "sendMedia", action: "Send an image, video, audio or document" },
72
+ { name: "Edit Message", value: "editMessage", action: "Edit a message already sent" },
73
+ { name: "Delete Message", value: "deleteMessage", action: "Delete (revoke) a message already sent" },
74
+ { name: "Set Reaction", value: "setReaction", action: "React to a message with an emoji" },
75
+ { name: "Remove Reaction", value: "removeReaction", action: "Remove your reaction from a message" },
76
+ { name: "Get Messages", value: "getMessages", action: "Get the message history of a chat" },
77
+ ],
78
+ default: "sendText",
79
+ },
80
+ {
81
+ displayName: "Operation",
82
+ name: "operation",
83
+ type: "options",
84
+ noDataExpression: true,
85
+ displayOptions: { show: { resource: ["chat"] } },
86
+ options: [
87
+ { name: "List Chats", value: "list", action: "List chats" },
88
+ { name: "Start Chat", value: "start", action: "Start or open a chat" },
89
+ { name: "Set Typing Presence", value: "setPresence", action: "Toggle the typing indicator" },
90
+ { name: "Get Link Preview", value: "getLinkPreview", action: "Fetch og metadata for a url" },
91
+ ],
92
+ default: "list",
93
+ },
94
+ {
95
+ displayName: "Operation",
96
+ name: "operation",
97
+ type: "options",
98
+ noDataExpression: true,
99
+ displayOptions: { show: { resource: ["group"] } },
100
+ options: [
101
+ { name: "List Groups", value: "list", action: "List groups" },
102
+ { name: "Create Group", value: "create", action: "Create a group" },
103
+ { name: "Update Group", value: "update", action: "Update group name, description or photo" },
104
+ { name: "Join Group", value: "join", action: "Join a group via invite link" },
105
+ { name: "Leave Group", value: "leave", action: "Leave a group" },
106
+ {
107
+ name: "Update Participants",
108
+ value: "updateParticipants",
109
+ action: "Add, remove, promote or demote participants",
110
+ },
111
+ {
112
+ name: "Set Announce Mode",
113
+ value: "setAnnounce",
114
+ action: "Restrict messaging to admins only or allow everyone",
115
+ },
116
+ ],
117
+ default: "list",
118
+ },
119
+ {
120
+ displayName: "Operation",
121
+ name: "operation",
122
+ type: "options",
123
+ noDataExpression: true,
124
+ displayOptions: { show: { resource: ["contact"] } },
125
+ options: [
126
+ { name: "List Contacts", value: "list", action: "List contacts" },
127
+ { name: "Get Avatar", value: "getAvatar", action: "Get a contact or group avatar url" },
128
+ ],
129
+ default: "list",
130
+ },
131
+ instanceProperty,
132
+ jidProperty(["sendText", "sendMedia", "editMessage", "deleteMessage", "setReaction", "removeReaction", "getMessages"]),
133
+ {
134
+ displayName: "Text",
135
+ name: "text",
136
+ type: "string",
137
+ typeOptions: { rows: 3 },
138
+ required: true,
139
+ default: "",
140
+ displayOptions: { show: { resource: ["message"], operation: ["sendText"] } },
141
+ },
142
+ {
143
+ displayName: "Additional Fields",
144
+ name: "sendTextOptions",
145
+ type: "collection",
146
+ placeholder: "Add Field",
147
+ default: {},
148
+ displayOptions: { show: { resource: ["message"], operation: ["sendText"] } },
149
+ options: [
150
+ { displayName: "Reply To (Message ID)", name: "replyTo", type: "string", default: "" },
151
+ { displayName: "Fetch Link Preview", name: "linkPreview", type: "boolean", default: false },
152
+ ],
153
+ },
154
+ {
155
+ displayName: "Kind",
156
+ name: "kind",
157
+ type: "options",
158
+ required: true,
159
+ default: "image",
160
+ options: [
161
+ { name: "Image", value: "image" },
162
+ { name: "Video", value: "video" },
163
+ { name: "Audio", value: "audio" },
164
+ { name: "Document", value: "document" },
165
+ ],
166
+ displayOptions: { show: { resource: ["message"], operation: ["sendMedia"] } },
167
+ },
168
+ {
169
+ displayName: "Input Binary Field",
170
+ name: "binaryPropertyName",
171
+ type: "string",
172
+ default: "data",
173
+ required: true,
174
+ description: "Nome da propriedade binária (item de entrada) com o arquivo a enviar",
175
+ displayOptions: { show: { resource: ["message"], operation: ["sendMedia"] } },
176
+ },
177
+ {
178
+ displayName: "Additional Fields",
179
+ name: "sendMediaOptions",
180
+ type: "collection",
181
+ placeholder: "Add Field",
182
+ default: {},
183
+ displayOptions: { show: { resource: ["message"], operation: ["sendMedia"] } },
184
+ options: [
185
+ { displayName: "Caption", name: "caption", type: "string", default: "" },
186
+ { displayName: "File Name", name: "fileName", type: "string", default: "" },
187
+ ],
188
+ },
189
+ {
190
+ displayName: "Message ID",
191
+ name: "messageId",
192
+ type: "string",
193
+ required: true,
194
+ default: "",
195
+ description: "ID (do WhatsApp) da mensagem original",
196
+ displayOptions: {
197
+ show: { resource: ["message"], operation: ["editMessage", "deleteMessage", "setReaction", "removeReaction"] },
198
+ },
199
+ },
200
+ {
201
+ displayName: "Text",
202
+ name: "editText",
203
+ type: "string",
204
+ typeOptions: { rows: 3 },
205
+ required: true,
206
+ default: "",
207
+ displayOptions: { show: { resource: ["message"], operation: ["editMessage"] } },
208
+ },
209
+ {
210
+ displayName: "Emoji",
211
+ name: "emoji",
212
+ type: "string",
213
+ required: true,
214
+ default: "👍",
215
+ displayOptions: { show: { resource: ["message"], operation: ["setReaction"] } },
216
+ },
217
+ {
218
+ displayName: "Additional Fields",
219
+ name: "getMessagesOptions",
220
+ type: "collection",
221
+ placeholder: "Add Field",
222
+ default: {},
223
+ displayOptions: { show: { resource: ["message"], operation: ["getMessages"] } },
224
+ options: [
225
+ { displayName: "Limit", name: "limit", type: "number", default: 50 },
226
+ {
227
+ displayName: "Before (RFC3339)",
228
+ name: "before",
229
+ type: "string",
230
+ default: "",
231
+ description: "Busca mensagens anteriores a esse timestamp, ex: 2026-01-01T00:00:00Z",
232
+ },
233
+ ],
234
+ },
235
+ {
236
+ displayName: "Number or JID",
237
+ name: "number",
238
+ type: "string",
239
+ required: true,
240
+ default: "",
241
+ placeholder: "5511999999999",
242
+ description: "Número (com DDI/DDD) ou jid do contato",
243
+ displayOptions: { show: { resource: ["chat"], operation: ["start"] } },
244
+ },
245
+ jidProperty(["setPresence"]),
246
+ {
247
+ displayName: "Composing",
248
+ name: "composing",
249
+ type: "boolean",
250
+ default: true,
251
+ description: 'Whether "digitando..." should be shown (true) or hidden (false)',
252
+ displayOptions: { show: { resource: ["chat"], operation: ["setPresence"] } },
253
+ },
254
+ {
255
+ displayName: "Text",
256
+ name: "linkPreviewText",
257
+ type: "string",
258
+ typeOptions: { rows: 2 },
259
+ required: true,
260
+ default: "",
261
+ description: "Texto contendo a URL a ser verificada",
262
+ displayOptions: { show: { resource: ["chat"], operation: ["getLinkPreview"] } },
263
+ },
264
+ {
265
+ displayName: "Group Name",
266
+ name: "groupName",
267
+ type: "string",
268
+ required: true,
269
+ default: "",
270
+ displayOptions: { show: { resource: ["group"], operation: ["create"] } },
271
+ },
272
+ {
273
+ displayName: "Participants",
274
+ name: "createParticipants",
275
+ type: "string",
276
+ required: true,
277
+ default: "",
278
+ description: "Números ou jids separados por vírgula — o WhatsApp exige pelo menos 1 além de quem cria",
279
+ displayOptions: { show: { resource: ["group"], operation: ["create"] } },
280
+ },
281
+ {
282
+ displayName: "Additional Fields",
283
+ name: "createGroupOptions",
284
+ type: "collection",
285
+ placeholder: "Add Field",
286
+ default: {},
287
+ displayOptions: { show: { resource: ["group"], operation: ["create"] } },
288
+ options: [
289
+ { displayName: "Description", name: "description", type: "string", default: "" },
290
+ {
291
+ displayName: "Photo Binary Field",
292
+ name: "binaryPropertyName",
293
+ type: "string",
294
+ default: "",
295
+ description: "Nome da propriedade binária (item de entrada) com a foto do grupo. Deixe em branco para não definir foto.",
296
+ },
297
+ ],
298
+ },
299
+ jidProperty(["update", "leave", "updateParticipants", "setAnnounce"]),
300
+ {
301
+ displayName: "Additional Fields",
302
+ name: "updateGroupOptions",
303
+ type: "collection",
304
+ placeholder: "Add Field",
305
+ default: {},
306
+ displayOptions: { show: { resource: ["group"], operation: ["update"] } },
307
+ options: [
308
+ { displayName: "Group Name", name: "name", type: "string", default: "" },
309
+ { displayName: "Description", name: "description", type: "string", default: "" },
310
+ {
311
+ displayName: "Photo Binary Field",
312
+ name: "binaryPropertyName",
313
+ type: "string",
314
+ default: "",
315
+ description: "Nome da propriedade binária (item de entrada) com a nova foto do grupo. Deixe em branco para não alterar.",
316
+ },
317
+ ],
318
+ },
319
+ {
320
+ displayName: "Invite Link or Code",
321
+ name: "inviteLink",
322
+ type: "string",
323
+ required: true,
324
+ default: "",
325
+ placeholder: "https://chat.whatsapp.com/XXXXXXXXXXXXXXXXXXXXXX",
326
+ displayOptions: { show: { resource: ["group"], operation: ["join"] } },
327
+ },
328
+ {
329
+ displayName: "Participants",
330
+ name: "updateParticipantsList",
331
+ type: "string",
332
+ required: true,
333
+ default: "",
334
+ description: "Números ou jids separados por vírgula",
335
+ displayOptions: { show: { resource: ["group"], operation: ["updateParticipants"] } },
336
+ },
337
+ {
338
+ displayName: "Action",
339
+ name: "participantAction",
340
+ type: "options",
341
+ required: true,
342
+ default: "add",
343
+ options: [
344
+ { name: "Add", value: "add" },
345
+ { name: "Remove", value: "remove" },
346
+ { name: "Promote to Admin", value: "promote" },
347
+ { name: "Demote From Admin", value: "demote" },
348
+ ],
349
+ displayOptions: { show: { resource: ["group"], operation: ["updateParticipants"] } },
350
+ },
351
+ {
352
+ displayName: "Only Admins Can Send Messages",
353
+ name: "announce",
354
+ type: "boolean",
355
+ default: true,
356
+ displayOptions: { show: { resource: ["group"], operation: ["setAnnounce"] } },
357
+ },
358
+ jidProperty(["getAvatar"]),
359
+ ],
360
+ };
361
+ this.methods = {
362
+ loadOptions: {
363
+ getInstances: GenericFunctions_1.getInstances,
364
+ },
365
+ };
366
+ }
367
+ async execute() {
368
+ const items = this.getInputData();
369
+ const returnData = [];
370
+ const resource = this.getNodeParameter("resource", 0);
371
+ const operation = this.getNodeParameter("operation", 0);
372
+ for (let i = 0; i < items.length; i++) {
373
+ try {
374
+ const instance = this.getNodeParameter("instance", i);
375
+ const base = `/instance/${encodeURIComponent(instance)}`;
376
+ let responseData = {};
377
+ if (resource === "message") {
378
+ responseData = await executeMessage.call(this, operation, base, i);
379
+ }
380
+ else if (resource === "chat") {
381
+ responseData = await executeChat.call(this, operation, base, i);
382
+ }
383
+ else if (resource === "group") {
384
+ responseData = await executeGroup.call(this, operation, base, i);
385
+ }
386
+ else if (resource === "contact") {
387
+ responseData = await executeContact.call(this, operation, base, i);
388
+ }
389
+ else {
390
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Recurso desconhecido: ${resource}`, { itemIndex: i });
391
+ }
392
+ if (Array.isArray(responseData)) {
393
+ for (const entry of responseData) {
394
+ returnData.push({ json: entry, pairedItem: { item: i } });
395
+ }
396
+ }
397
+ else {
398
+ returnData.push({ json: responseData, pairedItem: { item: i } });
399
+ }
400
+ }
401
+ catch (error) {
402
+ if (this.continueOnFail()) {
403
+ returnData.push({
404
+ json: { error: error.message },
405
+ pairedItem: { item: i },
406
+ });
407
+ continue;
408
+ }
409
+ throw error;
410
+ }
411
+ }
412
+ return [returnData];
413
+ }
414
+ }
415
+ exports.Meower = Meower;
416
+ async function executeMessage(operation, base, i) {
417
+ const jid = this.getNodeParameter("jid", i);
418
+ const messagesPath = `${base}/chats/${encodeURIComponent(jid)}/messages`;
419
+ switch (operation) {
420
+ case "sendText": {
421
+ const text = this.getNodeParameter("text", i);
422
+ const options = this.getNodeParameter("sendTextOptions", i);
423
+ return GenericFunctions_1.meowerApiRequest.call(this, "POST", messagesPath, {
424
+ text,
425
+ replyTo: options.replyTo || undefined,
426
+ linkPreview: options.linkPreview || undefined,
427
+ });
428
+ }
429
+ case "sendMedia": {
430
+ const kind = this.getNodeParameter("kind", i);
431
+ const binaryPropertyName = this.getNodeParameter("binaryPropertyName", i);
432
+ const options = this.getNodeParameter("sendMediaOptions", i);
433
+ const binaryData = this.helpers.assertBinaryData(i, binaryPropertyName);
434
+ const buffer = await this.helpers.getBinaryDataBuffer(i, binaryPropertyName);
435
+ const form = new form_data_1.default();
436
+ form.append("kind", kind);
437
+ if (options.caption)
438
+ form.append("caption", options.caption);
439
+ const fileName = options.fileName || binaryData.fileName || "file";
440
+ form.append("fileName", fileName);
441
+ form.append("file", buffer, { filename: fileName, contentType: binaryData.mimeType });
442
+ return GenericFunctions_1.meowerApiRequestMultipart.call(this, "POST", `${base}/chats/${encodeURIComponent(jid)}/media`, form);
443
+ }
444
+ case "editMessage": {
445
+ const messageId = this.getNodeParameter("messageId", i);
446
+ const text = this.getNodeParameter("editText", i);
447
+ return GenericFunctions_1.meowerApiRequest.call(this, "PATCH", `${messagesPath}/${encodeURIComponent(messageId)}`, { text });
448
+ }
449
+ case "deleteMessage": {
450
+ const messageId = this.getNodeParameter("messageId", i);
451
+ return GenericFunctions_1.meowerApiRequest.call(this, "DELETE", `${messagesPath}/${encodeURIComponent(messageId)}`);
452
+ }
453
+ case "setReaction": {
454
+ const messageId = this.getNodeParameter("messageId", i);
455
+ const emoji = this.getNodeParameter("emoji", i);
456
+ return GenericFunctions_1.meowerApiRequest.call(this, "PUT", `${messagesPath}/${encodeURIComponent(messageId)}/reactions`, { emoji });
457
+ }
458
+ case "removeReaction": {
459
+ const messageId = this.getNodeParameter("messageId", i);
460
+ return GenericFunctions_1.meowerApiRequest.call(this, "DELETE", `${messagesPath}/${encodeURIComponent(messageId)}/reactions`);
461
+ }
462
+ case "getMessages": {
463
+ const options = this.getNodeParameter("getMessagesOptions", i);
464
+ const qs = {};
465
+ if (options.limit)
466
+ qs.limit = options.limit;
467
+ if (options.before)
468
+ qs.before = options.before;
469
+ return GenericFunctions_1.meowerApiRequest.call(this, "GET", messagesPath, undefined, qs);
470
+ }
471
+ default:
472
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Operação de mensagem desconhecida: ${operation}`, { itemIndex: i });
473
+ }
474
+ }
475
+ async function executeChat(operation, base, i) {
476
+ switch (operation) {
477
+ case "list":
478
+ return GenericFunctions_1.meowerApiRequest.call(this, "GET", `${base}/chats`);
479
+ case "start": {
480
+ const number = this.getNodeParameter("number", i);
481
+ return GenericFunctions_1.meowerApiRequest.call(this, "POST", `${base}/chats/start`, { number });
482
+ }
483
+ case "setPresence": {
484
+ const jid = this.getNodeParameter("jid", i);
485
+ const composing = this.getNodeParameter("composing", i);
486
+ return GenericFunctions_1.meowerApiRequest.call(this, "POST", `${base}/chats/${encodeURIComponent(jid)}/presence`, { composing });
487
+ }
488
+ case "getLinkPreview": {
489
+ const text = this.getNodeParameter("linkPreviewText", i);
490
+ return GenericFunctions_1.meowerApiRequest.call(this, "POST", `${base}/link-preview`, { text });
491
+ }
492
+ default:
493
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Operação de chat desconhecida: ${operation}`, { itemIndex: i });
494
+ }
495
+ }
496
+ async function executeGroup(operation, base, i) {
497
+ const groupsPath = `${base}/groups`;
498
+ switch (operation) {
499
+ case "list":
500
+ return GenericFunctions_1.meowerApiRequest.call(this, "GET", groupsPath);
501
+ case "create": {
502
+ const groupName = this.getNodeParameter("groupName", i);
503
+ const participants = splitList(this.getNodeParameter("createParticipants", i));
504
+ const options = this.getNodeParameter("createGroupOptions", i);
505
+ const form = new form_data_1.default();
506
+ form.append("name", groupName);
507
+ for (const participant of participants)
508
+ form.append("participants", participant);
509
+ if (options.description)
510
+ form.append("description", options.description);
511
+ await appendBinaryIfSet.call(this, form, "photo", options.binaryPropertyName, i);
512
+ return GenericFunctions_1.meowerApiRequestMultipart.call(this, "POST", groupsPath, form);
513
+ }
514
+ case "update": {
515
+ const jid = this.getNodeParameter("jid", i);
516
+ const options = this.getNodeParameter("updateGroupOptions", i);
517
+ const form = new form_data_1.default();
518
+ if (options.name)
519
+ form.append("name", options.name);
520
+ if (options.description)
521
+ form.append("description", options.description);
522
+ await appendBinaryIfSet.call(this, form, "photo", options.binaryPropertyName, i);
523
+ return GenericFunctions_1.meowerApiRequestMultipart.call(this, "PATCH", `${groupsPath}/${encodeURIComponent(jid)}`, form);
524
+ }
525
+ case "join": {
526
+ const link = this.getNodeParameter("inviteLink", i);
527
+ return GenericFunctions_1.meowerApiRequest.call(this, "POST", `${groupsPath}/join`, { link });
528
+ }
529
+ case "leave": {
530
+ const jid = this.getNodeParameter("jid", i);
531
+ return GenericFunctions_1.meowerApiRequest.call(this, "POST", `${groupsPath}/${encodeURIComponent(jid)}/leave`);
532
+ }
533
+ case "updateParticipants": {
534
+ const jid = this.getNodeParameter("jid", i);
535
+ const participants = splitList(this.getNodeParameter("updateParticipantsList", i));
536
+ const action = this.getNodeParameter("participantAction", i);
537
+ return GenericFunctions_1.meowerApiRequest.call(this, "POST", `${groupsPath}/${encodeURIComponent(jid)}/participants`, {
538
+ participants,
539
+ action,
540
+ });
541
+ }
542
+ case "setAnnounce": {
543
+ const jid = this.getNodeParameter("jid", i);
544
+ const announce = this.getNodeParameter("announce", i);
545
+ return GenericFunctions_1.meowerApiRequest.call(this, "POST", `${groupsPath}/${encodeURIComponent(jid)}/announce`, { announce });
546
+ }
547
+ default:
548
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Operação de grupo desconhecida: ${operation}`, { itemIndex: i });
549
+ }
550
+ }
551
+ async function executeContact(operation, base, i) {
552
+ switch (operation) {
553
+ case "list":
554
+ return GenericFunctions_1.meowerApiRequest.call(this, "GET", `${base}/contacts`);
555
+ case "getAvatar": {
556
+ const jid = this.getNodeParameter("jid", i);
557
+ return GenericFunctions_1.meowerApiRequest.call(this, "GET", `${base}/avatar`, undefined, { jid });
558
+ }
559
+ default:
560
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Operação de contato desconhecida: ${operation}`, { itemIndex: i });
561
+ }
562
+ }
563
+ async function appendBinaryIfSet(form, fieldName, binaryPropertyName, itemIndex) {
564
+ if (!binaryPropertyName)
565
+ return;
566
+ const binaryData = this.helpers.assertBinaryData(itemIndex, binaryPropertyName);
567
+ const buffer = await this.helpers.getBinaryDataBuffer(itemIndex, binaryPropertyName);
568
+ form.append(fieldName, buffer, { filename: binaryData.fileName || fieldName, contentType: binaryData.mimeType });
569
+ }
570
+ //# sourceMappingURL=Meower.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Meower.node.js","sourceRoot":"","sources":["../../../nodes/Meower/Meower.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48" height="48">
2
+ <rect width="48" height="48" rx="10" fill="#25D366"/>
3
+ <path d="M12 16a4 4 0 0 1 4-4h16a4 4 0 0 1 4 4v10a4 4 0 0 1-4 4H20l-6 5v-5h-2a4 4 0 0 1-4-4V16Z" fill="#ffffff"/>
4
+ <circle cx="19" cy="21" r="2" fill="#25D366"/>
5
+ <circle cx="24" cy="21" r="2" fill="#25D366"/>
6
+ <circle cx="29" cy="21" r="2" fill="#25D366"/>
7
+ </svg>
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "n8n-nodes-meower",
3
+ "version": "0.1.0",
4
+ "description": "n8n community node para automatizar WhatsApp via Meower (whatsmeow + Chatwoot bridge)",
5
+ "keywords": [
6
+ "n8n-community-node-package"
7
+ ],
8
+ "license": "MIT",
9
+ "homepage": "https://github.com/ruizivo/meower",
10
+ "author": {
11
+ "name": "Rui Menezes"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "https://github.com/ruizivo/meower.git",
16
+ "directory": "n8n-nodes-meower"
17
+ },
18
+ "files": [
19
+ "dist"
20
+ ],
21
+ "n8n": {
22
+ "n8nNodesApiVersion": 1,
23
+ "credentials": [
24
+ "dist/credentials/MeowerApi.credentials.js"
25
+ ],
26
+ "nodes": [
27
+ "dist/nodes/Meower/Meower.node.js"
28
+ ]
29
+ },
30
+ "scripts": {
31
+ "build": "tsc && gulp build:icons",
32
+ "dev": "tsc --watch",
33
+ "lint": "eslint nodes credentials --ext .ts",
34
+ "lintfix": "eslint nodes credentials --ext .ts --fix",
35
+ "prepublishOnly": "npm run build && npm run lint"
36
+ },
37
+ "dependencies": {
38
+ "form-data": "^4.0.0"
39
+ },
40
+ "devDependencies": {
41
+ "@types/node": "^20.0.0",
42
+ "@typescript-eslint/parser": "^7.0.0",
43
+ "eslint": "^8.57.0",
44
+ "eslint-plugin-n8n-nodes-base": "^1.16.0",
45
+ "gulp": "^4.0.2",
46
+ "n8n-workflow": "*",
47
+ "semantic-release": "^25.0.0",
48
+ "semantic-release-monorepo": "^8.0.2",
49
+ "typescript": "^5.4.0"
50
+ },
51
+ "peerDependencies": {
52
+ "n8n-workflow": "*"
53
+ }
54
+ }