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,30 +1,17 @@
1
- function getConn(ctx) {
2
- const c = ctx.connection.config;
3
- return {
4
- url: c.url.replace(/\/$/, ""),
5
- token: c.token,
6
- };
7
- }
8
- async function api(conn, method, endpoint, body) {
9
- const init = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { wekanCredential } from "./credentials.js";
3
+ function api(ctx, method, endpoint, body) {
4
+ return credentialJson(ctx, wekanCredential, "wekan", {
5
+ target: "api",
6
+ path: endpoint,
10
7
  method,
11
- headers: {
12
- Authorization: `Bearer ${conn.token}`,
13
- "Content-Type": "application/json",
14
- Accept: "application/json",
15
- },
16
- };
17
- if (body && Object.keys(body).length > 0)
18
- init.body = JSON.stringify(body);
19
- const res = await fetch(`${conn.url}/api/${endpoint}`, init);
20
- if (!res.ok)
21
- throw new Error(`Wekan error ${res.status}: ${await res.text()}`);
22
- const text = await res.text();
23
- return text ? JSON.parse(text) : {};
8
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
9
+ });
24
10
  }
25
11
  export default function wekan(rl) {
26
12
  rl.setName("wekan");
27
13
  rl.setVersion("0.1.0");
14
+ rl.setCredential(wekanCredential);
28
15
  rl.setConnectionSchema({
29
16
  url: {
30
17
  type: "string",
@@ -48,7 +35,7 @@ export default function wekan(rl) {
48
35
  owner: { type: "string", required: true },
49
36
  },
50
37
  async execute(input, ctx) {
51
- return api(getConn(ctx), "POST", "boards", input);
38
+ return api(ctx, "POST", "boards", input);
52
39
  },
53
40
  });
54
41
  rl.registerAction("board.get", {
@@ -56,7 +43,7 @@ export default function wekan(rl) {
56
43
  description: "Get a board",
57
44
  inputSchema: { boardId: { type: "string", required: true } },
58
45
  async execute(input, ctx) {
59
- return api(getConn(ctx), "GET", `boards/${input.boardId}`);
46
+ return api(ctx, "GET", `boards/${pathSegment(input.boardId)}`);
60
47
  },
61
48
  });
62
49
  rl.registerAction("board.list", {
@@ -68,7 +55,7 @@ export default function wekan(rl) {
68
55
  },
69
56
  async execute(input, ctx) {
70
57
  const p = input;
71
- const data = (await api(getConn(ctx), "GET", `users/${p.userId}/boards`));
58
+ const data = (await api(ctx, "GET", `users/${pathSegment(p.userId)}/boards`));
72
59
  return p.limit ? data.slice(0, p.limit) : data;
73
60
  },
74
61
  });
@@ -77,7 +64,7 @@ export default function wekan(rl) {
77
64
  description: "Delete a board",
78
65
  inputSchema: { boardId: { type: "string", required: true } },
79
66
  async execute(input, ctx) {
80
- return api(getConn(ctx), "DELETE", `boards/${input.boardId}`);
67
+ return api(ctx, "DELETE", `boards/${pathSegment(input.boardId)}`);
81
68
  },
82
69
  });
83
70
  // ── List ────────────────────────────────────────────
@@ -90,7 +77,7 @@ export default function wekan(rl) {
90
77
  },
91
78
  async execute(input, ctx) {
92
79
  const p = input;
93
- return api(getConn(ctx), "POST", `boards/${p.boardId}/lists`, {
80
+ return api(ctx, "POST", `boards/${pathSegment(p.boardId)}/lists`, {
94
81
  title: p.title,
95
82
  });
96
83
  },
@@ -104,7 +91,7 @@ export default function wekan(rl) {
104
91
  },
105
92
  async execute(input, ctx) {
106
93
  const p = input;
107
- return api(getConn(ctx), "GET", `boards/${p.boardId}/lists/${p.listId}`);
94
+ return api(ctx, "GET", `boards/${pathSegment(p.boardId)}/lists/${pathSegment(p.listId)}`);
108
95
  },
109
96
  });
110
97
  rl.registerAction("list.listAll", {
@@ -116,7 +103,7 @@ export default function wekan(rl) {
116
103
  },
117
104
  async execute(input, ctx) {
118
105
  const p = input;
119
- const data = (await api(getConn(ctx), "GET", `boards/${p.boardId}/lists`));
106
+ const data = (await api(ctx, "GET", `boards/${pathSegment(p.boardId)}/lists`));
120
107
  return p.limit ? data.slice(0, p.limit) : data;
121
108
  },
122
109
  });
@@ -129,7 +116,7 @@ export default function wekan(rl) {
129
116
  },
130
117
  async execute(input, ctx) {
131
118
  const p = input;
132
- return api(getConn(ctx), "DELETE", `boards/${p.boardId}/lists/${p.listId}`);
119
+ return api(ctx, "DELETE", `boards/${pathSegment(p.boardId)}/lists/${pathSegment(p.listId)}`);
133
120
  },
134
121
  });
