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,38 +1,26 @@
1
- const BASE_URL = "https://api.lemlist.com/api";
2
- async function apiRequest(apiKey, method, endpoint, body, qs) {
3
- const url = new URL(`${BASE_URL}${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 opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { lemlistCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body, qs) {
4
+ return credentialJson(ctx, lemlistCredential, "lemlist", {
5
+ target: "api",
6
+ path,
11
7
  method,
12
- headers: {
13
- Authorization: `Basic ${btoa(`:${apiKey}`)}`,
14
- "Content-Type": "application/json",
15
- },
16
- };
17
- if (body &&
18
- Object.keys(body).length > 0 &&
19
- method !== "GET" &&
20
- method !== "DELETE")
21
- opts.body = JSON.stringify(body);
22
- const res = await fetch(url.toString(), opts);
23
- if (!res.ok)
24
- throw new Error(`Lemlist API error ${res.status}: ${await res.text()}`);
25
- if (res.status === 204)
26
- return { success: true };
27
- return res.json();
8
+ query: qs,
9
+ ...(body &&
10
+ Object.keys(body).length > 0 &&
11
+ method !== "GET" &&
12
+ method !== "DELETE"
13
+ ? { json: body }
14
+ : {}),
15
+ });
28
16
  }
29
- async function paginate(apiKey, method, endpoint, qs = {}) {
17
+ async function paginate(ctx, method, path, qs = {}) {
30
18
  const all = [];
31
19
  qs.limit = 100;
32
20
  qs.offset = 0;
33
21
  let data;
34
22
  do {
35
- data = (await apiRequest(apiKey, method, endpoint, undefined, qs));
23
+ data = (await apiRequest(ctx, method, path, undefined, qs));
36
24
  all.push(...data);
37
25
  qs.offset += qs.limit;
38
26
  } while (data.length > 0);
@@ -41,6 +29,7 @@ async function paginate(apiKey, method, endpoint, qs = {}) {
41
29
  export default function lemlist(rl) {
42
30
  rl.setName("lemlist");
43
31
  rl.setVersion("0.1.0");
32
+ rl.setCredential(lemlistCredential);
44
33
  rl.setConnectionSchema({
45
34
  apiKey: {
46
35
  type: "string",
@@ -49,7 +38,6 @@ export default function lemlist(rl) {
49
38
  env: "LEMLIST_API_KEY",
50
39
  },
51
40
  });
52
- const key = (ctx) => ctx.connection.config.apiKey;
53
41
  // ── Activity ────────────────────────────────────────
54
42
  rl.registerAction("activity.list", {
55
43
  access: "read",
@@ -83,9 +71,9 @@ export default function lemlist(rl) {
83
71
  qs.isFirst = p.isFirst;
84
72
  if (p.limit) {
85
73
  qs.limit = p.limit;
86
- return apiRequest(key(ctx), "GET", "/activities", undefined, qs);
74
+ return apiRequest(ctx, "GET", "activities", undefined, qs);
87
75
  }
88
- return paginate(key(ctx), "GET", "/activities", qs);
76
+ return paginate(ctx, "GET", "activities", qs);
89
77
  },
90
78
  });
91
79
  // ── Campaign ────────────────────────────────────────
@@ -98,10 +86,10 @@ export default function lemlist(rl) {
98
86
  async execute(input, ctx) {
99
87
  const p = (input ?? {});
100
88
  if (p.limit)
101
- return apiRequest(key(ctx), "GET", "/campaigns", undefined, {
89
+ return apiRequest(ctx, "GET", "campaigns", undefined, {
102
90
  limit: p.limit,
103
91
  });
104
- return paginate(key(ctx), "GET", "/campaigns");
92
+ return paginate(ctx, "GET", "campaigns");
105
93
  },
106
94
  });
107
95
  rl.registerAction("campaign.getStats", {
@@ -127,7 +115,7 @@ export default function lemlist(rl) {
127
115
  },
128
116
  async execute(input, ctx) {
129
117
  const { campaignId, startDate, endDate, timezone } = input;
130
- return apiRequest(key(ctx), "GET", `/campaigns/${campaignId}/stats`, undefined, { startDate, endDate, timezone });
118
+ return apiRequest(ctx, "GET", `campaigns/${pathSegment(campaignId)}/stats`, undefined, { startDate, endDate, timezone });
131
119
  },
132
120
  });
133
121
  // ── Lead ────────────────────────────────────────────
@@ -165,7 +153,7 @@ export default function lemlist(rl) {
165
153
  const qs = {};
166
154
  if (deduplicate !== undefined)
167
155
  qs.deduplicate = deduplicate;
168
- return apiRequest(key(ctx), "POST", `/campaigns/${campaignId}/leads/${encodeURIComponent(email)}`, body, Object.keys(qs).length > 0 ? qs : undefined);
156
+ return apiRequest(ctx, "POST", `campaigns/${pathSegment(campaignId)}/leads/${pathSegment(email)}`, body, Object.keys(qs).length > 0 ? qs : undefined);
169
157
  },
170
158
  });
171
159
  rl.registerAction("lead.get", {
@@ -173,7 +161,7 @@ export default function lemlist(rl) {
173
161
  description: "Get a lead by email",
174
162
  inputSchema: { email: { type: "string", required: true } },
175
163
  async execute(input, ctx) {
176
- return apiRequest(key(ctx), "GET", `/leads/${encodeURIComponent(input.email)}`);
164
+ return apiRequest(ctx, "GET", `leads/${pathSegment(input.email)}`);
177
165
  },
178
166
  });
179
167
  rl.registerAction("lead.delete", {
@@ -185,7 +173,7 @@ export default function lemlist(rl) {
185
173
  },
186
174
  async execute(input, ctx) {
187
175
  const { campaignId, email } = input;
188
- return apiRequest(key(ctx), "DELETE", `/campaigns/${campaignId}/leads/${encodeURIComponent(email)}`, undefined, { action: "remove" });
176
+ return apiRequest(ctx, "DELETE", `campaigns/${pathSegment(campaignId)}/leads/${pathSegment(email)}`, undefined, { action: "remove" });
189
177
  },
190
178
  });
191
179
  rl.registerAction("lead.unsubscribe", {
@@ -197,7 +185,7 @@ export default function lemlist(rl) {
197
185
  },
198
186
  async execute(input, ctx) {
199
187
  const { campaignId, email } = input;
200
- return apiRequest(key(ctx), "DELETE", `/campaigns/${campaignId}/leads/${encodeURIComponent(email)}`);
188
+ return apiRequest(ctx, "DELETE", `campaigns/${pathSegment(campaignId)}/leads/${pathSegment(email)}`);
201
189
  },
202
190
  });
203
191
  // ── Team ────────────────────────────────────────────
@@ -205,14 +193,14 @@ export default function lemlist(rl) {
205
193
  access: "read",
206
194
  description: "Get team information",
207
195
  async execute(_input, ctx) {
208
- return apiRequest(key(ctx), "GET", "/team");
196
+ return apiRequest(ctx, "GET", "team");
209
197
  },
210
198
  });
211
199
  rl.registerAction("team.getCredits", {
212
200
  access: "read",
213
201
  description: "Get team credits",
214
202
  async execute(_input, ctx) {
215
- return apiRequest(key(ctx), "GET", "/team/credits");
203
+ return apiRequest(ctx, "GET", "team/credits");
216
204
  },
217
205
  });
218
206
  // ── Unsubscribe ─────────────────────────────────────
@@ -221,7 +209,7 @@ export default function lemlist(rl) {
221
209
  description: "Add an email to the unsubscribe list",
222
210
  inputSchema: { email: { type: "string", required: true } },
223
211
  async execute(input, ctx) {
224
- return apiRequest(key(ctx), "POST", `/unsubscribes/${encodeURIComponent(input.email)}`);
212
+ return apiRequest(ctx, "POST", `unsubscribes/${pathSegment(input.email)}`);
225
213
  },
226
214
  });
227
215
  rl.registerAction("unsubscribe.delete", {
@@ -229,7 +217,7 @@ export default function lemlist(rl) {
229
217
  description: "Remove an email from the unsubscribe list",
230
218
  inputSchema: { email: { type: "string", required: true } },
231
219
  async execute(input, ctx) {
232
- return apiRequest(key(ctx), "DELETE", `/unsubscribes/${encodeURIComponent(input.email)}`);
220
+ return apiRequest(ctx, "DELETE", `unsubscribes/${pathSegment(input.email)}`);
233
221
  },
234
222
  });
235
223
  rl.registerAction("unsubscribe.list", {
@@ -239,10 +227,10 @@ export default function lemlist(rl) {
239
227
  async execute(input, ctx) {
240
228
  const p = (input ?? {});
241
229
  if (p.limit)
242
- return apiRequest(key(ctx), "GET", "/unsubscribes", undefined, {
230
+ return apiRequest(ctx, "GET", "unsubscribes", undefined, {
243
231
  limit: p.limit,
244
232
  });
245
- return paginate(key(ctx), "GET", "/unsubscribes");
233
+ return paginate(ctx, "GET", "unsubscribes");
246
234
  },
247
235
  });
248
236
  // ── Enrichment ──────────────────────────────────────
@@ -251,7 +239,7 @@ export default function lemlist(rl) {
251
239
  description: "Get an enrichment result by ID",
252
240
  inputSchema: { enrichId: { type: "string", required: true } },
253
241
  async execute(input, ctx) {
254
- return apiRequest(key(ctx), "GET", `/enrich/${input.enrichId}`);
242
+ return apiRequest(ctx, "GET", `enrich/${pathSegment(input.enrichId)}`);
255
243
  },
256
244
  });
257
245
  rl.registerAction("enrich.lead", {
@@ -266,7 +254,7 @@ export default function lemlist(rl) {
266
254
  },
267
255
  async execute(input, ctx) {
268
256
  const { leadId, findEmail, verifyEmail, linkedinEnrichment, findPhone } = input;
269
- return apiRequest(key(ctx), "POST", `/leads/${leadId}/enrich/`, {}, {
257
+ return apiRequest(ctx, "POST", `leads/${pathSegment(leadId)}/enrich/`, {}, {
270
258
  findEmail,
271
259
  verifyEmail,
272
260
  linkedinEnrichment,
@@ -301,7 +289,7 @@ export default function lemlist(rl) {
301
289
  if (v !== undefined && v !== null)
302
290
  qs[k] = v;
303
291
  }
304
- return apiRequest(key(ctx), "POST", "/enrich/", {}, qs);
292
+ return apiRequest(ctx, "POST", "enrich/", {}, qs);
305
293
  },
306
294
  });
307
295
  }
@@ -1,5 +1,5 @@
1
1
  import * as t from "typebox";
2
- import { ATTACHMENT_FIELDS, assertAttachmentInScope, assertIssueInScope, gql, key, requireUnscoped, withScopedNote, } from "./shared.js";
2
+ import { ATTACHMENT_FIELDS, assertAttachmentInScope, assertIssueInScope, gql, requireUnscoped, withScopedNote, } from "./shared.js";
3
3
  export function registerAttachmentActions(rl) {
4
4
  rl.registerAction("attachment.list", {
5
5
  access: "read",
@@ -8,7 +8,7 @@ export function registerAttachmentActions(rl) {
8
8
  async execute(input, ctx) {
9
9
  requireUnscoped(ctx, "attachment.list");
10
10
  const limit = input?.limit ?? 50;
11
- const data = await gql(key(ctx), `query($first: Int) { attachments(first: $first) { nodes { ${ATTACHMENT_FIELDS} } pageInfo { hasNextPage endCursor } } }`, { first: limit });
11
+ const data = await gql(ctx, `query($first: Int) { attachments(first: $first) { nodes { ${ATTACHMENT_FIELDS} } pageInfo { hasNextPage endCursor } } }`, { first: limit });
12
12
  return data.attachments;
13
13
  },
14
14
  });
@@ -19,7 +19,7 @@ export function registerAttachmentActions(rl) {
19
19
  async execute(input, ctx) {
20
20
  const id = input.id;
21
21
  await assertAttachmentInScope(ctx, id);
22
- const data = await gql(key(ctx), `query($id: String!) { attachment(id: $id) { ${ATTACHMENT_FIELDS} } }`, { id });
22
+ const data = await gql(ctx, `query($id: String!) { attachment(id: $id) { ${ATTACHMENT_FIELDS} } }`, { id });
23
23
  return data.attachment;
24
24
  },
25
25
  });
@@ -52,7 +52,7 @@ export function registerAttachmentActions(rl) {
52
52
  async execute(input, ctx) {
53
53
  const fields = input;
54
54
  await assertIssueInScope(ctx, String(fields.issueId));
55
- const data = await gql(key(ctx), `mutation($input: AttachmentCreateInput!) { attachmentCreate(input: $input) { success attachment { ${ATTACHMENT_FIELDS} } } }`, { input: fields });
55
+ const data = await gql(ctx, `mutation($input: AttachmentCreateInput!) { attachmentCreate(input: $input) { success attachment { ${ATTACHMENT_FIELDS} } } }`, { input: fields });
56
56
  return data.attachmentCreate?.attachment;
57
57
  },
58
58
  });
@@ -73,7 +73,7 @@ export function registerAttachmentActions(rl) {
73
73
  async execute(input, ctx) {
74
74
  const { id, ...fields } = input;
75
75
  await assertAttachmentInScope(ctx, String(id));
76
- const data = await gql(key(ctx), `mutation($id: String!, $input: AttachmentUpdateInput!) { attachmentUpdate(id: $id, input: $input) { success attachment { ${ATTACHMENT_FIELDS} } } }`, { id, input: fields });
76
+ const data = await gql(ctx, `mutation($id: String!, $input: AttachmentUpdateInput!) { attachmentUpdate(id: $id, input: $input) { success attachment { ${ATTACHMENT_FIELDS} } } }`, { id, input: fields });
77
77
  return data.attachmentUpdate?.attachment;
78
78
  },
79
79
  });
@@ -93,7 +93,7 @@ export function registerAttachmentActions(rl) {
93
93
  async execute(input, ctx) {
94
94
  const { issueId, url, title, id } = input;
95
95
  await assertIssueInScope(ctx, String(issueId));
96
- const data = await gql(key(ctx), `mutation($issueId: String!, $url: String!, $title: String, $id: String) {
96
+ const data = await gql(ctx, `mutation($issueId: String!, $url: String!, $title: String, $id: String) {
97
97
  attachmentLinkURL(issueId: $issueId, url: $url, title: $title, id: $id) { success attachment { ${ATTACHMENT_FIELDS} } }
98
98
  }`, { issueId, url, title: title ?? null, id: id ?? null });
99
99
  return data.attachmentLinkURL?.attachment;
@@ -110,7 +110,7 @@ export function registerAttachmentActions(rl) {
110
110
  async execute(input, ctx) {
111
111
  const id = input.id;
112
112
  await assertAttachmentInScope(ctx, id);
113
- const data = await gql(key(ctx), `mutation($id: String!) { attachmentDelete(id: $id) { success } }`, { id });
113
+ const data = await gql(ctx, `mutation($id: String!) { attachmentDelete(id: $id) { success } }`, { id });
114
114
  return data.attachmentDelete;
115
115
  },
116
116
  });
@@ -1,5 +1,5 @@
1
1
  import * as t from "typebox";
2
- import { assertCommentInScope, assertIssueInScope, COMMENT_FIELDS, gql, key, requireUnscoped, } from "./shared.js";
2
+ import { assertCommentInScope, assertIssueInScope, COMMENT_FIELDS, gql, requireUnscoped, } from "./shared.js";
3
3
  export function registerCommentActions(rl) {
4
4
  rl.registerAction("comment.create", {
5
5
  access: "write",
@@ -22,7 +22,7 @@ export function registerCommentActions(rl) {
22
22
  async execute(input, ctx) {
23
23
  const fields = input;
24
24
  await assertIssueInScope(ctx, String(fields.issueId));
25
- const data = await gql(key(ctx), `mutation($input: CommentCreateInput!) { commentCreate(input: $input) { success comment { ${COMMENT_FIELDS} } } }`, { input: fields });
25
+ const data = await gql(ctx, `mutation($input: CommentCreateInput!) { commentCreate(input: $input) { success comment { ${COMMENT_FIELDS} } } }`, { input: fields });
26
26
  return data.commentCreate?.comment;
27
27
  },
28
28
  });
@@ -39,11 +39,11 @@ export function registerCommentActions(rl) {
39
39
  const { issueId, limit = 50 } = (input ?? {});
40
40
  if (issueId) {
41
41
  await assertIssueInScope(ctx, issueId);
42
- const data = await gql(key(ctx), `query($id: String!, $first: Int) { issue(id: $id) { comments(first: $first) { nodes { ${COMMENT_FIELDS} } pageInfo { hasNextPage endCursor } } } }`, { id: issueId, first: limit });
42
+ const data = await gql(ctx, `query($id: String!, $first: Int) { issue(id: $id) { comments(first: $first) { nodes { ${COMMENT_FIELDS} } pageInfo { hasNextPage endCursor } } } }`, { id: issueId, first: limit });
43
43
  return (data.issue?.comments ?? null);
44
44
  }
45
45
  requireUnscoped(ctx, "comment.list");
46
- const data = await gql(key(ctx), `query($first: Int) { comments(first: $first) { nodes { ${COMMENT_FIELDS} } pageInfo { hasNextPage endCursor } } }`, { first: limit });
46
+ const data = await gql(ctx, `query($first: Int) { comments(first: $first) { nodes { ${COMMENT_FIELDS} } pageInfo { hasNextPage endCursor } } }`, { first: limit });
47
47
  return data.comments;
48
48
  },
49
49
  });
@@ -54,7 +54,7 @@ export function registerCommentActions(rl) {
54
54
  async execute(input, ctx) {
55
55
  const id = input.id;
56
56
  await assertCommentInScope(ctx, id);
57
- const data = await gql(key(ctx), `query($id: String!) { comment(id: $id) { ${COMMENT_FIELDS} } }`, { id });
57
+ const data = await gql(ctx, `query($id: String!) { comment(id: $id) { ${COMMENT_FIELDS} } }`, { id });
58
58
  return data.comment;
59
59
  },
60
60
  });
@@ -71,7 +71,7 @@ export function registerCommentActions(rl) {
71
71
  async execute(input, ctx) {
72
72
  const { id, ...fields } = input;
73
73
  await assertCommentInScope(ctx, String(id));
74
- const data = await gql(key(ctx), `mutation($id: String!, $input: CommentUpdateInput!) { commentUpdate(id: $id, input: $input) { success comment { ${COMMENT_FIELDS} } } }`, { id, input: fields });
74
+ const data = await gql(ctx, `mutation($id: String!, $input: CommentUpdateInput!) { commentUpdate(id: $id, input: $input) { success comment { ${COMMENT_FIELDS} } } }`, { id, input: fields });
75
75
  return data.commentUpdate?.comment;
76
76
  },
77
77
  });
