n8n-nodes-the-mastodon 0.0.1

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 (495) hide show
  1. package/LICENSE.md +19 -0
  2. package/README.md +216 -0
  3. package/dist/__tests__/Mastodon.test.d.ts +1 -0
  4. package/dist/__tests__/Mastodon.test.js +29 -0
  5. package/dist/__tests__/Mastodon.test.js.map +1 -0
  6. package/dist/__tests__/account.test.d.ts +1 -0
  7. package/dist/__tests__/account.test.js +52 -0
  8. package/dist/__tests__/account.test.js.map +1 -0
  9. package/dist/__tests__/bookmarks.test.d.ts +1 -0
  10. package/dist/__tests__/bookmarks.test.js +48 -0
  11. package/dist/__tests__/bookmarks.test.js.map +1 -0
  12. package/dist/__tests__/lists.test.d.ts +1 -0
  13. package/dist/__tests__/lists.test.js +98 -0
  14. package/dist/__tests__/lists.test.js.map +1 -0
  15. package/dist/__tests__/status.test.d.ts +1 -0
  16. package/dist/__tests__/status.test.js +142 -0
  17. package/dist/__tests__/status.test.js.map +1 -0
  18. package/dist/__tests__/timeline.test.d.ts +1 -0
  19. package/dist/__tests__/timeline.test.js +152 -0
  20. package/dist/__tests__/timeline.test.js.map +1 -0
  21. package/dist/credentials/Mastodon.svg +4 -0
  22. package/dist/credentials/MastodonOAuth2Api.credentials.d.ts +17 -0
  23. package/dist/credentials/MastodonOAuth2Api.credentials.js +209 -0
  24. package/dist/credentials/MastodonOAuth2Api.credentials.js.map +1 -0
  25. package/dist/nodes/Mastodon/Mastodon.node.d.ts +6 -0
  26. package/dist/nodes/Mastodon/Mastodon.node.js +300 -0
  27. package/dist/nodes/Mastodon/Mastodon.node.js.map +1 -0
  28. package/dist/nodes/Mastodon/Mastodon.svg +4 -0
  29. package/dist/nodes/Mastodon/Mastodon_Methods.d.ts +21 -0
  30. package/dist/nodes/Mastodon/Mastodon_Methods.js +616 -0
  31. package/dist/nodes/Mastodon/Mastodon_Methods.js.map +1 -0
  32. package/dist/nodes/Mastodon/Mastodon_Properties.d.ts +33 -0
  33. package/dist/nodes/Mastodon/Mastodon_Properties.js +124 -0
  34. package/dist/nodes/Mastodon/Mastodon_Properties.js.map +1 -0
  35. package/dist/nodes/Mastodon/account/AccountInterfaces.d.ts +39 -0
  36. package/dist/nodes/Mastodon/account/AccountInterfaces.js +3 -0
  37. package/dist/nodes/Mastodon/account/AccountInterfaces.js.map +1 -0
  38. package/dist/nodes/Mastodon/account/AccountMethods.d.ts +27 -0
  39. package/dist/nodes/Mastodon/account/AccountMethods.js +185 -0
  40. package/dist/nodes/Mastodon/account/AccountMethods.js.map +1 -0
  41. package/dist/nodes/Mastodon/account/AccountProperties.d.ts +3 -0
  42. package/dist/nodes/Mastodon/account/AccountProperties.js +189 -0
  43. package/dist/nodes/Mastodon/account/AccountProperties.js.map +1 -0
  44. package/dist/nodes/Mastodon/account/RoleInterface.d.ts +10 -0
  45. package/dist/nodes/Mastodon/account/RoleInterface.js +3 -0
  46. package/dist/nodes/Mastodon/account/RoleInterface.js.map +1 -0
  47. package/dist/nodes/Mastodon/account/index.d.ts +30 -0
  48. package/dist/nodes/Mastodon/account/index.js +70 -0
  49. package/dist/nodes/Mastodon/account/index.js.map +1 -0
  50. package/dist/nodes/Mastodon/admin/AdminInterfaces.d.ts +93 -0
  51. package/dist/nodes/Mastodon/admin/AdminInterfaces.js +3 -0
  52. package/dist/nodes/Mastodon/admin/AdminInterfaces.js.map +1 -0
  53. package/dist/nodes/Mastodon/admin/canonical-email-blocks/CanonicalEmailBlockMethods.d.ts +4 -0
  54. package/dist/nodes/Mastodon/admin/canonical-email-blocks/CanonicalEmailBlockMethods.js +27 -0
  55. package/dist/nodes/Mastodon/admin/canonical-email-blocks/CanonicalEmailBlockMethods.js.map +1 -0
  56. package/dist/nodes/Mastodon/admin/canonical-email-blocks/CanonicalEmailBlockProperties.d.ts +3 -0
  57. package/dist/nodes/Mastodon/admin/canonical-email-blocks/CanonicalEmailBlockProperties.js +91 -0
  58. package/dist/nodes/Mastodon/admin/canonical-email-blocks/CanonicalEmailBlockProperties.js.map +1 -0
  59. package/dist/nodes/Mastodon/admin/cohorts/CohortMethods.d.ts +3 -0
  60. package/dist/nodes/Mastodon/admin/cohorts/CohortMethods.js +16 -0
  61. package/dist/nodes/Mastodon/admin/cohorts/CohortMethods.js.map +1 -0
  62. package/dist/nodes/Mastodon/admin/cohorts/CohortProperties.d.ts +3 -0
  63. package/dist/nodes/Mastodon/admin/cohorts/CohortProperties.js +67 -0
  64. package/dist/nodes/Mastodon/admin/cohorts/CohortProperties.js.map +1 -0
  65. package/dist/nodes/Mastodon/admin/dimensions/DimensionMethods.d.ts +4 -0
  66. package/dist/nodes/Mastodon/admin/dimensions/DimensionMethods.js +13 -0
  67. package/dist/nodes/Mastodon/admin/dimensions/DimensionMethods.js.map +1 -0
  68. package/dist/nodes/Mastodon/admin/dimensions/DimensionProperties.d.ts +3 -0
  69. package/dist/nodes/Mastodon/admin/dimensions/DimensionProperties.js +48 -0
  70. package/dist/nodes/Mastodon/admin/dimensions/DimensionProperties.js.map +1 -0
  71. package/dist/nodes/Mastodon/admin/ips/IpMethods.d.ts +4 -0
  72. package/dist/nodes/Mastodon/admin/ips/IpMethods.js +23 -0
  73. package/dist/nodes/Mastodon/admin/ips/IpMethods.js.map +1 -0
  74. package/dist/nodes/Mastodon/admin/ips/IpProperties.d.ts +3 -0
  75. package/dist/nodes/Mastodon/admin/ips/IpProperties.js +43 -0
  76. package/dist/nodes/Mastodon/admin/ips/IpProperties.js.map +1 -0
  77. package/dist/nodes/Mastodon/announcements/AnnouncementInterfaces.d.ts +9 -0
  78. package/dist/nodes/Mastodon/announcements/AnnouncementInterfaces.js +3 -0
  79. package/dist/nodes/Mastodon/announcements/AnnouncementInterfaces.js.map +1 -0
  80. package/dist/nodes/Mastodon/announcements/AnnouncementMethods.d.ts +3 -0
  81. package/dist/nodes/Mastodon/announcements/AnnouncementMethods.js +8 -0
  82. package/dist/nodes/Mastodon/announcements/AnnouncementMethods.js.map +1 -0
  83. package/dist/nodes/Mastodon/announcements/AnnouncementProperties.d.ts +3 -0
  84. package/dist/nodes/Mastodon/announcements/AnnouncementProperties.js +25 -0
  85. package/dist/nodes/Mastodon/announcements/AnnouncementProperties.js.map +1 -0
  86. package/dist/nodes/Mastodon/announcements/index.d.ts +6 -0
  87. package/dist/nodes/Mastodon/announcements/index.js +46 -0
  88. package/dist/nodes/Mastodon/announcements/index.js.map +1 -0
  89. package/dist/nodes/Mastodon/apps/AppsMethods.d.ts +3 -0
  90. package/dist/nodes/Mastodon/apps/AppsMethods.js +22 -0
  91. package/dist/nodes/Mastodon/apps/AppsMethods.js.map +1 -0
  92. package/dist/nodes/Mastodon/apps/AppsProperties.d.ts +3 -0
  93. package/dist/nodes/Mastodon/apps/AppsProperties.js +63 -0
  94. package/dist/nodes/Mastodon/apps/AppsProperties.js.map +1 -0
  95. package/dist/nodes/Mastodon/apps/index.d.ts +7 -0
  96. package/dist/nodes/Mastodon/apps/index.js +47 -0
  97. package/dist/nodes/Mastodon/apps/index.js.map +1 -0
  98. package/dist/nodes/Mastodon/authentication/AuthenticationMethods.d.ts +21 -0
  99. package/dist/nodes/Mastodon/authentication/AuthenticationMethods.js +89 -0
  100. package/dist/nodes/Mastodon/authentication/AuthenticationMethods.js.map +1 -0
  101. package/dist/nodes/Mastodon/authentication/AuthenticationProperties.d.ts +3 -0
  102. package/dist/nodes/Mastodon/authentication/AuthenticationProperties.js +103 -0
  103. package/dist/nodes/Mastodon/authentication/AuthenticationProperties.js.map +1 -0
  104. package/dist/nodes/Mastodon/authentication/index.d.ts +4 -0
  105. package/dist/nodes/Mastodon/authentication/index.js +11 -0
  106. package/dist/nodes/Mastodon/authentication/index.js.map +1 -0
  107. package/dist/nodes/Mastodon/blocks/BlocksMethods.d.ts +3 -0
  108. package/dist/nodes/Mastodon/blocks/BlocksMethods.js +14 -0
  109. package/dist/nodes/Mastodon/blocks/BlocksMethods.js.map +1 -0
  110. package/dist/nodes/Mastodon/blocks/BlocksProperties.d.ts +3 -0
  111. package/dist/nodes/Mastodon/blocks/BlocksProperties.js +27 -0
  112. package/dist/nodes/Mastodon/blocks/BlocksProperties.js.map +1 -0
  113. package/dist/nodes/Mastodon/blocks/index.d.ts +7 -0
  114. package/dist/nodes/Mastodon/blocks/index.js +47 -0
  115. package/dist/nodes/Mastodon/blocks/index.js.map +1 -0
  116. package/dist/nodes/Mastodon/bookmarks/BookmarksMethods.d.ts +4 -0
  117. package/dist/nodes/Mastodon/bookmarks/BookmarksMethods.js +38 -0
  118. package/dist/nodes/Mastodon/bookmarks/BookmarksMethods.js.map +1 -0
  119. package/dist/nodes/Mastodon/bookmarks/BookmarksProperties.d.ts +3 -0
  120. package/dist/nodes/Mastodon/bookmarks/BookmarksProperties.js +61 -0
  121. package/dist/nodes/Mastodon/bookmarks/BookmarksProperties.js.map +1 -0
  122. package/dist/nodes/Mastodon/bookmarks/index.d.ts +8 -0
  123. package/dist/nodes/Mastodon/bookmarks/index.js +48 -0
  124. package/dist/nodes/Mastodon/bookmarks/index.js.map +1 -0
  125. package/dist/nodes/Mastodon/conversations/ConversationInterfaces.d.ts +6 -0
  126. package/dist/nodes/Mastodon/conversations/ConversationInterfaces.js +3 -0
  127. package/dist/nodes/Mastodon/conversations/ConversationInterfaces.js.map +1 -0
  128. package/dist/nodes/Mastodon/conversations/ConversationMethods.d.ts +5 -0
  129. package/dist/nodes/Mastodon/conversations/ConversationMethods.js +32 -0
  130. package/dist/nodes/Mastodon/conversations/ConversationMethods.js.map +1 -0
  131. package/dist/nodes/Mastodon/conversations/ConversationProperties.d.ts +3 -0
  132. package/dist/nodes/Mastodon/conversations/ConversationProperties.js +97 -0
  133. package/dist/nodes/Mastodon/conversations/ConversationProperties.js.map +1 -0
  134. package/dist/nodes/Mastodon/conversations/index.d.ts +8 -0
  135. package/dist/nodes/Mastodon/conversations/index.js +48 -0
  136. package/dist/nodes/Mastodon/conversations/index.js.map +1 -0
  137. package/dist/nodes/Mastodon/customEmojis/CustomEmojisInterfaces.d.ts +7 -0
  138. package/dist/nodes/Mastodon/customEmojis/CustomEmojisInterfaces.js +3 -0
  139. package/dist/nodes/Mastodon/customEmojis/CustomEmojisInterfaces.js.map +1 -0
  140. package/dist/nodes/Mastodon/customEmojis/CustomEmojisMethods.d.ts +3 -0
  141. package/dist/nodes/Mastodon/customEmojis/CustomEmojisMethods.js +8 -0
  142. package/dist/nodes/Mastodon/customEmojis/CustomEmojisMethods.js.map +1 -0
  143. package/dist/nodes/Mastodon/customEmojis/CustomEmojisProperties.d.ts +3 -0
  144. package/dist/nodes/Mastodon/customEmojis/CustomEmojisProperties.js +25 -0
  145. package/dist/nodes/Mastodon/customEmojis/CustomEmojisProperties.js.map +1 -0
  146. package/dist/nodes/Mastodon/customEmojis/index.d.ts +6 -0
  147. package/dist/nodes/Mastodon/customEmojis/index.js +46 -0
  148. package/dist/nodes/Mastodon/customEmojis/index.js.map +1 -0
  149. package/dist/nodes/Mastodon/directory/DirectoryInterfaces.d.ts +9 -0
  150. package/dist/nodes/Mastodon/directory/DirectoryInterfaces.js +3 -0
  151. package/dist/nodes/Mastodon/directory/DirectoryInterfaces.js.map +1 -0
  152. package/dist/nodes/Mastodon/directory/DirectoryMethods.d.ts +3 -0
  153. package/dist/nodes/Mastodon/directory/DirectoryMethods.js +22 -0
  154. package/dist/nodes/Mastodon/directory/DirectoryMethods.js.map +1 -0
  155. package/dist/nodes/Mastodon/directory/DirectoryProperties.d.ts +10 -0
  156. package/dist/nodes/Mastodon/directory/DirectoryProperties.js +81 -0
  157. package/dist/nodes/Mastodon/directory/DirectoryProperties.js.map +1 -0
  158. package/dist/nodes/Mastodon/directory/index.d.ts +6 -0
  159. package/dist/nodes/Mastodon/directory/index.js +46 -0
  160. package/dist/nodes/Mastodon/directory/index.js.map +1 -0
  161. package/dist/nodes/Mastodon/domainBlocks/DomainBlocksMethods.d.ts +3 -0
  162. package/dist/nodes/Mastodon/domainBlocks/DomainBlocksMethods.js +14 -0
  163. package/dist/nodes/Mastodon/domainBlocks/DomainBlocksMethods.js.map +1 -0
  164. package/dist/nodes/Mastodon/domainBlocks/DomainBlocksProperties.d.ts +3 -0
  165. package/dist/nodes/Mastodon/domainBlocks/DomainBlocksProperties.js +27 -0
  166. package/dist/nodes/Mastodon/domainBlocks/DomainBlocksProperties.js.map +1 -0
  167. package/dist/nodes/Mastodon/domainBlocks/index.d.ts +7 -0
  168. package/dist/nodes/Mastodon/domainBlocks/index.js +47 -0
  169. package/dist/nodes/Mastodon/domainBlocks/index.js.map +1 -0
  170. package/dist/nodes/Mastodon/domains/allowed/AllowedDomainMethods.d.ts +4 -0
  171. package/dist/nodes/Mastodon/domains/allowed/AllowedDomainMethods.js +27 -0
  172. package/dist/nodes/Mastodon/domains/allowed/AllowedDomainMethods.js.map +1 -0
  173. package/dist/nodes/Mastodon/domains/allowed/AllowedDomainProperties.d.ts +3 -0
  174. package/dist/nodes/Mastodon/domains/allowed/AllowedDomainProperties.js +91 -0
  175. package/dist/nodes/Mastodon/domains/allowed/AllowedDomainProperties.js.map +1 -0
  176. package/dist/nodes/Mastodon/domains/blocked/BlockedDomainMethods.d.ts +5 -0
  177. package/dist/nodes/Mastodon/domains/blocked/BlockedDomainMethods.js +52 -0
  178. package/dist/nodes/Mastodon/domains/blocked/BlockedDomainMethods.js.map +1 -0
  179. package/dist/nodes/Mastodon/domains/blocked/BlockedDomainProperties.d.ts +3 -0
  180. package/dist/nodes/Mastodon/domains/blocked/BlockedDomainProperties.js +182 -0
  181. package/dist/nodes/Mastodon/domains/blocked/BlockedDomainProperties.js.map +1 -0
  182. package/dist/nodes/Mastodon/domains/email-blocked/EmailBlockedDomainMethods.d.ts +5 -0
  183. package/dist/nodes/Mastodon/domains/email-blocked/EmailBlockedDomainMethods.js +32 -0
  184. package/dist/nodes/Mastodon/domains/email-blocked/EmailBlockedDomainMethods.js.map +1 -0
  185. package/dist/nodes/Mastodon/domains/email-blocked/EmailBlockedDomainProperties.d.ts +3 -0
  186. package/dist/nodes/Mastodon/domains/email-blocked/EmailBlockedDomainProperties.js +111 -0
  187. package/dist/nodes/Mastodon/domains/email-blocked/EmailBlockedDomainProperties.js.map +1 -0
  188. package/dist/nodes/Mastodon/domains/index.d.ts +13 -0
  189. package/dist/nodes/Mastodon/domains/index.js +59 -0
  190. package/dist/nodes/Mastodon/domains/index.js.map +1 -0
  191. package/dist/nodes/Mastodon/emails/EmailsMethods.d.ts +2 -0
  192. package/dist/nodes/Mastodon/emails/EmailsMethods.js +8 -0
  193. package/dist/nodes/Mastodon/emails/EmailsMethods.js.map +1 -0
  194. package/dist/nodes/Mastodon/emails/EmailsProperties.d.ts +3 -0
  195. package/dist/nodes/Mastodon/emails/EmailsProperties.js +21 -0
  196. package/dist/nodes/Mastodon/emails/EmailsProperties.js.map +1 -0
  197. package/dist/nodes/Mastodon/endorsements/EndorsementMethods.d.ts +3 -0
  198. package/dist/nodes/Mastodon/endorsements/EndorsementMethods.js +8 -0
  199. package/dist/nodes/Mastodon/endorsements/EndorsementMethods.js.map +1 -0
  200. package/dist/nodes/Mastodon/endorsements/EndorsementProperties.d.ts +3 -0
  201. package/dist/nodes/Mastodon/endorsements/EndorsementProperties.js +27 -0
  202. package/dist/nodes/Mastodon/endorsements/EndorsementProperties.js.map +1 -0
  203. package/dist/nodes/Mastodon/endorsements/index.d.ts +6 -0
  204. package/dist/nodes/Mastodon/endorsements/index.js +46 -0
  205. package/dist/nodes/Mastodon/endorsements/index.js.map +1 -0
  206. package/dist/nodes/Mastodon/favourites/FavouritesMethods.d.ts +3 -0
  207. package/dist/nodes/Mastodon/favourites/FavouritesMethods.js +14 -0
  208. package/dist/nodes/Mastodon/favourites/FavouritesMethods.js.map +1 -0
  209. package/dist/nodes/Mastodon/favourites/FavouritesProperties.d.ts +3 -0
  210. package/dist/nodes/Mastodon/favourites/FavouritesProperties.js +27 -0
  211. package/dist/nodes/Mastodon/favourites/FavouritesProperties.js.map +1 -0
  212. package/dist/nodes/Mastodon/favourites/index.d.ts +7 -0
  213. package/dist/nodes/Mastodon/favourites/index.js +47 -0
  214. package/dist/nodes/Mastodon/favourites/index.js.map +1 -0
  215. package/dist/nodes/Mastodon/featuredTags/FeaturedTagInterfaces.d.ts +7 -0
  216. package/dist/nodes/Mastodon/featuredTags/FeaturedTagInterfaces.js +3 -0
  217. package/dist/nodes/Mastodon/featuredTags/FeaturedTagInterfaces.js.map +1 -0
  218. package/dist/nodes/Mastodon/featuredTags/FeaturedTagMethods.d.ts +5 -0
  219. package/dist/nodes/Mastodon/featuredTags/FeaturedTagMethods.js +18 -0
  220. package/dist/nodes/Mastodon/featuredTags/FeaturedTagMethods.js.map +1 -0
  221. package/dist/nodes/Mastodon/featuredTags/FeaturedTagProperties.d.ts +3 -0
  222. package/dist/nodes/Mastodon/featuredTags/FeaturedTagProperties.js +68 -0
  223. package/dist/nodes/Mastodon/featuredTags/FeaturedTagProperties.js.map +1 -0
  224. package/dist/nodes/Mastodon/featuredTags/index.d.ts +8 -0
  225. package/dist/nodes/Mastodon/featuredTags/index.js +48 -0
  226. package/dist/nodes/Mastodon/featuredTags/index.js.map +1 -0
  227. package/dist/nodes/Mastodon/filters/FiltersMethods.d.ts +4 -0
  228. package/dist/nodes/Mastodon/filters/FiltersMethods.js +32 -0
  229. package/dist/nodes/Mastodon/filters/FiltersMethods.js.map +1 -0
  230. package/dist/nodes/Mastodon/filters/FiltersProperties.d.ts +3 -0
  231. package/dist/nodes/Mastodon/filters/FiltersProperties.js +190 -0
  232. package/dist/nodes/Mastodon/filters/FiltersProperties.js.map +1 -0
  233. package/dist/nodes/Mastodon/filters/index.d.ts +8 -0
  234. package/dist/nodes/Mastodon/filters/index.js +48 -0
  235. package/dist/nodes/Mastodon/filters/index.js.map +1 -0
  236. package/dist/nodes/Mastodon/followRequests/FollowRequestMethods.d.ts +6 -0
  237. package/dist/nodes/Mastodon/followRequests/FollowRequestMethods.js +18 -0
  238. package/dist/nodes/Mastodon/followRequests/FollowRequestMethods.js.map +1 -0
  239. package/dist/nodes/Mastodon/followRequests/FollowRequestProperties.d.ts +3 -0
  240. package/dist/nodes/Mastodon/followRequests/FollowRequestProperties.js +54 -0
  241. package/dist/nodes/Mastodon/followRequests/FollowRequestProperties.js.map +1 -0
  242. package/dist/nodes/Mastodon/followRequests/index.d.ts +8 -0
  243. package/dist/nodes/Mastodon/followRequests/index.js +48 -0
  244. package/dist/nodes/Mastodon/followRequests/index.js.map +1 -0
  245. package/dist/nodes/Mastodon/followedTags/FollowedTagsMethods.d.ts +2 -0
  246. package/dist/nodes/Mastodon/followedTags/FollowedTagsMethods.js +19 -0
  247. package/dist/nodes/Mastodon/followedTags/FollowedTagsMethods.js.map +1 -0
  248. package/dist/nodes/Mastodon/followedTags/FollowedTagsProperties.d.ts +3 -0
  249. package/dist/nodes/Mastodon/followedTags/FollowedTagsProperties.js +64 -0
  250. package/dist/nodes/Mastodon/followedTags/FollowedTagsProperties.js.map +1 -0
  251. package/dist/nodes/Mastodon/followedTags/index.d.ts +6 -0
  252. package/dist/nodes/Mastodon/followedTags/index.js +46 -0
  253. package/dist/nodes/Mastodon/followedTags/index.js.map +1 -0
  254. package/dist/nodes/Mastodon/instance/InstanceInterfaces.d.ts +59 -0
  255. package/dist/nodes/Mastodon/instance/InstanceInterfaces.js +3 -0
  256. package/dist/nodes/Mastodon/instance/InstanceInterfaces.js.map +1 -0
  257. package/dist/nodes/Mastodon/instance/InstanceMethods.d.ts +3 -0
  258. package/dist/nodes/Mastodon/instance/InstanceMethods.js +8 -0
  259. package/dist/nodes/Mastodon/instance/InstanceMethods.js.map +1 -0
  260. package/dist/nodes/Mastodon/instance/InstanceProperties.d.ts +2 -0
  261. package/dist/nodes/Mastodon/instance/InstanceProperties.js +26 -0
  262. package/dist/nodes/Mastodon/instance/InstanceProperties.js.map +1 -0
  263. package/dist/nodes/Mastodon/instance/index.d.ts +6 -0
  264. package/dist/nodes/Mastodon/instance/index.js +45 -0
  265. package/dist/nodes/Mastodon/instance/index.js.map +1 -0
  266. package/dist/nodes/Mastodon/lists/ListInterfaces.d.ts +6 -0
  267. package/dist/nodes/Mastodon/lists/ListInterfaces.js +3 -0
  268. package/dist/nodes/Mastodon/lists/ListInterfaces.js.map +1 -0
  269. package/dist/nodes/Mastodon/lists/ListMethods.d.ts +10 -0
  270. package/dist/nodes/Mastodon/lists/ListMethods.js +84 -0
  271. package/dist/nodes/Mastodon/lists/ListMethods.js.map +1 -0
  272. package/dist/nodes/Mastodon/lists/ListProperties.d.ts +3 -0
  273. package/dist/nodes/Mastodon/lists/ListProperties.js +208 -0
  274. package/dist/nodes/Mastodon/lists/ListProperties.js.map +1 -0
  275. package/dist/nodes/Mastodon/lists/index.d.ts +13 -0
  276. package/dist/nodes/Mastodon/lists/index.js +53 -0
  277. package/dist/nodes/Mastodon/lists/index.js.map +1 -0
  278. package/dist/nodes/Mastodon/markers/MarkerInterfaces.d.ts +16 -0
  279. package/dist/nodes/Mastodon/markers/MarkerInterfaces.js +3 -0
  280. package/dist/nodes/Mastodon/markers/MarkerInterfaces.js.map +1 -0
  281. package/dist/nodes/Mastodon/markers/MarkerMethods.d.ts +4 -0
  282. package/dist/nodes/Mastodon/markers/MarkerMethods.js +25 -0
  283. package/dist/nodes/Mastodon/markers/MarkerMethods.js.map +1 -0
  284. package/dist/nodes/Mastodon/markers/MarkersInterfaces.d.ts +18 -0
  285. package/dist/nodes/Mastodon/markers/MarkersInterfaces.js +3 -0
  286. package/dist/nodes/Mastodon/markers/MarkersInterfaces.js.map +1 -0
  287. package/dist/nodes/Mastodon/markers/MarkersProperties.d.ts +3 -0
  288. package/dist/nodes/Mastodon/markers/MarkersProperties.js +86 -0
  289. package/dist/nodes/Mastodon/markers/MarkersProperties.js.map +1 -0
  290. package/dist/nodes/Mastodon/markers/index.d.ts +7 -0
  291. package/dist/nodes/Mastodon/markers/index.js +47 -0
  292. package/dist/nodes/Mastodon/markers/index.js.map +1 -0
  293. package/dist/nodes/Mastodon/measures/MeasureMethods.d.ts +3 -0
  294. package/dist/nodes/Mastodon/measures/MeasureMethods.js +13 -0
  295. package/dist/nodes/Mastodon/measures/MeasureMethods.js.map +1 -0
  296. package/dist/nodes/Mastodon/measures/MeasureProperties.d.ts +3 -0
  297. package/dist/nodes/Mastodon/measures/MeasureProperties.js +48 -0
  298. package/dist/nodes/Mastodon/measures/MeasureProperties.js.map +1 -0
  299. package/dist/nodes/Mastodon/measures/index.d.ts +7 -0
  300. package/dist/nodes/Mastodon/measures/index.js +47 -0
  301. package/dist/nodes/Mastodon/measures/index.js.map +1 -0
  302. package/dist/nodes/Mastodon/media/MediaMethods.d.ts +13 -0
  303. package/dist/nodes/Mastodon/media/MediaMethods.js +45 -0
  304. package/dist/nodes/Mastodon/media/MediaMethods.js.map +1 -0
  305. package/dist/nodes/Mastodon/media/MediaProperties.d.ts +3 -0
  306. package/dist/nodes/Mastodon/media/MediaProperties.js +122 -0
  307. package/dist/nodes/Mastodon/media/MediaProperties.js.map +1 -0
  308. package/dist/nodes/Mastodon/media/index.d.ts +7 -0
  309. package/dist/nodes/Mastodon/media/index.js +47 -0
  310. package/dist/nodes/Mastodon/media/index.js.map +1 -0
  311. package/dist/nodes/Mastodon/mutes/MutesMethods.d.ts +3 -0
  312. package/dist/nodes/Mastodon/mutes/MutesMethods.js +22 -0
  313. package/dist/nodes/Mastodon/mutes/MutesMethods.js.map +1 -0
  314. package/dist/nodes/Mastodon/mutes/MutesProperties.d.ts +3 -0
  315. package/dist/nodes/Mastodon/mutes/MutesProperties.js +75 -0
  316. package/dist/nodes/Mastodon/mutes/MutesProperties.js.map +1 -0
  317. package/dist/nodes/Mastodon/mutes/index.d.ts +6 -0
  318. package/dist/nodes/Mastodon/mutes/index.js +14 -0
  319. package/dist/nodes/Mastodon/mutes/index.js.map +1 -0
  320. package/dist/nodes/Mastodon/n8n.png +0 -0
  321. package/dist/nodes/Mastodon/n8n.svg +10 -0
  322. package/dist/nodes/Mastodon/notifications/NotificationInterfaces.d.ts +19 -0
  323. package/dist/nodes/Mastodon/notifications/NotificationInterfaces.js +3 -0
  324. package/dist/nodes/Mastodon/notifications/NotificationInterfaces.js.map +1 -0
  325. package/dist/nodes/Mastodon/notifications/NotificationMethods.d.ts +5 -0
  326. package/dist/nodes/Mastodon/notifications/NotificationMethods.js +38 -0
  327. package/dist/nodes/Mastodon/notifications/NotificationMethods.js.map +1 -0
  328. package/dist/nodes/Mastodon/notifications/NotificationProperties.d.ts +3 -0
  329. package/dist/nodes/Mastodon/notifications/NotificationProperties.js +179 -0
  330. package/dist/nodes/Mastodon/notifications/NotificationProperties.js.map +1 -0
  331. package/dist/nodes/Mastodon/notifications/index.d.ts +8 -0
  332. package/dist/nodes/Mastodon/notifications/index.js +48 -0
  333. package/dist/nodes/Mastodon/notifications/index.js.map +1 -0
  334. package/dist/nodes/Mastodon/oembed/OEmbedMethods.d.ts +2 -0
  335. package/dist/nodes/Mastodon/oembed/OEmbedMethods.js +9 -0
  336. package/dist/nodes/Mastodon/oembed/OEmbedMethods.js.map +1 -0
  337. package/dist/nodes/Mastodon/oembed/OEmbedProperties.d.ts +3 -0
  338. package/dist/nodes/Mastodon/oembed/OEmbedProperties.js +42 -0
  339. package/dist/nodes/Mastodon/oembed/OEmbedProperties.js.map +1 -0
  340. package/dist/nodes/Mastodon/oembed/index.d.ts +6 -0
  341. package/dist/nodes/Mastodon/oembed/index.js +46 -0
  342. package/dist/nodes/Mastodon/oembed/index.js.map +1 -0
  343. package/dist/nodes/Mastodon/polls/PollMethods.d.ts +19 -0
  344. package/dist/nodes/Mastodon/polls/PollMethods.js +15 -0
  345. package/dist/nodes/Mastodon/polls/PollMethods.js.map +1 -0
  346. package/dist/nodes/Mastodon/polls/PollProperties.d.ts +3 -0
  347. package/dist/nodes/Mastodon/polls/PollProperties.js +62 -0
  348. package/dist/nodes/Mastodon/polls/PollProperties.js.map +1 -0
  349. package/dist/nodes/Mastodon/polls/index.d.ts +7 -0
  350. package/dist/nodes/Mastodon/polls/index.js +47 -0
  351. package/dist/nodes/Mastodon/polls/index.js.map +1 -0
  352. package/dist/nodes/Mastodon/preferences/PreferenceMethods.d.ts +2 -0
  353. package/dist/nodes/Mastodon/preferences/PreferenceMethods.js +8 -0
  354. package/dist/nodes/Mastodon/preferences/PreferenceMethods.js.map +1 -0
  355. package/dist/nodes/Mastodon/preferences/PreferenceProperties.d.ts +3 -0
  356. package/dist/nodes/Mastodon/preferences/PreferenceProperties.js +27 -0
  357. package/dist/nodes/Mastodon/preferences/PreferenceProperties.js.map +1 -0
  358. package/dist/nodes/Mastodon/preferences/index.d.ts +6 -0
  359. package/dist/nodes/Mastodon/preferences/index.js +46 -0
  360. package/dist/nodes/Mastodon/preferences/index.js.map +1 -0
  361. package/dist/nodes/Mastodon/profile/ProfileMethods.d.ts +12 -0
  362. package/dist/nodes/Mastodon/profile/ProfileMethods.js +12 -0
  363. package/dist/nodes/Mastodon/profile/ProfileMethods.js.map +1 -0
  364. package/dist/nodes/Mastodon/profile/ProfileProperties.d.ts +3 -0
  365. package/dist/nodes/Mastodon/profile/ProfileProperties.js +33 -0
  366. package/dist/nodes/Mastodon/profile/ProfileProperties.js.map +1 -0
  367. package/dist/nodes/Mastodon/profile/index.d.ts +7 -0
  368. package/dist/nodes/Mastodon/profile/index.js +47 -0
  369. package/dist/nodes/Mastodon/profile/index.js.map +1 -0
  370. package/dist/nodes/Mastodon/proofs/ProofMethods.d.ts +2 -0
  371. package/dist/nodes/Mastodon/proofs/ProofMethods.js +8 -0
  372. package/dist/nodes/Mastodon/proofs/ProofMethods.js.map +1 -0
  373. package/dist/nodes/Mastodon/proofs/ProofProperties.d.ts +3 -0
  374. package/dist/nodes/Mastodon/proofs/ProofProperties.js +27 -0
  375. package/dist/nodes/Mastodon/proofs/ProofProperties.js.map +1 -0
  376. package/dist/nodes/Mastodon/proofs/index.d.ts +6 -0
  377. package/dist/nodes/Mastodon/proofs/index.js +46 -0
  378. package/dist/nodes/Mastodon/proofs/index.js.map +1 -0
  379. package/dist/nodes/Mastodon/push/PushInterfaces.d.ts +27 -0
  380. package/dist/nodes/Mastodon/push/PushInterfaces.js +3 -0
  381. package/dist/nodes/Mastodon/push/PushInterfaces.js.map +1 -0
  382. package/dist/nodes/Mastodon/push/PushMethods.d.ts +6 -0
  383. package/dist/nodes/Mastodon/push/PushMethods.js +44 -0
  384. package/dist/nodes/Mastodon/push/PushMethods.js.map +1 -0
  385. package/dist/nodes/Mastodon/push/PushProperties.d.ts +3 -0
  386. package/dist/nodes/Mastodon/push/PushProperties.js +216 -0
  387. package/dist/nodes/Mastodon/push/PushProperties.js.map +1 -0
  388. package/dist/nodes/Mastodon/push/index.d.ts +9 -0
  389. package/dist/nodes/Mastodon/push/index.js +49 -0
  390. package/dist/nodes/Mastodon/push/index.js.map +1 -0
  391. package/dist/nodes/Mastodon/relationship/RelationshipInterfaces.d.ts +15 -0
  392. package/dist/nodes/Mastodon/relationship/RelationshipInterfaces.js +3 -0
  393. package/dist/nodes/Mastodon/relationship/RelationshipInterfaces.js.map +1 -0
  394. package/dist/nodes/Mastodon/reports/ReportMethods.d.ts +4 -0
  395. package/dist/nodes/Mastodon/reports/ReportMethods.js +47 -0
  396. package/dist/nodes/Mastodon/reports/ReportMethods.js.map +1 -0
  397. package/dist/nodes/Mastodon/reports/ReportProperties.d.ts +3 -0
  398. package/dist/nodes/Mastodon/reports/ReportProperties.js +161 -0
  399. package/dist/nodes/Mastodon/reports/ReportProperties.js.map +1 -0
  400. package/dist/nodes/Mastodon/reports/index.d.ts +8 -0
  401. package/dist/nodes/Mastodon/reports/index.js +48 -0
  402. package/dist/nodes/Mastodon/reports/index.js.map +1 -0
  403. package/dist/nodes/Mastodon/retention/RetentionMethods.d.ts +2 -0
  404. package/dist/nodes/Mastodon/retention/RetentionMethods.js +8 -0
  405. package/dist/nodes/Mastodon/retention/RetentionMethods.js.map +1 -0
  406. package/dist/nodes/Mastodon/retention/RetentionProperties.d.ts +3 -0
  407. package/dist/nodes/Mastodon/retention/RetentionProperties.js +27 -0
  408. package/dist/nodes/Mastodon/retention/RetentionProperties.js.map +1 -0
  409. package/dist/nodes/Mastodon/retention/index.d.ts +6 -0
  410. package/dist/nodes/Mastodon/retention/index.js +46 -0
  411. package/dist/nodes/Mastodon/retention/index.js.map +1 -0
  412. package/dist/nodes/Mastodon/scheduledStatuses/ScheduledStatusMethods.d.ts +21 -0
  413. package/dist/nodes/Mastodon/scheduledStatuses/ScheduledStatusMethods.js +38 -0
  414. package/dist/nodes/Mastodon/scheduledStatuses/ScheduledStatusMethods.js.map +1 -0
  415. package/dist/nodes/Mastodon/scheduledStatuses/ScheduledStatusProperties.d.ts +3 -0
  416. package/dist/nodes/Mastodon/scheduledStatuses/ScheduledStatusProperties.js +122 -0
  417. package/dist/nodes/Mastodon/scheduledStatuses/ScheduledStatusProperties.js.map +1 -0
  418. package/dist/nodes/Mastodon/scheduledStatuses/index.d.ts +9 -0
  419. package/dist/nodes/Mastodon/scheduledStatuses/index.js +49 -0
  420. package/dist/nodes/Mastodon/scheduledStatuses/index.js.map +1 -0
  421. package/dist/nodes/Mastodon/search/SearchInterfaces.d.ts +23 -0
  422. package/dist/nodes/Mastodon/search/SearchInterfaces.js +3 -0
  423. package/dist/nodes/Mastodon/search/SearchInterfaces.js.map +1 -0
  424. package/dist/nodes/Mastodon/search/SearchMethods.d.ts +3 -0
  425. package/dist/nodes/Mastodon/search/SearchMethods.js +37 -0
  426. package/dist/nodes/Mastodon/search/SearchMethods.js.map +1 -0
  427. package/dist/nodes/Mastodon/search/SearchProperties.d.ts +3 -0
  428. package/dist/nodes/Mastodon/search/SearchProperties.js +125 -0
  429. package/dist/nodes/Mastodon/search/SearchProperties.js.map +1 -0
  430. package/dist/nodes/Mastodon/search/index.d.ts +6 -0
  431. package/dist/nodes/Mastodon/search/index.js +46 -0
  432. package/dist/nodes/Mastodon/search/index.js.map +1 -0
  433. package/dist/nodes/Mastodon/status/StatusInterface.d.ts +8 -0
  434. package/dist/nodes/Mastodon/status/StatusInterface.js +3 -0
  435. package/dist/nodes/Mastodon/status/StatusInterface.js.map +1 -0
  436. package/dist/nodes/Mastodon/status/StatusMethods.d.ts +3 -0
  437. package/dist/nodes/Mastodon/status/StatusMethods.js +155 -0
  438. package/dist/nodes/Mastodon/status/StatusMethods.js.map +1 -0
  439. package/dist/nodes/Mastodon/status/StatusMethodsTypes.d.ts +39 -0
  440. package/dist/nodes/Mastodon/status/StatusMethodsTypes.js +3 -0
  441. package/dist/nodes/Mastodon/status/StatusMethodsTypes.js.map +1 -0
  442. package/dist/nodes/Mastodon/status/StatusProperties.d.ts +12 -0
  443. package/dist/nodes/Mastodon/status/StatusProperties.js +281 -0
  444. package/dist/nodes/Mastodon/status/StatusProperties.js.map +1 -0
  445. package/dist/nodes/Mastodon/status/index.d.ts +17 -0
  446. package/dist/nodes/Mastodon/status/index.js +68 -0
  447. package/dist/nodes/Mastodon/status/index.js.map +1 -0
  448. package/dist/nodes/Mastodon/streaming/StreamingInterfaces.d.ts +10 -0
  449. package/dist/nodes/Mastodon/streaming/StreamingInterfaces.js +3 -0
  450. package/dist/nodes/Mastodon/streaming/StreamingInterfaces.js.map +1 -0
  451. package/dist/nodes/Mastodon/streaming/StreamingMethods.d.ts +5 -0
  452. package/dist/nodes/Mastodon/streaming/StreamingMethods.js +27 -0
  453. package/dist/nodes/Mastodon/streaming/StreamingMethods.js.map +1 -0
  454. package/dist/nodes/Mastodon/streaming/StreamingProperties.d.ts +3 -0
  455. package/dist/nodes/Mastodon/streaming/StreamingProperties.js +76 -0
  456. package/dist/nodes/Mastodon/streaming/StreamingProperties.js.map +1 -0
  457. package/dist/nodes/Mastodon/streaming/index.d.ts +8 -0
  458. package/dist/nodes/Mastodon/streaming/index.js +48 -0
  459. package/dist/nodes/Mastodon/streaming/index.js.map +1 -0
  460. package/dist/nodes/Mastodon/suggestions/SuggestionMethods.d.ts +3 -0
  461. package/dist/nodes/Mastodon/suggestions/SuggestionMethods.js +18 -0
  462. package/dist/nodes/Mastodon/suggestions/SuggestionMethods.js.map +1 -0
  463. package/dist/nodes/Mastodon/suggestions/SuggestionProperties.d.ts +3 -0
  464. package/dist/nodes/Mastodon/suggestions/SuggestionProperties.js +74 -0
  465. package/dist/nodes/Mastodon/suggestions/SuggestionProperties.js.map +1 -0
  466. package/dist/nodes/Mastodon/suggestions/index.d.ts +7 -0
  467. package/dist/nodes/Mastodon/suggestions/index.js +47 -0
  468. package/dist/nodes/Mastodon/suggestions/index.js.map +1 -0
  469. package/dist/nodes/Mastodon/tags/TagMethods.d.ts +14 -0
  470. package/dist/nodes/Mastodon/tags/TagMethods.js +19 -0
  471. package/dist/nodes/Mastodon/tags/TagMethods.js.map +1 -0
  472. package/dist/nodes/Mastodon/tags/TagProperties.d.ts +3 -0
  473. package/dist/nodes/Mastodon/tags/TagProperties.js +54 -0
  474. package/dist/nodes/Mastodon/tags/TagProperties.js.map +1 -0
  475. package/dist/nodes/Mastodon/tags/index.d.ts +8 -0
  476. package/dist/nodes/Mastodon/tags/index.js +48 -0
  477. package/dist/nodes/Mastodon/tags/index.js.map +1 -0
  478. package/dist/nodes/Mastodon/timeline/TimelineInterfaces.d.ts +14 -0
  479. package/dist/nodes/Mastodon/timeline/TimelineInterfaces.js +3 -0
  480. package/dist/nodes/Mastodon/timeline/TimelineInterfaces.js.map +1 -0
  481. package/dist/nodes/Mastodon/timeline/TimelineMethods.d.ts +7 -0
  482. package/dist/nodes/Mastodon/timeline/TimelineMethods.js +124 -0
  483. package/dist/nodes/Mastodon/timeline/TimelineMethods.js.map +1 -0
  484. package/dist/nodes/Mastodon/timeline/TimelineProperties.d.ts +3 -0
  485. package/dist/nodes/Mastodon/timeline/TimelineProperties.js +218 -0
  486. package/dist/nodes/Mastodon/timeline/TimelineProperties.js.map +1 -0
  487. package/dist/nodes/Mastodon/timeline/index.d.ts +10 -0
  488. package/dist/nodes/Mastodon/timeline/index.js +50 -0
  489. package/dist/nodes/Mastodon/timeline/index.js.map +1 -0
  490. package/dist/package.json +72 -0
  491. package/dist/src/utils/pkceWrapper.d.ts +5 -0
  492. package/dist/src/utils/pkceWrapper.js +47 -0
  493. package/dist/src/utils/pkceWrapper.js.map +1 -0
  494. package/index.js +8 -0
  495. package/package.json +72 -0
