runline 0.33.0 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/oauth2.d.ts +7 -1
- package/dist/auth/oauth2.js +10 -0
- package/dist/auth/token.d.ts +1 -0
- package/dist/auth/token.js +19 -1
- package/dist/auth/types.d.ts +22 -1
- package/dist/core/engine.d.ts +7 -0
- package/dist/core/engine.js +21 -8
- package/dist/credentials/policy.d.ts +53 -1
- package/dist/credentials/policy.js +146 -6
- package/dist/credentials/registry.d.ts +9 -0
- package/dist/credentials/registry.js +184 -22
- package/dist/credentials/transport.d.ts +48 -2
- package/dist/credentials/transport.js +248 -70
- package/dist/credentials/types.d.ts +177 -10
- package/dist/index.d.ts +6 -5
- package/dist/index.js +3 -2
- package/dist/plugin/api.d.ts +7 -0
- package/dist/plugin/api.js +7 -0
- package/dist/plugin/schema.d.ts +16 -4
- package/dist/plugin/schema.js +28 -5
- package/dist/plugin/types.d.ts +20 -0
- package/dist/plugins/_shared/base64.js +30 -0
- package/dist/plugins/_shared/credentialAdapter.js +99 -15
- package/dist/plugins/_shared/credentials.js +416 -0
- package/dist/plugins/_shared/googleAuth.js +69 -39
- package/dist/plugins/_shared/googleCredentials.js +68 -14
- package/dist/plugins/_shared/localFile.js +40 -0
- package/dist/plugins/_shared/mediaFile.js +12 -12
- package/dist/plugins/_shared/microsoftAuth.js +31 -47
- package/dist/plugins/_shared/microsoftCredentials.js +42 -15
- package/dist/plugins/_shared/provider.js +2 -14
- package/dist/plugins/_shared/shiftCloud.js +16 -56
- package/dist/plugins/_shared/shiftCredentials.js +83 -0
- package/dist/plugins/_shared/shiftUpload.js +14 -10
- package/dist/plugins/actionNetwork/src/credentials.js +14 -0
- package/dist/plugins/actionNetwork/src/index.js +39 -50
- package/dist/plugins/activeCampaign/src/credentials.js +22 -0
- package/dist/plugins/activeCampaign/src/index.js +61 -132
- package/dist/plugins/adalo/src/credentials.js +16 -0
- package/dist/plugins/adalo/src/index.js +19 -43
- package/dist/plugins/affinity/src/credentials.js +19 -0
- package/dist/plugins/affinity/src/index.js +29 -54
- package/dist/plugins/agentMail/src/credentials.js +35 -0
- package/dist/plugins/agentMail/src/drafts.js +137 -0
- package/dist/plugins/agentMail/src/inboxes.js +95 -0
- package/dist/plugins/agentMail/src/index.js +35 -0
- package/dist/plugins/agentMail/src/messages.js +154 -0
- package/dist/plugins/agentMail/src/schemas.js +156 -0
- package/dist/plugins/agentMail/src/shared.js +203 -0
- package/dist/plugins/agentMail/src/threads.js +75 -0
- package/dist/plugins/agileCrm/src/credentials.js +16 -0
- package/dist/plugins/agileCrm/src/index.js +46 -112
- package/dist/plugins/airtable/src/credentials.js +19 -0
- package/dist/plugins/airtable/src/index.js +37 -50
- package/dist/plugins/airtop/src/credentials.js +20 -0
- package/dist/plugins/airtop/src/index.js +51 -75
- package/dist/plugins/apiTemplateIo/src/credentials.js +19 -0
- package/dist/plugins/apiTemplateIo/src/index.js +14 -31
- package/dist/plugins/asana/src/credentials.js +19 -0
- package/dist/plugins/asana/src/index.js +51 -72
- package/dist/plugins/autopilot/src/credentials.js +19 -0
- package/dist/plugins/autopilot/src/index.js +38 -45
- package/dist/plugins/bambooHr/src/credentials.js +16 -0
- package/dist/plugins/bambooHr/src/index.js +41 -67
- package/dist/plugins/bannerbear/src/credentials.js +19 -0
- package/dist/plugins/bannerbear/src/index.js +15 -27
- package/dist/plugins/baserow/src/credentials.js +17 -0
- package/dist/plugins/baserow/src/index.js +23 -49
- package/dist/plugins/beeminder/src/credentials.js +19 -0
- package/dist/plugins/beeminder/src/index.js +32 -54
- package/dist/plugins/bitly/src/credentials.js +19 -0
- package/dist/plugins/bitly/src/index.js +12 -26
- package/dist/plugins/bitwarden/src/credentials.js +62 -0
- package/dist/plugins/bitwarden/src/index.js +34 -80
- package/dist/plugins/box/src/credentials.js +19 -0
- package/dist/plugins/box/src/index.js +24 -49
- package/dist/plugins/brandfetch/src/credentials.js +13 -0
- package/dist/plugins/brandfetch/src/index.js +12 -17
- package/dist/plugins/brevo/src/credentials.js +19 -0
- package/dist/plugins/brevo/src/index.js +30 -51
- package/dist/plugins/bubble/src/credentials.js +28 -0
- package/dist/plugins/bubble/src/index.js +29 -65
- package/dist/plugins/chargebee/src/credentials.js +16 -0
- package/dist/plugins/chargebee/src/index.js +15 -45
- package/dist/plugins/circleci/src/credentials.js +19 -0
- package/dist/plugins/circleci/src/index.js +19 -39
- package/dist/plugins/ciscoWebex/src/credentials.js +19 -0
- package/dist/plugins/ciscoWebex/src/index.js +43 -61
- package/dist/plugins/clearbit/src/credentials.js +22 -0
- package/dist/plugins/clearbit/src/index.js +11 -21
- package/dist/plugins/clickup/src/credentials.js +19 -0
- package/dist/plugins/clickup/src/index.js +85 -117
- package/dist/plugins/clockify/src/credentials.js +19 -0
- package/dist/plugins/clockify/src/index.js +46 -61
- package/dist/plugins/cloudflare/src/credentials.js +19 -0
- package/dist/plugins/cloudflare/src/index.js +19 -34
- package/dist/plugins/cockpit/src/credentials.js +17 -0
- package/dist/plugins/cockpit/src/index.js +18 -31
- package/dist/plugins/coda/src/credentials.js +19 -0
- package/dist/plugins/coda/src/index.js +33 -50
- package/dist/plugins/coingecko/src/credentials.js +20 -0
- package/dist/plugins/coingecko/src/index.js +24 -34
- package/dist/plugins/contentful/src/credentials.js +26 -0
- package/dist/plugins/contentful/src/index.js +19 -40
- package/dist/plugins/convertkit/src/credentials.js +26 -0
- package/dist/plugins/convertkit/src/index.js +27 -45
- package/dist/plugins/copper/src/credentials.js +17 -0
- package/dist/plugins/copper/src/index.js +25 -47
- package/dist/plugins/cortex/src/credentials.js +28 -0
- package/dist/plugins/cortex/src/index.js +26 -49
- package/dist/plugins/currents/src/credentials.js +19 -0
- package/dist/plugins/currents/src/index.js +46 -59
- package/dist/plugins/customerIo/src/credentials.js +52 -0
- package/dist/plugins/customerIo/src/index.js +30 -58
- package/dist/plugins/databricks/src/credentials.js +13 -0
- package/dist/plugins/databricks/src/index.js +51 -103
- package/dist/plugins/deepl/src/credentials.js +19 -0
- package/dist/plugins/deepl/src/index.js +13 -39
- package/dist/plugins/demio/src/credentials.js +26 -0
- package/dist/plugins/demio/src/index.js +17 -41
- package/dist/plugins/dhl/src/credentials.js +13 -0
- package/dist/plugins/dhl/src/index.js +8 -19
- package/dist/plugins/discord/src/credentials.js +19 -0
- package/dist/plugins/discord/src/index.js +30 -58
- package/dist/plugins/discourse/src/credentials.js +18 -0
- package/dist/plugins/discourse/src/index.js +36 -53
- package/dist/plugins/disqus/src/credentials.js +13 -0
- package/dist/plugins/disqus/src/index.js +14 -32
- package/dist/plugins/drift/src/credentials.js +13 -0
- package/dist/plugins/drift/src/index.js +16 -26
- package/dist/plugins/dropbox/src/credentials.js +13 -0
- package/dist/plugins/dropbox/src/index.js +23 -30
- package/dist/plugins/dropcontact/src/credentials.js +13 -0
- package/dist/plugins/dropcontact/src/index.js +13 -18
- package/dist/plugins/egoi/src/credentials.js +19 -0
- package/dist/plugins/egoi/src/index.js +23 -38
- package/dist/plugins/elasticsearch/src/credentials.js +18 -0
- package/dist/plugins/elasticsearch/src/index.js +27 -48
- package/dist/plugins/elevenlabs/src/credentials.js +30 -0
- package/dist/plugins/elevenlabs/src/index.js +4 -1
- package/dist/plugins/elevenlabs/src/schemas.js +2 -1
- package/dist/plugins/elevenlabs/src/shared.js +87 -62
- package/dist/plugins/elevenlabs/src/workflows.js +2 -2
- package/dist/plugins/emelia/src/credentials.js +14 -0
- package/dist/plugins/emelia/src/index.js +19 -23
- package/dist/plugins/erpnext/src/credentials.js +27 -0
- package/dist/plugins/erpnext/src/index.js +21 -42
- package/dist/plugins/facebookGraph/src/credentials.js +20 -0
- package/dist/plugins/facebookGraph/src/index.js +39 -37
- package/dist/plugins/fal/src/credentials.js +14 -0
- package/dist/plugins/fal/src/index.js +5 -3
- package/dist/plugins/fal/src/shared.js +58 -63
- package/dist/plugins/freshdesk/src/credentials.js +20 -0
- package/dist/plugins/freshdesk/src/index.js +25 -46
- package/dist/plugins/freshservice/src/credentials.js +16 -0
- package/dist/plugins/freshservice/src/index.js +37 -58
- package/dist/plugins/freshworksCrm/src/credentials.js +16 -0
- package/dist/plugins/freshworksCrm/src/index.js +20 -39
- package/dist/plugins/getresponse/src/credentials.js +22 -0
- package/dist/plugins/getresponse/src/index.js +20 -32
- package/dist/plugins/gett/src/credentials.js +64 -0
- package/dist/plugins/gett/src/index.js +11 -6
- package/dist/plugins/gett/src/login.js +24 -0
- package/dist/plugins/gett/src/session.js +15 -38
- package/dist/plugins/gett/src/shared.js +41 -84
- package/dist/plugins/ghost/src/credentials.js +36 -0
- package/dist/plugins/ghost/src/index.js +18 -59
- package/dist/plugins/github/src/credentials.js +18 -0
- package/dist/plugins/github/src/index.js +55 -78
- package/dist/plugins/gitlab/src/credentials.js +24 -0
- package/dist/plugins/gitlab/src/index.js +29 -48
- package/dist/plugins/gmail/src/index.js +47 -108
- package/dist/plugins/gong/src/credentials.js +16 -0
- package/dist/plugins/gong/src/index.js +16 -32
- package/dist/plugins/googleAppsScript/src/index.js +109 -42
- package/dist/plugins/googleCalendar/src/index.js +20 -51
- package/dist/plugins/googleContacts/src/index.js +13 -40
- package/dist/plugins/googleDocs/src/index.js +3 -32
- package/dist/plugins/googleDocs/src/shared.js +2 -1
- package/dist/plugins/googleDrive/src/index.js +68 -97
- package/dist/plugins/googleImage/src/credentials.js +14 -0
- package/dist/plugins/googleImage/src/index.js +15 -26
- package/dist/plugins/googleSheets/src/index.js +27 -60
- package/dist/plugins/googleSlides/src/index.js +7 -35
- package/dist/plugins/googleTasks/src/index.js +14 -42
- package/dist/plugins/gotify/src/credentials.js +32 -0
- package/dist/plugins/gotify/src/index.js +14 -36
- package/dist/plugins/gotowebinar/src/credentials.js +13 -0
- package/dist/plugins/gotowebinar/src/index.js +52 -69
- package/dist/plugins/grafana/src/credentials.js +16 -0
- package/dist/plugins/grafana/src/index.js +34 -53
- package/dist/plugins/graphql/src/credentials.js +42 -0
- package/dist/plugins/graphql/src/index.js +21 -46
- package/dist/plugins/grist/src/credentials.js +30 -0
- package/dist/plugins/grist/src/index.js +14 -43
- package/dist/plugins/halopsa/src/credentials.js +56 -0
- package/dist/plugins/halopsa/src/index.js +20 -47
- package/dist/plugins/harvest/src/credentials.js +20 -0
- package/dist/plugins/harvest/src/index.js +24 -43
- package/dist/plugins/helpscout/src/credentials.js +13 -0
- package/dist/plugins/helpscout/src/index.js +26 -38
- package/dist/plugins/highlevel/src/credentials.js +19 -0
- package/dist/plugins/highlevel/src/index.js +42 -65
- package/dist/plugins/homeAssistant/src/credentials.js +27 -0
- package/dist/plugins/homeAssistant/src/index.js +34 -52
- package/dist/plugins/hubspot/src/credentials.js +16 -0
- package/dist/plugins/hubspot/src/index.js +29 -41
- package/dist/plugins/humanticAi/src/credentials.js +13 -0
- package/dist/plugins/humanticAi/src/index.js +15 -22
- package/dist/plugins/hunter/src/credentials.js +13 -0
- package/dist/plugins/hunter/src/index.js +18 -17
- package/dist/plugins/intercom/src/credentials.js +19 -0
- package/dist/plugins/intercom/src/index.js +25 -38
- package/dist/plugins/iterable/src/credentials.js +17 -0
- package/dist/plugins/iterable/src/index.js +26 -40
- package/dist/plugins/jenkins/src/credentials.js +16 -0
- package/dist/plugins/jenkins/src/index.js +22 -36
- package/dist/plugins/jira/src/credentials.js +16 -0
- package/dist/plugins/jira/src/index.js +35 -61
- package/dist/plugins/keap/src/credentials.js +19 -0
- package/dist/plugins/keap/src/index.js +43 -71
- package/dist/plugins/kobotoolbox/src/credentials.js +13 -0
- package/dist/plugins/kobotoolbox/src/index.js +46 -84
- package/dist/plugins/lemlist/src/credentials.js +19 -0
- package/dist/plugins/lemlist/src/index.js +35 -47
- package/dist/plugins/linear/src/attachments.js +7 -7
- package/dist/plugins/linear/src/comments.js +7 -7
- package/dist/plugins/linear/src/credentials.js +17 -0
- package/dist/plugins/linear/src/cycles.js +5 -5
- package/dist/plugins/linear/src/index.js +2 -0
- package/dist/plugins/linear/src/initiatives.js +6 -6
- package/dist/plugins/linear/src/issues.js +14 -14
- package/dist/plugins/linear/src/labels.js +6 -6
- package/dist/plugins/linear/src/organization.js +2 -2
- package/dist/plugins/linear/src/projects.js +12 -12
- package/dist/plugins/linear/src/shared.js +34 -32
- package/dist/plugins/linear/src/states.js +3 -3
- package/dist/plugins/linear/src/teams.js +4 -4
- package/dist/plugins/linear/src/users.js +3 -3
- package/dist/plugins/linear/src/views.js +5 -5
- package/dist/plugins/linear/src/webhooks.js +5 -5
- package/dist/plugins/lingvanex/src/credentials.js +13 -0
- package/dist/plugins/lingvanex/src/index.js +7 -9
- package/dist/plugins/linkedin/src/credentials.js +17 -0
- package/dist/plugins/linkedin/src/index.js +13 -17
- package/dist/plugins/lonescale/src/credentials.js +13 -0
- package/dist/plugins/lonescale/src/index.js +16 -26
- package/dist/plugins/magento/src/credentials.js +16 -0
- package/dist/plugins/magento/src/index.js +67 -84
- package/dist/plugins/mailcheck/src/credentials.js +17 -0
- package/dist/plugins/mailcheck/src/index.js +7 -9
- package/dist/plugins/mailchimp/src/credentials.js +32 -0
- package/dist/plugins/mailchimp/src/index.js +36 -44
- package/dist/plugins/mailerlite/src/credentials.js +13 -0
- package/dist/plugins/mailerlite/src/index.js +19 -32
- package/dist/plugins/mailgun/src/credentials.js +21 -0
- package/dist/plugins/mailgun/src/index.js +15 -21
- package/dist/plugins/mailjet/src/credentials.js +38 -0
- package/dist/plugins/mailjet/src/index.js +60 -115
- package/dist/plugins/mandrill/src/credentials.js +17 -0
- package/dist/plugins/mandrill/src/index.js +11 -12
- package/dist/plugins/marketstack/src/credentials.js +16 -0
- package/dist/plugins/marketstack/src/index.js +18 -28
- package/dist/plugins/matrix/src/credentials.js +19 -0
- package/dist/plugins/matrix/src/index.js +23 -52
- package/dist/plugins/mattermost/src/credentials.js +19 -0
- package/dist/plugins/mattermost/src/index.js +41 -73
- package/dist/plugins/mautic/src/credentials.js +16 -0
- package/dist/plugins/mautic/src/index.js +46 -62
- package/dist/plugins/medium/src/credentials.js +20 -0
- package/dist/plugins/medium/src/index.js +18 -23
- package/dist/plugins/messagebird/src/credentials.js +22 -0
- package/dist/plugins/messagebird/src/index.js +13 -18
- package/dist/plugins/metabase/src/credentials.js +19 -0
- package/dist/plugins/metabase/src/index.js +24 -40
- package/dist/plugins/microsoftCalendar/src/index.js +49 -18
- package/dist/plugins/microsoftFiles/src/index.js +95 -31
- package/dist/plugins/microsoftMail/src/index.js +63 -21
- package/dist/plugins/misp/src/credentials.js +16 -0
- package/dist/plugins/misp/src/index.js +60 -71
- package/dist/plugins/mocean/src/credentials.js +17 -0
- package/dist/plugins/mocean/src/index.js +11 -23
- package/dist/plugins/monday/src/credentials.js +14 -0
- package/dist/plugins/monday/src/index.js +31 -44
- package/dist/plugins/monicaCrm/src/credentials.js +19 -0
- package/dist/plugins/monicaCrm/src/index.js +25 -42
- package/dist/plugins/msg91/src/credentials.js +10 -0
- package/dist/plugins/msg91/src/index.js +15 -11
- package/dist/plugins/nasa/src/credentials.js +22 -0
- package/dist/plugins/nasa/src/index.js +24 -28
- package/dist/plugins/netlify/src/credentials.js +19 -0
- package/dist/plugins/netlify/src/index.js +27 -51
- package/dist/plugins/netscalerAdc/src/credentials.js +18 -0
- package/dist/plugins/netscalerAdc/src/index.js +16 -31
- package/dist/plugins/nextcloud/src/credentials.js +27 -0
- package/dist/plugins/nextcloud/src/index.js +55 -109
- package/dist/plugins/nocodb/src/credentials.js +16 -0
- package/dist/plugins/nocodb/src/index.js +19 -37
- package/dist/plugins/notion/src/credentials.js +21 -0
- package/dist/plugins/notion/src/index.js +25 -38
- package/dist/plugins/npm/src/credentials.js +19 -0
- package/dist/plugins/npm/src/index.js +22 -32
- package/dist/plugins/odoo/src/credentials.js +21 -0
- package/dist/plugins/odoo/src/index.js +53 -69
- package/dist/plugins/okta/src/credentials.js +23 -0
- package/dist/plugins/okta/src/index.js +30 -35
- package/dist/plugins/oneSimpleApi/src/credentials.js +16 -0
- package/dist/plugins/oneSimpleApi/src/index.js +19 -24
- package/dist/plugins/onfleet/src/credentials.js +23 -0
- package/dist/plugins/onfleet/src/index.js +42 -53
- package/dist/plugins/openai/src/credentials.js +13 -0
- package/dist/plugins/openai/src/index.js +16 -24
- package/dist/plugins/openweathermap/src/credentials.js +16 -0
- package/dist/plugins/openweathermap/src/index.js +22 -22
- package/dist/plugins/oura/src/credentials.js +19 -0
- package/dist/plugins/oura/src/index.js +13 -18
- package/dist/plugins/paddle/src/credentials.js +27 -0
- package/dist/plugins/paddle/src/index.js +20 -36
- package/dist/plugins/pagerduty/src/credentials.js +24 -0
- package/dist/plugins/pagerduty/src/index.js +30 -39
- package/dist/plugins/parallel/src/credentials.js +18 -0
- package/dist/plugins/parallel/src/index.js +16 -22
- package/dist/plugins/paypal/src/credentials.js +44 -0
- package/dist/plugins/paypal/src/index.js +14 -40
- package/dist/plugins/peekalink/src/credentials.js +16 -0
- package/dist/plugins/peekalink/src/index.js +10 -11
- package/dist/plugins/phantombuster/src/credentials.js +19 -0
- package/dist/plugins/phantombuster/src/index.js +19 -32
- package/dist/plugins/philipsHue/src/credentials.js +17 -0
- package/dist/plugins/philipsHue/src/index.js +15 -27
- package/dist/plugins/pipedrive/src/credentials.js +26 -0
- package/dist/plugins/pipedrive/src/index.js +43 -73
- package/dist/plugins/plaud/src/index.js +2 -1
- package/dist/plugins/plaud/src/shared.js +23 -19
- package/dist/plugins/plivo/src/credentials.js +20 -0
- package/dist/plugins/plivo/src/index.js +13 -19
- package/dist/plugins/posthog/src/credentials.js +18 -0
- package/dist/plugins/posthog/src/index.js +14 -20
- package/dist/plugins/profitwell/src/credentials.js +22 -0
- package/dist/plugins/profitwell/src/index.js +10 -17
- package/dist/plugins/pushbullet/src/credentials.js +19 -0
- package/dist/plugins/pushbullet/src/index.js +19 -27
- package/dist/plugins/pushcut/src/credentials.js +19 -0
- package/dist/plugins/pushcut/src/index.js +7 -8
- package/dist/plugins/pushover/src/credentials.js +14 -0
- package/dist/plugins/pushover/src/index.js +7 -12
- package/dist/plugins/quickbase/src/credentials.js +15 -0
- package/dist/plugins/quickbase/src/index.js +24 -34
- package/dist/plugins/quickbooks/src/credentials.js +22 -0
- package/dist/plugins/quickbooks/src/index.js +17 -46
- package/dist/plugins/raindrop/src/credentials.js +19 -0
- package/dist/plugins/raindrop/src/index.js +30 -32
- package/dist/plugins/recraft/src/credentials.js +13 -0
- package/dist/plugins/recraft/src/index.js +39 -28
- package/dist/plugins/reddit/src/credentials.js +26 -0
- package/dist/plugins/reddit/src/index.js +30 -34
- package/dist/plugins/replicate/src/credentials.js +23 -0
- package/dist/plugins/replicate/src/index.js +18 -28
- package/dist/plugins/rocketchat/src/credentials.js +17 -0
- package/dist/plugins/rocketchat/src/index.js +8 -19
- package/dist/plugins/rundeck/src/credentials.js +16 -0
- package/dist/plugins/rundeck/src/index.js +12 -28
- package/dist/plugins/salesforce/src/credentials.js +73 -0
- package/dist/plugins/salesforce/src/index.js +6 -0
- package/dist/plugins/salesforce/src/metadata.js +3 -16
- package/dist/plugins/salesforce/src/shared.js +25 -100
- package/dist/plugins/salesforce/src/sobjects.js +10 -9
- package/dist/plugins/salesmate/src/credentials.js +17 -0
- package/dist/plugins/salesmate/src/index.js +20 -37
- package/dist/plugins/securityScorecard/src/credentials.js +22 -0
- package/dist/plugins/securityScorecard/src/index.js +24 -37
- package/dist/plugins/segment/src/credentials.js +16 -0
- package/dist/plugins/segment/src/index.js +12 -16
- package/dist/plugins/sendgrid/src/credentials.js +13 -0
- package/dist/plugins/sendgrid/src/index.js +31 -35
- package/dist/plugins/sendy/src/credentials.js +18 -0
- package/dist/plugins/sendy/src/index.js +18 -24
- package/dist/plugins/sentry/src/credentials.js +16 -0
- package/dist/plugins/sentry/src/index.js +30 -98
- package/dist/plugins/servicenow/src/credentials.js +13 -0
- package/dist/plugins/servicenow/src/index.js +22 -41
- package/dist/plugins/shiftAtlas/src/graph.js +2 -2
- package/dist/plugins/shiftAtlas/src/index.js +2 -0
- package/dist/plugins/shiftAtlas/src/shared.js +3 -1
- package/dist/plugins/shiftBwm/src/index.js +4 -2
- package/dist/plugins/shiftBwm/src/shared.js +41 -16
- package/dist/plugins/shiftCrm/src/access.js +2 -2
- package/dist/plugins/shiftCrm/src/accounts.js +3 -3
- package/dist/plugins/shiftCrm/src/activities.js +3 -3
- package/dist/plugins/shiftCrm/src/credentials.js +6 -0
- package/dist/plugins/shiftCrm/src/index.js +2 -0
- package/dist/plugins/shiftCrm/src/opportunities.js +3 -3
- package/dist/plugins/shiftCrm/src/people.js +3 -3
- package/dist/plugins/shiftCrm/src/records.js +2 -2
- package/dist/plugins/shiftCrm/src/shared.js +2 -1
- package/dist/plugins/shiftCrm/src/tasks.js +3 -3
- package/dist/plugins/shiftObjects/src/credentials.js +2 -0
- package/dist/plugins/shiftObjects/src/index.js +2 -0
- package/dist/plugins/shiftObjects/src/objects.js +4 -3
- package/dist/plugins/shiftOcr/src/credentials.js +8 -0
- package/dist/plugins/shiftOcr/src/index.js +14 -8
- package/dist/plugins/shiftPages/src/index.js +2 -0
- package/dist/plugins/shiftPages/src/pages.js +5 -3
- package/dist/plugins/shiftPages/src/shared.js +3 -1
- package/dist/plugins/shiftTranscription/src/index.js +2 -0
- package/dist/plugins/shiftTranscription/src/shared.js +11 -1
- package/dist/plugins/shiftTranscription/src/transcription.js +5 -5
- package/dist/plugins/shiftWork/src/index.js +2 -0
- package/dist/plugins/shiftWork/src/issue-views.js +5 -5
- package/dist/plugins/shiftWork/src/issues.js +11 -7
- package/dist/plugins/shiftWork/src/projects.js +3 -3
- package/dist/plugins/shiftWork/src/shared.js +3 -1
- package/dist/plugins/shopify/src/credentials.js +16 -0
- package/dist/plugins/shopify/src/index.js +32 -59
- package/dist/plugins/signl4/src/credentials.js +17 -0
- package/dist/plugins/signl4/src/index.js +28 -29
- package/dist/plugins/slack/src/credentials.js +19 -0
- package/dist/plugins/slack/src/index.js +51 -60
- package/dist/plugins/sms77/src/credentials.js +17 -0
- package/dist/plugins/sms77/src/index.js +11 -16
- package/dist/plugins/splunk/src/credentials.js +19 -0
- package/dist/plugins/splunk/src/index.js +32 -74
- package/dist/plugins/spotify/src/credentials.js +19 -0
- package/dist/plugins/spotify/src/index.js +40 -55
- package/dist/plugins/stackby/src/credentials.js +13 -0
- package/dist/plugins/stackby/src/index.js +14 -23
- package/dist/plugins/steel/src/auth.js +27 -0
- package/dist/plugins/steel/src/browser.js +4 -3
- package/dist/plugins/steel/src/captchas.js +4 -3
- package/dist/plugins/steel/src/extensions.js +3 -2
- package/dist/plugins/steel/src/files.js +9 -10
- package/dist/plugins/steel/src/index.js +2 -0
- package/dist/plugins/steel/src/page/tools.js +3 -3
- package/dist/plugins/steel/src/profiles.js +4 -3
- package/dist/plugins/steel/src/sessions.js +13 -13
- package/dist/plugins/steel/src/shared.js +21 -51
- package/dist/plugins/storyblok/src/credentials.js +37 -0
- package/dist/plugins/storyblok/src/index.js +22 -66
- package/dist/plugins/strapi/src/credentials.js +71 -0
- package/dist/plugins/strapi/src/index.js +36 -70
- package/dist/plugins/strava/src/credentials.js +19 -0
- package/dist/plugins/strava/src/index.js +16 -33
- package/dist/plugins/stripe/src/credentials.js +19 -0
- package/dist/plugins/stripe/src/index.js +44 -58
- package/dist/plugins/supabase/src/credentials.js +30 -0
- package/dist/plugins/supabase/src/index.js +18 -40
- package/dist/plugins/syncromsp/src/credentials.js +16 -0
- package/dist/plugins/syncromsp/src/index.js +37 -70
- package/dist/plugins/tapfiliate/src/credentials.js +13 -0
- package/dist/plugins/tapfiliate/src/index.js +21 -31
- package/dist/plugins/telegram/src/credentials.js +20 -0
- package/dist/plugins/telegram/src/index.js +31 -39
- package/dist/plugins/thehive/src/credentials.js +14 -0
- package/dist/plugins/thehive/src/index.js +33 -50
- package/dist/plugins/thehiveProject/src/credentials.js +16 -0
- package/dist/plugins/thehiveProject/src/index.js +53 -122
- package/dist/plugins/todoist/src/credentials.js +26 -0
- package/dist/plugins/todoist/src/index.js +49 -79
- package/dist/plugins/together/src/credentials.js +16 -0
- package/dist/plugins/together/src/index.js +31 -33
- package/dist/plugins/travisci/src/credentials.js +24 -0
- package/dist/plugins/travisci/src/index.js +16 -30
- package/dist/plugins/trello/src/credentials.js +29 -0
- package/dist/plugins/trello/src/index.js +49 -64
- package/dist/plugins/twake/src/credentials.js +16 -0
- package/dist/plugins/twake/src/index.js +8 -10
- package/dist/plugins/twilio/src/credentials.js +23 -0
- package/dist/plugins/twilio/src/index.js +12 -26
- package/dist/plugins/twist/src/credentials.js +13 -0
- package/dist/plugins/twist/src/index.js +32 -44
- package/dist/plugins/twitter/src/credentials.js +16 -0
- package/dist/plugins/twitter/src/index.js +25 -37
- package/dist/plugins/typesafe/src/credentials.js +28 -0
- package/dist/plugins/typesafe/src/index.js +3 -1
- package/dist/plugins/typesafe/src/shared.js +23 -35
- package/dist/plugins/unleashedSoftware/src/credentials.js +21 -0
- package/dist/plugins/unleashedSoftware/src/index.js +13 -37
- package/dist/plugins/uplead/src/credentials.js +16 -0
- package/dist/plugins/uplead/src/index.js +11 -16
- package/dist/plugins/uproc/src/credentials.js +14 -0
- package/dist/plugins/uproc/src/index.js +7 -10
- package/dist/plugins/uptimerobot/src/credentials.js +14 -0
- package/dist/plugins/uptimerobot/src/index.js +28 -39
- package/dist/plugins/urlscanio/src/credentials.js +13 -0
- package/dist/plugins/urlscanio/src/index.js +13 -22
- package/dist/plugins/vercel/src/credentials.js +19 -0
- package/dist/plugins/vercel/src/deployments.js +27 -11
- package/dist/plugins/vercel/src/env.js +31 -12
- package/dist/plugins/vercel/src/index.js +2 -0
- package/dist/plugins/vercel/src/projects.js +6 -3
- package/dist/plugins/vercel/src/shared.js +32 -37
- package/dist/plugins/vero/src/credentials.js +17 -0
- package/dist/plugins/vero/src/index.js +18 -21
- package/dist/plugins/vonage/src/credentials.js +17 -0
- package/dist/plugins/vonage/src/index.js +14 -18
- package/dist/plugins/wekan/src/credentials.js +16 -0
- package/dist/plugins/wekan/src/index.js +33 -46
- package/dist/plugins/wolt/src/account.js +6 -0
- package/dist/plugins/wolt/src/catalog.js +2 -2
- package/dist/plugins/wolt/src/credentials.js +64 -0
- package/dist/plugins/wolt/src/index.js +8 -3
- package/dist/plugins/wolt/src/orders.js +2 -2
- package/dist/plugins/wolt/src/public.js +91 -0
- package/dist/plugins/wolt/src/shared.js +49 -158
- package/dist/plugins/woocommerce/src/credentials.js +16 -0
- package/dist/plugins/woocommerce/src/index.js +19 -37
- package/dist/plugins/wordpress/src/credentials.js +16 -0
- package/dist/plugins/wordpress/src/index.js +23 -42
- package/dist/plugins/xai/src/credentials.js +13 -0
- package/dist/plugins/xai/src/index.js +32 -31
- package/dist/plugins/xero/src/credentials.js +17 -0
- package/dist/plugins/xero/src/index.js +19 -36
- package/dist/plugins/yourls/src/credentials.js +17 -0
- package/dist/plugins/yourls/src/index.js +13 -23
- package/dist/plugins/zammad/src/credentials.js +15 -0
- package/dist/plugins/zammad/src/index.js +27 -47
- package/dist/plugins/zendesk/src/credentials.js +26 -0
- package/dist/plugins/zendesk/src/index.js +29 -48
- package/dist/plugins/zoho/src/credentials.js +17 -0
- package/dist/plugins/zoho/src/index.js +18 -38
- package/dist/plugins/zoom/src/credentials.js +19 -0
- package/dist/plugins/zoom/src/index.js +15 -30
- package/dist/plugins/zulip/src/credentials.js +16 -0
- package/dist/plugins/zulip/src/index.js +36 -42
- package/dist/sdk.d.ts +8 -0
- package/dist/sdk.js +3 -0
- package/package.json +2 -1
- package/dist/plugins/_shared/authedFetch.js +0 -33
- package/dist/plugins/_shared/tokenRefresh.js +0 -41
- package/dist/tests/helpers/engine-harness.d.ts +0 -1
- package/dist/tests/helpers/engine-harness.js +0 -236
|
@@ -35,7 +35,8 @@
|
|
|
35
35
|
* raw rows / objects and callers post-filter.
|
|
36
36
|
*/
|
|
37
37
|
import * as t from "typebox";
|
|
38
|
-
import {
|
|
38
|
+
import { pathSegment } from "../../_shared/credentials.js";
|
|
39
|
+
import { googleCredential, googleJsonRequest, googleOAuth, } from "../../_shared/googleAuth.js";
|
|
39
40
|
import { Id, JsonValue, NonEmptyString, NonNegativeInteger, PositiveInteger, RawGoogleObject, StringArray, stringEnum, } from "../../_shared/googleSchemas.js";
|
|
40
41
|
const ROW_NUMBER = "row_number";
|
|
41
42
|
const sheetReferenceSchema = t.Union([NonEmptyString, NonNegativeInteger]);
|
|
@@ -80,19 +81,16 @@ async function sheetsRequest(ctx, method, path, body, qs, baseOverride) {
|
|
|
80
81
|
}
|
|
81
82
|
// ─── A1 helpers ─────────────────────────────────────────────────
|
|
82
83
|
/**
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
* we split on `!` and encode only the left side. A bare sheet name
|
|
87
|
-
* gets wrapped in single quotes so Sheets doesn't try to parse
|
|
88
|
-
* something like `ABC` as an A1 range.
|
|
84
|
+
* A range like `Sheet1!A1:B5` as one encoded path segment, as Google's
|
|
85
|
+
* own clients send it. A bare sheet name is wrapped in single quotes so
|
|
86
|
+
* Sheets doesn't parse something like `ABC` as an A1 range.
|
|
89
87
|
*/
|
|
90
88
|
function encodeA1(range) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return
|
|
89
|
+
return pathSegment(range.includes("!") ? range : `'${range}'`);
|
|
90
|
+
}
|
|
91
|
+
/** A spreadsheet's API path, its ID one path segment. */
|
|
92
|
+
function spreadsheetPath(spreadsheetId) {
|
|
93
|
+
return `/v4/spreadsheets/${pathSegment(spreadsheetId)}`;
|
|
96
94
|
}
|
|
97
95
|
function columnNumberToLetter(n) {
|
|
98
96
|
let s = "";
|
|
@@ -155,11 +153,11 @@ function rowsToObjects(rows, headerRow) {
|
|
|
155
153
|
}
|
|
156
154
|
// ─── Sheet operations (shared helpers) ──────────────────────────
|
|
157
155
|
async function getValues(ctx, spreadsheetId, range, valueRenderOption = "FORMATTED_VALUE", dateTimeRenderOption = "FORMATTED_STRING") {
|
|
158
|
-
const res = (await sheetsRequest(ctx, "GET",
|
|
156
|
+
const res = (await sheetsRequest(ctx, "GET", `${spreadsheetPath(spreadsheetId)}/values/${encodeA1(range)}`, undefined, { valueRenderOption, dateTimeRenderOption }));
|
|
159
157
|
return res.values ?? [];
|
|
160
158
|
}
|
|
161
159
|
async function getSheetProperties(ctx, spreadsheetId) {
|
|
162
|
-
const res = (await sheetsRequest(ctx, "GET",
|
|
160
|
+
const res = (await sheetsRequest(ctx, "GET", spreadsheetPath(spreadsheetId), undefined, { fields: "sheets.properties" }));
|
|
163
161
|
return res.sheets.map((s) => s.properties);
|
|
164
162
|
}
|
|
165
163
|
async function resolveSheetId(ctx, spreadsheetId, sheetNameOrId) {
|
|
@@ -176,10 +174,10 @@ async function resolveSheetId(ctx, spreadsheetId, sheetNameOrId) {
|
|
|
176
174
|
return match.sheetId;
|
|
177
175
|
}
|
|
178
176
|
async function batchValuesUpdate(ctx, spreadsheetId, data, valueInputOption) {
|
|
179
|
-
return sheetsRequest(ctx, "POST",
|
|
177
|
+
return sheetsRequest(ctx, "POST", `${spreadsheetPath(spreadsheetId)}/values:batchUpdate`, { data, valueInputOption });
|
|
180
178
|
}
|
|
181
179
|
async function spreadsheetBatchUpdate(ctx, spreadsheetId, requests) {
|
|
182
|
-
return sheetsRequest(ctx, "POST",
|
|
180
|
+
return sheetsRequest(ctx, "POST", `${spreadsheetPath(spreadsheetId)}:batchUpdate`, { requests });
|
|
183
181
|
}
|
|
184
182
|
async function appendEmptyRow(ctx, spreadsheetId, sheetId) {
|
|
185
183
|
// Called before every non-API-append write to protect the
|
|
@@ -339,39 +337,8 @@ function a1RangeToGridRange(a1, sheetId) {
|
|
|
339
337
|
export default function googleSheets(rl) {
|
|
340
338
|
rl.setName("googleSheets");
|
|
341
339
|
rl.setVersion("0.1.0");
|
|
342
|
-
rl.
|
|
343
|
-
|
|
344
|
-
tokenUrl: "https://oauth2.googleapis.com/token",
|
|
345
|
-
scopes: SCOPES,
|
|
346
|
-
authParams: { access_type: "offline", prompt: "consent" },
|
|
347
|
-
setupHelp: [
|
|
348
|
-
"You need a Google Cloud OAuth client. Takes ~5 minutes, one time.",
|
|
349
|
-
"",
|
|
350
|
-
"1. Create or pick a Google Cloud project:",
|
|
351
|
-
" https://console.cloud.google.com/projectcreate",
|
|
352
|
-
"",
|
|
353
|
-
"2. Enable the Google Sheets API (and Drive API, required for",
|
|
354
|
-
" spreadsheet.delete):",
|
|
355
|
-
" https://console.cloud.google.com/apis/library/sheets.googleapis.com",
|
|
356
|
-
" https://console.cloud.google.com/apis/library/drive.googleapis.com",
|
|
357
|
-
"",
|
|
358
|
-
"3. Configure the OAuth consent screen:",
|
|
359
|
-
" https://console.cloud.google.com/apis/credentials/consent",
|
|
360
|
-
" • Audience: External",
|
|
361
|
-
"",
|
|
362
|
-
"4. Add yourself as a test user:",
|
|
363
|
-
" https://console.cloud.google.com/auth/audience",
|
|
364
|
-
"",
|
|
365
|
-
"5. Create the OAuth client:",
|
|
366
|
-
" https://console.cloud.google.com/apis/credentials",
|
|
367
|
-
" • + Create credentials → OAuth client ID",
|
|
368
|
-
" • Application type: Web application",
|
|
369
|
-
" • Authorized redirect URIs → + Add URI: {{redirectUri}}",
|
|
370
|
-
"",
|
|
371
|
-
"6. Paste the Client ID and Client Secret below, or export",
|
|
372
|
-
" GOOGLE_SHEETS_CLIENT_ID and GOOGLE_SHEETS_CLIENT_SECRET.",
|
|
373
|
-
],
|
|
374
|
-
});
|
|
340
|
+
rl.setCredential(googleCredential("googleSheets", SCOPES));
|
|
341
|
+
rl.setOAuth(googleOAuth("googleSheets", SCOPES, "GOOGLE_SHEETS"));
|
|
375
342
|
rl.setConnectionSchema({
|
|
376
343
|
authMethod: { type: "string", required: false, description: "delegated or serviceAccount (legacy configs infer the method)" },
|
|
377
344
|
clientId: {
|
|
@@ -464,7 +431,7 @@ export default function googleSheets(rl) {
|
|
|
464
431
|
qs.ranges = p.ranges;
|
|
465
432
|
if (p.fields)
|
|
466
433
|
qs.fields = p.fields;
|
|
467
|
-
return sheetsRequest(ctx, "GET",
|
|
434
|
+
return sheetsRequest(ctx, "GET", spreadsheetPath(p.spreadsheetId), undefined, qs);
|
|
468
435
|
},
|
|
469
436
|
});
|
|
470
437
|
rl.registerAction("spreadsheet.delete", {
|
|
@@ -473,7 +440,7 @@ export default function googleSheets(rl) {
|
|
|
473
440
|
inputSchema: t.Object({ spreadsheetId: Id }, { additionalProperties: false }),
|
|
474
441
|
async execute(input, ctx) {
|
|
475
442
|
const p = (input ?? {});
|
|
476
|
-
await sheetsRequest(ctx, "DELETE", `/drive/v3/files/${p.spreadsheetId}`, undefined, undefined, "https://www.googleapis.com");
|
|
443
|
+
await sheetsRequest(ctx, "DELETE", `/drive/v3/files/${pathSegment(p.spreadsheetId)}`, undefined, undefined, "https://www.googleapis.com");
|
|
477
444
|
return { success: true };
|
|
478
445
|
},
|
|
479
446
|
});
|
|
@@ -627,12 +594,12 @@ export default function googleSheets(rl) {
|
|
|
627
594
|
if (newCols.length > 0) {
|
|
628
595
|
headers = [...headers, ...newCols];
|
|
629
596
|
// Write the extended header row back to the sheet.
|
|
630
|
-
await sheetsRequest(ctx, "PUT",
|
|
597
|
+
await sheetsRequest(ctx, "PUT", `${spreadsheetPath(spreadsheetId)}/values/${encodeA1(`${sheetName}!A${headerRowIdx + 1}`)}`, { range: `${sheetName}!A${headerRowIdx + 1}`, values: [headers] }, { valueInputOption });
|
|
631
598
|
}
|
|
632
599
|
values = objectsToRows(rows, headers);
|
|
633
600
|
}
|
|
634
601
|
if (p.useAppend) {
|
|
635
|
-
return sheetsRequest(ctx, "POST",
|
|
602
|
+
return sheetsRequest(ctx, "POST", `${spreadsheetPath(spreadsheetId)}/values/${encodeA1(sheetName)}:append`, { range: sheetName, values }, { valueInputOption, insertDataOption: "INSERT_ROWS" });
|
|
636
603
|
}
|
|
637
604
|
// PUT at lastRow+1: calculate lastRow from current sheet contents.
|
|
638
605
|
const existing = await getValues(ctx, spreadsheetId, sheetName, "UNFORMATTED_VALUE");
|
|
@@ -640,7 +607,7 @@ export default function googleSheets(rl) {
|
|
|
640
607
|
const sheetId = await resolveSheetId(ctx, spreadsheetId, sheetName);
|
|
641
608
|
await appendEmptyRow(ctx, spreadsheetId, sheetId);
|
|
642
609
|
const targetRange = `${sheetName}!${lastRow + 1}:${lastRow + values.length}`;
|
|
643
|
-
return sheetsRequest(ctx, "PUT",
|
|
610
|
+
return sheetsRequest(ctx, "PUT", `${spreadsheetPath(spreadsheetId)}/values/${encodeA1(targetRange)}`, { range: targetRange, values }, { valueInputOption });
|
|
644
611
|
},
|
|
645
612
|
});
|
|
646
613
|
// ── Update ────────────────────────────────────────────
|
|
@@ -782,13 +749,13 @@ export default function googleSheets(rl) {
|
|
|
782
749
|
}
|
|
783
750
|
if (mode === "wholeSheet" && p.keepFirstRow) {
|
|
784
751
|
const firstRow = await getValues(ctx, p.spreadsheetId, `${sheetName}!1:1`, "FORMATTED_VALUE");
|
|
785
|
-
await sheetsRequest(ctx, "POST",
|
|
752
|
+
await sheetsRequest(ctx, "POST", `${spreadsheetPath(p.spreadsheetId)}/values/${encodeA1(range)}:clear`, {});
|
|
786
753
|
if (firstRow.length > 0) {
|
|
787
|
-
await sheetsRequest(ctx, "PUT",
|
|
754
|
+
await sheetsRequest(ctx, "PUT", `${spreadsheetPath(p.spreadsheetId)}/values/${encodeA1(`${sheetName}!1:1`)}`, { range: `${sheetName}!1:1`, values: firstRow }, { valueInputOption: "RAW" });
|
|
788
755
|
}
|
|
789
756
|
return { success: true };
|
|
790
757
|
}
|
|
791
|
-
return sheetsRequest(ctx, "POST",
|
|
758
|
+
return sheetsRequest(ctx, "POST", `${spreadsheetPath(p.spreadsheetId)}/values/${encodeA1(range)}:clear`, {});
|
|
792
759
|
},
|
|
793
760
|
});
|
|
794
761
|
// ── Delete rows/columns ───────────────────────────────
|
|
@@ -887,7 +854,7 @@ export default function googleSheets(rl) {
|
|
|
887
854
|
// If we added new columns, extend the header row on the sheet first.
|
|
888
855
|
if (prepared.newColumns.length > 0) {
|
|
889
856
|
headers = [...headers, ...prepared.newColumns];
|
|
890
|
-
await sheetsRequest(ctx, "PUT",
|
|
857
|
+
await sheetsRequest(ctx, "PUT", `${spreadsheetPath(spreadsheetId)}/values/${encodeA1(`${sheetName}!${headerRowIdx + 1}:${headerRowIdx + 1}`)}`, {
|
|
891
858
|
range: `${sheetName}!${headerRowIdx + 1}:${headerRowIdx + 1}`,
|
|
892
859
|
values: [headers],
|
|
893
860
|
}, { valueInputOption });
|
|
@@ -904,13 +871,13 @@ export default function googleSheets(rl) {
|
|
|
904
871
|
if (upsert && prepared.appendData.length > 0) {
|
|
905
872
|
const values = objectsToRows(prepared.appendData, headers);
|
|
906
873
|
if (p.useAppend) {
|
|
907
|
-
await sheetsRequest(ctx, "POST",
|
|
874
|
+
await sheetsRequest(ctx, "POST", `${spreadsheetPath(spreadsheetId)}/values/${encodeA1(sheetName)}:append`, { range: sheetName, values }, { valueInputOption, insertDataOption: "INSERT_ROWS" });
|
|
908
875
|
}
|
|
909
876
|
else {
|
|
910
877
|
const lastRow = sheetData.length;
|
|
911
878
|
await appendEmptyRow(ctx, spreadsheetId, sheetId);
|
|
912
879
|
const targetRange = `${sheetName}!${lastRow + 1}:${lastRow + values.length}`;
|
|
913
|
-
await sheetsRequest(ctx, "PUT",
|
|
880
|
+
await sheetsRequest(ctx, "PUT", `${spreadsheetPath(spreadsheetId)}/values/${encodeA1(targetRange)}`, { range: targetRange, values }, { valueInputOption });
|
|
914
881
|
}
|
|
915
882
|
}
|
|
916
883
|
return {
|
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import { writeFileSync } from "node:fs";
|
|
23
23
|
import * as t from "typebox";
|
|
24
|
-
import {
|
|
24
|
+
import { pathSegment } from "../../_shared/credentials.js";
|
|
25
|
+
import { googleCredential, googleDownload, googleJsonRequest, googleOAuth, } from "../../_shared/googleAuth.js";
|
|
25
26
|
import { Id, NonEmptyString, PositiveInteger, RawGoogleObject, StringArray, stringEnum, } from "../../_shared/googleSchemas.js";
|
|
26
27
|
// ─── Request ─────────────────────────────────────────────────────
|
|
27
28
|
const API_BASE = "https://slides.googleapis.com/v1";
|
|
@@ -38,44 +39,15 @@ function extractPresentationId(input) {
|
|
|
38
39
|
if (!input)
|
|
39
40
|
throw new Error("googleSlides: presentationId or URL is required");
|
|
40
41
|
const m = input.match(PRES_URL_REGEX);
|
|
41
|
-
return m ? m[1] : input;
|
|
42
|
+
return pathSegment(m ? m[1] : input);
|
|
42
43
|
}
|
|
43
44
|
// ─── Plugin ──────────────────────────────────────────────────────
|
|
44
45
|
const SCOPES = ["https://www.googleapis.com/auth/presentations"];
|
|
45
46
|
export default function googleSlides(rl) {
|
|
46
47
|
rl.setName("googleSlides");
|
|
47
48
|
rl.setVersion("0.1.0");
|
|
48
|
-
rl.
|
|
49
|
-
|
|
50
|
-
tokenUrl: "https://oauth2.googleapis.com/token",
|
|
51
|
-
scopes: SCOPES,
|
|
52
|
-
authParams: { access_type: "offline", prompt: "consent" },
|
|
53
|
-
setupHelp: [
|
|
54
|
-
"You need a Google Cloud OAuth client. Takes ~5 minutes, one time.",
|
|
55
|
-
"",
|
|
56
|
-
"1. Create or pick a Google Cloud project:",
|
|
57
|
-
" https://console.cloud.google.com/projectcreate",
|
|
58
|
-
"",
|
|
59
|
-
"2. Enable the Google Slides API:",
|
|
60
|
-
" https://console.cloud.google.com/apis/library/slides.googleapis.com",
|
|
61
|
-
"",
|
|
62
|
-
"3. Configure the OAuth consent screen:",
|
|
63
|
-
" https://console.cloud.google.com/apis/credentials/consent",
|
|
64
|
-
" • Audience: External",
|
|
65
|
-
"",
|
|
66
|
-
"4. Add yourself as a test user:",
|
|
67
|
-
" https://console.cloud.google.com/auth/audience",
|
|
68
|
-
"",
|
|
69
|
-
"5. Create the OAuth client:",
|
|
70
|
-
" https://console.cloud.google.com/apis/credentials",
|
|
71
|
-
" • + Create credentials → OAuth client ID",
|
|
72
|
-
" • Application type: Web application",
|
|
73
|
-
" • Authorized redirect URIs → + Add URI: {{redirectUri}}",
|
|
74
|
-
"",
|
|
75
|
-
"6. Paste the Client ID and Client Secret below, or export",
|
|
76
|
-
" GOOGLE_SLIDES_CLIENT_ID and GOOGLE_SLIDES_CLIENT_SECRET.",
|
|
77
|
-
],
|
|
78
|
-
});
|
|
49
|
+
rl.setCredential(googleCredential("googleSlides", SCOPES));
|
|
50
|
+
rl.setOAuth(googleOAuth("googleSlides", SCOPES, "GOOGLE_SLIDES"));
|
|
79
51
|
rl.setConnectionSchema({
|
|
80
52
|
authMethod: { type: "string", required: false, description: "delegated or serviceAccount (legacy configs infer the method)" },
|
|
81
53
|
clientId: {
|
|
@@ -224,7 +196,7 @@ export default function googleSlides(rl) {
|
|
|
224
196
|
async execute(input, ctx) {
|
|
225
197
|
const p = (input ?? {});
|
|
226
198
|
const id = extractPresentationId(p.presentation);
|
|
227
|
-
return slidesRequest(ctx, "GET", `/presentations/${id}/pages/${p.pageObjectId}`);
|
|
199
|
+
return slidesRequest(ctx, "GET", `/presentations/${id}/pages/${pathSegment(p.pageObjectId)}`);
|
|
228
200
|
},
|
|
229
201
|
});
|
|
230
202
|
rl.registerAction("page.getThumbnail", {
|
|
@@ -251,7 +223,7 @@ export default function googleSlides(rl) {
|
|
|
251
223
|
qs["thumbnailProperties.mimeType"] = p.mimeType;
|
|
252
224
|
if (p.thumbnailSize)
|
|
253
225
|
qs["thumbnailProperties.thumbnailSize"] = p.thumbnailSize;
|
|
254
|
-
const res = (await slidesRequest(ctx, "GET", `/presentations/${id}/pages/${p.pageObjectId}/thumbnail`, undefined, qs));
|
|
226
|
+
const res = (await slidesRequest(ctx, "GET", `/presentations/${id}/pages/${pathSegment(p.pageObjectId)}/thumbnail`, undefined, qs));
|
|
255
227
|
if (!p.savePath && !p.download)
|
|
256
228
|
return res;
|
|
257
229
|
// contentUrl is a signed Google URL — fetch without auth headers.
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
* normalize ISO input via `Date.toISOString()` when detected.
|
|
21
21
|
*/
|
|
22
22
|
import * as t from "typebox";
|
|
23
|
-
import {
|
|
23
|
+
import { pathSegment } from "../../_shared/credentials.js";
|
|
24
|
+
import { googleCredential, googleJsonRequest, googleOAuth, } from "../../_shared/googleAuth.js";
|
|
24
25
|
import { GoogleTimestamp, Id, stringEnum, } from "../../_shared/googleSchemas.js";
|
|
25
26
|
// ─── Request ─────────────────────────────────────────────────────
|
|
26
27
|
const API_BASE = "https://tasks.googleapis.com/tasks/v1";
|
|
@@ -69,37 +70,8 @@ const pageSizeSchema = t.Integer({ minimum: 1, maximum: 100 });
|
|
|
69
70
|
export default function googleTasks(rl) {
|
|
70
71
|
rl.setName("googleTasks");
|
|
71
72
|
rl.setVersion("0.1.0");
|
|
72
|
-
rl.
|
|
73
|
-
|
|
74
|
-
tokenUrl: "https://oauth2.googleapis.com/token",
|
|
75
|
-
scopes: SCOPES,
|
|
76
|
-
authParams: { access_type: "offline", prompt: "consent" },
|
|
77
|
-
setupHelp: [
|
|
78
|
-
"You need a Google Cloud OAuth client. Takes ~5 minutes, one time.",
|
|
79
|
-
"",
|
|
80
|
-
"1. Create or pick a Google Cloud project:",
|
|
81
|
-
" https://console.cloud.google.com/projectcreate",
|
|
82
|
-
"",
|
|
83
|
-
"2. Enable the Google Tasks API:",
|
|
84
|
-
" https://console.cloud.google.com/apis/library/tasks.googleapis.com",
|
|
85
|
-
"",
|
|
86
|
-
"3. Configure the OAuth consent screen:",
|
|
87
|
-
" https://console.cloud.google.com/apis/credentials/consent",
|
|
88
|
-
" • Audience: External",
|
|
89
|
-
"",
|
|
90
|
-
"4. Add yourself as a test user:",
|
|
91
|
-
" https://console.cloud.google.com/auth/audience",
|
|
92
|
-
"",
|
|
93
|
-
"5. Create the OAuth client:",
|
|
94
|
-
" https://console.cloud.google.com/apis/credentials",
|
|
95
|
-
" • + Create credentials → OAuth client ID",
|
|
96
|
-
" • Application type: Web application",
|
|
97
|
-
" • Authorized redirect URIs → + Add URI: {{redirectUri}}",
|
|
98
|
-
"",
|
|
99
|
-
"6. Paste the Client ID and Client Secret below, or export",
|
|
100
|
-
" GOOGLE_TASKS_CLIENT_ID and GOOGLE_TASKS_CLIENT_SECRET.",
|
|
101
|
-
],
|
|
102
|
-
});
|
|
73
|
+
rl.setCredential(googleCredential("googleTasks", SCOPES));
|
|
74
|
+
rl.setOAuth(googleOAuth("googleTasks", SCOPES, "GOOGLE_TASKS"));
|
|
103
75
|
rl.setConnectionSchema({
|
|
104
76
|
authMethod: { type: "string", required: false, description: "delegated or serviceAccount (legacy configs infer the method)" },
|
|
105
77
|
clientId: { type: "string", required: false, env: "GOOGLE_TASKS_CLIENT_ID" },
|
|
@@ -140,7 +112,7 @@ export default function googleTasks(rl) {
|
|
|
140
112
|
inputSchema: t.Object({ taskListId: Id }, { additionalProperties: false }),
|
|
141
113
|
async execute(input, ctx) {
|
|
142
114
|
const p = (input ?? {});
|
|
143
|
-
return tasksRequest(ctx, "GET", `/users/@me/lists/${p.taskListId}`);
|
|
115
|
+
return tasksRequest(ctx, "GET", `/users/@me/lists/${pathSegment(p.taskListId)}`);
|
|
144
116
|
},
|
|
145
117
|
});
|
|
146
118
|
rl.registerAction("taskList.create", {
|
|
@@ -161,7 +133,7 @@ export default function googleTasks(rl) {
|
|
|
161
133
|
}, { additionalProperties: false }),
|
|
162
134
|
async execute(input, ctx) {
|
|
163
135
|
const p = (input ?? {});
|
|
164
|
-
return tasksRequest(ctx, "PATCH", `/users/@me/lists/${p.taskListId}`, {
|
|
136
|
+
return tasksRequest(ctx, "PATCH", `/users/@me/lists/${pathSegment(p.taskListId)}`, {
|
|
165
137
|
title: p.title,
|
|
166
138
|
});
|
|
167
139
|
},
|
|
@@ -172,7 +144,7 @@ export default function googleTasks(rl) {
|
|
|
172
144
|
inputSchema: t.Object({ taskListId: Id }, { additionalProperties: false }),
|
|
173
145
|
async execute(input, ctx) {
|
|
174
146
|
const p = (input ?? {});
|
|
175
|
-
await tasksRequest(ctx, "DELETE", `/users/@me/lists/${p.taskListId}`);
|
|
147
|
+
await tasksRequest(ctx, "DELETE", `/users/@me/lists/${pathSegment(p.taskListId)}`);
|
|
176
148
|
return { success: true };
|
|
177
149
|
},
|
|
178
150
|
});
|
|
@@ -217,7 +189,7 @@ export default function googleTasks(rl) {
|
|
|
217
189
|
qs.parent = p.parent;
|
|
218
190
|
if (p.previous)
|
|
219
191
|
qs.previous = p.previous;
|
|
220
|
-
return tasksRequest(ctx, "POST", `/lists/${p.taskListId}/tasks`, body, qs);
|
|
192
|
+
return tasksRequest(ctx, "POST", `/lists/${pathSegment(p.taskListId)}/tasks`, body, qs);
|
|
221
193
|
},
|
|
222
194
|
});
|
|
223
195
|
rl.registerAction("task.get", {
|
|
@@ -229,7 +201,7 @@ export default function googleTasks(rl) {
|
|
|
229
201
|
}, { additionalProperties: false }),
|
|
230
202
|
async execute(input, ctx) {
|
|
231
203
|
const p = (input ?? {});
|
|
232
|
-
return tasksRequest(ctx, "GET", `/lists/${p.taskListId}/tasks/${p.taskId}`);
|
|
204
|
+
return tasksRequest(ctx, "GET", `/lists/${pathSegment(p.taskListId)}/tasks/${pathSegment(p.taskId)}`);
|
|
233
205
|
},
|
|
234
206
|
});
|
|
235
207
|
rl.registerAction("task.list", {
|
|
@@ -263,7 +235,7 @@ export default function googleTasks(rl) {
|
|
|
263
235
|
}
|
|
264
236
|
if (p.pageToken)
|
|
265
237
|
qs.pageToken = p.pageToken;
|
|
266
|
-
const path = `/lists/${p.taskListId}/tasks`;
|
|
238
|
+
const path = `/lists/${pathSegment(p.taskListId)}/tasks`;
|
|
267
239
|
if (p.returnAll)
|
|
268
240
|
return paginateAll(ctx, path, qs);
|
|
269
241
|
if (p.maxResults)
|
|
@@ -315,7 +287,7 @@ export default function googleTasks(rl) {
|
|
|
315
287
|
if (Object.keys(body).length === 0) {
|
|
316
288
|
throw new Error("googleTasks: nothing to update");
|
|
317
289
|
}
|
|
318
|
-
return tasksRequest(ctx, "PATCH", `/lists/${p.taskListId}/tasks/${p.taskId}`, body);
|
|
290
|
+
return tasksRequest(ctx, "PATCH", `/lists/${pathSegment(p.taskListId)}/tasks/${pathSegment(p.taskId)}`, body);
|
|
319
291
|
},
|
|
320
292
|
});
|
|
321
293
|
rl.registerAction("task.delete", {
|
|
@@ -327,7 +299,7 @@ export default function googleTasks(rl) {
|
|
|
327
299
|
}, { additionalProperties: false }),
|
|
328
300
|
async execute(input, ctx) {
|
|
329
301
|
const p = (input ?? {});
|
|
330
|
-
await tasksRequest(ctx, "DELETE", `/lists/${p.taskListId}/tasks/${p.taskId}`);
|
|
302
|
+
await tasksRequest(ctx, "DELETE", `/lists/${pathSegment(p.taskListId)}/tasks/${pathSegment(p.taskId)}`);
|
|
331
303
|
return { success: true };
|
|
332
304
|
},
|
|
333
305
|
});
|
|
@@ -347,7 +319,7 @@ export default function googleTasks(rl) {
|
|
|
347
319
|
qs.parent = p.parent;
|
|
348
320
|
if (p.previous)
|
|
349
321
|
qs.previous = p.previous;
|
|
350
|
-
return tasksRequest(ctx, "POST", `/lists/${p.taskListId}/tasks/${p.taskId}/move`, undefined, qs);
|
|
322
|
+
return tasksRequest(ctx, "POST", `/lists/${pathSegment(p.taskListId)}/tasks/${pathSegment(p.taskId)}/move`, undefined, qs);
|
|
351
323
|
},
|
|
352
324
|
});
|
|
353
325
|
rl.registerAction("task.clear", {
|
|
@@ -356,7 +328,7 @@ export default function googleTasks(rl) {
|
|
|
356
328
|
inputSchema: t.Object({ taskListId: Id }, { additionalProperties: false }),
|
|
357
329
|
async execute(input, ctx) {
|
|
358
330
|
const p = (input ?? {});
|
|
359
|
-
await tasksRequest(ctx, "POST", `/lists/${p.taskListId}/clear`);
|
|
331
|
+
await tasksRequest(ctx, "POST", `/lists/${pathSegment(p.taskListId)}/clear`);
|
|
360
332
|
return { success: true };
|
|
361
333
|
},
|
|
362
334
|
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { httpsBase, staticCredential } from "../../_shared/credentials.js";
|
|
2
|
+
/**
|
|
3
|
+
* An application token that sends messages and a client token that reads
|
|
4
|
+
* and deletes them, each in the X-Gotify-Key header on its own target of
|
|
5
|
+
* the connection's HTTPS server.
|
|
6
|
+
*/
|
|
7
|
+
export const gotifyCredential = staticCredential({
|
|
8
|
+
id: "gotify",
|
|
9
|
+
auth: {
|
|
10
|
+
kind: "static",
|
|
11
|
+
parts: ["appToken", "clientToken"],
|
|
12
|
+
placements: [
|
|
13
|
+
{
|
|
14
|
+
in: "header",
|
|
15
|
+
part: "appToken",
|
|
16
|
+
name: "X-Gotify-Key",
|
|
17
|
+
targets: ["app"],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
in: "header",
|
|
21
|
+
part: "clientToken",
|
|
22
|
+
name: "X-Gotify-Key",
|
|
23
|
+
targets: ["client"],
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
local: { appToken: "appApiToken", clientToken: "clientApiToken" },
|
|
28
|
+
targets: (config) => ({
|
|
29
|
+
app: { baseUrl: httpsBase(config.url, ""), methods: ["POST"] },
|
|
30
|
+
client: { baseUrl: httpsBase(config.url, ""), methods: ["GET", "DELETE"] },
|
|
31
|
+
}),
|
|
32
|
+
});
|
|
@@ -1,35 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
const opts = {
|
|
1
|
+
import { credentialJson, pathSegment } from "../../_shared/credentials.js";
|
|
2
|
+
import { gotifyCredential } from "./credentials.js";
|
|
3
|
+
/** A Gotify call on the app target (sending) or the client target (reading, deleting). */
|
|
4
|
+
function apiRequest(ctx, target, method, path, body, query) {
|
|
5
|
+
return credentialJson(ctx, gotifyCredential, "gotify", {
|
|
6
|
+
target,
|
|
7
|
+
path,
|
|
10
8
|
method,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
}
|
|
23
|
-
const res = await fetch(fullUrl.toString(), opts);
|
|
24
|
-
if (!res.ok)
|
|
25
|
-
throw new Error(`Gotify API error ${res.status}: ${await res.text()}`);
|
|
26
|
-
if (res.status === 204)
|
|
27
|
-
return { success: true };
|
|
28
|
-
return res.json();
|
|
9
|
+
query,
|
|
10
|
+
json: body,
|
|
11
|
+
});
|
|
29
12
|
}
|
|
30
13
|
export default function gotify(rl) {
|
|
31
14
|
rl.setName("gotify");
|
|
32
15
|
rl.setVersion("0.1.0");
|
|
16
|
+
rl.setCredential(gotifyCredential);
|
|
33
17
|
rl.setConnectionSchema({
|
|
34
18
|
url: {
|
|
35
19
|
type: "string",
|
|
@@ -69,8 +53,6 @@ export default function gotify(rl) {
|
|
|
69
53
|
},
|
|
70
54
|
async execute(input, ctx) {
|
|
71
55
|
const { message, title, priority, contentType } = input;
|
|
72
|
-
const url = ctx.connection.config.url.replace(/\/$/, "");
|
|
73
|
-
const token = ctx.connection.config.appApiToken;
|
|
74
56
|
const body = { message };
|
|
75
57
|
if (title)
|
|
76
58
|
body.title = title;
|
|
@@ -78,7 +60,7 @@ export default function gotify(rl) {
|
|
|
78
60
|
body.priority = priority;
|
|
79
61
|
if (contentType)
|
|
80
62
|
body.extras = { "client::display": { contentType } };
|
|
81
|
-
return apiRequest(
|
|
63
|
+
return apiRequest(ctx, "app", "POST", "message", body);
|
|
82
64
|
},
|
|
83
65
|
});
|
|
84
66
|
rl.registerAction("message.delete", {
|
|
@@ -88,9 +70,7 @@ export default function gotify(rl) {
|
|
|
88
70
|
messageId: { type: "string", required: true, description: "Message ID" },
|
|
89
71
|
},
|
|
90
72
|
async execute(input, ctx) {
|
|
91
|
-
|
|
92
|
-
const token = ctx.connection.config.clientApiToken;
|
|
93
|
-
await apiRequest(url, token, "DELETE", `/message/${input.messageId}`);
|
|
73
|
+
await apiRequest(ctx, "client", "DELETE", `message/${pathSegment(input.messageId)}`);
|
|
94
74
|
return { success: true };
|
|
95
75
|
},
|
|
96
76
|
});
|
|
@@ -102,12 +82,10 @@ export default function gotify(rl) {
|
|
|
102
82
|
},
|
|
103
83
|
async execute(input, ctx) {
|
|
104
84
|
const { limit } = (input ?? {});
|
|
105
|
-
const url = ctx.connection.config.url.replace(/\/$/, "");
|
|
106
|
-
const token = ctx.connection.config.clientApiToken;
|
|
107
85
|
const qs = {};
|
|
108
86
|
if (limit)
|
|
109
87
|
qs.limit = limit;
|
|
110
|
-
const data = (await apiRequest(
|
|
88
|
+
const data = (await apiRequest(ctx, "client", "GET", "message", undefined, qs));
|
|
111
89
|
return data.messages;
|
|
112
90
|
},
|
|
113
91
|
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { staticCredential } from "../../_shared/credentials.js";
|
|
2
|
+
/** An OAuth2 access token, sent as a bearer to GoTo's one API origin. */
|
|
3
|
+
export const gotowebinarCredential = staticCredential({
|
|
4
|
+
id: "gotowebinar",
|
|
5
|
+
auth: { kind: "bearer" },
|
|
6
|
+
local: { secret: "accessToken" },
|
|
7
|
+
targets: {
|
|
8
|
+
api: {
|
|
9
|
+
baseUrl: "https://api.getgo.com/G2W/rest/v2/",
|
|
10
|
+
methods: ["GET", "POST", "PUT", "DELETE"],
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
});
|