@@ -82,7 +82,7 @@ export function registerCommentActions(rl) {
82
82
  async execute(input, ctx) {
83
83
  const id = input.id;
84
84
  await assertCommentInScope(ctx, id);
85
- const data = await gql(key(ctx), `mutation($id: String!) { commentDelete(id: $id) { success } }`, { id });
85
+ const data = await gql(ctx, `mutation($id: String!) { commentDelete(id: $id) { success } }`, { id });
86
86
  return data.commentDelete;
87
87
  },
88
88
  });
@@ -0,0 +1,17 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * A personal API key, sent verbatim in the Authorization header (no
4
+ * scheme prefix) to Linear's one GraphQL origin. Every action is a POST
5
+ * to the `graphql` path beneath it.
6
+ */
7
+ export const linearCredential = staticCredential({
8
+ id: "linear",
9
+ auth: { kind: "apiKey", header: "Authorization" },
10
+ local: { secret: "apiKey" },
11
+ targets: {
12
+ gql: {
13
+ baseUrl: "https://api.linear.app/",
14
+ methods: ["POST"],
15
+ },
16
+ },
17
+ });
@@ -1,5 +1,5 @@
1
1
  import * as t from "typebox";
2
- import { bindGetAction, bindListAction, CYCLE_FIELDS, gql, key, requireUnscoped, withScopedNote, } from "./shared.js";
2
+ import { bindGetAction, bindListAction, CYCLE_FIELDS, gql, requireUnscoped, withScopedNote, } from "./shared.js";
3
3
  export function registerCycleActions(rl) {
4
4
  const listAction = bindListAction(rl);
5
5
  const getAction = bindGetAction(rl);
@@ -27,7 +27,7 @@ export function registerCycleActions(rl) {
27
27
  }),
