runline 0.33.0 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. package/dist/auth/oauth2.d.ts +7 -1
  2. package/dist/auth/oauth2.js +10 -0
  3. package/dist/auth/token.d.ts +1 -0
  4. package/dist/auth/token.js +19 -1
  5. package/dist/auth/types.d.ts +22 -1
  6. package/dist/core/engine.d.ts +7 -0
  7. package/dist/core/engine.js +21 -8
  8. package/dist/credentials/policy.d.ts +53 -1
  9. package/dist/credentials/policy.js +146 -6
  10. package/dist/credentials/registry.d.ts +9 -0
  11. package/dist/credentials/registry.js +184 -22
  12. package/dist/credentials/transport.d.ts +48 -2
  13. package/dist/credentials/transport.js +248 -70
  14. package/dist/credentials/types.d.ts +177 -10
  15. package/dist/index.d.ts +6 -5
  16. package/dist/index.js +3 -2
  17. package/dist/plugin/api.d.ts +7 -0
  18. package/dist/plugin/api.js +7 -0
  19. package/dist/plugin/schema.d.ts +16 -4
  20. package/dist/plugin/schema.js +28 -5
  21. package/dist/plugin/types.d.ts +20 -0
  22. package/dist/plugins/_shared/base64.js +30 -0
  23. package/dist/plugins/_shared/credentialAdapter.js +99 -15
  24. package/dist/plugins/_shared/credentials.js +416 -0
  25. package/dist/plugins/_shared/googleAuth.js +69 -39
  26. package/dist/plugins/_shared/googleCredentials.js +68 -14
  27. package/dist/plugins/_shared/localFile.js +40 -0
  28. package/dist/plugins/_shared/mediaFile.js +12 -12
  29. package/dist/plugins/_shared/microsoftAuth.js +31 -47
  30. package/dist/plugins/_shared/microsoftCredentials.js +42 -15
  31. package/dist/plugins/_shared/provider.js +2 -14
  32. package/dist/plugins/_shared/shiftCloud.js +16 -56
  33. package/dist/plugins/_shared/shiftCredentials.js +83 -0
  34. package/dist/plugins/_shared/shiftUpload.js +14 -10
  35. package/dist/plugins/actionNetwork/src/credentials.js +14 -0
  36. package/dist/plugins/actionNetwork/src/index.js +39 -50
  37. package/dist/plugins/activeCampaign/src/credentials.js +22 -0
  38. package/dist/plugins/activeCampaign/src/index.js +61 -132
  39. package/dist/plugins/adalo/src/credentials.js +16 -0
  40. package/dist/plugins/adalo/src/index.js +19 -43
  41. package/dist/plugins/affinity/src/credentials.js +19 -0
  42. package/dist/plugins/affinity/src/index.js +29 -54
  43. package/dist/plugins/agentMail/src/credentials.js +35 -0
  44. package/dist/plugins/agentMail/src/drafts.js +137 -0
  45. package/dist/plugins/agentMail/src/inboxes.js +95 -0
  46. package/dist/plugins/agentMail/src/index.js +35 -0
  47. package/dist/plugins/agentMail/src/messages.js +154 -0
  48. package/dist/plugins/agentMail/src/schemas.js +156 -0
  49. package/dist/plugins/agentMail/src/shared.js +203 -0
  50. package/dist/plugins/agentMail/src/threads.js +75 -0
  51. package/dist/plugins/agileCrm/src/credentials.js +16 -0
  52. package/dist/plugins/agileCrm/src/index.js +46 -112
  53. package/dist/plugins/airtable/src/credentials.js +19 -0
  54. package/dist/plugins/airtable/src/index.js +37 -50
  55. package/dist/plugins/airtop/src/credentials.js +20 -0
  56. package/dist/plugins/airtop/src/index.js +51 -75
  57. package/dist/plugins/apiTemplateIo/src/credentials.js +19 -0
  58. package/dist/plugins/apiTemplateIo/src/index.js +14 -31
  59. package/dist/plugins/asana/src/credentials.js +19 -0
  60. package/dist/plugins/asana/src/index.js +51 -72
  61. package/dist/plugins/autopilot/src/credentials.js +19 -0
  62. package/dist/plugins/autopilot/src/index.js +38 -45
  63. package/dist/plugins/bambooHr/src/credentials.js +16 -0
  64. package/dist/plugins/bambooHr/src/index.js +41 -67
  65. package/dist/plugins/bannerbear/src/credentials.js +19 -0
  66. package/dist/plugins/bannerbear/src/index.js +15 -27
  67. package/dist/plugins/baserow/src/credentials.js +17 -0
  68. package/dist/plugins/baserow/src/index.js +23 -49
  69. package/dist/plugins/beeminder/src/credentials.js +19 -0
  70. package/dist/plugins/beeminder/src/index.js +32 -54
  71. package/dist/plugins/bitly/src/credentials.js +19 -0
  72. package/dist/plugins/bitly/src/index.js +12 -26
  73. package/dist/plugins/bitwarden/src/credentials.js +62 -0
  74. package/dist/plugins/bitwarden/src/index.js +34 -80
  75. package/dist/plugins/box/src/credentials.js +19 -0
  76. package/dist/plugins/box/src/index.js +24 -49
  77. package/dist/plugins/brandfetch/src/credentials.js +13 -0
  78. package/dist/plugins/brandfetch/src/index.js +12 -17
  79. package/dist/plugins/brevo/src/credentials.js +19 -0
  80. package/dist/plugins/brevo/src/index.js +30 -51
  81. package/dist/plugins/bubble/src/credentials.js +28 -0
  82. package/dist/plugins/bubble/src/index.js +29 -65
  83. package/dist/plugins/chargebee/src/credentials.js +16 -0
  84. package/dist/plugins/chargebee/src/index.js +15 -45
  85. package/dist/plugins/circleci/src/credentials.js +19 -0
  86. package/dist/plugins/circleci/src/index.js +19 -39
  87. package/dist/plugins/ciscoWebex/src/credentials.js +19 -0
  88. package/dist/plugins/ciscoWebex/src/index.js +43 -61
  89. package/dist/plugins/clearbit/src/credentials.js +22 -0
  90. package/dist/plugins/clearbit/src/index.js +11 -21
  91. package/dist/plugins/clickup/src/credentials.js +19 -0
  92. package/dist/plugins/clickup/src/index.js +85 -117
  93. package/dist/plugins/clockify/src/credentials.js +19 -0
  94. package/dist/plugins/clockify/src/index.js +46 -61
  95. package/dist/plugins/cloudflare/src/credentials.js +19 -0
  96. package/dist/plugins/cloudflare/src/index.js +19 -34
  97. package/dist/plugins/cockpit/src/credentials.js +17 -0
  98. package/dist/plugins/cockpit/src/index.js +18 -31
  99. package/dist/plugins/coda/src/credentials.js +19 -0
  100. package/dist/plugins/coda/src/index.js +33 -50
  101. package/dist/plugins/coingecko/src/credentials.js +20 -0
  102. package/dist/plugins/coingecko/src/index.js +24 -34
  103. package/dist/plugins/contentful/src/credentials.js +26 -0
  104. package/dist/plugins/contentful/src/index.js +19 -40
  105. package/dist/plugins/convertkit/src/credentials.js +26 -0
  106. package/dist/plugins/convertkit/src/index.js +27 -45
  107. package/dist/plugins/copper/src/credentials.js +17 -0
  108. package/dist/plugins/copper/src/index.js +25 -47
  109. package/dist/plugins/cortex/src/credentials.js +28 -0
  110. package/dist/plugins/cortex/src/index.js +26 -49
  111. package/dist/plugins/currents/src/credentials.js +19 -0
  112. package/dist/plugins/currents/src/index.js +46 -59
  113. package/dist/plugins/customerIo/src/credentials.js +52 -0
  114. package/dist/plugins/customerIo/src/index.js +30 -58
  115. package/dist/plugins/databricks/src/credentials.js +13 -0
  116. package/dist/plugins/databricks/src/index.js +51 -103
  117. package/dist/plugins/deepl/src/credentials.js +19 -0
  118. package/dist/plugins/deepl/src/index.js +13 -39
  119. package/dist/plugins/demio/src/credentials.js +26 -0
  120. package/dist/plugins/demio/src/index.js +17 -41
  121. package/dist/plugins/dhl/src/credentials.js +13 -0
  122. package/dist/plugins/dhl/src/index.js +8 -19
  123. package/dist/plugins/discord/src/credentials.js +19 -0
  124. package/dist/plugins/discord/src/index.js +30 -58
  125. package/dist/plugins/discourse/src/credentials.js +18 -0
  126. package/dist/plugins/discourse/src/index.js +36 -53
  127. package/dist/plugins/disqus/src/credentials.js +13 -0
  128. package/dist/plugins/disqus/src/index.js +14 -32
  129. package/dist/plugins/drift/src/credentials.js +13 -0
  130. package/dist/plugins/drift/src/index.js +16 -26
  131. package/dist/plugins/dropbox/src/credentials.js +13 -0
  132. package/dist/plugins/dropbox/src/index.js +23 -30
  133. package/dist/plugins/dropcontact/src/credentials.js +13 -0
  134. package/dist/plugins/dropcontact/src/index.js +13 -18
  135. package/dist/plugins/egoi/src/credentials.js +19 -0
  136. package/dist/plugins/egoi/src/index.js +23 -38
  137. package/dist/plugins/elasticsearch/src/credentials.js +18 -0
  138. package/dist/plugins/elasticsearch/src/index.js +27 -48
  139. package/dist/plugins/elevenlabs/src/credentials.js +30 -0
  140. package/dist/plugins/elevenlabs/src/index.js +4 -1
  141. package/dist/plugins/elevenlabs/src/schemas.js +2 -1
  142. package/dist/plugins/elevenlabs/src/shared.js +87 -62
  143. package/dist/plugins/elevenlabs/src/workflows.js +2 -2
  144. package/dist/plugins/emelia/src/credentials.js +14 -0
  145. package/dist/plugins/emelia/src/index.js +19 -23
  146. package/dist/plugins/erpnext/src/credentials.js +27 -0
  147. package/dist/plugins/erpnext/src/index.js +21 -42
  148. package/dist/plugins/facebookGraph/src/credentials.js +20 -0
  149. package/dist/plugins/facebookGraph/src/index.js +39 -37
  150. package/dist/plugins/fal/src/credentials.js +14 -0
  151. package/dist/plugins/fal/src/index.js +5 -3
  152. package/dist/plugins/fal/src/shared.js +58 -63
  153. package/dist/plugins/freshdesk/src/credentials.js +20 -0
  154. package/dist/plugins/freshdesk/src/index.js +25 -46
  155. package/dist/plugins/freshservice/src/credentials.js +16 -0
  156. package/dist/plugins/freshservice/src/index.js +37 -58
  157. package/dist/plugins/freshworksCrm/src/credentials.js +16 -0
  158. package/dist/plugins/freshworksCrm/src/index.js +20 -39
  159. package/dist/plugins/getresponse/src/credentials.js +22 -0
  160. package/dist/plugins/getresponse/src/index.js +20 -32
  161. package/dist/plugins/gett/src/credentials.js +64 -0
  162. package/dist/plugins/gett/src/index.js +11 -6
  163. package/dist/plugins/gett/src/login.js +24 -0
  164. package/dist/plugins/gett/src/session.js +15 -38
  165. package/dist/plugins/gett/src/shared.js +41 -84
  166. package/dist/plugins/ghost/src/credentials.js +36 -0
  167. package/dist/plugins/ghost/src/index.js +18 -59
  168. package/dist/plugins/github/src/credentials.js +18 -0
  169. package/dist/plugins/github/src/index.js +55 -78
  170. package/dist/plugins/gitlab/src/credentials.js +24 -0
  171. package/dist/plugins/gitlab/src/index.js +29 -48
  172. package/dist/plugins/gmail/src/index.js +47 -108
  173. package/dist/plugins/gong/src/credentials.js +16 -0
  174. package/dist/plugins/gong/src/index.js +16 -32
  175. package/dist/plugins/googleAppsScript/src/index.js +109 -42
  176. package/dist/plugins/googleCalendar/src/index.js +20 -51
  177. package/dist/plugins/googleContacts/src/index.js +13 -40
  178. package/dist/plugins/googleDocs/src/index.js +3 -32
  179. package/dist/plugins/googleDocs/src/shared.js +2 -1
  180. package/dist/plugins/googleDrive/src/index.js +68 -97
  181. package/dist/plugins/googleImage/src/credentials.js +14 -0
  182. package/dist/plugins/googleImage/src/index.js +15 -26
  183. package/dist/plugins/googleSheets/src/index.js +27 -60
  184. package/dist/plugins/googleSlides/src/index.js +7 -35
  185. package/dist/plugins/googleTasks/src/index.js +14 -42
  186. package/dist/plugins/gotify/src/credentials.js +32 -0
  187. package/dist/plugins/gotify/src/index.js +14 -36
  188. package/dist/plugins/gotowebinar/src/credentials.js +13 -0
  189. package/dist/plugins/gotowebinar/src/index.js +52 -69
  190. package/dist/plugins/grafana/src/credentials.js +16 -0
  191. package/dist/plugins/grafana/src/index.js +34 -53
  192. package/dist/plugins/graphql/src/credentials.js +42 -0
  193. package/dist/plugins/graphql/src/index.js +21 -46
  194. package/dist/plugins/grist/src/credentials.js +30 -0
  195. package/dist/plugins/grist/src/index.js +14 -43
  196. package/dist/plugins/halopsa/src/credentials.js +56 -0
  197. package/dist/plugins/halopsa/src/index.js +20 -47
  198. package/dist/plugins/harvest/src/credentials.js +20 -0
  199. package/dist/plugins/harvest/src/index.js +24 -43
  200. package/dist/plugins/helpscout/src/credentials.js +13 -0
  201. package/dist/plugins/helpscout/src/index.js +26 -38
  202. package/dist/plugins/highlevel/src/credentials.js +19 -0
  203. package/dist/plugins/highlevel/src/index.js +42 -65
  204. package/dist/plugins/homeAssistant/src/credentials.js +27 -0
  205. package/dist/plugins/homeAssistant/src/index.js +34 -52
  206. package/dist/plugins/hubspot/src/credentials.js +16 -0
  207. package/dist/plugins/hubspot/src/index.js +29 -41
  208. package/dist/plugins/humanticAi/src/credentials.js +13 -0
  209. package/dist/plugins/humanticAi/src/index.js +15 -22
  210. package/dist/plugins/hunter/src/credentials.js +13 -0
  211. package/dist/plugins/hunter/src/index.js +18 -17
  212. package/dist/plugins/intercom/src/credentials.js +19 -0
  213. package/dist/plugins/intercom/src/index.js +25 -38
  214. package/dist/plugins/iterable/src/credentials.js +17 -0
  215. package/dist/plugins/iterable/src/index.js +26 -40
  216. package/dist/plugins/jenkins/src/credentials.js +16 -0
  217. package/dist/plugins/jenkins/src/index.js +22 -36
  218. package/dist/plugins/jira/src/credentials.js +16 -0
  219. package/dist/plugins/jira/src/index.js +35 -61
  220. package/dist/plugins/keap/src/credentials.js +19 -0
  221. package/dist/plugins/keap/src/index.js +43 -71
  222. package/dist/plugins/kobotoolbox/src/credentials.js +13 -0
  223. package/dist/plugins/kobotoolbox/src/index.js +46 -84
  224. package/dist/plugins/lemlist/src/credentials.js +19 -0
  225. package/dist/plugins/lemlist/src/index.js +35 -47
  226. package/dist/plugins/linear/src/attachments.js +7 -7
  227. package/dist/plugins/linear/src/comments.js +7 -7
  228. package/dist/plugins/linear/src/credentials.js +17 -0
  229. package/dist/plugins/linear/src/cycles.js +5 -5
  230. package/dist/plugins/linear/src/index.js +2 -0
  231. package/dist/plugins/linear/src/initiatives.js +6 -6
  232. package/dist/plugins/linear/src/issues.js +14 -14
  233. package/dist/plugins/linear/src/labels.js +6 -6
  234. package/dist/plugins/linear/src/organization.js +2 -2
  235. package/dist/plugins/linear/src/projects.js +12 -12
  236. package/dist/plugins/linear/src/shared.js +34 -32
  237. package/dist/plugins/linear/src/states.js +3 -3
  238. package/dist/plugins/linear/src/teams.js +4 -4
  239. package/dist/plugins/linear/src/users.js +3 -3
  240. package/dist/plugins/linear/src/views.js +5 -5
  241. package/dist/plugins/linear/src/webhooks.js +5 -5
  242. package/dist/plugins/lingvanex/src/credentials.js +13 -0
  243. package/dist/plugins/lingvanex/src/index.js +7 -9
  244. package/dist/plugins/linkedin/src/credentials.js +17 -0
  245. package/dist/plugins/linkedin/src/index.js +13 -17
  246. package/dist/plugins/lonescale/src/credentials.js +13 -0
  247. package/dist/plugins/lonescale/src/index.js +16 -26
  248. package/dist/plugins/magento/src/credentials.js +16 -0
  249. package/dist/plugins/magento/src/index.js +67 -84
  250. package/dist/plugins/mailcheck/src/credentials.js +17 -0
  251. package/dist/plugins/mailcheck/src/index.js +7 -9
  252. package/dist/plugins/mailchimp/src/credentials.js +32 -0
  253. package/dist/plugins/mailchimp/src/index.js +36 -44
  254. package/dist/plugins/mailerlite/src/credentials.js +13 -0
  255. package/dist/plugins/mailerlite/src/index.js +19 -32
  256. package/dist/plugins/mailgun/src/credentials.js +21 -0
  257. package/dist/plugins/mailgun/src/index.js +15 -21
  258. package/dist/plugins/mailjet/src/credentials.js +38 -0
  259. package/dist/plugins/mailjet/src/index.js +60 -115
  260. package/dist/plugins/mandrill/src/credentials.js +17 -0
  261. package/dist/plugins/mandrill/src/index.js +11 -12
  262. package/dist/plugins/marketstack/src/credentials.js +16 -0
  263. package/dist/plugins/marketstack/src/index.js +18 -28
  264. package/dist/plugins/matrix/src/credentials.js +19 -0
  265. package/dist/plugins/matrix/src/index.js +23 -52
  266. package/dist/plugins/mattermost/src/credentials.js +19 -0
  267. package/dist/plugins/mattermost/src/index.js +41 -73
  268. package/dist/plugins/mautic/src/credentials.js +16 -0
  269. package/dist/plugins/mautic/src/index.js +46 -62
  270. package/dist/plugins/medium/src/credentials.js +20 -0
  271. package/dist/plugins/medium/src/index.js +18 -23
  272. package/dist/plugins/messagebird/src/credentials.js +22 -0
  273. package/dist/plugins/messagebird/src/index.js +13 -18
  274. package/dist/plugins/metabase/src/credentials.js +19 -0
  275. package/dist/plugins/metabase/src/index.js +24 -40
  276. package/dist/plugins/microsoftCalendar/src/index.js +49 -18
  277. package/dist/plugins/microsoftFiles/src/index.js +95 -31
  278. package/dist/plugins/microsoftMail/src/index.js +63 -21
  279. package/dist/plugins/misp/src/credentials.js +16 -0
  280. package/dist/plugins/misp/src/index.js +60 -71
  281. package/dist/plugins/mocean/src/credentials.js +17 -0
  282. package/dist/plugins/mocean/src/index.js +11 -23
  283. package/dist/plugins/monday/src/credentials.js +14 -0
  284. package/dist/plugins/monday/src/index.js +31 -44
  285. package/dist/plugins/monicaCrm/src/credentials.js +19 -0
  286. package/dist/plugins/monicaCrm/src/index.js +25 -42
  287. package/dist/plugins/msg91/src/credentials.js +10 -0
  288. package/dist/plugins/msg91/src/index.js +15 -11
  289. package/dist/plugins/nasa/src/credentials.js +22 -0
  290. package/dist/plugins/nasa/src/index.js +24 -28
  291. package/dist/plugins/netlify/src/credentials.js +19 -0
  292. package/dist/plugins/netlify/src/index.js +27 -51
  293. package/dist/plugins/netscalerAdc/src/credentials.js +18 -0
  294. package/dist/plugins/netscalerAdc/src/index.js +16 -31
  295. package/dist/plugins/nextcloud/src/credentials.js +27 -0
  296. package/dist/plugins/nextcloud/src/index.js +55 -109
  297. package/dist/plugins/nocodb/src/credentials.js +16 -0
  298. package/dist/plugins/nocodb/src/index.js +19 -37
  299. package/dist/plugins/notion/src/credentials.js +21 -0
  300. package/dist/plugins/notion/src/index.js +25 -38
  301. package/dist/plugins/npm/src/credentials.js +19 -0
  302. package/dist/plugins/npm/src/index.js +22 -32
  303. package/dist/plugins/odoo/src/credentials.js +21 -0
  304. package/dist/plugins/odoo/src/index.js +53 -69
  305. package/dist/plugins/okta/src/credentials.js +23 -0
  306. package/dist/plugins/okta/src/index.js +30 -35
  307. package/dist/plugins/oneSimpleApi/src/credentials.js +16 -0
  308. package/dist/plugins/oneSimpleApi/src/index.js +19 -24
  309. package/dist/plugins/onfleet/src/credentials.js +23 -0
  310. package/dist/plugins/onfleet/src/index.js +42 -53
  311. package/dist/plugins/openai/src/credentials.js +13 -0
  312. package/dist/plugins/openai/src/index.js +16 -24
  313. package/dist/plugins/openweathermap/src/credentials.js +16 -0
  314. package/dist/plugins/openweathermap/src/index.js +22 -22
  315. package/dist/plugins/oura/src/credentials.js +19 -0
  316. package/dist/plugins/oura/src/index.js +13 -18
  317. package/dist/plugins/paddle/src/credentials.js +27 -0
  318. package/dist/plugins/paddle/src/index.js +20 -36
  319. package/dist/plugins/pagerduty/src/credentials.js +24 -0
  320. package/dist/plugins/pagerduty/src/index.js +30 -39
  321. package/dist/plugins/parallel/src/credentials.js +18 -0
  322. package/dist/plugins/parallel/src/index.js +16 -22
  323. package/dist/plugins/paypal/src/credentials.js +44 -0
  324. package/dist/plugins/paypal/src/index.js +14 -40
  325. package/dist/plugins/peekalink/src/credentials.js +16 -0
  326. package/dist/plugins/peekalink/src/index.js +10 -11
  327. package/dist/plugins/phantombuster/src/credentials.js +19 -0
  328. package/dist/plugins/phantombuster/src/index.js +19 -32
  329. package/dist/plugins/philipsHue/src/credentials.js +17 -0
  330. package/dist/plugins/philipsHue/src/index.js +15 -27
  331. package/dist/plugins/pipedrive/src/credentials.js +26 -0
  332. package/dist/plugins/pipedrive/src/index.js +43 -73
  333. package/dist/plugins/plaud/src/index.js +2 -1
  334. package/dist/plugins/plaud/src/shared.js +23 -19
  335. package/dist/plugins/plivo/src/credentials.js +20 -0
  336. package/dist/plugins/plivo/src/index.js +13 -19
  337. package/dist/plugins/posthog/src/credentials.js +18 -0
  338. package/dist/plugins/posthog/src/index.js +14 -20
  339. package/dist/plugins/profitwell/src/credentials.js +22 -0
  340. package/dist/plugins/profitwell/src/index.js +10 -17
  341. package/dist/plugins/pushbullet/src/credentials.js +19 -0
  342. package/dist/plugins/pushbullet/src/index.js +19 -27
  343. package/dist/plugins/pushcut/src/credentials.js +19 -0
  344. package/dist/plugins/pushcut/src/index.js +7 -8
  345. package/dist/plugins/pushover/src/credentials.js +14 -0
  346. package/dist/plugins/pushover/src/index.js +7 -12
  347. package/dist/plugins/quickbase/src/credentials.js +15 -0
  348. package/dist/plugins/quickbase/src/index.js +24 -34
  349. package/dist/plugins/quickbooks/src/credentials.js +22 -0
  350. package/dist/plugins/quickbooks/src/index.js +17 -46
  351. package/dist/plugins/raindrop/src/credentials.js +19 -0
  352. package/dist/plugins/raindrop/src/index.js +30 -32
  353. package/dist/plugins/recraft/src/credentials.js +13 -0
  354. package/dist/plugins/recraft/src/index.js +39 -28
  355. package/dist/plugins/reddit/src/credentials.js +26 -0
  356. package/dist/plugins/reddit/src/index.js +30 -34
  357. package/dist/plugins/replicate/src/credentials.js +23 -0
  358. package/dist/plugins/replicate/src/index.js +18 -28
  359. package/dist/plugins/rocketchat/src/credentials.js +17 -0
  360. package/dist/plugins/rocketchat/src/index.js +8 -19
  361. package/dist/plugins/rundeck/src/credentials.js +16 -0
  362. package/dist/plugins/rundeck/src/index.js +12 -28
  363. package/dist/plugins/salesforce/src/credentials.js +73 -0
  364. package/dist/plugins/salesforce/src/index.js +6 -0
  365. package/dist/plugins/salesforce/src/metadata.js +3 -16
  366. package/dist/plugins/salesforce/src/shared.js +25 -100
  367. package/dist/plugins/salesforce/src/sobjects.js +10 -9
  368. package/dist/plugins/salesmate/src/credentials.js +17 -0
  369. package/dist/plugins/salesmate/src/index.js +20 -37
  370. package/dist/plugins/securityScorecard/src/credentials.js +22 -0
  371. package/dist/plugins/securityScorecard/src/index.js +24 -37
  372. package/dist/plugins/segment/src/credentials.js +16 -0
  373. package/dist/plugins/segment/src/index.js +12 -16
  374. package/dist/plugins/sendgrid/src/credentials.js +13 -0
  375. package/dist/plugins/sendgrid/src/index.js +31 -35
  376. package/dist/plugins/sendy/src/credentials.js +18 -0
  377. package/dist/plugins/sendy/src/index.js +18 -24
  378. package/dist/plugins/sentry/src/credentials.js +16 -0
  379. package/dist/plugins/sentry/src/index.js +30 -98
  380. package/dist/plugins/servicenow/src/credentials.js +13 -0
  381. package/dist/plugins/servicenow/src/index.js +22 -41
  382. package/dist/plugins/shiftAtlas/src/graph.js +2 -2
  383. package/dist/plugins/shiftAtlas/src/index.js +2 -0
  384. package/dist/plugins/shiftAtlas/src/shared.js +3 -1
  385. package/dist/plugins/shiftBwm/src/index.js +4 -2
  386. package/dist/plugins/shiftBwm/src/shared.js +41 -16
  387. package/dist/plugins/shiftCrm/src/access.js +2 -2
  388. package/dist/plugins/shiftCrm/src/accounts.js +3 -3
  389. package/dist/plugins/shiftCrm/src/activities.js +3 -3
  390. package/dist/plugins/shiftCrm/src/credentials.js +6 -0
  391. package/dist/plugins/shiftCrm/src/index.js +2 -0
  392. package/dist/plugins/shiftCrm/src/opportunities.js +3 -3
  393. package/dist/plugins/shiftCrm/src/people.js +3 -3
  394. package/dist/plugins/shiftCrm/src/records.js +2 -2
  395. package/dist/plugins/shiftCrm/src/shared.js +2 -1
  396. package/dist/plugins/shiftCrm/src/tasks.js +3 -3
  397. package/dist/plugins/shiftObjects/src/credentials.js +2 -0
  398. package/dist/plugins/shiftObjects/src/index.js +2 -0
  399. package/dist/plugins/shiftObjects/src/objects.js +4 -3
  400. package/dist/plugins/shiftOcr/src/credentials.js +8 -0
  401. package/dist/plugins/shiftOcr/src/index.js +14 -8
  402. package/dist/plugins/shiftPages/src/index.js +2 -0
  403. package/dist/plugins/shiftPages/src/pages.js +5 -3
  404. package/dist/plugins/shiftPages/src/shared.js +3 -1
  405. package/dist/plugins/shiftTranscription/src/index.js +2 -0
  406. package/dist/plugins/shiftTranscription/src/shared.js +11 -1
  407. package/dist/plugins/shiftTranscription/src/transcription.js +5 -5
  408. package/dist/plugins/shiftWork/src/index.js +2 -0
  409. package/dist/plugins/shiftWork/src/issue-views.js +5 -5
  410. package/dist/plugins/shiftWork/src/issues.js +11 -7
  411. package/dist/plugins/shiftWork/src/projects.js +3 -3
  412. package/dist/plugins/shiftWork/src/shared.js +3 -1
  413. package/dist/plugins/shopify/src/credentials.js +16 -0
  414. package/dist/plugins/shopify/src/index.js +32 -59
  415. package/dist/plugins/signl4/src/credentials.js +17 -0
  416. package/dist/plugins/signl4/src/index.js +28 -29
  417. package/dist/plugins/slack/src/credentials.js +19 -0
  418. package/dist/plugins/slack/src/index.js +51 -60
  419. package/dist/plugins/sms77/src/credentials.js +17 -0
  420. package/dist/plugins/sms77/src/index.js +11 -16
  421. package/dist/plugins/splunk/src/credentials.js +19 -0
  422. package/dist/plugins/splunk/src/index.js +32 -74
  423. package/dist/plugins/spotify/src/credentials.js +19 -0
  424. package/dist/plugins/spotify/src/index.js +40 -55
  425. package/dist/plugins/stackby/src/credentials.js +13 -0
  426. package/dist/plugins/stackby/src/index.js +14 -23
  427. package/dist/plugins/steel/src/auth.js +27 -0
  428. package/dist/plugins/steel/src/browser.js +4 -3
  429. package/dist/plugins/steel/src/captchas.js +4 -3
  430. package/dist/plugins/steel/src/extensions.js +3 -2
  431. package/dist/plugins/steel/src/files.js +9 -10
  432. package/dist/plugins/steel/src/index.js +2 -0
  433. package/dist/plugins/steel/src/page/tools.js +3 -3
  434. package/dist/plugins/steel/src/profiles.js +4 -3
  435. package/dist/plugins/steel/src/sessions.js +13 -13
  436. package/dist/plugins/steel/src/shared.js +21 -51
  437. package/dist/plugins/storyblok/src/credentials.js +37 -0
  438. package/dist/plugins/storyblok/src/index.js +22 -66
  439. package/dist/plugins/strapi/src/credentials.js +71 -0
  440. package/dist/plugins/strapi/src/index.js +36 -70
  441. package/dist/plugins/strava/src/credentials.js +19 -0
  442. package/dist/plugins/strava/src/index.js +16 -33
  443. package/dist/plugins/stripe/src/credentials.js +19 -0
  444. package/dist/plugins/stripe/src/index.js +44 -58
  445. package/dist/plugins/supabase/src/credentials.js +30 -0
  446. package/dist/plugins/supabase/src/index.js +18 -40
  447. package/dist/plugins/syncromsp/src/credentials.js +16 -0
  448. package/dist/plugins/syncromsp/src/index.js +37 -70
  449. package/dist/plugins/tapfiliate/src/credentials.js +13 -0
  450. package/dist/plugins/tapfiliate/src/index.js +21 -31
  451. package/dist/plugins/telegram/src/credentials.js +20 -0
  452. package/dist/plugins/telegram/src/index.js +31 -39
  453. package/dist/plugins/thehive/src/credentials.js +14 -0
  454. package/dist/plugins/thehive/src/index.js +33 -50
  455. package/dist/plugins/thehiveProject/src/credentials.js +16 -0
  456. package/dist/plugins/thehiveProject/src/index.js +53 -122
  457. package/dist/plugins/todoist/src/credentials.js +26 -0
  458. package/dist/plugins/todoist/src/index.js +49 -79
  459. package/dist/plugins/together/src/credentials.js +16 -0
  460. package/dist/plugins/together/src/index.js +31 -33
  461. package/dist/plugins/travisci/src/credentials.js +24 -0
  462. package/dist/plugins/travisci/src/index.js +16 -30
  463. package/dist/plugins/trello/src/credentials.js +29 -0
  464. package/dist/plugins/trello/src/index.js +49 -64
  465. package/dist/plugins/twake/src/credentials.js +16 -0
  466. package/dist/plugins/twake/src/index.js +8 -10
  467. package/dist/plugins/twilio/src/credentials.js +23 -0
  468. package/dist/plugins/twilio/src/index.js +12 -26
  469. package/dist/plugins/twist/src/credentials.js +13 -0
  470. package/dist/plugins/twist/src/index.js +32 -44
  471. package/dist/plugins/twitter/src/credentials.js +16 -0
  472. package/dist/plugins/twitter/src/index.js +25 -37
  473. package/dist/plugins/typesafe/src/credentials.js +28 -0
  474. package/dist/plugins/typesafe/src/index.js +3 -1
  475. package/dist/plugins/typesafe/src/shared.js +23 -35
  476. package/dist/plugins/unleashedSoftware/src/credentials.js +21 -0
  477. package/dist/plugins/unleashedSoftware/src/index.js +13 -37
  478. package/dist/plugins/uplead/src/credentials.js +16 -0
  479. package/dist/plugins/uplead/src/index.js +11 -16
  480. package/dist/plugins/uproc/src/credentials.js +14 -0
  481. package/dist/plugins/uproc/src/index.js +7 -10
  482. package/dist/plugins/uptimerobot/src/credentials.js +14 -0
  483. package/dist/plugins/uptimerobot/src/index.js +28 -39
  484. package/dist/plugins/urlscanio/src/credentials.js +13 -0
  485. package/dist/plugins/urlscanio/src/index.js +13 -22
  486. package/dist/plugins/vercel/src/credentials.js +19 -0
  487. package/dist/plugins/vercel/src/deployments.js +27 -11
  488. package/dist/plugins/vercel/src/env.js +31 -12
  489. package/dist/plugins/vercel/src/index.js +2 -0
  490. package/dist/plugins/vercel/src/projects.js +6 -3
  491. package/dist/plugins/vercel/src/shared.js +32 -37
  492. package/dist/plugins/vero/src/credentials.js +17 -0
  493. package/dist/plugins/vero/src/index.js +18 -21
  494. package/dist/plugins/vonage/src/credentials.js +17 -0
  495. package/dist/plugins/vonage/src/index.js +14 -18
  496. package/dist/plugins/wekan/src/credentials.js +16 -0
  497. package/dist/plugins/wekan/src/index.js +33 -46
  498. package/dist/plugins/wolt/src/account.js +6 -0
  499. package/dist/plugins/wolt/src/catalog.js +2 -2
  500. package/dist/plugins/wolt/src/credentials.js +64 -0
  501. package/dist/plugins/wolt/src/index.js +8 -3
  502. package/dist/plugins/wolt/src/orders.js +2 -2
  503. package/dist/plugins/wolt/src/public.js +91 -0
  504. package/dist/plugins/wolt/src/shared.js +49 -158
  505. package/dist/plugins/woocommerce/src/credentials.js +16 -0
  506. package/dist/plugins/woocommerce/src/index.js +19 -37
  507. package/dist/plugins/wordpress/src/credentials.js +16 -0
  508. package/dist/plugins/wordpress/src/index.js +23 -42
  509. package/dist/plugins/xai/src/credentials.js +13 -0
  510. package/dist/plugins/xai/src/index.js +32 -31
  511. package/dist/plugins/xero/src/credentials.js +17 -0
  512. package/dist/plugins/xero/src/index.js +19 -36
  513. package/dist/plugins/yourls/src/credentials.js +17 -0
  514. package/dist/plugins/yourls/src/index.js +13 -23
  515. package/dist/plugins/zammad/src/credentials.js +15 -0
  516. package/dist/plugins/zammad/src/index.js +27 -47
  517. package/dist/plugins/zendesk/src/credentials.js +26 -0
  518. package/dist/plugins/zendesk/src/index.js +29 -48
  519. package/dist/plugins/zoho/src/credentials.js +17 -0
  520. package/dist/plugins/zoho/src/index.js +18 -38
  521. package/dist/plugins/zoom/src/credentials.js +19 -0
  522. package/dist/plugins/zoom/src/index.js +15 -30
  523. package/dist/plugins/zulip/src/credentials.js +16 -0
  524. package/dist/plugins/zulip/src/index.js +36 -42
  525. package/dist/sdk.d.ts +8 -0
  526. package/dist/sdk.js +3 -0
  527. package/package.json +2 -1
  528. package/dist/plugins/_shared/authedFetch.js +0 -33
  529. package/dist/plugins/_shared/tokenRefresh.js +0 -41
  530. package/dist/tests/helpers/engine-harness.d.ts +0 -1
  531. package/dist/tests/helpers/engine-harness.js +0 -236
