diff --git a/components/aweber/actions/add-subscriber/add-subscriber.mjs b/components/aweber/actions/add-subscriber/add-subscriber.mjs index 141215141b749..49e26afbbde1d 100644 --- a/components/aweber/actions/add-subscriber/add-subscriber.mjs +++ b/components/aweber/actions/add-subscriber/add-subscriber.mjs @@ -6,7 +6,7 @@ export default { name: "Add Subscriber", description: "Add subscribers to the specified account and list. [See the docs here](https://api.aweber.com/#tag/Subscribers/paths/~1accounts~1{accountId}~1lists~1{listId}~1subscribers/post).", type: "action", - version: "0.0.4", + version: "0.0.5", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/aweber/actions/create-broadcast/create-broadcast.mjs b/components/aweber/actions/create-broadcast/create-broadcast.mjs new file mode 100644 index 0000000000000..8f1febb40e360 --- /dev/null +++ b/components/aweber/actions/create-broadcast/create-broadcast.mjs @@ -0,0 +1,165 @@ +import aweberApp from "../../aweber.app.mjs"; + +export default { + key: "aweber-create-broadcast", + name: "Create Broadcast", + description: "Create a broadcast under the specified account and list. [See the docs here](https://api.aweber.com/#tag/Broadcasts/paths/~1accounts~1%7BaccountId%7D~1lists~1%7BlistId%7D~1broadcasts/post).", + type: "action", + version: "0.0.1", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: false, + }, + props: { + aweberApp, + accountId: { + propDefinition: [ + aweberApp, + "accountId", + ], + }, + listId: { + propDefinition: [ + aweberApp, + "listId", + ({ accountId }) => ({ + accountId, + }), + ], + }, + bodyHTML: { + type: "string", + label: "Body HTML", + description: "The content of the message in HTML format. If `Body Text` is not provided, it will be auto-generated. If `Body Text` is not provided, `Body HTML` must be provided.", + optional: true, + }, + bodyText: { + type: "string", + label: "Body Text", + description: "The content of the message in plain text, used when HTML is not supported. If `Body HTML` is not provided, the broadcast will be sent using only the `Body Text`. If `Body Text` is not provided, `Body HTML` must be provided.", + optional: true, + }, + bodyAmp: { + type: "string", + label: "Body AMP", + description: "The content of the message in AMP format. [Read Aweber KB article before using this field](https://help.aweber.com/hc/en-us/articles/360025741194)", + optional: true, + }, + clickTrackingEnabled: { + type: "boolean", + label: "Click Tracking Enabled", + description: "Enables links in the email message to be tracked.", + optional: true, + }, + excludeLists: { + propDefinition: [ + aweberApp, + "listSelfLink", + ({ accountId }) => ({ + accountId, + }), + ], + type: "string[]", + label: "Exclude Lists", + description: "List of [Lists](https://api.aweber.com/#tag/Lists) URLs to exclude in the delivery of this broadcast. **e.g. `https://api.aweber.com/1.0/accounts//lists/`**", + optional: true, + }, + includeLists: { + propDefinition: [ + aweberApp, + "listSelfLink", + ({ accountId }) => ({ + accountId, + }), + ], + type: "string[]", + label: "Include Lists", + description: "List of [Lists](https://api.aweber.com/#tag/Lists) URLs to include in the delivery of this broadcast. **e.g. `https://api.aweber.com/1.0/accounts//lists/`**", + optional: true, + }, + facebookIntegration: { + propDefinition: [ + aweberApp, + "integrations", + ({ accountId }) => ({ + accountId, + serviceName: "facebook", + }), + ], + label: "Facebook Integration", + description: "URL to the [Facebook broadcast integration](https://api.aweber.com/#tag/Integrations) to use for this broadcast. When the broadcast is sent, the subject of the broadcast will be posted to this Facebook integration - **e.g. `https://api.aweber.com/1.0/accounts//integrations/`**.", + optional: true, + }, + isArchived: { + type: "boolean", + label: "Is Archived", + description: "Whether the broadcast enabled sharing via an archive URL.", + optional: true, + }, + notifyOnSend: { + type: "boolean", + label: "Notify on Send", + description: "If true, notify when stats are available on a sent broadcast message.", + optional: true, + }, + segmentLink: { + propDefinition: [ + aweberApp, + "segmentSelfLink", + ({ + accountId, listId, + }) => ({ + accountId, + listId, + }), + ], + optional: true, + }, + subject: { + type: "string", + label: "Subject", + description: "The broadcast subject line. Subject must not be empty nor contain only whitespace.", + }, + twitterIntegration: { + propDefinition: [ + aweberApp, + "integrations", + ({ accountId }) => ({ + accountId, + serviceName: "twitter", + }), + ], + label: "Twitter Integration", + description: "URL to the [Twitter broadcast integration](https://api.aweber.com/#tag/Integrations) to use for this broadcast. When the broadcast is sent, the subject of the broadcast will be tweeted - **e.g. `https://api.aweber.com/1.0/accounts//integrations/`**.", + optional: true, + }, + }, + async run({ $ }) { + const response = await this.aweberApp.createBroadcast({ + $, + accountId: this.accountId, + listId: this.listId, + data: { + body_html: this.bodyHTML, + body_text: this.bodyText, + body_amp: this.bodyAmp, + click_tracking_enabled: this.clickTrackingEnabled, + exclude_lists: this.excludeLists, + include_lists: this.includeLists, + facebook_integration: this.facebookIntegration, + is_archived: this.isArchived, + notify_on_send: this.notifyOnSend, + segment_link: this.segmentLink, + subject: this.subject, + twitter_integration: this.twitterIntegration, + }, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + }, + }); + + $.export("$summary", `Successfully created broadcast with **UUID: ${response.uuid}**.`); + return response; + }, +}; diff --git a/components/aweber/actions/create-or-update-subscriber/create-or-update-subscriber.mjs b/components/aweber/actions/create-or-update-subscriber/create-or-update-subscriber.mjs index b72bdc8bf88f8..66048c0b0bca9 100644 --- a/components/aweber/actions/create-or-update-subscriber/create-or-update-subscriber.mjs +++ b/components/aweber/actions/create-or-update-subscriber/create-or-update-subscriber.mjs @@ -5,7 +5,7 @@ export default { name: "Create Or Update Subscriber", description: "Create subscriber if the subscriber email is not existing or update the information for the specified subscriber by email. [See the docs here](https://api.aweber.com/#tag/Subscribers/paths/~1accounts~1{accountId}~1lists~1{listId}~1subscribers/patch).", type: "action", - version: "0.0.2", + version: "0.0.3", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/aweber/actions/get-accounts/get-accounts.mjs b/components/aweber/actions/get-accounts/get-accounts.mjs index d5965f63f4b5d..894ec9ebc6ca2 100644 --- a/components/aweber/actions/get-accounts/get-accounts.mjs +++ b/components/aweber/actions/get-accounts/get-accounts.mjs @@ -7,7 +7,7 @@ export default { name: "Get Accounts", description: "Get a paginated collection of accounts. [See the docs here](https://api.aweber.com/#tag/Accounts/paths/~1accounts/get).", type: "action", - version: "0.0.4", + version: "0.0.5", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/aweber/actions/get-lists/get-lists.mjs b/components/aweber/actions/get-lists/get-lists.mjs index ac8d463ec720d..b24f165328740 100644 --- a/components/aweber/actions/get-lists/get-lists.mjs +++ b/components/aweber/actions/get-lists/get-lists.mjs @@ -7,7 +7,7 @@ export default { name: "Get Lists", description: "Get a paginated collection of subscriber lists. [See the docs here](https://api.aweber.com/#tag/Lists/paths/~1accounts~1{accountId}~1lists/get).", type: "action", - version: "0.0.4", + version: "0.0.5", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/aweber/actions/get-subscribers/get-subscribers.mjs b/components/aweber/actions/get-subscribers/get-subscribers.mjs index 79caf033136b9..280faeb8d3e60 100644 --- a/components/aweber/actions/get-subscribers/get-subscribers.mjs +++ b/components/aweber/actions/get-subscribers/get-subscribers.mjs @@ -7,7 +7,7 @@ export default { name: "Get Subscribers", description: "Get a paginated collection of subscribers under the specified account and list. [See the docs here](https://api.aweber.com/#tag/Subscribers/paths/~1accounts~1{accountId}~1lists~1{listId}~1subscribers/get).", type: "action", - version: "0.0.4", + version: "0.0.5", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/aweber/actions/update-subscriber/update-subscriber.mjs b/components/aweber/actions/update-subscriber/update-subscriber.mjs index 37d72cc5ebc69..745aa5446ac37 100644 --- a/components/aweber/actions/update-subscriber/update-subscriber.mjs +++ b/components/aweber/actions/update-subscriber/update-subscriber.mjs @@ -6,7 +6,7 @@ export default { name: "Update Subscriber", description: "Update the information for the specified subscriber by email. [See the docs here](https://api.aweber.com/#tag/Subscribers/paths/~1accounts~1{accountId}~1lists~1{listId}~1subscribers/patch).", type: "action", - version: "0.0.3", + version: "0.0.4", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/aweber/aweber.app.mjs b/components/aweber/aweber.app.mjs index f9042f399a0f5..a1da1d8e348c5 100644 --- a/components/aweber/aweber.app.mjs +++ b/components/aweber/aweber.app.mjs @@ -107,6 +107,114 @@ export default { }; }, }, + listSelfLink: { + type: "string", + label: "List Self Link", + description: "The list self link", + async options({ + accountId, prevContext, + }) { + const { url } = prevContext; + if (url === null) { + return []; + } + const { + entries: lists, + next_collection_link: nextUrl, + } = await this.getLists({ + url, + accountId, + params: { + [constants.PAGINATION.SIZE_PROP]: constants.PAGINATION.SIZE, + }, + }); + const options = lists.map(({ + self_link, name, + }) => ({ + label: name, + value: self_link, + })); + return { + options, + context: { + url: nextUrl || null, + }, + }; + }, + }, + integrations: { + type: "string", + label: "Integrations", + description: "The integrations", + async options({ + accountId, prevContext, serviceName, + }) { + const { url } = prevContext; + if (url === null) { + return []; + } + const { + entries: integrations, + next_collection_link: nextUrl, + } = await this.getIntegrations({ + url, + accountId, + params: { + [constants.PAGINATION.SIZE_PROP]: constants.PAGINATION.SIZE, + }, + }); + + const options = integrations + .filter(({ service_name }) => service_name === serviceName).map(({ + self_link, login, + }) => ({ + label: login, + value: self_link, + })); + return { + options, + context: { + url: nextUrl || null, + }, + }; + }, + }, + segmentSelfLink: { + type: "string", + label: "Segment Link", + description: "URL to the [Segment](https://api.aweber.com/#tag/Segments) to send this broadcast to. **e.g. `https://api.aweber.com/1.0/accounts//lists//segments/`**. If not specified, the broadcast will be sent to the “Active Subscribers” segment.", + async options({ + accountId, listId, prevContext, + }) { + const { url } = prevContext; + if (url === null) { + return []; + } + const { + entries: segments, + next_collection_link: nextUrl, + } = await this.getSegments({ + url, + accountId, + listId, + params: { + [constants.PAGINATION.SIZE_PROP]: constants.PAGINATION.SIZE, + }, + }); + const options = segments.map(({ + self_link, name, + }) => ({ + label: name, + value: self_link, + })); + return { + options, + context: { + url: nextUrl || null, + }, + }; + }, + }, email: { type: "string", label: "Email", @@ -159,11 +267,12 @@ export default { $ = this, url, path, + headers, ...otherArgs } = args; const config = { - headers: this.getHeaders(otherArgs.headers), + headers: this.getHeaders(headers), url: this.getUrl(path, url), ...otherArgs, }; @@ -192,6 +301,22 @@ export default { ...args, }); }, + getBroadcasts({ + accountId, listId, ...args + } = {}) { + return this.makeRequest({ + path: `/accounts/${accountId}/lists/${listId}/broadcasts`, + ...args, + }); + }, + getSegments({ + accountId, listId, ...args + } = {}) { + return this.makeRequest({ + path: `/accounts/${accountId}/lists/${listId}/segments`, + ...args, + }); + }, async getSubscribersForList({ accountId, listId, ...args } = {}) { @@ -208,6 +333,14 @@ export default { ...args, }); }, + getIntegrations({ + accountId, ...args + } = {}) { + return this.makeRequest({ + path: `/accounts/${accountId}/integrations`, + ...args, + }); + }, async addSubscriber({ accountId, listId, ...args }) { @@ -217,6 +350,15 @@ export default { ...args, }); }, + createBroadcast({ + accountId, listId, ...args + }) { + return this.makeRequest({ + method: "post", + path: `/accounts/${accountId}/lists/${listId}/broadcasts`, + ...args, + }); + }, async updateSubscriber({ accountId, listId, email, ...args }) { diff --git a/components/aweber/package.json b/components/aweber/package.json index 0d88c15530213..5f8d3f16f4da6 100644 --- a/components/aweber/package.json +++ b/components/aweber/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/aweber", - "version": "0.3.7", + "version": "0.4.0", "description": "Pipedream Aweber Components", "main": "aweber.app.mjs", "keywords": [ @@ -10,7 +10,7 @@ "homepage": "https://pipedream.com/apps/aweber", "author": "Pipedream (https://pipedream.com/)", "dependencies": { - "@pipedream/platform": "^1.2.0", + "@pipedream/platform": "^3.1.0", "@pipedreamhq/platform": "^0.8.1" }, "gitHead": "e12480b94cc03bed4808ebc6b13e7fdb3a1ba535", diff --git a/components/aweber/sources/common.mjs b/components/aweber/sources/common.mjs index 9bdee78d6d008..2e3c00f91f45d 100644 --- a/components/aweber/sources/common.mjs +++ b/components/aweber/sources/common.mjs @@ -1,7 +1,7 @@ +import { DEFAULT_POLLING_SOURCE_TIMER_INTERVAL } from "@pipedream/platform"; import aweberApp from "../aweber.app.mjs"; import constants from "../common/constants.mjs"; import utils from "../common/utils.mjs"; -import { DEFAULT_POLLING_SOURCE_TIMER_INTERVAL } from "@pipedream/platform"; export default { props: { @@ -64,7 +64,7 @@ export default { }, generateMeta(resource) { return { - id: resource.id, + id: resource.id || resource.uuid, summary: this.getSummary(resource), ts: Date.parse(resource.subscribed_at ?? new Date()), }; diff --git a/components/aweber/sources/new-broadcast-event/new-broadcast-event.mjs b/components/aweber/sources/new-broadcast-event/new-broadcast-event.mjs new file mode 100644 index 0000000000000..14bd63e700c94 --- /dev/null +++ b/components/aweber/sources/new-broadcast-event/new-broadcast-event.mjs @@ -0,0 +1,54 @@ +import common from "../common.mjs"; +import sampleEmit from "./test-event.mjs"; + +export default { + ...common, + key: "aweber-new-broadcast-event", + name: "New Broadcast Event", + description: "Emit new event when a selected broadcast event is created. [See the docs here](https://api.aweber.com/#tag/Broadcasts/paths/~1accounts~1%7BaccountId%7D~1lists~1%7BlistId%7D~1broadcasts/get)", + type: "source", + version: "0.0.1", + dedupe: "unique", + props: { + ...common.props, + listId: { + propDefinition: [ + common.props.aweberApp, + "listId", + ({ accountId }) => ({ + accountId, + }), + ], + }, + status: { + type: "string", + label: "Status", + description: "The status of the broadcast event.", + options: [ + "draft", + "scheduled", + "sent", + ], + }, + }, + methods: { + ...common.methods, + getResourceFn() { + return this.aweberApp.getBroadcasts; + }, + getResourceFnArgs(args) { + return { + ...args, + accountId: this.accountId, + listId: this.listId, + params: { + status: this.status, + }, + }; + }, + getSummary(resource) { + return `New broadcast event ${resource.subject}`; + }, + }, + sampleEmit, +}; diff --git a/components/aweber/sources/new-broadcast-event/test-event.mjs b/components/aweber/sources/new-broadcast-event/test-event.mjs new file mode 100644 index 0000000000000..a1da760c55ae7 --- /dev/null +++ b/components/aweber/sources/new-broadcast-event/test-event.mjs @@ -0,0 +1,9 @@ +export default { + "uuid": "123e4567-e89b-12d3-a456-426614174000", + "broadcast_id": 12345, + "self_link": "https://api.aweber.com/1.0/accounts/123/lists/456/broadcasts/3456789", + "status": "sent", + "scheduled_for": "2017-11-15T10:46:07.926074-05:00", + "sent_at": "2017-11-15T14:26:36.210647-05:00", + "subject": "Weekly Recipes" +} \ No newline at end of file diff --git a/components/aweber/sources/subscriber-added/subscriber-added.mjs b/components/aweber/sources/subscriber-added/subscriber-added.mjs index e264dc388f0fb..bc10a1d68a176 100644 --- a/components/aweber/sources/subscriber-added/subscriber-added.mjs +++ b/components/aweber/sources/subscriber-added/subscriber-added.mjs @@ -1,5 +1,6 @@ import constants from "../../common/constants.mjs"; import common from "../common.mjs"; +import sampleEmit from "./test-event.mjs"; export default { ...common, @@ -7,7 +8,7 @@ export default { name: "Subscriber Added", description: "Emit new event when a subscriber in a list is added. [See the docs here](https://api.aweber.com/#tag/Subscribers/paths/~1accounts~1{accountId}~1lists~1{listId}~1subscribers/get)", type: "source", - version: "0.0.4", + version: "0.0.5", dedupe: "unique", methods: { ...common.methods, @@ -27,4 +28,5 @@ export default { return `Subscriber added ${resource.email}`; }, }, + sampleEmit, }; diff --git a/components/aweber/sources/subscriber-added/test-event.mjs b/components/aweber/sources/subscriber-added/test-event.mjs new file mode 100644 index 0000000000000..9c57540269b6c --- /dev/null +++ b/components/aweber/sources/subscriber-added/test-event.mjs @@ -0,0 +1,36 @@ +export default { + "ad_tracking": "ebook", + "area_code": 555, + "city": "Chalfont", + "country": "United States", + "custom_fields": { + "apple": "fuji", + "pear": "bosc" + }, + "dma_code": 504, + "email": "user@example.com", + "id": 789, + "ip_address": "204.194.222.28", + "is_verified": true, + "last_followup_message_number_sent": 1001, + "last_followup_sent_at": "2015-12-17T14:06:26.861089-05:00", + "last_followup_sent_link": "https://api.aweber.com/1.0/accounts/123/lists/456/campaigns/f12345678", + "latitude": 37.751, + "longitude": -97.822, + "misc_notes": "ebook", + "name": "John Doe", + "postal_code": "99999-9999", + "region": "PA", + "resource_type_link": "https://api.aweber.com/1.0/#subscriber", + "self_link": "https://api.aweber.com/1.0/accounts/123/lists/456/subscribers/789", + "status": "subscribed", + "subscribed_at": "2015-10-13T16:19:20-04:00", + "subscription_method": "api", + "subscription_url": "https://forms.aweber.com/form/16/123456789.htm", + "tags": [ + "slow", + "fast", + "lightspeed" + ], + "verified_at": "2015-10-13T16:19:53" +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8c2c2be2551f9..f0edc1f3bcfea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1232,8 +1232,8 @@ importers: components/aweber: dependencies: '@pipedream/platform': - specifier: ^1.2.0 - version: 1.6.6 + specifier: ^3.1.0 + version: 3.1.0 '@pipedreamhq/platform': specifier: ^0.8.1 version: 0.8.1 @@ -2044,8 +2044,7 @@ importers: specifier: ^3.0.3 version: 3.0.3 - components/browserflow: - specifiers: {} + components/browserflow: {} components/browserhub: dependencies: @@ -2138,8 +2137,7 @@ importers: specifier: ^1.3.0 version: 1.6.6 - components/bump_sh: - specifiers: {} + components/bump_sh: {} components/bunnycdn: dependencies: @@ -2498,8 +2496,7 @@ importers: specifier: ^3.0.3 version: 3.0.3 - components/chatbase: - specifiers: {} + components/chatbase: {} components/chatbot: dependencies: @@ -4872,8 +4869,7 @@ importers: components/fastfield_mobile_forms: {} - components/fathom: - specifiers: {} + components/fathom: {} components/fatture_in_cloud: {} @@ -5862,8 +5858,7 @@ importers: specifier: ^3.0.3 version: 3.0.3 - components/google_books: - specifiers: {} + components/google_books: {} components/google_calendar: dependencies: @@ -8820,8 +8815,7 @@ importers: specifier: ^3.0.3 version: 3.0.3 - components/microsoft_bookings: - specifiers: {} + components/microsoft_bookings: {} components/microsoft_dataverse: {} @@ -8863,8 +8857,7 @@ importers: components/microsoft_graph_api_daemon_app: {} - components/microsoft_graph_security: - specifiers: {} + components/microsoft_graph_security: {} components/microsoft_onedrive: dependencies: @@ -9271,9 +9264,6 @@ importers: mysql2: specifier: ^3.9.2 version: 3.11.4 - mysql2-promise: - specifier: ^0.1.4 - version: 0.1.4 uuid: specifier: ^8.3.2 version: 8.3.2 @@ -23309,9 +23299,6 @@ packages: engines: {node: '>=8.0.0'} hasBin: true - ansicolors@0.2.1: - resolution: {integrity: sha512-tOIuy1/SK/dr94ZA0ckDohKXNeBNqZ4us6PjMVLs5h1w2GBB6uPtOknp2+VF4F/zcy9LI70W+Z+pE2Soajky1w==} - ansicolors@0.3.2: resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} @@ -23754,9 +23741,6 @@ packages: bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - bn.js@2.0.0: - resolution: {integrity: sha512-NmOLApC80+n+P28y06yHgwGlOCkq/X4jRh5s590959FZXSrM+I/61h0xxuIaYsg0mD44mEAZYG/rnclWuRoz+A==} - bn.js@4.12.1: resolution: {integrity: sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==} @@ -23984,10 +23968,6 @@ packages: caniuse-lite@1.0.30001683: resolution: {integrity: sha512-iqmNnThZ0n70mNwvxpEC2nBJ037ZHZUoBI5Gorh1Mw6IlEAZujEoU1tXA628iZfzm7R9FvFzxbfdgml82a3k8Q==} - cardinal@0.4.4: - resolution: {integrity: sha512-3MxV0o9wOpQcobrcSrRpaSxlYkohCcZu0ytOjJUww/Yo/223q4Ecloo7odT+M0SI5kPgb1JhvSaF4EEuVXOLAQ==} - hasBin: true - cardinal@2.1.1: resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} hasBin: true @@ -25049,9 +25029,6 @@ packages: resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} engines: {node: '>=10'} - double-ended-queue@2.0.0-0: - resolution: {integrity: sha512-t5ouWOpItmHrm0J0+bX/cFrIjBFWnJkk5LbIJq6bbU/M4aLX2c3LrM4QYsBptwvlPe3WzdpQefQ0v1pe/A5wjg==} - dropbox@10.34.0: resolution: {integrity: sha512-5jb5/XzU0fSnq36/hEpwT5/QIep7MgqKuxghEG44xCu7HruOAjPdOb3x0geXv5O/hd0nHpQpWO+r5MjYTpMvJg==} engines: {node: '>=0.10.3'} @@ -25526,11 +25503,6 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esprima@1.0.4: - resolution: {integrity: sha512-rp5dMKN8zEs9dfi9g0X1ClLmV//WRyk/R15mppFNICIFRG5P92VP7Z04p8pk++gABo9W2tY+kHyu6P1mEHgmTA==} - engines: {node: '>=0.4.0'} - hasBin: true - esprima@1.2.2: resolution: {integrity: sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==} engines: {node: '>=0.4.0'} @@ -28255,9 +28227,6 @@ packages: resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} engines: {node: 20 || >=22} - lru-cache@2.5.0: - resolution: {integrity: sha512-dVmQmXPBlTgFw77hm60ud//l2bCuDKkqC2on1EBoM7s9Urm9IQDrnujwZ93NFnAq0dVZ0HBXTS7PwEG+YE7+EQ==} - lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -28836,14 +28805,6 @@ packages: resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} engines: {node: '>=0.8.0'} - mysql2-promise@0.1.4: - resolution: {integrity: sha512-/h8ubU/36aIPpbfB6CENw9ZdbzIhZMZOIbstJUHVKp4J9JBRSLScrYImVx+3yZilgag732UhpQMMK5+ktdhLCw==} - engines: {node: '>=0.10.0'} - - mysql2@0.15.8: - resolution: {integrity: sha512-3x5o6C20bfwJYPSoT74MOoad7/chJoq4qXHDL5VAuRBBrIyErovLoj04Dz/5EY9X2kTxWSGNiTegtxpROTd2YQ==} - engines: {node: '>= 0.8'} - mysql2@3.11.4: resolution: {integrity: sha512-Z2o3tY4Z8EvSRDwknaC40MdZ3+m0sKbpnXrShQLdxPrAvcNli7jLrD2Zd2IzsRMw4eK9Yle500FDmlkIqp+krg==} engines: {node: '>= 8.0'} @@ -28851,9 +28812,6 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - named-placeholders@0.1.3: - resolution: {integrity: sha512-Mt79RtxZ6MYTIEemPGv/YDKpbuavcAyGHb0r37xB2mnE5jej3uBzc4+nzOeoZ4nZiii1M32URKt9IjkSTZAmTA==} - named-placeholders@1.1.3: resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==} engines: {node: '>=12.0.0'} @@ -30235,9 +30193,6 @@ packages: resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} engines: {node: '>=18'} - readable-stream@1.0.33: - resolution: {integrity: sha512-72KxhcKi8bAvHP/cyyWSP+ODS5ef0DIRs0OzrhGXw31q41f19aoELCbvd42FjhpyEDxQMRiiC5rq9rfE5PzTqg==} - readable-stream@1.1.14: resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} @@ -30278,9 +30233,6 @@ packages: recurly@3.30.0: resolution: {integrity: sha512-SVW5pke3MLe+QkIx3Y+NJD8UfR30eBrM90Vkrv6o3FvDPZBvSNpSadTay1SzLo+SmM31rBSeqELyX4zBDTd/Nw==} - redeyed@0.4.4: - resolution: {integrity: sha512-pnk1vsaNLu1UAAClKsImKz9HjBvg9i8cbRqTRzJbiCjGF0fZSMqpdcA5W3juO3c4etFvTrabECkq9wjC45ZyxA==} - redeyed@2.1.1: resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} @@ -31361,22 +31313,22 @@ packages: superagent@3.8.1: resolution: {integrity: sha512-VMBFLYgFuRdfeNQSMLbxGSLfmXL/xc+OO+BZp41Za/NRDBet/BNbkRJrYzCUu0u4GU0i/ml2dtT8b9qgkw9z6Q==} engines: {node: '>= 4.0'} - deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net + deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net superagent@4.1.0: resolution: {integrity: sha512-FT3QLMasz0YyCd4uIi5HNe+3t/onxMyEho7C3PSqmti3Twgy2rXT4fmkTz6wRL6bTF4uzPcfkUCa8u4JWHw8Ag==} engines: {node: '>= 6.0'} - deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net + deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net superagent@5.3.1: resolution: {integrity: sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==} engines: {node: '>= 7.0.0'} - deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net + deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net superagent@7.1.6: resolution: {integrity: sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g==} engines: {node: '>=6.4.0 <13 || >=14'} - deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net + deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net supports-color@10.0.0: resolution: {integrity: sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==} @@ -42834,8 +42786,6 @@ snapshots: dependencies: entities: 2.2.0 - ansicolors@0.2.1: {} - ansicolors@0.3.2: {} ansis@4.1.0: {} @@ -43475,8 +43425,6 @@ snapshots: bluebird@3.7.2: {} - bn.js@2.0.0: {} - bn.js@4.12.1: {} bn.js@5.2.1: {} @@ -43748,11 +43696,6 @@ snapshots: caniuse-lite@1.0.30001683: {} - cardinal@0.4.4: - dependencies: - ansicolors: 0.2.1 - redeyed: 0.4.4 - cardinal@2.1.1: dependencies: ansicolors: 0.3.2 @@ -44846,8 +44789,6 @@ snapshots: dotenv@8.6.0: {} - double-ended-queue@2.0.0-0: {} - dropbox@10.34.0(@types/node-fetch@2.6.12): dependencies: '@types/node-fetch': 2.6.12 @@ -45630,8 +45571,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 3.4.3 - esprima@1.0.4: {} - esprima@1.2.2: {} esprima@4.0.1: {} @@ -49242,8 +49181,6 @@ snapshots: lru-cache@11.0.2: {} - lru-cache@2.5.0: {} - lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -50052,19 +49989,6 @@ snapshots: rimraf: 2.4.5 optional: true - mysql2-promise@0.1.4: - dependencies: - mysql2: 0.15.8 - q: 1.5.1 - - mysql2@0.15.8: - dependencies: - bn.js: 2.0.0 - cardinal: 0.4.4 - double-ended-queue: 2.0.0-0 - named-placeholders: 0.1.3 - readable-stream: 1.0.33 - mysql2@3.11.4: dependencies: aws-ssl-profiles: 1.1.2 @@ -50083,10 +50007,6 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - named-placeholders@0.1.3: - dependencies: - lru-cache: 2.5.0 - named-placeholders@1.1.3: dependencies: lru-cache: 7.18.3 @@ -51987,13 +51907,6 @@ snapshots: type-fest: 4.41.0 unicorn-magic: 0.1.0 - readable-stream@1.0.33: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - readable-stream@1.1.14: dependencies: core-util-is: 1.0.3 @@ -52051,10 +51964,6 @@ snapshots: recurly@3.30.0: {} - redeyed@0.4.4: - dependencies: - esprima: 1.0.4 - redeyed@2.1.1: dependencies: esprima: 4.0.1