28
28
  async execute(input, ctx) {
29
29
  requireUnscoped(ctx, "cycles.*");
30
- const data = await gql(key(ctx), `mutation($input: CycleCreateInput!) { cycleCreate(input: $input) { success cycle { ${CYCLE_FIELDS} } } }`, { input: input });
30
+ const data = await gql(ctx, `mutation($input: CycleCreateInput!) { cycleCreate(input: $input) { success cycle { ${CYCLE_FIELDS} } } }`, { input: input });
31
31
  return data.cycleCreate?.cycle;
32
32
  },
33
33
  });
@@ -51,7 +51,7 @@ export function registerCycleActions(rl) {
51
51
  async execute(input, ctx) {
52
52
  requireUnscoped(ctx, "cycles.*");
53
53
  const { id, ...fields } = input;
54
- const data = await gql(key(ctx), `mutation($id: String!, $input: CycleUpdateInput!) { cycleUpdate(id: $id, input: $input) { success cycle { ${CYCLE_FIELDS} } } }`, { id, input: fields });
54
+ const data = await gql(ctx, `mutation($id: String!, $input: CycleUpdateInput!) { cycleUpdate(id: $id, input: $input) { success cycle { ${CYCLE_FIELDS} } } }`, { id, input: fields });
55
55
  return data.cycleUpdate?.cycle;
56
56
  },
57
57
  });