@@ -1,67 +1,41 @@
1
- function getConn(ctx) {
2
- const c = ctx.connection.config;
3
- return {
4
- webDavUrl: c.webDavUrl.replace(/\/$/, ""),
5
- username: c.username,
6
- password: c.password,
7
- };
1
+ import { answerFailed, credentialJson, credentialOk, pathSegment, pathSegments, } from "../../_shared/credentials.js";
2
+ import { nextcloudCredential } from "./credentials.js";
3
+ /** A file or folder path beneath the WebDAV base, each segment encoded. */
4
+ function davPath(path) {
5
+ return pathSegments(String(path ?? "").replace(/^\/+|\/+$/g, ""));
8
6
  }
9
- function authHeader(conn) {
10
- // Nextcloud uses Basic auth for access token API
11
- return "Basic " + btoa(`${conn.username}:${conn.password}`);
12
- }
13
- /** Base URL without /remote.php/webdav — for OCS and share APIs */
14
- function baseUrl(conn) {
15
- return conn.webDavUrl.replace("/remote.php/webdav", "");
16
- }
17
- /** Make a WebDAV request */
18
- async function webdavRequest(conn, method, path, headers) {
19
- const url = `${conn.webDavUrl}/${encodeURI(path.replace(/^\//, ""))}`;
20
- const res = await fetch(url, {
7
+ /** A WebDAV call on `path`; COPY and MOVE name where it goes. */
8
+ async function dav(ctx, method, path, toPath) {
9
+ await credentialOk(ctx, nextcloudCredential, "nextcloud", {
10
+ target: "dav",
11
+ path: davPath(path),
21
12
  method,
22
- headers: { Authorization: authHeader(conn), ...headers },
13
+ ...(toPath !== undefined ? { destination: davPath(toPath) } : {}),
23
14
  });
24
- if (!res.ok)
25
- throw new Error(`Nextcloud WebDAV error ${res.status}: ${await res.text()}`);
26
- return res.text();
27
- }
28
- /** Make an OCS API request (returns XML text) */
29
- async function ocsRequest(conn, method, endpoint, body, qs) {
30
- const url = new URL(`${baseUrl(conn)}/${endpoint}`);
31
- if (qs) {
32
- for (const [k, v] of Object.entries(qs)) {
33
- if (v !== undefined && v !== null)
34
- url.searchParams.set(k, String(v));
35
- }
36
- }
37
- // Request JSON format via OCS
38
- url.searchParams.set("format", "json");
39
- const headers = {
40
- Authorization: authHeader(conn),
41
- "OCS-APIRequest": "true",
42
- };
43
- const init = { method, headers };
44
- if (body) {
45
- headers["Content-Type"] = "application/x-www-form-urlencoded";
46
- init.body = body;
47
- }
48
- const res = await fetch(url.toString(), init);
49
- if (!res.ok)
50
- throw new Error(`Nextcloud OCS error ${res.status}: ${await res.text()}`);
51
- return res.text();
15
+ return { success: true };
52
16
  }
53
- /** Parse OCS JSON response */
54
- function parseOcs(text) {
55
- const json = JSON.parse(text);
56
- const meta = json?.ocs?.meta;
57
- if (meta && meta.status !== "ok" && meta.statuscode >= 300) {
58
- throw new Error(`Nextcloud OCS error: ${meta.message || meta.status}`);
59
- }
60
- return json?.ocs?.data;
17
+ /** An OCS call, answered as JSON; a status other than ok is a failure. */
18
+ async function ocs(ctx, method, path, options = {}) {
19
+ const answer = await credentialJson(ctx, nextcloudCredential, "nextcloud", {
20
+ target: "ocs",
21
+ path,
22
+ method,
23
+ query: { ...options.query, format: "json" },
24
+ form: options.form,
25
+ headers: { "OCS-APIRequest": "true" },
26
+ });
27
+ const meta = answer.ocs?.meta;
28
+ if (meta && meta.status !== "ok")
29
+ throw answerFailed("nextcloud", {
30
+ code: meta.statuscode,
31
+ message: meta.message,
32
+ });
33
+ return answer.ocs?.data;
61
34
  }
62
35
  export default function nextcloud(rl) {
63
36
  rl.setName("nextcloud");
64
37
  rl.setVersion("0.1.0");
38
+ rl.setCredential(nextcloudCredential);
65
39
  rl.setConnectionSchema({
66
40
  webDavUrl: {
67
41
  type: "string",
@@ -100,11 +74,7 @@ export default function nextcloud(rl) {
100
74
  },
101
75
  async execute(input, ctx) {
102
76
  const { path, toPath } = input;
103
- const conn = getConn(ctx);
104
- await webdavRequest(conn, "COPY", path, {
105
- Destination: `${conn.webDavUrl}/${encodeURI(toPath.replace(/^\//, ""))}`,
106
- });
107
- return { success: true };
77
+ return dav(ctx, "COPY", path, toPath);
108
78
  },
109
79
  });
110
80
  rl.registerAction("file.delete", {
@@ -119,8 +89,7 @@ export default function nextcloud(rl) {
119
89
  },
120
90
  async execute(input, ctx) {
121
91
  const { path } = input;
122
- await webdavRequest(getConn(ctx), "DELETE", path);
123
- return { success: true };
92
+ return dav(ctx, "DELETE", path);
124
93
  },
125
94
  });
126
95
  rl.registerAction("file.move", {
@@ -136,11 +105,7 @@ export default function nextcloud(rl) {
136
105
  },
137
106
  async execute(input, ctx) {
138
107
  const { path, toPath } = input;
139
- const conn = getConn(ctx);
140
- await webdavRequest(conn, "MOVE", path, {
141
- Destination: `${conn.webDavUrl}/${encodeURI(toPath.replace(/^\//, ""))}`,
142
- });
143
- return { success: true };
108
+ return dav(ctx, "MOVE", path, toPath);
144
109
  },
145
110
  });
146
111
  rl.registerAction("file.share", {
@@ -175,17 +140,15 @@ export default function nextcloud(rl) {
175
140
  },
176
141
  async execute(input, ctx) {
177
142
  const p = input;
178
- const params = new URLSearchParams();
179
- params.set("path", p.path);
180
- params.set("shareType", String(p.shareType));
181
- if (p.shareWith)
182
- params.set("shareWith", p.shareWith);
183
- if (p.permissions)
184
- params.set("permissions", String(p.permissions));
185
- if (p.password)
186
- params.set("password", p.password);
187
- const text = await ocsRequest(getConn(ctx), "POST", "ocs/v2.php/apps/files_sharing/api/v1/shares", params.toString());
188
- return parseOcs(text);
143
+ return ocs(ctx, "POST", "v2.php/apps/files_sharing/api/v1/shares", {
144
+ form: {
145
+ path: p.path,
146
+ shareType: p.shareType,
147
+ shareWith: p.shareWith || undefined,
148
+ permissions: p.permissions || undefined,
149
+ password: p.password || undefined,
150
+ },
151
+ });
189
152
  },
190
153
  });
191
154
  rl.registerAction("folder.create", {
@@ -200,8 +163,7 @@ export default function nextcloud(rl) {
200
163
  },
201
164
  async execute(input, ctx) {
202
165
  const { path } = input;
203
- await webdavRequest(getConn(ctx), "MKCOL", path);
204
- return { success: true };
166
+ return dav(ctx, "MKCOL", path);
205
167
  },
206
168
  });
207
169
  rl.registerAction("folder.delete", {
@@ -216,8 +178,7 @@ export default function nextcloud(rl) {
216
178
  },
217
179
  async execute(input, ctx) {
218
180
  const { path } = input;
219
- await webdavRequest(getConn(ctx), "DELETE", path);
220
- return { success: true };
181
+ return dav(ctx, "DELETE", path);
221
182
  },
222
183
  });
223
184
  rl.registerAction("folder.copy", {
@@ -237,11 +198,7 @@ export default function nextcloud(rl) {
237
198
  },
238
199
  async execute(input, ctx) {
239
200
  const { path, toPath } = input;
240
- const conn = getConn(ctx);
241
- await webdavRequest(conn, "COPY", path, {
242
- Destination: `${conn.webDavUrl}/${encodeURI(toPath.replace(/^\//, ""))}`,
243
- });
244
- return { success: true };
201
+ return dav(ctx, "COPY", path, toPath);
245
202
  },
246
203
  });
247
204
  rl.registerAction("folder.move", {
@@ -261,11 +218,7 @@ export default function nextcloud(rl) {
261
218
  },
262
219
  async execute(input, ctx) {
263
220
  const { path, toPath } = input;
264
- const conn = getConn(ctx);
265
- await webdavRequest(conn, "MOVE", path, {
266
- Destination: `${conn.webDavUrl}/${encodeURI(toPath.replace(/^\//, ""))}`,
267
- });
268
- return { success: true };
221
+ return dav(ctx, "MOVE", path, toPath);
269
222
  },
270
223
  });
271
224
  // ── User operations ─────────────────────────────────
@@ -283,13 +236,9 @@ export default function nextcloud(rl) {
283
236
  },
284
237
  async execute(input, ctx) {
285
238
  const { userId, email, displayName } = input;
286
- const params = new URLSearchParams();
287
- params.set("userid", userId);
288
- params.set("email", email);
289
- if (displayName)
290
- params.set("displayName", displayName);
291
- const text = await ocsRequest(getConn(ctx), "POST", "ocs/v1.php/cloud/users", params.toString());
292
- return parseOcs(text);
239
+ return ocs(ctx, "POST", "v1.php/cloud/users", {
240
+ form: { userid: userId, email, displayName: displayName || undefined },
241
+ });
293
242
  },
294
243
  });
295
244
  rl.registerAction("user.delete", {
@@ -300,8 +249,7 @@ export default function nextcloud(rl) {
300
249
  },
301
250
  async execute(input, ctx) {
302
251
  const { userId } = input;
303
- const text = await ocsRequest(getConn(ctx), "DELETE", `ocs/v1.php/cloud/users/${userId}`);
304
- return parseOcs(text);
252
+ return ocs(ctx, "DELETE", `v1.php/cloud/users/${pathSegment(userId)}`);
305
253
  },
306
254
  });
307
255
  rl.registerAction("user.get", {
@@ -312,8 +260,7 @@ export default function nextcloud(rl) {
312
260
  },
313
261
  async execute(input, ctx) {
314
262
  const { userId } = input;
315
- const text = await ocsRequest(getConn(ctx), "GET", `ocs/v1.php/cloud/users/${userId}`);
316
- return parseOcs(text);
263
+ return ocs(ctx, "GET", `v1.php/cloud/users/${pathSegment(userId)}`);
317
264
  },
318
265
  });
319
266
  rl.registerAction("user.list", {
@@ -333,8 +280,7 @@ export default function nextcloud(rl) {
333
280
  qs.offset = p.offset;
334
281
  if (p.search)
335
282
  qs.search = p.search;
336
- const text = await ocsRequest(getConn(ctx), "GET", "ocs/v1.php/cloud/users", undefined, qs);
337
- return parseOcs(text);
283
+ return ocs(ctx, "GET", "v1.php/cloud/users", { query: qs });
338
284
  },
339
285
  });
340
286
  rl.registerAction("user.update", {
@@ -351,9 +297,9 @@ export default function nextcloud(rl) {
351
297
  },
352
298
  async execute(input, ctx) {
353
299
  const { userId, key, value } = input;
354
- const body = `key=${encodeURIComponent(key)}&value=${encodeURIComponent(value)}`;
355
- const text = await ocsRequest(getConn(ctx), "PUT", `ocs/v1.php/cloud/users/${userId}`, body);
356
- return parseOcs(text);
300
+ return ocs(ctx, "PUT", `v1.php/cloud/users/${pathSegment(userId)}`, {
301
+ form: { key, value },
302
+ });
357
303
  },
358
304
  });
359
305
  }
@@ -0,0 +1,16 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An API token, sent as the xc-token header to the connection's own NocoDB
4
+ * instance beneath /api/v2/.
5
+ */
6
+ export const nocodbCredential = staticCredential({
7
+ id: "nocodb",
8
+ auth: { kind: "apiKey", header: "xc-token" },
9
+ local: { secret: "apiToken" },
10
+ targets: (config) => ({
11
+ api: {
12
+ baseUrl: httpsBase(config.host, "api/v2/"),
13
+ methods: ["GET", "POST", "PATCH", "DELETE"],
14
+ },
15
+ }),
16
+ });
@@ -1,38 +1,21 @@
1
- function getConn(ctx) {
2
- const c = ctx.connection.config;
3
- const host = c.host.replace(/\/$/, "");
4
- return { host, token: c.apiToken };
5
- }
6
- async function apiRequest(conn, method, endpoint, body, qs) {
7
- const url = new URL(`${conn.host}${endpoint}`);
8
- if (qs) {
9
- for (const [k, v] of Object.entries(qs)) {
10
- if (v !== undefined && v !== null)
11
- url.searchParams.set(k, String(v));
12
- }
13
- }
14
- const init = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { nocodbCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body, qs) {
4
+ return credentialJson(ctx, nocodbCredential, "nocodb", {
5
+ target: "api",
6
+ path,
15
7
  method,
16
- headers: {
17
- "xc-token": conn.token,
18
- "Content-Type": "application/json",
19
- },
20
- };
21
- if (body !== undefined)
22
- init.body = JSON.stringify(body);
23
- const res = await fetch(url.toString(), init);
24
- if (!res.ok)
25
- throw new Error(`NocoDB API error ${res.status}: ${await res.text()}`);
26
- const text = await res.text();
27
- return text ? JSON.parse(text) : {};
8
+ query: qs,
9
+ ...(body !== undefined ? { json: body } : {}),
10
+ });
28
11
  }
29
- async function paginate(conn, endpoint, qs = {}) {
12
+ async function paginate(ctx, endpoint, qs = {}) {
30
13
  const all = [];
31
14
  qs.limit = 100;
32
15
  qs.offset = 0;
33
16
  let isLast = false;
34
17
  while (!isLast) {
35
- const data = (await apiRequest(conn, "GET", endpoint, undefined, qs));
18
+ const data = (await apiRequest(ctx, "GET", endpoint, undefined, qs));
36
19
  const list = (data.list ?? []);
37
20
  all.push(...list);
38
21
  const pageInfo = data.pageInfo;
@@ -44,6 +27,7 @@ async function paginate(conn, endpoint, qs = {}) {
44
27
  export default function nocodb(rl) {
45
28
  rl.setName("nocodb");
46
29
  rl.setVersion("0.1.0");
30
+ rl.setCredential(nocodbCredential);
47
31
  rl.setConnectionSchema({
48
32
  host: {
49
33
  type: "string",
@@ -71,8 +55,7 @@ export default function nocodb(rl) {
71
55
  },
72
56
  async execute(input, ctx) {
73
57
  const { tableId, rows } = input;
74
- const conn = getConn(ctx);
75
- return apiRequest(conn, "POST", `/api/v2/tables/${tableId}/records`, rows);
58
+ return apiRequest(ctx, "POST", `tables/${pathSegment(tableId)}/records`, rows);
76
59
  },
77
60
  });
78
61
  rl.registerAction("row.get", {
@@ -84,7 +67,7 @@ export default function nocodb(rl) {
84
67
  },
85
68
  async execute(input, ctx) {
86
69
  const { tableId, rowId } = input;
87
- return apiRequest(getConn(ctx), "GET", `/api/v2/tables/${tableId}/records/${rowId}`);
70
+ return apiRequest(ctx, "GET", `tables/${pathSegment(tableId)}/records/${pathSegment(rowId)}`);
88
71
  },
89
72
  });
90
73
  rl.registerAction("row.list", {
@@ -125,8 +108,7 @@ export default function nocodb(rl) {
125
108
  },
126
109
  async execute(input, ctx) {
127
110
  const p = (input ?? {});
128
- const conn = getConn(ctx);
129
- const endpoint = `/api/v2/tables/${p.tableId}/records`;
111
+ const endpoint = `tables/${pathSegment(p.tableId)}/records`;
130
112
  const qs = {};
131
113
  if (p.where)
132
114
  qs.where = p.where;
@@ -140,10 +122,10 @@ export default function nocodb(rl) {
140
122
  qs.offset = p.offset;
141
123
  if (p.limit) {
142
124
  qs.limit = p.limit;
143
- const data = (await apiRequest(conn, "GET", endpoint, undefined, qs));
125
+ const data = (await apiRequest(ctx, "GET", endpoint, undefined, qs));
144
126
  return data.list;
145
127
  }
146
- return paginate(conn, endpoint, qs);
128
+ return paginate(ctx, endpoint, qs);
147
129
  },
148
130
  });
149
131
  rl.registerAction("row.update", {
@@ -159,7 +141,7 @@ export default function nocodb(rl) {
159
141
  },
160
142
  async execute(input, ctx) {
161
143
  const { tableId, rows } = input;
162
- return apiRequest(getConn(ctx), "PATCH", `/api/v2/tables/${tableId}/records`, rows);
144
+ return apiRequest(ctx, "PATCH", `tables/${pathSegment(tableId)}/records`, rows);
163
145
  },
164
146
  });
165
147
  rl.registerAction("row.delete", {
@@ -175,7 +157,7 @@ export default function nocodb(rl) {
175
157
  },
176
158
  async execute(input, ctx) {
177
159
  const { tableId, ids } = input;
178
- return apiRequest(getConn(ctx), "DELETE", `/api/v2/tables/${tableId}/records`, ids);
160
+ return apiRequest(ctx, "DELETE", `tables/${pathSegment(tableId)}/records`, ids);
179
161
  },
180
162
  });
181
163
  }
@@ -0,0 +1,21 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ export const NOTION_VERSION = "2021-08-16";
3
+ /** An integration token, sent as a bearer to Notion's one API origin. */
4
+ export const notionCredential = staticCredential({
5
+ id: "notion",
6
+ auth: { kind: "bearer" },
7
+ local: { secret: "apiKey" },
8
+ targets: {
9
+ api: {
10
+ baseUrl: "https://api.notion.com/v1/",
11
+ methods: ["GET", "POST", "PATCH", "DELETE"],
12
+ allowedHeaders: ["Notion-Version"],
13
+ },
14
+ },
15
+ probe: {
16
+ target: "api",
17
+ path: "users/me",
18
+ method: "GET",
19
+ acceptedStatuses: [200],
20
+ },
21
+ });
@@ -1,31 +1,19 @@
1
- const BASE = "https://api.notion.com/v1";
2
- const NOTION_VERSION = "2021-08-16";
3
- async function api(token, method, endpoint, body, qs) {
4
- const url = new URL(`${BASE}${endpoint}`);
5
- if (qs) {
6
- for (const [k, v] of Object.entries(qs)) {
7
- if (v !== undefined && v !== null)
8
- url.searchParams.set(k, String(v));
9
- }
10
- }
11
- const init = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { NOTION_VERSION, notionCredential } from "./credentials.js";
3
+ function api(ctx, method, path, body, query) {
4
+ return credentialJson(ctx, notionCredential, "notion", {
5
+ target: "api",
6
+ path,
12
7
  method,
13
- headers: {
14
- Authorization: `Bearer ${token}`,
15
- "Notion-Version": NOTION_VERSION,
16
- "Content-Type": "application/json",
17
- },
18
- };
19
- if (body && Object.keys(body).length > 0)
20
- init.body = JSON.stringify(body);
21
- const res = await fetch(url.toString(), init);
22
- if (!res.ok)
23
- throw new Error(`Notion error ${res.status}: ${await res.text()}`);
24
- return res.json();
8
+ query,
9
+ headers: { "Notion-Version": NOTION_VERSION },
10
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
11
+ });
25
12
  }
26
13
  export default function notion(rl) {
27
14
  rl.setName("notion");
28
15
  rl.setVersion("0.1.0");
16
+ rl.setCredential(notionCredential);
29
17
  rl.setConnectionSchema({
30
18
  apiKey: {
31
19
  type: "string",
@@ -34,7 +22,6 @@ export default function notion(rl) {
34
22
  env: "NOTION_API_KEY",
35
23
  },
36
24
  });
37
- const t = (ctx) => ctx.connection.config.apiKey;
38
25
  // ── Block ───────────────────────────────────────────
39
26
  rl.registerAction("block.append", {
40
27
  access: "write",
@@ -49,7 +36,7 @@ export default function notion(rl) {
49
36
  },
50
37
  async execute(input, ctx) {
51
38
  const p = input;
52
- return api(t(ctx), "PATCH", `/blocks/${p.blockId}/children`, {
39
+ return api(ctx, "PATCH", `blocks/${pathSegment(p.blockId)}/children`, {
53
40
  children: p.children,
54
41
  });
55
42
  },
@@ -66,7 +53,7 @@ export default function notion(rl) {
66
53
  const qs = {};
67
54
  if (p.limit)
68
55
  qs.page_size = p.limit;
69
- const data = (await api(t(ctx), "GET", `/blocks/${p.blockId}/children`, undefined, qs));
56
+ const data = (await api(ctx, "GET", `blocks/${pathSegment(p.blockId)}/children`, undefined, qs));
70
57
  return data.results;
71
58
  },
72
59
  });
@@ -75,7 +62,7 @@ export default function notion(rl) {
75
62
  description: "Delete (archive) a block",
76
63
  inputSchema: { blockId: { type: "string", required: true } },
77
64
  async execute(input, ctx) {
78
- return api(t(ctx), "DELETE", `/blocks/${input.blockId}`);
65
+ return api(ctx, "DELETE", `blocks/${pathSegment(input.blockId)}`);
79
66
  },
80
67
  });
81
68
  // ── Database ────────────────────────────────────────
@@ -84,7 +71,7 @@ export default function notion(rl) {
84
71
  description: "Get a database",
85
72
  inputSchema: { databaseId: { type: "string", required: true } },
86
73
  async execute(input, ctx) {
87
- return api(t(ctx), "GET", `/databases/${input.databaseId}`);
74
+ return api(ctx, "GET", `databases/${pathSegment(input.databaseId)}`);
88
75
  },
89
76
  });
90
77
  rl.registerAction("database.list", {
@@ -97,7 +84,7 @@ export default function notion(rl) {
97
84
  };
98
85
  if (input?.limit)
99
86
  body.page_size = input.limit;
100
- const data = (await api(t(ctx), "POST", "/search", body));
87
+ const data = (await api(ctx, "POST", "search", body));
101
88
  return data.results;
102
89
  },
103
90
  });
@@ -127,7 +114,7 @@ export default function notion(rl) {
127
114
  body.sorts = p.sorts;
128
115
  if (p.limit)
129
116
  body.page_size = p.limit;
130
- const data = (await api(t(ctx), "POST", `/databases/${p.databaseId}/query`, body));
117
+ const data = (await api(ctx, "POST", `databases/${pathSegment(p.databaseId)}/query`, body));
131
118
  return data.results;
132
119
  },
133
120
  });
@@ -154,7 +141,7 @@ export default function notion(rl) {
154
141
  icon: { type: "object", required: false },
155
142
  },
156
143
  async execute(input, ctx) {
157
- return api(t(ctx), "POST", "/pages", input);
144
+ return api(ctx, "POST", "pages", input);
158
145
  },
159
146
  });
160
147
  rl.registerAction("page.get", {
@@ -162,7 +149,7 @@ export default function notion(rl) {
162
149
  description: "Get a page",
163
150
  inputSchema: { pageId: { type: "string", required: true } },
164
151
  async execute(input, ctx) {
165
- return api(t(ctx), "GET", `/pages/${input.pageId}`);
152
+ return api(ctx, "GET", `pages/${pathSegment(input.pageId)}`);
166
153
  },
167
154
  });
168
155
  rl.registerAction("page.update", {
@@ -176,7 +163,7 @@ export default function notion(rl) {
176
163
  },
177
164
  async execute(input, ctx) {
178
165
  const { pageId, ...body } = input;
179
- return api(t(ctx), "PATCH", `/pages/${pageId}`, body);
166
+ return api(ctx, "PATCH", `pages/${pathSegment(pageId)}`, body);
180
167
  },
181
168
  });
182
169
  rl.registerAction("page.archive", {
@@ -184,7 +171,7 @@ export default function notion(rl) {
184
171
  description: "Archive a page",
185
172
  inputSchema: { pageId: { type: "string", required: true } },
186
173
  async execute(input, ctx) {
187
- return api(t(ctx), "PATCH", `/pages/${input.pageId}`, { archived: true });
174
+ return api(ctx, "PATCH", `pages/${pathSegment(input.pageId)}`, { archived: true });
188
175
  },
189
176
  });
190
177
  rl.registerAction("page.search", {
@@ -201,7 +188,7 @@ export default function notion(rl) {
201
188
  body.query = p.query;
202
189
  if (p.limit)
203
190
  body.page_size = p.limit;
204
- const data = (await api(t(ctx), "POST", "/search", body));
191
+ const data = (await api(ctx, "POST", "search", body));
205
192
  return data.results;
206
193
  },
207
194
  });
@@ -211,7 +198,7 @@ export default function notion(rl) {
211
198
  description: "Get a user",
212
199
  inputSchema: { userId: { type: "string", required: true } },
213
200
  async execute(input, ctx) {
214
- return api(t(ctx), "GET", `/users/${input.userId}`);
201
+ return api(ctx, "GET", `users/${pathSegment(input.userId)}`);
215
202
  },
216
203
  });
217
204
  rl.registerAction("user.list", {
@@ -222,7 +209,7 @@ export default function notion(rl) {
222
209
  const qs = {};
223
210
  if (input?.limit)
224
211
  qs.page_size = input.limit;
225
- const data = (await api(t(ctx), "GET", "/users", undefined, qs));
212
+ const data = (await api(ctx, "GET", "users", undefined, qs));
226
213
  return data.results;
227
214
  },
228
215
  });
@@ -231,7 +218,7 @@ export default function notion(rl) {
231
218
  description: "Get the bot user",
232
219
  inputSchema: {},
233
220
  async execute(_input, ctx) {
234
- return api(t(ctx), "GET", "/users/me");
221
+ return api(ctx, "GET", "users/me");
235
222
  },
236
223
  });
237
224
  }
@@ -0,0 +1,19 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An optional access token, sent as a bearer to the registry; without one,
4
+ * public reads go unsigned. The registry URL is public config and must be
5
+ * HTTPS. A scoped package name travels as one encoded segment.
6
+ */
7
+ export const npmCredential = staticCredential({
8
+ id: "npm",
9
+ auth: { kind: "bearer" },
10
+ local: { secret: "token" },
11
+ optional: true,
12
+ targets: (config) => ({
13
+ registry: {
14
+ baseUrl: httpsBase(config.registryUrl ?? "https://registry.npmjs.org", ""),
15
+ methods: ["GET", "PUT"],
16
+ encodedSlashes: true,
17
+ },
18
+ }),
19
+ });