@@ -0,0 +1,616 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidationUtils = void 0;
4
+ exports.handleApiRequest = handleApiRequest;
5
+ exports.uploadAttachments = uploadAttachments;
6
+ exports.validateParams = validateParams;
7
+ exports.withRetry = withRetry;
8
+ exports.batchRequests = batchRequests;
9
+ exports.bulkOperation = bulkOperation;
10
+ const n8n_workflow_1 = require("n8n-workflow");
11
+ const n8n_workflow_2 = require("n8n-workflow");
12
+ class MastodonApiError extends Error {
13
+ constructor(message, statusCode, response) {
14
+ super(message);
15
+ this.statusCode = statusCode;
16
+ this.response = response;
17
+ this.name = 'MastodonApiError';
18
+ }
19
+ }
20
+ class MastodonRateLimitError extends MastodonApiError {
21
+ constructor(retryAfter) {
22
+ super(`Rate limit exceeded. Retry after ${retryAfter} seconds`, 429);
23
+ this.name = 'MastodonRateLimitError';
24
+ }
25
+ }
26
+ class MastodonLogger {
27
+ constructor() {
28
+ this.debugMode = false;
29
+ }
30
+ static getInstance() {
31
+ if (!MastodonLogger.instance) {
32
+ MastodonLogger.instance = new MastodonLogger();
33
+ }
34
+ return MastodonLogger.instance;
35
+ }
36
+ enableDebug(enable = true) {
37
+ this.debugMode = enable;
38
+ }
39
+ formatMessage(level, message, meta) {
40
+ const timestamp = new Date().toISOString();
41
+ const metaStr = meta ? ` ${JSON.stringify(meta)}` : '';
42
+ return `[${timestamp}] [Mastodon] [${level}] ${message}${metaStr}`;
43
+ }
44
+ debug(message, meta) {
45
+ if (this.debugMode) {
46
+ n8n_workflow_2.LoggerProxy.debug(this.formatMessage('DEBUG', message, meta));
47
+ }
48
+ }
49
+ info(message, meta) {
50
+ n8n_workflow_2.LoggerProxy.info(this.formatMessage('INFO', message, meta));
51
+ }
52
+ warn(message, meta) {
53
+ n8n_workflow_2.LoggerProxy.warn(this.formatMessage('WARN', message, meta));
54
+ }
55
+ error(message, error, meta) {
56
+ const errorMeta = error ? {
57
+ ...meta,
58
+ errorName: error.name,
59
+ errorMessage: error.message,
60
+ stack: error.stack
61
+ } : meta;
62
+ n8n_workflow_2.LoggerProxy.error(this.formatMessage('ERROR', message, errorMeta));
63
+ }
64
+ metric(name, value, meta) {
65
+ n8n_workflow_2.LoggerProxy.info(this.formatMessage('METRIC', `${name}=${value}`, meta));
66
+ }
67
+ }
68
+ class PerformanceMonitor {
69
+ constructor() {
70
+ this.metrics = new Map();
71
+ this.logger = MastodonLogger.getInstance();
72
+ }
73
+ static getInstance() {
74
+ if (!PerformanceMonitor.instance) {
75
+ PerformanceMonitor.instance = new PerformanceMonitor();
76
+ }
77
+ return PerformanceMonitor.instance;
78
+ }
79
+ async trackOperation(operationName, operation) {
80
+ const startTime = Date.now();
81
+ try {
82
+ const result = await operation();
83
+ this.recordMetric(operationName, Date.now() - startTime);
84
+ return result;
85
+ }
86
+ catch (error) {
87
+ this.recordError(operationName);
88
+ throw error;
89
+ }
90
+ }
91
+ recordMetric(operationName, duration) {
92
+ const current = this.metrics.get(operationName) || { count: 0, totalTime: 0, errors: 0 };
93
+ current.count++;
94
+ current.totalTime += duration;
95
+ this.metrics.set(operationName, current);
96
+ this.logger.metric(operationName, duration, {
97
+ avgTime: current.totalTime / current.count,
98
+ totalCalls: current.count,
99
+ errorRate: current.errors / current.count
100
+ });
101
+ }
102
+ recordError(operationName) {
103
+ const current = this.metrics.get(operationName) || { count: 0, totalTime: 0, errors: 0 };
104
+ current.errors++;
105
+ this.metrics.set(operationName, current);
106
+ }
107
+ getMetrics() {
108
+ const result = {};
109
+ for (const [operation, metrics] of this.metrics.entries()) {
110
+ result[operation] = {
111
+ avgTime: metrics.totalTime / metrics.count,
112
+ totalCalls: metrics.count,
113
+ errorRate: metrics.errors / metrics.count
114
+ };
115
+ }
116
+ return result;
117
+ }
118
+ }
119
+ class RequestQueue {
120
+ constructor() {
121
+ this.queue = [];
122
+ this.processing = false;
123
+ this.rateLimitRemaining = 300;
124
+ this.rateLimitReset = Date.now();
125
+ }
126
+ static getInstance() {
127
+ if (!RequestQueue.instance) {
128
+ RequestQueue.instance = new RequestQueue();
129
+ }
130
+ return RequestQueue.instance;
131
+ }
132
+ updateRateLimits(remaining, resetTime) {
133
+ this.rateLimitRemaining = remaining;
134
+ this.rateLimitReset = resetTime * 1000;
135
+ }
136
+ async add(request) {
137
+ return new Promise((resolve, reject) => {
138
+ this.queue.push(async () => {
139
+ try {
140
+ if (this.rateLimitRemaining <= 0) {
141
+ const now = Date.now();
142
+ if (now < this.rateLimitReset) {
143
+ const delay = this.rateLimitReset - now;
144
+ n8n_workflow_2.LoggerProxy.debug(`[Mastodon] Queue waiting for rate limit reset: ${delay}ms`);
145
+ await new Promise(r => setTimeout(r, delay));
146
+ }
147
+ }
148
+ const result = await request();
149
+ resolve(result);
150
+ }
151
+ catch (error) {
152
+ reject(error);
153
+ }
154
+ });
155
+ this.processQueue();
156
+ });
157
+ }
158
+ async processQueue() {
159
+ if (this.processing || this.queue.length === 0)
160
+ return;
161
+ this.processing = true;
162
+ while (this.queue.length > 0) {
163
+ const request = this.queue.shift();
164
+ if (request) {
165
+ await request();
166
+ await new Promise(resolve => setTimeout(resolve, 100));
167
+ }
168
+ }
169
+ this.processing = false;
170
+ }
171
+ }
172
+ class RateLimitHandler {
173
+ static handleRateLimit(limit, remaining, reset) {
174
+ const queue = RequestQueue.getInstance();
175
+ queue.updateRateLimits(remaining, reset);
176
+ }
177
+ }
178
+ class ResponseCache {
179
+ constructor() {
180
+ this.cache = new Map();
181
+ this.DEFAULT_TTL = 5 * 60 * 1000;
182
+ }
183
+ static getInstance() {
184
+ if (!ResponseCache.instance) {
185
+ ResponseCache.instance = new ResponseCache();
186
+ }
187
+ return ResponseCache.instance;
188
+ }
189
+ generateCacheKey(method, endpoint, params) {
190
+ return `${method}:${endpoint}:${params}`;
191
+ }
192
+ get(method, endpoint, params) {
193
+ const key = this.generateCacheKey(method, endpoint, params);
194
+ const cached = this.cache.get(key);
195
+ if (!cached) {
196
+ return null;
197
+ }
198
+ if (Date.now() - cached.timestamp > this.DEFAULT_TTL) {
199
+ this.cache.delete(key);
200
+ return null;
201
+ }
202
+ return cached.data;
203
+ }
204
+ set(method, endpoint, params, data) {
205
+ const key = this.generateCacheKey(method, endpoint, params);
206
+ this.cache.set(key, {
207
+ data,
208
+ timestamp: Date.now(),
209
+ });
210
+ }
211
+ invalidate(method, endpoint, params) {
212
+ const key = this.generateCacheKey(method, endpoint, params);
213
+ this.cache.delete(key);
214
+ }
215
+ invalidatePattern(pattern) {
216
+ for (const key of this.cache.keys()) {
217
+ if (key.includes(pattern)) {
218
+ this.cache.delete(key);
219
+ }
220
+ }
221
+ }
222
+ }
223
+ class TestMode {
224
+ constructor() {
225
+ this.enabled = false;
226
+ this.mockResponses = new Map();
227
+ this.logger = MastodonLogger.getInstance();
228
+ }
229
+ static getInstance() {
230
+ if (!TestMode.instance) {
231
+ TestMode.instance = new TestMode();
232
+ }
233
+ return TestMode.instance;
234
+ }
235
+ enable() {
236
+ this.enabled = true;
237
+ this.logger.info('Test mode enabled');
238
+ }
239
+ disable() {
240
+ this.enabled = false;
241
+ this.logger.info('Test mode disabled');
242
+ }
243
+ isEnabled() {
244
+ return this.enabled;
245
+ }
246
+ setMockResponse(key, response) {
247
+ this.mockResponses.set(key, response);
248
+ }
249
+ getMockResponse(method, endpoint) {
250
+ const key = `${method}:${endpoint}`;
251
+ return this.mockResponses.get(key);
252
+ }
253
+ clearMockResponses() {
254
+ this.mockResponses.clear();
255
+ }
256
+ }
257
+ class ApiMetrics {
258
+ constructor() {
259
+ this.metrics = {
260
+ requests: {},
261
+ errors: {},
262
+ rateLimits: {},
263
+ timing: {},
264
+ };
265
+ }
266
+ static getInstance() {
267
+ if (!ApiMetrics.instance) {
268
+ ApiMetrics.instance = new ApiMetrics();
269
+ }
270
+ return ApiMetrics.instance;
271
+ }
272
+ trackRequest(endpoint, duration) {
273
+ this.metrics.requests[endpoint] = (this.metrics.requests[endpoint] || 0) + 1;
274
+ if (!this.metrics.timing[endpoint]) {
275
+ this.metrics.timing[endpoint] = [];
276
+ }
277
+ this.metrics.timing[endpoint].push(duration);
278
+ }
279
+ trackError(endpoint, statusCode) {
280
+ const key = `${endpoint}:${statusCode}`;
281
+ this.metrics.errors[key] = (this.metrics.errors[key] || 0) + 1;
282
+ }
283
+ trackRateLimit(endpoint) {
284
+ this.metrics.rateLimits[endpoint] = (this.metrics.rateLimits[endpoint] || 0) + 1;
285
+ }
286
+ getMetrics() {
287
+ const averageTimings = {};
288
+ for (const [endpoint, timings] of Object.entries(this.metrics.timing)) {
289
+ averageTimings[endpoint] = timings.reduce((a, b) => a + b, 0) / timings.length;
290
+ }
291
+ return {
292
+ totalRequests: Object.values(this.metrics.requests).reduce((a, b) => a + b, 0),
293
+ requestsByEndpoint: this.metrics.requests,
294
+ totalErrors: Object.values(this.metrics.errors).reduce((a, b) => a + b, 0),
295
+ errorsByEndpoint: this.metrics.errors,
296
+ rateLimitHits: this.metrics.rateLimits,
297
+ averageResponseTime: averageTimings,
298
+ };
299
+ }
300
+ reset() {
301
+ this.metrics = {
302
+ requests: {},
303
+ errors: {},
304
+ rateLimits: {},
305
+ timing: {},
306
+ };
307
+ }
308
+ }
309
+ async function handleApiRequest(method, endpoint, body = {}, qs = {}, options = {}, retryAttempt = 0) {
310
+ var _a, _b, _c;
311
+ const logger = MastodonLogger.getInstance();
312
+ const monitor = PerformanceMonitor.getInstance();
313
+ const cache = ResponseCache.getInstance();
314
+ const operationName = `${method}:${endpoint.split('/').slice(-2).join('/')}`;
315
+ const startTime = Date.now();
316
+ const credentials = await this.getCredentials('mastodonOAuth2Api');
317
+ logger.debug('Mastodon credentials at runtime', credentials);
318
+ if (!(credentials === null || credentials === void 0 ? void 0 : credentials.baseUrl)) {
319
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No Mastodon OAuth2 credentials found or baseUrl missing. Please ensure you have selected a valid Mastodon OAuth2 credential in the node.');
320
+ }
321
+ if (!((_a = credentials.oauth2) === null || _a === void 0 ? void 0 : _a.accessToken)) {
322
+ const accessToken = ((_b = credentials.oauthTokenData) === null || _b === void 0 ? void 0 : _b.access_token) || credentials.access_token || credentials.accessToken;
323
+ if (accessToken) {
324
+ credentials.oauth2 = { accessToken };
325
+ }
326
+ }
327
+ if (!((_c = credentials.oauth2) === null || _c === void 0 ? void 0 : _c.accessToken)) {
328
+ logger.error('No valid access token found in credentials', undefined, credentials);
329
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No valid access token found. Please reconnect your Mastodon account, ensure you have selected the correct OAuth2 credential, and that it is not expired.');
330
+ }
331
+ let baseUrl = credentials.baseUrl;
332
+ if (baseUrl.endsWith('/'))
333
+ baseUrl = baseUrl.slice(0, -1);
334
+ let fullUrl = endpoint.startsWith('http') ? endpoint : `${baseUrl}${endpoint.startsWith('/') ? '' : '/'}${endpoint}`;
335
+ const metrics = ApiMetrics.getInstance();
336
+ return monitor.trackOperation(operationName, async () => {
337
+ const queue = RequestQueue.getInstance();
338
+ return queue.add(async () => {
339
+ var _a, _b, _c, _d, _e, _f;
340
+ if (method === 'GET') {
341
+ const params = JSON.stringify({ ...qs, ...options });
342
+ const cachedResponse = cache.get(method, fullUrl, params);
343
+ if (cachedResponse) {
344
+ logger.debug('Cache hit', { endpoint: fullUrl });
345
+ return cachedResponse;
346
+ }
347
+ }
348
+ const maxRetries = 5;
349
+ const baseDelay = 3000;
350
+ let requestOptions = {
351
+ headers: {
352
+ 'Content-Type': 'application/json',
353
+ 'User-Agent': 'n8n-nodes-mastodon',
354
+ 'Accept': 'application/json',
355
+ 'Connection': 'keep-alive',
356
+ 'Authorization': `Bearer ${(_b = (_a = credentials === null || credentials === void 0 ? void 0 : credentials.oauth2) === null || _a === void 0 ? void 0 : _a.accessToken) !== null && _b !== void 0 ? _b : ''}`,
357
+ },
358
+ method: method.toUpperCase(),
359
+ body,
360
+ qs,
361
+ uri: fullUrl,
362
+ json: true,
363
+ resolveWithFullResponse: true,
364
+ timeout: 60000,
365
+ followRedirect: true,
366
+ followAllRedirects: true,
367
+ maxRedirects: 5,
368
+ forever: true,
369
+ gzip: true,
370
+ pool: { maxSockets: 100 },
371
+ };
372
+ try {
373
+ if (Object.keys(options).length !== 0) {
374
+ requestOptions = { ...requestOptions, ...options };
375
+ }
376
+ if (Object.keys(body).length === 0) {
377
+ delete requestOptions.body;
378
+ }
379
+ if (Object.keys(qs).length === 0) {
380
+ delete requestOptions.qs;
381
+ }
382
+ logger.debug('Making API request', { method, endpoint: fullUrl, retryAttempt });
383
+ const rawResponse = await this.helpers.requestOAuth2.call(this, 'mastodonOAuth2Api', requestOptions);
384
+ const responseBody = rawResponse && (rawResponse.body !== undefined) ? rawResponse.body : rawResponse;
385
+ if (rawResponse.headers) {
386
+ RateLimitHandler.handleRateLimit(parseInt(rawResponse.headers['x-ratelimit-limit'] || '0'), parseInt(rawResponse.headers['x-ratelimit-remaining'] || '0'), parseInt(rawResponse.headers['x-ratelimit-reset'] || '0'));
387
+ }
388
+ if (method === 'GET') {
389
+ const paramsJson = JSON.stringify({ ...qs, ...options });
390
+ cache.set(method, fullUrl, paramsJson, responseBody);
391
+ }
392
+ metrics.trackRequest(operationName, Date.now() - startTime);
393
+ return responseBody;
394
+ }
395
+ catch (error) {
396
+ metrics.trackError(operationName, error.statusCode || 500);
397
+ const errorDetails = {
398
+ method,
399
+ endpoint: fullUrl,
400
+ retryAttempt,
401
+ errorName: error.name,
402
+ errorMessage: error.message,
403
+ statusCode: error.statusCode,
404
+ stack: error.stack,
405
+ response: (_c = error.response) === null || _c === void 0 ? void 0 : _c.body
406
+ };
407
+ if (!error.statusCode || error.code === 'ETIMEDOUT' || error.code === 'ECONNREFUSED' || error.code === 'ECONNRESET') {
408
+ logger.warn('Network error occurred', errorDetails);
409
+ if (retryAttempt < maxRetries) {
410
+ const delay = Math.min(baseDelay * Math.pow(2, retryAttempt), 30000);
411
+ logger.info(`Retrying request after ${delay}ms (attempt ${retryAttempt + 1}/${maxRetries})`);
412
+ await new Promise(resolve => setTimeout(resolve, delay));
413
+ return handleApiRequest.call(this, method, endpoint, body, qs, options, retryAttempt + 1);
414
+ }
415
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Network error: Unable to connect to Mastodon server. Please check if ${baseUrl} is accessible.`, { description: 'The server is unreachable. This could be due to temporary network issues or server maintenance.' });
416
+ }
417
+ switch (error.statusCode) {
418
+ case 401:
419
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Authentication failed: Please reconnect your Mastodon credentials.');
420
+ case 403:
421
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Insufficient OAuth2 scope: Please ensure your Mastodon app and credentials have all required permissions for this operation.');
422
+ case 404:
423
+ const resourceType = ((_d = endpoint.split('/').pop()) === null || _d === void 0 ? void 0 : _d.replace(/s$/, '')) || 'resource';
424
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The requested ${resourceType} was not found. Please verify the ID or handle is correct.`, { itemIndex: 0 });
425
+ case 429:
426
+ const retryAfter = parseInt(((_f = (_e = error.response) === null || _e === void 0 ? void 0 : _e.headers) === null || _f === void 0 ? void 0 : _f['retry-after']) || '60');
427
+ throw new MastodonRateLimitError(retryAfter);
428
+ case 502:
429
+ case 503:
430
+ case 504:
431
+ logger.warn(`Received ${error.statusCode} error, retrying request`, errorDetails);
432
+ if (retryAttempt < maxRetries) {
433
+ const delay = Math.min(baseDelay * Math.pow(2, retryAttempt), 30000);
434
+ logger.info(`Retrying request after ${delay}ms (attempt ${retryAttempt + 1}/${maxRetries})`);
435
+ await new Promise(resolve => setTimeout(resolve, delay));
436
+ return handleApiRequest.call(this, method, endpoint, body, qs, options, retryAttempt + 1);
437
+ }
438
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Mastodon API is temporarily unavailable (${error.statusCode}). Please try again later.`, { description: 'The server is experiencing high load or maintenance. This is usually temporary.' });
439
+ default:
440
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Mastodon API error (${error.statusCode || 'unknown'}): ${error.message}`, { description: error.description || 'An unexpected error occurred while communicating with the Mastodon API.' });
441
+ }
442
+ }
443
+ });
444
+ });
445
+ }
446
+ async function uploadAttachments(items, binaryProperties, url, i) {
447
+ const uploadUrl = `${url}/api/v2/media`;
448
+ const media = [];
449
+ for (const binaryPropertyName of binaryProperties) {
450
+ const binaryData = items[i].binary;
451
+ if (!binaryData) {
452
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No binary data exists. So file cannot be written!', { itemIndex: i });
453
+ }
454
+ if (!binaryData[binaryPropertyName]) {
455
+ continue;
456
+ }
457
+ const buffer = await this.helpers.getBinaryDataBuffer(i, binaryPropertyName);
458
+ const file = {
459
+ value: buffer,
460
+ options: {
461
+ filename: binaryData[binaryPropertyName].fileName,
462
+ contentType: binaryData[binaryPropertyName].mimeType,
463
+ },
464
+ };
465
+ const formData = { file };
466
+ const response = await handleApiRequest.call(this, 'POST', uploadUrl, {}, {}, { formData });
467
+ let responseUrl = response.url;
468
+ const mediaStatusUrl = `${url}/api/v1/media/${response.id}`;
469
+ let attempts = 0;
470
+ while (!responseUrl && attempts < 10) {
471
+ const statusResponse = await handleApiRequest.call(this, 'GET', mediaStatusUrl);
472
+ responseUrl = statusResponse.url;
473
+ attempts++;
474
+ await (0, n8n_workflow_1.sleep)(5000);
475
+ }
476
+ if (!responseUrl) {
477
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Unable to upload media to Mastodon', { itemIndex: i });
478
+ }
479
+ media.push(response);
480
+ }
481
+ return media;
482
+ }
483
+ class ValidationUtils {
484
+ static validateRequiredParameters(params, required) {
485
+ const missing = required.filter(param => params[param] === undefined || params[param] === null);
486
+ if (missing.length > 0) {
487
+ throw new Error(`Missing required parameters: ${missing.join(', ')}`);
488
+ }
489
+ }
490
+ static sanitizeStringParam(value, maxLength = 500) {
491
+ if (typeof value !== 'string') {
492
+ throw new Error(`Expected string parameter, got ${typeof value}`);
493
+ }
494
+ return value.trim().slice(0, maxLength);
495
+ }
496
+ static sanitizeNumberParam(value, min = 0, max = Infinity) {
497
+ const num = Number(value);
498
+ if (isNaN(num)) {
499
+ throw new Error(`Expected number parameter, got ${typeof value}`);
500
+ }
501
+ return Math.min(Math.max(num, min), max);
502
+ }
503
+ static validateUrl(url) {
504
+ try {
505
+ new URL(url);
506
+ }
507
+ catch (error) {
508
+ throw new Error(`Invalid URL: ${url}`);
509
+ }
510
+ }
511
+ static validateDateParam(value) {
512
+ const date = new Date(value);
513
+ if (isNaN(date.getTime())) {
514
+ throw new Error(`Invalid date format: ${value}`);
515
+ }
516
+ return date;
517
+ }
518
+ static sanitizeVisibility(visibility) {
519
+ const allowed = ['public', 'unlisted', 'private', 'direct'];
520
+ if (!allowed.includes(visibility)) {
521
+ throw new Error(`Invalid visibility value. Must be one of: ${allowed.join(', ')}`);
522
+ }
523
+ return visibility;
524
+ }
525
+ }
526
+ exports.ValidationUtils = ValidationUtils;
527
+ function validateParams(requiredParams = []) {
528
+ return function (target, propertyKey, descriptor) {
529
+ const originalMethod = descriptor.value;
530
+ descriptor.value = function (...args) {
531
+ const params = {};
532
+ try {
533
+ const nodeParameters = this.getNodeParameter;
534
+ requiredParams.forEach(param => {
535
+ params[param] = nodeParameters.call(this, param, 0);
536
+ });
537
+ }
538
+ catch (error) {
539
+ throw new Error(`Failed to validate parameters: ${error.message}`);
540
+ }
541
+ ValidationUtils.validateRequiredParameters(params, requiredParams);
542
+ return originalMethod.apply(this, args);
543
+ };
544
+ return descriptor;
545
+ };
546
+ }
547
+ function withRetry(maxRetries = 3, baseDelay = 1000) {
548
+ return function (target, propertyKey, descriptor) {
549
+ const originalMethod = descriptor.value;
550
+ descriptor.value = async function (...args) {
551
+ let lastError;
552
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
553
+ try {
554
+ return await originalMethod.apply(this, args);
555
+ }
556
+ catch (error) {
557
+ lastError = error;
558
+ if (error.statusCode === 401 || error.statusCode === 403 || error.statusCode === 404) {
559
+ throw error;
560
+ }
561
+ const delay = baseDelay * Math.pow(2, attempt);
562
+ n8n_workflow_2.LoggerProxy.debug(`Retry attempt ${attempt + 1}/${maxRetries} after ${delay}ms`);
563
+ await new Promise(resolve => setTimeout(resolve, delay));
564
+ }
565
+ }
566
+ throw lastError;
567
+ };
568
+ return descriptor;
569
+ };
570
+ }
571
+ async function batchRequests(requests, batchSize = 3) {
572
+ const results = [];
573
+ for (let i = 0; i < requests.length; i += batchSize) {
574
+ const batch = requests.slice(i, i + batchSize);
575
+ const batchResults = await Promise.all(batch.map(request => request()));
576
+ results.push(...batchResults);
577
+ if (i + batchSize < requests.length) {
578
+ await new Promise(resolve => setTimeout(resolve, 1000));
579
+ }
580
+ }
581
+ return results;
582
+ }
583
+ async function bulkOperation(items, operation, options = {}) {
584
+ const { batchSize = 3, continueOnError = false, validateItem = () => true, } = options;
585
+ const results = [];
586
+ const errors = [];
587
+ for (let i = 0; i < items.length; i += batchSize) {
588
+ const batch = items.slice(i, i + batchSize);
589
+ const batchPromises = batch.map(async (item, index) => {
590
+ const actualIndex = i + index;
591
+ try {
592
+ if (!validateItem(item)) {
593
+ throw new Error(`Validation failed for item ${actualIndex}`);
594
+ }
595
+ return await operation(item, actualIndex);
596
+ }
597
+ catch (error) {
598
+ if (!continueOnError) {
599
+ throw error;
600
+ }
601
+ errors.push(error);
602
+ return null;
603
+ }
604
+ });
605
+ const batchResults = await Promise.all(batchPromises);
606
+ results.push(...batchResults.filter((r) => r !== null));
607
+ if (i + batchSize < items.length) {
608
+ await new Promise(resolve => setTimeout(resolve, 1000));
609
+ }
610
+ }
611
+ if (errors.length > 0 && !continueOnError) {
612
+ throw new Error(`Multiple errors occurred: ${errors.map(e => e.message).join('; ')}`);
613
+ }
614
+ return results;
615
+ }
616
+ //# sourceMappingURL=Mastodon_Methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mastodon_Methods.js","sourceRoot":"","sources":["../../../nodes/Mastodon/Mastodon_Methods.ts"],"names":[],"mappings":"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"}