135
122
  // ── Card ────────────────────────────────────────────
@@ -146,7 +133,7 @@ export default function wekan(rl) {
146
133
  },
147
134
  async execute(input, ctx) {
148
135
  const { boardId, listId, ...body } = input;
149
- return api(getConn(ctx), "POST", `boards/${boardId}/lists/${listId}/cards`, body);
136
+ return api(ctx, "POST", `boards/${pathSegment(boardId)}/lists/${pathSegment(listId)}/cards`, body);
150
137
  },
151
138
  });
152
139
  rl.registerAction("card.get", {
@@ -159,7 +146,7 @@ export default function wekan(rl) {
159
146
  },
160
147
  async execute(input, ctx) {
161
148
  const p = input;
162
- return api(getConn(ctx), "GET", `boards/${p.boardId}/lists/${p.listId}/cards/${p.cardId}`);
149
+ return api(ctx, "GET", `boards/${pathSegment(p.boardId)}/lists/${pathSegment(p.listId)}/cards/${pathSegment(p.cardId)}`);
163
150
  },
164
151
  });
165
152
  rl.registerAction("card.list", {
@@ -172,7 +159,7 @@ export default function wekan(rl) {
172
159
  },
173
160
  async execute(input, ctx) {
174
161
  const p = input;
175
- const data = (await api(getConn(ctx), "GET", `boards/${p.boardId}/lists/${p.listId}/cards`));
162
+ const data = (await api(ctx, "GET", `boards/${pathSegment(p.boardId)}/lists/${pathSegment(p.listId)}/cards`));
176
163
  return p.limit ? data.slice(0, p.limit) : data;
177
164
  },
178
165
  });
@@ -187,7 +174,7 @@ export default function wekan(rl) {
187
174
  },
188
175
  async execute(input, ctx) {
189
176
  const p = input;
190
- return api(getConn(ctx), "PUT", `boards/${p.boardId}/lists/${p.listId}/cards/${p.cardId}`, p.data);
177
+ return api(ctx, "PUT", `boards/${pathSegment(p.boardId)}/lists/${pathSegment(p.listId)}/cards/${pathSegment(p.cardId)}`, p.data);
191
178
  },
192
179
  });
193
180
  rl.registerAction("card.delete", {
@@ -200,7 +187,7 @@ export default function wekan(rl) {
200
187
  },
201
188
  async execute(input, ctx) {
202
189
  const p = input;
203
- return api(getConn(ctx), "DELETE", `boards/${p.boardId}/lists/${p.listId}/cards/${p.cardId}`);
190
+ return api(ctx, "DELETE", `boards/${pathSegment(p.boardId)}/lists/${pathSegment(p.listId)}/cards/${pathSegment(p.cardId)}`);
204
191
  },
205
192
  });
206
193
  // ── Card Comment ────────────────────────────────────
