runline 0.32.0 → 0.34.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 (521) 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 +9 -0
  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 +179 -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 +167 -10
  15. package/dist/index.d.ts +5 -5
  16. package/dist/index.js +2 -2
  17. package/dist/plugin/api.d.ts +7 -0
  18. package/dist/plugin/api.js +7 -0
  19. package/dist/plugin/types.d.ts +12 -0
  20. package/dist/plugins/_shared/credentialAdapter.js +79 -15
  21. package/dist/plugins/_shared/credentials.js +389 -0
  22. package/dist/plugins/_shared/googleAuth.js +9 -40
  23. package/dist/plugins/_shared/googleCredentials.js +28 -7
  24. package/dist/plugins/_shared/microsoftAuth.js +13 -44
  25. package/dist/plugins/_shared/microsoftCredentials.js +30 -8
  26. package/dist/plugins/_shared/provider.js +2 -14
  27. package/dist/plugins/_shared/shiftCloud.js +22 -34
  28. package/dist/plugins/_shared/shiftCredentials.js +83 -0
  29. package/dist/plugins/_shared/shiftUpload.js +1 -1
  30. package/dist/plugins/actionNetwork/src/credentials.js +14 -0
  31. package/dist/plugins/actionNetwork/src/index.js +39 -50
  32. package/dist/plugins/activeCampaign/src/credentials.js +22 -0
  33. package/dist/plugins/activeCampaign/src/index.js +61 -132
  34. package/dist/plugins/adalo/src/credentials.js +16 -0
  35. package/dist/plugins/adalo/src/index.js +19 -43
  36. package/dist/plugins/affinity/src/credentials.js +19 -0
  37. package/dist/plugins/affinity/src/index.js +29 -54
  38. package/dist/plugins/agileCrm/src/credentials.js +16 -0
  39. package/dist/plugins/agileCrm/src/index.js +46 -112
  40. package/dist/plugins/airtable/src/credentials.js +19 -0
  41. package/dist/plugins/airtable/src/index.js +37 -50
  42. package/dist/plugins/airtop/src/credentials.js +20 -0
  43. package/dist/plugins/airtop/src/index.js +51 -75
  44. package/dist/plugins/apiTemplateIo/src/credentials.js +19 -0
  45. package/dist/plugins/apiTemplateIo/src/index.js +14 -31
  46. package/dist/plugins/asana/src/credentials.js +19 -0
  47. package/dist/plugins/asana/src/index.js +51 -72
  48. package/dist/plugins/autopilot/src/credentials.js +19 -0
  49. package/dist/plugins/autopilot/src/index.js +38 -45
  50. package/dist/plugins/bambooHr/src/credentials.js +16 -0
  51. package/dist/plugins/bambooHr/src/index.js +41 -67
  52. package/dist/plugins/bannerbear/src/credentials.js +19 -0
  53. package/dist/plugins/bannerbear/src/index.js +15 -27
  54. package/dist/plugins/baserow/src/credentials.js +17 -0
  55. package/dist/plugins/baserow/src/index.js +23 -49
  56. package/dist/plugins/beeminder/src/credentials.js +19 -0
  57. package/dist/plugins/beeminder/src/index.js +32 -54
  58. package/dist/plugins/bitly/src/credentials.js +19 -0
  59. package/dist/plugins/bitly/src/index.js +12 -26
  60. package/dist/plugins/bitwarden/src/credentials.js +62 -0
  61. package/dist/plugins/bitwarden/src/index.js +34 -80
  62. package/dist/plugins/box/src/credentials.js +19 -0
  63. package/dist/plugins/box/src/index.js +24 -49
  64. package/dist/plugins/brandfetch/src/credentials.js +13 -0
  65. package/dist/plugins/brandfetch/src/index.js +12 -17
  66. package/dist/plugins/brevo/src/credentials.js +19 -0
  67. package/dist/plugins/brevo/src/index.js +30 -51
  68. package/dist/plugins/bubble/src/credentials.js +28 -0
  69. package/dist/plugins/bubble/src/index.js +29 -65
  70. package/dist/plugins/chargebee/src/credentials.js +16 -0
  71. package/dist/plugins/chargebee/src/index.js +15 -45
  72. package/dist/plugins/circleci/src/credentials.js +19 -0
  73. package/dist/plugins/circleci/src/index.js +19 -39
  74. package/dist/plugins/ciscoWebex/src/credentials.js +19 -0
  75. package/dist/plugins/ciscoWebex/src/index.js +43 -61
  76. package/dist/plugins/clearbit/src/credentials.js +22 -0
  77. package/dist/plugins/clearbit/src/index.js +11 -21
  78. package/dist/plugins/clickup/src/credentials.js +19 -0
  79. package/dist/plugins/clickup/src/index.js +85 -117
  80. package/dist/plugins/clockify/src/credentials.js +19 -0
  81. package/dist/plugins/clockify/src/index.js +46 -61
  82. package/dist/plugins/cloudflare/src/credentials.js +19 -0
  83. package/dist/plugins/cloudflare/src/index.js +19 -34
  84. package/dist/plugins/cockpit/src/credentials.js +17 -0
  85. package/dist/plugins/cockpit/src/index.js +18 -31
  86. package/dist/plugins/coda/src/credentials.js +19 -0
  87. package/dist/plugins/coda/src/index.js +33 -50
  88. package/dist/plugins/coingecko/src/credentials.js +20 -0
  89. package/dist/plugins/coingecko/src/index.js +24 -34
  90. package/dist/plugins/contentful/src/credentials.js +26 -0
  91. package/dist/plugins/contentful/src/index.js +19 -40
  92. package/dist/plugins/convertkit/src/credentials.js +26 -0
  93. package/dist/plugins/convertkit/src/index.js +27 -45
  94. package/dist/plugins/copper/src/credentials.js +17 -0
  95. package/dist/plugins/copper/src/index.js +25 -47
  96. package/dist/plugins/cortex/src/credentials.js +28 -0
  97. package/dist/plugins/cortex/src/index.js +26 -49
  98. package/dist/plugins/currents/src/credentials.js +19 -0
  99. package/dist/plugins/currents/src/index.js +46 -59
  100. package/dist/plugins/customerIo/src/credentials.js +52 -0
  101. package/dist/plugins/customerIo/src/index.js +30 -58
  102. package/dist/plugins/databricks/src/credentials.js +13 -0
  103. package/dist/plugins/databricks/src/index.js +51 -103
  104. package/dist/plugins/deepl/src/credentials.js +19 -0
  105. package/dist/plugins/deepl/src/index.js +13 -39
  106. package/dist/plugins/demio/src/credentials.js +26 -0
  107. package/dist/plugins/demio/src/index.js +17 -41
  108. package/dist/plugins/dhl/src/credentials.js +13 -0
  109. package/dist/plugins/dhl/src/index.js +8 -19
  110. package/dist/plugins/discord/src/credentials.js +19 -0
  111. package/dist/plugins/discord/src/index.js +30 -58
  112. package/dist/plugins/discourse/src/credentials.js +18 -0
  113. package/dist/plugins/discourse/src/index.js +36 -53
  114. package/dist/plugins/disqus/src/credentials.js +13 -0
  115. package/dist/plugins/disqus/src/index.js +14 -32
  116. package/dist/plugins/drift/src/credentials.js +13 -0
  117. package/dist/plugins/drift/src/index.js +16 -26
  118. package/dist/plugins/dropbox/src/credentials.js +13 -0
  119. package/dist/plugins/dropbox/src/index.js +23 -30
  120. package/dist/plugins/dropcontact/src/credentials.js +13 -0
  121. package/dist/plugins/dropcontact/src/index.js +13 -18
  122. package/dist/plugins/egoi/src/credentials.js +19 -0
  123. package/dist/plugins/egoi/src/index.js +23 -38
  124. package/dist/plugins/elasticsearch/src/credentials.js +18 -0
  125. package/dist/plugins/elasticsearch/src/index.js +27 -48
  126. package/dist/plugins/elevenlabs/src/credentials.js +30 -0
  127. package/dist/plugins/elevenlabs/src/index.js +4 -1
  128. package/dist/plugins/elevenlabs/src/schemas.js +2 -1
  129. package/dist/plugins/elevenlabs/src/shared.js +74 -35
  130. package/dist/plugins/elevenlabs/src/workflows.js +2 -2
  131. package/dist/plugins/emelia/src/credentials.js +14 -0
  132. package/dist/plugins/emelia/src/index.js +19 -23
  133. package/dist/plugins/erpnext/src/credentials.js +27 -0
  134. package/dist/plugins/erpnext/src/index.js +21 -42
  135. package/dist/plugins/facebookGraph/src/credentials.js +20 -0
  136. package/dist/plugins/facebookGraph/src/index.js +39 -37
  137. package/dist/plugins/fal/src/credentials.js +14 -0
  138. package/dist/plugins/fal/src/index.js +4 -2
  139. package/dist/plugins/fal/src/shared.js +58 -63
  140. package/dist/plugins/freshdesk/src/credentials.js +20 -0
  141. package/dist/plugins/freshdesk/src/index.js +25 -46
  142. package/dist/plugins/freshservice/src/credentials.js +16 -0
  143. package/dist/plugins/freshservice/src/index.js +37 -58
  144. package/dist/plugins/freshworksCrm/src/credentials.js +16 -0
  145. package/dist/plugins/freshworksCrm/src/index.js +20 -39
  146. package/dist/plugins/getresponse/src/credentials.js +22 -0
  147. package/dist/plugins/getresponse/src/index.js +20 -32
  148. package/dist/plugins/gett/src/credentials.js +64 -0
  149. package/dist/plugins/gett/src/index.js +11 -6
  150. package/dist/plugins/gett/src/login.js +24 -0
  151. package/dist/plugins/gett/src/session.js +15 -38
  152. package/dist/plugins/gett/src/shared.js +41 -84
  153. package/dist/plugins/ghost/src/credentials.js +36 -0
  154. package/dist/plugins/ghost/src/index.js +18 -59
  155. package/dist/plugins/github/src/credentials.js +18 -0
  156. package/dist/plugins/github/src/index.js +55 -78
  157. package/dist/plugins/gitlab/src/credentials.js +24 -0
  158. package/dist/plugins/gitlab/src/index.js +29 -48
  159. package/dist/plugins/gmail/src/index.js +26 -24
  160. package/dist/plugins/gong/src/credentials.js +16 -0
  161. package/dist/plugins/gong/src/index.js +16 -32
  162. package/dist/plugins/googleAppsScript/src/index.js +108 -42
  163. package/dist/plugins/googleCalendar/src/index.js +15 -13
  164. package/dist/plugins/googleContacts/src/index.js +12 -9
  165. package/dist/plugins/googleDocs/src/index.js +2 -0
  166. package/dist/plugins/googleDocs/src/shared.js +2 -1
  167. package/dist/plugins/googleDrive/src/index.js +50 -53
  168. package/dist/plugins/googleImage/src/credentials.js +14 -0
  169. package/dist/plugins/googleImage/src/index.js +14 -25
  170. package/dist/plugins/googleSheets/src/index.js +26 -27
  171. package/dist/plugins/googleSlides/src/index.js +6 -4
  172. package/dist/plugins/googleTasks/src/index.js +13 -11
  173. package/dist/plugins/gotify/src/credentials.js +32 -0
  174. package/dist/plugins/gotify/src/index.js +14 -36
  175. package/dist/plugins/gotowebinar/src/credentials.js +13 -0
  176. package/dist/plugins/gotowebinar/src/index.js +52 -69
  177. package/dist/plugins/grafana/src/credentials.js +16 -0
  178. package/dist/plugins/grafana/src/index.js +34 -53
  179. package/dist/plugins/graphql/src/credentials.js +42 -0
  180. package/dist/plugins/graphql/src/index.js +21 -46
  181. package/dist/plugins/grist/src/credentials.js +30 -0
  182. package/dist/plugins/grist/src/index.js +14 -43
  183. package/dist/plugins/halopsa/src/credentials.js +56 -0
  184. package/dist/plugins/halopsa/src/index.js +20 -47
  185. package/dist/plugins/harvest/src/credentials.js +20 -0
  186. package/dist/plugins/harvest/src/index.js +24 -43
  187. package/dist/plugins/helpscout/src/credentials.js +13 -0
  188. package/dist/plugins/helpscout/src/index.js +26 -38
  189. package/dist/plugins/highlevel/src/credentials.js +19 -0
  190. package/dist/plugins/highlevel/src/index.js +34 -63
  191. package/dist/plugins/homeAssistant/src/credentials.js +27 -0
  192. package/dist/plugins/homeAssistant/src/index.js +34 -52
  193. package/dist/plugins/hubspot/src/credentials.js +16 -0
  194. package/dist/plugins/hubspot/src/index.js +29 -41
  195. package/dist/plugins/humanticAi/src/credentials.js +13 -0
  196. package/dist/plugins/humanticAi/src/index.js +15 -22
  197. package/dist/plugins/hunter/src/credentials.js +13 -0
  198. package/dist/plugins/hunter/src/index.js +18 -17
  199. package/dist/plugins/intercom/src/credentials.js +19 -0
  200. package/dist/plugins/intercom/src/index.js +25 -38
  201. package/dist/plugins/iterable/src/credentials.js +17 -0
  202. package/dist/plugins/iterable/src/index.js +26 -40
  203. package/dist/plugins/jenkins/src/credentials.js +16 -0
  204. package/dist/plugins/jenkins/src/index.js +22 -36
  205. package/dist/plugins/jira/src/credentials.js +16 -0
  206. package/dist/plugins/jira/src/index.js +35 -61
  207. package/dist/plugins/keap/src/credentials.js +19 -0
  208. package/dist/plugins/keap/src/index.js +43 -71
  209. package/dist/plugins/kobotoolbox/src/credentials.js +13 -0
  210. package/dist/plugins/kobotoolbox/src/index.js +46 -84
  211. package/dist/plugins/lemlist/src/credentials.js +19 -0
  212. package/dist/plugins/lemlist/src/index.js +35 -47
  213. package/dist/plugins/linear/src/attachments.js +7 -7
  214. package/dist/plugins/linear/src/comments.js +7 -7
  215. package/dist/plugins/linear/src/credentials.js +17 -0
  216. package/dist/plugins/linear/src/cycles.js +5 -5
  217. package/dist/plugins/linear/src/index.js +2 -0
  218. package/dist/plugins/linear/src/initiatives.js +6 -6
  219. package/dist/plugins/linear/src/issues.js +14 -14
  220. package/dist/plugins/linear/src/labels.js +6 -6
  221. package/dist/plugins/linear/src/organization.js +2 -2
  222. package/dist/plugins/linear/src/projects.js +12 -12
  223. package/dist/plugins/linear/src/shared.js +34 -32
  224. package/dist/plugins/linear/src/states.js +3 -3
  225. package/dist/plugins/linear/src/teams.js +4 -4
  226. package/dist/plugins/linear/src/users.js +3 -3
  227. package/dist/plugins/linear/src/views.js +5 -5
  228. package/dist/plugins/linear/src/webhooks.js +5 -5
  229. package/dist/plugins/lingvanex/src/credentials.js +13 -0
  230. package/dist/plugins/lingvanex/src/index.js +7 -9
  231. package/dist/plugins/linkedin/src/credentials.js +17 -0
  232. package/dist/plugins/linkedin/src/index.js +13 -17
  233. package/dist/plugins/lonescale/src/credentials.js +13 -0
  234. package/dist/plugins/lonescale/src/index.js +16 -26
  235. package/dist/plugins/magento/src/credentials.js +16 -0
  236. package/dist/plugins/magento/src/index.js +67 -84
  237. package/dist/plugins/mailcheck/src/credentials.js +17 -0
  238. package/dist/plugins/mailcheck/src/index.js +7 -9
  239. package/dist/plugins/mailchimp/src/credentials.js +32 -0
  240. package/dist/plugins/mailchimp/src/index.js +36 -44
  241. package/dist/plugins/mailerlite/src/credentials.js +13 -0
  242. package/dist/plugins/mailerlite/src/index.js +19 -32
  243. package/dist/plugins/mailgun/src/credentials.js +21 -0
  244. package/dist/plugins/mailgun/src/index.js +15 -21
  245. package/dist/plugins/mailjet/src/credentials.js +38 -0
  246. package/dist/plugins/mailjet/src/index.js +60 -115
  247. package/dist/plugins/mandrill/src/credentials.js +17 -0
  248. package/dist/plugins/mandrill/src/index.js +11 -12
  249. package/dist/plugins/marketstack/src/credentials.js +16 -0
  250. package/dist/plugins/marketstack/src/index.js +18 -28
  251. package/dist/plugins/matrix/src/credentials.js +19 -0
  252. package/dist/plugins/matrix/src/index.js +23 -52
  253. package/dist/plugins/mattermost/src/credentials.js +19 -0
  254. package/dist/plugins/mattermost/src/index.js +41 -73
  255. package/dist/plugins/mautic/src/credentials.js +16 -0
  256. package/dist/plugins/mautic/src/index.js +46 -62
  257. package/dist/plugins/medium/src/credentials.js +20 -0
  258. package/dist/plugins/medium/src/index.js +18 -23
  259. package/dist/plugins/messagebird/src/credentials.js +22 -0
  260. package/dist/plugins/messagebird/src/index.js +13 -18
  261. package/dist/plugins/metabase/src/credentials.js +19 -0
  262. package/dist/plugins/metabase/src/index.js +24 -40
  263. package/dist/plugins/microsoftCalendar/src/index.js +48 -12
  264. package/dist/plugins/microsoftFiles/src/index.js +90 -25
  265. package/dist/plugins/microsoftMail/src/index.js +62 -15
  266. package/dist/plugins/misp/src/credentials.js +16 -0
  267. package/dist/plugins/misp/src/index.js +60 -71
  268. package/dist/plugins/mocean/src/credentials.js +17 -0
  269. package/dist/plugins/mocean/src/index.js +11 -23
  270. package/dist/plugins/monday/src/credentials.js +14 -0
  271. package/dist/plugins/monday/src/index.js +31 -44
  272. package/dist/plugins/monicaCrm/src/credentials.js +19 -0
  273. package/dist/plugins/monicaCrm/src/index.js +25 -42
  274. package/dist/plugins/msg91/src/credentials.js +10 -0
  275. package/dist/plugins/msg91/src/index.js +15 -11
  276. package/dist/plugins/nasa/src/credentials.js +22 -0
  277. package/dist/plugins/nasa/src/index.js +24 -28
  278. package/dist/plugins/netlify/src/credentials.js +19 -0
  279. package/dist/plugins/netlify/src/index.js +27 -51
  280. package/dist/plugins/netscalerAdc/src/credentials.js +18 -0
  281. package/dist/plugins/netscalerAdc/src/index.js +16 -31
  282. package/dist/plugins/nextcloud/src/credentials.js +27 -0
  283. package/dist/plugins/nextcloud/src/index.js +55 -109
  284. package/dist/plugins/nocodb/src/credentials.js +16 -0
  285. package/dist/plugins/nocodb/src/index.js +19 -37
  286. package/dist/plugins/notion/src/credentials.js +21 -0
  287. package/dist/plugins/notion/src/index.js +25 -38
  288. package/dist/plugins/npm/src/credentials.js +19 -0
  289. package/dist/plugins/npm/src/index.js +22 -32
  290. package/dist/plugins/odoo/src/credentials.js +21 -0
  291. package/dist/plugins/odoo/src/index.js +53 -69
  292. package/dist/plugins/okta/src/credentials.js +23 -0
  293. package/dist/plugins/okta/src/index.js +30 -35
  294. package/dist/plugins/oneSimpleApi/src/credentials.js +16 -0
  295. package/dist/plugins/oneSimpleApi/src/index.js +19 -24
  296. package/dist/plugins/onfleet/src/credentials.js +23 -0
  297. package/dist/plugins/onfleet/src/index.js +42 -53
  298. package/dist/plugins/openai/src/credentials.js +13 -0
  299. package/dist/plugins/openai/src/index.js +15 -23
  300. package/dist/plugins/openweathermap/src/credentials.js +16 -0
  301. package/dist/plugins/openweathermap/src/index.js +22 -22
  302. package/dist/plugins/oura/src/credentials.js +19 -0
  303. package/dist/plugins/oura/src/index.js +13 -18
  304. package/dist/plugins/paddle/src/credentials.js +27 -0
  305. package/dist/plugins/paddle/src/index.js +20 -36
  306. package/dist/plugins/pagerduty/src/credentials.js +24 -0
  307. package/dist/plugins/pagerduty/src/index.js +30 -39
  308. package/dist/plugins/parallel/src/credentials.js +18 -0
  309. package/dist/plugins/parallel/src/index.js +16 -22
  310. package/dist/plugins/paypal/src/credentials.js +44 -0
  311. package/dist/plugins/paypal/src/index.js +14 -40
  312. package/dist/plugins/peekalink/src/credentials.js +16 -0
  313. package/dist/plugins/peekalink/src/index.js +10 -11
  314. package/dist/plugins/phantombuster/src/credentials.js +19 -0
  315. package/dist/plugins/phantombuster/src/index.js +19 -32
  316. package/dist/plugins/philipsHue/src/credentials.js +17 -0
  317. package/dist/plugins/philipsHue/src/index.js +15 -27
  318. package/dist/plugins/pipedrive/src/credentials.js +26 -0
  319. package/dist/plugins/pipedrive/src/index.js +43 -73
  320. package/dist/plugins/plaud/src/index.js +2 -1
  321. package/dist/plugins/plaud/src/shared.js +23 -19
  322. package/dist/plugins/plivo/src/credentials.js +20 -0
  323. package/dist/plugins/plivo/src/index.js +13 -19
  324. package/dist/plugins/posthog/src/credentials.js +18 -0
  325. package/dist/plugins/posthog/src/index.js +14 -20
  326. package/dist/plugins/profitwell/src/credentials.js +22 -0
  327. package/dist/plugins/profitwell/src/index.js +10 -17
  328. package/dist/plugins/pushbullet/src/credentials.js +19 -0
  329. package/dist/plugins/pushbullet/src/index.js +19 -27
  330. package/dist/plugins/pushcut/src/credentials.js +19 -0
  331. package/dist/plugins/pushcut/src/index.js +7 -8
  332. package/dist/plugins/pushover/src/credentials.js +14 -0
  333. package/dist/plugins/pushover/src/index.js +7 -12
  334. package/dist/plugins/quickbase/src/credentials.js +15 -0
  335. package/dist/plugins/quickbase/src/index.js +24 -34
  336. package/dist/plugins/quickbooks/src/credentials.js +22 -0
  337. package/dist/plugins/quickbooks/src/index.js +17 -46
  338. package/dist/plugins/raindrop/src/credentials.js +19 -0
  339. package/dist/plugins/raindrop/src/index.js +30 -32
  340. package/dist/plugins/recraft/src/credentials.js +13 -0
  341. package/dist/plugins/recraft/src/index.js +38 -27
  342. package/dist/plugins/reddit/src/credentials.js +26 -0
  343. package/dist/plugins/reddit/src/index.js +30 -34
  344. package/dist/plugins/replicate/src/credentials.js +23 -0
  345. package/dist/plugins/replicate/src/index.js +17 -27
  346. package/dist/plugins/rocketchat/src/credentials.js +17 -0
  347. package/dist/plugins/rocketchat/src/index.js +8 -19
  348. package/dist/plugins/rundeck/src/credentials.js +16 -0
  349. package/dist/plugins/rundeck/src/index.js +12 -28
  350. package/dist/plugins/salesforce/src/credentials.js +73 -0
  351. package/dist/plugins/salesforce/src/index.js +6 -0
  352. package/dist/plugins/salesforce/src/metadata.js +3 -16
  353. package/dist/plugins/salesforce/src/shared.js +25 -100
  354. package/dist/plugins/salesforce/src/sobjects.js +10 -9
  355. package/dist/plugins/salesmate/src/credentials.js +17 -0
  356. package/dist/plugins/salesmate/src/index.js +20 -37
  357. package/dist/plugins/securityScorecard/src/credentials.js +22 -0
  358. package/dist/plugins/securityScorecard/src/index.js +24 -37
  359. package/dist/plugins/segment/src/credentials.js +16 -0
  360. package/dist/plugins/segment/src/index.js +12 -16
  361. package/dist/plugins/sendgrid/src/credentials.js +13 -0
  362. package/dist/plugins/sendgrid/src/index.js +31 -35
  363. package/dist/plugins/sendy/src/credentials.js +18 -0
  364. package/dist/plugins/sendy/src/index.js +18 -24
  365. package/dist/plugins/sentry/src/credentials.js +16 -0
  366. package/dist/plugins/sentry/src/index.js +30 -98
  367. package/dist/plugins/servicenow/src/credentials.js +13 -0
  368. package/dist/plugins/servicenow/src/index.js +22 -41
  369. package/dist/plugins/shiftAtlas/src/graph.js +2 -2
  370. package/dist/plugins/shiftAtlas/src/index.js +2 -0
  371. package/dist/plugins/shiftAtlas/src/shared.js +3 -1
  372. package/dist/plugins/shiftBwm/src/collections.js +201 -0
  373. package/dist/plugins/shiftBwm/src/index.js +35 -0
  374. package/dist/plugins/shiftBwm/src/records.js +180 -0
  375. package/dist/plugins/shiftBwm/src/shared.js +168 -0
  376. package/dist/plugins/shiftBwm/src/vendor/client.js +227 -0
  377. package/dist/plugins/shiftBwm/src/vendor/contracts.js +59 -0
  378. package/dist/plugins/shiftBwm/src/vendor/models.js +525 -0
  379. package/dist/plugins/shiftCrm/src/access.js +2 -2
  380. package/dist/plugins/shiftCrm/src/accounts.js +3 -3
  381. package/dist/plugins/shiftCrm/src/activities.js +3 -3
  382. package/dist/plugins/shiftCrm/src/credentials.js +6 -0
  383. package/dist/plugins/shiftCrm/src/index.js +2 -0
  384. package/dist/plugins/shiftCrm/src/opportunities.js +3 -3
  385. package/dist/plugins/shiftCrm/src/people.js +3 -3
  386. package/dist/plugins/shiftCrm/src/records.js +2 -2
  387. package/dist/plugins/shiftCrm/src/shared.js +2 -1
  388. package/dist/plugins/shiftCrm/src/tasks.js +3 -3
  389. package/dist/plugins/shiftObjects/src/credentials.js +2 -0
  390. package/dist/plugins/shiftObjects/src/index.js +2 -0
  391. package/dist/plugins/shiftObjects/src/objects.js +3 -3
  392. package/dist/plugins/shiftOcr/src/credentials.js +8 -0
  393. package/dist/plugins/shiftOcr/src/index.js +5 -2
  394. package/dist/plugins/shiftPages/src/index.js +2 -0
  395. package/dist/plugins/shiftPages/src/pages.js +5 -3
  396. package/dist/plugins/shiftPages/src/shared.js +3 -1
  397. package/dist/plugins/shiftTranscription/src/index.js +2 -0
  398. package/dist/plugins/shiftTranscription/src/shared.js +11 -1
  399. package/dist/plugins/shiftTranscription/src/transcription.js +3 -2
  400. package/dist/plugins/shiftWork/src/index.js +2 -0
  401. package/dist/plugins/shiftWork/src/issue-views.js +5 -5
  402. package/dist/plugins/shiftWork/src/issues.js +11 -7
  403. package/dist/plugins/shiftWork/src/projects.js +3 -3
  404. package/dist/plugins/shiftWork/src/shared.js +3 -1
  405. package/dist/plugins/shopify/src/credentials.js +16 -0
  406. package/dist/plugins/shopify/src/index.js +32 -59
  407. package/dist/plugins/signl4/src/credentials.js +17 -0
  408. package/dist/plugins/signl4/src/index.js +28 -29
  409. package/dist/plugins/slack/src/credentials.js +19 -0
  410. package/dist/plugins/slack/src/index.js +51 -60
  411. package/dist/plugins/sms77/src/credentials.js +17 -0
  412. package/dist/plugins/sms77/src/index.js +11 -16
  413. package/dist/plugins/splunk/src/credentials.js +19 -0
  414. package/dist/plugins/splunk/src/index.js +32 -74
  415. package/dist/plugins/spotify/src/credentials.js +19 -0
  416. package/dist/plugins/spotify/src/index.js +40 -55
  417. package/dist/plugins/stackby/src/credentials.js +13 -0
  418. package/dist/plugins/stackby/src/index.js +14 -23
  419. package/dist/plugins/steel/src/auth.js +27 -0
  420. package/dist/plugins/steel/src/browser.js +4 -3
  421. package/dist/plugins/steel/src/captchas.js +4 -3
  422. package/dist/plugins/steel/src/extensions.js +3 -2
  423. package/dist/plugins/steel/src/files.js +9 -10
  424. package/dist/plugins/steel/src/index.js +2 -0
  425. package/dist/plugins/steel/src/page/tools.js +3 -3
  426. package/dist/plugins/steel/src/profiles.js +4 -3
  427. package/dist/plugins/steel/src/sessions.js +13 -13
  428. package/dist/plugins/steel/src/shared.js +21 -51
  429. package/dist/plugins/storyblok/src/credentials.js +37 -0
  430. package/dist/plugins/storyblok/src/index.js +22 -66
  431. package/dist/plugins/strapi/src/credentials.js +71 -0
  432. package/dist/plugins/strapi/src/index.js +36 -70
  433. package/dist/plugins/strava/src/credentials.js +19 -0
  434. package/dist/plugins/strava/src/index.js +16 -33
  435. package/dist/plugins/stripe/src/credentials.js +19 -0
  436. package/dist/plugins/stripe/src/index.js +44 -58
  437. package/dist/plugins/supabase/src/credentials.js +30 -0
  438. package/dist/plugins/supabase/src/index.js +18 -40
  439. package/dist/plugins/syncromsp/src/credentials.js +16 -0
  440. package/dist/plugins/syncromsp/src/index.js +37 -70
  441. package/dist/plugins/tapfiliate/src/credentials.js +13 -0
  442. package/dist/plugins/tapfiliate/src/index.js +21 -31
  443. package/dist/plugins/telegram/src/credentials.js +20 -0
  444. package/dist/plugins/telegram/src/index.js +31 -39
  445. package/dist/plugins/thehive/src/credentials.js +14 -0
  446. package/dist/plugins/thehive/src/index.js +33 -50
  447. package/dist/plugins/thehiveProject/src/credentials.js +16 -0
  448. package/dist/plugins/thehiveProject/src/index.js +53 -122
  449. package/dist/plugins/todoist/src/credentials.js +26 -0
  450. package/dist/plugins/todoist/src/index.js +49 -79
  451. package/dist/plugins/together/src/credentials.js +16 -0
  452. package/dist/plugins/together/src/index.js +30 -32
  453. package/dist/plugins/travisci/src/credentials.js +24 -0
  454. package/dist/plugins/travisci/src/index.js +16 -30
  455. package/dist/plugins/trello/src/credentials.js +29 -0
  456. package/dist/plugins/trello/src/index.js +49 -64
  457. package/dist/plugins/twake/src/credentials.js +16 -0
  458. package/dist/plugins/twake/src/index.js +8 -10
  459. package/dist/plugins/twilio/src/credentials.js +23 -0
  460. package/dist/plugins/twilio/src/index.js +12 -26
  461. package/dist/plugins/twist/src/credentials.js +13 -0
  462. package/dist/plugins/twist/src/index.js +32 -44
  463. package/dist/plugins/twitter/src/credentials.js +16 -0
  464. package/dist/plugins/twitter/src/index.js +25 -37
  465. package/dist/plugins/typesafe/src/credentials.js +28 -0
  466. package/dist/plugins/typesafe/src/index.js +3 -1
  467. package/dist/plugins/typesafe/src/shared.js +23 -35
  468. package/dist/plugins/unleashedSoftware/src/credentials.js +21 -0
  469. package/dist/plugins/unleashedSoftware/src/index.js +13 -37
  470. package/dist/plugins/uplead/src/credentials.js +16 -0
  471. package/dist/plugins/uplead/src/index.js +11 -16
  472. package/dist/plugins/uproc/src/credentials.js +14 -0
  473. package/dist/plugins/uproc/src/index.js +7 -10
  474. package/dist/plugins/uptimerobot/src/credentials.js +14 -0
  475. package/dist/plugins/uptimerobot/src/index.js +28 -39
  476. package/dist/plugins/urlscanio/src/credentials.js +13 -0
  477. package/dist/plugins/urlscanio/src/index.js +13 -22
  478. package/dist/plugins/vercel/src/credentials.js +19 -0
  479. package/dist/plugins/vercel/src/deployments.js +27 -11
  480. package/dist/plugins/vercel/src/env.js +31 -12
  481. package/dist/plugins/vercel/src/index.js +2 -0
  482. package/dist/plugins/vercel/src/projects.js +6 -3
  483. package/dist/plugins/vercel/src/shared.js +32 -37
  484. package/dist/plugins/vero/src/credentials.js +17 -0
  485. package/dist/plugins/vero/src/index.js +18 -21
  486. package/dist/plugins/vonage/src/credentials.js +17 -0
  487. package/dist/plugins/vonage/src/index.js +14 -18
  488. package/dist/plugins/wekan/src/credentials.js +16 -0
  489. package/dist/plugins/wekan/src/index.js +33 -46
  490. package/dist/plugins/wolt/src/account.js +6 -0
  491. package/dist/plugins/wolt/src/catalog.js +2 -2
  492. package/dist/plugins/wolt/src/credentials.js +64 -0
  493. package/dist/plugins/wolt/src/index.js +8 -3
  494. package/dist/plugins/wolt/src/orders.js +2 -2
  495. package/dist/plugins/wolt/src/public.js +91 -0
  496. package/dist/plugins/wolt/src/shared.js +49 -158
  497. package/dist/plugins/woocommerce/src/credentials.js +16 -0
  498. package/dist/plugins/woocommerce/src/index.js +19 -37
  499. package/dist/plugins/wordpress/src/credentials.js +16 -0
  500. package/dist/plugins/wordpress/src/index.js +23 -42
  501. package/dist/plugins/xai/src/credentials.js +13 -0
  502. package/dist/plugins/xai/src/index.js +31 -30
  503. package/dist/plugins/xero/src/credentials.js +17 -0
  504. package/dist/plugins/xero/src/index.js +19 -36
  505. package/dist/plugins/yourls/src/credentials.js +17 -0
  506. package/dist/plugins/yourls/src/index.js +13 -23
  507. package/dist/plugins/zammad/src/credentials.js +15 -0
  508. package/dist/plugins/zammad/src/index.js +27 -47
  509. package/dist/plugins/zendesk/src/credentials.js +26 -0
  510. package/dist/plugins/zendesk/src/index.js +29 -48
  511. package/dist/plugins/zoho/src/credentials.js +17 -0
  512. package/dist/plugins/zoho/src/index.js +18 -38
  513. package/dist/plugins/zoom/src/credentials.js +19 -0
  514. package/dist/plugins/zoom/src/index.js +15 -30
  515. package/dist/plugins/zulip/src/credentials.js +16 -0
  516. package/dist/plugins/zulip/src/index.js +36 -42
  517. package/dist/sdk.d.ts +8 -0
  518. package/dist/sdk.js +3 -0
  519. package/package.json +3 -2
  520. package/dist/plugins/_shared/authedFetch.js +0 -33
  521. package/dist/plugins/_shared/tokenRefresh.js +0 -41
@@ -1,47 +1,24 @@
1
- function getConn(ctx) {
2
- const c = ctx.connection.config;
3
- return {
4
- contentToken: c.contentToken,
5
- managementToken: c.managementToken,
6
- };
7
- }
8
- async function contentApi(token, endpoint, qs) {
9
- const url = new URL(`https://api.storyblok.com${endpoint}`);
10
- url.searchParams.set("token", token);
11
- if (qs) {
12
- for (const [k, v] of Object.entries(qs)) {
13
- if (v !== undefined && v !== null)
14
- url.searchParams.set(k, String(v));
15
- }
16
- }
17
- const res = await fetch(url.toString());
18
- if (!res.ok)
19
- throw new Error(`Storyblok Content API error ${res.status}: ${await res.text()}`);
20
- return res.json();
1
+ import { credentialJson, pathSegment, pathSegments, } from "../../_shared/credentials.js";
2
+ import { storyblokCredential } from "./credentials.js";
3
+ function contentApi(ctx, path, query) {
4
+ return credentialJson(ctx, storyblokCredential, "storyblok", {
5
+ target: "content",
6
+ path,
7
+ query,
8
+ });
21
9
  }
22
- async function managementApi(token, method, endpoint, body, qs) {
23
- const url = new URL(`https://mapi.storyblok.com${endpoint}`);
24
- if (qs) {
25
- for (const [k, v] of Object.entries(qs)) {
26
- if (v !== undefined && v !== null)
27
- url.searchParams.set(k, String(v));
28
- }
29
- }
30
- const init = {
10
+ function managementApi(ctx, method, path, query) {
11
+ return credentialJson(ctx, storyblokCredential, "storyblok", {
12
+ target: "management",
13
+ path,
31
14
  method,
32
- headers: { Authorization: token, "Content-Type": "application/json" },
33
- };
34
- if (body && Object.keys(body).length > 0)
35
- init.body = JSON.stringify(body);
36
- const res = await fetch(url.toString(), init);
37
- if (!res.ok)
38
- throw new Error(`Storyblok Management API error ${res.status}: ${await res.text()}`);
39
- const text = await res.text();
40
- return text ? JSON.parse(text) : {};
15
+ query,
16
+ });
41
17
  }
42
18
  export default function storyblok(rl) {
43
19
  rl.setName("storyblok");
44
20
  rl.setVersion("0.1.0");
21
+ rl.setCredential(storyblokCredential);
45
22
  rl.setConnectionSchema({
46
23
  contentToken: {
47
24
  type: "string",
@@ -68,10 +45,7 @@ export default function storyblok(rl) {
68
45
  },
69
46
  },
70
47
  async execute(input, ctx) {
71
- const conn = getConn(ctx);
72
- if (!conn.contentToken)
73
- throw new Error("contentToken required for Content API");
74
- const data = (await contentApi(conn.contentToken, `/v1/cdn/stories/${input.identifier}`));
48
+ const data = (await contentApi(ctx, `stories/${pathSegments(input.identifier)}`));
75
49
  return data.story;
76
50
  },
77
51
  });
@@ -87,16 +61,13 @@ export default function storyblok(rl) {
87
61
  },
88
62
  },
89
63
  async execute(input, ctx) {
90
- const conn = getConn(ctx);
91
- if (!conn.contentToken)
92
- throw new Error("contentToken required for Content API");
93
64
  const p = (input ?? {});
94
65
  const qs = {};
95
66
  if (p.limit)
96
67
  qs.per_page = p.limit;
97
68
  if (p.startsWith)
98
69
  qs.starts_with = p.startsWith;
99
- const data = (await contentApi(conn.contentToken, "/v1/cdn/stories", qs));
70
+ const data = (await contentApi(ctx, "stories", qs));
100
71
  return data.stories;
101
72
  },
102
73
  });
@@ -109,11 +80,8 @@ export default function storyblok(rl) {
109
80
  storyId: { type: "string", required: true },
110
81
  },
111
82
  async execute(input, ctx) {
112
- const conn = getConn(ctx);
113
- if (!conn.managementToken)
114
- throw new Error("managementToken required for Management API");
115
83
  const p = input;
116
- const data = (await managementApi(conn.managementToken, "GET", `/v1/spaces/${p.spaceId}/stories/${p.storyId}`));
84
+ const data = (await managementApi(ctx, "GET", `${pathSegment(p.spaceId)}/stories/${pathSegment(p.storyId)}`));
117
85
  return data.story;
118
86
  },
119
87
  });
@@ -125,14 +93,11 @@ export default function storyblok(rl) {
125
93
  limit: { type: "number", required: false },
126
94
  },
127
95
  async execute(input, ctx) {
128
- const conn = getConn(ctx);
129
- if (!conn.managementToken)
130
- throw new Error("managementToken required for Management API");
131
96
  const p = (input ?? {});
132
97
  const qs = {};
133
98
  if (p.limit)
134
99
  qs.per_page = p.limit;
135
- const data = (await managementApi(conn.managementToken, "GET", `/v1/spaces/${p.spaceId}/stories`, undefined, qs));
100
+ const data = (await managementApi(ctx, "GET", `${pathSegment(p.spaceId)}/stories`, qs));
136
101
  return data.stories;
137
102
  },
138
103
  });
@@ -144,11 +109,8 @@ export default function storyblok(rl) {
144
109
  storyId: { type: "string", required: true },
145
110
  },
146
111
  async execute(input, ctx) {
147
- const conn = getConn(ctx);
148
- if (!conn.managementToken)
149
- throw new Error("managementToken required for Management API");
150
112
  const p = input;
151
- const data = (await managementApi(conn.managementToken, "DELETE", `/v1/spaces/${p.spaceId}/stories/${p.storyId}`));
113
+ const data = (await managementApi(ctx, "DELETE", `${pathSegment(p.spaceId)}/stories/${pathSegment(p.storyId)}`));
152
114
  return data.story;
153
115
  },
154
116
  });
@@ -162,16 +124,13 @@ export default function storyblok(rl) {
162
124
  language: { type: "string", required: false },
163
125
  },
164
126
  async execute(input, ctx) {
165
- const conn = getConn(ctx);
166
- if (!conn.managementToken)
167
- throw new Error("managementToken required for Management API");
168
127
  const p = input;
169
128
  const qs = {};
170
129
  if (p.releaseId)
171
130
  qs.release_id = p.releaseId;
172
131
  if (p.language)
173
132
  qs.lang = p.language;
174
- const data = (await managementApi(conn.managementToken, "GET", `/v1/spaces/${p.spaceId}/stories/${p.storyId}/publish`, undefined, qs));
133
+ const data = (await managementApi(ctx, "GET", `${pathSegment(p.spaceId)}/stories/${pathSegment(p.storyId)}/publish`, qs));
175
134
  return data.story;
176
135
  },
177
136
  });
@@ -183,11 +142,8 @@ export default function storyblok(rl) {
183
142
  storyId: { type: "string", required: true },
184
143
  },
185
144
  async execute(input, ctx) {
186
- const conn = getConn(ctx);
187
- if (!conn.managementToken)
188
- throw new Error("managementToken required for Management API");
189
145
  const p = input;
190
- const data = (await managementApi(conn.managementToken, "GET", `/v1/spaces/${p.spaceId}/stories/${p.storyId}/unpublish`));
146
+ const data = (await managementApi(ctx, "GET", `${pathSegment(p.spaceId)}/stories/${pathSegment(p.storyId)}/unpublish`));
191
147
  return data.story;
192
148
  },
193
149
  });
@@ -0,0 +1,71 @@
1
+ import { configChoice, grantSchema, httpsBase, staticCredential, } from "../../_shared/credentials.js";
2
+ /** The Strapi major version the connection names, v4 when absent. */
3
+ export function strapiVersion(config) {
4
+ return configChoice(config.apiVersion, ["v4", "v3"], "v4");
5
+ }
6
+ /** The content API beneath the instance: `api/` on v4, the root on v3. */
7
+ function apiBase(config) {
8
+ const prefix = strapiVersion(config) === "v4" ? "api/" : "";
9
+ return {
10
+ prefix,
11
+ target: {
12
+ baseUrl: httpsBase(config.url, prefix),
13
+ methods: ["GET", "POST", "PUT", "DELETE"],
14
+ },
15
+ };
16
+ }
17
+ const apiToken = staticCredential({
18
+ id: "strapi",
19
+ auth: { kind: "bearer" },
20
+ local: { secret: "apiToken" },
21
+ targets: (config) => ({ api: apiBase(config).target }),
22
+ });
23
+ /**
24
+ * An API token as a bearer, or a user's email and password, logged in at
25
+ * the instance's /auth/local for a JWT the transport stores and signs
26
+ * with, logging in again when Strapi rejects it. `authMethod` picks one;
27
+ * without it, a connection holding a token uses the token and one naming
28
+ * an email logs in. The instance URL is public config and must be HTTPS.
29
+ */
30
+ export const strapiCredential = (config) => {
31
+ const token = apiToken(config);
32
+ const method = configChoice(config.authMethod ??
33
+ (config.apiToken ? "apiToken" : config.email ? "password" : "apiToken"), ["apiToken", "password"], "apiToken");
34
+ const { prefix, target } = apiBase(config);
35
+ const type = {
36
+ id: "strapi",
37
+ methods: {
38
+ ...token.type.methods,
39
+ password: {
40
+ schema: grantSchema,
41
+ authentication: {
42
+ kind: "oauth2",
43
+ field: "grant",
44
+ renewal: "password",
45
+ definition: {
46
+ id: "strapi.login",
47
+ provider: "strapi",
48
+ password: {
49
+ url: httpsBase(config.url, `${prefix}auth/local`),
50
+ clientAuthentication: "none",
51
+ encoding: "json",
52
+ grantType: null,
53
+ fields: { username: "identifier" },
54
+ response: { accessToken: "jwt" },
55
+ },
56
+ },
57
+ },
58
+ targets: { api: target },
59
+ },
60
+ },
61
+ };
62
+ if (method === "apiToken")
63
+ return { ...token, type };
64
+ return {
65
+ type,
66
+ method: "password",
67
+ ...(typeof config.email === "string" && typeof config.password === "string"
68
+ ? { resourceOwner: { username: config.email, password: config.password } }
69
+ : {}),
70
+ };
71
+ };
@@ -1,64 +1,29 @@
1
- function getConn(ctx) {
2
- const c = ctx.connection.config;
3
- return {
4
- url: c.url.replace(/\/$/, ""),
5
- apiVersion: c.apiVersion || "v4",
6
- apiToken: c.apiToken,
7
- email: c.email,
8
- password: c.password,
9
- };
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { strapiCredential, strapiVersion } from "./credentials.js";
3
+ /** Whether the connection speaks Strapi v4, whose answers wrap entries in `data`. */
4
+ function isV4(ctx) {
5
+ return strapiVersion(ctx.connection.config) === "v4";
10
6
  }
11
- let cachedJwt;
12
- async function getJwt(conn) {
13
- if (cachedJwt && cachedJwt.url === conn.url && Date.now() < cachedJwt.expiry)
14
- return cachedJwt.token;
15
- const authPath = conn.apiVersion === "v4" ? "/api/auth/local" : "/auth/local";
16
- const res = await fetch(`${conn.url}${authPath}`, {
17
- method: "POST",
18
- headers: { "Content-Type": "application/json" },
19
- body: JSON.stringify({ identifier: conn.email, password: conn.password }),
7
+ /** A content API call; GET and DELETE carry no body. */
8
+ function apiRequest(ctx, method, path, body, query) {
9
+ return credentialJson(ctx, strapiCredential, "strapi", {
10
+ target: "api",
11
+ path,
12
+ method,
13
+ query,
14
+ ...(body && method !== "GET" && method !== "DELETE" ? { json: body } : {}),
20
15
  });
21
- if (!res.ok)
22
- throw new Error(`Strapi auth error ${res.status}: ${await res.text()}`);
23
- const data = (await res.json());
24
- const jwt = data.jwt;
25
- cachedJwt = { token: jwt, url: conn.url, expiry: Date.now() + 3600_000 };
26
- return jwt;
27
16
  }
28
- async function apiRequest(conn, method, endpoint, body, qs) {
29
- let token;
30
- if (conn.apiToken) {
31
- token = conn.apiToken;
32
- }
33
- else {
34
- token = await getJwt(conn);
35
- }
36
- const prefix = conn.apiVersion === "v4" ? "/api" : "";
37
- const url = new URL(`${conn.url}${prefix}${endpoint}`);
38
- if (qs) {
39
- for (const [k, v] of Object.entries(qs)) {
40
- if (v !== undefined && v !== null)
41
- url.searchParams.set(k, String(v));
42
- }
43
- }
44
- const init = {
45
- method,
46
- headers: {
47
- Authorization: `Bearer ${token}`,
48
- "Content-Type": "application/json",
49
- },
50
- };
51
- if (body && Object.keys(body).length > 0)
52
- init.body = JSON.stringify(body);
53
- const res = await fetch(url.toString(), init);
54
- if (!res.ok)
55
- throw new Error(`Strapi error ${res.status}: ${await res.text()}`);
56
- const text = await res.text();
57
- return text ? JSON.parse(text) : {};
17
+ /** An entry, or a content type's collection, as a path beneath the API. */
18
+ function entryPath(contentType, entryId) {
19
+ return entryId === undefined
20
+ ? pathSegment(contentType)
21
+ : `${pathSegment(contentType)}/${pathSegment(entryId)}`;
58
22
  }
59
23
  export default function strapi(rl) {
60
24
  rl.setName("strapi");
61
25
  rl.setVersion("0.1.0");
26
+ rl.setCredential(strapiCredential);
62
27
  rl.setConnectionSchema({
63
28
  url: {
64
29
  type: "string",
@@ -72,6 +37,12 @@ export default function strapi(rl) {
72
37
  description: "v3 or v4 (default: v4)",
73
38
  env: "STRAPI_API_VERSION",
74
39
  },
40
+ authMethod: {
41
+ type: "string",
42
+ required: false,
43
+ description: "apiToken or password (inferred from which credential the connection holds)",
44
+ env: "STRAPI_AUTH_METHOD",
45
+ },
75
46
  apiToken: {
76
47
  type: "string",
77
48
  required: false,
@@ -103,12 +74,11 @@ export default function strapi(rl) {
103
74
  data: { type: "object", required: true, description: "Entry fields" },
104
75
  },
105
76
  async execute(input, ctx) {
106
- const conn = getConn(ctx);
107
77
  const p = input;
108
- const body = conn.apiVersion === "v4"
78
+ const body = isV4(ctx)
109
79
  ? { data: p.data }
110
80
  : p.data;
111
- return apiRequest(conn, "POST", `/${p.contentType}`, body);
81
+ return apiRequest(ctx, "POST", entryPath(p.contentType), body);
112
82
  },
113
83
  });
114
84
  rl.registerAction("entry.get", {
@@ -119,10 +89,9 @@ export default function strapi(rl) {
119
89
  entryId: { type: "string", required: true },
120
90
  },
121
91
  async execute(input, ctx) {
122
- const conn = getConn(ctx);
123
92
  const p = input;
124
- const data = (await apiRequest(conn, "GET", `/${p.contentType}/${p.entryId}`));
125
- return conn.apiVersion === "v4" ? data.data : data;
93
+ const data = (await apiRequest(ctx, "GET", entryPath(p.contentType, p.entryId)));
94
+ return isV4(ctx) ? data.data : data;
126
95
  },
127
96
  });
128
97
  rl.registerAction("entry.list", {
@@ -148,10 +117,9 @@ export default function strapi(rl) {
148
117
  },
149
118
  },
150
119
  async execute(input, ctx) {
151
- const conn = getConn(ctx);
152
120
  const p = (input ?? {});
153
121
  const qs = {};
154
- if (conn.apiVersion === "v4") {
122
+ if (isV4(ctx)) {
155
123
  if (p.limit)
156
124
  qs["pagination[pageSize]"] = p.limit;
157
125
  if (p.sort)
@@ -160,7 +128,7 @@ export default function strapi(rl) {
160
128
  qs.filters = p.filters;
161
129
  if (p.publicationState)
162
130
  qs.publicationState = p.publicationState;
163
- const data = (await apiRequest(conn, "GET", `/${p.contentType}`, undefined, qs));
131
+ const data = (await apiRequest(ctx, "GET", entryPath(p.contentType), undefined, qs));
164
132
  return data.data;
165
133
  }
166
134
  if (p.limit)
@@ -171,7 +139,7 @@ export default function strapi(rl) {
171
139
  qs._where = p.filters;
172
140
  if (p.publicationState)
173
141
  qs._publicationState = p.publicationState;
174
- return apiRequest(conn, "GET", `/${p.contentType}`, undefined, qs);
142
+ return apiRequest(ctx, "GET", entryPath(p.contentType), undefined, qs);
175
143
  },
176
144
  });
177
145
  rl.registerAction("entry.update", {
@@ -183,13 +151,12 @@ export default function strapi(rl) {
183
151
  data: { type: "object", required: true, description: "Fields to update" },
184
152
  },
185
153
  async execute(input, ctx) {
186
- const conn = getConn(ctx);
187
154
  const p = input;
188
- const body = conn.apiVersion === "v4"
155
+ const body = isV4(ctx)
189
156
  ? { data: p.data }
190
157
  : p.data;
191
- const result = (await apiRequest(conn, "PUT", `/${p.contentType}/${p.entryId}`, body));
192
- return conn.apiVersion === "v4" ? result.data : result;
158
+ const result = (await apiRequest(ctx, "PUT", entryPath(p.contentType, p.entryId), body));
159
+ return isV4(ctx) ? result.data : result;
193
160
  },
194
161
  });
195
162
  rl.registerAction("entry.delete", {
@@ -200,9 +167,8 @@ export default function strapi(rl) {
200
167
  entryId: { type: "string", required: true },
201
168
  },
202
169
  async execute(input, ctx) {
203
- const conn = getConn(ctx);
204
170
  const p = input;
205
- return apiRequest(conn, "DELETE", `/${p.contentType}/${p.entryId}`);
171
+ return apiRequest(ctx, "DELETE", entryPath(p.contentType, p.entryId));
206
172
  },
207
173
  });
208
174
  }
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** An OAuth2 access token, sent as a bearer to Strava's one API origin. */
3
+ export const stravaCredential = staticCredential({
4
+ id: "strava",
5
+ auth: { kind: "bearer" },
6
+ local: { secret: "accessToken" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://www.strava.com/api/v3/",
10
+ methods: ["GET", "POST", "PUT"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "athlete",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });
@@ -1,34 +1,18 @@
1
- const BASE = "https://www.strava.com/api/v3";
2
- async function apiRequest(token, method, endpoint, body, qs) {
3
- const url = new URL(`${BASE}${endpoint}`);
4
- if (qs) {
5
- for (const [k, v] of Object.entries(qs)) {
6
- if (v !== undefined && v !== null)
7
- url.searchParams.set(k, String(v));
8
- }
9
- }
10
- const init = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { stravaCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body, qs) {
4
+ return credentialJson(ctx, stravaCredential, "strava", {
5
+ target: "api",
6
+ path,
11
7
  method,
12
- headers: { Authorization: `Bearer ${token}` },
13
- };
14
- if (body && Object.keys(body).length > 0) {
15
- const form = new URLSearchParams();
16
- for (const [k, v] of Object.entries(body)) {
17
- if (v !== undefined && v !== null)
18
- form.set(k, String(v));
19
- }
20
- init.body = form;
21
- init.headers["Content-Type"] =
22
- "application/x-www-form-urlencoded";
23
- }
24
- const res = await fetch(url.toString(), init);
25
- if (!res.ok)
26
- throw new Error(`Strava error ${res.status}: ${await res.text()}`);
27
- return res.json();
8
+ query: qs,
9
+ ...(body && Object.keys(body).length > 0 ? { form: body } : {}),
10
+ });
28
11
  }
29
12
  export default function strava(rl) {
30
13
  rl.setName("strava");
31
14
  rl.setVersion("0.1.0");
15
+ rl.setCredential(stravaCredential);
32
16
  rl.setConnectionSchema({
33
17
  accessToken: {
34
18
  type: "string",
@@ -37,7 +21,6 @@ export default function strava(rl) {
37
21
  env: "STRAVA_ACCESS_TOKEN",
38
22
  },
39
23
  });
40
- const key = (ctx) => ctx.connection.config.accessToken;
41
24
  rl.registerAction("activity.create", {
42
25
  access: "write",
43
26
  description: "Create an activity",
@@ -83,7 +66,7 @@ export default function strava(rl) {
83
66
  body.trainer = 1;
84
67
  if (p.commute)
85
68
  body.commute = 1;
86
- return apiRequest(key(ctx), "POST", "/activities", body);
69
+ return apiRequest(ctx, "POST", "activities", body);
87
70
  },
88
71
  });
89
72
  rl.registerAction("activity.get", {
@@ -91,7 +74,7 @@ export default function strava(rl) {
91
74
  description: "Get an activity by ID",
92
75
  inputSchema: { activityId: { type: "string", required: true } },
93
76
  async execute(input, ctx) {
94
- return apiRequest(key(ctx), "GET", `/activities/${input.activityId}`);
77
+ return apiRequest(ctx, "GET", `activities/${pathSegment(input.activityId)}`);
95
78
  },
96
79
  });
97
80
  rl.registerAction("activity.list", {
@@ -102,7 +85,7 @@ export default function strava(rl) {
102
85
  const qs = {};
103
86
  if (input?.limit)
104
87
  qs.per_page = input.limit;
105
- return apiRequest(key(ctx), "GET", "/activities", undefined, qs);
88
+ return apiRequest(ctx, "GET", "activities", undefined, qs);
106
89
  },
107
90
  });
108
91
  rl.registerAction("activity.update", {
@@ -132,7 +115,7 @@ export default function strava(rl) {
132
115
  body.commute = fields.commute;
133
116
  if (fields.gearId)
134
117
  body.gear_id = fields.gearId;
135
- return apiRequest(key(ctx), "PUT", `/activities/${activityId}`, body);
118
+ return apiRequest(ctx, "PUT", `activities/${pathSegment(activityId)}`, body);
136
119
  },
137
120
  });
138
121
  for (const sub of [
@@ -162,7 +145,7 @@ export default function strava(rl) {
162
145
  },
163
146
  async execute(input, ctx) {
164
147
  const p = input;
165
- const data = (await apiRequest(key(ctx), "GET", `/activities/${p.activityId}/${sub.path}`));
148
+ const data = (await apiRequest(ctx, "GET", `activities/${pathSegment(p.activityId)}/${sub.path}`));
166
149
  if (p.limit)
167
150
  return data.slice(0, p.limit);
168
151
  return data;
@@ -182,7 +165,7 @@ export default function strava(rl) {
182
165
  },
183
166
  async execute(input, ctx) {
184
167
  const p = input;
185
- return apiRequest(key(ctx), "GET", `/activities/${p.activityId}/streams`, undefined, { keys: p.keys, key_by_type: "true" });
168
+ return apiRequest(ctx, "GET", `activities/${pathSegment(p.activityId)}/streams`, undefined, { keys: p.keys, key_by_type: "true" });
186
169
  },
187
170
  });
188
171
  }
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** A secret key, sent as a bearer to Stripe's v1 API base. */
3
+ export const stripeCredential = staticCredential({
4
+ id: "stripe",
5
+ auth: { kind: "bearer" },
6
+ local: { secret: "secretKey" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://api.stripe.com/v1/",
10
+ methods: ["GET", "POST", "DELETE"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "balance",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });