n8n-nodes-nowely-y-test 1.0.0 → 1.0.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.
Files changed (193) hide show
  1. package/README.md +276 -264
  2. package/dist/credentials/GreenApiAuthApi.credentials.js +19 -2
  3. package/dist/credentials/GreenApiAuthApi.credentials.js.map +1 -1
  4. package/dist/nodes/Greenapi/GreenapiTrigger.node.js +205 -42
  5. package/dist/nodes/Greenapi/GreenapiTrigger.node.js.map +1 -1
  6. package/dist/nodes/Greenapi/GreenapiV1.node.js +220 -208
  7. package/dist/nodes/Greenapi/GreenapiV1.node.js.map +1 -1
  8. package/dist/nodes/Greenapi/helpers/apiUrl.js +3 -1
  9. package/dist/nodes/Greenapi/helpers/apiUrl.js.map +1 -1
  10. package/dist/nodes/Greenapi/helpers/errors.d.ts +2 -0
  11. package/dist/nodes/Greenapi/helpers/errors.js +19 -0
  12. package/dist/nodes/Greenapi/helpers/errors.js.map +1 -0
  13. package/dist/nodes/Greenapi/helpers/executeExpanded.js +8 -7
  14. package/dist/nodes/Greenapi/helpers/executeExpanded.js.map +1 -1
  15. package/dist/nodes/Greenapi/helpers/executeList.js +8 -7
  16. package/dist/nodes/Greenapi/helpers/executeList.js.map +1 -1
  17. package/dist/nodes/Greenapi/helpers/executeMessages.js +8 -7
  18. package/dist/nodes/Greenapi/helpers/executeMessages.js.map +1 -1
  19. package/dist/nodes/Greenapi/helpers/executePerItem.d.ts +1 -1
  20. package/dist/nodes/Greenapi/helpers/executePerItem.js +7 -16
  21. package/dist/nodes/Greenapi/helpers/executePerItem.js.map +1 -1
  22. package/dist/nodes/Greenapi/helpers/getParams.js +5 -1
  23. package/dist/nodes/Greenapi/helpers/getParams.js.map +1 -1
  24. package/dist/nodes/Greenapi/helpers/groupId.d.ts +2 -0
  25. package/dist/nodes/Greenapi/helpers/groupId.js +8 -0
  26. package/dist/nodes/Greenapi/helpers/groupId.js.map +1 -0
  27. package/dist/nodes/Greenapi/helpers/listSearch.js +23 -9
  28. package/dist/nodes/Greenapi/helpers/listSearch.js.map +1 -1
  29. package/dist/nodes/Greenapi/helpers/optionalSendFields.js +3 -2
  30. package/dist/nodes/Greenapi/helpers/optionalSendFields.js.map +1 -1
  31. package/dist/nodes/Greenapi/helpers/request.d.ts +1 -1
  32. package/dist/nodes/Greenapi/helpers/request.js +3 -24
  33. package/dist/nodes/Greenapi/helpers/request.js.map +1 -1
  34. package/dist/nodes/Greenapi/helpers/retry.d.ts +10 -0
  35. package/dist/nodes/Greenapi/helpers/retry.js +30 -0
  36. package/dist/nodes/Greenapi/helpers/retry.js.map +1 -0
  37. package/dist/nodes/Greenapi/helpers/simplify.js +27 -3
  38. package/dist/nodes/Greenapi/helpers/simplify.js.map +1 -1
  39. package/dist/nodes/Greenapi/helpers/typingTime.d.ts +3 -0
  40. package/dist/nodes/Greenapi/helpers/typingTime.js +13 -0
  41. package/dist/nodes/Greenapi/helpers/typingTime.js.map +1 -0
  42. package/dist/nodes/Greenapi/operations/addGroupParticipant.js +4 -1
  43. package/dist/nodes/Greenapi/operations/addGroupParticipant.js.map +1 -1
  44. package/dist/nodes/Greenapi/operations/deleteMessage.js +1 -4
  45. package/dist/nodes/Greenapi/operations/deleteMessage.js.map +1 -1
  46. package/dist/nodes/Greenapi/operations/deleteStatus.js +1 -4
  47. package/dist/nodes/Greenapi/operations/deleteStatus.js.map +1 -1
  48. package/dist/nodes/Greenapi/operations/downloadFile.js +4 -3
  49. package/dist/nodes/Greenapi/operations/downloadFile.js.map +1 -1
  50. package/dist/nodes/Greenapi/operations/getAllowedReactions.js +1 -1
  51. package/dist/nodes/Greenapi/operations/getAllowedReactions.js.map +1 -1
  52. package/dist/nodes/Greenapi/operations/getContactInfo.js +1 -1
  53. package/dist/nodes/Greenapi/operations/getGroupData.js +4 -1
  54. package/dist/nodes/Greenapi/operations/getGroupData.js.map +1 -1
  55. package/dist/nodes/Greenapi/operations/getIncomingStatuses.js +5 -2
  56. package/dist/nodes/Greenapi/operations/getIncomingStatuses.js.map +1 -1
  57. package/dist/nodes/Greenapi/operations/getOutgoingStatuses.js +5 -2
  58. package/dist/nodes/Greenapi/operations/getOutgoingStatuses.js.map +1 -1
  59. package/dist/nodes/Greenapi/operations/getStatusStatistic.js +7 -4
  60. package/dist/nodes/Greenapi/operations/getStatusStatistic.js.map +1 -1
  61. package/dist/nodes/Greenapi/operations/lastIncomingCalls.js +1 -1
  62. package/dist/nodes/Greenapi/operations/lastIncomingCalls.js.map +1 -1
  63. package/dist/nodes/Greenapi/operations/lastIncomingMessages.js +1 -1
  64. package/dist/nodes/Greenapi/operations/lastIncomingMessages.js.map +1 -1
  65. package/dist/nodes/Greenapi/operations/lastOutgoingCalls.js +1 -1
  66. package/dist/nodes/Greenapi/operations/lastOutgoingCalls.js.map +1 -1
  67. package/dist/nodes/Greenapi/operations/lastOutgoingMessages.js +1 -1
  68. package/dist/nodes/Greenapi/operations/lastOutgoingMessages.js.map +1 -1
  69. package/dist/nodes/Greenapi/operations/leaveGroup.js +4 -1
  70. package/dist/nodes/Greenapi/operations/leaveGroup.js.map +1 -1
  71. package/dist/nodes/Greenapi/operations/removeAdmin.js +4 -1
  72. package/dist/nodes/Greenapi/operations/removeAdmin.js.map +1 -1
  73. package/dist/nodes/Greenapi/operations/removeGroupParticipant.js +4 -1
  74. package/dist/nodes/Greenapi/operations/removeGroupParticipant.js.map +1 -1
  75. package/dist/nodes/Greenapi/operations/sendInteractiveButtons.js +6 -6
  76. package/dist/nodes/Greenapi/operations/sendInteractiveButtons.js.map +1 -1
  77. package/dist/nodes/Greenapi/operations/sendMediaStatus.js +1 -1
  78. package/dist/nodes/Greenapi/operations/sendMediaStatus.js.map +1 -1
  79. package/dist/nodes/Greenapi/operations/sendTemplate.js +4 -4
  80. package/dist/nodes/Greenapi/operations/sendTemplate.js.map +1 -1
  81. package/dist/nodes/Greenapi/operations/sendTextStatus.js +2 -2
  82. package/dist/nodes/Greenapi/operations/sendTextStatus.js.map +1 -1
  83. package/dist/nodes/Greenapi/operations/sendTyping.js +9 -5
  84. package/dist/nodes/Greenapi/operations/sendTyping.js.map +1 -1
  85. package/dist/nodes/Greenapi/operations/sendVoiceStatus.js +1 -1
  86. package/dist/nodes/Greenapi/operations/sendVoiceStatus.js.map +1 -1
  87. package/dist/nodes/Greenapi/operations/setGroupAdmin.js +4 -1
  88. package/dist/nodes/Greenapi/operations/setGroupAdmin.js.map +1 -1
  89. package/dist/nodes/Greenapi/operations/updateGroupName.js +4 -1
  90. package/dist/nodes/Greenapi/operations/updateGroupName.js.map +1 -1
  91. package/dist/nodes/Greenapi/properties/account/accountOperations.js +6 -6
  92. package/dist/nodes/Greenapi/properties/account/accountOperations.js.map +1 -1
  93. package/dist/nodes/Greenapi/properties/account/fields/setSettings.js +5 -8
  94. package/dist/nodes/Greenapi/properties/account/fields/setSettings.js.map +1 -1
  95. package/dist/nodes/Greenapi/properties/cloudPassword/fields/cloudPassword.js +8 -8
  96. package/dist/nodes/Greenapi/properties/cloudPassword/fields/cloudPassword.js.map +1 -1
  97. package/dist/nodes/Greenapi/properties/contacts/contactsOperations.js +10 -19
  98. package/dist/nodes/Greenapi/properties/contacts/contactsOperations.js.map +1 -1
  99. package/dist/nodes/Greenapi/properties/contacts/fields/contacts.js +12 -9
  100. package/dist/nodes/Greenapi/properties/contacts/fields/contacts.js.map +1 -1
  101. package/dist/nodes/Greenapi/properties/group/fields/createGroup.js +5 -5
  102. package/dist/nodes/Greenapi/properties/group/fields/createGroup.js.map +1 -1
  103. package/dist/nodes/Greenapi/properties/group/fields/shared.js +7 -6
  104. package/dist/nodes/Greenapi/properties/group/fields/shared.js.map +1 -1
  105. package/dist/nodes/Greenapi/properties/group/fields/updateGroupName.js +2 -1
  106. package/dist/nodes/Greenapi/properties/group/fields/updateGroupName.js.map +1 -1
  107. package/dist/nodes/Greenapi/properties/group/groupOperations.js +16 -24
  108. package/dist/nodes/Greenapi/properties/group/groupOperations.js.map +1 -1
  109. package/dist/nodes/Greenapi/properties/index.d.ts +0 -1
  110. package/dist/nodes/Greenapi/properties/index.js +3 -99
  111. package/dist/nodes/Greenapi/properties/index.js.map +1 -1
  112. package/dist/nodes/Greenapi/properties/journal/fields/getChatHistory.js +7 -21
  113. package/dist/nodes/Greenapi/properties/journal/fields/getChatHistory.js.map +1 -1
  114. package/dist/nodes/Greenapi/properties/journal/fields/getMessage.js +5 -19
  115. package/dist/nodes/Greenapi/properties/journal/fields/getMessage.js.map +1 -1
  116. package/dist/nodes/Greenapi/properties/journal/fields/lastMessages.js +6 -4
  117. package/dist/nodes/Greenapi/properties/journal/fields/lastMessages.js.map +1 -1
  118. package/dist/nodes/Greenapi/properties/journal/journalOperations.js +1 -1
  119. package/dist/nodes/Greenapi/properties/journal/journalOperations.js.map +1 -1
  120. package/dist/nodes/Greenapi/properties/queue/queueOperations.js +14 -21
  121. package/dist/nodes/Greenapi/properties/queue/queueOperations.js.map +1 -1
  122. package/dist/nodes/Greenapi/properties/receiving/fields/downloadFile.js +9 -21
  123. package/dist/nodes/Greenapi/properties/receiving/fields/downloadFile.js.map +1 -1
  124. package/dist/nodes/Greenapi/properties/receiving/receivingOperations.js +9 -17
  125. package/dist/nodes/Greenapi/properties/receiving/receivingOperations.js.map +1 -1
  126. package/dist/nodes/Greenapi/properties/sending/fields/forwardMessages.js +2 -2
  127. package/dist/nodes/Greenapi/properties/sending/fields/forwardMessages.js.map +1 -1
  128. package/dist/nodes/Greenapi/properties/sending/fields/sendContact.js +2 -1
  129. package/dist/nodes/Greenapi/properties/sending/fields/sendContact.js.map +1 -1
  130. package/dist/nodes/Greenapi/properties/sending/fields/sendFileByUrl.js +1 -1
  131. package/dist/nodes/Greenapi/properties/sending/fields/sendFileByUrl.js.map +1 -1
  132. package/dist/nodes/Greenapi/properties/sending/fields/sendInteractiveButtons.js +22 -23
  133. package/dist/nodes/Greenapi/properties/sending/fields/sendInteractiveButtons.js.map +1 -1
  134. package/dist/nodes/Greenapi/properties/sending/fields/sendLocation.js +2 -2
  135. package/dist/nodes/Greenapi/properties/sending/fields/sendLocation.js.map +1 -1
  136. package/dist/nodes/Greenapi/properties/sending/fields/sendPoll.js +0 -1
  137. package/dist/nodes/Greenapi/properties/sending/fields/sendPoll.js.map +1 -1
  138. package/dist/nodes/Greenapi/properties/sending/fields/sendTemplate.js +2 -2
  139. package/dist/nodes/Greenapi/properties/sending/fields/sendTemplate.js.map +1 -1
  140. package/dist/nodes/Greenapi/properties/sending/fields/shared.js +8 -20
  141. package/dist/nodes/Greenapi/properties/sending/fields/shared.js.map +1 -1
  142. package/dist/nodes/Greenapi/properties/sending/sendingOperations.js +4 -4
  143. package/dist/nodes/Greenapi/properties/sending/sendingOperations.js.map +1 -1
  144. package/dist/nodes/Greenapi/properties/service/fields/checkAccount.js +5 -4
  145. package/dist/nodes/Greenapi/properties/service/fields/checkAccount.js.map +1 -1
  146. package/dist/nodes/Greenapi/properties/service/fields/checkWhatsapp.js +4 -2
  147. package/dist/nodes/Greenapi/properties/service/fields/checkWhatsapp.js.map +1 -1
  148. package/dist/nodes/Greenapi/properties/service/fields/deleteMessage.js +2 -1
  149. package/dist/nodes/Greenapi/properties/service/fields/deleteMessage.js.map +1 -1
  150. package/dist/nodes/Greenapi/properties/service/fields/editMessage.js +3 -2
  151. package/dist/nodes/Greenapi/properties/service/fields/editMessage.js.map +1 -1
  152. package/dist/nodes/Greenapi/properties/service/fields/reactions.js +9 -7
  153. package/dist/nodes/Greenapi/properties/service/fields/reactions.js.map +1 -1
  154. package/dist/nodes/Greenapi/properties/service/fields/readChat.js +2 -1
  155. package/dist/nodes/Greenapi/properties/service/fields/readChat.js.map +1 -1
  156. package/dist/nodes/Greenapi/properties/service/fields/sendTyping.js +13 -9
  157. package/dist/nodes/Greenapi/properties/service/fields/sendTyping.js.map +1 -1
  158. package/dist/nodes/Greenapi/properties/service/fields/setDisappearingChat.js +2 -2
  159. package/dist/nodes/Greenapi/properties/service/fields/setDisappearingChat.js.map +1 -1
  160. package/dist/nodes/Greenapi/properties/service/fields/shared.js +6 -19
  161. package/dist/nodes/Greenapi/properties/service/fields/shared.js.map +1 -1
  162. package/dist/nodes/Greenapi/properties/service/serviceOperations.js +7 -7
  163. package/dist/nodes/Greenapi/properties/service/serviceOperations.js.map +1 -1
  164. package/dist/nodes/Greenapi/properties/shared/buildOperations.d.ts +3 -3
  165. package/dist/nodes/Greenapi/properties/shared/buildOperations.js +29 -15
  166. package/dist/nodes/Greenapi/properties/shared/buildOperations.js.map +1 -1
  167. package/dist/nodes/Greenapi/properties/shared/chatId.d.ts +3 -0
  168. package/dist/nodes/Greenapi/properties/shared/chatId.js +35 -0
  169. package/dist/nodes/Greenapi/properties/shared/chatId.js.map +1 -0
  170. package/dist/nodes/Greenapi/properties/shared/resources.d.ts +8 -0
  171. package/dist/nodes/Greenapi/properties/shared/resources.js +78 -0
  172. package/dist/nodes/Greenapi/properties/shared/resources.js.map +1 -0
  173. package/dist/nodes/Greenapi/properties/statuses/fields/deleteStatus.js +2 -1
  174. package/dist/nodes/Greenapi/properties/statuses/fields/deleteStatus.js.map +1 -1
  175. package/dist/nodes/Greenapi/properties/statuses/fields/getIncomingStatuses.js +6 -4
  176. package/dist/nodes/Greenapi/properties/statuses/fields/getIncomingStatuses.js.map +1 -1
  177. package/dist/nodes/Greenapi/properties/statuses/fields/getOutgoingStatuses.js +6 -4
  178. package/dist/nodes/Greenapi/properties/statuses/fields/getOutgoingStatuses.js.map +1 -1
  179. package/dist/nodes/Greenapi/properties/statuses/fields/sendMediaStatus.js +5 -6
  180. package/dist/nodes/Greenapi/properties/statuses/fields/sendMediaStatus.js.map +1 -1
  181. package/dist/nodes/Greenapi/properties/statuses/fields/sendTextStatus.js +17 -13
  182. package/dist/nodes/Greenapi/properties/statuses/fields/sendTextStatus.js.map +1 -1
  183. package/dist/nodes/Greenapi/properties/statuses/fields/sendVoiceStatus.js +9 -10
  184. package/dist/nodes/Greenapi/properties/statuses/fields/sendVoiceStatus.js.map +1 -1
  185. package/dist/nodes/Greenapi/properties/statuses/statusesOperations.js +13 -23
  186. package/dist/nodes/Greenapi/properties/statuses/statusesOperations.js.map +1 -1
  187. package/dist/nodes/Greenapi/properties/templates/fields/getTemplateById.js +2 -1
  188. package/dist/nodes/Greenapi/properties/templates/fields/getTemplateById.js.map +1 -1
  189. package/dist/nodes/Greenapi/properties/templates/templatesOperations.js +8 -18
  190. package/dist/nodes/Greenapi/properties/templates/templatesOperations.js.map +1 -1
  191. package/package.json +5 -3
  192. package/dist/package.json +0 -88
  193. package/dist/tsconfig.tsbuildinfo +0 -1
