Adding the resend package and fixing issues with the webapp

This commit is contained in:
Eric Allam
2023-06-28 15:48:19 +01:00
parent cc668a1624
commit c5d91e7cca
51 changed files with 298 additions and 77 deletions
+5
View File
@@ -0,0 +1,5 @@
---
"@trigger.dev/resend": patch
---
Adding the resend integration package
+1 -1
View File
@@ -12,7 +12,7 @@ import { run as graphileRun } from "graphile-worker";
import { omit } from "lodash";
import { z } from "zod";
import { PrismaClient, PrismaClientOrTransaction } from "~/db.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
export interface MessageCatalogSchema {
[key: string]: z.ZodFirstPartySchemaTypes | z.ZodDiscriminatedUnion<any, any>;
@@ -3,7 +3,7 @@ import {
DisplayPropertySchema,
EventSpecificationSchema,
IntegrationMetadataSchema,
} from "@/../../packages/internal/src";
} from "@trigger.dev/internal";
import { PrismaClient, prisma } from "~/db.server";
import { Project } from "~/models/project.server";
import { User } from "~/models/user.server";
@@ -3,7 +3,7 @@ import {
ClockIcon,
XCircleIcon,
} from "@heroicons/react/24/solid";
import { TaskAttemptStatus } from "@trigger.dev/database";
import type { TaskAttemptStatus } from "@trigger.dev/database";
import { Paragraph } from "~/components/primitives/Paragraph";
import { Spinner } from "~/components/primitives/Spinner";
import { cn } from "~/utils/cn";
@@ -1,28 +1,8 @@
import { LoaderArgs } from "@remix-run/server-runtime";
import { typedjson, useTypedLoaderData } from "remix-typedjson";
import invariant from "tiny-invariant";
import { CodeBlock } from "~/components/code/CodeBlock";
import { Header3 } from "~/components/primitives/Headers";
import { Paragraph } from "~/components/primitives/Paragraph";
import { TaskDetailsPresenter } from "~/presenters/TaskDetailsPresenter.server";
import { requireUserId } from "~/services/session.server";
import { formatDateTime, formatDuration } from "~/utils";
import { cn } from "~/utils/cn";
import {
RunPanel,
RunPanelBody,
RunPanelDescription,
RunPanelDivider,
RunPanelProperties,
RunPanelHeader,
RunPanelIconProperty,
RunPanelIconSection,
RunPanelIconTitle,
UpdatingDelay,
UpdatingDuration,
} from "../_app.orgs.$organizationSlug.projects.$projectParam.jobs.$jobParam.runs.$runParam/RunCard";
import { TaskStatusIcon } from "../_app.orgs.$organizationSlug.projects.$projectParam.jobs.$jobParam.runs.$runParam/TaskStatus";
import { sensitiveDataReplacer } from "~/services/logger";
import {
Table,
TableBody,
@@ -31,14 +11,31 @@ import {
TableHeaderCell,
TableRow,
} from "~/components/primitives/Table";
import { TaskDetailsPresenter } from "~/presenters/TaskDetailsPresenter.server";
import { requireUserId } from "~/services/session.server";
import { formatDateTime, formatDuration } from "~/utils";
import { cn } from "~/utils/cn";
import { TaskParamsSchema } from "~/utils/pathBuilder";
import {
RunPanel,
RunPanelBody,
RunPanelDescription,
RunPanelDivider,
RunPanelHeader,
RunPanelIconProperty,
RunPanelIconSection,
RunPanelIconTitle,
RunPanelProperties,
UpdatingDelay,
UpdatingDuration,
} from "../_app.orgs.$organizationSlug.projects.$projectParam.jobs.$jobParam.runs.$runParam/RunCard";
import { TaskStatusIcon } from "../_app.orgs.$organizationSlug.projects.$projectParam.jobs.$jobParam.runs.$runParam/TaskStatus";
import { TaskAttemptStatusLabel } from "./TaskAttemptStatus";
import { sensitiveDataReplacer } from "~/services/sensitiveDataReplacer";
export const loader = async ({ request, params }: LoaderArgs) => {
const userId = await requireUserId(request);
const { jobParam, runParam, taskParam } = params;
invariant(jobParam, "jobParam not found");
invariant(runParam, "runParam not found");
invariant(taskParam, "selectedParam not found");
const { taskParam } = TaskParamsSchema.parse(params);
const presenter = new TaskDetailsPresenter();
const task = await presenter.call({
@@ -1,4 +1,4 @@
import { DisplayProperty, StyleName } from "@/../../packages/internal/src";
import type { DisplayProperty, StyleName } from "@trigger.dev/internal";
import { motion } from "framer-motion";
import { HourglassIcon } from "lucide-react";
import { ReactNode, useEffect, useState } from "react";
@@ -1,4 +1,4 @@
import { TaskStatus } from "@/../../packages/internal/src";
import type { TaskStatus } from "@trigger.dev/internal";
import {
CheckCircleIcon,
CheckIcon,
@@ -1,4 +1,4 @@
import { RuntimeEnvironmentType } from "@/../../packages/internal/src";
import type { RuntimeEnvironmentType } from "@trigger.dev/internal";
import { conform } from "@conform-to/react";
import { parse } from "@conform-to/zod";
import { BoltIcon, ForwardIcon } from "@heroicons/react/24/solid";
@@ -294,11 +294,11 @@ export default function Page() {
<TaskCard
key={task.id}
selectedId={selectedId}
selectedTask={(taskId) =>
selectedTask={(taskId) => {
navigate(
runTaskPath(organization, project, job, run, taskId)
)
}
);
}}
isLast={isLast}
depth={0}
{...task}
@@ -4,7 +4,7 @@ import { z } from "zod";
import { prisma } from "~/db.server";
import { resolveApiConnection } from "~/models/runConnection.server";
import { authenticateApiRequest } from "~/services/apiAuth.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
const ParamsSchema = z.object({
endpointSlug: z.string(),
@@ -2,7 +2,7 @@ import type { ActionArgs } from "@remix-run/server-runtime";
import { json } from "@remix-run/server-runtime";
import { z } from "zod";
import { authenticateApiRequest } from "~/services/apiAuth.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
import { UnregisterScheduleService } from "~/services/schedules/unregisterSchedule.server";
const ParamsSchema = z.object({
@@ -6,7 +6,7 @@ import {
} from "@trigger.dev/internal";
import { z } from "zod";
import { authenticateApiRequest } from "~/services/apiAuth.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
import { RegisterScheduleService } from "~/services/schedules/registerSchedule.server";
const ParamsSchema = z.object({
@@ -3,7 +3,7 @@ import { json } from "@remix-run/server-runtime";
import { UpdateTriggerSourceBodySchema } from "@trigger.dev/internal";
import { z } from "zod";
import { authenticateApiRequest } from "~/services/apiAuth.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
import { UpdateSourceService } from "~/services/sources/updateSource.server";
const ParamsSchema = z.object({
@@ -3,7 +3,7 @@ import { json } from "@remix-run/server-runtime";
import { RegisterTriggerBodySchema } from "@trigger.dev/internal";
import { z } from "zod";
import { authenticateApiRequest } from "~/services/apiAuth.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
import { RegisterTriggerSourceService } from "~/services/triggers/registerTriggerSource.server";
const ParamsSchema = z.object({
@@ -3,7 +3,7 @@ import { json } from "@remix-run/server-runtime";
import { InitializeTriggerBodySchema } from "@trigger.dev/internal";
import { z } from "zod";
import { authenticateApiRequest } from "~/services/apiAuth.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
import { InitializeTriggerService } from "~/services/triggers/initializeTrigger.server";
const ParamsSchema = z.object({
@@ -3,7 +3,7 @@ import { z } from "zod";
import { prisma } from "~/db.server";
import { authenticateApiRequest } from "~/services/apiAuth.server";
import { IndexEndpointService } from "~/services/endpoints/indexEndpoint.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
const ParamsSchema = z.object({
endpointSlug: z.string(),
@@ -1,7 +1,7 @@
import { ActionArgs, LoaderArgs, json } from "@remix-run/server-runtime";
import { z } from "zod";
import { PrismaClient, prisma } from "~/db.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
import { workerQueue } from "~/services/worker.server";
import { safeJsonParse } from "~/utils/json";
+1 -1
View File
@@ -3,7 +3,7 @@ import { json } from "@remix-run/server-runtime";
import { z } from "zod";
import { authenticateApiRequest } from "~/services/apiAuth.server";
import { CreateEndpointService } from "~/services/endpoints/createEndpoint.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
const BodySchema = z.object({
url: z.string(),
@@ -10,7 +10,7 @@ import {
authenticateApiRequest,
AuthenticatedEnvironment,
} from "~/services/apiAuth.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
const ParamsSchema = z.object({
runId: z.string(),
@@ -7,7 +7,7 @@ import { $transaction, PrismaClient, prisma } from "~/db.server";
import { taskWithAttemptsToServerTask } from "~/models/task.server";
import type { AuthenticatedEnvironment } from "~/services/apiAuth.server";
import { authenticateApiRequest } from "~/services/apiAuth.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
const ParamsSchema = z.object({
runId: z.string(),
@@ -10,7 +10,7 @@ import { $transaction, PrismaClient, prisma } from "~/db.server";
import { taskWithAttemptsToServerTask } from "~/models/task.server";
import type { AuthenticatedEnvironment } from "~/services/apiAuth.server";
import { authenticateApiRequest } from "~/services/apiAuth.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
import { formatError } from "~/utils/formatErrors.server";
const ParamsSchema = z.object({
@@ -9,7 +9,7 @@ import { z } from "zod";
import { $transaction, PrismaClient, prisma } from "~/db.server";
import { taskWithAttemptsToServerTask } from "~/models/task.server";
import { authenticateApiRequest } from "~/services/apiAuth.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
import { ulid } from "~/services/ulid.server";
import { workerQueue } from "~/services/worker.server";
@@ -1,6 +1,6 @@
import type { ActionArgs, LoaderArgs } from "@remix-run/server-runtime";
import { z } from "zod";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
import { HandleHttpSourceService } from "~/services/sources/handleHttpSource.server";
export async function action({ request, params }: ActionArgs) {
@@ -16,7 +16,7 @@ import {
PongResponseSchema,
RunJobResponseSchema,
} from "@trigger.dev/internal";
import { logger } from "./logger";
import { logger } from "./logger.server";
export class EndpointApiError extends Error {
constructor(message: string, stack?: string) {
@@ -1,7 +1,7 @@
import { customAlphabet } from "nanoid";
import { $transaction, prisma, PrismaClient } from "~/db.server";
import { AuthenticatedEnvironment } from "../apiAuth.server";
import { EndpointApi } from "../endpointApi";
import { EndpointApi } from "../endpointApi.server";
import { workerQueue } from "../worker.server";
const indexingHookIdentifier = customAlphabet(
@@ -1,6 +1,6 @@
import { $transaction, PrismaClient } from "~/db.server";
import { prisma } from "~/db.server";
import { EndpointApi } from "../endpointApi";
import { EndpointApi } from "../endpointApi.server";
import { workerQueue } from "../worker.server";
import type { EndpointIndexSource } from "@trigger.dev/database";
@@ -2,7 +2,7 @@ import type { EventDispatcher, EventRecord } from "@trigger.dev/database";
import type { EventFilter } from "@trigger.dev/internal";
import { EventFilterSchema } from "@trigger.dev/internal";
import { $transaction, PrismaClientOrTransaction, prisma } from "~/db.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
import { workerQueue } from "../worker.server";
export class DeliverEventService {
@@ -1,7 +1,7 @@
import { z } from "zod";
import type { PrismaClientOrTransaction } from "~/db.server";
import { prisma } from "~/db.server";
import { logger } from "~/services/logger";
import { logger } from "~/services/logger.server";
import { CreateRunService } from "~/services/runs/createRun.server";
const JobVersionDispatchableSchema = z.object({
@@ -1,8 +1,8 @@
import { $transaction, PrismaClientOrTransaction, prisma } from "~/db.server";
import { IngestSendEvent } from "../events/ingestSendEvent.server";
import { logger } from "../logger";
import { logger } from "../logger.server";
import { workerQueue } from "../worker.server";
import { MISSING_CONNECTION_RESOLVED_NOTIFICATION } from "@/../../packages/internal/src";
import { MISSING_CONNECTION_RESOLVED_NOTIFICATION } from "@trigger.dev/internal";
export class IntegrationConnectionCreatedService {
#prismaClient: PrismaClientOrTransaction;
@@ -15,7 +15,7 @@ import { DEFAULT_MAX_CONCURRENT_RUNS } from "~/consts";
import type { PrismaClient } from "~/db.server";
import { prisma } from "~/db.server";
import type { AuthenticatedEnvironment } from "../apiAuth.server";
import { logger } from "../logger";
import { logger } from "../logger.server";
import type { RuntimeEnvironment } from "~/models/runtimeEnvironment.server";
import { RegisterScheduleSourceService } from "../schedules/registerScheduleSource.server";
@@ -1,4 +1,4 @@
import { EventSpecificationSchema } from "@/../../packages/internal/src";
import { EventSpecificationSchema } from "@trigger.dev/internal";
import { PrismaClient, prisma } from "~/db.server";
import { CreateRunService } from "../runs/createRun.server";
+10
View File
@@ -0,0 +1,10 @@
import type { LogLevel } from "@trigger.dev/internal";
import { Logger } from "@trigger.dev/internal";
import { sensitiveDataReplacer } from "./sensitiveDataReplacer";
export const logger = new Logger(
"webapp",
(process.env.APP_LOG_LEVEL ?? "debug") as LogLevel,
[],
sensitiveDataReplacer
);
@@ -1,7 +1,7 @@
import { $transaction, PrismaClientOrTransaction, prisma } from "~/db.server";
import { IngestSendEvent } from "../events/ingestSendEvent.server";
import { env } from "~/env.server";
import { MISSING_CONNECTION_NOTIFICATION } from "@/../../packages/internal/src";
import { MISSING_CONNECTION_NOTIFICATION } from "@trigger.dev/internal";
export class MissingConnectionCreatedService {
#prismaClient: PrismaClientOrTransaction;
@@ -18,7 +18,7 @@ import {
} from "~/db.server";
import { resolveRunConnections } from "~/models/runConnection.server";
import { safeJsonZodParse } from "~/utils/json";
import { EndpointApi } from "../endpointApi";
import { EndpointApi } from "../endpointApi.server";
import { workerQueue } from "../worker.server";
import { formatError } from "~/utils/formatErrors.server";
@@ -3,7 +3,7 @@ import { $transaction, PrismaClientOrTransaction, prisma } from "~/db.server";
import { NextScheduledEventService } from "./nextScheduledEvent.server";
import { IngestSendEvent } from "../events/ingestSendEvent.server";
import { InvokeDispatcherService } from "../events/invokeDispatcher.server";
import { logger } from "../logger";
import { logger } from "../logger.server";
export class DeliverScheduledEventService {
#prismaClient: PrismaClientOrTransaction;
@@ -7,7 +7,7 @@ import {
import { $transaction, PrismaClientOrTransaction, prisma } from "~/db.server";
import { parseExpression } from "cron-parser";
import { workerQueue } from "../worker.server";
import { logger } from "../logger";
import { logger } from "../logger.server";
export class NextScheduledEventService {
#prismaClient: PrismaClientOrTransaction;
@@ -1,12 +1,4 @@
import type { LogLevel, RedactString } from "@trigger.dev/internal";
import { Logger } from "@trigger.dev/internal";
export const logger = new Logger(
"webapp",
(process.env.APP_LOG_LEVEL ?? "debug") as LogLevel,
[],
sensitiveDataReplacer
);
import type { RedactString } from "@trigger.dev/internal";
// Replaces redacted strings with "******".
// For example, this object: {"Authorization":{"__redactedString":true,"strings":["Bearer ",""],"interpolations":["sk-1234"]}}
@@ -1,7 +1,7 @@
import { z } from "zod";
import type { PrismaClient } from "~/db.server";
import { prisma } from "~/db.server";
import { EndpointApi } from "../endpointApi";
import { EndpointApi } from "../endpointApi.server";
import { IngestSendEvent } from "../events/ingestSendEvent.server";
import { getSecretStore } from "../secrets/secretStore.server";
@@ -3,7 +3,7 @@ import type { SourceMetadata } from "@trigger.dev/internal";
import { $transaction, PrismaClientOrTransaction } from "~/db.server";
import { prisma } from "~/db.server";
import type { AuthenticatedEnvironment } from "../apiAuth.server";
import { logger } from "../logger";
import { logger } from "../logger.server";
import { workerQueue } from "../worker.server";
import { generateSecret } from "./utils.server";
@@ -16,7 +16,7 @@ import {
calculateRetryAt,
} from "@trigger.dev/internal";
import { safeJsonFromResponse } from "~/utils/json";
import { logger } from "../logger";
import { logger } from "../logger.server";
import { formatUnknownError } from "~/utils/formatErrors.server";
type FoundTask = Awaited<ReturnType<typeof findTask>>;
@@ -5,7 +5,7 @@ import {
import type { PrismaClient } from "~/db.server";
import { prisma } from "~/db.server";
import { AuthenticatedEnvironment } from "../apiAuth.server";
import { EndpointApi } from "../endpointApi";
import { EndpointApi } from "../endpointApi.server";
import { RegisterTriggerSourceService } from "./registerTriggerSource.server";
import { IngestSendEvent } from "../events/ingestSendEvent.server";
+4
View File
@@ -26,6 +26,10 @@ export const RunParamsSchema = JobParamsSchema.extend({
runParam: z.string(),
});
export const TaskParamsSchema = RunParamsSchema.extend({
taskParam: z.string(),
});
export const IntegrationClientParamSchema = ProjectParamSchema.extend({
clientParam: z.string(),
});
+2 -1
View File
@@ -14,6 +14,7 @@
"@trigger.dev/openai": "workspace:*",
"@trigger.dev/sdk": "workspace:*",
"@trigger.dev/slack": "workspace:*",
"@trigger.dev/resend": "workspace:*",
"@types/node": "18.15.13",
"@types/react": "^18.0.21",
"@types/react-dom": "^18.0.6",
@@ -31,4 +32,4 @@
"msw": "^0.47.0",
"ts-loader": "^9.4.2"
}
}
}
@@ -0,0 +1,34 @@
import { client } from "@/trigger";
import { Resend } from "@trigger.dev/resend";
import { Job, eventTrigger } from "@trigger.dev/sdk";
import { z } from "zod";
const resend = new Resend({
id: "resend-client",
apiKey: process.env.RESEND_API_KEY!,
});
new Job(client, {
id: "send-resend-email",
name: "Send Resend Email",
version: "0.1.0",
trigger: eventTrigger({
name: "send.email",
schema: z.object({
to: z.union([z.string(), z.array(z.string())]),
subject: z.string(),
text: z.string(),
}),
}),
integrations: {
resend,
},
run: async (payload, io, ctx) => {
await io.resend.sendEmail("📧", {
to: payload.to,
subject: payload.subject,
text: payload.text,
from: "Trigger.dev <hello@email.trigger.dev>",
});
},
});
@@ -1,6 +1,7 @@
import { client } from "@/trigger";
import "@/jobs/github";
import "@/jobs/openai";
import "@/jobs/resend";
import { createPagesRoute } from "@trigger.dev/nextjs";
const { handler, config } = createPagesRoute(client, { path: "/api/trigger" });
+3 -1
View File
@@ -33,7 +33,9 @@
"@trigger.dev/slack": ["../../integrations/slack/src/index"],
"@trigger.dev/slack/*": ["../../integrations/slack/src/*"],
"@trigger.dev/openai": ["../../integrations/openai/src/index"],
"@trigger.dev/openai/*": ["../../integrations/openai/src/*"]
"@trigger.dev/openai/*": ["../../integrations/openai/src/*"],
"@trigger.dev/resend": ["../../integrations/resend/src/index"],
"@trigger.dev/resend/*": ["../../integrations/resend/src/*"]
},
"plugins": [
{
+1
View File
@@ -0,0 +1 @@
# @trigger.dev/resend
+34
View File
@@ -0,0 +1,34 @@
{
"name": "@trigger.dev/resend",
"version": "1.0.0-next.1",
"description": "The official Resend.com integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"publishConfig": {
"access": "public"
},
"files": [
"dist/index.js",
"dist/index.d.ts",
"dist/index.js.map"
],
"devDependencies": {
"@trigger.dev/tsconfig": "workspace:*",
"@types/node": "18",
"rimraf": "^3.0.2",
"tsup": "^6.5.0"
},
"scripts": {
"clean": "rimraf dist",
"build": "npm run clean && npm run build:tsup",
"build:tsup": "tsup"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^2.0.0-next",
"@trigger.dev/sdk": "workspace:^2.0.0-next",
"resend": "^0.9.1"
},
"engines": {
"node": ">=18"
}
}
+76
View File
@@ -0,0 +1,76 @@
import type { IntegrationClient, TriggerIntegration } from "@trigger.dev/sdk";
import { Resend as ResendClient } from "resend";
import type { AuthenticatedTask } from "@trigger.dev/sdk";
type SendEmailData = Parameters<
InstanceType<typeof ResendClient>["sendEmail"]
>[0];
type SendEmailResponse = { id: string };
export const sendEmail: AuthenticatedTask<
InstanceType<typeof ResendClient>,
SendEmailData,
SendEmailResponse
> = {
run: async (params, client) => {
return client.sendEmail(params) as Promise<SendEmailResponse>;
},
init: (params) => {
const subjectProperty = params.subject
? [{ label: "Subject", text: params.subject }]
: [];
return {
name: "Send Email",
params,
icon: "resend",
properties: [
{
label: "From",
text: params.from,
},
{
label: "To",
text: Array.isArray(params.to) ? params.to.join(", ") : params.to,
},
...subjectProperty,
],
};
},
};
const tasks = {
sendEmail,
};
export type ResendIntegrationOptions = {
id: string;
apiKey: string;
};
export class Resend
implements TriggerIntegration<IntegrationClient<ResendClient, typeof tasks>>
{
client: IntegrationClient<ResendClient, typeof tasks>;
constructor(private options: ResendIntegrationOptions) {
this.client = {
tasks,
usesLocalAuth: true,
client: new ResendClient(options.apiKey),
auth: {
apiKey: options.apiKey,
},
};
}
get id() {
return this.options.id;
}
get metadata() {
return { id: "resend", name: "Resend.com" };
}
}
+21
View File
@@ -0,0 +1,21 @@
{
"extends": "@trigger.dev/tsconfig/node18.json",
"include": ["./src/**/*.ts", "tsup.config.ts"],
"compilerOptions": {
"lib": ["DOM", "DOM.Iterable", "ES2019"],
"paths": {
"@trigger.dev/sdk/*": ["../../packages/trigger-sdk/src/*"],
"@trigger.dev/sdk": ["../../packages/trigger-sdk/src/index"],
"@trigger.dev/integration-kit/*": [
"../../packages/integration-kit/src/*"
],
"@trigger.dev/integration-kit": [
"../../packages/integration-kit/src/index"
]
},
"declaration": false,
"declarationMap": false,
"baseUrl": "."
},
"exclude": ["node_modules"]
}
+22
View File
@@ -0,0 +1,22 @@
import { defineConfig } from "tsup";
export default defineConfig([
{
name: "main",
entry: ["./src/index.ts"],
outDir: "./dist",
platform: "node",
format: ["cjs"],
legacyOutput: true,
sourcemap: true,
clean: true,
bundle: true,
splitting: false,
dts: true,
treeshake: {
preset: "smallest",
},
esbuildPlugins: [],
external: ["http", "https", "util", "events", "tty", "os", "timers"],
},
]);
+23 -2
View File
@@ -459,6 +459,7 @@ importers:
'@trigger.dev/github': workspace:*
'@trigger.dev/nextjs': workspace:*
'@trigger.dev/openai': workspace:*
'@trigger.dev/resend': workspace:*
'@trigger.dev/sdk': workspace:*
'@trigger.dev/slack': workspace:*
'@types/node': 18.15.13
@@ -479,6 +480,7 @@ importers:
'@trigger.dev/github': link:../../integrations/github
'@trigger.dev/nextjs': link:../../packages/nextjs
'@trigger.dev/openai': link:../../integrations/openai
'@trigger.dev/resend': link:../../integrations/resend
'@trigger.dev/sdk': link:../../packages/trigger-sdk
'@trigger.dev/slack': link:../../integrations/slack
'@types/node': 18.15.13
@@ -549,6 +551,25 @@ importers:
rimraf: 3.0.2
tsup: 6.6.3
integrations/resend:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.0.0-next
'@trigger.dev/sdk': workspace:^2.0.0-next
'@trigger.dev/tsconfig': workspace:*
'@types/node': '18'
resend: ^0.9.1
rimraf: ^3.0.2
tsup: ^6.5.0
dependencies:
'@trigger.dev/integration-kit': link:../../packages/integration-kit
'@trigger.dev/sdk': link:../../packages/trigger-sdk
resend: 0.9.1
devDependencies:
'@trigger.dev/tsconfig': link:../../config-packages/tsconfig
'@types/node': 18.15.13
rimraf: 3.0.2
tsup: 6.6.3
integrations/slack:
specifiers:
'@slack/web-api': ^6.8.1
@@ -23492,7 +23513,7 @@ packages:
resolve-from: 5.0.0
rollup: 3.10.0
source-map: 0.8.0-beta.0
sucrase: 3.29.0
sucrase: 3.32.0
tree-kill: 1.2.2
transitivePeerDependencies:
- supports-color
@@ -23527,7 +23548,7 @@ packages:
resolve-from: 5.0.0
rollup: 3.10.0
source-map: 0.8.0-beta.0
sucrase: 3.29.0
sucrase: 3.32.0
tree-kill: 1.2.2
typescript: 4.9.5
transitivePeerDependencies: