diff --git a/components/ticketsauce/actions/get-event-details/get-event-details.mjs b/components/ticketsauce/actions/get-event-details/get-event-details.mjs new file mode 100644 index 0000000000000..01e2b58b02821 --- /dev/null +++ b/components/ticketsauce/actions/get-event-details/get-event-details.mjs @@ -0,0 +1,67 @@ +import ticketsauce from "../../ticketsauce.app.mjs"; + +export default { + key: "ticketsauce-get-event-details", + name: "Get Event Details", + description: "Get details for a specified event. [See documentation](https://speca.io/ticketsauce/ticketsauce-public-api?key=204000d6bda66da78315e721920f43aa#event-details)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + ticketsauce, + partnerId: { + propDefinition: [ + ticketsauce, + "partnerId", + ], + }, + organizationId: { + propDefinition: [ + ticketsauce, + "organizationId", + ], + }, + eventId: { + propDefinition: [ + ticketsauce, + "eventId", + (c) => ({ + partnerId: c.partnerId, + organizationId: c.organizationId, + }), + ], + }, + photos: { + type: "string", + label: "Photos", + description: "Whether or not to return the event's photo gallery records.", + optional: true, + default: "0", + options: [ + "0", + "1", + ], + }, + includePerformers: { + propDefinition: [ + ticketsauce, + "includePerformers", + ], + }, + }, + async run({ $ }) { + const params = { + photos: parseInt(this.photos) === 1, + include_performers: parseInt(this.includePerformers) === 1, + }; + + return this.ticketsauce.getEventDetails($, { + eventId: this.eventId, + params, + }); + }, +}; diff --git a/components/ticketsauce/actions/get-events/get-events.mjs b/components/ticketsauce/actions/get-events/get-events.mjs new file mode 100644 index 0000000000000..4c64160f83c5d --- /dev/null +++ b/components/ticketsauce/actions/get-events/get-events.mjs @@ -0,0 +1,132 @@ +import ticketsauce from "../../ticketsauce.app.mjs"; + +export default { + key: "ticketsauce-get-events", + name: "Get Events", + description: "Get a list of all events owned by the authenticated account. [See documentation](https://speca.io/ticketsauce/ticketsauce-public-api?key=204000d6bda66da78315e721920f43aa#list-of-events)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + ticketsauce, + partnerId: { + propDefinition: [ + ticketsauce, + "partnerId", + ], + }, + organizationId: { + propDefinition: [ + ticketsauce, + "organizationId", + ], + }, + startAfter: { + type: "string", + label: "Start After", + description: "Only retrieve events that start AFTER the specified UTC date (format: `YYYY-MM-DD`).", + optional: true, + }, + endBefore: { + type: "string", + label: "End Before", + description: "Only retrieve events that end BEFORE the specified UTC date (format: `YYYY-MM-DD`).", + optional: true, + }, + activeOnly: { + type: "string", + label: "Active Only", + description: "Leaving this as true will restrict retrieved events to only 'active' events. Setting to false will allow the retrieval of both active and inactive events.", + optional: true, + default: "1", + options: [ + "0", + "1", + ], + }, + privacyType: { + type: "string", + label: "Privacy Type", + description: "Filter events by privacy type.", + optional: true, + default: "public", + options: [ + { + label: "Public events only", + value: "public", + }, + { + label: "All events (no restriction)", + value: "all", + }, + { + label: "Unlisted events only", + value: "unlisted", + }, + ], + }, + sortBy: { + type: "string", + label: "Sort By", + description: "Field to sort events by.", + optional: true, + options: [ + { + label: "Event start date", + value: "date", + }, + { + label: "Event name", + value: "name", + }, + { + label: "City location", + value: "city", + }, + ], + }, + sortDir: { + type: "string", + label: "Sort Direction", + description: "Direction to sort results.", + optional: true, + options: [ + { + label: "Ascending", + value: "asc", + }, + { + label: "Descending", + value: "desc", + }, + ], + }, + includePerformers: { + propDefinition: [ + ticketsauce, + "includePerformers", + ], + }, + }, + async run({ $ }) { + const params = { + partner_id: this.partnerId, + organization_id: this.organizationId, + start_after: this.startAfter, + end_before: this.endBefore, + active_only: parseInt(this.activeOnly) === 1, + privacy_type: this.privacyType, + sort_by: this.sortBy, + sort_dir: this.sortDir, + include_performers: parseInt(this.includePerformers) === 1, + }; + + return this.ticketsauce.listEvents($, { + params, + }); + }, +}; diff --git a/components/ticketsauce/actions/get-order-details/get-order-details.mjs b/components/ticketsauce/actions/get-order-details/get-order-details.mjs new file mode 100644 index 0000000000000..fe643a4a999e9 --- /dev/null +++ b/components/ticketsauce/actions/get-order-details/get-order-details.mjs @@ -0,0 +1,53 @@ +import ticketsauce from "../../ticketsauce.app.mjs"; + +export default { + key: "ticketsauce-get-order-details", + name: "Get Order Details", + description: "Get details for the specified order. [See documentation](https://speca.io/ticketsauce/ticketsauce-public-api?key=204000d6bda66da78315e721920f43aa#order-details)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + ticketsauce, + partnerId: { + propDefinition: [ + ticketsauce, + "partnerId", + ], + }, + organizationId: { + propDefinition: [ + ticketsauce, + "organizationId", + ], + }, + eventId: { + propDefinition: [ + ticketsauce, + "eventId", + (c) => ({ + partnerId: c.partnerId, + organizationId: c.organizationId, + }), + ], + }, + orderId: { + propDefinition: [ + ticketsauce, + "orderId", + (c) => ({ + eventId: c.eventId, + }), + ], + }, + }, + async run({ $ }) { + return this.ticketsauce.getOrderDetails($, { + orderId: this.orderId, + }); + }, +}; diff --git a/components/ticketsauce/actions/get-orders/get-orders.mjs b/components/ticketsauce/actions/get-orders/get-orders.mjs new file mode 100644 index 0000000000000..6c0350d1ae8f0 --- /dev/null +++ b/components/ticketsauce/actions/get-orders/get-orders.mjs @@ -0,0 +1,185 @@ +import ticketsauce from "../../ticketsauce.app.mjs"; + +export default { + key: "ticketsauce-get-orders", + name: "Get Orders", + description: "Get a list of orders from the specified event. [See documentation](https://speca.io/ticketsauce/ticketsauce-public-api?key=204000d6bda66da78315e721920f43aa#orders)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + ticketsauce, + partnerId: { + propDefinition: [ + ticketsauce, + "partnerId", + ], + }, + organizationId: { + propDefinition: [ + ticketsauce, + "organizationId", + ], + }, + eventId: { + propDefinition: [ + ticketsauce, + "eventId", + (c) => ({ + partnerId: c.partnerId, + organizationId: c.organizationId, + }), + ], + }, + perPage: { + type: "string", + label: "Per Page", + description: "How many results to retrieve (per page). Max 500.", + optional: true, + default: "100", + }, + page: { + type: "string", + label: "Page", + description: "Which page to return. For example, if per_page is 20, and page is 3, the results would show 41-60.", + optional: true, + default: "1", + }, + q: { + type: "string", + label: "Search Query", + description: "Exact email address or last name attached to an order.", + optional: true, + }, + returnQuestionnaires: { + type: "string", + label: "Return Questionnaires", + description: "Whether or not to return the question responses from questionnaires (will include attendee responses as well IF tickets are returned)", + optional: true, + default: "0", + options: [ + "0", + "1", + ], + }, + returnTickets: { + type: "string", + label: "Return Tickets", + description: "Whether or not to return the tickets for each order as well.", + optional: true, + default: "0", + options: [ + "0", + "1", + ], + }, + returnLineItemFees: { + type: "string", + label: "Return Line Item Fees", + description: "Whether or not to return the itemized line item fees for each order (if they exist).", + optional: true, + default: "0", + options: [ + "0", + "1", + ], + }, + orderedAfter: { + type: "string", + label: "Ordered After", + description: "Only retrieve orders that were ordered AFTER the specified date/time (format`: YYYY-MM-DD` or `YYYY-MM-DD HH:MM:SS`).", + optional: true, + }, + orderedBefore: { + type: "string", + label: "Ordered Before", + description: "Only retrieve orders that were ordered BEFORE the specified date/time (format`: YYYY-MM-DD` or `YYYY-MM-DD HH:MM:SS`).", + optional: true, + }, + modifiedAfter: { + type: "string", + label: "Modified After", + description: "Only retrieve orders that were modified AFTER the specified date/time (format`: YYYY-MM-DD` or `YYYY-MM-DD HH:MM:SS`).", + optional: true, + }, + modifiedBefore: { + type: "string", + label: "Modified Before", + description: "Only retrieve orders that were modified BEFORE the specified date/time (format`: YYYY-MM-DD` or `YYYY-MM-DD HH:MM:SS`).", + optional: true, + }, + sortBy: { + type: "string", + label: "Sort By", + description: "Field to sort orders by.", + optional: true, + default: "date", + options: [ + { + label: "Ordered date", + value: "date", + }, + { + label: "Last name", + value: "name", + }, + ], + }, + sortDir: { + type: "string", + label: "Sort Direction", + description: "Direction to sort results.", + optional: true, + default: "asc", + options: [ + { + label: "Ascending", + value: "asc", + }, + { + label: "Descending", + value: "desc", + }, + ], + }, + totalAbove: { + type: "string", + label: "Total Above", + description: "Return only orders whose order total is greater than this value.", + optional: true, + }, + totalBelow: { + type: "string", + label: "Total Below", + description: "Return only orders whose order total is less than this value.", + optional: true, + }, + }, + async run({ $ }) { + const params = { + per_page: this.perPage, + page: this.page, + q: this.q, + return_questionnaires: parseInt(this.returnQuestionnaires) === 1, + return_tickets: parseInt(this.returnTickets) === 1, + return_line_item_fees: parseInt(this.returnLineItemFees) === 1, + ordered_after: this.orderedAfter, + ordered_before: this.orderedBefore, + modified_after: this.modifiedAfter, + modified_before: this.modifiedBefore, + sort_by: this.sortBy, + sort_dir: this.sortDir, + total_above: this.totalAbove, + total_below: this.totalBelow, + }; + + return this.ticketsauce.listOrders($, { + eventId: this.eventId, + params, + }); + }, +}; diff --git a/components/ticketsauce/actions/get-ticket-checkin-ids/get-ticket-checkin-ids.mjs b/components/ticketsauce/actions/get-ticket-checkin-ids/get-ticket-checkin-ids.mjs new file mode 100644 index 0000000000000..6f54263f6f1e7 --- /dev/null +++ b/components/ticketsauce/actions/get-ticket-checkin-ids/get-ticket-checkin-ids.mjs @@ -0,0 +1,63 @@ +import ticketsauce from "../../ticketsauce.app.mjs"; + +export default { + key: "ticketsauce-get-ticket-checkin-ids", + name: "Get Ticket Check-in IDs", + description: "Get a list of ticket check-in IDs from the specified event. [See documentation](https://speca.io/ticketsauce/ticketsauce-public-api?key=204000d6bda66da78315e721920f43aa#ticket-checkin-ids)", + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + ticketsauce, + partnerId: { + propDefinition: [ + ticketsauce, + "partnerId", + ], + }, + organizationId: { + propDefinition: [ + ticketsauce, + "organizationId", + ], + }, + eventId: { + propDefinition: [ + ticketsauce, + "eventId", + (c) => ({ + partnerId: c.partnerId, + organizationId: c.organizationId, + }), + ], + }, + perPage: { + type: "string", + label: "Per Page", + description: "How many results to retrieve (per page). Max 5000.", + optional: true, + }, + page: { + type: "string", + label: "Page", + description: "Which page to return. For example, if per_page is 20, and page is 3, the results would show 41-60.", + optional: true, + default: "1", + }, + }, + async run({ $ }) { + const params = { + per_page: this.perPage, + page: this.page, + }; + + return this.ticketsauce.getTicketCheckinIds($, { + eventId: this.eventId, + params, + }); + }, +}; diff --git a/components/ticketsauce/package.json b/components/ticketsauce/package.json index 9d812ec5b5894..78cbed9a12351 100644 --- a/components/ticketsauce/package.json +++ b/components/ticketsauce/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/ticketsauce", - "version": "0.0.1", + "version": "0.1.0", "description": "Pipedream TicketSauce Components", "main": "ticketsauce.app.mjs", "keywords": [ @@ -11,5 +11,8 @@ "author": "Pipedream (https://pipedream.com/)", "publishConfig": { "access": "public" + }, + "dependencies": { + "@pipedream/platform": "^3.1.0" } -} \ No newline at end of file +} diff --git a/components/ticketsauce/sources/new-event/new-event.mjs b/components/ticketsauce/sources/new-event/new-event.mjs new file mode 100644 index 0000000000000..e1d6b5b4d5a50 --- /dev/null +++ b/components/ticketsauce/sources/new-event/new-event.mjs @@ -0,0 +1,110 @@ +import ticketsauce from "../../ticketsauce.app.mjs"; +import sampleEmit from "./test-event.mjs"; + +export default { + key: "ticketsauce-new-event", + name: "New Event", + description: "Emit new event when an event is created in Ticketsauce. [See the documentation](https://speca.io/ticketsauce/ticketsauce-public-api?key=204000d6bda66da78315e721920f43aa#list-of-events)", + version: "0.0.1", + type: "source", + dedupe: "unique", + props: { + ticketsauce, + db: "$.service.db", + alert: { + type: "alert", + alertType: "info", + content: "The TicketSauce API caches responses to the **List of Events** endpoint for 1 hour. This affects how new events are polled. To avoid unnecessary API calls, set the polling interval accordingly. [See the documentation](https://speca.io/ticketsauce/ticketsauce-public-api?key=204000d6bda66da78315e721920f43aa#list-of-events)", + }, + timer: { + type: "$.interface.timer", + default: { + intervalSeconds: 60 * 60, + }, + }, + partnerId: { + propDefinition: [ + ticketsauce, + "partnerId", + ], + description: "Filter events by a specific partner ID (optional)", + }, + organizationId: { + propDefinition: [ + ticketsauce, + "organizationId", + ], + description: "Filter events by a specific organization ID (optional)", + }, + }, + methods: { + _getLastCreated() { + return this.db.get("lastCreated") || "1970-01-01 00:00:00"; + }, + _setLastCreated(lastCreated) { + this.db.set("lastCreated", lastCreated); + }, + generateMeta(event) { + return { + id: event.Event.id, + summary: `New Event: ${event.Event.name}`, + ts: Date.parse(event.Event.created), + }; + }, + async startEvent(maxResults = 0) { + const lastCreated = this._getLastCreated(); + + const events = await this.ticketsauce.listEvents(this, { + partnerId: this.partnerId, + organizationId: this.organizationId, + params: { + sort_by: "date", + sort_dir: "desc", + active_only: false, + }, + }); + + if (!events?.length) { + return; + } + + // Filter events created after lastCreated and sort by creation date + const newEvents = events.filter((event) => + Date.parse(event.Event.created) > Date.parse(lastCreated)); + + // Sort by created date ascending (oldest first) for emission order + newEvents.sort((a, b) => + Date.parse(a.Event.created) - Date.parse(b.Event.created)); + + // Limit results if maxResults is specified + const eventsToEmit = maxResults && maxResults > 0 + ? newEvents.slice(0, maxResults) + : newEvents; + + // Update last created date if we have new events + if (newEvents.length > 0) { + // Find the most recent created date + const mostRecentEvent = events.reduce((latest, current) => + Date.parse(current.Event.created) > Date.parse(latest.Event.created) + ? current + : latest); + this._setLastCreated(mostRecentEvent.Event.created); + } + + // Emit events + for (const event of eventsToEmit) { + this.$emit(event, this.generateMeta(event)); + } + }, + }, + hooks: { + async deploy() { + await this.startEvent(25); + }, + }, + async run() { + await this.startEvent(); + }, + sampleEmit, +}; + diff --git a/components/ticketsauce/sources/new-event/test-event.mjs b/components/ticketsauce/sources/new-event/test-event.mjs new file mode 100644 index 0000000000000..db2381dc33b2c --- /dev/null +++ b/components/ticketsauce/sources/new-event/test-event.mjs @@ -0,0 +1,47 @@ +export default { + "Event": { + "id": "5471eea9-0bf8-4d1e-ab14-313e0ad0a778", + "name": "Example Event", + "active": true, + "address": "1234 Happy St", + "address2": "Apt B.", + "city": "San Diego", + "state": "CA", + "postal_code": "12345", + "country": "United States", + "location": "The Joyful Theatre", + "latitude": "33.394299", + "longitude": "-111.598045", + "map_zoom": "13", + "online_only": false, + "start": "2024-11-28 18:00:00", + "start_utc": "2024-11-29 02:00:00", + "end": "2024-11-28 20:00:00", + "end_utc": "2024-11-29 04:00:00", + "show_start": true, + "show_end": true, + "timezone": "America/Los_Angeles", + "created": "2024-01-01 16:30:32", + "modified": "2024-01-01 18:45:12", + "locale": "eng", + "privacy_type": "0", + "region": null, + "slug": "example-event", + "tickets_active": true, + "website": "https://www.example-event.com", + "organization_id": "565xxxxx-xxxx-xxxx-xxxx-xxxxxxxx128", + "event_topic_id": "445xxxxx-xxxx-xxxx-xxxx-xxxxxxxx554", + "event_topic": "Outdoors, Camping & Hiking", + "event_type_id": "987xxxxx-xxxx-xxxx-xxxx-xxxxxxxx789", + "event_type": "Trade Show", + "event_url": "https://www.example-event.com/e/an-event", + "tickets_url": "https://www.example-event.com/e/an-event/tickets", + }, + "Logo": { + "url": "https://cd2cafd.ssl.cf5.rackcdn.com/6fc4165cb768be302d2ec387a058f81e_sm.png" + }, + "Masthead": { + "url": null, + "created":null + }, +}; diff --git a/components/ticketsauce/ticketsauce.app.mjs b/components/ticketsauce/ticketsauce.app.mjs index f665cd726ff5b..5cea1df87fb9e 100644 --- a/components/ticketsauce/ticketsauce.app.mjs +++ b/components/ticketsauce/ticketsauce.app.mjs @@ -1,11 +1,164 @@ +import { axios } from "@pipedream/platform"; + export default { type: "app", app: "ticketsauce", - propDefinitions: {}, + propDefinitions: { + partnerId: { + type: "string", + label: "Partner ID", + description: "Including this ID will limit the result set to the specific partner.", + optional: true, + }, + organizationId: { + type: "string", + label: "Organization ID", + description: "Including this ID will limit the result set to the specific organization.", + optional: true, + }, + includePerformers: { + type: "string", + label: "Include Performers", + description: "If true, returns any associated performers/artists with the event.", + optional: true, + default: "0", + options: [ + "0", + "1", + ], + }, + eventId: { + type: "string", + label: "Event", + description: "Select an event", + async options({ + partnerId, organizationId, + }) { + const events = await this.listEvents(this, { + partnerId, + organizationId, + }); + + if (!events?.length) { + return []; + } + + const options = events.map((eventData) => ({ + label: `${eventData.Event.name} - ${eventData.Event.city} (${eventData.Event.start})`, + value: eventData.Event.id, + })); + + return options; + }, + }, + orderId: { + type: "string", + label: "Order", + description: "Select an order", + async options({ + eventId, prevContext, + }) { + if (!eventId) { + return []; + } + + const orders = await this.listOrders(this, { + eventId, + params: { + per_page: 100, + page: prevContext?.page || 0, + }, + }); + + if (!orders?.length) { + return prevContext?.page > 0 + ? { + options: [], + context: {}, + } + : []; + } + + const options = orders.map((orderData) => ({ + label: `${orderData.Order.first_name} ${orderData.Order.last_name} - ${orderData.Order.email} (${orderData.Order.total_paid})`, + value: orderData.Order.id, + })); + + return { + options, + context: { + page: (prevContext?.page || 0) + 1, + }, + }; + }, + }, + }, methods: { - // this.$auth contains connected account data - authKeys() { - console.log(Object.keys(this.$auth)); + _makeRequest({ + $ = this, path, params = {}, ...opts + }) { + return axios($, { + url: `https://api.ticketsauce.com/v2${path}`, + params: { + access_token: this.$auth.oauth_access_token, + ...params, + }, + ...opts, + }); + }, + async listEvents($, { + partnerId, organizationId, params, + } = {}) { + const requestParams = { + ...params, + }; + + if (partnerId) { + requestParams.partner_id = partnerId; + } + + if (organizationId) { + requestParams.organization_id = organizationId; + } + + return this._makeRequest({ + $, + path: "/events", + params: requestParams, + }); + }, + async getEventDetails($, { + eventId, params, + } = {}) { + return this._makeRequest({ + $, + path: `/event/${eventId}`, + params, + }); + }, + async listOrders($, { + eventId, params, + } = {}) { + return this._makeRequest({ + $, + path: `/orders/${eventId}`, + params, + }); + }, + async getOrderDetails($, { orderId }) { + return this._makeRequest({ + $, + path: `/order/${orderId}`, + }); + }, + async getTicketCheckinIds($, { + eventId, params, + } = {}) { + return this._makeRequest({ + $, + path: `/tickets/checkin_ids/${eventId}`, + params, + }); }, }, }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fdd0c9e7898fc..3fcd4af6bcef3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,7 +104,7 @@ importers: version: 4.0.0 ts-jest: specifier: ^29.1.1 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3) + version: 29.2.5(@babel/core@8.0.0-alpha.13)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@8.0.0-alpha.13))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3) tsc-esm-fix: specifier: ^2.18.0 version: 2.20.27 @@ -629,8 +629,7 @@ importers: specifier: ^3.1.0 version: 3.1.0 - components/airweave: - specifiers: {} + components/airweave: {} components/aitable_ai: dependencies: @@ -2679,8 +2678,7 @@ importers: specifier: ^3.0.1 version: 3.0.1(web-streams-polyfill@3.3.3) - components/clarifai: - specifiers: {} + components/clarifai: {} components/clarify: {} @@ -6588,8 +6586,7 @@ importers: specifier: ^3.0.3 version: 3.0.3 - components/hex: - specifiers: {} + components/hex: {} components/heygen: dependencies: @@ -14581,7 +14578,11 @@ importers: specifier: ^1.2.0 version: 1.6.6 - components/ticketsauce: {} + components/ticketsauce: + dependencies: + '@pipedream/platform': + specifier: ^3.1.0 + version: 3.1.0 components/ticktick: dependencies: @@ -16961,7 +16962,7 @@ importers: version: 3.1.7 ts-jest: specifier: ^29.2.5 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2) + version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2) tsup: specifier: ^8.3.6 version: 8.3.6(@microsoft/api-extractor@7.47.12(@types/node@20.17.30))(jiti@2.4.2)(postcss@8.5.6)(tsx@4.19.4)(typescript@5.7.2)(yaml@2.8.0) @@ -28331,6 +28332,7 @@ packages: mailsplit@5.4.0: resolution: {integrity: sha512-wnYxX5D5qymGIPYLwnp6h8n1+6P6vz/MJn5AzGjZ8pwICWssL+CCQjWBIToOVHASmATot4ktvlLo6CyLfOXWYA==} + deprecated: This package has been renamed to @zone-eu/mailsplit. Please update your dependencies. make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -35785,7 +35787,7 @@ snapshots: '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 convert-source-map: 2.0.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -36056,21 +36058,45 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -36081,16 +36107,34 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -36101,41 +36145,89 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@8.0.0-alpha.13)': + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/helper-plugin-utils': 7.25.9 + optional: true + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -37198,7 +37290,7 @@ snapshots: '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 @@ -39704,6 +39796,8 @@ snapshots: '@putout/operator-filesystem': 5.0.0(putout@36.13.1(eslint@8.57.1)(typescript@5.6.3)) '@putout/operator-json': 2.2.0 putout: 36.13.1(eslint@8.57.1)(typescript@5.6.3) + transitivePeerDependencies: + - supports-color '@putout/operator-regexp@1.0.0(putout@36.13.1(eslint@8.57.1)(typescript@5.6.3))': dependencies: @@ -42264,7 +42358,7 @@ snapshots: '@typescript-eslint/types': 8.15.0 '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.6.3) '@typescript-eslint/visitor-keys': 8.15.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) eslint: 8.57.1 optionalDependencies: typescript: 5.6.3 @@ -43158,6 +43252,20 @@ snapshots: transitivePeerDependencies: - supports-color + babel-jest@29.7.0(@babel/core@8.0.0-alpha.13): + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@8.0.0-alpha.13) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + optional: true + babel-plugin-istanbul@6.1.1: dependencies: '@babel/helper-plugin-utils': 7.25.9 @@ -43224,12 +43332,39 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + babel-preset-current-node-syntax@1.1.0(@babel/core@8.0.0-alpha.13): + dependencies: + '@babel/core': 8.0.0-alpha.13 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@8.0.0-alpha.13) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@8.0.0-alpha.13) + optional: true + babel-preset-jest@29.6.3(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + babel-preset-jest@29.6.3(@babel/core@8.0.0-alpha.13): + dependencies: + '@babel/core': 8.0.0-alpha.13 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@8.0.0-alpha.13) + optional: true + backoff@2.5.0: dependencies: precond: 0.2.3 @@ -45438,7 +45573,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -47299,7 +47434,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -48339,7 +48474,7 @@ snapshots: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -49880,7 +50015,7 @@ snapshots: dependencies: '@tediousjs/connection-string': 0.5.0 commander: 11.1.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) rfdc: 1.4.1 tarn: 3.0.2 tedious: 16.7.1 @@ -51141,9 +51276,9 @@ snapshots: postcss-resolve-nested-selector@0.1.6: {} - postcss-safe-parser@7.0.1(postcss@8.4.49): + postcss-safe-parser@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.4.49 + postcss: 8.5.6 postcss-selector-parser@6.1.2: dependencies: @@ -51629,7 +51764,7 @@ snapshots: ajv: 8.17.1 chalk: 5.3.0 ci-info: 4.1.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) deepmerge: 4.3.1 escalade: 3.2.0 fast-glob: 3.3.2 @@ -53294,9 +53429,9 @@ snapshots: micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 - postcss: 8.4.49 + postcss: 8.5.6 postcss-resolve-nested-selector: 0.1.6 - postcss-safe-parser: 7.0.1(postcss@8.4.49) + postcss-safe-parser: 7.0.1(postcss@8.5.6) postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 @@ -53765,7 +53900,7 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.24.2)(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2): + ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.30)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2)))(typescript@5.7.2): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -53783,9 +53918,8 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.0) - esbuild: 0.24.2 - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3): + ts-jest@29.2.5(@babel/core@8.0.0-alpha.13)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@8.0.0-alpha.13))(jest@29.7.0(@types/node@20.17.6)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))(typescript@5.6.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -53799,10 +53933,10 @@ snapshots: typescript: 5.6.3 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.26.0 + '@babel/core': 8.0.0-alpha.13 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) + babel-jest: 29.7.0(@babel/core@8.0.0-alpha.13) ts-node@10.9.2(@types/node@20.17.30)(typescript@5.7.2): dependencies: @@ -53974,7 +54108,7 @@ snapshots: cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 @@ -54002,7 +54136,7 @@ snapshots: cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.0 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 @@ -54626,7 +54760,7 @@ snapshots: '@volar/typescript': 2.4.10 '@vue/language-core': 2.1.6(typescript@5.9.2) compare-versions: 6.1.1 - debug: 4.3.7(supports-color@5.5.0) + debug: 4.3.7(supports-color@9.4.0) kolorist: 1.8.0 local-pkg: 0.5.1 magic-string: 0.30.13 @@ -54641,7 +54775,7 @@ snapshots: vite@5.4.11(@types/node@24.0.10): dependencies: esbuild: 0.21.5 - postcss: 8.4.49 + postcss: 8.5.6 rollup: 4.27.3 optionalDependencies: '@types/node': 24.0.10