package/README.md CHANGED
@@ -1,264 +1,276 @@
1
- # n8n-nodes-greenapi
2
-
3
- Integration node for [Green API](https://green-api.com/) in [n8n](https://n8n.io).
4
- This community node allows automation of WhatsApp, MAX, Telegram and WABA interactions using Green API — including messaging, file transfer, contacts, groups, statuses, and instance management.
5
-
6
- ---
7
-
8
- ## 📖 Overview
9
-
10
- The **GREEN-API node** covers four messengers behind one credential — **WhatsApp**, **MAX**, **Telegram** and **WABA** — letting you send messages, manage chats and groups, and retrieve account information. Green API routes every messenger through the same REST contract, so the **Messenger** field only filters which categories and operations are offered.
11
-
12
- ---
13
-
14
- ## Installation
15
- ### Install community node
16
- Go to `Settings` → `Community Nodes` → `Install`, then enter `@green-api/n8n-nodes-greenapi`
17
-
18
- ## Authentication
19
-
20
- To use this node, you need to have an instance and token from [Green-API](https://green-api.com/en) platform and WhatsApp account:
21
-
22
- - Sign up at [Green-API](https://green-api.com/en)
23
- - Create an instance
24
- - Get the **Instance ID** (`idInstance`) and **API Token Key** (`apiTokenInstance`)
25
- - Authorize the instance in the [Console](https://console.green-api.com/instanceList)
26
-
27
- Enter these values in the **Green API** credential when configuring the node.
28
-
29
- The credential also has an optional **API URL** field. Leave the default `https://api.green-api.com` unless the console shows a dedicated host for your instance (for example `https://7105.api.greenapi.com`) — in that case paste that host instead.
30
-
31
- ## 🧩 Features
32
-
33
- Pick the messenger in the **Messenger** field, then the **Category**. Only the operations Green API documents for that messenger are offered.
34
-
35
- ### WhatsApp
36
-
37
- | Category | Operations |
38
- |---|---|
39
- | **Account** | getSettings, getStateInstance, getWaSettings, logout, reboot, setSettings |
40
- | **Contact** | addContact, editContact, deleteContact |
41
- | **Group** | addGroupParticipant, createGroup, getGroupData, leaveGroup, removeAdmin, removeGroupParticipant, setGroupAdmin, updateGroupName |
42
- | **Journal** | getChatHistory, getMessage, lastIncomingMessages, lastOutgoingMessages, lastIncomingCalls, lastOutgoingCalls |
43
- | **Queue** | clearMessagesQueue, clearWebhooksQueue, getMessagesCount, getWebhooksCount, showMessagesQueue |
44
- | **Receiving** | downloadFile |
45
- | **Sending** | forwardMessages, sendContact, sendFileByUrl, sendInteractiveButtons, sendInteractiveButtonsReply, sendLocation, sendMessage, sendPoll |
46
- | **Service** | archiveChat, checkWhatsapp, deleteMessage, editMessage, getAvatar, getContactInfo, getContacts, readChat, setDisappearingChat, unarchiveChat |
47
- | **Status** | deleteStatus, getIncomingStatuses, getOutgoingStatuses, getStatusStatistic, sendMediaStatus, sendTextStatus, sendVoiceStatus |
48
-
49
- ### MAX
50
-
51
- | Category | Operations |
52
- |---|---|
53
- | **Account** | getAccountSettings, getSettings, getStateInstance, logout, reboot, setSettings |
54
- | **Cloud Password** | getAuthorizationPasswordStatus, setAuthorizationPassword, editAuthorizationPassword, deleteAuthorizationPassword |
55
- | **Contact** | addContact, editContact, deleteContact |
56
- | **Group** | addGroupParticipant, createGroup, getGroupData, leaveGroup, removeAdmin, removeGroupParticipant, setGroupAdmin, updateGroupName |
57
- | **Journal** | getChatHistory, getMessage, lastIncomingMessages, lastOutgoingMessages |
58
- | **Queue** | clearMessagesQueue, clearWebhooksQueue, getMessagesCount, getWebhooksCount, showMessagesQueue |
59
- | **Receiving** | downloadFile |
60
- | **Sending** | forwardMessages, sendContact, sendFileByUrl, sendLocation, sendMessage, sendPoll |
61
- | **Service** | checkAccount, deleteMessage, editMessage, getAllowedReactions, getAvatar, getChats, getContactInfo, getContacts, readChat, sendReaction, sendTyping |
62
-
63
- ### Telegram
64
-
65
- | Category | Operations |
66
- |---|---|
67
- | **Account** | getAccountSettings, getSettings, getStateInstance, logout, reboot, setSettings |
68
- | **Group** | addGroupParticipant, createGroup, getGroupData, leaveGroup, removeAdmin, removeGroupParticipant, setGroupAdmin, updateGroupName |
69
- | **Journal** | getChatHistory, getMessage, lastIncomingMessages, lastOutgoingMessages |
70
- | **Queue** | clearMessagesQueue, clearWebhooksQueue, getMessagesCount, getWebhooksCount, showMessagesQueue |
71
- | **Receiving** | downloadFile |
72
- | **Sending** | forwardMessages, sendContact, sendFileByUrl, sendLocation, sendMessage, sendPoll |
73
- | **Service** | checkAccount, deleteMessage, editMessage, getAvatar, getChats, getContactInfo, getContacts, readChat, sendTyping |
74
-
75
- ### WABA
76
-
77
- | Category | Operations |
78
- |---|---|
79
- | **Account** | getSettings, getStateInstance, getWaSettings, setSettings |
80
- | **Journal** | getChatHistory, getMessage, lastIncomingMessages, lastOutgoingMessages |
81
- | **Queue** | clearMessagesQueue, clearWebhooksQueue, getMessagesCount, getWebhooksCount, showMessagesQueue |
82
- | **Receiving** | downloadFile |
83
- | **Sending** | sendMessage, sendFileByUrl, sendTemplate |
84
- | **Template** | getTemplates, getTemplateById |
85
-
86
- > **Receiving** covers `downloadFile`; incoming events are handled by the separate **GREEN-API Trigger** node described below.
87
- > **Cloud Password** manages the MAX two-factor password and is documented for MAX only.
88
-
89
- ---
90
-
91
- ## ⚙️ Usage Examples
92
-
93
- ### 💬 Send Message
94
- ```json
95
- {
96
- "operation": "sendMessage",
97
- "chatId": "79001234567@c.us",
98
- "message": "Hello from n8n and Green API!"
99
- }
100
- ```
101
-
102
- ### 📎 Send File by URL
103
- ```json
104
- {
105
- "operation": "sendFileByUrl",
106
- "chatId": "79001234567@c.us",
107
- "urlFile": "https://example.com/image.jpg",
108
- "fileName": "photo.jpg"
109
- }
110
- ```
111
-
112
- ### 📣 Send Text Status
113
- ```json
114
- {
115
- "operation": "sendTextStatus",
116
- "message": "Working with Green-API and n8n!",
117
- "backgroundColor": "#228B22",
118
- "font": "SERIF",
119
- "participants": []
120
- }
121
- ```
122
-
123
- ### 📤 Send Interactive Buttons Reply
124
- ```json
125
- {
126
- "operation": "sendInteractiveButtonsReply",
127
- "chatId": "79001234567@c.us",
128
- "header": "",
129
- "body": "Do you confirm the appointment for tomorrow?",
130
- "footer": "",
131
- "buttons": [
132
- {
133
- "buttonId": "1",
134
- "buttonText": "Yes"
135
- },
136
- {
137
- "buttonId": "2",
138
- "buttonText": "No"
139
- }
140
- ]
141
- }
142
- ```
143
-
144
- ### 👥 Create Group
145
- ```json
146
- {
147
- "operation": "createGroup",
148
- "groupName": "My Team",
149
- "chatIds": ["79001234567@c.us", "79007654321@c.us"]
150
- }
151
- ```
152
-
153
- ### 🧭 Send Location
154
- ```json
155
- {
156
- "operation": "sendLocation",
157
- "chatId": "79001234567@c.us",
158
- "latitude": 40.7128,
159
- "longitude": -74.0060,
160
- "nameLocation": "New York",
161
- "address": "NY, USA"
162
- }
163
- ```
164
-
165
- ### 🔄 Check WhatsApp
166
- ```json
167
- {
168
- "operation": "checkWhatsapp",
169
- "phoneNumber": 79000000000
170
- }
171
- ```
172
-
173
- ### 🔐 Set Cloud Password (MAX)
174
- ```json
175
- {
176
- "operation": "setAuthorizationPassword",
177
- "password": "qwerty123",
178
- "hint": "The usual one"
179
- }
180
- ```
181
-
182
- > MAX refuses to set a cloud password during the first 24 hours after the account is authorized.
183
-
184
- ---
185
-
186
- ## 🔔 Trigger Node
187
-
188
- The package also ships a **GREEN-API Trigger** node that starts a workflow on incoming Green API webhooks.
189
-
190
- - **Trigger On** — choose which webhook types start the workflow: *Incoming Message*, *Outgoing Message Sent From Phone*, *Outgoing Message Sent From API*. If none are selected, all message webhooks are processed.
191
- - **Restrictions on Receiving** — process messages from all chats, personal chats only, or group chats only.
192
- - **Restrict to Chat IDs** — process webhooks only from the listed chats.
193
-
194
- When the trigger is activated it configures the instance's webhook settings and remembers the previous settings, restoring them when the trigger is deactivated. Applying the settings on the instance side can take up to 5 minutes.
195
-
196
- > Green API allows a single webhook URL per instance. Running two trigger workflows on the same instance is not supported — they would overwrite each other's webhook URL.
197
-
198
- ---
199
-
200
- ## 🧪 Example Workflow
201
-
202
- Minimal "auto-reply" workflow: on every incoming message, send a reply back to the same chat.
203
-
204
- ```json
205
- {
206
- "name": "Green API auto-reply",
207
- "nodes": [
208
- {
209
- "parameters": { "webhookType": ["incomingMessageReceived"], "chatType": "noReceiveRestriction" },
210
- "name": "GREEN-API Trigger",
211
- "type": "n8n-nodes-nowely-y-test.greenapiTrigger",
212
- "typeVersion": 1,
213
- "position": [420, 300]
214
- },
215
- {
216
- "parameters": {
217
- "resource": "sending",
218
- "operation": "sendMessage",
219
- "chatId": { "__rl": true, "mode": "id", "value": "={{ $json.senderData.chatId }}" },
220
- "message": "Thanks for your message!"
221
- },
222
- "name": "Send Message",
223
- "type": "n8n-nodes-nowely-y-test.greenapi",
224
- "typeVersion": 1,
225
- "position": [680, 300]
226
- }
227
- ],
228
- "connections": {
229
- "GREEN-API Trigger": { "main": [[{ "node": "Send Message", "type": "main", "index": 0 }]] }
230
- }
231
- }
232
- ```
233
-
234
- > The node `type` prefix (`n8n-nodes-nowely-y-test`) must match the installed package name.
235
-
236
- ---
237
-
238
- ## ✅ Compatibility
239
-
240
- - Requires **n8n 1.x** (`n8nNodesApiVersion: 1`).
241
- - Requires **Node.js >= 20.15**.
242
- - Tested against the Green API HTTP API as documented at [green-api.com/en/docs/api](https://green-api.com/en/docs/api/).
243
-
244
- ---
245
-
246
- ## 🔗 Resources
247
-
248
- - 🌐 [Green API Documentation](https://green-api.com/en/docs/)
249
- - 📘 [n8n Documentation](https://docs.n8n.io)
250
- - 💬 [n8n Community Forum](https://community.n8n.io)
251
-
252
- ---
253
-
254
- ## 👤 Author
255
-
256
- Developed by [Green API](https://green-api.com/)
257
- 📧 support@green-api.com
258
- 🌍 https://green-api.com/en/
259
-
260
- ---
261
-
262
- ## 🪪 License
263
-
264
- [MIT License](LICENSE)
1
+ # n8n-nodes-nowely-y-test
2
+
3
+ Integration node for [Green API](https://green-api.com/) in [n8n](https://n8n.io).
4
+ This community node allows automation of WhatsApp, MAX, Telegram and WABA interactions using Green API — including messaging, file transfer, contacts, groups, statuses, and instance management.
5
+
6
+ ---
7
+
8
+ ## 📖 Overview
9
+
10
+ The **GREEN-API node** covers four messengers behind one credential — **WhatsApp**, **MAX**, **Telegram** and **WABA** — letting you send messages, manage chats and groups, and retrieve account information. Green API routes every messenger through the same REST contract, so the **Messenger** field only filters which categories and operations are offered.
11
+
12
+ ---
13
+
14
+ ## Installation
15
+ ### Install community node
16
+ Go to `Settings` → `Community Nodes` → `Install`, then enter `n8n-nodes-nowely-y-test` — the npm package name this repository publishes.
17
+
18
+ ## Authentication
19
+
20
+ To use this node, you need to have an instance and token from [Green-API](https://green-api.com/en) platform and WhatsApp account:
21
+
22
+ - Sign up at [Green-API](https://green-api.com/en)
23
+ - Create an instance
24
+ - Get the **Instance ID** (`idInstance`) and the **API Token Instance** (`apiTokenInstance`)
25
+ - Authorize the instance in the [Console](https://console.green-api.com/instanceList)
26
+
27
+ Enter these values in the **Green API** credential when configuring the node.
28
+
29
+ The credential also has an optional **API URL** field. Leave the default `https://api.green-api.com` unless the console shows a dedicated host for your instance (for example `https://7105.api.greenapi.com`) — in that case paste that host instead.
30
+
31
+ ## 🧩 Features
32
+
33
+ Pick the messenger in the **Messenger** field, then the **Resource**. Only the operations Green API documents for that messenger are offered.
34
+
35
+ The tables below list `operation` values — what goes into the node's `operation` parameter. The editor shows their Title Case labels (`sendFileByUrl` is **Send File by URL**).
36
+
37
+ ### WhatsApp
38
+
39
+ | Resource | Operations |
40
+ |---|---|
41
+ | **Account** | getSettings, getStateInstance, getWaSettings, logout, reboot, setSettings |
42
+ | **Contact** | addContact, deleteContact, editContact |
43
+ | **Group** | addGroupParticipant, createGroup, getGroupData, leaveGroup, removeAdmin, removeGroupParticipant, setGroupAdmin, updateGroupName |
44
+ | **Journal** | getChatHistory, getMessage, lastIncomingCalls, lastIncomingMessages, lastOutgoingCalls, lastOutgoingMessages |
45
+ | **Queue** | clearMessagesQueue, clearWebhooksQueue, getMessagesCount, getWebhooksCount, showMessagesQueue |
46
+ | **Receiving** | downloadFile |
47
+ | **Sending** | forwardMessages, sendContact, sendFileByUrl, sendInteractiveButtons, sendInteractiveButtonsReply, sendLocation, sendMessage, sendPoll |
48
+ | **Service** | archiveChat, checkWhatsapp, deleteMessage, editMessage, getAvatar, getContactInfo, getContacts, readChat, setDisappearingChat, unarchiveChat |
49
+ | **Status** | deleteStatus, getIncomingStatuses, getOutgoingStatuses, getStatusStatistic, sendMediaStatus, sendTextStatus, sendVoiceStatus |
50
+
51
+ ### MAX
52
+
53
+ | Resource | Operations |
54
+ |---|---|
55
+ | **Account** | getAccountSettings, getSettings, getStateInstance, logout, reboot, setSettings |
56
+ | **Cloud Password** | deleteAuthorizationPassword, editAuthorizationPassword, getAuthorizationPasswordStatus, setAuthorizationPassword |
57
+ | **Contact** | addContact, deleteContact, editContact |
58
+ | **Group** | addGroupParticipant, createGroup, getGroupData, leaveGroup, removeAdmin, removeGroupParticipant, setGroupAdmin, updateGroupName |
59
+ | **Journal** | getChatHistory, getMessage, lastIncomingMessages, lastOutgoingMessages |
60
+ | **Queue** | clearMessagesQueue, clearWebhooksQueue, getMessagesCount, getWebhooksCount, showMessagesQueue |
61
+ | **Receiving** | downloadFile |
62
+ | **Sending** | forwardMessages, sendContact, sendFileByUrl, sendLocation, sendMessage, sendPoll |
63
+ | **Service** | checkAccount, deleteMessage, editMessage, getAllowedReactions, getAvatar, getChats, getContactInfo, getContacts, readChat, sendReaction, sendTyping |
64
+
65
+ ### Telegram
66
+
67
+ | Resource | Operations |
68
+ |---|---|
69
+ | **Account** | getAccountSettings, getSettings, getStateInstance, logout, reboot, setSettings |
70
+ | **Group** | addGroupParticipant, createGroup, getGroupData, leaveGroup, removeAdmin, removeGroupParticipant, setGroupAdmin, updateGroupName |
71
+ | **Journal** | getChatHistory, getMessage, lastIncomingMessages, lastOutgoingMessages |
72
+ | **Queue** | clearMessagesQueue, clearWebhooksQueue, getMessagesCount, getWebhooksCount, showMessagesQueue |
73
+ | **Receiving** | downloadFile |
74
+ | **Sending** | forwardMessages, sendContact, sendFileByUrl, sendLocation, sendMessage, sendPoll |
75
+ | **Service** | checkAccount, deleteMessage, editMessage, getAvatar, getChats, getContactInfo, getContacts, readChat, sendTyping |
76
+
77
+ ### WABA
78
+
79
+ | Resource | Operations |
80
+ |---|---|
81
+ | **Account** | getSettings, getStateInstance, getWaSettings, setSettings |
82
+ | **Journal** | getChatHistory, getMessage, lastIncomingMessages, lastOutgoingMessages |
83
+ | **Queue** | clearMessagesQueue, clearWebhooksQueue, getMessagesCount, getWebhooksCount, showMessagesQueue |
84
+ | **Sending** | sendFileByUrl, sendMessage, sendTemplate |
85
+ | **Template** | getTemplateById, getTemplates |
86
+
87
+ > **Receiving** covers `downloadFile` and is offered on WhatsApp, MAX and Telegram only — Green API documents no DownloadFile method for WABA, whose notifications already carry a `downloadUrl`. Incoming events themselves are handled by the separate **GREEN-API Trigger** node described below.
88
+ > **Cloud Password** manages the MAX two-factor password and is documented for MAX only.
89
+ > Operations whose Green API response body is documented as empty — the deletes, archive/unarchive, typing, the queue clears, logout and reboot — emit `{ "success": true }`, so a downstream IF node always has one key to branch on.
90
+
91
+ ---
92
+
93
+ ## ⚙️ Usage Examples
94
+
95
+ ### 💬 Send Message
96
+ ```json
97
+ {
98
+ "operation": "sendMessage",
99
+ "chatId": "79001234567@c.us",
100
+ "message": "Hello from n8n and Green API!"
101
+ }
102
+ ```
103
+
104
+ ### 📎 Send File by URL
105
+ ```json
106
+ {
107
+ "operation": "sendFileByUrl",
108
+ "chatId": "79001234567@c.us",
109
+ "urlFile": "https://example.com/image.jpg",
110
+ "fileName": "photo.jpg"
111
+ }
112
+ ```
113
+
114
+ ### 📣 Send Text Status
115
+ ```json
116
+ {
117
+ "operation": "sendTextStatus",
118
+ "message": "Working with Green-API and n8n!",
119
+ "backgroundColor": "#228B22",
120
+ "font": "SERIF",
121
+ "participants": []
122
+ }
123
+ ```
124
+
125
+ ### 📤 Send Interactive Buttons Reply
126
+ ```json
127
+ {
128
+ "operation": "sendInteractiveButtonsReply",
129
+ "chatId": "79001234567@c.us",
130
+ "header": "",
131
+ "body": "Do you confirm the appointment for tomorrow?",
132
+ "footer": "",
133
+ "buttons": [
134
+ {
135
+ "buttonId": "1",
136
+ "buttonText": "Yes"
137
+ },
138
+ {
139
+ "buttonId": "2",
140
+ "buttonText": "No"
141
+ }
142
+ ]
143
+ }
144
+ ```
145
+
146
+ ### 👥 Create Group
147
+ ```json
148
+ {
149
+ "operation": "createGroup",
150
+ "groupName": "My Team",
151
+ "chatIds": ["79001234567@c.us", "79007654321@c.us"]
152
+ }
153
+ ```
154
+
155
+ ### 🧭 Send Location
156
+ ```json
157
+ {
158
+ "operation": "sendLocation",
159
+ "chatId": "79001234567@c.us",
160
+ "latitude": 40.7128,
161
+ "longitude": -74.0060,
162
+ "nameLocation": "New York",
163
+ "address": "NY, USA"
164
+ }
165
+ ```
166
+
167
+ ### 🔄 Check WhatsApp
168
+ ```json
169
+ {
170
+ "operation": "checkWhatsapp",
171
+ "phoneNumber": 79000000000
172
+ }
173
+ ```
174
+
175
+ ### 🔐 Set Cloud Password (MAX)
176
+ ```json
177
+ {
178
+ "operation": "setAuthorizationPassword",
179
+ "password": "qwerty123",
180
+ "hint": "The usual one"
181
+ }
182
+ ```
183
+
184
+ > MAX refuses to set a cloud password during the first 24 hours after the account is authorized.
185
+
186
+ ---
187
+
188
+ ## 🔔 Trigger Node
189
+
190
+ The package also ships a **GREEN-API Trigger** node that starts a workflow on incoming Green API webhooks.
191
+
192
+ - **Trigger On** — choose which webhook types start the workflow: *Incoming Message*, *Outgoing Message Sent From Phone*, *Outgoing Message Sent From API*. If none are selected, all message webhooks are processed.
193
+ - **Restrictions on Receiving** — process messages from all chats, personal chats only, or group chats only. Group chats are recognised per messenger: WhatsApp group IDs end with `@g.us`, while MAX and Telegram group IDs are negative numbers such as `-10000000000000`. WhatsApp status updates, broadcast lists and Channel posts match neither restriction and arrive only under *Receive All*.
194
+ - **Restrict to Chat IDs** — process webhooks only from the listed chats.
195
+
196
+ When the trigger is activated it configures the instance's webhook settings and remembers the previous settings, restoring them when the trigger is deactivated. Applying the settings on the instance side can take up to 5 minutes.
197
+
198
+ > Green API allows a single webhook URL per instance. Running two trigger workflows on the same instance is not supported — they would overwrite each other's webhook URL.
199
+
200
+ ### Webhook authorization
201
+
202
+ If the instance has a **Webhook URL Token** configured, Green API sends it in an `Authorization` header, under either the `Bearer` or the `Basic` scheme. The trigger checks it and answers **HTTP 401** to a call whose token does not match, without starting the workflow. Green API removes a notification from its queue only on a `200` response and retries anything else every 60 seconds for 24 hours, so a rejected call is not lost.
203
+
204
+ The token is re-read from the instance on every activation and every n8n restart. If you rotate or clear it in the Green API console while the workflow is active, the trigger notices on the next call whose token does not match, re-reads the settings once, and then keeps accepting traffic with the new token. That re-read is throttled to at most once every 5 minutes per trigger, so a flood of calls carrying a wrong token cannot be turned into a flood of requests to Green API.
205
+
206
+ ---
207
+
208
+ ## 🧪 Example Workflow
209
+
210
+ Minimal "auto-reply" workflow: on every incoming message, send a reply back to the same chat.
211
+
212
+ ```json
213
+ {
214
+ "name": "Green API auto-reply",
215
+ "nodes": [
216
+ {
217
+ "parameters": { "webhookType": ["incomingMessageReceived"], "chatType": "noReceiveRestriction" },
218
+ "name": "GREEN-API Trigger",
219
+ "type": "n8n-nodes-nowely-y-test.greenapiTrigger",
220
+ "typeVersion": 1,
221
+ "position": [420, 300]
222
+ },
223
+ {
224
+ "parameters": {
225
+ "superResource": "WhatsApp",
226
+ "resource": "waSending",
227
+ "operation": "sendMessage",
228
+ "chatId": { "__rl": true, "mode": "id", "value": "={{ $json.senderData.chatId }}" },
229
+ "message": "Thanks for your message!"
230
+ },
231
+ "name": "Send Message",
232
+ "type": "n8n-nodes-nowely-y-test.greenapi",
233
+ "typeVersion": 1,
234
+ "position": [680, 300]
235
+ }
236
+ ],
237
+ "connections": {
238
+ "GREEN-API Trigger": { "main": [[{ "node": "Send Message", "type": "main", "index": 0 }]] }
239
+ }
240
+ }
241
+ ```
242
+
243
+ > The node `type` prefix (`n8n-nodes-nowely-y-test`) must match the installed package name.
244
+
245
+ > `resource` values are messenger-specific (`waSending`, `maxSending`, `tgSending`, `wabaSending`, and so on for every resource). Building the node from the editor fills this in for you; it only matters when writing workflow JSON by hand.
246
+
247
+ ---
248
+
249
+ ## ✅ Compatibility
250
+
251
+ - Built and tested against **n8n 2.x**: the package compiles and runs its test suite against `n8n-workflow` ^2.16.0, and n8n 2.40.5 ships `n8n-workflow` 2.40.1 — the same major.
252
+ - The `n8n-workflow` peer dependency is deliberately open (`*`), so npm will not block an install on a different major, but nothing here has been built or tested against the n8n 1.x line. Treat n8n 2.x as the supported target.
253
+ - Requires **Node.js >= 20.15** (`engines.node`). n8n 2.x asks for Node >= 24 itself, so on a real n8n 2.x host the higher floor applies.
254
+ - Tested against the Green API HTTP API as documented at [green-api.com/en/docs/api](https://green-api.com/en/docs/api/).
255
+
256
+ ---
257
+
258
+ ## 🔗 Resources
259
+
260
+ - 🌐 [Green API Documentation](https://green-api.com/en/docs/)
261
+ - 📘 [n8n Documentation](https://docs.n8n.io)
262
+ - 💬 [n8n Community Forum](https://community.n8n.io)
263
+
264
+ ---
265
+
266
+ ## 👤 Author
267
+
268
+ Developed by [Green API](https://green-api.com/)
269
+ 📧 support@green-api.com
270
+ 🌍 https://green-api.com/en/
271
+
272
+ ---
273
+
274
+ ## 🪪 License
275
+
276
+ [MIT License](LICENSE.md)
@@ -12,7 +12,6 @@ class GreenApiAuthApi {
12
12
  displayName: 'API URL',
13
13
  name: 'apiUrl',
14
14
  type: 'string',
15
- required: false,
16
15
  default: 'https://api.green-api.com',
17
16
  placeholder: 'e.g. https://7105.api.greenapi.com',
18
17
  description: 'Base API URL of the instance, as shown in the GREEN-API console. Leave the default unless the console shows a different host for your instance.',
@@ -33,11 +32,13 @@ class GreenApiAuthApi {
33
32
  password: true,
34
33
  },
35
34
  default: '',
35
+ description: 'The apiTokenInstance value shown for the instance in the GREEN-API console',
36
36
  },
37
37
  ];
38
38
  this.test = {
39
39
  request: {
40
- url: '={{ ($credentials.apiUrl || "https://api.green-api.com").trim().split("/").filter(Boolean).slice(0, 2).join("//") }}/waInstance{{ $credentials.idInstance }}/getStateInstance/{{ $credentials.apiTokenKey }}',
40
+ baseURL: '={{ ($credentials.apiUrl || "").trim().replace(/[/]+$/, "") || "https://api.green-api.com" }}',
41
+ url: '=/waInstance{{ $credentials.idInstance }}/getStateInstance/{{ $credentials.apiTokenKey }}',
41
42
  method: 'GET',
42
43
  },
43
44
  rules: [
@@ -65,6 +66,22 @@ class GreenApiAuthApi {
65
66
  message: 'Instance is blocked!',
66
67
  },
67
68
  },
69
+ {
70
+ type: 'responseSuccessBody',
71
+ properties: {
72
+ key: 'stateInstance',
73
+ value: 'sleepMode',
74
+ message: 'Instance is in sleep mode - the phone is switched off!',
75
+ },
76
+ },
77
+ {
78
+ type: 'responseSuccessBody',
79
+ properties: {
80
+ key: 'stateInstance',
81
+ value: 'suspended',
82
+ message: 'Instance is suspended - temporary restrictions are in effect!',
83
+ },
84
+ },
68
85
  ],
69
86
  };
70
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GreenApiAuthApi.credentials.js","sourceRoot":"","sources":["../../credentials/GreenApiAuthApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,eAAe;IAA5B;QACC,SAAI,GAAG,iBAAiB,CAAC;QACzB,gBAAW,GAAG,WAAW,CAAC;QAC1B,SAAI,GAAG,mBAA4B,CAAC;QACpC,qBAAgB,GAAG,mCAAmC,CAAC;QACvD,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,2BAA2B;gBACpC,WAAW,EAAE,oCAAoC;gBACjD,WAAW,EACV,iJAAiJ;aAClJ;YACD;gBACC,WAAW,EAAE,aAAa;gBAC1B,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,oBAAoB;gBACjC,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;aACX;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,GAAG,EAAE,8MAA8M;gBACnN,MAAM,EAAE,KAAK;aACb;YACD,KAAK,EAAE;gBACN;oBACC,IAAI,EAAE,qBAAqB;oBAC3B,UAAU,EAAE;wBACX,GAAG,EAAE,eAAe;wBACpB,KAAK,EAAE,eAAe;wBACtB,OAAO,EAAE,6BAA6B;qBACtC;iBACD;gBACD;oBACC,IAAI,EAAE,qBAAqB;oBAC3B,UAAU,EAAE;wBACX,GAAG,EAAE,eAAe;wBACpB,KAAK,EAAE,UAAU;wBACjB,OAAO,EAAE,gCAAgC;qBACzC;iBACD;gBACD;oBACC,IAAI,EAAE,qBAAqB;oBAC3B,UAAU,EAAE;wBACX,GAAG,EAAE,eAAe;wBACpB,KAAK,EAAE,SAAS;wBAChB,OAAO,EAAE,sBAAsB;qBAC/B;iBACD;aACD;SACD,CAAC;IACH,CAAC;CAAA;AAnED,0CAmEC"}
1
+ {"version":3,"file":"GreenApiAuthApi.credentials.js","sourceRoot":"","sources":["../../credentials/GreenApiAuthApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,eAAe;IAA5B;QACC,SAAI,GAAG,iBAAiB,CAAC;QACzB,gBAAW,GAAG,WAAW,CAAC;QAC1B,SAAI,GAAG,mBAA4B,CAAC;QACpC,qBAAgB,GAAG,mCAAmC,CAAC;QACvD,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,2BAA2B;gBACpC,WAAW,EAAE,oCAAoC;gBACjD,WAAW,EACV,iJAAiJ;aAClJ;YACD;gBACC,WAAW,EAAE,aAAa;gBAC1B,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,oBAAoB;gBAIjC,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,4EAA4E;aACzF;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBAYR,OAAO,EACN,+FAA+F;gBAChG,GAAG,EAAE,2FAA2F;gBAChG,MAAM,EAAE,KAAK;aACb;YACD,KAAK,EAAE;gBACN;oBACC,IAAI,EAAE,qBAAqB;oBAC3B,UAAU,EAAE;wBACX,GAAG,EAAE,eAAe;wBACpB,KAAK,EAAE,eAAe;wBACtB,OAAO,EAAE,6BAA6B;qBACtC;iBACD;gBACD;oBACC,IAAI,EAAE,qBAAqB;oBAC3B,UAAU,EAAE;wBACX,GAAG,EAAE,eAAe;wBACpB,KAAK,EAAE,UAAU;wBACjB,OAAO,EAAE,gCAAgC;qBACzC;iBACD;gBACD;oBACC,IAAI,EAAE,qBAAqB;oBAC3B,UAAU,EAAE;wBACX,GAAG,EAAE,eAAe;wBACpB,KAAK,EAAE,SAAS;wBAChB,OAAO,EAAE,sBAAsB;qBAC/B;iBACD;gBAGD;oBACC,IAAI,EAAE,qBAAqB;oBAC3B,UAAU,EAAE;wBACX,GAAG,EAAE,eAAe;wBACpB,KAAK,EAAE,WAAW;wBAClB,OAAO,EAAE,wDAAwD;qBACjE;iBACD;gBACD;oBACC,IAAI,EAAE,qBAAqB;oBAC3B,UAAU,EAAE;wBACX,GAAG,EAAE,eAAe;wBACpB,KAAK,EAAE,WAAW;wBAClB,OAAO,EAAE,+DAA+D;qBACxE;iBACD;aACD;SACD,CAAC;IACH,CAAC;CAAA;AArGD,0CAqGC"}