@hasna/connectors 0.4.0 → 0.4.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 (390) hide show
  1. package/bin/index.js +176 -1
  2. package/bin/mcp.js +176 -1
  3. package/bin/serve.js +175 -0
  4. package/connectors/connect-airtable/.env.example +11 -0
  5. package/connectors/connect-airtable/CLAUDE.md +121 -0
  6. package/connectors/connect-airtable/README.md +193 -0
  7. package/connectors/connect-airtable/package.json +50 -0
  8. package/connectors/connect-airtable/src/api/client.ts +139 -0
  9. package/connectors/connect-airtable/src/api/index.ts +405 -0
  10. package/connectors/connect-airtable/src/cli/index.ts +637 -0
  11. package/connectors/connect-airtable/src/index.ts +20 -0
  12. package/connectors/connect-airtable/src/types/index.ts +349 -0
  13. package/connectors/connect-airtable/src/utils/config.ts +197 -0
  14. package/connectors/connect-airtable/tsconfig.json +16 -0
  15. package/connectors/connect-amplitude/.env.example +11 -0
  16. package/connectors/connect-amplitude/CLAUDE.md +121 -0
  17. package/connectors/connect-amplitude/README.md +193 -0
  18. package/connectors/connect-amplitude/package.json +51 -0
  19. package/connectors/connect-amplitude/src/api/client.ts +144 -0
  20. package/connectors/connect-amplitude/src/api/index.ts +215 -0
  21. package/connectors/connect-amplitude/src/cli/index.ts +532 -0
  22. package/connectors/connect-amplitude/src/index.ts +22 -0
  23. package/connectors/connect-amplitude/src/types/index.ts +329 -0
  24. package/connectors/connect-amplitude/src/utils/config.ts +208 -0
  25. package/connectors/connect-amplitude/tsconfig.json +16 -0
  26. package/connectors/connect-calendly/.env.example +11 -0
  27. package/connectors/connect-calendly/CLAUDE.md +272 -0
  28. package/connectors/connect-calendly/README.md +193 -0
  29. package/connectors/connect-calendly/package.json +51 -0
  30. package/connectors/connect-calendly/scripts/release.ts +179 -0
  31. package/connectors/connect-calendly/src/api/client.ts +213 -0
  32. package/connectors/connect-calendly/src/api/example.ts +48 -0
  33. package/connectors/connect-calendly/src/api/index.ts +51 -0
  34. package/connectors/connect-calendly/src/cli/index.ts +254 -0
  35. package/connectors/connect-calendly/src/index.ts +103 -0
  36. package/connectors/connect-calendly/src/types/index.ts +237 -0
  37. package/connectors/connect-calendly/src/utils/auth.ts +274 -0
  38. package/connectors/connect-calendly/src/utils/bulk.ts +212 -0
  39. package/connectors/connect-calendly/src/utils/config.ts +326 -0
  40. package/connectors/connect-calendly/src/utils/output.ts +175 -0
  41. package/connectors/connect-calendly/src/utils/settings.ts +114 -0
  42. package/connectors/connect-calendly/src/utils/storage.ts +198 -0
  43. package/connectors/connect-calendly/tsconfig.json +16 -0
  44. package/connectors/connect-convertkit/.env.example +11 -0
  45. package/connectors/connect-convertkit/CLAUDE.md +272 -0
  46. package/connectors/connect-convertkit/README.md +193 -0
  47. package/connectors/connect-convertkit/package.json +51 -0
  48. package/connectors/connect-convertkit/scripts/release.ts +179 -0
  49. package/connectors/connect-convertkit/src/api/client.ts +213 -0
  50. package/connectors/connect-convertkit/src/api/example.ts +48 -0
  51. package/connectors/connect-convertkit/src/api/index.ts +51 -0
  52. package/connectors/connect-convertkit/src/cli/index.ts +254 -0
  53. package/connectors/connect-convertkit/src/index.ts +103 -0
  54. package/connectors/connect-convertkit/src/types/index.ts +237 -0
  55. package/connectors/connect-convertkit/src/utils/auth.ts +274 -0
  56. package/connectors/connect-convertkit/src/utils/bulk.ts +212 -0
  57. package/connectors/connect-convertkit/src/utils/config.ts +326 -0
  58. package/connectors/connect-convertkit/src/utils/output.ts +175 -0
  59. package/connectors/connect-convertkit/src/utils/settings.ts +114 -0
  60. package/connectors/connect-convertkit/src/utils/storage.ts +198 -0
  61. package/connectors/connect-convertkit/tsconfig.json +16 -0
  62. package/connectors/connect-crisp/.env.example +11 -0
  63. package/connectors/connect-crisp/CLAUDE.md +272 -0
  64. package/connectors/connect-crisp/README.md +193 -0
  65. package/connectors/connect-crisp/package.json +51 -0
  66. package/connectors/connect-crisp/scripts/release.ts +179 -0
  67. package/connectors/connect-crisp/src/api/client.ts +213 -0
  68. package/connectors/connect-crisp/src/api/example.ts +48 -0
  69. package/connectors/connect-crisp/src/api/index.ts +51 -0
  70. package/connectors/connect-crisp/src/cli/index.ts +254 -0
  71. package/connectors/connect-crisp/src/index.ts +103 -0
  72. package/connectors/connect-crisp/src/types/index.ts +237 -0
  73. package/connectors/connect-crisp/src/utils/auth.ts +274 -0
  74. package/connectors/connect-crisp/src/utils/bulk.ts +212 -0
  75. package/connectors/connect-crisp/src/utils/config.ts +326 -0
  76. package/connectors/connect-crisp/src/utils/output.ts +175 -0
  77. package/connectors/connect-crisp/src/utils/settings.ts +114 -0
  78. package/connectors/connect-crisp/src/utils/storage.ts +198 -0
  79. package/connectors/connect-crisp/tsconfig.json +16 -0
  80. package/connectors/connect-docusign/.env.example +11 -0
  81. package/connectors/connect-docusign/CLAUDE.md +128 -0
  82. package/connectors/connect-docusign/README.md +193 -0
  83. package/connectors/connect-docusign/package.json +52 -0
  84. package/connectors/connect-docusign/src/api/client.ts +133 -0
  85. package/connectors/connect-docusign/src/api/index.ts +178 -0
  86. package/connectors/connect-docusign/src/cli/index.ts +381 -0
  87. package/connectors/connect-docusign/src/index.ts +23 -0
  88. package/connectors/connect-docusign/src/types/index.ts +208 -0
  89. package/connectors/connect-docusign/src/utils/config.ts +125 -0
  90. package/connectors/connect-docusign/src/utils/output.ts +119 -0
  91. package/connectors/connect-docusign/tsconfig.json +16 -0
  92. package/connectors/connect-drift/.env.example +11 -0
  93. package/connectors/connect-drift/CLAUDE.md +272 -0
  94. package/connectors/connect-drift/README.md +193 -0
  95. package/connectors/connect-drift/package.json +51 -0
  96. package/connectors/connect-drift/scripts/release.ts +179 -0
  97. package/connectors/connect-drift/src/api/client.ts +213 -0
  98. package/connectors/connect-drift/src/api/example.ts +48 -0
  99. package/connectors/connect-drift/src/api/index.ts +51 -0
  100. package/connectors/connect-drift/src/cli/index.ts +254 -0
  101. package/connectors/connect-drift/src/index.ts +103 -0
  102. package/connectors/connect-drift/src/types/index.ts +237 -0
  103. package/connectors/connect-drift/src/utils/auth.ts +274 -0
  104. package/connectors/connect-drift/src/utils/bulk.ts +212 -0
  105. package/connectors/connect-drift/src/utils/config.ts +326 -0
  106. package/connectors/connect-drift/src/utils/output.ts +175 -0
  107. package/connectors/connect-drift/src/utils/settings.ts +114 -0
  108. package/connectors/connect-drift/src/utils/storage.ts +198 -0
  109. package/connectors/connect-drift/tsconfig.json +16 -0
  110. package/connectors/connect-freshdesk/.env.example +11 -0
  111. package/connectors/connect-freshdesk/CLAUDE.md +272 -0
  112. package/connectors/connect-freshdesk/README.md +193 -0
  113. package/connectors/connect-freshdesk/package.json +51 -0
  114. package/connectors/connect-freshdesk/scripts/release.ts +179 -0
  115. package/connectors/connect-freshdesk/src/api/client.ts +213 -0
  116. package/connectors/connect-freshdesk/src/api/example.ts +48 -0
  117. package/connectors/connect-freshdesk/src/api/index.ts +51 -0
  118. package/connectors/connect-freshdesk/src/cli/index.ts +254 -0
  119. package/connectors/connect-freshdesk/src/index.ts +103 -0
  120. package/connectors/connect-freshdesk/src/types/index.ts +237 -0
  121. package/connectors/connect-freshdesk/src/utils/auth.ts +274 -0
  122. package/connectors/connect-freshdesk/src/utils/bulk.ts +212 -0
  123. package/connectors/connect-freshdesk/src/utils/config.ts +326 -0
  124. package/connectors/connect-freshdesk/src/utils/output.ts +175 -0
  125. package/connectors/connect-freshdesk/src/utils/settings.ts +114 -0
  126. package/connectors/connect-freshdesk/src/utils/storage.ts +198 -0
  127. package/connectors/connect-freshdesk/tsconfig.json +16 -0
  128. package/connectors/connect-gumroad/.env.example +11 -0
  129. package/connectors/connect-gumroad/CLAUDE.md +272 -0
  130. package/connectors/connect-gumroad/README.md +193 -0
  131. package/connectors/connect-gumroad/package.json +51 -0
  132. package/connectors/connect-gumroad/scripts/release.ts +179 -0
  133. package/connectors/connect-gumroad/src/api/client.ts +213 -0
  134. package/connectors/connect-gumroad/src/api/example.ts +48 -0
  135. package/connectors/connect-gumroad/src/api/index.ts +51 -0
  136. package/connectors/connect-gumroad/src/cli/index.ts +254 -0
  137. package/connectors/connect-gumroad/src/index.ts +103 -0
  138. package/connectors/connect-gumroad/src/types/index.ts +237 -0
  139. package/connectors/connect-gumroad/src/utils/auth.ts +274 -0
  140. package/connectors/connect-gumroad/src/utils/bulk.ts +212 -0
  141. package/connectors/connect-gumroad/src/utils/config.ts +326 -0
  142. package/connectors/connect-gumroad/src/utils/output.ts +175 -0
  143. package/connectors/connect-gumroad/src/utils/settings.ts +114 -0
  144. package/connectors/connect-gumroad/src/utils/storage.ts +198 -0
  145. package/connectors/connect-gumroad/tsconfig.json +16 -0
  146. package/connectors/connect-hubspot/.env.example +11 -0
  147. package/connectors/connect-hubspot/CLAUDE.md +128 -0
  148. package/connectors/connect-hubspot/README.md +193 -0
  149. package/connectors/connect-hubspot/package.json +52 -0
  150. package/connectors/connect-hubspot/src/api/client.ts +136 -0
  151. package/connectors/connect-hubspot/src/api/index.ts +379 -0
  152. package/connectors/connect-hubspot/src/cli/index.ts +589 -0
  153. package/connectors/connect-hubspot/src/index.ts +21 -0
  154. package/connectors/connect-hubspot/src/types/index.ts +285 -0
  155. package/connectors/connect-hubspot/src/utils/config.ts +205 -0
  156. package/connectors/connect-hubspot/src/utils/output.ts +119 -0
  157. package/connectors/connect-hubspot/tsconfig.json +16 -0
  158. package/connectors/connect-intercom/.env.example +11 -0
  159. package/connectors/connect-intercom/CLAUDE.md +131 -0
  160. package/connectors/connect-intercom/README.md +193 -0
  161. package/connectors/connect-intercom/package.json +52 -0
  162. package/connectors/connect-intercom/src/api/client.ts +132 -0
  163. package/connectors/connect-intercom/src/api/index.ts +366 -0
  164. package/connectors/connect-intercom/src/cli/index.ts +831 -0
  165. package/connectors/connect-intercom/src/index.ts +21 -0
  166. package/connectors/connect-intercom/src/types/index.ts +650 -0
  167. package/connectors/connect-intercom/src/utils/config.ts +157 -0
  168. package/connectors/connect-intercom/src/utils/output.ts +119 -0
  169. package/connectors/connect-intercom/tsconfig.json +16 -0
  170. package/connectors/connect-lemonsqueezy/.env.example +11 -0
  171. package/connectors/connect-lemonsqueezy/CLAUDE.md +128 -0
  172. package/connectors/connect-lemonsqueezy/README.md +193 -0
  173. package/connectors/connect-lemonsqueezy/package.json +52 -0
  174. package/connectors/connect-lemonsqueezy/src/api/client.ts +133 -0
  175. package/connectors/connect-lemonsqueezy/src/api/index.ts +502 -0
  176. package/connectors/connect-lemonsqueezy/src/cli/index.ts +723 -0
  177. package/connectors/connect-lemonsqueezy/src/index.ts +21 -0
  178. package/connectors/connect-lemonsqueezy/src/types/index.ts +353 -0
  179. package/connectors/connect-lemonsqueezy/src/utils/config.ts +205 -0
  180. package/connectors/connect-lemonsqueezy/src/utils/output.ts +119 -0
  181. package/connectors/connect-lemonsqueezy/tsconfig.json +16 -0
  182. package/connectors/connect-linkedin/.env.example +11 -0
  183. package/connectors/connect-linkedin/CLAUDE.md +124 -0
  184. package/connectors/connect-linkedin/README.md +193 -0
  185. package/connectors/connect-linkedin/package.json +52 -0
  186. package/connectors/connect-linkedin/src/api/client.ts +132 -0
  187. package/connectors/connect-linkedin/src/api/index.ts +313 -0
  188. package/connectors/connect-linkedin/src/cli/index.ts +548 -0
  189. package/connectors/connect-linkedin/src/index.ts +21 -0
  190. package/connectors/connect-linkedin/src/types/index.ts +472 -0
  191. package/connectors/connect-linkedin/src/utils/config.ts +157 -0
  192. package/connectors/connect-linkedin/src/utils/output.ts +119 -0
  193. package/connectors/connect-linkedin/tsconfig.json +16 -0
  194. package/connectors/connect-mailchimp/.env.example +11 -0
  195. package/connectors/connect-mailchimp/CLAUDE.md +127 -0
  196. package/connectors/connect-mailchimp/README.md +193 -0
  197. package/connectors/connect-mailchimp/package.json +52 -0
  198. package/connectors/connect-mailchimp/src/api/client.ts +162 -0
  199. package/connectors/connect-mailchimp/src/api/index.ts +580 -0
  200. package/connectors/connect-mailchimp/src/cli/index.ts +822 -0
  201. package/connectors/connect-mailchimp/src/index.ts +23 -0
  202. package/connectors/connect-mailchimp/src/types/index.ts +585 -0
  203. package/connectors/connect-mailchimp/src/utils/config.ts +208 -0
  204. package/connectors/connect-mailchimp/src/utils/output.ts +119 -0
  205. package/connectors/connect-mailchimp/tsconfig.json +16 -0
  206. package/connectors/connect-mongodb/.env.example +11 -0
  207. package/connectors/connect-mongodb/CLAUDE.md +272 -0
  208. package/connectors/connect-mongodb/README.md +193 -0
  209. package/connectors/connect-mongodb/package.json +51 -0
  210. package/connectors/connect-mongodb/scripts/release.ts +179 -0
  211. package/connectors/connect-mongodb/src/api/client.ts +213 -0
  212. package/connectors/connect-mongodb/src/api/example.ts +48 -0
  213. package/connectors/connect-mongodb/src/api/index.ts +51 -0
  214. package/connectors/connect-mongodb/src/cli/index.ts +254 -0
  215. package/connectors/connect-mongodb/src/index.ts +103 -0
  216. package/connectors/connect-mongodb/src/types/index.ts +237 -0
  217. package/connectors/connect-mongodb/src/utils/auth.ts +274 -0
  218. package/connectors/connect-mongodb/src/utils/bulk.ts +212 -0
  219. package/connectors/connect-mongodb/src/utils/config.ts +326 -0
  220. package/connectors/connect-mongodb/src/utils/output.ts +175 -0
  221. package/connectors/connect-mongodb/src/utils/settings.ts +114 -0
  222. package/connectors/connect-mongodb/src/utils/storage.ts +198 -0
  223. package/connectors/connect-mongodb/tsconfig.json +16 -0
  224. package/connectors/connect-netlify/.env.example +11 -0
  225. package/connectors/connect-netlify/CLAUDE.md +170 -0
  226. package/connectors/connect-netlify/README.md +193 -0
  227. package/connectors/connect-netlify/package.json +53 -0
  228. package/connectors/connect-netlify/src/api/client.ts +132 -0
  229. package/connectors/connect-netlify/src/api/index.ts +533 -0
  230. package/connectors/connect-netlify/src/cli/index.ts +985 -0
  231. package/connectors/connect-netlify/src/index.ts +22 -0
  232. package/connectors/connect-netlify/src/types/index.ts +423 -0
  233. package/connectors/connect-netlify/src/utils/config.ts +171 -0
  234. package/connectors/connect-netlify/src/utils/output.ts +119 -0
  235. package/connectors/connect-netlify/tsconfig.json +16 -0
  236. package/connectors/connect-paypal/.env.example +11 -0
  237. package/connectors/connect-paypal/CLAUDE.md +128 -0
  238. package/connectors/connect-paypal/README.md +193 -0
  239. package/connectors/connect-paypal/package.json +51 -0
  240. package/connectors/connect-paypal/src/api/client.ts +182 -0
  241. package/connectors/connect-paypal/src/api/index.ts +235 -0
  242. package/connectors/connect-paypal/src/cli/index.ts +559 -0
  243. package/connectors/connect-paypal/src/index.ts +23 -0
  244. package/connectors/connect-paypal/src/types/index.ts +377 -0
  245. package/connectors/connect-paypal/src/utils/config.ts +125 -0
  246. package/connectors/connect-paypal/src/utils/output.ts +119 -0
  247. package/connectors/connect-paypal/tsconfig.json +16 -0
  248. package/connectors/connect-pinterest/.env.example +11 -0
  249. package/connectors/connect-pinterest/CLAUDE.md +115 -0
  250. package/connectors/connect-pinterest/README.md +193 -0
  251. package/connectors/connect-pinterest/package.json +52 -0
  252. package/connectors/connect-pinterest/src/api/client.ts +125 -0
  253. package/connectors/connect-pinterest/src/api/index.ts +203 -0
  254. package/connectors/connect-pinterest/src/cli/index.ts +653 -0
  255. package/connectors/connect-pinterest/src/index.ts +21 -0
  256. package/connectors/connect-pinterest/src/types/index.ts +268 -0
  257. package/connectors/connect-pinterest/src/utils/config.ts +157 -0
  258. package/connectors/connect-pinterest/src/utils/output.ts +119 -0
  259. package/connectors/connect-pinterest/tsconfig.json +16 -0
  260. package/connectors/connect-posthog/.env.example +11 -0
  261. package/connectors/connect-posthog/CLAUDE.md +272 -0
  262. package/connectors/connect-posthog/README.md +193 -0
  263. package/connectors/connect-posthog/package.json +51 -0
  264. package/connectors/connect-posthog/scripts/release.ts +179 -0
  265. package/connectors/connect-posthog/src/api/client.ts +213 -0
  266. package/connectors/connect-posthog/src/api/example.ts +48 -0
  267. package/connectors/connect-posthog/src/api/index.ts +51 -0
  268. package/connectors/connect-posthog/src/cli/index.ts +254 -0
  269. package/connectors/connect-posthog/src/index.ts +103 -0
  270. package/connectors/connect-posthog/src/types/index.ts +237 -0
  271. package/connectors/connect-posthog/src/utils/auth.ts +274 -0
  272. package/connectors/connect-posthog/src/utils/bulk.ts +212 -0
  273. package/connectors/connect-posthog/src/utils/config.ts +326 -0
  274. package/connectors/connect-posthog/src/utils/output.ts +175 -0
  275. package/connectors/connect-posthog/src/utils/settings.ts +114 -0
  276. package/connectors/connect-posthog/src/utils/storage.ts +198 -0
  277. package/connectors/connect-posthog/tsconfig.json +16 -0
  278. package/connectors/connect-salesforce/.env.example +11 -0
  279. package/connectors/connect-salesforce/CLAUDE.md +128 -0
  280. package/connectors/connect-salesforce/README.md +193 -0
  281. package/connectors/connect-salesforce/package.json +53 -0
  282. package/connectors/connect-salesforce/src/api/client.ts +150 -0
  283. package/connectors/connect-salesforce/src/api/index.ts +367 -0
  284. package/connectors/connect-salesforce/src/cli/index.ts +594 -0
  285. package/connectors/connect-salesforce/src/index.ts +21 -0
  286. package/connectors/connect-salesforce/src/types/index.ts +292 -0
  287. package/connectors/connect-salesforce/src/utils/config.ts +208 -0
  288. package/connectors/connect-salesforce/src/utils/output.ts +119 -0
  289. package/connectors/connect-salesforce/tsconfig.json +16 -0
  290. package/connectors/connect-segment/.env.example +11 -0
  291. package/connectors/connect-segment/CLAUDE.md +272 -0
  292. package/connectors/connect-segment/README.md +193 -0
  293. package/connectors/connect-segment/package.json +51 -0
  294. package/connectors/connect-segment/scripts/release.ts +179 -0
  295. package/connectors/connect-segment/src/api/client.ts +213 -0
  296. package/connectors/connect-segment/src/api/example.ts +48 -0
  297. package/connectors/connect-segment/src/api/index.ts +51 -0
  298. package/connectors/connect-segment/src/cli/index.ts +254 -0
  299. package/connectors/connect-segment/src/index.ts +103 -0
  300. package/connectors/connect-segment/src/types/index.ts +237 -0
  301. package/connectors/connect-segment/src/utils/auth.ts +274 -0
  302. package/connectors/connect-segment/src/utils/bulk.ts +212 -0
  303. package/connectors/connect-segment/src/utils/config.ts +326 -0
  304. package/connectors/connect-segment/src/utils/output.ts +175 -0
  305. package/connectors/connect-segment/src/utils/settings.ts +114 -0
  306. package/connectors/connect-segment/src/utils/storage.ts +198 -0
  307. package/connectors/connect-segment/tsconfig.json +16 -0
  308. package/connectors/connect-sendgrid/.env.example +11 -0
  309. package/connectors/connect-sendgrid/CLAUDE.md +125 -0
  310. package/connectors/connect-sendgrid/README.md +193 -0
  311. package/connectors/connect-sendgrid/package.json +53 -0
  312. package/connectors/connect-sendgrid/src/api/client.ts +137 -0
  313. package/connectors/connect-sendgrid/src/api/index.ts +588 -0
  314. package/connectors/connect-sendgrid/src/cli/index.ts +764 -0
  315. package/connectors/connect-sendgrid/src/index.ts +21 -0
  316. package/connectors/connect-sendgrid/src/types/index.ts +403 -0
  317. package/connectors/connect-sendgrid/src/utils/config.ts +197 -0
  318. package/connectors/connect-sendgrid/src/utils/output.ts +119 -0
  319. package/connectors/connect-sendgrid/tsconfig.json +16 -0
  320. package/connectors/connect-supabase/.env.example +11 -0
  321. package/connectors/connect-supabase/CLAUDE.md +132 -0
  322. package/connectors/connect-supabase/README.md +193 -0
  323. package/connectors/connect-supabase/package.json +52 -0
  324. package/connectors/connect-supabase/src/api/client.ts +231 -0
  325. package/connectors/connect-supabase/src/api/index.ts +439 -0
  326. package/connectors/connect-supabase/src/cli/index.ts +691 -0
  327. package/connectors/connect-supabase/src/index.ts +24 -0
  328. package/connectors/connect-supabase/src/types/index.ts +215 -0
  329. package/connectors/connect-supabase/src/utils/config.ts +219 -0
  330. package/connectors/connect-supabase/tsconfig.json +16 -0
  331. package/connectors/connect-vercel/.env.example +11 -0
  332. package/connectors/connect-vercel/CLAUDE.md +142 -0
  333. package/connectors/connect-vercel/README.md +193 -0
  334. package/connectors/connect-vercel/package.json +52 -0
  335. package/connectors/connect-vercel/src/api/client.ts +139 -0
  336. package/connectors/connect-vercel/src/api/index.ts +384 -0
  337. package/connectors/connect-vercel/src/cli/index.ts +740 -0
  338. package/connectors/connect-vercel/src/index.ts +24 -0
  339. package/connectors/connect-vercel/src/types/index.ts +350 -0
  340. package/connectors/connect-vercel/src/utils/config.ts +182 -0
  341. package/connectors/connect-vercel/src/utils/output.ts +119 -0
  342. package/connectors/connect-vercel/tsconfig.json +16 -0
  343. package/connectors/connect-zendesk/.env.example +10 -0
  344. package/connectors/connect-zendesk/.github/workflows/deploy.yml +51 -0
  345. package/connectors/connect-zendesk/CLAUDE.md +78 -0
  346. package/connectors/connect-zendesk/Makefile +129 -0
  347. package/connectors/connect-zendesk/README.md +295 -0
  348. package/connectors/connect-zendesk/SCAFFOLD.md +178 -0
  349. package/connectors/connect-zendesk/nginx-connector.conf +218 -0
  350. package/connectors/connect-zendesk/nginx.conf +61 -0
  351. package/connectors/connect-zendesk/package.json +71 -0
  352. package/connectors/connect-zendesk/scripts/init.sh +62 -0
  353. package/connectors/connect-zendesk/scripts/publish.ts +210 -0
  354. package/connectors/connect-zendesk/server/index.js +142 -0
  355. package/connectors/connect-zendesk/src/api/automations.ts +95 -0
  356. package/connectors/connect-zendesk/src/api/brands.ts +80 -0
  357. package/connectors/connect-zendesk/src/api/bulk.ts +838 -0
  358. package/connectors/connect-zendesk/src/api/client.test.ts +315 -0
  359. package/connectors/connect-zendesk/src/api/client.ts +173 -0
  360. package/connectors/connect-zendesk/src/api/example.ts +59 -0
  361. package/connectors/connect-zendesk/src/api/groups.ts +60 -0
  362. package/connectors/connect-zendesk/src/api/index.test.ts +111 -0
  363. package/connectors/connect-zendesk/src/api/index.ts +131 -0
  364. package/connectors/connect-zendesk/src/api/macros.ts +124 -0
  365. package/connectors/connect-zendesk/src/api/organizations.ts +85 -0
  366. package/connectors/connect-zendesk/src/api/slas.ts +80 -0
  367. package/connectors/connect-zendesk/src/api/ticket-fields.ts +98 -0
  368. package/connectors/connect-zendesk/src/api/tickets.test.ts +215 -0
  369. package/connectors/connect-zendesk/src/api/tickets.ts +103 -0
  370. package/connectors/connect-zendesk/src/api/triggers.test.ts +204 -0
  371. package/connectors/connect-zendesk/src/api/triggers.ts +125 -0
  372. package/connectors/connect-zendesk/src/api/users.test.ts +180 -0
  373. package/connectors/connect-zendesk/src/api/users.ts +108 -0
  374. package/connectors/connect-zendesk/src/api/views.test.ts +223 -0
  375. package/connectors/connect-zendesk/src/api/views.ts +145 -0
  376. package/connectors/connect-zendesk/src/api/webhooks.test.ts +208 -0
  377. package/connectors/connect-zendesk/src/api/webhooks.ts +118 -0
  378. package/connectors/connect-zendesk/src/cli/index.ts +1478 -0
  379. package/connectors/connect-zendesk/src/index.ts +36 -0
  380. package/connectors/connect-zendesk/src/server/index.ts +204 -0
  381. package/connectors/connect-zendesk/src/types/index.ts +910 -0
  382. package/connectors/connect-zendesk/src/utils/config.test.ts +193 -0
  383. package/connectors/connect-zendesk/src/utils/config.ts +526 -0
  384. package/connectors/connect-zendesk/src/utils/export.ts +338 -0
  385. package/connectors/connect-zendesk/src/utils/logger.ts +105 -0
  386. package/connectors/connect-zendesk/src/utils/output.test.ts +137 -0
  387. package/connectors/connect-zendesk/src/utils/output.ts +119 -0
  388. package/connectors/connect-zendesk/tsconfig.json +31 -0
  389. package/dist/index.js +175 -0
  390. package/package.json +1 -1
