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.
- 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 +9 -0
- 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 +179 -22
- package/dist/credentials/transport.d.ts +48 -2
- package/dist/credentials/transport.js +248 -70
- package/dist/credentials/types.d.ts +167 -10
- package/dist/index.d.ts +5 -5
- package/dist/index.js +2 -2
- package/dist/plugin/api.d.ts +7 -0
- package/dist/plugin/api.js +7 -0
- package/dist/plugin/types.d.ts +12 -0
- package/dist/plugins/_shared/credentialAdapter.js +79 -15
- package/dist/plugins/_shared/credentials.js +389 -0
- package/dist/plugins/_shared/googleAuth.js +9 -40
- package/dist/plugins/_shared/googleCredentials.js +28 -7
- package/dist/plugins/_shared/microsoftAuth.js +13 -44
- package/dist/plugins/_shared/microsoftCredentials.js +30 -8
- package/dist/plugins/_shared/provider.js +2 -14
- package/dist/plugins/_shared/shiftCloud.js +22 -34
- package/dist/plugins/_shared/shiftCredentials.js +83 -0
- package/dist/plugins/_shared/shiftUpload.js +1 -1
- 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/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 +74 -35
- 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 +4 -2
- 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 +26 -24
- 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 +108 -42
- package/dist/plugins/googleCalendar/src/index.js +15 -13
- package/dist/plugins/googleContacts/src/index.js +12 -9
- package/dist/plugins/googleDocs/src/index.js +2 -0
- package/dist/plugins/googleDocs/src/shared.js +2 -1
- package/dist/plugins/googleDrive/src/index.js +50 -53
- package/dist/plugins/googleImage/src/credentials.js +14 -0
- package/dist/plugins/googleImage/src/index.js +14 -25
- package/dist/plugins/googleSheets/src/index.js +26 -27
- package/dist/plugins/googleSlides/src/index.js +6 -4
- package/dist/plugins/googleTasks/src/index.js +13 -11
- 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 +34 -63
- 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 +48 -12
- package/dist/plugins/microsoftFiles/src/index.js +90 -25
- package/dist/plugins/microsoftMail/src/index.js +62 -15
- 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 +15 -23
- 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 +38 -27
- 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 +17 -27
- 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/collections.js +201 -0
- package/dist/plugins/shiftBwm/src/index.js +35 -0
- package/dist/plugins/shiftBwm/src/records.js +180 -0
- package/dist/plugins/shiftBwm/src/shared.js +168 -0
- package/dist/plugins/shiftBwm/src/vendor/client.js +227 -0
- package/dist/plugins/shiftBwm/src/vendor/contracts.js +59 -0
- package/dist/plugins/shiftBwm/src/vendor/models.js +525 -0
- 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 +3 -3
- package/dist/plugins/shiftOcr/src/credentials.js +8 -0
- package/dist/plugins/shiftOcr/src/index.js +5 -2
- 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 +3 -2
- 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 +30 -32
- 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 +31 -30
- 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 +3 -2
- package/dist/plugins/_shared/authedFetch.js +0 -33
- package/dist/plugins/_shared/tokenRefresh.js +0 -41
|
@@ -18,8 +18,18 @@
|
|
|
18
18
|
* inline next to the instruction and writes the edited result to disk.
|
|
19
19
|
*/
|
|
20
20
|
import * as t from "typebox";
|
|
21
|
+
import { credentialJson, pathSegment } from "../../_shared/credentials.js";
|
|
21
22
|
import { readImageInput, SEND_FILE_NOTE, writeImageFile, } from "../../_shared/mediaFile.js";
|
|
22
|
-
|
|
23
|
+
import { googleImageCredential } from "./credentials.js";
|
|
24
|
+
/** The model as one path segment before the fixed :generateContent verb. */
|
|
25
|
+
function generateContent(ctx, model, body) {
|
|
26
|
+
return credentialJson(ctx, googleImageCredential, "googleImage", {
|
|
27
|
+
target: "api",
|
|
28
|
+
path: `models/${pathSegment(model)}:generateContent`,
|
|
29
|
+
method: "POST",
|
|
30
|
+
json: body,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
23
33
|
/** Write every inline image part of a Gemini response to disk. */
|
|
24
34
|
function saveInlineImages(data, saveDir) {
|
|
25
35
|
const stamp = Date.now();
|
|
@@ -43,6 +53,7 @@ function saveInlineImages(data, saveDir) {
|
|
|
43
53
|
export default function googleImage(rl) {
|
|
44
54
|
rl.setName("googleImage");
|
|
45
55
|
rl.setVersion("0.1.0");
|
|
56
|
+
rl.setCredential(googleImageCredential);
|
|
46
57
|
rl.setConnectionSchema({
|
|
47
58
|
apiKey: {
|
|
48
59
|
type: "string",
|
|
@@ -72,22 +83,11 @@ export default function googleImage(rl) {
|
|
|
72
83
|
if (typeof p.prompt !== "string" || p.prompt.length === 0) {
|
|
73
84
|
throw new Error("googleImage: prompt is required");
|
|
74
85
|
}
|
|
75
|
-
const apiKey = ctx.connection.config.apiKey;
|
|
76
86
|
const model = p.model ?? "gemini-2.5-flash-image";
|
|
77
|
-
const
|
|
78
|
-
const body = {
|
|
87
|
+
const data = await generateContent(ctx, model, {
|
|
79
88
|
contents: [{ parts: [{ text: p.prompt }] }],
|
|
80
89
|
generationConfig: { responseModalities: ["IMAGE", "TEXT"] },
|
|
81
|
-
};
|
|
82
|
-
const res = await fetch(url, {
|
|
83
|
-
method: "POST",
|
|
84
|
-
headers: { "Content-Type": "application/json" },
|
|
85
|
-
body: JSON.stringify(body),
|
|
86
90
|
});
|
|
87
|
-
if (!res.ok) {
|
|
88
|
-
throw new Error(`Google API error ${res.status}: ${await res.text()}`);
|
|
89
|
-
}
|
|
90
|
-
const data = (await res.json());
|
|
91
91
|
const images = saveInlineImages(data, p.saveDir);
|
|
92
92
|
return { provider: "googleImage", model, images, note: SEND_FILE_NOTE };
|
|
93
93
|
},
|
|
@@ -118,10 +118,8 @@ export default function googleImage(rl) {
|
|
|
118
118
|
throw new Error("googleImage: prompt is required");
|
|
119
119
|
}
|
|
120
120
|
const img = readImageInput(p.imagePath, "googleImage");
|
|
121
|
-
const apiKey = ctx.connection.config.apiKey;
|
|
122
121
|
const model = p.model ?? "gemini-2.5-flash-image";
|
|
123
|
-
const
|
|
124
|
-
const body = {
|
|
122
|
+
const data = await generateContent(ctx, model, {
|
|
125
123
|
contents: [
|
|
126
124
|
{
|
|
127
125
|
parts: [
|
|
@@ -131,16 +129,7 @@ export default function googleImage(rl) {
|
|
|
131
129
|
},
|
|
132
130
|
],
|
|
133
131
|
generationConfig: { responseModalities: ["IMAGE", "TEXT"] },
|
|
134
|
-
};
|
|
135
|
-
const res = await fetch(url, {
|
|
136
|
-
method: "POST",
|
|
137
|
-
headers: { "Content-Type": "application/json" },
|
|
138
|
-
body: JSON.stringify(body),
|
|
139
132
|
});
|
|
140
|
-
if (!res.ok) {
|
|
141
|
-
throw new Error(`Google API error ${res.status}: ${await res.text()}`);
|
|
142
|
-
}
|
|
143
|
-
const data = (await res.json());
|
|
144
133
|
const images = saveInlineImages(data, p.saveDir);
|
|
145
134
|
if (images.length === 0) {
|
|
146
135
|
throw new Error("googleImage: the model returned no edited image — it may have refused; try a more specific instruction");
|
|
@@ -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 } 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,6 +337,7 @@ function a1RangeToGridRange(a1, sheetId) {
|
|
|
339
337
|
export default function googleSheets(rl) {
|
|
340
338
|
rl.setName("googleSheets");
|
|
341
339
|
rl.setVersion("0.1.0");
|
|
340
|
+
rl.setCredential(googleCredential("googleSheets", SCOPES));
|
|
342
341
|
rl.setOAuth({
|
|
343
342
|
authUrl: "https://accounts.google.com/o/oauth2/v2/auth",
|
|
344
343
|
tokenUrl: "https://oauth2.googleapis.com/token",
|
|
@@ -464,7 +463,7 @@ export default function googleSheets(rl) {
|
|
|
464
463
|
qs.ranges = p.ranges;
|
|
465
464
|
if (p.fields)
|
|
466
465
|
qs.fields = p.fields;
|
|
467
|
-
return sheetsRequest(ctx, "GET",
|
|
466
|
+
return sheetsRequest(ctx, "GET", spreadsheetPath(p.spreadsheetId), undefined, qs);
|
|
468
467
|
},
|
|
469
468
|
});
|
|
470
469
|
rl.registerAction("spreadsheet.delete", {
|
|
@@ -473,7 +472,7 @@ export default function googleSheets(rl) {
|
|
|
473
472
|
inputSchema: t.Object({ spreadsheetId: Id }, { additionalProperties: false }),
|
|
474
473
|
async execute(input, ctx) {
|
|
475
474
|
const p = (input ?? {});
|
|
476
|
-
await sheetsRequest(ctx, "DELETE", `/drive/v3/files/${p.spreadsheetId}`, undefined, undefined, "https://www.googleapis.com");
|
|
475
|
+
await sheetsRequest(ctx, "DELETE", `/drive/v3/files/${pathSegment(p.spreadsheetId)}`, undefined, undefined, "https://www.googleapis.com");
|
|
477
476
|
return { success: true };
|
|
478
477
|
},
|
|
479
478
|
});
|
|
@@ -627,12 +626,12 @@ export default function googleSheets(rl) {
|
|
|
627
626
|
if (newCols.length > 0) {
|
|
628
627
|
headers = [...headers, ...newCols];
|
|
629
628
|
// Write the extended header row back to the sheet.
|
|
630
|
-
await sheetsRequest(ctx, "PUT",
|
|
629
|
+
await sheetsRequest(ctx, "PUT", `${spreadsheetPath(spreadsheetId)}/values/${encodeA1(`${sheetName}!A${headerRowIdx + 1}`)}`, { range: `${sheetName}!A${headerRowIdx + 1}`, values: [headers] }, { valueInputOption });
|
|
631
630
|
}
|
|
632
631
|
values = objectsToRows(rows, headers);
|
|
633
632
|
}
|
|
634
633
|
if (p.useAppend) {
|
|
635
|
-
return sheetsRequest(ctx, "POST",
|
|
634
|
+
return sheetsRequest(ctx, "POST", `${spreadsheetPath(spreadsheetId)}/values/${encodeA1(sheetName)}:append`, { range: sheetName, values }, { valueInputOption, insertDataOption: "INSERT_ROWS" });
|
|
636
635
|
}
|
|
637
636
|
// PUT at lastRow+1: calculate lastRow from current sheet contents.
|
|
638
637
|
const existing = await getValues(ctx, spreadsheetId, sheetName, "UNFORMATTED_VALUE");
|
|
@@ -640,7 +639,7 @@ export default function googleSheets(rl) {
|
|
|
640
639
|
const sheetId = await resolveSheetId(ctx, spreadsheetId, sheetName);
|
|
641
640
|
await appendEmptyRow(ctx, spreadsheetId, sheetId);
|
|
642
641
|
const targetRange = `${sheetName}!${lastRow + 1}:${lastRow + values.length}`;
|
|
643
|
-
return sheetsRequest(ctx, "PUT",
|
|
642
|
+
return sheetsRequest(ctx, "PUT", `${spreadsheetPath(spreadsheetId)}/values/${encodeA1(targetRange)}`, { range: targetRange, values }, { valueInputOption });
|
|
644
643
|
},
|
|
645
644
|
});
|
|
646
645
|
// ── Update ────────────────────────────────────────────
|
|
@@ -782,13 +781,13 @@ export default function googleSheets(rl) {
|
|
|
782
781
|
}
|
|
783
782
|
if (mode === "wholeSheet" && p.keepFirstRow) {
|
|
784
783
|
const firstRow = await getValues(ctx, p.spreadsheetId, `${sheetName}!1:1`, "FORMATTED_VALUE");
|
|
785
|
-
await sheetsRequest(ctx, "POST",
|
|
784
|
+
await sheetsRequest(ctx, "POST", `${spreadsheetPath(p.spreadsheetId)}/values/${encodeA1(range)}:clear`, {});
|
|
786
785
|
if (firstRow.length > 0) {
|
|
787
|
-
await sheetsRequest(ctx, "PUT",
|
|
786
|
+
await sheetsRequest(ctx, "PUT", `${spreadsheetPath(p.spreadsheetId)}/values/${encodeA1(`${sheetName}!1:1`)}`, { range: `${sheetName}!1:1`, values: firstRow }, { valueInputOption: "RAW" });
|
|
788
787
|
}
|
|
789
788
|
return { success: true };
|
|
790
789
|
}
|
|
791
|
-
return sheetsRequest(ctx, "POST",
|
|
790
|
+
return sheetsRequest(ctx, "POST", `${spreadsheetPath(p.spreadsheetId)}/values/${encodeA1(range)}:clear`, {});
|
|
792
791
|
},
|
|
793
792
|
});
|
|
794
793
|
// ── Delete rows/columns ───────────────────────────────
|
|
@@ -887,7 +886,7 @@ export default function googleSheets(rl) {
|
|
|
887
886
|
// If we added new columns, extend the header row on the sheet first.
|
|
888
887
|
if (prepared.newColumns.length > 0) {
|
|
889
888
|
headers = [...headers, ...prepared.newColumns];
|
|
890
|
-
await sheetsRequest(ctx, "PUT",
|
|
889
|
+
await sheetsRequest(ctx, "PUT", `${spreadsheetPath(spreadsheetId)}/values/${encodeA1(`${sheetName}!${headerRowIdx + 1}:${headerRowIdx + 1}`)}`, {
|
|
891
890
|
range: `${sheetName}!${headerRowIdx + 1}:${headerRowIdx + 1}`,
|
|
892
891
|
values: [headers],
|
|
893
892
|
}, { valueInputOption });
|
|
@@ -904,13 +903,13 @@ export default function googleSheets(rl) {
|
|
|
904
903
|
if (upsert && prepared.appendData.length > 0) {
|
|
905
904
|
const values = objectsToRows(prepared.appendData, headers);
|
|
906
905
|
if (p.useAppend) {
|
|
907
|
-
await sheetsRequest(ctx, "POST",
|
|
906
|
+
await sheetsRequest(ctx, "POST", `${spreadsheetPath(spreadsheetId)}/values/${encodeA1(sheetName)}:append`, { range: sheetName, values }, { valueInputOption, insertDataOption: "INSERT_ROWS" });
|
|
908
907
|
}
|
|
909
908
|
else {
|
|
910
909
|
const lastRow = sheetData.length;
|
|
911
910
|
await appendEmptyRow(ctx, spreadsheetId, sheetId);
|
|
912
911
|
const targetRange = `${sheetName}!${lastRow + 1}:${lastRow + values.length}`;
|
|
913
|
-
await sheetsRequest(ctx, "PUT",
|
|
912
|
+
await sheetsRequest(ctx, "PUT", `${spreadsheetPath(spreadsheetId)}/values/${encodeA1(targetRange)}`, { range: targetRange, values }, { valueInputOption });
|
|
914
913
|
}
|
|
915
914
|
}
|
|
916
915
|
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, } 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,13 +39,14 @@ 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");
|
|
49
|
+
rl.setCredential(googleCredential("googleSlides", SCOPES));
|
|
48
50
|
rl.setOAuth({
|
|
49
51
|
authUrl: "https://accounts.google.com/o/oauth2/v2/auth",
|
|
50
52
|
tokenUrl: "https://oauth2.googleapis.com/token",
|
|
@@ -224,7 +226,7 @@ export default function googleSlides(rl) {
|
|
|
224
226
|
async execute(input, ctx) {
|
|
225
227
|
const p = (input ?? {});
|
|
226
228
|
const id = extractPresentationId(p.presentation);
|
|
227
|
-
return slidesRequest(ctx, "GET", `/presentations/${id}/pages/${p.pageObjectId}`);
|
|
229
|
+
return slidesRequest(ctx, "GET", `/presentations/${id}/pages/${pathSegment(p.pageObjectId)}`);
|
|
228
230
|
},
|
|
229
231
|
});
|
|
230
232
|
rl.registerAction("page.getThumbnail", {
|
|
@@ -251,7 +253,7 @@ export default function googleSlides(rl) {
|
|
|
251
253
|
qs["thumbnailProperties.mimeType"] = p.mimeType;
|
|
252
254
|
if (p.thumbnailSize)
|
|
253
255
|
qs["thumbnailProperties.thumbnailSize"] = p.thumbnailSize;
|
|
254
|
-
const res = (await slidesRequest(ctx, "GET", `/presentations/${id}/pages/${p.pageObjectId}/thumbnail`, undefined, qs));
|
|
256
|
+
const res = (await slidesRequest(ctx, "GET", `/presentations/${id}/pages/${pathSegment(p.pageObjectId)}/thumbnail`, undefined, qs));
|
|
255
257
|
if (!p.savePath && !p.download)
|
|
256
258
|
return res;
|
|
257
259
|
// 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 } 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,6 +70,7 @@ 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");
|
|
73
|
+
rl.setCredential(googleCredential("googleTasks", SCOPES));
|
|
72
74
|
rl.setOAuth({
|
|
73
75
|
authUrl: "https://accounts.google.com/o/oauth2/v2/auth",
|
|
74
76
|
tokenUrl: "https://oauth2.googleapis.com/token",
|
|
@@ -140,7 +142,7 @@ export default function googleTasks(rl) {
|
|
|
140
142
|
inputSchema: t.Object({ taskListId: Id }, { additionalProperties: false }),
|
|
141
143
|
async execute(input, ctx) {
|
|
142
144
|
const p = (input ?? {});
|
|
143
|
-
return tasksRequest(ctx, "GET", `/users/@me/lists/${p.taskListId}`);
|
|
145
|
+
return tasksRequest(ctx, "GET", `/users/@me/lists/${pathSegment(p.taskListId)}`);
|
|
144
146
|
},
|
|
145
147
|
});
|
|
146
148
|
rl.registerAction("taskList.create", {
|
|
@@ -161,7 +163,7 @@ export default function googleTasks(rl) {
|
|
|
161
163
|
}, { additionalProperties: false }),
|
|
162
164
|
async execute(input, ctx) {
|
|
163
165
|
const p = (input ?? {});
|
|
164
|
-
return tasksRequest(ctx, "PATCH", `/users/@me/lists/${p.taskListId}`, {
|
|
166
|
+
return tasksRequest(ctx, "PATCH", `/users/@me/lists/${pathSegment(p.taskListId)}`, {
|
|
165
167
|
title: p.title,
|
|
166
168
|
});
|
|
167
169
|
},
|
|
@@ -172,7 +174,7 @@ export default function googleTasks(rl) {
|
|
|
172
174
|
inputSchema: t.Object({ taskListId: Id }, { additionalProperties: false }),
|
|
173
175
|
async execute(input, ctx) {
|
|
174
176
|
const p = (input ?? {});
|
|
175
|
-
await tasksRequest(ctx, "DELETE", `/users/@me/lists/${p.taskListId}`);
|
|
177
|
+
await tasksRequest(ctx, "DELETE", `/users/@me/lists/${pathSegment(p.taskListId)}`);
|
|
176
178
|
return { success: true };
|
|
177
179
|
},
|
|
178
180
|
});
|
|
@@ -217,7 +219,7 @@ export default function googleTasks(rl) {
|
|
|
217
219
|
qs.parent = p.parent;
|
|
218
220
|
if (p.previous)
|
|
219
221
|
qs.previous = p.previous;
|
|
220
|
-
return tasksRequest(ctx, "POST", `/lists/${p.taskListId}/tasks`, body, qs);
|
|
222
|
+
return tasksRequest(ctx, "POST", `/lists/${pathSegment(p.taskListId)}/tasks`, body, qs);
|
|
221
223
|
},
|
|
222
224
|
});
|
|
223
225
|
rl.registerAction("task.get", {
|
|
@@ -229,7 +231,7 @@ export default function googleTasks(rl) {
|
|
|
229
231
|
}, { additionalProperties: false }),
|
|
230
232
|
async execute(input, ctx) {
|
|
231
233
|
const p = (input ?? {});
|
|
232
|
-
return tasksRequest(ctx, "GET", `/lists/${p.taskListId}/tasks/${p.taskId}`);
|
|
234
|
+
return tasksRequest(ctx, "GET", `/lists/${pathSegment(p.taskListId)}/tasks/${pathSegment(p.taskId)}`);
|
|
233
235
|
},
|
|
234
236
|
});
|
|
235
237
|
rl.registerAction("task.list", {
|
|
@@ -263,7 +265,7 @@ export default function googleTasks(rl) {
|
|
|
263
265
|
}
|
|
264
266
|
if (p.pageToken)
|
|
265
267
|
qs.pageToken = p.pageToken;
|
|
266
|
-
const path = `/lists/${p.taskListId}/tasks`;
|
|
268
|
+
const path = `/lists/${pathSegment(p.taskListId)}/tasks`;
|
|
267
269
|
if (p.returnAll)
|
|
268
270
|
return paginateAll(ctx, path, qs);
|
|
269
271
|
if (p.maxResults)
|
|
@@ -315,7 +317,7 @@ export default function googleTasks(rl) {
|
|
|
315
317
|
if (Object.keys(body).length === 0) {
|
|
316
318
|
throw new Error("googleTasks: nothing to update");
|
|
317
319
|
}
|
|
318
|
-
return tasksRequest(ctx, "PATCH", `/lists/${p.taskListId}/tasks/${p.taskId}`, body);
|
|
320
|
+
return tasksRequest(ctx, "PATCH", `/lists/${pathSegment(p.taskListId)}/tasks/${pathSegment(p.taskId)}`, body);
|
|
319
321
|
},
|
|
320
322
|
});
|
|
321
323
|
rl.registerAction("task.delete", {
|
|
@@ -327,7 +329,7 @@ export default function googleTasks(rl) {
|
|
|
327
329
|
}, { additionalProperties: false }),
|
|
328
330
|
async execute(input, ctx) {
|
|
329
331
|
const p = (input ?? {});
|
|
330
|
-
await tasksRequest(ctx, "DELETE", `/lists/${p.taskListId}/tasks/${p.taskId}`);
|
|
332
|
+
await tasksRequest(ctx, "DELETE", `/lists/${pathSegment(p.taskListId)}/tasks/${pathSegment(p.taskId)}`);
|
|
331
333
|
return { success: true };
|
|
332
334
|
},
|
|
333
335
|
});
|
|
@@ -347,7 +349,7 @@ export default function googleTasks(rl) {
|
|
|
347
349
|
qs.parent = p.parent;
|
|
348
350
|
if (p.previous)
|
|
349
351
|
qs.previous = p.previous;
|
|
350
|
-
return tasksRequest(ctx, "POST", `/lists/${p.taskListId}/tasks/${p.taskId}/move`, undefined, qs);
|
|
352
|
+
return tasksRequest(ctx, "POST", `/lists/${pathSegment(p.taskListId)}/tasks/${pathSegment(p.taskId)}/move`, undefined, qs);
|
|
351
353
|
},
|
|
352
354
|
});
|
|
353
355
|
rl.registerAction("task.clear", {
|
|
@@ -356,7 +358,7 @@ export default function googleTasks(rl) {
|
|
|
356
358
|
inputSchema: t.Object({ taskListId: Id }, { additionalProperties: false }),
|
|
357
359
|
async execute(input, ctx) {
|
|
358
360
|
const p = (input ?? {});
|
|
359
|
-
await tasksRequest(ctx, "POST", `/lists/${p.taskListId}/clear`);
|
|
361
|
+
await tasksRequest(ctx, "POST", `/lists/${pathSegment(p.taskListId)}/clear`);
|
|
360
362
|
return { success: true };
|
|
361
363
|
},
|
|
362
364
|
});
|
|
@@ -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
|
+
});
|