@@ -67,7 +67,7 @@ export function registerCycleActions(rl) {
67
67
  async execute(input, ctx) {
68
68
  requireUnscoped(ctx, "cycles.*");
69
69
  const { id } = input;
70
- const data = await gql(key(ctx), `mutation($id: String!) { cycleArchive(id: $id) { success } }`, { id });
70
+ const data = await gql(ctx, `mutation($id: String!) { cycleArchive(id: $id) { success } }`, { id });
71
71
  return data.cycleArchive;
72
72
  },
73
73
  });
@@ -90,7 +90,7 @@ export function registerCycleActions(rl) {
90
90
  async execute(input, ctx) {
91
91
  requireUnscoped(ctx, "cycles.*");
92
92
  const { teamId } = input;
93
- const data = await gql(key(ctx), `mutation($id: String!) { teamCyclesDelete(id: $id) { success } }`, { id: teamId });
93
+ const data = await gql(ctx, `mutation($id: String!) { teamCyclesDelete(id: $id) { success } }`, { id: teamId });
94
94
  return data.teamCyclesDelete;
95
95
  },
96
96
  });
@@ -1,6 +1,7 @@
1
1
  import * as t from "typebox";
2
2
  import { registerAttachmentActions } from "./attachments.js";
3
3
  import { registerCommentActions } from "./comments.js";
4
+ import { linearCredential } from "./credentials.js";
4
5
  import { registerCycleActions } from "./cycles.js";
5
6
  import { registerInitiativeActions } from "./initiatives.js";
6
7
  import { registerIssueActions } from "./issues.js";
@@ -15,6 +16,7 @@ import { registerWebhookActions } from "./webhooks.js";
15
16
  export default function linear(rl) {
16
17
  rl.setName("linear");
17
18
  rl.setVersion("0.6.0");
19
+ rl.setCredential(linearCredential);
18
20
  rl.setConnectionSchema(t.Object({
19
21
  apiKey: t.String({
20
22
  description: "Linear API key (https://linear.app/settings/account/security)",
@@ -1,5 +1,5 @@
1
1
  import * as t from "typebox";
2
- import { bindGetAction, bindListAction, gql, INITIATIVE_FIELDS, key, requireUnscoped, withScopedNote, } from "./shared.js";
2
+ import { bindGetAction, bindListAction, gql, INITIATIVE_FIELDS, requireUnscoped, withScopedNote, } from "./shared.js";
3
3
  export function registerInitiativeActions(rl) {
4
4
  const listAction = bindListAction(rl);
5
5
  const getAction = bindGetAction(rl);
@@ -35,7 +35,7 @@ export function registerInitiativeActions(rl) {
35
35
  }),
36
36
  async execute(input, ctx) {
37
37
  requireUnscoped(ctx, "initiatives.*");
38
- const data = await gql(key(ctx), `mutation($input: InitiativeCreateInput!) { initiativeCreate(input: $input) { success initiative { ${INITIATIVE_FIELDS} } } }`, { input: input });
38
+ const data = await gql(ctx, `mutation($input: InitiativeCreateInput!) { initiativeCreate(input: $input) { success initiative { ${INITIATIVE_FIELDS} } } }`, { input: input });
39
39
  return data.initiativeCreate?.initiative;
40
40
  },
41
41
  });
@@ -73,7 +73,7 @@ export function registerInitiativeActions(rl) {
73
73
  async execute(input, ctx) {
74
74
  requireUnscoped(ctx, "initiatives.*");
75
75
  const { id, ...fields } = input;
76
- const data = await gql(key(ctx), `mutation($id: String!, $input: InitiativeUpdateInput!) { initiativeUpdate(id: $id, input: $input) { success initiative { ${INITIATIVE_FIELDS} } } }`, { id, input: fields });
76
+ const data = await gql(ctx, `mutation($id: String!, $input: InitiativeUpdateInput!) { initiativeUpdate(id: $id, input: $input) { success initiative { ${INITIATIVE_FIELDS} } } }`, { id, input: fields });
77
77
  return data.initiativeUpdate?.initiative;
78
78
  },
79
79
  });
@@ -87,7 +87,7 @@ export function registerInitiativeActions(rl) {
87
87
  }),
88
88
  async execute(input, ctx) {
89
89
  requireUnscoped(ctx, "initiatives.*");
90
- const data = await gql(key(ctx), `mutation($id: String!) { initiativeDelete(id: $id) { success } }`, { id: input.id });
90
+ const data = await gql(ctx, `mutation($id: String!) { initiativeDelete(id: $id) { success } }`, { id: input.id });
91
91
  return data.initiativeDelete;
92
92
  },
93
93
  });
@@ -108,7 +108,7 @@ export function registerInitiativeActions(rl) {
108
108
  }),
109
109
  async execute(input, ctx) {
110
110
  requireUnscoped(ctx, "initiatives.*");
111
- const data = await gql(key(ctx), `mutation($input: InitiativeToProjectCreateInput!) { initiativeToProjectCreate(input: $input) { success initiativeToProject { id initiative { id name projects { nodes { id name } } } project { id name } } } }`, { input: input });
111
+ const data = await gql(ctx, `mutation($input: InitiativeToProjectCreateInput!) { initiativeToProjectCreate(input: $input) { success initiativeToProject { id initiative { id name projects { nodes { id name } } } project { id name } } } }`, { input: input });
112
112
  return data.initiativeToProjectCreate;
113
113
  },
114
114
  });
@@ -122,7 +122,7 @@ export function registerInitiativeActions(rl) {
122
122
  }),
123
123
  async execute(input, ctx) {
124
124
  requireUnscoped(ctx, "initiatives.*");
125
- const data = await gql(key(ctx), `mutation($id: String!) { initiativeToProjectDelete(id: $id) { success } }`, { id: input.id });
125
+ const data = await gql(ctx, `mutation($id: String!) { initiativeToProjectDelete(id: $id) { success } }`, { id: input.id });
126
126
  return data.initiativeToProjectDelete;
127
127
  },
128
128
  });
@@ -1,5 +1,5 @@
1
1
  import * as t from "typebox";
2
- import { assertIssueInScope, buildConnArgs, ensureScopeLabelsOnCreateOrReplace, forbidScopeLabelRemoval, gql, ISSUE_FIELDS, ISSUE_LITE, issueHasScope, key, LIST_INPUT_SCHEMA, mergeIssueScopeFilter, } from "./shared.js";
2
+ import { assertIssueInScope, buildConnArgs, ensureScopeLabelsOnCreateOrReplace, forbidScopeLabelRemoval, gql, ISSUE_FIELDS, ISSUE_LITE, issueHasScope, LIST_INPUT_SCHEMA, mergeIssueScopeFilter, } from "./shared.js";
3
3
  /**
4
4
  * Linear's IssueUpdateInput accepts explicit null for clearable relations
5
5
  * (e.g. cycleId: null removes the issue from its cycle). Omitted = leave
@@ -69,7 +69,7 @@ export function registerIssueActions(rl) {
69
69
  async execute(input, ctx) {
70
70
  const fields = { ...input };
71
71
  fields.labelIds = await ensureScopeLabelsOnCreateOrReplace(ctx, fields.labelIds);
72
- const data = await gql(key(ctx), `mutation($input: IssueCreateInput!) { issueCreate(input: $input) { success issue { ${ISSUE_FIELDS} } } }`, { input: fields });
72
+ const data = await gql(ctx, `mutation($input: IssueCreateInput!) { issueCreate(input: $input) { success issue { ${ISSUE_FIELDS} } } }`, { input: fields });
73
73
  return data.issueCreate?.issue;
74
74
  },
75
75
  });
@@ -82,7 +82,7 @@ export function registerIssueActions(rl) {
82
82
  }),
83
83
  }),
84
84
  async execute(input, ctx) {
85
- const data = await gql(key(ctx), `query($id: String!) { issue(id: $id) { ${ISSUE_FIELDS} } }`, { id: input.issueId });
85
+ const data = await gql(ctx, `query($id: String!) { issue(id: $id) { ${ISSUE_FIELDS} } }`, { id: input.issueId });
86
86
  const issue = data.issue;
87
87
  if (!(await issueHasScope(ctx, issue)))
88
88
  throw new Error("Linear issue is not available to this scoped connection");
@@ -107,7 +107,7 @@ export function registerIssueActions(rl) {
107
107
  merged.assignee = { id: { eq: opts.assigneeId } };
108
108
  const filter = await mergeIssueScopeFilter(ctx, Object.keys(merged).length > 0 ? merged : undefined);
109
109
  const { argsDecl, argsCall, vars } = buildConnArgs({ ...opts, filter }, "IssueFilter");
110
- const data = await gql(key(ctx), `query${argsDecl} { issues${argsCall} { nodes { ${ISSUE_LITE} } pageInfo { hasNextPage endCursor } } }`, vars);
110
+ const data = await gql(ctx, `query${argsDecl} { issues${argsCall} { nodes { ${ISSUE_LITE} } pageInfo { hasNextPage endCursor } } }`, vars);
111
111
  const conn = data.issues;
112
112
  return { nodes: conn.nodes, pageInfo: conn.pageInfo };
113
113
  },
@@ -172,7 +172,7 @@ export function registerIssueActions(rl) {
172
172
  await forbidScopeLabelRemoval(ctx, fields.removedLabelIds);
173
173
  if (fields.labelIds)
174
174
  fields.labelIds = await ensureScopeLabelsOnCreateOrReplace(ctx, fields.labelIds);
175
- const data = await gql(key(ctx), `mutation($id: String!, $input: IssueUpdateInput!) { issueUpdate(id: $id, input: $input) { success issue { ${ISSUE_FIELDS} } } }`, { id: issueId, input: fields });
175
+ const data = await gql(ctx, `mutation($id: String!, $input: IssueUpdateInput!) { issueUpdate(id: $id, input: $input) { success issue { ${ISSUE_FIELDS} } } }`, { id: issueId, input: fields });
176
176
  return data.issueUpdate?.issue;
177
177
  },
178
178
  });
@@ -186,7 +186,7 @@ export function registerIssueActions(rl) {
186
186
  async execute(input, ctx) {
187
187
  const { issueId, permanentlyDelete } = input;
188
188
  await assertIssueInScope(ctx, issueId);
189
- const data = await gql(key(ctx), `mutation($id: String!, $perm: Boolean) { issueDelete(id: $id, permanentlyDelete: $perm) { success } }`, { id: issueId, perm: permanentlyDelete ?? null });
189
+ const data = await gql(ctx, `mutation($id: String!, $perm: Boolean) { issueDelete(id: $id, permanentlyDelete: $perm) { success } }`, { id: issueId, perm: permanentlyDelete ?? null });
190
190
  return data.issueDelete;
191
191
  },
192
192
  });
@@ -200,7 +200,7 @@ export function registerIssueActions(rl) {
200
200
  async execute(input, ctx) {
201
201
  const { issueId, trash } = input;
202
202
  await assertIssueInScope(ctx, issueId);
203
- const data = await gql(key(ctx), `mutation($id: String!, $trash: Boolean) { issueArchive(id: $id, trash: $trash) { success } }`, { id: issueId, trash: trash ?? null });
203
+ const data = await gql(ctx, `mutation($id: String!, $trash: Boolean) { issueArchive(id: $id, trash: $trash) { success } }`, { id: issueId, trash: trash ?? null });
204
204
  return data.issueArchive;
205
205
  },
206
206
  });
@@ -211,7 +211,7 @@ export function registerIssueActions(rl) {
211
211
  async execute(input, ctx) {
212
212
  const issueId = input.issueId;
213
213
  await assertIssueInScope(ctx, issueId);
214
- const data = await gql(key(ctx), `mutation($id: String!) { issueUnarchive(id: $id) { success } }`, { id: issueId });
214
+ const data = await gql(ctx, `mutation($id: String!) { issueUnarchive(id: $id) { success } }`, { id: issueId });
215
215
  return data.issueUnarchive;
216
216
  },
217
217
  });
@@ -237,7 +237,7 @@ export function registerIssueActions(rl) {
237
237
  }),
238
238
  async execute(input, ctx) {
239
239
  const opts = input;
240
- const data = await gql(key(ctx), `query($term: String!, $first: Int, $filter: IssueFilter, $includeComments: Boolean, $includeArchived: Boolean, $teamId: String, $orderBy: PaginationOrderBy, $after: String, $before: String) {
240
+ const data = await gql(ctx, `query($term: String!, $first: Int, $filter: IssueFilter, $includeComments: Boolean, $includeArchived: Boolean, $teamId: String, $orderBy: PaginationOrderBy, $after: String, $before: String) {
241
241
  searchIssues(term: $term, first: $first, filter: $filter, includeComments: $includeComments, includeArchived: $includeArchived, teamId: $teamId, orderBy: $orderBy, after: $after, before: $before) {
242
242
  nodes { ${ISSUE_LITE} }
243
243
  totalCount
@@ -267,7 +267,7 @@ export function registerIssueActions(rl) {
267
267
  async execute(input, ctx) {
268
268
  const { issueId, labelId } = input;
269
269
  await assertIssueInScope(ctx, issueId);
270
- const data = await gql(key(ctx), `mutation($id: String!, $labelId: String!) { issueAddLabel(id: $id, labelId: $labelId) { success } }`, { id: issueId, labelId });
270
+ const data = await gql(ctx, `mutation($id: String!, $labelId: String!) { issueAddLabel(id: $id, labelId: $labelId) { success } }`, { id: issueId, labelId });
271
271
  return data.issueAddLabel;
272
272
  },
273
273
  });
@@ -282,7 +282,7 @@ export function registerIssueActions(rl) {
282
282
  const { issueId, labelId } = input;
283
283
  await assertIssueInScope(ctx, issueId);
284
284
  await forbidScopeLabelRemoval(ctx, labelId);
285
- const data = await gql(key(ctx), `mutation($id: String!, $labelId: String!) { issueRemoveLabel(id: $id, labelId: $labelId) { success } }`, { id: issueId, labelId });
285
+ const data = await gql(ctx, `mutation($id: String!, $labelId: String!) { issueRemoveLabel(id: $id, labelId: $labelId) { success } }`, { id: issueId, labelId });
286
286
  return data.issueRemoveLabel;
287
287
  },
288
288
  });
@@ -297,7 +297,7 @@ export function registerIssueActions(rl) {
297
297
  async execute(input, ctx) {
298
298
  const { issueId, userId, userEmail } = input;
299
299
  await assertIssueInScope(ctx, String(issueId));
300
- const data = await gql(key(ctx), `mutation($id: String!, $userId: String, $userEmail: String) {
300
+ const data = await gql(ctx, `mutation($id: String!, $userId: String, $userEmail: String) {
301
301
  issueSubscribe(id: $id, userId: $userId, userEmail: $userEmail) { success }
302
302
  }`, { id: issueId, userId: userId ?? null, userEmail: userEmail ?? null });
303
303
  return data.issueSubscribe;
@@ -314,7 +314,7 @@ export function registerIssueActions(rl) {
314
314
  async execute(input, ctx) {
315
315
  const { issueId, userId, userEmail } = input;
316
316
  await assertIssueInScope(ctx, String(issueId));
317
- const data = await gql(key(ctx), `mutation($id: String!, $userId: String, $userEmail: String) {
317
+ const data = await gql(ctx, `mutation($id: String!, $userId: String, $userEmail: String) {
318
318
  issueUnsubscribe(id: $id, userId: $userId, userEmail: $userEmail) { success }
319
319
  }`, { id: issueId, userId: userId ?? null, userEmail: userEmail ?? null });
320
320
  return data.issueUnsubscribe;
@@ -338,7 +338,7 @@ export function registerIssueActions(rl) {
338
338
  const fields = input;
339
339
  await assertIssueInScope(ctx, String(fields.issueId));
340
340
  await assertIssueInScope(ctx, String(fields.relatedIssueId));
341
- const data = await gql(key(ctx), `mutation($input: IssueRelationCreateInput!) { issueRelationCreate(input: $input) { success issueRelation { id type } } }`, { input: fields });
341
+ const data = await gql(ctx, `mutation($input: IssueRelationCreateInput!) { issueRelationCreate(input: $input) { success issueRelation { id type } } }`, { input: fields });
342
342
  return data.issueRelationCreate;
343
343
  },
344
344
  });
@@ -1,5 +1,5 @@
1
1
  import * as t from "typebox";
2
- import { bindGetAction, bindListAction, gql, key, LABEL_FIELDS, requireUnscoped, withScopedNote, } from "./shared.js";
2
+ import { bindGetAction, bindListAction, gql, LABEL_FIELDS, requireUnscoped, withScopedNote, } from "./shared.js";
3
3
  export function registerLabelActions(rl) {
4
4
  const listAction = bindListAction(rl);
5
5
  const getAction = bindGetAction(rl);
@@ -32,7 +32,7 @@ export function registerLabelActions(rl) {
32
32
  async execute(input, ctx) {
33
33
  requireUnscoped(ctx, "label.create");
34
34
  const { replaceTeamLabels, ...fields } = input;
35
- const data = await gql(key(ctx), `mutation($input: IssueLabelCreateInput!, $replaceTeamLabels: Boolean) { issueLabelCreate(input: $input, replaceTeamLabels: $replaceTeamLabels) { success issueLabel { ${LABEL_FIELDS} } } }`, { input: fields, replaceTeamLabels: replaceTeamLabels ?? null });
35
+ const data = await gql(ctx, `mutation($input: IssueLabelCreateInput!, $replaceTeamLabels: Boolean) { issueLabelCreate(input: $input, replaceTeamLabels: $replaceTeamLabels) { success issueLabel { ${LABEL_FIELDS} } } }`, { input: fields, replaceTeamLabels: replaceTeamLabels ?? null });
36
36
  return data.issueLabelCreate?.issueLabel;
37
37
  },
38
38
  });
@@ -56,7 +56,7 @@ export function registerLabelActions(rl) {
56
56
  async execute(input, ctx) {
57
57
  requireUnscoped(ctx, "label.update");
58
58
  const { id, replaceTeamLabels, ...fields } = input;
59
- const data = await gql(key(ctx), `mutation($id: String!, $input: IssueLabelUpdateInput!, $replaceTeamLabels: Boolean) { issueLabelUpdate(id: $id, input: $input, replaceTeamLabels: $replaceTeamLabels) { success issueLabel { ${LABEL_FIELDS} } } }`, { id, input: fields, replaceTeamLabels: replaceTeamLabels ?? null });
59
+ const data = await gql(ctx, `mutation($id: String!, $input: IssueLabelUpdateInput!, $replaceTeamLabels: Boolean) { issueLabelUpdate(id: $id, input: $input, replaceTeamLabels: $replaceTeamLabels) { success issueLabel { ${LABEL_FIELDS} } } }`, { id, input: fields, replaceTeamLabels: replaceTeamLabels ?? null });
60
60
  return data.issueLabelUpdate?.issueLabel;
61
61
  },
62
62
  });
@@ -68,7 +68,7 @@ export function registerLabelActions(rl) {
68
68
  }),
69
69
  async execute(input, ctx) {
70
70
  requireUnscoped(ctx, "label.delete");
71
- const data = await gql(key(ctx), `mutation($id: String!) { issueLabelDelete(id: $id) { success } }`, { id: input.id });
71
+ const data = await gql(ctx, `mutation($id: String!) { issueLabelDelete(id: $id) { success } }`, { id: input.id });
72
72
  return data.issueLabelDelete;
73
73
  },
74
74
  });
@@ -80,7 +80,7 @@ export function registerLabelActions(rl) {
80
80
  }),
81
81
  async execute(input, ctx) {
82
82
  requireUnscoped(ctx, "label.retire");
83
- const data = await gql(key(ctx), `mutation($id: String!) { issueLabelRetire(id: $id) { success issueLabel { ${LABEL_FIELDS} } } }`, { id: input.id });
83
+ const data = await gql(ctx, `mutation($id: String!) { issueLabelRetire(id: $id) { success issueLabel { ${LABEL_FIELDS} } } }`, { id: input.id });
84
84
  return data.issueLabelRetire?.issueLabel;
85
85
  },
86
86
  });
@@ -92,7 +92,7 @@ export function registerLabelActions(rl) {
92
92
  }),
93
93
  async execute(input, ctx) {
94
94
  requireUnscoped(ctx, "label.restore");
95
- const data = await gql(key(ctx), `mutation($id: String!) { issueLabelRestore(id: $id) { success issueLabel { ${LABEL_FIELDS} } } }`, { id: input.id });
95
+ const data = await gql(ctx, `mutation($id: String!) { issueLabelRestore(id: $id) { success issueLabel { ${LABEL_FIELDS} } } }`, { id: input.id });
96
96
  return data.issueLabelRestore?.issueLabel;
97
97
  },
98
98
  });