@@ -0,0 +1,326 @@
1
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync, rmSync } from 'fs';
2
+ import { homedir } from 'os';
3
+ import { join } from 'path';
4
+ import type { OAuth2Config, OAuth2Tokens } from '../types';
5
+
6
+ // TODO: Replace 'connector' with your connector name (e.g., 'connect-perplexity')
7
+ const CONNECTOR_NAME = 'connector';
8
+ const DEFAULT_PROFILE = 'default';
9
+
10
+ export interface ProfileConfig {
11
+ // API Key authentication
12
+ apiKey?: string;
13
+ token?: string; // Alias for apiKey
14
+ apiSecret?: string;
15
+
16
+ // OAuth2 authentication
17
+ accessToken?: string;
18
+ refreshToken?: string;
19
+ expiresAt?: number;
20
+ tokenType?: string;
21
+ scope?: string;
22
+
23
+ // OAuth2 client credentials (stored separately for security)
24
+ clientId?: string;
25
+ clientSecret?: string;
26
+
27
+ // Add more config fields as needed for your API
28
+ }
29
+
30
+ // Store for --profile flag override (set by CLI before commands run)
31
+ let profileOverride: string | undefined;
32
+
33
+ // Config directory: ~/.connect/{connector-name}/
34
+ const CONFIG_DIR = join(homedir(), '.connect', CONNECTOR_NAME);
35
+ const PROFILES_DIR = join(CONFIG_DIR, 'profiles');
36
+ const CURRENT_PROFILE_FILE = join(CONFIG_DIR, 'current_profile');
37
+
38
+ // ============================================
39
+ // Profile Management
40
+ // ============================================
41
+
42
+ export function setProfileOverride(profile: string | undefined): void {
43
+ profileOverride = profile;
44
+ }
45
+
46
+ export function ensureConfigDir(): void {
47
+ if (!existsSync(CONFIG_DIR)) {
48
+ mkdirSync(CONFIG_DIR, { recursive: true });
49
+ }
50
+ if (!existsSync(PROFILES_DIR)) {
51
+ mkdirSync(PROFILES_DIR, { recursive: true });
52
+ }
53
+ }
54
+
55
+ function getProfilePath(profile: string): string {
56
+ return join(PROFILES_DIR, `${profile}.json`);
57
+ }
58
+
59
+ /**
60
+ * Get the current active profile name
61
+ */
62
+ export function getCurrentProfile(): string {
63
+ if (profileOverride) {
64
+ return profileOverride;
65
+ }
66
+
67
+ ensureConfigDir();
68
+
69
+ if (existsSync(CURRENT_PROFILE_FILE)) {
70
+ try {
71
+ const profile = readFileSync(CURRENT_PROFILE_FILE, 'utf-8').trim();
72
+ if (profile && profileExists(profile)) {
73
+ return profile;
74
+ }
75
+ } catch {
76
+ // Fall through to default
77
+ }
78
+ }
79
+
80
+ return DEFAULT_PROFILE;
81
+ }
82
+
83
+ /**
84
+ * Set the current active profile
85
+ */
86
+ export function setCurrentProfile(profile: string): void {
87
+ ensureConfigDir();
88
+
89
+ if (!profileExists(profile) && profile !== DEFAULT_PROFILE) {
90
+ throw new Error(`Profile "${profile}" does not exist`);
91
+ }
92
+
93
+ writeFileSync(CURRENT_PROFILE_FILE, profile);
94
+ }
95
+
96
+ /**
97
+ * Check if a profile exists
98
+ */
99
+ export function profileExists(profile: string): boolean {
100
+ return existsSync(getProfilePath(profile));
101
+ }
102
+
103
+ /**
104
+ * List all available profiles
105
+ */
106
+ export function listProfiles(): string[] {
107
+ ensureConfigDir();
108
+
109
+ if (!existsSync(PROFILES_DIR)) {
110
+ return [];
111
+ }
112
+
113
+ return readdirSync(PROFILES_DIR)
114
+ .filter(f => f.endsWith('.json'))
115
+ .map(f => f.replace('.json', ''))
116
+ .sort();
117
+ }
118
+
119
+ /**
120
+ * Create a new profile
121
+ */
122
+ export function createProfile(profile: string, config: ProfileConfig = {}): boolean {
123
+ ensureConfigDir();
124
+
125
+ if (profileExists(profile)) {
126
+ return false;
127
+ }
128
+
129
+ // Validate profile name
130
+ if (!/^[a-zA-Z0-9_-]+$/.test(profile)) {
131
+ throw new Error('Profile name can only contain letters, numbers, hyphens, and underscores');
132
+ }
133
+
134
+ writeFileSync(getProfilePath(profile), JSON.stringify(config, null, 2));
135
+ return true;
136
+ }
137
+
138
+ /**
139
+ * Delete a profile
140
+ */
141
+ export function deleteProfile(profile: string): boolean {
142
+ if (profile === DEFAULT_PROFILE) {
143
+ return false;
144
+ }
145
+
146
+ if (!profileExists(profile)) {
147
+ return false;
148
+ }
149
+
150
+ // Switch to default if deleting current profile
151
+ if (getCurrentProfile() === profile) {
152
+ setCurrentProfile(DEFAULT_PROFILE);
153
+ }
154
+
155
+ rmSync(getProfilePath(profile));
156
+ return true;
157
+ }
158
+
159
+ /**
160
+ * Load profile config
161
+ */
162
+ export function loadProfile(profile?: string): ProfileConfig {
163
+ ensureConfigDir();
164
+ const profileName = profile || getCurrentProfile();
165
+ const profilePath = getProfilePath(profileName);
166
+
167
+ if (!existsSync(profilePath)) {
168
+ return {};
169
+ }
170
+
171
+ try {
172
+ return JSON.parse(readFileSync(profilePath, 'utf-8'));
173
+ } catch {
174
+ return {};
175
+ }
176
+ }
177
+
178
+ /**
179
+ * Save profile config
180
+ */
181
+ export function saveProfile(config: ProfileConfig, profile?: string): void {
182
+ ensureConfigDir();
183
+ const profileName = profile || getCurrentProfile();
184
+ writeFileSync(getProfilePath(profileName), JSON.stringify(config, null, 2));
185
+ }
186
+
187
+ // ============================================
188
+ // API Key Management
189
+ // TODO: Update env var name for your API (e.g., PERPLEXITY_API_KEY)
190
+ // ============================================
191
+
192
+ export function getApiKey(): string | undefined {
193
+ return process.env.CONNECTOR_API_KEY || loadProfile().apiKey;
194
+ }
195
+
196
+ export function setApiKey(apiKey: string): void {
197
+ const config = loadProfile();
198
+ config.apiKey = apiKey;
199
+ saveProfile(config);
200
+ }
201
+
202
+ export function getApiSecret(): string | undefined {
203
+ return process.env.CONNECTOR_API_SECRET || loadProfile().apiSecret;
204
+ }
205
+
206
+ export function setApiSecret(apiSecret: string): void {
207
+ const config = loadProfile();
208
+ config.apiSecret = apiSecret;
209
+ saveProfile(config);
210
+ }
211
+
212
+ // ============================================
213
+ // Utility Functions
214
+ // ============================================
215
+
216
+ export function clearConfig(): void {
217
+ saveProfile({});
218
+ }
219
+
220
+ export function getConfigDir(): string {
221
+ return CONFIG_DIR;
222
+ }
223
+
224
+ export function getActiveProfileName(): string {
225
+ return getCurrentProfile();
226
+ }
227
+
228
+ // ============================================
229
+ // Token/API Key Alias Functions
230
+ // TODO: Update env var name for your API
231
+ // ============================================
232
+
233
+ /**
234
+ * Get token (alias for getApiKey - some connectors prefer 'token' naming)
235
+ */
236
+ export function getToken(): string | undefined {
237
+ return process.env.CONNECTOR_TOKEN || process.env.CONNECTOR_API_KEY || loadProfile().token || loadProfile().apiKey;
238
+ }
239
+
240
+ /**
241
+ * Set token (alias for setApiKey)
242
+ */
243
+ export function setToken(token: string): void {
244
+ const config = loadProfile();
245
+ config.token = token;
246
+ config.apiKey = token; // Keep both in sync
247
+ saveProfile(config);
248
+ }
249
+
250
+ // ============================================
251
+ // OAuth2 Configuration Functions
252
+ // ============================================
253
+
254
+ /**
255
+ * Get OAuth2 client configuration
256
+ */
257
+ export function getOAuthConfig(): OAuth2Config | null {
258
+ const profile = loadProfile();
259
+ if (profile.clientId && profile.clientSecret) {
260
+ return {
261
+ clientId: profile.clientId,
262
+ clientSecret: profile.clientSecret,
263
+ };
264
+ }
265
+ return null;
266
+ }
267
+
268
+ /**
269
+ * Set OAuth2 client credentials
270
+ */
271
+ export function setOAuthConfig(config: OAuth2Config): void {
272
+ const profile = loadProfile();
273
+ profile.clientId = config.clientId;
274
+ profile.clientSecret = config.clientSecret;
275
+ saveProfile(profile);
276
+ }
277
+
278
+ /**
279
+ * Load OAuth2 tokens
280
+ */
281
+ export function loadOAuthTokens(): OAuth2Tokens | null {
282
+ const profile = loadProfile();
283
+ if (profile.accessToken) {
284
+ return {
285
+ accessToken: profile.accessToken,
286
+ refreshToken: profile.refreshToken,
287
+ expiresAt: profile.expiresAt || 0,
288
+ tokenType: profile.tokenType,
289
+ scope: profile.scope,
290
+ };
291
+ }
292
+ return null;
293
+ }
294
+
295
+ /**
296
+ * Save OAuth2 tokens
297
+ */
298
+ export function saveOAuthTokens(tokens: OAuth2Tokens): void {
299
+ const profile = loadProfile();
300
+ profile.accessToken = tokens.accessToken;
301
+ profile.refreshToken = tokens.refreshToken;
302
+ profile.expiresAt = tokens.expiresAt;
303
+ profile.tokenType = tokens.tokenType;
304
+ profile.scope = tokens.scope;
305
+ saveProfile(profile);
306
+ }
307
+
308
+ /**
309
+ * Clear OAuth2 tokens (logout)
310
+ */
311
+ export function clearOAuthTokens(): void {
312
+ const profile = loadProfile();
313
+ delete profile.accessToken;
314
+ delete profile.refreshToken;
315
+ delete profile.expiresAt;
316
+ delete profile.tokenType;
317
+ delete profile.scope;
318
+ saveProfile(profile);
319
+ }
320
+
321
+ /**
322
+ * Get the access token (for OAuth2 authentication)
323
+ */
324
+ export function getAccessToken(): string | undefined {
325
+ return loadProfile().accessToken;
326
+ }
@@ -0,0 +1,175 @@
1
+ import chalk from 'chalk';
2
+
3
+ export type OutputFormat = 'json' | 'table' | 'pretty';
4
+
5
+ // Global verbose mode flag
6
+ let verboseMode = false;
7
+
8
+ /**
9
+ * Enable or disable verbose mode
10
+ */
11
+ export function setVerboseMode(enabled: boolean): void {
12
+ verboseMode = enabled;
13
+ }
14
+
15
+ /**
16
+ * Check if verbose mode is enabled
17
+ */
18
+ export function isVerboseMode(): boolean {
19
+ return verboseMode;
20
+ }
21
+
22
+ /**
23
+ * Log a debug message (only shown in verbose mode)
24
+ */
25
+ export function debug(message: string, data?: unknown): void {
26
+ if (!verboseMode) return;
27
+ const timestamp = new Date().toISOString().split('T')[1].slice(0, 12);
28
+ console.log(chalk.gray(`[${timestamp}]`), chalk.dim(message));
29
+ if (data !== undefined) {
30
+ if (typeof data === 'object') {
31
+ console.log(chalk.gray(JSON.stringify(data, null, 2)));
32
+ } else {
33
+ console.log(chalk.gray(String(data)));
34
+ }
35
+ }
36
+ }
37
+
38
+ /**
39
+ * Log a request (only shown in verbose mode)
40
+ */
41
+ export function debugRequest(method: string, url: string, body?: unknown): void {
42
+ if (!verboseMode) return;
43
+ debug(`→ ${method} ${url}`);
44
+ if (body) {
45
+ debug(' Body:', body);
46
+ }
47
+ }
48
+
49
+ /**
50
+ * Log a response (only shown in verbose mode)
51
+ */
52
+ export function debugResponse(status: number, duration: number, body?: unknown): void {
53
+ if (!verboseMode) return;
54
+ const statusColor = status >= 400 ? chalk.red : status >= 300 ? chalk.yellow : chalk.green;
55
+ debug(`← ${statusColor(status)} (${duration}ms)`);
56
+ if (body && verboseMode) {
57
+ debug(' Response:', body);
58
+ }
59
+ }
60
+
61
+ export function formatOutput(data: unknown, format: OutputFormat = 'pretty'): string {
62
+ switch (format) {
63
+ case 'json':
64
+ return JSON.stringify(data, null, 2);
65
+ case 'table':
66
+ return formatAsTable(data);
67
+ case 'pretty':
68
+ default:
69
+ return formatPretty(data);
70
+ }
71
+ }
72
+
73
+ function formatAsTable(data: unknown): string {
74
+ if (!Array.isArray(data)) {
75
+ data = [data];
76
+ }
77
+
78
+ const items = data as Record<string, unknown>[];
79
+ if (items.length === 0) {
80
+ return 'No data';
81
+ }
82
+
83
+ const firstItem = items[0];
84
+ if (!firstItem || typeof firstItem !== 'object') {
85
+ return 'No data';
86
+ }
87
+
88
+ const keys = Object.keys(firstItem);
89
+ const colWidths = keys.map(key => {
90
+ const maxValue = Math.max(
91
+ key.length,
92
+ ...items.map(item => String(item[key] ?? '').length)
93
+ );
94
+ return Math.min(maxValue, 40);
95
+ });
96
+
97
+ const header = keys.map((key, i) => key.padEnd(colWidths[i] ?? 10)).join(' | ');
98
+ const separator = colWidths.map(w => '-'.repeat(w)).join('-+-');
99
+
100
+ const rows = items.map(item =>
101
+ keys.map((key, i) => {
102
+ const value = String(item[key] ?? '');
103
+ const width = colWidths[i] ?? 10;
104
+ return value.length > width
105
+ ? value.substring(0, width - 3) + '...'
106
+ : value.padEnd(width);
107
+ }).join(' | ')
108
+ );
109
+
110
+ return [header, separator, ...rows].join('\n');
111
+ }
112
+
113
+ function formatPretty(data: unknown): string {
114
+ if (Array.isArray(data)) {
115
+ return data.map((item, i) => `${chalk.cyan(`[${i + 1}]`)} ${formatPrettyItem(item)}`).join('\n\n');
116
+ }
117
+ return formatPrettyItem(data);
118
+ }
119
+
120
+ function formatPrettyItem(item: unknown, indent = 0): string {
121
+ if (item === null || item === undefined) {
122
+ return chalk.gray('null');
123
+ }
124
+
125
+ if (typeof item !== 'object') {
126
+ return String(item);
127
+ }
128
+
129
+ const spaces = ' '.repeat(indent);
130
+ const entries = Object.entries(item as Record<string, unknown>);
131
+
132
+ return entries
133
+ .map(([key, value]) => {
134
+ if (Array.isArray(value)) {
135
+ if (value.length === 0) {
136
+ return `${spaces}${chalk.blue(key)}: ${chalk.gray('[]')}`;
137
+ }
138
+ if (typeof value[0] === 'object') {
139
+ return `${spaces}${chalk.blue(key)}:\n${value.map(v => formatPrettyItem(v, indent + 1)).join('\n')}`;
140
+ }
141
+ return `${spaces}${chalk.blue(key)}: ${value.join(', ')}`;
142
+ }
143
+
144
+ if (typeof value === 'object' && value !== null) {
145
+ return `${spaces}${chalk.blue(key)}:\n${formatPrettyItem(value, indent + 1)}`;
146
+ }
147
+
148
+ return `${spaces}${chalk.blue(key)}: ${chalk.white(String(value))}`;
149
+ })
150
+ .join('\n');
151
+ }
152
+
153
+ export function success(message: string): void {
154
+ console.log(chalk.green('✓'), message);
155
+ }
156
+
157
+ export function error(message: string): void {
158
+ console.error(chalk.red('✗'), message);
159
+ }
160
+
161
+ export function warn(message: string): void {
162
+ console.warn(chalk.yellow('⚠'), message);
163
+ }
164
+
165
+ export function info(message: string): void {
166
+ console.log(chalk.blue('ℹ'), message);
167
+ }
168
+
169
+ export function heading(message: string): void {
170
+ console.log(chalk.bold.cyan(`\n${message}\n`));
171
+ }
172
+
173
+ export function print(data: unknown, format: OutputFormat = 'pretty'): void {
174
+ console.log(formatOutput(data, format));
175
+ }
@@ -0,0 +1,114 @@
1
+ import { existsSync, readFileSync, writeFileSync } from 'fs';
2
+ import { join } from 'path';
3
+ import { getConfigDir, ensureConfigDir } from './config';
4
+
5
+ // ============================================
6
+ // Settings Storage Utility
7
+ // ============================================
8
+
9
+ /**
10
+ * TODO: Define your connector-specific settings
11
+ * Add fields for user preferences, defaults, etc.
12
+ */
13
+ export interface Settings {
14
+ // Display settings
15
+ defaultFormat: 'json' | 'table' | 'pretty';
16
+
17
+ // Behavior settings
18
+ confirmDestructive: boolean; // Require confirmation for destructive operations
19
+ verboseOutput: boolean; // Enable verbose output by default
20
+
21
+ // API settings
22
+ defaultMaxResults: number; // Default page size for list operations
23
+ requestTimeout: number; // Request timeout in ms
24
+
25
+ // Add more settings as needed for your connector
26
+ }
27
+
28
+ const DEFAULT_SETTINGS: Settings = {
29
+ defaultFormat: 'pretty',
30
+ confirmDestructive: true,
31
+ verboseOutput: false,
32
+ defaultMaxResults: 20,
33
+ requestTimeout: 30000,
34
+ };
35
+
36
+ function getSettingsPath(): string {
37
+ return join(getConfigDir(), 'settings.json');
38
+ }
39
+
40
+ /**
41
+ * Load settings from disk, merging with defaults
42
+ */
43
+ export function loadSettings(): Settings {
44
+ ensureConfigDir();
45
+ const filepath = getSettingsPath();
46
+
47
+ if (!existsSync(filepath)) {
48
+ // Create default settings file
49
+ saveSettings(DEFAULT_SETTINGS);
50
+ return DEFAULT_SETTINGS;
51
+ }
52
+
53
+ try {
54
+ const content = readFileSync(filepath, 'utf-8');
55
+ const loaded = JSON.parse(content);
56
+ // Merge with defaults to ensure all fields exist
57
+ return { ...DEFAULT_SETTINGS, ...loaded };
58
+ } catch {
59
+ return DEFAULT_SETTINGS;
60
+ }
61
+ }
62
+
63
+ /**
64
+ * Save settings to disk
65
+ */
66
+ export function saveSettings(settings: Settings): void {
67
+ ensureConfigDir();
68
+ const filepath = getSettingsPath();
69
+ writeFileSync(filepath, JSON.stringify(settings, null, 2));
70
+ }
71
+
72
+ /**
73
+ * Get a specific setting value
74
+ */
75
+ export function getSetting<K extends keyof Settings>(key: K): Settings[K] {
76
+ return loadSettings()[key];
77
+ }
78
+
79
+ /**
80
+ * Set a specific setting value
81
+ */
82
+ export function setSetting<K extends keyof Settings>(key: K, value: Settings[K]): void {
83
+ const settings = loadSettings();
84
+ settings[key] = value;
85
+ saveSettings(settings);
86
+ }
87
+
88
+ /**
89
+ * Reset settings to defaults
90
+ */
91
+ export function resetSettings(): void {
92
+ saveSettings(DEFAULT_SETTINGS);
93
+ }
94
+
95
+ /**
96
+ * Get default settings (useful for CLI help text)
97
+ */
98
+ export function getDefaultSettings(): Settings {
99
+ return { ...DEFAULT_SETTINGS };
100
+ }
101
+
102
+ /**
103
+ * Check if verbose output is enabled
104
+ */
105
+ export function isVerbose(): boolean {
106
+ return loadSettings().verboseOutput;
107
+ }
108
+
109
+ /**
110
+ * Check if destructive operations need confirmation
111
+ */
112
+ export function needsConfirmation(): boolean {
113
+ return loadSettings().confirmDestructive;
114
+ }