@@ -215,7 +202,7 @@ export default function wekan(rl) {
215
202
  },
216
203
  async execute(input, ctx) {
217
204
  const p = input;
218
- return api(getConn(ctx), "POST", `boards/${p.boardId}/cards/${p.cardId}/comments`, { authorId: p.authorId, comment: p.comment });
205
+ return api(ctx, "POST", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/comments`, { authorId: p.authorId, comment: p.comment });
219
206
  },
220
207
  });
221
208
  rl.registerAction("cardComment.get", {
@@ -228,7 +215,7 @@ export default function wekan(rl) {
228
215
  },
229
216
  async execute(input, ctx) {
230
217
  const p = input;
231
- return api(getConn(ctx), "GET", `boards/${p.boardId}/cards/${p.cardId}/comments/${p.commentId}`);
218
+ return api(ctx, "GET", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/comments/${pathSegment(p.commentId)}`);
232
219
  },
233
220
  });
234
221
  rl.registerAction("cardComment.list", {
@@ -240,7 +227,7 @@ export default function wekan(rl) {
240
227
  },
241
228
  async execute(input, ctx) {
242
229
  const p = input;
243
- return api(getConn(ctx), "GET", `boards/${p.boardId}/cards/${p.cardId}/comments`);
230
+ return api(ctx, "GET", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/comments`);
244
231
  },
245
232
  });
246
233
  rl.registerAction("cardComment.delete", {
@@ -253,7 +240,7 @@ export default function wekan(rl) {
253
240
  },
254
241
  async execute(input, ctx) {
255
242
  const p = input;
256
- return api(getConn(ctx), "DELETE", `boards/${p.boardId}/cards/${p.cardId}/comments/${p.commentId}`);
243
+ return api(ctx, "DELETE", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/comments/${pathSegment(p.commentId)}`);
257
244
  },
258
245
  });
259
246
  // ── Checklist ───────────────────────────────────────
@@ -272,7 +259,7 @@ export default function wekan(rl) {
272
259
  },
273
260
  async execute(input, ctx) {
274
261
  const p = input;
275
- return api(getConn(ctx), "POST", `boards/${p.boardId}/cards/${p.cardId}/checklists`, { title: p.title, items: p.items });
262
+ return api(ctx, "POST", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/checklists`, { title: p.title, items: p.items });
276
263
  },
277
264
  });
278
265
  rl.registerAction("checklist.get", {
@@ -285,7 +272,7 @@ export default function wekan(rl) {
285
272
  },
286
273
  async execute(input, ctx) {
287
274
  const p = input;
288
- return api(getConn(ctx), "GET", `boards/${p.boardId}/cards/${p.cardId}/checklists/${p.checklistId}`);
275
+ return api(ctx, "GET", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/checklists/${pathSegment(p.checklistId)}`);
289
276
  },
290
277
  });
291
278
  rl.registerAction("checklist.list", {
@@ -297,7 +284,7 @@ export default function wekan(rl) {
297
284
  },
298
285
  async execute(input, ctx) {
299
286
  const p = input;
300
- return api(getConn(ctx), "GET", `boards/${p.boardId}/cards/${p.cardId}/checklists`);
287
+ return api(ctx, "GET", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/checklists`);
301
288
  },
302
289
  });
303
290
  rl.registerAction("checklist.delete", {
@@ -310,7 +297,7 @@ export default function wekan(rl) {
310
297
  },
311
298
  async execute(input, ctx) {
312
299
  const p = input;
313
- return api(getConn(ctx), "DELETE", `boards/${p.boardId}/cards/${p.cardId}/checklists/${p.checklistId}`);
300
+ return api(ctx, "DELETE", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/checklists/${pathSegment(p.checklistId)}`);
314
301
  },
315
302
  });
316
303
  // ── Checklist Item ──────────────────────────────────
@@ -325,7 +312,7 @@ export default function wekan(rl) {
325
312
  },
326
313
  async execute(input, ctx) {
327
314
  const p = input;
328
- return api(getConn(ctx), "GET", `boards/${p.boardId}/cards/${p.cardId}/checklists/${p.checklistId}/items/${p.itemId}`);
315
+ return api(ctx, "GET", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/checklists/${pathSegment(p.checklistId)}/items/${pathSegment(p.itemId)}`);
329
316
  },
330
317
  });
331
318
  rl.registerAction("checklistItem.update", {
@@ -340,7 +327,7 @@ export default function wekan(rl) {
340
327
  },
341
328
  async execute(input, ctx) {
342
329
  const p = input;
343
- return api(getConn(ctx), "PUT", `boards/${p.boardId}/cards/${p.cardId}/checklists/${p.checklistId}/items/${p.itemId}`, p.data);
330
+ return api(ctx, "PUT", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/checklists/${pathSegment(p.checklistId)}/items/${pathSegment(p.itemId)}`, p.data);
344
331
  },
345
332
  });
346
333
  rl.registerAction("checklistItem.delete", {
@@ -354,7 +341,7 @@ export default function wekan(rl) {
354
341
  },
355
342
  async execute(input, ctx) {
356
343
  const p = input;
357
- return api(getConn(ctx), "DELETE", `boards/${p.boardId}/cards/${p.cardId}/checklists/${p.checklistId}/items/${p.itemId}`);
344
+ return api(ctx, "DELETE", `boards/${pathSegment(p.boardId)}/cards/${pathSegment(p.cardId)}/checklists/${pathSegment(p.checklistId)}/items/${pathSegment(p.itemId)}`);
358
345
  },
359
346
  });
360
347
  }
@@ -1,3 +1,4 @@
1
+ import { refuseUnderHost } from "../../_shared/credentials.js";
1
2
  import { AUDIENCE, AUTH, arr, authed, CAPABILITIES, CONSUMER, cfgOf, clientHeaders, ensureIdentity, expiresAt, formEncode, http, normPhone, obj, pick, RESTAURANT, WoltError, } from "./shared.js";
2
3
  async function authJson(ctx, path, body, extra = {}) {
3
4
  return http(AUTH, path, {
@@ -114,6 +115,7 @@ async function finish(ctx, grant) {
114
115
  };
115
116
  }
116
117
  export async function redeemLink(ctx, link) {
118
+ refuseUnderHost(ctx);
117
119
  await ensureIdentity(ctx);
118
120
  const cfg = cfgOf(ctx);
119
121
  const token = linkToken(link);
@@ -134,6 +136,7 @@ export async function redeemLink(ctx, link) {
134
136
  }
135
137
  }
136
138
  export async function requestEmailCode(ctx, email, captcha) {
139
+ refuseUnderHost(ctx);
137
140
  await ensureIdentity(ctx);
138
141
  await ctx.updateConnection({ pendingEmail: email, pendingPhone: undefined });
139
142
  const r = await authJson(ctx, "/v3/users/email_login", { email, audience: AUDIENCE, email_code_support: true }, captchaHeader(captcha));
@@ -171,6 +174,7 @@ export async function loginMethods(ctx, phone) {
171
174
  return { phone: normalized, methods };
172
175
  }
173
176
  export async function requestSmsCode(ctx, input) {
177
+ refuseUnderHost(ctx);
174
178
  await ensureIdentity(ctx);
175
179
  const normalized = normPhone(input.phone);
176
180
  await ctx.updateConnection({ pendingPhone: normalized });
@@ -224,6 +228,7 @@ export async function requestSmsCode(ctx, input) {
224
228
  * error keeps its body privately.
225
229
  */
226
230
  export async function submitCode(ctx, code) {
231
+ refuseUnderHost(ctx);
227
232
  const cfg = cfgOf(ctx);
228
233
  if (!cfg.pendingEmail && !cfg.pendingPhone)
229
234
  throw new Error("wolt: no login in progress — run account.requestEmailCode or account.requestSmsCode first");
@@ -299,6 +304,7 @@ async function startEmailConfirmation(ctx, token, context) {
299
304
  };
300
305
  }
301
306
  export async function submitConfirmation(ctx, code) {
307
+ refuseUnderHost(ctx);
302
308
  const cfg = cfgOf(ctx);
303
309
  if (!cfg.pendingConfirmationToken)
304
310
  throw new Error("wolt: no confirmation in progress — account.submitCode reports when one is needed");
@@ -50,7 +50,7 @@ export async function nearby(lat, lon, limit, openOnly) {
50
50
  /** A venue's static page plus its live status; the live half is best-effort. */
51
51
  export async function venue(slug, lat, lon) {
52
52
  const params = new URLSearchParams({ lat: String(lat), lon: String(lon) });
53
- const name = seg(slug, "slug");
53
+ const name = seg(slug);
54
54
  const [staticPage, dynamic] = await Promise.all([
55
55
  http(CONSUMER, `/order-xp/web/v1/pages/venue/slug/${name}/static?${params}`),
56
56
  http(CONSUMER, `/order-xp/web/v1/venue/slug/${name}/dynamic/?selected_delivery_method=homedelivery`).catch(() => null),
@@ -77,7 +77,7 @@ export async function venue(slug, lat, lon) {
77
77
  }
78
78
  export async function assortment(slug, language = "en") {
79
79
  const params = new URLSearchParams({ language });
80
- return http(CONSUMER, `/consumer-api/consumer-assortment/v1/venues/slug/${seg(slug, "slug")}/assortment?${params}`);
80
+ return http(CONSUMER, `/consumer-api/consumer-assortment/v1/venues/slug/${seg(slug)}/assortment?${params}`);
81
81
  }
82
82
  function optionGroupOf(raw, definitions) {
83
83
  const group = obj(raw);
@@ -0,0 +1,64 @@
1
+ import { grantSchema } from "../../_shared/credentials.js";
2
+ export const RESTAURANT = "restaurant-api.wolt.com";
3
+ export const CONSUMER = "consumer-api.wolt.com";
4
+ export const AUTH = "authentication.wolt.com";
5
+ /** Mobile client headers; the authed endpoints reject anything that is not the app. */
6
+ const MOBILE = {
7
+ "app-language": "en",
8
+ "app-locale": "en-US",
9
+ "client-version": "26.30.4",
10
+ clientversionnumber: "142026304",
11
+ platform: "Android",
12
+ "user-agent": "Wolt/26.30.4; Build/142026304; Android/16; Google sdk_gphone",
13
+ };
14
+ /** Headers every authenticated or login call carries: the app, and this device's session. */
15
+ export function clientHeaders(config) {
16
+ return {
17
+ ...MOBILE,
18
+ "w-wolt-session-id": String(config.woltSessionId ?? ""),
19
+ "x-wolt-visitor-id": String(config.visitorId ?? ""),
20
+ };
21
+ }
22
+ /**
23
+ * The owner's Wolt session: a refresh token, renewed at Wolt's token
24
+ * endpoint as the mobile app does it — its headers, and the device token
25
+ * the session is bound to — into access tokens that sign the restaurant
26
+ * and consumer APIs. Wolt rotates the refresh token on every grant. The
27
+ * device identifiers are public config; the owner login seeds the grant.
28
+ */
29
+ export const woltCredential = (config) => {
30
+ const headers = clientHeaders(config);
31
+ const api = (host) => ({
32
+ baseUrl: `https://${host}/`,
33
+ methods: ["GET", "POST", "PUT"],
34
+ allowedHeaders: Object.keys(headers),
35
+ maxResponseBytes: 8 * 1024 * 1024,
36
+ });
37
+ return {
38
+ type: {
39
+ id: "wolt",
40
+ methods: {
41
+ oauth2: {
42
+ schema: grantSchema,
43
+ authentication: {
44
+ kind: "oauth2",
45
+ field: "grant",
46
+ renewal: "refresh",
47
+ definition: {
48
+ id: "wolt.oauth2",
49
+ provider: "wolt",
50
+ refresh: {
51
+ url: `https://${AUTH}/v1/wauth2/access_token`,
52
+ clientAuthentication: "none",
53
+ headers,
54
+ parameters: { device_token: String(config.deviceToken ?? "") },
55
+ },
56
+ },
57
+ },
58
+ targets: { restaurant: api(RESTAURANT), consumer: api(CONSUMER) },
59
+ },
60
+ },
61
+ },
62
+ method: "oauth2",
63
+ };
64
+ };
@@ -1,8 +1,10 @@
1
1
  import * as t from "typebox";
2
+ import { refuseUnderHost } from "../../_shared/credentials.js";
2
3
  import { discoverPaymentMethod, listAddresses, loginMethods, redeemLink, requestEmailCode, requestSmsCode, status, submitCode, submitConfirmation, whoami, } from "./account.js";
3
4
  import { item, menu, nearby, search, venue } from "./catalog.js";
5
+ import { woltCredential } from "./credentials.js";
4
6
  import { cancelOrder, estimate, orderStatus, planOrder, previewOf, purchase, quoteFor, } from "./orders.js";
5
- import { accessToken, cfgOf, DEF_LAT, DEF_LON, num, } from "./shared.js";
7
+ import { authed, cfgOf, DEF_LAT, DEF_LON, num, RESTAURANT, } from "./shared.js";
6
8
  /**
7
9
  * wolt — Wolt (food and grocery delivery, Israel and global) consumer connector.
8
10
  *
@@ -101,6 +103,7 @@ function coords(input, ctx) {
101
103
  export default function wolt(rl) {
102
104
  rl.setName("wolt");
103
105
  rl.setVersion("0.1.0");
106
+ rl.setCredential(woltCredential);
104
107
  rl.setConnectionSchema(t.Object({
105
108
  refreshToken: t.Optional(t.String({
106
109
  env: "WOLT_REFRESH_TOKEN",
@@ -354,10 +357,12 @@ export default function wolt(rl) {
354
357
  });
355
358
  rl.registerAction("account.refresh", {
356
359
  access: "write",
357
- description: "Force a token refresh. Wolt rotates its refresh token on every grant, so an untouched session eventually lapses; a recurring 'call wolt.account.refresh()' every ~12h keeps it alive. Also the cheapest proof that stored credentials still work.",
360
+ description: "Force a token refresh and prove it on a live call. Wolt rotates its refresh token on every grant, so an untouched session eventually lapses; a recurring 'call wolt.account.refresh()' every ~12h keeps it alive. Runs where the grant lives: locally, not under a host that keeps it.",
358
361
  inputSchema: t.Object({}, STRICT),
359
362
  async execute(_input, ctx) {
360
- await accessToken(ctx, true);
363
+ refuseUnderHost(ctx);
364
+ await ctx.updateConnection({ accessTokenExpiresAt: 1 });
365
+ await authed(ctx, RESTAURANT, "/v1/user/me");
361
366
  const cfg = cfgOf(ctx);
362
367
  return {
363
368
  refreshed: true,
@@ -299,7 +299,7 @@ export async function purchase(ctx, plan) {
299
299
  return { order_id: orderId };
300
300
  }
301
301
  export async function orderStatus(ctx, orderId) {
302
- const id = seg(orderId, "order_id");
302
+ const id = seg(orderId);
303
303
  const [tracking, page] = await Promise.all([
304
304
  authed(ctx, RESTAURANT, `/v2/order_details/purchase_tracking/${id}`),
305
305
  authed(ctx, CONSUMER, `/order-xp/v1/pages/order-tracking/${id}`).catch(() => null),
@@ -323,7 +323,7 @@ export async function orderStatus(ctx, orderId) {
323
323
  };
324
324
  }
325
325
  export async function cancelOrder(ctx, orderId, reason) {
326
- const id = seg(orderId, "order_id");
326
+ const id = seg(orderId);
327
327
  try {
328
328
  await authed(ctx, RESTAURANT, `/v2/purchases/${id}/cancel`, {
329
329
  method: "PUT",
@@ -0,0 +1,91 @@
1
+ import { obj, readBounded } from "../../_shared/provider.js";
2
+ /**
3
+ * The requests that carry no stored credential: anonymous catalogue reads,
4
+ * sent as the web app, and the owner login's steps, whose inputs come from
5
+ * the person logging in. Everything signed goes through `authed` instead.
6
+ */
7
+ const MAX_RESPONSE_BYTES = 8 * 1024 * 1024;
8
+ const WEB_UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36";
9
+ const WEB = {
10
+ "user-agent": WEB_UA,
11
+ "accept-language": "en",
12
+ "app-language": "en",
13
+ platform: "Web",
14
+ "client-version": "1.16.125",
15
+ origin: "https://wolt.com",
16
+ referer: "https://wolt.com/",
17
+ };
18
+ /**
19
+ * A failed request.
20
+ *
21
+ * The body stays private. Wolt puts meaningful data in its 4xx bodies — the
22
+ * login escalation token, `error_code` — so the login flow needs to read it,
23
+ * but those same bodies carry access and refresh tokens. `details()` is the
24
+ * only way in, and the message never contains any of it.
25
+ */
26
+ export class WoltError extends Error {
27
+ status;
28
+ endpoint;
29
+ #body;
30
+ constructor(status, endpoint, body) {
31
+ const retired = status === 410 ? " (endpoint retired by Wolt)" : "";
32
+ super(`wolt: request failed (HTTP ${status})${retired} on ${endpoint}`);
33
+ this.name = "WoltError";
34
+ this.status = status;
35
+ this.endpoint = endpoint;
36
+ this.#body = body;
37
+ }
38
+ /** The parsed body, for the branches that must read it. Never logged. */
39
+ details() {
40
+ try {
41
+ return obj(JSON.parse(this.#body));
42
+ }
43
+ catch {
44
+ return {};
45
+ }
46
+ }
47
+ }
48
+ export function endpointOf(host, path) {
49
+ return `${host}${path.split("?")[0]}`;
50
+ }
51
+ /**
52
+ * An answer's body as an object. A failure keeps its body privately; Wolt
53
+ * answers 200 with nothing at all on endpoints it has retired.
54
+ */
55
+ export function answerOf(status, endpoint, text) {
56
+ if (status >= 400)
57
+ throw new WoltError(status, endpoint, text);
58
+ if (!text.trim())
59
+ throw new Error(`wolt: ${endpoint} returned an empty body (endpoint retired)`);
60
+ try {
61
+ return obj(JSON.parse(text));
62
+ }
63
+ catch {
64
+ throw new Error(`wolt: non-JSON response from ${endpoint}`);
65
+ }
66
+ }
67
+ /** One unsigned request; redirects are refused, as for every other call. */
68
+ export async function http(host, path, opts = {}) {
69
+ const { method = "GET", body = null, headers = {}, web = true } = opts;
70
+ const payload = body == null
71
+ ? null
72
+ : typeof body === "string"
73
+ ? body
74
+ : JSON.stringify(body);
75
+ const merged = {
76
+ ...(web ? WEB : {}),
77
+ accept: "application/json",
78
+ ...headers,
79
+ };
80
+ if (payload && !merged["content-type"])
81
+ merged["content-type"] = "application/json";
82
+ const endpoint = endpointOf(host, path);
83
+ const res = await fetch(`https://${host}${path}`, {
84
+ method,
85
+ headers: merged,
86
+ body: payload,
87
+ redirect: "error",
88
+ });
89
+ const text = await readBounded(res, MAX_RESPONSE_BYTES, `wolt: response exceeded the size limit on ${endpoint}`);
90
+ return answerOf(res.status, endpoint, text);
91
+ }