Compare commits

...

23 Commits

Author SHA1 Message Date
Matt Aitken 17df4839d7 Latest lockfile
🚀 Publish Trigger.dev Docker / typecheck (push) Failing after 5s
🚀 Publish Trigger.dev Docker / e2e (push) Failing after 5s
🚀 Publish Trigger.dev Docker / units (push) Failing after 21s
🚀 Publish Trigger.dev Docker / publish (push) Has been skipped
2024-01-21 17:30:21 +00:00
github-actions[bot] e3f78178f7 chore: Update version for release (#864)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-01-21 17:29:23 +00:00
Kritik Jiyaviya da90ee13c3 fix: Resend integration example comment (#860) 2024-01-21 17:16:26 +00:00
Matt Aitken 583da458ec Changed the minimum interval time period from 60s to 20s (with changeset) 2024-01-21 17:06:09 +00:00
Matt Aitken dcf95c4eb2 Revert "Changeset: Changed the minimum interval time from 60s to 20s"
This reverts commit c272e38de2.
2024-01-21 17:04:11 +00:00
Matt Aitken 32cf5790cb Revert "Changed the minimum interval time from 60s to 20s"
This reverts commit ca78ddc2c2.
2024-01-21 17:04:11 +00:00
Matt Aitken c272e38de2 Changeset: Changed the minimum interval time from 60s to 20s 2024-01-21 16:29:54 +00:00
Matt Aitken ca78ddc2c2 Changed the minimum interval time from 60s to 20s 2024-01-21 16:28:28 +00:00
Matt Aitken 07ed8c346a Fix for enabled env var in docs 2024-01-20 14:01:56 +00:00
Matt Aitken d4391f2e2d Fixed link in io.logger to the run log 2024-01-20 12:54:11 +00:00
Eric Allam 2c328ba93d Fix pnmp lock file again 2024-01-17 14:50:04 +00:00
github-actions[bot] 68dbc07ee8 chore: Update version for release (#854)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-01-17 14:49:19 +00:00
Eric Allam 58448243af Fix pnpm i 2024-01-17 14:41:51 +00:00
Eric Allam 6c4047cf21 Fix an issue where runs were stuck executing when a child task failed and the parent task retried 2024-01-17 14:39:06 +00:00
github-actions[bot] 831860eace chore: Update version for release (#853)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-01-17 14:13:34 +00:00
Matt Aitken db46f2a69a Add explicit return type to deprecated sendEmail function because tsup was complaining 2024-01-17 14:07:45 +00:00
Kritik Jiyaviya 4dd6cf18dc feat: Add support for the new Resend audience API endpoints (#850)
* feat: Add support for the new Resend audience API endpoints

* update pnpm-lock.yaml

* update pnpm-lock.yaml

* Merge branch 'main' into feat/support-for-resend-audience-api

* latest pnpm-lock.yaml

* Create lovely-items-end.md

* Update pnpm-lock.yaml

---------

Co-authored-by: Matt Aitken <matt@mattaitken.com>
2024-01-17 14:06:45 +00:00
Eric Allam adf66d23b8 Update pnpm lock file
🚀 Publish Trigger.dev Docker / typecheck (push) Failing after 5s
🚀 Publish Trigger.dev Docker / e2e (push) Failing after 4s
🚀 Publish Trigger.dev Docker / units (push) Failing after 15s
🚀 Publish Trigger.dev Docker / publish (push) Has been skipped
2024-01-17 11:15:30 +00:00
github-actions[bot] 5c42831a60 chore: Update version for release (#846)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-01-17 11:14:52 +00:00
Eric Allam 26f5e7774d Fix yalt.dev connection timeouts by increasing timeout from 1s to 5s (#851)
* Increase the yalt tunnel connection timeout to 5 seconds

* Add changeset
2024-01-17 10:27:57 +00:00
Matt Aitken f209a3b364 Ability to disable organization runs + more obvious if you're over the free limit (#848)
* Fix for typo in error when a Job invoke fails

* Can disable runs for an Organization

* Don’t perform runs if runsEnabled === false for an Org

* Exceeded runs messages made into errors, they were very subtle

* Return the runsEnabled property for each org

* More obvious message if you’re over the free run limit

* Added a red border to the free usage panel if you’re over your run limit

* Added missing property to Storybook for the FreePlanUsage component
2024-01-17 09:42:58 +00:00
Son Yen Nguyen a93b554f8b Feat: Update cron parser human readable string (#847)
* Update cron parser human readable string

* Create hot-cobras-flow.md

---------

Co-authored-by: Matt Aitken <matt@mattaitken.com>
2024-01-16 17:22:35 +00:00
Matt Aitken 0f342cd1be Don't show duplicate Job warning if it's an internal job 2024-01-16 15:54:20 +00:00
88 changed files with 1610 additions and 159 deletions
@@ -13,8 +13,15 @@ export function FreePlanUsage({ to, percentage }: { to: string; percentage: numb
["#22C55E", "#22C55E", "#F59E0B", "#F43F5E", "#F43F5E"]
);
const hasHitLimit = cappedPercentage >= 1;
return (
<div className="rounded border border-slate-900 bg-[#101722] p-2.5">
<div
className={cn(
"rounded border border-slate-900 bg-[#101722] p-2.5",
hasHitLimit && "border-rose-800/60"
)}
>
<div className="flex items-center justify-between gap-2">
<div className="flex items-center gap-1">
<ArrowUpCircleIcon className="h-5 w-5 text-dimmed" />
@@ -5,6 +5,7 @@ import { formatNumberCompact } from "~/utils/numberFormatter";
import { plansPath } from "~/utils/pathBuilder";
import { LinkButton } from "../primitives/Buttons";
import { Paragraph } from "../primitives/Paragraph";
import { Callout } from "../primitives/Callout";
type UpgradePromptProps = {
organization: MatchedOrganization;
@@ -18,19 +19,25 @@ export function UpgradePrompt({ organization }: UpgradePromptProps) {
}
return (
<div className="flex h-full w-full items-center gap-4 bg-gradient-to-r from-transparent to-indigo-900/50 pr-1.5">
<Paragraph variant="extra-small" className="text-rose-500">
You have exceeded the monthly {formatNumberCompact(currentPlan.usage.runCountCap)} runs
limit
</Paragraph>
<LinkButton
variant={"primary/small"}
LeadingIcon={ArrowUpCircleIcon}
leadingIconClassName="px-0"
to={plansPath(organization)}
>
Upgrade
</LinkButton>
</div>
<Callout variant="error" className="flex h-full items-center rounded-none px-1 py-0">
<div className="flex items-center justify-between gap-3">
<Paragraph variant="extra-small" className="text-white">
{organization.runsEnabled
? `You have exceeded the monthly ${formatNumberCompact(
currentPlan.usage.runCountCap
)} runs
limit`
: `No runs are executing because you have exceeded the free limit`}
</Paragraph>
<LinkButton
variant={"primary/small"}
LeadingIcon={ArrowUpCircleIcon}
leadingIconClassName="px-0"
to={plansPath(organization)}
>
Upgrade
</LinkButton>
</div>
</Callout>
);
}
@@ -49,13 +49,13 @@ export function JobsTable({ jobs, noResultsText }: { jobs: ProjectJob[]; noResul
<TableRow key={job.id} className="group">
<TableCell to={path}>
<span className="flex items-center gap-2">
<NamedIcon name={job.event.icon} className="h-8 w-8" />
<NamedIcon name={job.event.icon} className="w-8 h-8" />
<LabelValueStack
label={job.title}
value={
job.dynamic ? (
<span className="flex items-center gap-0.5">
<NamedIcon name="dynamic" className="h-4 w-4" />{" "}
<NamedIcon name="dynamic" className="w-4 h-4" />{" "}
<span className="uppercase">Dynamic:</span> {job.event.title}
</span>
) : (
@@ -75,9 +75,9 @@ export function JobsTable({ jobs, noResultsText }: { jobs: ProjectJob[]; noResul
key={integration.key}
button={
<div className="relative">
<NamedIcon name={integration.icon} className="h-6 w-6" />
<NamedIcon name={integration.icon} className="w-6 h-6" />
{integration.setupStatus === "MISSING_FIELDS" && (
<NamedIcon name="error" className="absolute -left-1 -top-1 h-4 w-4" />
<NamedIcon name="error" className="absolute w-4 h-4 -left-1 -top-1" />
)}
</div>
}
@@ -99,7 +99,7 @@ export function JobsTable({ jobs, noResultsText }: { jobs: ProjectJob[]; noResul
{job.properties && (
<SimpleTooltip
button={
<div className="flex max-w-[200px] items-start justify-start gap-5 truncate">
<div className="flex max-w-[300px] items-start justify-start gap-5 truncate">
{job.properties.map((property, index) => (
<LabelValueStack
key={index}
@@ -22,6 +22,7 @@ const mockOrganization: MatchedOrganization = {
],
hasUnconfiguredIntegrations: false,
memberCount: 1,
runsEnabled: true,
};
export const ProgressBar: Story = {
@@ -94,6 +94,7 @@ export class OrganizationsPresenter {
})),
hasUnconfiguredIntegrations: org._count.integrations > 0,
memberCount: org._count.members,
runsEnabled: org.runsEnabled,
};
});
}
@@ -96,7 +96,7 @@ export default function Page() {
<div className="flex flex-col gap-5 rounded border border-border p-6">
{hitsRunLimit && (
<Callout
variant={"pricing"}
variant={"error"}
cta={
<LinkButton
variant="primary/small"
@@ -108,7 +108,7 @@ export default function Page() {
</LinkButton>
}
>
<Paragraph variant="small">
<Paragraph variant="small" className="text-white">
You have exceeded the monthly{" "}
{formatNumberCompact(currentPlan?.subscription?.limits.runs ?? 0)} runs limit.
Upgrade to a paid plan before{" "}
@@ -65,7 +65,7 @@ export default function Page() {
</Callout>
)}
{hitRunLimit && (
<Callout variant={"pricing"}>
<Callout variant={"error"}>
{`You have exceeded the monthly
${formatNumberCompact(currentPlan!.subscription!.limits.runs!)} runs limit. Upgrade so you
can continue to perform runs.`}
@@ -72,7 +72,7 @@ export async function action({ request, params }: ActionFunctionArgs) {
);
if (!run) {
return json({ error: "Job count not be invoked" }, { status: 500 });
return json({ error: "Job could not be invoked" }, { status: 500 });
}
return json({ id: run.id });
@@ -3,6 +3,7 @@ import { $transaction, PrismaClientOrTransaction } from "~/db.server";
import { prisma } from "~/db.server";
import { workerQueue } from "~/services/worker.server";
import type { AuthenticatedEnvironment } from "../apiAuth.server";
import { logger } from "../logger.server";
export class CreateRunService {
#prismaClient: PrismaClientOrTransaction;
@@ -25,6 +26,11 @@ export class CreateRunService {
},
options: { callbackUrl?: string } = {}
) {
if (!environment.organization.runsEnabled) {
logger.debug("Runs are disabled for this organization", environment);
return;
}
const endpoint = await this.#prismaClient.endpoint.findUniqueOrThrow({
where: {
id: version.endpointId,
@@ -103,11 +103,11 @@ function validateSchedule(schedule: ScheduleMetadata): ScheduleMetadata {
}
function validateInterval(schedule: IntervalMetadata): ScheduleMetadata {
if (schedule.options.seconds < 60) {
if (schedule.options.seconds < 20) {
return {
type: "interval",
options: {
seconds: 60,
seconds: 20,
},
};
}
+1 -1
View File
@@ -64,7 +64,7 @@ client.defineJob({
name: "Example Job",
version: "0.1.0",
trigger: eventTrigger({ name: "example.event" }),
enabled: process.env.TRIGGER_JOBS_DISABLED === "true",
enabled: process.env.TRIGGER_JOBS_DISABLED !== "true",
run: async (payload, io, ctx) => {
// your Job code here
},
+16 -7
View File
@@ -26,13 +26,22 @@ Send an email to a recipient with a text payload. [Official Resend Docs](https:/
## Tasks
| Function Name | Description |
| --------------- | -------------------------------- |
| `emails.send` | Send an email |
| `emails.create` | Create an email |
| `emails.get` | Get an email |
| `batch.send` | Send a batch of emails at once |
| `batch.create` | Create a batch of emails at once |
| Function Name | Description |
| ------------------ | -------------------------------- |
| `emails.send` | Send an email |
| `emails.create` | Create an email |
| `emails.get` | Get an email |
| `batch.send` | Send a batch of emails at once |
| `batch.create` | Create a batch of emails at once |
| `audiences.create` | Create an audience |
| `audiences.get` | Get an audience |
| `audiences.remove` | Remove an audience |
| `audiences.list` | List audiences |
| `contacts.create` | Create a contact |
| `contacts.get` | Get a contact |
| `contacts.update` | Update a contact |
| `contacts.remove` | Remove a contact |
| `contacts.list` | List contacts |
## Example
+1 -1
View File
@@ -12,7 +12,7 @@ description: "`intervalTrigger()` is set as a [Job's trigger](/sdk/job) to trigg
Intervals are set with a number of seconds. There are some important considerations:
- The Job will first run the specified number of seconds after it has first connected to an [Environment](/documentation/concepts/environments-endpoints). This will happen when you first [deploy](/documentation/guides/deployment) that Job.
- The minimum interval is 60 seconds (any input less than this it will default to 60).
- The minimum interval is 20 seconds (any input less than this it will default to 20).
- The maximum interval is 2_592_000 seconds (30 days), if you pass more than this it will trigger every 30 days.
If you wish to Run a Job at an exact time or less frequently than once pr day you should use a [cronTrigger()](/sdk/crontrigger) instead.
+1 -1
View File
@@ -1,6 +1,6 @@
---
title: "logger"
description: "Used to send log messages to the [Run log](/documentation/guides/viewing-runs)."
description: "Used to send log messages to the [Run log](/docs/documentation/guides/viewing-runs)."
---
There are 5 levels, that you can use to log messages.
+31
View File
@@ -1,5 +1,36 @@
# @trigger.dev/airtable
## 2.3.16
### Patch Changes
- @trigger.dev/integration-kit@2.3.16
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
- @trigger.dev/integration-kit@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/integration-kit@2.3.14
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
- @trigger.dev/integration-kit@2.3.13
## 2.3.12
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/airtable",
"version": "2.3.12",
"version": "2.3.16",
"description": "Trigger.dev integration for airtable",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,8 +25,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^2.3.12",
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/integration-kit": "workspace:^2.3.16",
"@trigger.dev/sdk": "workspace:^2.3.16",
"airtable": "^0.12.1",
"zod": "3.22.3"
},
+31
View File
@@ -1,5 +1,36 @@
# @trigger.dev/github
## 2.3.16
### Patch Changes
- @trigger.dev/integration-kit@2.3.16
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
- @trigger.dev/integration-kit@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/integration-kit@2.3.14
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
- @trigger.dev/integration-kit@2.3.13
## 2.3.12
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/github",
"version": "2.3.12",
"version": "2.3.16",
"description": "The official GitHub integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -30,8 +30,8 @@
"@octokit/request-error": "^5.0.1",
"@octokit/webhooks": "^12.0.10",
"octokit": "^3.1.2",
"@trigger.dev/integration-kit": "workspace:^2.3.12",
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/integration-kit": "workspace:^2.3.16",
"@trigger.dev/sdk": "workspace:^2.3.16",
"zod": "3.22.3"
},
"engines": {
+31
View File
@@ -1,5 +1,36 @@
# @trigger.dev/linear
## 2.3.16
### Patch Changes
- @trigger.dev/integration-kit@2.3.16
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
- @trigger.dev/integration-kit@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/integration-kit@2.3.14
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
- @trigger.dev/integration-kit@2.3.13
## 2.3.12
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/linear",
"version": "2.3.12",
"version": "2.3.16",
"description": "Trigger.dev integration for @linear/sdk",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -26,8 +26,8 @@
},
"dependencies": {
"@linear/sdk": "^8.0.0",
"@trigger.dev/integration-kit": "workspace:^2.3.12",
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/integration-kit": "workspace:^2.3.16",
"@trigger.dev/sdk": "workspace:^2.3.16",
"zod": "3.22.3"
},
"engines": {
+31
View File
@@ -1,5 +1,36 @@
# @trigger.dev/slack
## 2.3.16
### Patch Changes
- @trigger.dev/integration-kit@2.3.16
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
- @trigger.dev/integration-kit@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/integration-kit@2.3.14
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
- @trigger.dev/integration-kit@2.3.13
## 2.3.12
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/openai",
"version": "2.3.12",
"version": "2.3.16",
"description": "The official OpenAI integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -42,8 +42,8 @@
},
"dependencies": {
"openai": "^4.16.1",
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/integration-kit": "workspace:^2.3.12"
"@trigger.dev/sdk": "workspace:^2.3.16",
"@trigger.dev/integration-kit": "workspace:^2.3.16"
},
"engines": {
"node": ">=18.0.0"
+31
View File
@@ -1,5 +1,36 @@
# @trigger.dev/plain
## 2.3.16
### Patch Changes
- @trigger.dev/integration-kit@2.3.16
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
- @trigger.dev/integration-kit@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/integration-kit@2.3.14
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
- @trigger.dev/integration-kit@2.3.13
## 2.3.12
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/plain",
"version": "2.3.12",
"version": "2.3.16",
"description": "The official Plain.com integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -24,8 +24,8 @@
"build:tsup": "tsup"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^2.3.12",
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/integration-kit": "workspace:^2.3.16",
"@trigger.dev/sdk": "workspace:^2.3.16",
"@team-plain/typescript-sdk": "^2.7.0"
},
"engines": {
+31
View File
@@ -1,5 +1,36 @@
# @trigger.dev/replicate
## 2.3.16
### Patch Changes
- @trigger.dev/integration-kit@2.3.16
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
- @trigger.dev/integration-kit@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/integration-kit@2.3.14
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
- @trigger.dev/integration-kit@2.3.13
## 2.3.12
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/replicate",
"version": "2.3.12",
"version": "2.3.16",
"description": "Trigger.dev integration for replicate",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,8 +25,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^2.3.12",
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/integration-kit": "workspace:^2.3.16",
"@trigger.dev/sdk": "workspace:^2.3.16",
"replicate": "^0.18.1",
"zod": "3.22.3"
},
+33
View File
@@ -1,5 +1,38 @@
# @trigger.dev/resend
## 2.3.16
### Patch Changes
- da90ee13: Fix resend integration example comment
- @trigger.dev/integration-kit@2.3.16
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
- @trigger.dev/integration-kit@2.3.15
## 2.3.14
### Patch Changes
- 4dd6cf18: Add support for the new Resend audience API endpoints
- @trigger.dev/integration-kit@2.3.14
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
- @trigger.dev/integration-kit@2.3.13
## 2.3.12
### Patch Changes
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/resend",
"version": "2.3.12",
"version": "2.3.16",
"description": "The official Resend.com integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -24,9 +24,9 @@
"build:tsup": "tsup"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^2.3.12",
"@trigger.dev/sdk": "workspace:^2.3.12",
"resend": "^2.0.0"
"@trigger.dev/integration-kit": "workspace:^2.3.16",
"@trigger.dev/sdk": "workspace:^2.3.16",
"resend": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
+134
View File
@@ -0,0 +1,134 @@
import { IntegrationTaskKey, retry } from "@trigger.dev/sdk";
import type { ResendRunTask } from "./index";
import { Resend } from "resend";
import { handleResendError } from "./utils";
type CreateAudienceResult = NonNullable<Awaited<ReturnType<Resend["audiences"]["create"]>>["data"]>;
type GetAudienceResult = NonNullable<Awaited<ReturnType<Resend["audiences"]["get"]>>["data"]>;
type DeleteAudienceResult = NonNullable<Awaited<ReturnType<Resend["audiences"]["remove"]>>["data"]>;
type ListAudiencesResult = NonNullable<Awaited<ReturnType<Resend["audiences"]["list"]>>["data"]>;
export class Audiences {
constructor(private runTask: ResendRunTask) {}
create(
key: IntegrationTaskKey,
payload: Parameters<Resend["audiences"]["create"]>[0],
options?: Parameters<Resend["audiences"]["create"]>[1]
): Promise<CreateAudienceResult> {
return this.runTask(
key,
async (client, task) => {
const { error, data } = await client.audiences.create(payload, options);
if (error) {
throw error;
}
if (!data) {
throw new Error("No data returned from Resend");
}
return data;
},
{
name: "Create Audience",
params: payload,
properties: [
{
label: "Name",
text: payload.name,
},
],
retry: retry.standardBackoff,
},
handleResendError
);
}
get(key: IntegrationTaskKey, payload: string): Promise<GetAudienceResult> {
return this.runTask(
key,
async (client, task) => {
const { error, data } = await client.audiences.get(payload);
if (error) {
throw error;
}
if (!data) {
throw new Error("No data returned from Resend");
}
return data;
},
{
name: "Get Audience",
params: payload,
properties: [
{
label: "ID",
text: payload,
},
],
retry: retry.standardBackoff,
},
handleResendError
);
}
remove(key: IntegrationTaskKey, payload: string): Promise<DeleteAudienceResult> {
return this.runTask(
key,
async (client, task) => {
const { error, data } = await client.audiences.remove(payload);
if (error) {
throw error;
}
if (!data) {
throw new Error("No data returned from Resend");
}
return data;
},
{
name: "Remove Audience",
params: payload,
properties: [
{
label: "ID",
text: payload,
},
],
retry: retry.standardBackoff,
},
handleResendError
);
}
list(key: IntegrationTaskKey): Promise<ListAudiencesResult> {
return this.runTask(
key,
async (client, task) => {
const { error, data } = await client.audiences.list();
if (error) {
throw error;
}
if (!data) {
throw new Error("No data returned from Resend");
}
return data;
},
{
name: "List Audiences",
retry: retry.standardBackoff,
},
handleResendError
);
}
}
+188
View File
@@ -0,0 +1,188 @@
import { IntegrationTaskKey, retry } from "@trigger.dev/sdk";
import type { ResendRunTask } from "./index";
import { Resend } from "resend";
import { handleResendError } from "./utils";
type CreateContactResult = NonNullable<Awaited<ReturnType<Resend["contacts"]["create"]>>["data"]>;
type GetContactResult = NonNullable<Awaited<ReturnType<Resend["contacts"]["get"]>>["data"]>;
type UpdateContactResult = NonNullable<Awaited<ReturnType<Resend["contacts"]["update"]>>["data"]>;
type DeleteContactResult = NonNullable<Awaited<ReturnType<Resend["contacts"]["remove"]>>["data"]>;
type ListContactsResult = NonNullable<Awaited<ReturnType<Resend["contacts"]["list"]>>["data"]>;
export class Contacts {
constructor(private runTask: ResendRunTask) {}
create(
key: IntegrationTaskKey,
payload: Parameters<Resend["contacts"]["create"]>[0],
options?: Parameters<Resend["contacts"]["create"]>[1]
): Promise<CreateContactResult> {
return this.runTask(
key,
async (client, task) => {
const { error, data } = await client.contacts.create(payload, options);
if (error) {
throw error;
}
if (!data) {
throw new Error("No data returned from Resend");
}
return data;
},
{
name: "Create Contact",
params: payload,
properties: [
{
label: "Email",
text: payload.email,
},
...(payload.first_name && payload.last_name
? [{ label: "Name", text: payload.first_name + " " + payload.last_name }]
: []),
],
retry: retry.standardBackoff,
},
handleResendError
);
}
get(
key: IntegrationTaskKey,
payload: Parameters<Resend["contacts"]["get"]>[0]
): Promise<GetContactResult> {
return this.runTask(
key,
async (client, task) => {
const { error, data } = await client.contacts.get(payload);
if (error) {
throw error;
}
if (!data) {
throw new Error("No data returned from Resend");
}
return data;
},
{
name: "Get Contact",
params: payload,
properties: [
{
label: "Id",
text: payload.id,
},
],
retry: retry.standardBackoff,
},
handleResendError
);
}
update(
key: IntegrationTaskKey,
payload: Parameters<Resend["contacts"]["update"]>[0]
): Promise<UpdateContactResult> {
return this.runTask(
key,
async (client, task) => {
const { error, data } = await client.contacts.update(payload);
if (error) {
throw error;
}
if (!data) {
throw new Error("No data returned from Resend");
}
return data;
},
{
name: "Update Contact",
params: payload,
properties: [
{
label: "Id",
text: payload.id,
},
],
retry: retry.standardBackoff,
},
handleResendError
);
}
remove(
key: IntegrationTaskKey,
payload: Parameters<Resend["contacts"]["remove"]>[0]
): Promise<DeleteContactResult> {
return this.runTask(
key,
async (client, task) => {
const { error, data } = await client.contacts.remove(payload);
if (error) {
throw error;
}
if (!data) {
throw new Error("No data returned from Resend");
}
return data;
},
{
name: "Remove Contact",
params: payload,
properties: [
{
label: "Id",
text: payload.id,
},
],
retry: retry.standardBackoff,
},
handleResendError
);
}
list(
key: IntegrationTaskKey,
payload: Parameters<Resend["contacts"]["list"]>[0]
): Promise<ListContactsResult> {
return this.runTask(
key,
async (client, task) => {
const { error, data } = await client.contacts.list(payload);
if (error) {
throw error;
}
if (!data) {
throw new Error("No data returned from Resend");
}
return data;
},
{
name: "List Contacts",
params: payload,
properties: [
{
label: "Audience Id",
text: payload.audience_id,
},
],
retry: retry.standardBackoff,
},
handleResendError
);
}
}
+5 -3
View File
@@ -3,9 +3,11 @@ import type { ResendRunTask } from "./index";
import { Resend } from "resend";
import { handleResendError } from "./utils";
type SendEmailResult = NonNullable<Awaited<ReturnType<Resend["emails"]["send"]>>["data"]>;
type CreateEmailResult = NonNullable<Awaited<ReturnType<Resend["emails"]["create"]>>["data"]>;
type GetEmailResult = NonNullable<Awaited<ReturnType<Resend["emails"]["get"]>>["data"]>;
export type SendEmailResult = NonNullable<Awaited<ReturnType<Resend["emails"]["send"]>>["data"]>;
export type CreateEmailResult = NonNullable<
Awaited<ReturnType<Resend["emails"]["create"]>>["data"]
>;
export type GetEmailResult = NonNullable<Awaited<ReturnType<Resend["emails"]["get"]>>["data"]>;
export class Emails {
constructor(private runTask: ResendRunTask) {}
+36 -2
View File
@@ -9,8 +9,10 @@ import {
type TriggerIntegration,
} from "@trigger.dev/sdk";
import { Resend as ResendClient } from "resend";
import { Emails } from "./emails";
import { Emails, SendEmailResult } from "./emails";
import { Batch } from "./batch";
import { Contacts } from "./contacts";
import { Audiences } from "./audiences";
type ErrorResponse = {
statusCode: number;
@@ -154,7 +156,39 @@ export class Resend implements TriggerIntegration {
/**
* @deprecated Please use resend.emails.send instead
*/
async sendEmail(...args: Parameters<typeof this.emails.send>) {
async sendEmail(...args: Parameters<typeof this.emails.send>): Promise<SendEmailResult> {
return this.emails.send(...args);
}
/**
* Access the Resend Audiences API
* @example
* ```ts
* const response = await io.resend.audiences.create("📧", {
* name: payload.name
* });
* ```
*/
get audiences() {
return new Audiences(this.runTask.bind(this));
}
/**
* Access the Resend Contacts API
* @example
* ```ts
* const response = await io.resend.contacts.create("📧", {
* email: payload.email,
* first_name: payload.first_name,
* last_name: payload.last_name,
* unsubscribed: payload.unsubscribed,
* audience_id: payload.audience_id
* });
* ```
*/
get contacts() {
return new Contacts(this.runTask.bind(this));
}
}
+31
View File
@@ -1,5 +1,36 @@
# @trigger.dev/sendgrid
## 2.3.16
### Patch Changes
- @trigger.dev/integration-kit@2.3.16
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
- @trigger.dev/integration-kit@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/integration-kit@2.3.14
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
- @trigger.dev/integration-kit@2.3.13
## 2.3.12
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/sendgrid",
"version": "2.3.12",
"version": "2.3.16",
"description": "Trigger.dev integration for @sendgrid/mail",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -26,8 +26,8 @@
},
"dependencies": {
"@sendgrid/mail": "^7.7.0",
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/integration-kit": "workspace:^2.3.12"
"@trigger.dev/sdk": "workspace:^2.3.16",
"@trigger.dev/integration-kit": "workspace:^2.3.16"
},
"engines": {
"node": ">=16.8.0"
+31
View File
@@ -1,5 +1,36 @@
# @trigger.dev/shopify
## 2.3.16
### Patch Changes
- @trigger.dev/integration-kit@2.3.16
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
- @trigger.dev/integration-kit@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/integration-kit@2.3.14
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
- @trigger.dev/integration-kit@2.3.13
## 2.3.12
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/shopify",
"version": "2.3.12",
"version": "2.3.16",
"description": "Trigger.dev integration for @shopify/shopify-api",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -26,8 +26,8 @@
},
"dependencies": {
"@shopify/shopify-api": "^8.0.2",
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/integration-kit": "workspace:^2.3.12",
"@trigger.dev/sdk": "workspace:^2.3.16",
"@trigger.dev/integration-kit": "workspace:^2.3.16",
"zod": "3.22.3"
},
"engines": {
+27
View File
@@ -1,5 +1,32 @@
# @trigger.dev/slack
## 2.3.16
### Patch Changes
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
## 2.3.12
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/slack",
"version": "2.3.12",
"version": "2.3.16",
"description": "The official Slack integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,7 +25,7 @@
},
"dependencies": {
"@slack/web-api": "^6.8.1",
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/sdk": "workspace:^2.3.16",
"zod": "3.22.3"
},
"engines": {
+31
View File
@@ -1,5 +1,36 @@
# @trigger.dev/stripe
## 2.3.16
### Patch Changes
- @trigger.dev/integration-kit@2.3.16
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
- @trigger.dev/integration-kit@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/integration-kit@2.3.14
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
- @trigger.dev/integration-kit@2.3.13
## 2.3.12
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/stripe",
"version": "2.3.12",
"version": "2.3.16",
"description": "Trigger.dev integration for stripe",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,8 +25,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^2.3.12",
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/integration-kit": "workspace:^2.3.16",
"@trigger.dev/sdk": "workspace:^2.3.16",
"stripe": "^12.14.0",
"zod": "3.22.3"
},
+31
View File
@@ -1,5 +1,36 @@
# @trigger.dev/supabase
## 2.3.16
### Patch Changes
- @trigger.dev/integration-kit@2.3.16
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
- @trigger.dev/integration-kit@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/integration-kit@2.3.14
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
- @trigger.dev/integration-kit@2.3.13
## 2.3.12
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/supabase",
"version": "2.3.12",
"version": "2.3.16",
"description": "Trigger.dev integration for @supabase/supabase-js",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -26,8 +26,8 @@
},
"dependencies": {
"@supabase/supabase-js": "^2.26.0",
"@trigger.dev/integration-kit": "workspace:^2.3.12",
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/integration-kit": "workspace:^2.3.16",
"@trigger.dev/sdk": "workspace:^2.3.16",
"supabase-management-js": "^1.0.0",
"zod": "3.22.3"
},
+31
View File
@@ -1,5 +1,36 @@
# @trigger.dev/typeform
## 2.3.16
### Patch Changes
- @trigger.dev/integration-kit@2.3.16
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
- @trigger.dev/integration-kit@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/integration-kit@2.3.14
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
- @trigger.dev/integration-kit@2.3.13
## 2.3.12
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/typeform",
"version": "2.3.12",
"version": "2.3.16",
"description": "The official Typeform integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -24,8 +24,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^2.3.12",
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/integration-kit": "workspace:^2.3.16",
"@trigger.dev/sdk": "workspace:^2.3.16",
"@typeform/api-client": "^1.8.0",
"zod": "3.22.3"
},
+27
View File
@@ -1,5 +1,32 @@
# @trigger.dev/astro
## 2.3.16
### Patch Changes
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
## 2.3.12
### Patch Changes
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "@trigger.dev/astro",
"description": "An Astro-native integration for Trigger.dev background jobs platform",
"version": "2.3.12",
"version": "2.3.16",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"files": [
@@ -20,7 +20,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^2.3.12"
"@trigger.dev/sdk": "workspace:^2.3.16"
},
"devDependencies": {
"astro": "^3.0.12",
+25
View File
@@ -1,5 +1,30 @@
# trigger.dev
## 1.0.5
### Patch Changes
- Updated dependencies [583da458]
- @trigger.dev/core@2.3.16
## 1.0.4
### Patch Changes
- @trigger.dev/core@2.3.15
## 1.0.3
### Patch Changes
- @trigger.dev/core@2.3.14
## 1.0.2
### Patch Changes
- @trigger.dev/core@2.3.13
## 1.0.1
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "trigger.dev",
"version": "1.0.1",
"version": "1.0.5",
"description": "A Command-Line Interface for Trigger.dev (v3) projects",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
+30
View File
@@ -1,5 +1,35 @@
# create-trigger
## 2.3.16
### Patch Changes
- Updated dependencies [583da458]
- @trigger.dev/core@2.3.16
- @trigger.dev/yalt@2.3.16
## 2.3.15
### Patch Changes
- @trigger.dev/core@2.3.15
- @trigger.dev/yalt@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/core@2.3.14
- @trigger.dev/yalt@2.3.14
## 2.3.13
### Patch Changes
- 26f5e777: Increase the yalt.dev connection timeout to 5 seconds
- @trigger.dev/core@2.3.13
- @trigger.dev/yalt@2.3.13
## 2.3.12
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/cli",
"version": "2.3.12",
"version": "2.3.16",
"description": "The Trigger.dev CLI",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
+9 -1
View File
@@ -542,7 +542,7 @@ async function createNativeTunnel(
https,
{
WebSocket: WebSocket.default,
connectionTimeout: 1000,
connectionTimeout: getConnectionTimeoutValue(),
maxRetries: 10,
},
{ verbose: process.env.TUNNEL_VERBOSE === "1" }
@@ -557,6 +557,14 @@ async function createNativeTunnel(
}
}
function getConnectionTimeoutValue() {
if (typeof process.env.TUNNEL_CONNECTION_TIMEOUT === "string") {
return parseInt(process.env.TUNNEL_CONNECTION_TIMEOUT);
}
return 5000;
}
async function createNgrokTunnel(hostname: string, port: number, spinner: Ora) {
try {
return await ngrok.connect({ addr: `${hostname}:${port}` });
+8
View File
@@ -1,5 +1,13 @@
# @trigger.dev/core-backend
## 2.3.16
## 2.3.15
## 2.3.14
## 2.3.13
## 2.3.12
## 2.3.11
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/core-backend",
"version": "2.3.12",
"version": "2.3.16",
"description": "Core code used across `@trigger.dev/sdk` and Trigger.dev server",
"license": "MIT",
"main": "./dist/index.js",
+12
View File
@@ -1,5 +1,17 @@
# internal-platform
## 2.3.16
### Patch Changes
- 583da458: Changed the minimum interval time period from 60s to 20s
## 2.3.15
## 2.3.14
## 2.3.13
## 2.3.12
## 2.3.11
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/core",
"version": "2.3.12",
"version": "2.3.16",
"description": "Core code used across the Trigger.dev SDK and platform",
"license": "MIT",
"main": "./dist/index.js",
+2 -2
View File
@@ -10,8 +10,8 @@ export const ScheduledPayloadSchema = z.object({
export type ScheduledPayload = z.infer<typeof ScheduledPayloadSchema>;
export const IntervalOptionsSchema = z.object({
/** The number of seconds for the interval. Min = 60, Max = 2_592_000 (30 days) */
seconds: z.number().int().positive().min(60).max(2_592_000),
/** The number of seconds for the interval. Min = 20, Max = 2_592_000 (30 days) */
seconds: z.number().int().positive().min(20).max(2_592_000),
});
/** Interval options */
@@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "Organization" ADD COLUMN "runsEnabled" BOOLEAN NOT NULL DEFAULT true;
+2
View File
@@ -114,6 +114,8 @@ model Organization {
companySize String?
runsEnabled Boolean @default(true)
environments RuntimeEnvironment[]
connections IntegrationConnection[]
endpoints Endpoint[]
+8
View File
@@ -1,5 +1,13 @@
# @trigger.dev/eslint-plugin
## 2.3.16
## 2.3.15
## 2.3.14
## 2.3.13
## 2.3.12
## 2.3.11
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/eslint-plugin",
"version": "2.3.12",
"version": "2.3.16",
"description": "ESLint plugin with trigger.dev best practices",
"keywords": [
"eslint",
+27
View File
@@ -1,5 +1,32 @@
# @trigger.dev/express
## 2.3.16
### Patch Changes
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
## 2.3.12
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/express",
"version": "2.3.12",
"version": "2.3.16",
"description": "Official Express adapter for Trigger.dev",
"license": "MIT",
"main": "./dist/index.js",
@@ -23,7 +23,7 @@
"./package.json": "./package.json"
},
"devDependencies": {
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/sdk": "workspace:^2.3.16",
"@trigger.dev/tsconfig": "workspace:*",
"@types/debug": "^4.1.7",
"@types/express": "^4.17.13",
@@ -39,7 +39,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^2.3.12"
"@trigger.dev/sdk": "workspace:^2.3.16"
},
"dependencies": {
"debug": "^4.3.4",
+27
View File
@@ -1,5 +1,32 @@
# @trigger.dev/hono
## 2.3.16
### Patch Changes
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
## 2.3.12
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/hono",
"version": "2.3.12",
"version": "2.3.16",
"description": "A Trigger.dev adapter for Hono.dev",
"license": "MIT",
"main": "./dist/index.js",
@@ -32,7 +32,7 @@
},
"peerDependencies": {
"hono": "3.x",
"@trigger.dev/sdk": "workspace:^2.3.12"
"@trigger.dev/sdk": "workspace:^2.3.16"
},
"devDependencies": {
"@trigger.dev/tsconfig": "workspace:*",
+25
View File
@@ -1,5 +1,30 @@
# @trigger.dev/integration-kit
## 2.3.16
### Patch Changes
- Updated dependencies [583da458]
- @trigger.dev/core@2.3.16
## 2.3.15
### Patch Changes
- @trigger.dev/core@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/core@2.3.14
## 2.3.13
### Patch Changes
- @trigger.dev/core@2.3.13
## 2.3.12
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/integration-kit",
"version": "2.3.12",
"version": "2.3.16",
"description": "Trigger.dev Integration Kit has helpers to make creating integrations easier",
"license": "MIT",
"main": "./dist/index.js",
+27
View File
@@ -1,5 +1,32 @@
# @trigger.dev/nestjs
## 2.3.16
### Patch Changes
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
## 2.3.12
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/nestjs",
"version": "2.3.12",
"version": "2.3.16",
"description": "Official NestJS adapter for Trigger.dev",
"license": "MIT",
"main": "./dist/index.js",
@@ -23,7 +23,7 @@
"./package.json": "./package.json"
},
"devDependencies": {
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/sdk": "workspace:^2.3.16",
"@trigger.dev/tsconfig": "workspace:*",
"@types/debug": "^4.1.7",
"@types/express": "^4.17.13",
@@ -41,7 +41,7 @@
},
"peerDependencies": {
"@nestjs/common": ">=10.0.0",
"@trigger.dev/sdk": "workspace:^2.3.12"
"@trigger.dev/sdk": "workspace:^2.3.16"
},
"dependencies": {
"@nestjs/common": "^10.2.4",
+27
View File
@@ -1,5 +1,32 @@
# @trigger.dev/nextjs
## 2.3.16
### Patch Changes
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
## 2.3.12
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/nextjs",
"version": "2.3.12",
"version": "2.3.16",
"description": "Trigger.dev Next.js integration",
"license": "MIT",
"main": "./dist/index.js",
@@ -41,7 +41,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/sdk": "workspace:^2.3.16",
"next": ">=12.0.0"
},
"dependencies": {
+25
View File
@@ -1,5 +1,30 @@
# @trigger.dev/react
## 2.3.16
### Patch Changes
- Updated dependencies [583da458]
- @trigger.dev/core@2.3.16
## 2.3.15
### Patch Changes
- @trigger.dev/core@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/core@2.3.14
## 2.3.13
### Patch Changes
- @trigger.dev/core@2.3.13
## 2.3.12
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/react",
"version": "2.3.12",
"version": "2.3.16",
"description": "Trigger.dev React SDK",
"license": "MIT",
"types": "dist/index.d.ts",
@@ -27,7 +27,7 @@
},
"dependencies": {
"@tanstack/react-query": "5.0.0-beta.2",
"@trigger.dev/core": "workspace:^2.3.12",
"@trigger.dev/core": "workspace:^2.3.16",
"debug": "^4.3.4",
"zod": "3.22.3"
},
+27
View File
@@ -1,5 +1,32 @@
# @trigger.dev/remix
## 2.3.16
### Patch Changes
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
## 2.3.12
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/remix",
"version": "2.3.12",
"version": "2.3.16",
"description": "Trigger.dev Remix integration",
"license": "MIT",
"main": "./dist/index.js",
@@ -39,7 +39,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^2.3.12",
"@trigger.dev/sdk": "workspace:^2.3.16",
"@remix-run/server-runtime": ">1.19.0"
},
"dependencies": {
+27
View File
@@ -1,5 +1,32 @@
# @trigger.dev/sveltekit
## 2.3.16
### Patch Changes
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
## 2.3.12
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/sveltekit",
"version": "2.3.12",
"version": "2.3.16",
"description": "Trigger.dev svelteKit integration",
"license": "MIT",
"main": "./dist/index.js",
@@ -39,7 +39,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^2.3.12"
"@trigger.dev/sdk": "workspace:^2.3.16"
},
"dependencies": {
"debug": "^4.3.4"
+32
View File
@@ -1,5 +1,37 @@
# @trigger.dev/testing
## 2.3.16
### Patch Changes
- Updated dependencies [583da458]
- @trigger.dev/core@2.3.16
- @trigger.dev/sdk@2.3.16
## 2.3.15
### Patch Changes
- Updated dependencies [6c4047cf]
- @trigger.dev/sdk@2.3.15
- @trigger.dev/core@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/core@2.3.14
- @trigger.dev/sdk@2.3.14
## 2.3.13
### Patch Changes
- Updated dependencies [a93b554f]
- Updated dependencies [0f342cd1]
- @trigger.dev/sdk@2.3.13
- @trigger.dev/core@2.3.13
## 2.3.12
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@trigger.dev/testing",
"description": "A collection of useful tools to write tests for Trigger.dev.",
"version": "2.3.12",
"version": "2.3.16",
"license": "MIT",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
+32
View File
@@ -1,5 +1,37 @@
# @trigger.dev/sdk
## 2.3.16
### Patch Changes
- Updated dependencies [583da458]
- @trigger.dev/core@2.3.16
- @trigger.dev/core-backend@2.3.16
## 2.3.15
### Patch Changes
- 6c4047cf: Fix an issue where runs were stuck executing when a child task failed and the parent task retried
- @trigger.dev/core@2.3.15
- @trigger.dev/core-backend@2.3.15
## 2.3.14
### Patch Changes
- @trigger.dev/core@2.3.14
- @trigger.dev/core-backend@2.3.14
## 2.3.13
### Patch Changes
- a93b554f: Make it clear that schedules are UTC by appending "UTC" to the end.
- 0f342cd1: Don't show duplicate Job warning if it's an internal job
- @trigger.dev/core@2.3.13
- @trigger.dev/core-backend@2.3.13
## 2.3.12
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/sdk",
"version": "2.3.12",
"version": "2.3.16",
"description": "trigger.dev Node.JS SDK",
"license": "MIT",
"main": "./dist/index.js",
@@ -30,8 +30,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/core": "workspace:^2.3.12",
"@trigger.dev/core-backend": "workspace:^2.3.12",
"@trigger.dev/core": "workspace:^2.3.16",
"@trigger.dev/core-backend": "workspace:^2.3.16",
"chalk": "^5.2.0",
"cronstrue": "^2.21.0",
"debug": "^4.3.4",
+2
View File
@@ -1333,6 +1333,8 @@ export class IO {
await this._apiClient.failTask(this._id, task.id, {
error: error.cause.output as any,
});
throw error;
}
const parsedError = ErrorWithStackSchema.safeParse(error);
+1 -1
View File
@@ -679,7 +679,7 @@ export class TriggerClient {
>(options: JobOptions<TTrigger, TIntegrations, TOutput>) {
const existingRegisteredJob = this.#registeredJobs[options.id];
if (existingRegisteredJob) {
if (existingRegisteredJob && options.__internal !== true) {
console.warn(
`[@trigger.dev/sdk] Warning: The Job "${existingRegisteredJob.id}" you're attempting to define has already been defined. Please assign a different ID to the job.`
);
@@ -84,9 +84,13 @@ export class CronTrigger implements Trigger<ScheduledEventSpecification> {
constructor(private options: CronOptions) {}
get event() {
/**
* We need to concat `(UTC)` string at the end of the human readable string to avoid confusion
* with execution time/last run of a job in the UI dashboard which is displayed in local time.
*/
const humanReadable = cronstrue.toString(this.options.cron, {
throwExceptionOnParseError: false,
});
}).concat(" (UTC)");
return {
name: "trigger.scheduled",
+8
View File
@@ -1,5 +1,13 @@
# @trigger.dev/yalt
## 2.3.16
## 2.3.15
## 2.3.14
## 2.3.13
## 2.3.12
## 2.3.11
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/yalt",
"version": "2.3.12",
"version": "2.3.16",
"description": "yalt.dev client library",
"license": "MIT",
"main": "./dist/index.js",
+35 -44
View File
@@ -458,8 +458,8 @@ importers:
integrations/airtable:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.3.12
'@trigger.dev/sdk': workspace:^2.3.12
'@trigger.dev/integration-kit': workspace:^2.3.16
'@trigger.dev/sdk': workspace:^2.3.16
'@trigger.dev/tsconfig': workspace:*
'@trigger.dev/tsup': workspace:*
'@types/node': 16.x
@@ -488,8 +488,8 @@ importers:
'@octokit/types': ^12.4.0
'@octokit/webhooks': ^12.0.10
'@octokit/webhooks-types': ^7.3.1
'@trigger.dev/integration-kit': workspace:^2.3.12
'@trigger.dev/sdk': workspace:^2.3.12
'@trigger.dev/integration-kit': workspace:^2.3.16
'@trigger.dev/sdk': workspace:^2.3.16
'@trigger.dev/tsconfig': workspace:*
'@trigger.dev/tsup': workspace:*
'@types/node': '18'
@@ -519,8 +519,8 @@ importers:
integrations/linear:
specifiers:
'@linear/sdk': ^8.0.0
'@trigger.dev/integration-kit': workspace:^2.3.12
'@trigger.dev/sdk': workspace:^2.3.12
'@trigger.dev/integration-kit': workspace:^2.3.16
'@trigger.dev/sdk': workspace:^2.3.16
'@trigger.dev/tsconfig': workspace:*
'@trigger.dev/tsup': workspace:*
'@types/node': 16.x
@@ -543,8 +543,8 @@ importers:
integrations/openai:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.3.12
'@trigger.dev/sdk': workspace:^2.3.12
'@trigger.dev/integration-kit': workspace:^2.3.16
'@trigger.dev/sdk': workspace:^2.3.16
'@trigger.dev/tsconfig': workspace:*
'@trigger.dev/tsup': workspace:*
'@types/jest': ^29.5.3
@@ -573,8 +573,8 @@ importers:
integrations/plain:
specifiers:
'@team-plain/typescript-sdk': ^2.7.0
'@trigger.dev/integration-kit': workspace:^2.3.12
'@trigger.dev/sdk': workspace:^2.3.12
'@trigger.dev/integration-kit': workspace:^2.3.16
'@trigger.dev/sdk': workspace:^2.3.16
'@trigger.dev/tsconfig': workspace:*
'@trigger.dev/tsup': workspace:*
'@types/node': '18'
@@ -595,8 +595,8 @@ importers:
integrations/replicate:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.3.12
'@trigger.dev/sdk': workspace:^2.3.12
'@trigger.dev/integration-kit': workspace:^2.3.16
'@trigger.dev/sdk': workspace:^2.3.16
'@trigger.dev/tsconfig': workspace:*
'@trigger.dev/tsup': workspace:*
'@types/node': 16.x
@@ -620,19 +620,19 @@ importers:
integrations/resend:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.3.12
'@trigger.dev/sdk': workspace:^2.3.12
'@trigger.dev/integration-kit': workspace:^2.3.16
'@trigger.dev/sdk': workspace:^2.3.16
'@trigger.dev/tsconfig': workspace:*
'@trigger.dev/tsup': workspace:*
'@types/node': '18'
resend: ^2.0.0
resend: ^2.1.0
rimraf: ^3.0.2
tsup: 8.0.1
typescript: ^5.3.0
dependencies:
'@trigger.dev/integration-kit': link:../../packages/integration-kit
'@trigger.dev/sdk': link:../../packages/trigger-sdk
resend: 2.0.0
resend: 2.1.0
devDependencies:
'@trigger.dev/tsconfig': link:../../config-packages/tsconfig
'@trigger.dev/tsup': link:../../config-packages/tsup
@@ -644,8 +644,8 @@ importers:
integrations/sendgrid:
specifiers:
'@sendgrid/mail': ^7.7.0
'@trigger.dev/integration-kit': workspace:^2.3.12
'@trigger.dev/sdk': workspace:^2.3.12
'@trigger.dev/integration-kit': workspace:^2.3.16
'@trigger.dev/sdk': workspace:^2.3.16
'@trigger.dev/tsconfig': workspace:*
'@trigger.dev/tsup': workspace:*
'@types/node': 16.x
@@ -667,8 +667,8 @@ importers:
integrations/shopify:
specifiers:
'@shopify/shopify-api': ^8.0.2
'@trigger.dev/integration-kit': workspace:^2.3.12
'@trigger.dev/sdk': workspace:^2.3.12
'@trigger.dev/integration-kit': workspace:^2.3.16
'@trigger.dev/sdk': workspace:^2.3.16
'@trigger.dev/tsconfig': workspace:*
'@trigger.dev/tsup': workspace:*
'@types/node': 16.x
@@ -692,7 +692,7 @@ importers:
integrations/slack:
specifiers:
'@slack/web-api': ^6.8.1
'@trigger.dev/sdk': workspace:^2.3.12
'@trigger.dev/sdk': workspace:^2.3.16
'@trigger.dev/tsconfig': workspace:*
'@trigger.dev/tsup': workspace:*
'@types/node': '18'
@@ -714,8 +714,8 @@ importers:
integrations/stripe:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.3.12
'@trigger.dev/sdk': workspace:^2.3.12
'@trigger.dev/integration-kit': workspace:^2.3.16
'@trigger.dev/sdk': workspace:^2.3.16
'@trigger.dev/tsup': workspace:*
'@types/node': 16.x
rimraf: ^3.0.2
@@ -740,8 +740,8 @@ importers:
integrations/supabase:
specifiers:
'@supabase/supabase-js': ^2.26.0
'@trigger.dev/integration-kit': workspace:^2.3.12
'@trigger.dev/sdk': workspace:^2.3.12
'@trigger.dev/integration-kit': workspace:^2.3.16
'@trigger.dev/sdk': workspace:^2.3.16
'@trigger.dev/tsconfig': workspace:*
'@trigger.dev/tsup': workspace:*
'@types/node': 18.x
@@ -766,8 +766,8 @@ importers:
integrations/typeform:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.3.12
'@trigger.dev/sdk': workspace:^2.3.12
'@trigger.dev/integration-kit': workspace:^2.3.16
'@trigger.dev/sdk': workspace:^2.3.16
'@trigger.dev/tsup': workspace:*
'@typeform/api-client': ^1.8.0
'@types/node': 16.x
@@ -1112,7 +1112,7 @@ importers:
packages/express:
specifiers:
'@trigger.dev/sdk': workspace:^2.3.12
'@trigger.dev/sdk': workspace:^2.3.16
'@trigger.dev/tsconfig': workspace:*
'@trigger.dev/tsup': workspace:*
'@types/debug': ^4.1.7
@@ -1182,7 +1182,7 @@ importers:
specifiers:
'@nestjs/common': ^10.2.4
'@remix-run/web-fetch': ^4.3.5
'@trigger.dev/sdk': workspace:^2.3.12
'@trigger.dev/sdk': workspace:^2.3.16
'@trigger.dev/tsconfig': workspace:*
'@trigger.dev/tsup': workspace:*
'@types/debug': ^4.1.7
@@ -1241,7 +1241,7 @@ importers:
packages/react:
specifiers:
'@tanstack/react-query': 5.0.0-beta.2
'@trigger.dev/core': workspace:^2.3.12
'@trigger.dev/core': workspace:^2.3.16
'@trigger.dev/tsconfig': workspace:*
'@types/debug': ^4.1.7
'@types/react': 18.2.17
@@ -1344,8 +1344,8 @@ importers:
packages/trigger-sdk:
specifiers:
'@trigger.dev/core': workspace:^2.3.12
'@trigger.dev/core-backend': workspace:^2.3.12
'@trigger.dev/core': workspace:^2.3.16
'@trigger.dev/core-backend': workspace:^2.3.16
'@trigger.dev/tsconfig': workspace:*
'@trigger.dev/tsup': workspace:*
'@types/debug': ^4.1.7
@@ -23364,7 +23364,7 @@ packages:
'@selderee/plugin-htmlparser2': 0.10.0
deepmerge: 4.3.1
dom-serializer: 2.0.0
htmlparser2: 8.0.1
htmlparser2: 8.0.2
selderee: 0.10.0
dev: false
@@ -23405,15 +23405,6 @@ packages:
entities: 2.2.0
dev: true
/htmlparser2/8.0.1:
resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==}
dependencies:
domelementtype: 2.3.0
domhandler: 5.0.3
domutils: 3.0.1
entities: 4.4.0
dev: false
/htmlparser2/8.0.2:
resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==}
dependencies:
@@ -30388,8 +30379,8 @@ packages:
- debug
dev: false
/resend/2.0.0:
resolution: {integrity: sha512-jAh0DN84ZjjmzGM2vMjJ1hphPBg1mG98dzopF7kJzmin62v8ESg4og2iCKWdkAboGOT2SeO5exbr/8Xh8gLddw==}
/resend/2.1.0:
resolution: {integrity: sha512-s6LlaEReTUvlbo6w3Eg1M1TMuwK9OKJ1GVgyptIV8smLPHhFZVqnwBTFPZHID9rcsih72t3iuyrtkQ3IIGwnow==}
engines: {node: '>=18'}
dependencies:
'@react-email/render': 0.0.9
+49 -1
View File
@@ -1,5 +1,5 @@
import { createExpressServer } from "@trigger.dev/express";
import { TriggerClient, eventTrigger } from "@trigger.dev/sdk";
import { TriggerClient, eventTrigger, invokeTrigger } from "@trigger.dev/sdk";
import { z } from "zod";
export const client = new TriggerClient({
@@ -53,4 +53,52 @@ client.defineJob({
},
});
client.defineJob({
id: "test-background-fetch-rety-stuck-error",
name: "Reproduce stuck error",
version: "0.0.1",
trigger: invokeTrigger({
schema: z.object({
url: z.string(),
}),
}),
run: async (payload, io, ctx) => {
await io.runTask(
"test-background-fetch-retry",
async (task) => {
const response = await io.backgroundFetchResponse<any>(
payload.url,
payload.url,
{ method: "GET" },
{
timeout: {
durationInMs: 1000,
retry: {
limit: 2,
factor: 2,
minTimeoutInMs: 3000, // 3 secs
maxTimeoutInMs: 10000, // 10 secs
randomize: true,
},
},
}
);
console.log(`Got response`, response);
},
{
retry: {
limit: 4,
factor: 1.8,
minTimeoutInMs: 1500,
maxTimeoutInMs: 30000,
randomize: true,
},
}
);
await io.logger.info("Got here");
},
});
createExpressServer(client);
+210
View File
@@ -132,4 +132,214 @@ client.defineJob({
},
});
client.defineJob({
id: "create-resend-audience",
name: "Create Resend Audience",
version: "0.1.0",
trigger: eventTrigger({
name: "create.audience",
schema: z.object({
name: z.string(),
}),
}),
integrations: {
resend,
},
run: async (payload, io, ctx) => {
const response = await io.resend.audiences.create("📧", {
name: payload.name,
});
await io.logger.info("Created audience", { response });
},
});
client.defineJob({
id: "get-resend-audience",
name: "Get Resend Audience",
version: "0.1.0",
trigger: eventTrigger({
name: "get.audience",
schema: z.object({
id: z.string(),
}),
}),
integrations: {
resend,
},
run: async (payload, io, ctx) => {
const response = await io.resend.audiences.get("📧", payload.id);
await io.logger.info("Got audience", { response });
},
});
client.defineJob({
id: "remove-resend-audience",
name: "Remove Resend Audience",
version: "0.1.0",
trigger: eventTrigger({
name: "remove.audience",
schema: z.object({
id: z.string(),
}),
}),
integrations: {
resend,
},
run: async (payload, io, ctx) => {
const response = await io.resend.audiences.remove("📧", payload.id);
await io.logger.info("Removed audience", { response });
},
});
client.defineJob({
id: "list-resend-audiences",
name: "List Resend Audiences",
version: "0.1.0",
trigger: eventTrigger({
name: "list.audiences",
}),
integrations: {
resend,
},
run: async (payload, io, ctx) => {
const response = await io.resend.audiences.list("📧");
await io.logger.info("Listed audiences", { response });
},
});
client.defineJob({
id: "create resend contact",
name: "Create Resend Contact",
version: "0.1.0",
trigger: eventTrigger({
name: "create.contact",
schema: z.object({
audience_id: z.string(),
email: z.string(),
unsubscribed: z.boolean().optional(),
first_name: z.string().optional(),
last_name: z.string().optional(),
}),
}),
integrations: {
resend,
},
run: async (payload, io, ctx) => {
const response = await io.resend.contacts.create("📧", {
audience_id: payload.audience_id,
email: payload.email,
unsubscribed: payload.unsubscribed,
first_name: payload.first_name,
last_name: payload.last_name,
});
await io.logger.info("Created contact", { response });
},
});
client.defineJob({
id: "get resend contact",
name: "Get Resend Contact",
version: "0.1.0",
trigger: eventTrigger({
name: "get.contact",
schema: z.object({
audience_id: z.string(),
id: z.string(),
}),
}),
integrations: {
resend,
},
run: async (payload, io, ctx) => {
const response = await io.resend.contacts.get("📧", {
audience_id: payload.audience_id,
id: payload.id,
});
await io.logger.info("Got contact", { response });
},
});
client.defineJob({
id: "update resend contact",
name: "Update Resend Contact",
version: "0.1.0",
trigger: eventTrigger({
name: "update.contact",
schema: z.object({
audience_id: z.string(),
id: z.string(),
email: z.string().optional(),
unsubscribed: z.boolean().optional(),
first_name: z.string().optional(),
last_name: z.string().optional(),
}),
}),
integrations: {
resend,
},
run: async (payload, io, ctx) => {
const response = await io.resend.contacts.update("📧", {
audience_id: payload.audience_id,
id: payload.id,
unsubscribed: payload.unsubscribed,
first_name: payload.first_name,
last_name: payload.last_name,
});
await io.logger.info("Updated contact", { response });
},
});
client.defineJob({
id: "remove resend contact",
name: "Remove Resend Contact",
version: "0.1.0",
trigger: eventTrigger({
name: "remove.contact",
schema: z.object({
audience_id: z.string(),
id: z.string(),
}),
}),
integrations: {
resend,
},
run: async (payload, io, ctx) => {
const response = await io.resend.contacts.remove("📧", {
audience_id: payload.audience_id,
id: payload.id,
});
await io.logger.info("Removed contact", { response });
},
});
client.defineJob({
id: "list resend contacts",
name: "List Resend Contacts",
version: "0.1.0",
trigger: eventTrigger({
name: "list.contacts",
schema: z.object({
audience_id: z.string(),
}),
}),
integrations: {
resend,
},
run: async (payload, io, ctx) => {
const response = await io.resend.contacts.list("📧", {
audience_id: payload.audience_id,
});
await io.logger.info("Listed contacts", { response });
},
});
createExpressServer(client);