From 0a5aa2dc15909b42582d0b871e27bce73859988e Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Wed, 24 Apr 2024 22:07:12 +0100 Subject: [PATCH 01/10] Fix slow job retries by optimizing how errored tasks are deleted --- .../app/services/runs/continueRun.server.ts | 22 ++++++++++++------- .../migration.sql | 5 +++++ packages/database/prisma/schema.prisma | 2 +- 3 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 packages/database/prisma/migrations/20240424210540_change_on_delete_ref_action_on_run_execution/migration.sql diff --git a/apps/webapp/app/services/runs/continueRun.server.ts b/apps/webapp/app/services/runs/continueRun.server.ts index 044040ae4..844b4a3c3 100644 --- a/apps/webapp/app/services/runs/continueRun.server.ts +++ b/apps/webapp/app/services/runs/continueRun.server.ts @@ -32,6 +32,14 @@ export class ContinueRunService { throw new Error("Run is not resumable"); } + // Delete any tasks that are errored + const erroredTasks = await tx.task.findMany({ + where: { + runId: runId, + status: "ERRORED", + }, + }); + await tx.jobRun.update({ where: { id: runId }, data: { @@ -45,17 +53,15 @@ export class ContinueRunService { }, }); - // Delete any tasks that are errored - await tx.task.deleteMany({ - where: { - runId: runId, - status: "ERRORED", - }, - }); + for (const task of erroredTasks) { + await tx.task.delete({ + where: { id: task.id }, + }); + } await ResumeRunService.enqueue(run, tx); }, - { timeout: 10000 } + { timeout: 30_000 } ); } } diff --git a/packages/database/prisma/migrations/20240424210540_change_on_delete_ref_action_on_run_execution/migration.sql b/packages/database/prisma/migrations/20240424210540_change_on_delete_ref_action_on_run_execution/migration.sql new file mode 100644 index 000000000..56977e0b9 --- /dev/null +++ b/packages/database/prisma/migrations/20240424210540_change_on_delete_ref_action_on_run_execution/migration.sql @@ -0,0 +1,5 @@ +-- DropForeignKey +ALTER TABLE "JobRunExecution" DROP CONSTRAINT "JobRunExecution_resumeTaskId_fkey"; + +-- AddForeignKey +ALTER TABLE "JobRunExecution" ADD CONSTRAINT "JobRunExecution_resumeTaskId_fkey" FOREIGN KEY ("resumeTaskId") REFERENCES "Task"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/packages/database/prisma/schema.prisma b/packages/database/prisma/schema.prisma index 27264c81f..1036562c5 100644 --- a/packages/database/prisma/schema.prisma +++ b/packages/database/prisma/schema.prisma @@ -991,7 +991,7 @@ model JobRunExecution { reason JobRunExecutionReason @default(EXECUTE_JOB) status JobRunExecutionStatus @default(PENDING) - resumeTask Task? @relation(fields: [resumeTaskId], references: [id], onDelete: Cascade, onUpdate: Cascade) + resumeTask Task? @relation(fields: [resumeTaskId], references: [id], onDelete: SetNull, onUpdate: Cascade) resumeTaskId String? graphileJobId String? From 9491a1649c4ac62e5bd1211f9ae3db978e1ad532 Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Thu, 25 Apr 2024 11:17:13 +0100 Subject: [PATCH 02/10] v3: Support decorators (#1060) * Adds support for `emitDecoratorMetadata: true` and `experimentalDecorators: true` in your tsconfig * Implement task.onSuccess/onFailure and config.onSuccess/onFailure * Added onStart and more docs for lifecycle functions * Use onStart instead of init for TypeORM --- .changeset/clever-carrots-travel.md | 7 + .changeset/mighty-flowers-train.md | 83 +++++++ docs/v3/tasks-overview.mdx | 136 +++++++++++- docs/v3/trigger-config.mdx | 122 ++++++++++- packages/cli-v3/package.json | 1 + packages/cli-v3/src/commands/deploy.ts | 15 +- packages/cli-v3/src/commands/dev.tsx | 6 + packages/cli-v3/src/utilities/configFiles.ts | 8 + packages/core/src/v3/types/config.ts | 23 +- packages/core/src/v3/types/index.ts | 14 +- packages/core/src/v3/workers/taskExecutor.ts | 203 +++++++++++++++++- packages/trigger-sdk/src/v3/shared.ts | 69 +++++- pnpm-lock.yaml | 203 +++++++++++++++++- references/v3-catalog/package.json | 3 + references/v3-catalog/src/handleError.ts | 2 - .../v3-catalog/src/trigger/decorators.ts | 32 +++ .../v3-catalog/src/trigger/orm/index.ts | 36 ++++ references/v3-catalog/trigger.config.ts | 13 ++ references/v3-catalog/tsconfig.json | 4 +- 19 files changed, 946 insertions(+), 34 deletions(-) create mode 100644 .changeset/clever-carrots-travel.md create mode 100644 .changeset/mighty-flowers-train.md create mode 100644 references/v3-catalog/src/trigger/decorators.ts create mode 100644 references/v3-catalog/src/trigger/orm/index.ts diff --git a/.changeset/clever-carrots-travel.md b/.changeset/clever-carrots-travel.md new file mode 100644 index 000000000..1e4afac37 --- /dev/null +++ b/.changeset/clever-carrots-travel.md @@ -0,0 +1,7 @@ +--- +"@trigger.dev/sdk": patch +"trigger.dev": patch +"@trigger.dev/core": patch +--- + +Implement task.onSuccess/onFailure and config.onSuccess/onFailure diff --git a/.changeset/mighty-flowers-train.md b/.changeset/mighty-flowers-train.md new file mode 100644 index 000000000..32d4ff8e4 --- /dev/null +++ b/.changeset/mighty-flowers-train.md @@ -0,0 +1,83 @@ +--- +"trigger.dev": patch +"@trigger.dev/core": patch +--- + +Adds support for `emitDecoratorMetadata: true` and `experimentalDecorators: true` in your tsconfig using the [`@anatine/esbuild-decorators`](https://github.com/anatine/esbuildnx/tree/main/packages/esbuild-decorators) package. This allows you to use libraries like TypeORM: + +```ts orm/index.ts +import "reflect-metadata"; +import { DataSource } from "typeorm"; +import { Entity, Column, PrimaryColumn } from "typeorm"; + +@Entity() +export class Photo { + @PrimaryColumn() + id!: number; + + @Column() + name!: string; + + @Column() + description!: string; + + @Column() + filename!: string; + + @Column() + views!: number; + + @Column() + isPublished!: boolean; +} + +export const AppDataSource = new DataSource({ + type: "postgres", + host: "localhost", + port: 5432, + username: "postgres", + password: "postgres", + database: "v3-catalog", + entities: [Photo], + synchronize: true, + logging: false, +}); +``` + +And then in your trigger.config.ts file you can initialize the datasource using the new `init` option: + +```ts trigger.config.ts +import type { TriggerConfig } from "@trigger.dev/sdk/v3"; +import { AppDataSource } from "@/trigger/orm"; + +export const config: TriggerConfig = { + // ... other options here + init: async (payload, { ctx }) => { + await AppDataSource.initialize(); + }, +}; +``` + +Now you are ready to use this in your tasks: + +```ts +import { task } from "@trigger.dev/sdk/v3"; +import { AppDataSource, Photo } from "./orm"; + +export const taskThatUsesDecorators = task({ + id: "taskThatUsesDecorators", + run: async (payload: { message: string }) => { + console.log("Creating a photo..."); + + const photo = new Photo(); + photo.id = 2; + photo.name = "Me and Bears"; + photo.description = "I am near polar bears"; + photo.filename = "photo-with-bears.jpg"; + photo.views = 1; + photo.isPublished = true; + + await AppDataSource.manager.save(photo); + }, +}); +``` diff --git a/docs/v3/tasks-overview.mdx b/docs/v3/tasks-overview.mdx index ab81fb82e..09ec23ab7 100644 --- a/docs/v3/tasks-overview.mdx +++ b/docs/v3/tasks-overview.mdx @@ -79,7 +79,7 @@ export const taskWithRetries = task({ maxTimeoutInMs: 30_000, randomize: false, }, - run: async ({ payload, ctx }) => { + run: async (payload: any, { ctx }) => { //... }, }); @@ -99,7 +99,7 @@ export const oneAtATime = task({ queue: { concurrencyLimit: 1, }, - run: async ({ payload, ctx }) => { + run: async (payload: any, { ctx }) => { //... }, }); @@ -116,7 +116,7 @@ export const heavyTask = task({ cpu: 2, memory: 4, }, - run: async ({ payload, ctx }) => { + run: async (payload: any, { ctx }) => { //... }, }); @@ -124,27 +124,143 @@ export const heavyTask = task({ ### `init` function -This function is called before a run attempt. +This function is called before a run attempt: + +```ts /trigger/init.ts +export const taskWithInit = task({ + id: "task-with-init", + init: async (payload, { ctx }) => { + //... + }, + run: async (payload: any, { ctx }) => { + //... + }, +}); +``` + +You can also return data from the `init` function that will be available in the params of the `run`, `cleanup`, `onSuccess`, and `onFailure` functions. + +```ts /trigger/init-return.ts +export const taskWithInitReturn = task({ + id: "task-with-init-return", + init: async (payload, { ctx }) => { + return { someData: "someValue" }; + }, + run: async (payload: any, { ctx, init }) => { + console.log(init.someData); // "someValue" + }, +}); +``` ### `cleanup` function -This function is called after a run attempt has succeeded or failed. +This function is called after the `run` function is executed, regardless of whether the run was successful or not. It's useful for cleaning up resources, logging, or other side effects. + +```ts /trigger/cleanup.ts +export const taskWithCleanup = task({ + id: "task-with-cleanup", + cleanup: async (payload, { ctx }) => { + //... + }, + run: async (payload: any, { ctx }) => { + //... + }, +}); +``` ### `middleware` function This function is called before the `run` function, it allows you to wrap the run function with custom code. For more information [read the guide](/v3/middleware). +### `onStart` function + +When a task run starts, the `onStart` function is called. It's useful for sending notifications, logging, and other side effects. This function will only be called one per run (not per retry). If you want to run code before each retry, use the `init` function. + +```ts /trigger/on-start.ts +export const taskWithOnStart = task({ + id: "task-with-on-start", + onStart: async (payload, { ctx }) => { + //... + }, + run: async (payload: any, { ctx }) => { + //... + }, +}); +``` + +You can also define an `onStart` function in your `trigger.config.ts` file to get notified when any task starts. + +```ts trigger.config.ts +import type { TriggerConfig } from "@trigger.dev/sdk/v3"; + +export const config: TriggerConfig = { + onStart: async (payload, { ctx }) => { + console.log("Task started", ctx.task.id); + }, +}; +``` + ### `onSuccess` function -When a task attempt succeeds, the `onSuccess` function is called. It's useful for sending notifications, logging, or other side effects. +When a task run succeeds, the `onSuccess` function is called. It's useful for sending notifications, logging, syncing state to your database, or other side effects. - +```ts /trigger/on-success.ts +export const taskWithOnSuccess = task({ + id: "task-with-on-success", + onSuccess: async (payload, output, { ctx }) => { + //... + }, + run: async (payload: any, { ctx }) => { + //... + }, +}); +``` -### `onError` function +You can also define an `onSuccess` function in your `trigger.config.ts` file to get notified when any task succeeds. -When a task attempt fails, the `onError` function is called. It's useful for sending notifications, logging, or other side effects. +```ts trigger.config.ts +import type { TriggerConfig } from "@trigger.dev/sdk/v3"; - +export const config: TriggerConfig = { + onSuccess: async (payload, output, { ctx }) => { + console.log("Task succeeded", ctx.task.id); + }, +}; +``` + +### `onFailure` function + +When a task run fails, the `onFailure` function is called. It's useful for sending notifications, logging, or other side effects. It will only be executed once the task run has exhausted all its retries. + +```ts /trigger/on-failure.ts +export const taskWithOnFailure = task({ + id: "task-with-on-failure", + onFailure: async (payload, error, { ctx }) => { + //... + }, + run: async (payload: any, { ctx }) => { + //... + }, +}); +``` + +You can also define an `onFailure` function in your `trigger.config.ts` file to get notified when any task fails. + +```ts trigger.config.ts +import type { TriggerConfig } from "@trigger.dev/sdk/v3"; + +export const config: TriggerConfig = { + onFailure: async (payload, error, { ctx }) => { + console.log("Task failed", ctx.task.id); + }, +}; +``` + +### `handleError` functions + +You can define a function that will be called when an error is thrown in the `run` function, that allows you to control how the error is handled and whether the task should be retried. + +Read more about `handleError` in our [Errors and Retrying guide](/v3/errors-retrying). ## Next steps diff --git a/docs/v3/trigger-config.mdx b/docs/v3/trigger-config.mdx index 7d74070ab..2cff40c29 100644 --- a/docs/v3/trigger-config.mdx +++ b/docs/v3/trigger-config.mdx @@ -31,6 +31,46 @@ export const config: TriggerConfig = { Most of the time you don't need to change anything in this file, or if you do then we will tell you when you the run the CLI command. +## Global initialization + +You can run code before any task is run by adding a `init` function to your `trigger.config.ts` file. + +```ts trigger.config.ts +import type { TriggerConfig } from "@trigger.dev/sdk/v3"; + +export const config: TriggerConfig = { + //..other stuff + init: async (payload, { ctx }) => { + console.log("I run before any task is run"); + }, +}; +``` + +You'll have access to the run payload and the context object. Currently you cannot return anything from this function. + +## Lifecycle functions + +You can add lifecycle functions to get notified when any task starts, succeeds, or fails using `onStart`, `onSuccess` and `onFailure`: + +```ts trigger.config.ts +import type { TriggerConfig } from "@trigger.dev/sdk/v3"; + +export const config: TriggerConfig = { + //..other stuff + onSuccess: async (payload, output, { ctx }) => { + console.log("Task succeeded", ctx.task.id); + }, + onFailure: async (payload, error, { ctx }) => { + console.log("Task failed", ctx.task.id); + }, + onStart: async (payload, { ctx }) => { + console.log("Task started", ctx.task.id); + }, +}; +``` + +Read more about task lifecycle functions in the [tasks overview](/v3/tasks-overview). + ## Instrumentations We use OpenTelemetry (OTEL) for our run logs. This means you get a lot of information about your tasks with no effort. But you probably want to add more information to your logs. For example, here's all the Prisma calls automatically logged: @@ -92,7 +132,6 @@ Prisma works by generating a client from your `prisma.schema` file. This means y - ```json default path @@ -140,6 +179,87 @@ Prisma works by generating a client from your `prisma.schema` file. This means y +## TypeORM support + +We support using TypeORM with Trigger. You can use decorators in your entities and then use them in your tasks. Here's an example: + +```ts orm/index.ts +import "reflect-metadata"; +import { DataSource } from "typeorm"; +import { Entity, Column, PrimaryColumn } from "typeorm"; + +@Entity() +export class Photo { + @PrimaryColumn() + id!: number; + + @Column() + name!: string; + + @Column() + description!: string; + + @Column() + filename!: string; + + @Column() + views!: number; + + @Column() + isPublished!: boolean; +} + +export const AppDataSource = new DataSource({ + type: "postgres", + host: "localhost", + port: 5432, + username: "postgres", + password: "postgres", + database: "my-database", + entities: [Photo], + synchronize: true, + logging: false, +}); +``` + +And then in your trigger.config.ts file you can initialize the datasource using the `onStart` lifecycle function option: + +```ts trigger.config.ts +import type { TriggerConfig } from "@trigger.dev/sdk/v3"; +import { AppDataSource } from "@/trigger/orm"; + +export const config: TriggerConfig = { + // ... other options here + onStart: async (payload, { ctx }) => { + await AppDataSource.initialize(); + }, +}; +``` + +Now you are ready to use this in your tasks: + +```ts +import { task } from "@trigger.dev/sdk/v3"; +import { AppDataSource, Photo } from "./orm"; + +export const taskThatUsesDecorators = task({ + id: "task-that-uses-decorators", + run: async (payload: { message: string }) => { + console.log("Creating a photo..."); + + const photo = new Photo(); + photo.id = 2; + photo.name = "Me and Bears"; + photo.description = "I am near polar bears"; + photo.filename = "photo-with-bears.jpg"; + photo.views = 1; + photo.isPublished = true; + + await AppDataSource.manager.save(photo); + }, +}); +``` + ## Troubleshooting If you have an issue with bundling let us know on [Discord](https://trigger.dev/discord) or [via email](https://trigger.dev/contact). diff --git a/packages/cli-v3/package.json b/packages/cli-v3/package.json index 5533d068d..f1287ad6b 100644 --- a/packages/cli-v3/package.json +++ b/packages/cli-v3/package.json @@ -71,6 +71,7 @@ "test": "vitest" }, "dependencies": { + "@anatine/esbuild-decorators": "^0.2.19", "@clack/prompts": "^0.7.0", "@depot/cli": "0.0.1-cli.2.55.0", "@opentelemetry/api": "^1.8.0", diff --git a/packages/cli-v3/src/commands/deploy.ts b/packages/cli-v3/src/commands/deploy.ts index 55193c349..6ca164878 100644 --- a/packages/cli-v3/src/commands/deploy.ts +++ b/packages/cli-v3/src/commands/deploy.ts @@ -8,14 +8,13 @@ import { flattenAttributes, } from "@trigger.dev/core/v3"; import { recordSpanException } from "@trigger.dev/core/v3/workers"; -import chalk from "chalk"; import { Command, Option as CommandOption } from "commander"; import { Metafile, build } from "esbuild"; import { execa } from "execa"; import { createHash } from "node:crypto"; import { readFileSync } from "node:fs"; import { copyFile, mkdir, readFile, writeFile } from "node:fs/promises"; -import { dirname, join, relative, posix } from "node:path"; +import { dirname, join, posix, relative } from "node:path"; import { setTimeout } from "node:timers/promises"; import terminalLink from "terminal-link"; import invariant from "tiny-invariant"; @@ -32,7 +31,7 @@ import { wrapCommandAction, } from "../cli/common.js"; import { readConfig } from "../utilities/configFiles.js"; -import { createTempDir, readJSONFile, writeJSONFile } from "../utilities/fileSystem"; +import { createTempDir, writeJSONFile } from "../utilities/fileSystem"; import { printStandloneInitialBanner } from "../utilities/initialBanner.js"; import { detectPackageNameFromImportPath, @@ -43,6 +42,7 @@ import { logger } from "../utilities/logger.js"; import { createTaskFileImports, gatherTaskFiles } from "../utilities/taskFiles"; import { login } from "./login"; +import { esbuildDecorators } from "@anatine/esbuild-decorators"; import { Glob, GlobOptions } from "glob"; import type { SetOptional } from "type-fest"; import { bundleDependenciesPlugin, workerSetupImportConfigPlugin } from "../utilities/build"; @@ -53,12 +53,12 @@ import { parseBuildErrorStack, parseNpmInstallError, } from "../utilities/deployErrors"; -import { safeJsonParse } from "../utilities/safeJsonParse"; import { JavascriptProject } from "../utilities/javascriptProject"; +import { docs, getInTouch } from "../utilities/links"; import { cliRootPath } from "../utilities/resolveInternalFilePath"; +import { safeJsonParse } from "../utilities/safeJsonParse"; import { escapeImportPath, spinner } from "../utilities/windows"; import { updateTriggerPackages } from "./update"; -import { docs, getInTouch } from "../utilities/links"; const DeployCommandOptions = CommonCommandOptions.extend({ skipTypecheck: z.boolean().default(false), @@ -1137,6 +1137,11 @@ async function compileProject( config.tsconfigPath ), workerSetupImportConfigPlugin(configPath), + esbuildDecorators({ + tsconfig: config.tsconfigPath, + tsx: true, + force: false, + }), ], }); diff --git a/packages/cli-v3/src/commands/dev.tsx b/packages/cli-v3/src/commands/dev.tsx index 33516e797..b182b535b 100644 --- a/packages/cli-v3/src/commands/dev.tsx +++ b/packages/cli-v3/src/commands/dev.tsx @@ -53,6 +53,7 @@ import { findUp, pathExists } from "find-up"; import { cliRootPath } from "../utilities/resolveInternalFilePath"; import { escapeImportPath } from "../utilities/windows"; import { updateTriggerPackages } from "./update"; +import { esbuildDecorators } from "@anatine/esbuild-decorators"; let apiClient: CliApiClient | undefined; @@ -409,6 +410,11 @@ function useDev({ config.tsconfigPath ), workerSetupImportConfigPlugin(configPath), + esbuildDecorators({ + tsconfig: config.tsconfigPath, + tsx: true, + force: false, + }), { name: "trigger.dev v3", setup(build) { diff --git a/packages/cli-v3/src/utilities/configFiles.ts b/packages/cli-v3/src/utilities/configFiles.ts index 87ed14779..5725e0e67 100644 --- a/packages/cli-v3/src/utilities/configFiles.ts +++ b/packages/cli-v3/src/utilities/configFiles.ts @@ -10,6 +10,7 @@ import { createTempDir, readJSONFileSync } from "./fileSystem.js"; import { logger } from "./logger.js"; import { findTriggerDirectories, resolveTriggerDirectories } from "./taskFiles.js"; import { build } from "esbuild"; +import { esbuildDecorators } from "@anatine/esbuild-decorators"; function getGlobalConfigFolderPath() { const configDir = xdgAppPaths("trigger").config(); @@ -172,6 +173,13 @@ export async function readConfig( target: ["es2018", "node18"], outfile: builtConfigFilePath, logLevel: "silent", + plugins: [ + esbuildDecorators({ + cwd: absoluteDir, + tsx: false, + force: false, + }), + ], }); // import the config file diff --git a/packages/core/src/v3/types/config.ts b/packages/core/src/v3/types/config.ts index e2fe65242..81786576d 100644 --- a/packages/core/src/v3/types/config.ts +++ b/packages/core/src/v3/types/config.ts @@ -1,3 +1,4 @@ +import { FailureFnParams, InitFnParams, StartFnParams, SuccessFnParams } from "."; import { LogLevel } from "../logger/taskLogger"; import { RetryOptions } from "../schemas"; import type { InstrumentationOption } from "@opentelemetry/instrumentation"; @@ -16,7 +17,7 @@ export interface ProjectConfig { * List of additional files to include in your trigger.dev bundle. e.g. ["./prisma/schema.prisma"] * * Supports glob patterns. - * + * * Note: The path separator for glob patterns is `/`, even on Windows! */ additionalFiles?: string[]; @@ -48,4 +49,24 @@ export interface ProjectConfig { * Enable console logging while running the dev CLI. This will print out logs from console.log, console.warn, and console.error. By default all logs are sent to the trigger.dev backend, and not logged to the console. */ enableConsoleLogging?: boolean; + + /** + * Run before a task is executed, for all tasks. This is useful for setting up any global state that is needed for all tasks. + */ + init?: (payload: unknown, params: InitFnParams) => void | Promise; + + /** + * onSuccess is called after the run function has successfully completed. + */ + onSuccess?: (payload: unknown, output: unknown, params: SuccessFnParams) => Promise; + + /** + * onFailure is called after a task run has failed (meaning the run function threw an error and won't be retried anymore) + */ + onFailure?: (payload: unknown, error: unknown, params: FailureFnParams) => Promise; + + /** + * onStart is called the first time a task is executed in a run (not before every retry) + */ + onStart?: (payload: unknown, params: StartFnParams) => Promise; } diff --git a/packages/core/src/v3/types/index.ts b/packages/core/src/v3/types/index.ts index f6072f8f4..e1a79157f 100644 --- a/packages/core/src/v3/types/index.ts +++ b/packages/core/src/v3/types/index.ts @@ -22,12 +22,15 @@ export type InitFnParams = Prettify<{ ctx: Context; }>; +export type StartFnParams = Prettify<{ + ctx: Context; +}>; + export type Context = TaskRunContext; -export type SuccessFnParams = RunFnParams & - Prettify<{ - output: TOutput; - }>; +export type SuccessFnParams = RunFnParams; + +export type FailureFnParams = RunFnParams; export type HandleErrorFnParams = RunFnParams & Prettify<{ @@ -74,5 +77,8 @@ export type TaskMetadataWithFunctions = TaskMetadata & { error: unknown, params: HandleErrorFnParams ) => HandleErrorResult; + onSuccess?: (payload: any, output: any, params: SuccessFnParams) => Promise; + onFailure?: (payload: any, error: unknown, params: FailureFnParams) => Promise; + onStart?: (payload: any, params: StartFnParams) => Promise; }; }; diff --git a/packages/core/src/v3/workers/taskExecutor.ts b/packages/core/src/v3/workers/taskExecutor.ts index 48fd1abd1..16a396ede 100644 --- a/packages/core/src/v3/workers/taskExecutor.ts +++ b/packages/core/src/v3/workers/taskExecutor.ts @@ -90,10 +90,16 @@ export class TaskExecutor { parsedPayload = await parsePacket(payloadPacket); - initOutput = await this.#callTaskInit(parsedPayload, ctx); + if (execution.attempt.number === 1) { + await this.#callOnStartFunctions(parsedPayload, ctx); + } + + initOutput = await this.#callInitFunctions(parsedPayload, ctx); const output = await this.#callRun(parsedPayload, ctx, initOutput); + await this.#callOnSuccessFunctions(parsedPayload, output, ctx, initOutput); + try { const stringifiedOutput = await stringifyIO(output); @@ -148,6 +154,15 @@ export class TaskExecutor { recordSpanException(span, handleErrorResult.error ?? runError); + if (handleErrorResult.status !== "retry") { + await this.#callOnFailureFunctions( + parsedPayload, + handleErrorResult.error ?? runError, + ctx, + initOutput + ); + } + return { id: execution.run.id, ok: false, @@ -218,16 +233,194 @@ export class TaskExecutor { return middlewareFn(payload, { ctx, next: async () => runFn(payload, { ctx, init }) }); } - async #callTaskInit(payload: unknown, ctx: TaskRunContext) { + async #callInitFunctions(payload: unknown, ctx: TaskRunContext) { + await this.#callConfigInit(payload, ctx); + const initFn = this.task.fns.init; if (!initFn) { return {}; } - return this._tracer.startActiveSpan("init", async (span) => { - return await initFn(payload, { ctx }); - }); + return this._tracer.startActiveSpan( + "init", + async (span) => { + return await initFn(payload, { ctx }); + }, + { + attributes: { + [SemanticInternalAttributes.STYLE_ICON]: "function", + }, + } + ); + } + + async #callConfigInit(payload: unknown, ctx: TaskRunContext) { + const initFn = this._importedConfig?.init; + + if (!initFn) { + return {}; + } + + return this._tracer.startActiveSpan( + "config.init", + async (span) => { + return await initFn(payload, { ctx }); + }, + { + attributes: { + [SemanticInternalAttributes.STYLE_ICON]: "function", + }, + } + ); + } + + async #callOnSuccessFunctions( + payload: unknown, + output: any, + ctx: TaskRunContext, + initOutput: any + ) { + await this.#callOnSuccessFunction( + this.task.fns.onSuccess, + "task.onSuccess", + payload, + output, + ctx, + initOutput + ); + + await this.#callOnSuccessFunction( + this._importedConfig?.onSuccess, + "config.onSuccess", + payload, + output, + ctx, + initOutput + ); + } + + async #callOnSuccessFunction( + onSuccessFn: TaskMetadataWithFunctions["fns"]["onSuccess"], + name: string, + payload: unknown, + output: any, + ctx: TaskRunContext, + initOutput: any + ) { + if (!onSuccessFn) { + return; + } + + try { + await this._tracer.startActiveSpan( + name, + async (span) => { + return await onSuccessFn(payload, output, { ctx, init: initOutput }); + }, + { + attributes: { + [SemanticInternalAttributes.STYLE_ICON]: "function", + }, + } + ); + } catch { + // Ignore errors from onSuccess functions + } + } + + async #callOnFailureFunctions( + payload: unknown, + error: unknown, + ctx: TaskRunContext, + initOutput: any + ) { + await this.#callOnFailureFunction( + this.task.fns.onFailure, + "task.onFailure", + payload, + error, + ctx, + initOutput + ); + + await this.#callOnFailureFunction( + this._importedConfig?.onFailure, + "config.onFailure", + payload, + error, + ctx, + initOutput + ); + } + + async #callOnFailureFunction( + onFailureFn: TaskMetadataWithFunctions["fns"]["onFailure"], + name: string, + payload: unknown, + error: unknown, + ctx: TaskRunContext, + initOutput: any + ) { + if (!onFailureFn) { + return; + } + + try { + return await this._tracer.startActiveSpan( + name, + async (span) => { + return await onFailureFn(payload, error, { ctx, init: initOutput }); + }, + { + attributes: { + [SemanticInternalAttributes.STYLE_ICON]: "function", + }, + } + ); + } catch (e) { + // Ignore errors from onFailure functions + } + } + + async #callOnStartFunctions(payload: unknown, ctx: TaskRunContext) { + await this.#callOnStartFunction( + this._importedConfig?.onStart, + "config.onStart", + payload, + ctx, + {} + ); + + await this.#callOnStartFunction(this.task.fns.onStart, "task.onStart", payload, ctx, {}); + } + + async #callOnStartFunction( + onStartFn: TaskMetadataWithFunctions["fns"]["onStart"], + name: string, + payload: unknown, + ctx: TaskRunContext, + initOutput: any + ) { + if (!onStartFn) { + return; + } + + try { + await this._tracer.startActiveSpan( + name, + async (span) => { + return await onStartFn(payload, { ctx }); + }, + { + attributes: { + [SemanticInternalAttributes.STYLE_ICON]: "function", + }, + } + ); + } catch { + // Ignore errors from onStart functions + } } async #callTaskCleanup(payload: unknown, ctx: TaskRunContext, init: unknown) { diff --git a/packages/trigger-sdk/src/v3/shared.ts b/packages/trigger-sdk/src/v3/shared.ts index aa950897a..ff1121f6a 100644 --- a/packages/trigger-sdk/src/v3/shared.ts +++ b/packages/trigger-sdk/src/v3/shared.ts @@ -6,6 +6,7 @@ import { } from "@opentelemetry/semantic-conventions"; import { BatchTaskRunExecutionResult, + FailureFnParams, HandleErrorFnParams, HandleErrorResult, InitFnParams, @@ -17,6 +18,7 @@ import { RetryOptions, RunFnParams, SemanticInternalAttributes, + StartFnParams, SuccessFnParams, TaskRunContext, TaskRunExecutionResult, @@ -143,15 +145,67 @@ export type TaskOptions< * @param params - Metadata about the run. */ run: (payload: TPayload, params: RunFnParams) => Promise; + + /** + * init is called before the run function is called. It's useful for setting up any global state. + */ init?: (payload: TPayload, params: InitFnParams) => Promise; + + /** + * cleanup is called after the run function has completed. + */ + cleanup?: (payload: TPayload, params: RunFnParams) => Promise; + + /** + * handleError is called when the run function throws an error. It can be used to modify the error or return new retry options. + */ handleError?: ( payload: TPayload, error: unknown, params: HandleErrorFnParams ) => HandleErrorResult; - cleanup?: (payload: TPayload, params: RunFnParams) => Promise; + + /** + * middleware allows you to run code "around" the run function. This can be useful for logging, metrics, or other cross-cutting concerns. + * + * When writing middleware, you should always call `next()` to continue the execution of the task: + * + * ```ts + * export const middlewareTask = task({ + * id: "middleware-task", + * middleware: async (payload, { ctx, next }) => { + * console.log("Before run"); + * await next(); + * console.log("After run"); + * }, + * run: async (payload, { ctx }) => {} + * }); + * ``` + */ middleware?: (payload: TPayload, params: MiddlewareFnParams) => Promise; - onSuccess?: (payload: TPayload, params: SuccessFnParams) => Promise; + + /** + * onStart is called the first time a task is executed in a run (not before every retry) + */ + onStart?: (payload: TPayload, params: StartFnParams) => Promise; + + /** + * onSuccess is called after the run function has successfully completed. + */ + onSuccess?: ( + payload: TPayload, + output: TOutput, + params: SuccessFnParams + ) => Promise; + + /** + * onFailure is called after a task run has failed (meaning the run function threw an error and won't be retried anymore) + */ + onFailure?: ( + payload: TPayload, + error: unknown, + params: FailureFnParams + ) => Promise; }; type InvokeHandle = { @@ -248,6 +302,14 @@ export interface Task { batchTriggerAndWait: (items: Array>) => Promise>; } +export type TaskPayload = TTask extends Task + ? TInput + : never; + +export type TaskOutput = TTask extends Task + ? TOutput + : never; + type TaskRunOptions = { idempotencyKey?: string; maxAttempts?: number; @@ -624,6 +686,9 @@ export function createTask=18.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -13130,6 +13150,10 @@ packages: - supports-color dev: false + /@sqltools/formatter@1.2.5: + resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} + dev: false + /@supabase/functions-js@2.1.2: resolution: {integrity: sha512-QCR6pwJs9exCl37bmpMisUd6mf+0SUBJ6mUpiAjEkSJ/+xW8TCuO14bvkWHADd5hElJK9MxNlMQXxSA4DRz9nQ==} dependencies: @@ -15437,7 +15461,6 @@ packages: /acorn-walk@8.3.2: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} - dev: true /acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} @@ -15649,6 +15672,11 @@ packages: normalize-path: 3.0.0 picomatch: 2.3.1 + /app-root-path@3.1.0: + resolution: {integrity: sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==} + engines: {node: '>= 6.0.0'} + dev: false + /append-field@1.0.0: resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} @@ -17073,6 +17101,19 @@ packages: dependencies: restore-cursor: 4.0.0 + /cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + dependencies: + chalk: 4.1.2 + highlight.js: 10.7.3 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.0 + dev: false + /cli-spinners@2.9.1: resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} engines: {node: '>=6'} @@ -17869,6 +17910,10 @@ packages: '@babel/runtime': 7.22.5 dev: true + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dev: false + /deasync@0.1.28: resolution: {integrity: sha512-QqLF6inIDwiATrfROIyQtwOQxjZuek13WRYZ7donU5wJPLoP67MnYxA6QtqdvdBy2mMqv5m3UefBVdJjvevOYg==} engines: {node: '>=0.11.0'} @@ -21385,6 +21430,7 @@ packages: minimatch: 9.0.3 minipass: 7.0.3 path-scurry: 1.10.1 + dev: true /glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} @@ -21881,6 +21927,10 @@ packages: engines: {node: '>=8'} dev: true + /highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + dev: false + /highlight.run@7.3.4: resolution: {integrity: sha512-Rgx+gy0tb2tH4hNzxYi/VK5pL/msaAtaQBIy8XsPHLujdSgo5OPWO6vOdjjB7ufM1l/CI2RLmlQ+L2QZOuHBjw==} dev: false @@ -22979,6 +23029,7 @@ packages: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 + dev: true /jackspeak@2.3.6: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} @@ -23679,7 +23730,7 @@ packages: dependencies: config-chain: 1.1.13 editorconfig: 1.0.4 - glob: 10.3.3 + glob: 10.3.10 js-cookie: 3.0.5 nopt: 7.2.0 dev: false @@ -25340,6 +25391,12 @@ packages: engines: {node: '>=10'} hasBin: true + /mkdirp@2.1.6: + resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} + engines: {node: '>=10'} + hasBin: true + dev: false + /mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: @@ -26886,6 +26943,16 @@ packages: engines: {node: '>=6'} dev: true + /parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + dependencies: + parse5: 6.0.1 + dev: false + + /parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + dev: false + /parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} @@ -27021,10 +27088,20 @@ packages: is-reference: 3.0.1 dev: true + /pg-cloudflare@1.1.1: + resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} + requiresBuild: true + dev: false + optional: true + /pg-connection-string@2.5.0: resolution: {integrity: sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==} dev: false + /pg-connection-string@2.6.4: + resolution: {integrity: sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==} + dev: false + /pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} @@ -27038,10 +27115,22 @@ packages: pg: 8.10.0 dev: false + /pg-pool@3.6.2(pg@8.11.5): + resolution: {integrity: sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==} + peerDependencies: + pg: '>=8.0' + dependencies: + pg: 8.11.5 + dev: false + /pg-protocol@1.6.0: resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} dev: false + /pg-protocol@1.6.1: + resolution: {integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==} + dev: false + /pg-types@2.2.0: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} @@ -27071,6 +27160,24 @@ packages: pgpass: 1.0.5 dev: false + /pg@8.11.5: + resolution: {integrity: sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==} + engines: {node: '>= 8.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + dependencies: + pg-connection-string: 2.6.4 + pg-pool: 3.6.2(pg@8.11.5) + pg-protocol: 1.6.1 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.1.1 + dev: false + /pgpass@1.0.5: resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} dependencies: @@ -28682,6 +28789,10 @@ packages: /reflect-metadata@0.1.13: resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + /reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + dev: false + /regenerate-unicode-properties@10.1.0: resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} @@ -29655,6 +29766,14 @@ packages: /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + /sharp@0.32.6: resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} engines: {node: '>=14.15.0'} @@ -31500,7 +31619,6 @@ packages: typescript: 5.3.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true /ts-poet@6.6.0: resolution: {integrity: sha512-4vEH/wkhcjRPFOdBwIh9ItO6jOoumVLRF4aABDX5JSNEubSqwOulihxQPqai+OkuygJm3WYMInxXQX4QwVNMuw==} @@ -32061,6 +32179,85 @@ packages: /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + /typeorm@0.3.20(pg@8.11.5)(ts-node@10.9.2): + resolution: {integrity: sha512-sJ0T08dV5eoZroaq9uPKBoNcGslHBR4E4y+EBHs//SiGbblGe7IeduP/IH4ddCcj0qp3PHwDwGnuvqEAnKlq/Q==} + engines: {node: '>=16.13.0'} + hasBin: true + peerDependencies: + '@google-cloud/spanner': ^5.18.0 + '@sap/hana-client': ^2.12.25 + better-sqlite3: ^7.1.2 || ^8.0.0 || ^9.0.0 + hdb-pool: ^0.1.6 + ioredis: ^5.0.4 + mongodb: ^5.8.0 + mssql: ^9.1.1 || ^10.0.1 + mysql2: ^2.2.5 || ^3.0.1 + oracledb: ^6.3.0 + pg: ^8.5.1 + pg-native: ^3.0.0 + pg-query-stream: ^4.0.0 + redis: ^3.1.1 || ^4.0.0 + sql.js: ^1.4.0 + sqlite3: ^5.0.3 + ts-node: ^10.7.0 + typeorm-aurora-data-api-driver: ^2.0.0 + peerDependenciesMeta: + '@google-cloud/spanner': + optional: true + '@sap/hana-client': + optional: true + better-sqlite3: + optional: true + hdb-pool: + optional: true + ioredis: + optional: true + mongodb: + optional: true + mssql: + optional: true + mysql2: + optional: true + oracledb: + optional: true + pg: + optional: true + pg-native: + optional: true + pg-query-stream: + optional: true + redis: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + ts-node: + optional: true + typeorm-aurora-data-api-driver: + optional: true + dependencies: + '@sqltools/formatter': 1.2.5 + app-root-path: 3.1.0 + buffer: 6.0.3 + chalk: 4.1.2 + cli-highlight: 2.1.11 + dayjs: 1.11.10 + debug: 4.3.4(supports-color@8.1.1) + dotenv: 16.4.5 + glob: 10.3.10 + mkdirp: 2.1.6 + pg: 8.11.5 + reflect-metadata: 0.2.2 + sha.js: 2.4.11 + ts-node: 10.9.2(@types/node@20.4.2)(typescript@5.3.3) + tslib: 2.6.2 + uuid: 9.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + dev: false + /typescript@4.9.4: resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} engines: {node: '>=4.2.0'} diff --git a/references/v3-catalog/package.json b/references/v3-catalog/package.json index 06199b4aa..a6e915e7b 100644 --- a/references/v3-catalog/package.json +++ b/references/v3-catalog/package.json @@ -18,7 +18,10 @@ "execa": "^8.0.1", "msw": "^2.2.1", "openai": "^4.28.0", + "pg": "^8.11.5", + "reflect-metadata": "^0.1.13", "stripe": "^12.14.0", + "typeorm": "^0.3.20", "yt-dlp-wrap": "^2.3.12" }, "devDependencies": { diff --git a/references/v3-catalog/src/handleError.ts b/references/v3-catalog/src/handleError.ts index 1dbec25bb..261f7e589 100644 --- a/references/v3-catalog/src/handleError.ts +++ b/references/v3-catalog/src/handleError.ts @@ -2,6 +2,4 @@ import { logger, type HandleErrorFunction } from "@trigger.dev/sdk/v3"; export const handleError: HandleErrorFunction = async (payload, error, { ctx, retry }) => { logger.log("handling error", { error }); - - return { skipRetrying: true }; }; diff --git a/references/v3-catalog/src/trigger/decorators.ts b/references/v3-catalog/src/trigger/decorators.ts new file mode 100644 index 000000000..fd7e9cf02 --- /dev/null +++ b/references/v3-catalog/src/trigger/decorators.ts @@ -0,0 +1,32 @@ +import { logger, task } from "@trigger.dev/sdk/v3"; +import { AppDataSource, Photo } from "./orm"; + +export const taskThatUsesDecorators = task({ + id: "taskThatUsesDecorators", + run: async (payload: { message: string }) => { + console.log("Creating a photo..."); + + const photo = new Photo(); + photo.id = 2; + photo.name = "Me and Bears"; + photo.description = "I am near polar bears"; + photo.filename = "photo-with-bears.jpg"; + photo.views = 1; + photo.isPublished = true; + + await AppDataSource.manager.save(photo); + + if (Math.random() > 0.5) { + throw new Error("Failed to create photo"); + } + }, + onSuccess: async (payload, output, { ctx }) => { + logger.log("Photo created successfully", { output, ctx }); + }, + onFailure: async (payload, error, { ctx }) => { + logger.error("Failed to create photo", { error, ctx }); + }, + onStart: async (payload, { ctx }) => { + logger.log("Starting to create photo", { ctx }); + }, +}); diff --git a/references/v3-catalog/src/trigger/orm/index.ts b/references/v3-catalog/src/trigger/orm/index.ts new file mode 100644 index 000000000..766822049 --- /dev/null +++ b/references/v3-catalog/src/trigger/orm/index.ts @@ -0,0 +1,36 @@ +import "reflect-metadata"; +import { DataSource } from "typeorm"; +import { Entity, Column, PrimaryColumn } from "typeorm"; + +@Entity() +export class Photo { + @PrimaryColumn() + id!: number; + + @Column() + name!: string; + + @Column() + description!: string; + + @Column() + filename!: string; + + @Column() + views!: number; + + @Column() + isPublished!: boolean; +} + +export const AppDataSource = new DataSource({ + type: "postgres", + host: "localhost", + port: 5432, + username: "postgres", + password: "postgres", + database: "v3-catalog", + entities: [Photo], + synchronize: true, + logging: false, +}); diff --git a/references/v3-catalog/trigger.config.ts b/references/v3-catalog/trigger.config.ts index 2c1bd722d..84cfc710f 100644 --- a/references/v3-catalog/trigger.config.ts +++ b/references/v3-catalog/trigger.config.ts @@ -1,5 +1,6 @@ import type { TriggerConfig } from "@trigger.dev/sdk/v3"; import { OpenAIInstrumentation } from "@traceloop/instrumentation-openai"; +import { AppDataSource } from "@/trigger/orm"; export { handleError } from "./src/handleError"; @@ -21,4 +22,16 @@ export const config: TriggerConfig = { instrumentations: [new OpenAIInstrumentation()], logLevel: "log", enableConsoleLogging: true, + onStart: async (payload, { ctx }) => { + if (ctx.organization.id === "clsylhs0v0002dyx75xx4pod1") { + console.log("Initializing the app data source"); + + await AppDataSource.initialize(); + } + }, + onFailure: async (payload, error, { ctx }) => { + console.log(`Task ${ctx.task.id} failed ${ctx.run.id}`); + + throw error; + }, }; diff --git a/references/v3-catalog/tsconfig.json b/references/v3-catalog/tsconfig.json index 822dd4f3e..11f740215 100644 --- a/references/v3-catalog/tsconfig.json +++ b/references/v3-catalog/tsconfig.json @@ -10,6 +10,8 @@ "@trigger.dev/core/v3/*": ["../../packages/core/src/v3/*"], "@trigger.dev/sdk/v3": ["../../packages/trigger-sdk/src/v3/index"], "@trigger.dev/sdk/v3/*": ["../../packages/trigger-sdk/src/v3/*"] - } + }, + "emitDecoratorMetadata": true, + "experimentalDecorators": true } } From c3f6557eb60c6b7680d2c41c11000f81c5e89757 Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Thu, 25 Apr 2024 11:26:14 +0100 Subject: [PATCH 03/10] Create publish preprelease script --- scripts/publish-prerelease.sh | 36 +++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 scripts/publish-prerelease.sh diff --git a/scripts/publish-prerelease.sh b/scripts/publish-prerelease.sh new file mode 100755 index 000000000..4e1c774a4 --- /dev/null +++ b/scripts/publish-prerelease.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +set -e + +# Use the first argument as version or 'v3-prerelease' if not available +version=${1:-'v3-prerelease'} + +# Ensure git stage is clear +if [[ $(git status --porcelain) ]]; then + echo "Your git status is not clean."; + exit 1; +else + echo "Git status is clean. Proceeding with the script."; +fi + +# Run your commands +rm .changeset/pre.json + +echo "Running: pnpm exec changeset version --snapshot $version" +pnpm exec changeset version --snapshot $version + +echo "Running: pnpm run build --filter \"@trigger.dev/*\" --filter \"trigger.dev\"" +pnpm run build --filter "@trigger.dev/*" --filter "trigger.dev" + +echo "Going to run: pnpm exec changeset publish --no-git-tag --snapshot --tag $version" +read -p "Do you wish to continue? (Y/n): " prompt +if [[ $prompt =~ [yY](es)* ]]; then + pnpm exec changeset publish --no-git-tag --snapshot --tag $version +else + echo "Publish command aborted by the user." + exit 1; +fi + +# If there were no errors, clear the git stage +echo "Commands ran successfully. Clearing the git stage." +git reset --hard HEAD From fae93ac74739e87c59ad67c2f6e3736a33645f19 Mon Sep 17 00:00:00 2001 From: Matt Aitken Date: Fri, 26 Apr 2024 10:44:39 +0100 Subject: [PATCH 04/10] New tasks page (with activity) and multi-user fixes (#1063) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix for โ€œoverriddenโ€ spelling mistake * Make the task function names grey instead of yellow * The task page now shows each task once * Blankline * WIP on activity bars * Correct size of the graphs * Add data for all days, even if there are no runs * Activity graph is working and has a tooltip * No activity label * Got the bar bg working * Activity chart now has a bg * Added a compound id to make the activity graphs appear faster * Improvements to the activity graph * Tried to disable the bg from animating * Added read replica support to the app, using Nickโ€™s code from his batching PR * Added the read replica to BasePresenter * Added the queued and running columns to the Tasks list * Added avg duration column * Included completed but failed runs in the average duration * Get rid of the old useDevEnvironment hook and remove API keys from the projects query * Unified getting environment info to using a function and doing it in presenters * Removed the path from the tasks table * Onboarding for dev for 2nd+ user. Improved environment sorting. * Removed log * Improved the spacing * Enable staging for new v3 projects --- apps/webapp/app/components/SetupCommands.tsx | 36 ++ .../app/components/runs/v3/SpanTitle.tsx | 9 +- .../app/components/runs/v3/TaskPath.tsx | 2 +- .../app/components/runs/v3/TaskRunStatus.tsx | 8 + .../app/components/runs/v3/TaskRunsTable.tsx | 9 +- apps/webapp/app/db.server.ts | 84 ++++- apps/webapp/app/env.server.ts | 1 + apps/webapp/app/hooks/useEnvironments.ts | 17 - apps/webapp/app/models/project.server.ts | 7 +- .../app/models/runtimeEnvironment.server.ts | 36 +- .../app/presenters/ProjectPresenter.server.ts | 23 +- .../presenters/v3/RunListPresenter.server.ts | 10 +- .../presenters/v3/TaskListPresenter.server.ts | 295 +++++++++++++--- .../app/presenters/v3/basePresenter.server.ts | 7 +- .../route.tsx | 8 +- .../route.tsx | 10 +- .../route.tsx | 9 +- .../route.tsx | 11 +- .../route.tsx | 8 +- .../route.tsx | 9 +- .../route.tsx | 44 +++ .../route.tsx | 323 ++++++++++++++---- .../route.tsx | 2 +- .../route.tsx | 2 +- .../route.tsx | 2 +- .../route.tsx | 1 - .../app/services/environmentSort.server.ts | 14 +- apps/webapp/package.json | 2 +- .../migration.sql | 2 + packages/database/prisma/schema.prisma | 2 + pnpm-lock.yaml | 66 ++-- 31 files changed, 796 insertions(+), 263 deletions(-) create mode 100644 packages/database/prisma/migrations/20240425114134_task_run_compound_index_for_project_id_created_at_and_task_identifier/migration.sql diff --git a/apps/webapp/app/components/SetupCommands.tsx b/apps/webapp/app/components/SetupCommands.tsx index fa9ec55d1..8b3bb274c 100644 --- a/apps/webapp/app/components/SetupCommands.tsx +++ b/apps/webapp/app/components/SetupCommands.tsx @@ -206,3 +206,39 @@ export function TriggerDevStepV3() { ); } + +export function TriggerLoginStepV3() { + return ( + + + npm + pnpm + yarn + + + + + + + + + + + + ); +} diff --git a/apps/webapp/app/components/runs/v3/SpanTitle.tsx b/apps/webapp/app/components/runs/v3/SpanTitle.tsx index 8b50047c6..d065131a7 100644 --- a/apps/webapp/app/components/runs/v3/SpanTitle.tsx +++ b/apps/webapp/app/components/runs/v3/SpanTitle.tsx @@ -73,14 +73,7 @@ export function SpanCodePathAccessory({ > {accessory.items.map((item, index) => ( - - {item.text} - + {item.text} {index < accessory.items.length - 1 && ( diff --git a/apps/webapp/app/components/runs/v3/TaskPath.tsx b/apps/webapp/app/components/runs/v3/TaskPath.tsx index 16fe0caac..54fbad9ee 100644 --- a/apps/webapp/app/components/runs/v3/TaskPath.tsx +++ b/apps/webapp/app/components/runs/v3/TaskPath.tsx @@ -27,7 +27,7 @@ type TaskFunctionNameProps = { export function TaskFunctionName({ variant, functionName, className }: TaskFunctionNameProps) { return ( - + {`${functionName}()`} ); diff --git a/apps/webapp/app/components/runs/v3/TaskRunStatus.tsx b/apps/webapp/app/components/runs/v3/TaskRunStatus.tsx index 970df8189..e785ccc4a 100644 --- a/apps/webapp/app/components/runs/v3/TaskRunStatus.tsx +++ b/apps/webapp/app/components/runs/v3/TaskRunStatus.tsx @@ -30,6 +30,14 @@ const taskRunStatusDescriptions: Record = { CRASHED: "Task has crashed and won't be retried", }; +export const QUEUED_STATUSES: TaskRunStatus[] = ["PENDING", "WAITING_FOR_DEPLOY"]; + +export const RUNNING_STATUSES: TaskRunStatus[] = [ + "EXECUTING", + "RETRYING_AFTER_FAILURE", + "WAITING_TO_RESUME", +]; + export function descriptionForTaskRunStatus(status: TaskRunStatus): string { return taskRunStatusDescriptions[status]; } diff --git a/apps/webapp/app/components/runs/v3/TaskRunsTable.tsx b/apps/webapp/app/components/runs/v3/TaskRunsTable.tsx index f53f61569..2502c9f65 100644 --- a/apps/webapp/app/components/runs/v3/TaskRunsTable.tsx +++ b/apps/webapp/app/components/runs/v3/TaskRunsTable.tsx @@ -36,7 +36,6 @@ type RunsTableProps = { showJob?: boolean; runs: RunListItem[]; isLoading?: boolean; - currentUser: User; }; export function TaskRunsTable({ @@ -45,7 +44,6 @@ export function TaskRunsTable({ filters, runs, isLoading = false, - currentUser, }: RunsTableProps) { const organization = useOrganization(); const project = useProject(); @@ -78,15 +76,16 @@ export function TaskRunsTable({ ) : ( runs.map((run) => { const path = v3RunSpanPath(organization, project, run, { spanId: run.spanId }); - const usernameForEnv = - currentUser.id !== run.environment.userId ? run.environment.userName : undefined; return ( #{run.number} {run.taskIdentifier} {run.version ?? "โ€“"} - + diff --git a/apps/webapp/app/db.server.ts b/apps/webapp/app/db.server.ts index 2f429e277..3c36ae83f 100644 --- a/apps/webapp/app/db.server.ts +++ b/apps/webapp/app/db.server.ts @@ -70,23 +70,21 @@ export { Prisma }; export const prisma = singleton("prisma", getClient); +export const $replica: Omit = singleton( + "replica", + () => getReplicaClient() ?? prisma +); + function getClient() { const { DATABASE_URL } = process.env; invariant(typeof DATABASE_URL === "string", "DATABASE_URL env var not set"); - const databaseUrl = new URL(DATABASE_URL); + const databaseUrl = extendQueryParams(DATABASE_URL, { + connection_limit: env.DATABASE_CONNECTION_LIMIT.toString(), + pool_timeout: env.DATABASE_POOL_TIMEOUT.toString(), + }); - // We need to add the connection_limit and pool_timeout query params to the url, in a way that works if the DATABASE_URL already has query params - const query = databaseUrl.searchParams; - query.set("connection_limit", env.DATABASE_CONNECTION_LIMIT.toString()); - query.set("pool_timeout", env.DATABASE_POOL_TIMEOUT.toString()); - databaseUrl.search = query.toString(); - - // Remove the username:password in the url and print that to the console - const urlWithoutCredentials = new URL(databaseUrl.href); - urlWithoutCredentials.password = ""; - - console.log(`๐Ÿ”Œ setting up prisma client to ${urlWithoutCredentials.toString()}`); + console.log(`๐Ÿ”Œ setting up prisma client to ${redactUrlSecrets(databaseUrl)}`); const client = new PrismaClient({ datasources: { @@ -134,6 +132,68 @@ function getClient() { return client; } +function getReplicaClient() { + if (!env.DATABASE_READ_REPLICA_URL) { + console.log(`๐Ÿ”Œ No database replica, using the regular client`); + return; + } + + const replicaUrl = extendQueryParams(env.DATABASE_READ_REPLICA_URL, { + connection_limit: env.DATABASE_CONNECTION_LIMIT.toString(), + pool_timeout: env.DATABASE_POOL_TIMEOUT.toString(), + }); + + console.log(`๐Ÿ”Œ setting up read replica connection to ${redactUrlSecrets(replicaUrl)}`); + + const replicaClient = new PrismaClient({ + datasources: { + db: { + url: replicaUrl.href, + }, + }, + log: [ + { + emit: "stdout", + level: "error", + }, + { + emit: "stdout", + level: "info", + }, + { + emit: "stdout", + level: "warn", + }, + ], + }); + + // connect eagerly + replicaClient.$connect(); + + console.log(`๐Ÿ”Œ read replica connected`); + + return replicaClient; +} + +function extendQueryParams(hrefOrUrl: string | URL, queryParams: Record) { + const url = new URL(hrefOrUrl); + const query = url.searchParams; + + for (const [key, val] of Object.entries(queryParams)) { + query.set(key, val); + } + + url.search = query.toString(); + + return url; +} + +function redactUrlSecrets(hrefOrUrl: string | URL) { + const url = new URL(hrefOrUrl); + url.password = ""; + return url.href; +} + export type { PrismaClient } from "@trigger.dev/database"; export const PrismaErrorSchema = z.object({ diff --git a/apps/webapp/app/env.server.ts b/apps/webapp/app/env.server.ts index a67394c5c..cde3aeb77 100644 --- a/apps/webapp/app/env.server.ts +++ b/apps/webapp/app/env.server.ts @@ -19,6 +19,7 @@ const EnvironmentSchema = z.object({ isValidDatabaseUrl, "DIRECT_URL is invalid, for details please check the additional output above this message." ), + DATABASE_READ_REPLICA_URL: z.string().optional(), SESSION_SECRET: z.string(), MAGIC_LINK_SECRET: z.string(), ENCRYPTION_KEY: z.string(), diff --git a/apps/webapp/app/hooks/useEnvironments.ts b/apps/webapp/app/hooks/useEnvironments.ts index 08ebaf457..ccec438cc 100644 --- a/apps/webapp/app/hooks/useEnvironments.ts +++ b/apps/webapp/app/hooks/useEnvironments.ts @@ -10,20 +10,3 @@ export function useEnvironments(matches?: UIMatch[]) { return project.environments; } - -export function useDevEnvironment(matches?: UIMatch[]) { - const user = useUser(); - const environments = useEnvironments(matches); - if (!environments) return; - - return environments.find( - (environment) => environment.type === "DEVELOPMENT" && environment.userId === user.id - ); -} - -export function useProdEnvironment(matches?: UIMatch[]) { - const environments = useEnvironments(matches); - if (!environments) return; - - return environments.find((environment) => environment.type === "PRODUCTION"); -} diff --git a/apps/webapp/app/models/project.server.ts b/apps/webapp/app/models/project.server.ts index 576d245ed..e565b8394 100644 --- a/apps/webapp/app/models/project.server.ts +++ b/apps/webapp/app/models/project.server.ts @@ -84,12 +84,9 @@ export async function createProject( }, }); - // Create the dev and prod environments + // Create the dev, staging and prod environments await createEnvironment(organization, project, "PRODUCTION"); - - if (project.version === "V2") { - await createEnvironment(organization, project, "STAGING"); - } + await createEnvironment(organization, project, "STAGING"); for (const member of project.organization.members) { await createEnvironment(organization, project, "DEVELOPMENT", member); diff --git a/apps/webapp/app/models/runtimeEnvironment.server.ts b/apps/webapp/app/models/runtimeEnvironment.server.ts index 6c5258024..29a938a1c 100644 --- a/apps/webapp/app/models/runtimeEnvironment.server.ts +++ b/apps/webapp/app/models/runtimeEnvironment.server.ts @@ -1,5 +1,6 @@ -import type { RuntimeEnvironment } from "@trigger.dev/database"; +import type { Prisma, RuntimeEnvironment } from "@trigger.dev/database"; import { prisma } from "~/db.server"; +import { getUsername } from "~/utils/username"; export type { RuntimeEnvironment }; @@ -118,3 +119,36 @@ export async function disconnectSession(environmentId: string) { return session; }); } + +type DisplayableInputEnvironment = Prisma.RuntimeEnvironmentGetPayload<{ + select: { + id: true; + type: true; + orgMember: { + select: { + user: { + select: { + id: true; + name: true; + displayName: true; + }; + }; + }; + }; + }; +}>; + +export function displayableEnvironments( + environment: DisplayableInputEnvironment, + userId: string | undefined +) { + return { + id: environment.id, + type: environment.type, + userName: environment.orgMember + ? environment.orgMember.user.id === userId + ? undefined + : getUsername(environment.orgMember.user) + : undefined, + }; +} diff --git a/apps/webapp/app/presenters/ProjectPresenter.server.ts b/apps/webapp/app/presenters/ProjectPresenter.server.ts index f8e31ea09..7f61825e1 100644 --- a/apps/webapp/app/presenters/ProjectPresenter.server.ts +++ b/apps/webapp/app/presenters/ProjectPresenter.server.ts @@ -1,6 +1,8 @@ import { PrismaClient, prisma } from "~/db.server"; import { Project } from "~/models/project.server"; +import { displayableEnvironments } from "~/models/runtimeEnvironment.server"; import { User } from "~/models/user.server"; +import { sortEnvironments } from "~/services/environmentSort.server"; export class ProjectPresenter { #prismaClient: PrismaClient; @@ -49,7 +51,13 @@ export class ProjectPresenter { type: true, orgMember: { select: { - userId: true, + user: { + select: { + id: true, + name: true, + displayName: true, + }, + }, }, }, apiKey: true, @@ -76,13 +84,12 @@ export class ProjectPresenter { hasInactiveExternalTriggers: project._count.sources > 0, jobCount: project._count.jobs, httpEndpointCount: project._count.httpEndpoints, - environments: project.environments.map((environment) => ({ - id: environment.id, - slug: environment.slug, - type: environment.type, - apiKey: environment.apiKey, - userId: environment.orgMember?.userId, - })), + environments: sortEnvironments( + project.environments.map((environment) => ({ + ...displayableEnvironments(environment, userId), + userId: environment.orgMember?.user.id, + })) + ), }; } } diff --git a/apps/webapp/app/presenters/v3/RunListPresenter.server.ts b/apps/webapp/app/presenters/v3/RunListPresenter.server.ts index d44678b7e..d203d7f28 100644 --- a/apps/webapp/app/presenters/v3/RunListPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/RunListPresenter.server.ts @@ -1,10 +1,12 @@ import { Prisma, TaskRunStatus } from "@trigger.dev/database"; import { Direction } from "~/components/runs/RunStatuses"; import { sqlDatabaseSchema, PrismaClient, prisma } from "~/db.server"; +import { displayableEnvironments } from "~/models/runtimeEnvironment.server"; import { getUsername } from "~/utils/username"; import { CANCELLABLE_STATUSES } from "~/v3/services/cancelTaskRun.server"; type RunListOptions = { + userId?: string; projectSlug: string; //filters tasks?: string[]; @@ -34,6 +36,7 @@ export class RunListPresenter { } public async call({ + userId, projectSlug, tasks, versions, @@ -231,12 +234,7 @@ export class RunListPresenter { attempts: Number(run.attempts), isReplayable: true, isCancellable: CANCELLABLE_STATUSES.includes(run.status), - environment: { - type: environment.type, - slug: environment.slug, - userId: environment.orgMember?.user.id, - userName: getUsername(environment.orgMember?.user), - }, + environment: displayableEnvironments(environment, userId), }; }), pagination: { diff --git a/apps/webapp/app/presenters/v3/TaskListPresenter.server.ts b/apps/webapp/app/presenters/v3/TaskListPresenter.server.ts index 0d019eb84..bf57f1a26 100644 --- a/apps/webapp/app/presenters/v3/TaskListPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/TaskListPresenter.server.ts @@ -1,19 +1,42 @@ -import { Prisma, TaskRunStatus, TaskTriggerSource } from "@trigger.dev/database"; +import { + Prisma, + RuntimeEnvironmentType, + TaskRunStatus, + TaskTriggerSource, +} from "@trigger.dev/database"; import { PrismaClient, prisma, sqlDatabaseSchema } from "~/db.server"; import { Organization } from "~/models/organization.server"; import { Project } from "~/models/project.server"; import { User } from "~/models/user.server"; +import { sortEnvironments } from "~/services/environmentSort.server"; +import { logger } from "~/services/logger.server"; import { getUsername } from "~/utils/username"; +import { BasePresenter } from "./basePresenter.server"; +import { QUEUED_STATUSES, RUNNING_STATUSES } from "~/components/runs/v3/TaskRunStatus"; +import { displayableEnvironments } from "~/models/runtimeEnvironment.server"; -export type Task = Awaited>[0]; +export type Task = { + slug: string; + exportName: string; + filePath: string; + createdAt: Date; + triggerSource: TaskTriggerSource; + environments: { + id: string; + type: RuntimeEnvironmentType; + userName?: string; + }[]; + latestRun?: { + createdAt: Date; + status: TaskRunStatus; + }; +}; -export class TaskListPresenter { - #prismaClient: PrismaClient; +type Return = Awaited>; - constructor(prismaClient: PrismaClient = prisma) { - this.#prismaClient = prismaClient; - } +export type TaskActivity = Awaited[string]; +export class TaskListPresenter extends BasePresenter { public async call({ userId, projectSlug, @@ -23,7 +46,7 @@ export class TaskListPresenter { projectSlug: Project["slug"]; organizationSlug: Organization["slug"]; }) { - const project = await this.#prismaClient.project.findFirstOrThrow({ + const project = await this._replica.project.findFirstOrThrow({ select: { id: true, environments: { @@ -53,7 +76,7 @@ export class TaskListPresenter { }, }); - const tasks = await this.#prismaClient.$queryRaw< + const tasks = await this._replica.$queryRaw< { id: string; slug: string; @@ -64,73 +87,243 @@ export class TaskListPresenter { triggerSource: TaskTriggerSource; }[] >` - SELECT DISTINCT ON(bwt.slug, bwt."runtimeEnvironmentId") - bwt.slug, - bwt.id, - bwt."exportName", - bwt."filePath", - bwt."runtimeEnvironmentId", - bwt."createdAt", - bwt."triggerSource" - FROM - ${sqlDatabaseSchema}."BackgroundWorkerTask" as bwt - WHERE bwt."projectId" = ${project.id} - ORDER BY - bwt.slug, - bwt."runtimeEnvironmentId", - bwt."createdAt" DESC;`; + WITH workers AS ( + SELECT DISTINCT ON ("runtimeEnvironmentId") id, "runtimeEnvironmentId", version + FROM ${sqlDatabaseSchema}."BackgroundWorker" + WHERE "runtimeEnvironmentId" IN (${Prisma.join(project.environments.map((e) => e.id))}) + ORDER BY "runtimeEnvironmentId", "createdAt" DESC + ) + SELECT tasks.id, slug, "filePath", "exportName", "triggerSource", tasks."runtimeEnvironmentId", tasks."createdAt" + FROM workers + JOIN ${sqlDatabaseSchema}."BackgroundWorkerTask" tasks ON tasks."workerId" = workers.id + ORDER BY slug ASC;`; let latestRuns = [] as { createdAt: Date; status: TaskRunStatus; - lockedById: string; + taskIdentifier: string; }[]; if (tasks.length > 0) { - latestRuns = await this.#prismaClient.$queryRaw< + const uniqueTaskSlugs = new Set(tasks.map((t) => t.slug)); + latestRuns = await this._replica.$queryRaw< { createdAt: Date; status: TaskRunStatus; - lockedById: string; + taskIdentifier: string; }[] >` SELECT * FROM ( SELECT "createdAt", "status", - "lockedById", - ROW_NUMBER() OVER (PARTITION BY "lockedById" ORDER BY "updatedAt" DESC) AS rn + "taskIdentifier", + ROW_NUMBER() OVER (PARTITION BY "taskIdentifier" ORDER BY "updatedAt" DESC) AS rn FROM ${sqlDatabaseSchema}."TaskRun" WHERE - "lockedById" IN(${Prisma.join(tasks.map((t) => t.id))}) - ) t - WHERE rn = 1;`; + "taskIdentifier" IN(${Prisma.join(Array.from(uniqueTaskSlugs))}) + AND "projectId" = ${project.id} + ) t + WHERE rn = 1;`; } - return tasks.map((task) => { - const latestRun = latestRuns.find((r) => r.lockedById === task.id); + //group by the task identifier (task.slug). Add the latestRun and add all the environments. + const outputTasks = tasks.reduce((acc, task) => { + const latestRun = latestRuns.find((r) => r.taskIdentifier === task.slug); const environment = project.environments.find((env) => env.id === task.runtimeEnvironmentId); if (!environment) { throw new Error(`Environment not found for TaskRun ${task.id}`); } - return { - ...task, - environment: { - id: environment.id, - type: environment.type, - slug: environment.slug, - userId: environment.orgMember?.user.id, - userName: getUsername(environment.orgMember?.user), - }, - latestRun: latestRun - ? { - createdAt: latestRun.createdAt, - status: latestRun.status, - } - : undefined, - }; - }); + let existingTask = acc.find((t) => t.slug === task.slug); + + if (!existingTask) { + existingTask = { + ...task, + environments: [], + }; + acc.push(existingTask); + } + + existingTask.environments.push(displayableEnvironments(environment, userId)); + + //order the environments + existingTask.environments = sortEnvironments(existingTask.environments); + + existingTask.latestRun = latestRun + ? { + createdAt: latestRun.createdAt, + status: latestRun.status, + } + : undefined; + + return acc; + }, [] as Task[]); + + //then get the activity for each task + const activity = this.#getActivity( + outputTasks.map((t) => t.slug), + project.id + ); + + const runningStats = this.#getRunningStats( + outputTasks.map((t) => t.slug), + project.id + ); + + const durations = this.#getAverageDurations( + outputTasks.map((t) => t.slug), + project.id + ); + + const userEnvironment = project.environments.find((e) => e.orgMember?.user.id === userId); + const userHasTasks = userEnvironment + ? outputTasks.some((t) => t.environments.some((e) => e.id === userEnvironment.id)) + : false; + + return { tasks: outputTasks, userHasTasks, activity, runningStats, durations }; + } + + async #getActivity(tasks: string[], projectId: string) { + const activity = await this._replica.$queryRaw< + { + taskIdentifier: string; + status: TaskRunStatus; + day: Date; + count: BigInt; + }[] + >` + SELECT + tr."taskIdentifier", + tr."status", + DATE(tr."createdAt") as day, + COUNT(*) + FROM + ${sqlDatabaseSchema}."TaskRun" as tr + WHERE + tr."taskIdentifier" IN (${Prisma.join(tasks)}) + AND tr."projectId" = ${projectId} + AND tr."createdAt" >= (current_date - interval '6 days') + GROUP BY + tr."taskIdentifier", + tr."status", + day + ORDER BY + tr."taskIdentifier" ASC, + day ASC, + tr."status" ASC;`; + + //today with no time + const today = new Date(); + today.setUTCHours(0, 0, 0, 0); + + return activity.reduce((acc, a) => { + let existingTask = acc[a.taskIdentifier]; + + if (!existingTask) { + existingTask = []; + //populate the array with the past 7 days + for (let i = 6; i >= 0; i--) { + const day = new Date(today); + day.setUTCDate(today.getDate() - i); + day.setUTCHours(0, 0, 0, 0); + + existingTask.push({ + day: day.toISOString(), + [TaskRunStatus.COMPLETED_SUCCESSFULLY]: 0, + } as { day: string } & Record); + } + + acc[a.taskIdentifier] = existingTask; + } + + const dayString = a.day.toISOString(); + const day = existingTask.find((d) => d.day === dayString); + + if (!day) { + logger.warn(`Day not found for TaskRun`, { + day: dayString, + taskIdentifier: a.taskIdentifier, + existingTask, + }); + return acc; + } + + day[a.status] = Number(a.count); + + return acc; + }, {} as Record)[]>); + } + + async #getRunningStats(tasks: string[], projectId: string) { + const statuses = await this._replica.$queryRaw< + { + taskIdentifier: string; + status: TaskRunStatus; + count: BigInt; + }[] + >` + SELECT + tr."taskIdentifier", + tr."status", + COUNT(*) + FROM + ${sqlDatabaseSchema}."TaskRun" as tr + WHERE + tr."taskIdentifier" IN (${Prisma.join(tasks)}) + AND tr."projectId" = ${projectId} + AND tr."status" IN ('PENDING', 'WAITING_FOR_DEPLOY', 'EXECUTING', 'RETRYING_AFTER_FAILURE', 'WAITING_TO_RESUME') + GROUP BY + tr."taskIdentifier", + tr."status" + ORDER BY + tr."taskIdentifier" ASC, + tr."status" ASC;`; + + return statuses.reduce((acc, a) => { + let existingTask = acc[a.taskIdentifier]; + + if (!existingTask) { + existingTask = { + queued: 0, + running: 0, + }; + + acc[a.taskIdentifier] = existingTask; + } + + if (QUEUED_STATUSES.includes(a.status)) { + existingTask.queued += Number(a.count); + } + if (RUNNING_STATUSES.includes(a.status)) { + existingTask.running += Number(a.count); + } + + return acc; + }, {} as Record); + } + + async #getAverageDurations(tasks: string[], projectId: string) { + const durations = await this._replica.$queryRaw< + { + taskIdentifier: string; + duration: Number; + }[] + >` + SELECT + tr."taskIdentifier", + AVG(EXTRACT(EPOCH FROM (tr."updatedAt" - tr."lockedAt"))) as duration + FROM + ${sqlDatabaseSchema}."TaskRun" as tr + WHERE + tr."taskIdentifier" IN (${Prisma.join(tasks)}) + AND tr."projectId" = ${projectId} + AND tr."createdAt" >= (current_date - interval '6 days') + AND tr."status" IN ('COMPLETED_SUCCESSFULLY', 'COMPLETED_WITH_ERRORS') + GROUP BY + tr."taskIdentifier";`; + + return Object.fromEntries(durations.map((s) => [s.taskIdentifier, Number(s.duration)])); } } diff --git a/apps/webapp/app/presenters/v3/basePresenter.server.ts b/apps/webapp/app/presenters/v3/basePresenter.server.ts index 1820494dc..39298c9da 100644 --- a/apps/webapp/app/presenters/v3/basePresenter.server.ts +++ b/apps/webapp/app/presenters/v3/basePresenter.server.ts @@ -1,10 +1,13 @@ import { Span, SpanKind } from "@opentelemetry/api"; -import { PrismaClientOrTransaction, prisma } from "~/db.server"; +import { $replica, PrismaClientOrTransaction, prisma } from "~/db.server"; import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { attributesFromAuthenticatedEnv, tracer } from "../../v3/tracer.server"; export abstract class BasePresenter { - constructor(protected readonly _prisma: PrismaClientOrTransaction = prisma) {} + constructor( + protected readonly _prisma: PrismaClientOrTransaction = prisma, + protected readonly _replica: PrismaClientOrTransaction = $replica + ) {} protected async traceWithEnv( trace: string, diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.astro/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.astro/route.tsx index c07ca0e46..f2aa69f43 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.astro/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.astro/route.tsx @@ -1,5 +1,4 @@ import { ChatBubbleLeftRightIcon, Squares2X2Icon } from "@heroicons/react/20/solid"; -import invariant from "tiny-invariant"; import { AstroLogo } from "~/assets/logos/AstroLogo"; import { Feedback } from "~/components/Feedback"; import { InitCommand, RunDevCommand, TriggerDevStep } from "~/components/SetupCommands"; @@ -11,18 +10,17 @@ import { Header1 } from "~/components/primitives/Headers"; import { Paragraph } from "~/components/primitives/Paragraph"; import { StepNumber } from "~/components/primitives/StepNumber"; import { useAppOrigin } from "~/hooks/useAppOrigin"; -import { useDevEnvironment } from "~/hooks/useEnvironments"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; import { useProjectSetupComplete } from "~/hooks/useProjectSetupComplete"; import { projectSetupPath } from "~/utils/pathBuilder"; +import { useV2OnboardingApiKey } from "../_app.orgs.$organizationSlug.projects.$projectParam.setup/route"; export default function SetUpAstro() { const organization = useOrganization(); const project = useProject(); useProjectSetupComplete(); - const devEnvironment = useDevEnvironment(); - invariant(devEnvironment, "Dev environment must be defined"); + const { apiKey } = useV2OnboardingApiKey(); const appOrigin = useAppOrigin(); return ( @@ -67,7 +65,7 @@ export default function SetUpAstro() { title="Run the CLI 'init' command in an existing Astro project" /> - + Youโ€™ll notice a new folder in your project called 'jobs'. Weโ€™ve added a very simple diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.express/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.express/route.tsx index 1950d078b..ede841fdd 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.express/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.express/route.tsx @@ -1,5 +1,4 @@ import { ChatBubbleLeftRightIcon, Squares2X2Icon } from "@heroicons/react/20/solid"; -import invariant from "tiny-invariant"; import { ExpressLogo } from "~/assets/logos/ExpressLogo"; import { Feedback } from "~/components/Feedback"; import { RunDevCommand, TriggerDevStep } from "~/components/SetupCommands"; @@ -11,20 +10,17 @@ import { ClipboardField } from "~/components/primitives/ClipboardField"; import { Header1 } from "~/components/primitives/Headers"; import { Paragraph } from "~/components/primitives/Paragraph"; import { StepNumber } from "~/components/primitives/StepNumber"; -import { useAppOrigin } from "~/hooks/useAppOrigin"; -import { useDevEnvironment } from "~/hooks/useEnvironments"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; import { useProjectSetupComplete } from "~/hooks/useProjectSetupComplete"; import { projectSetupPath } from "~/utils/pathBuilder"; +import { useV2OnboardingApiKey } from "../_app.orgs.$organizationSlug.projects.$projectParam.setup/route"; export default function Page() { const organization = useOrganization(); const project = useProject(); useProjectSetupComplete(); - const devEnvironment = useDevEnvironment(); - invariant(devEnvironment, "Dev environment must be defined"); - const appOrigin = useAppOrigin(); + const { apiKey } = useV2OnboardingApiKey(); return (
@@ -73,7 +69,7 @@ export default function Page() { Server} /> diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.nestjs/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.nestjs/route.tsx index 17d4c630c..e4929d27d 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.nestjs/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.nestjs/route.tsx @@ -1,5 +1,4 @@ import { ChatBubbleLeftRightIcon, Squares2X2Icon } from "@heroicons/react/20/solid"; -import invariant from "tiny-invariant"; import { NestjsLogo } from "~/assets/logos/NestjsLogo"; import { Feedback } from "~/components/Feedback"; import { TriggerDevStep } from "~/components/SetupCommands"; @@ -11,12 +10,12 @@ import { Header1 } from "~/components/primitives/Headers"; import { Paragraph } from "~/components/primitives/Paragraph"; import { StepNumber } from "~/components/primitives/StepNumber"; import { useAppOrigin } from "~/hooks/useAppOrigin"; -import { useDevEnvironment } from "~/hooks/useEnvironments"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; import { useProjectSetupComplete } from "~/hooks/useProjectSetupComplete"; import { projectSetupPath } from "~/utils/pathBuilder"; import { CodeBlock } from "../../components/code/CodeBlock"; +import { useV2OnboardingApiKey } from "../_app.orgs.$organizationSlug.projects.$projectParam.setup/route"; const AppModuleCode = ` import { Module } from '@nestjs/common'; @@ -114,11 +113,9 @@ export default function SetupNestJS() { const organization = useOrganization(); const project = useProject(); useProjectSetupComplete(); - const devEnvironment = useDevEnvironment(); + const { apiKey } = useV2OnboardingApiKey(); const appOrigin = useAppOrigin(); - invariant(devEnvironment, "devEnvironment is required"); - return (
@@ -161,7 +158,7 @@ export default function SetupNestJS() { diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.nextjs/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.nextjs/route.tsx index e5de3efa0..c01c599b6 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.nextjs/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.nextjs/route.tsx @@ -1,6 +1,5 @@ import { ChatBubbleLeftRightIcon, Squares2X2Icon } from "@heroicons/react/20/solid"; import { useState } from "react"; -import invariant from "tiny-invariant"; import { NextjsLogo } from "~/assets/logos/NextjsLogo"; import { Feedback } from "~/components/Feedback"; import { InitCommand, RunDevCommand, TriggerDevStep } from "~/components/SetupCommands"; @@ -21,11 +20,11 @@ import { Paragraph } from "~/components/primitives/Paragraph"; import { RadioGroup, RadioGroupItem } from "~/components/primitives/RadioButton"; import { StepNumber } from "~/components/primitives/StepNumber"; import { useAppOrigin } from "~/hooks/useAppOrigin"; -import { useDevEnvironment } from "~/hooks/useEnvironments"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; import { useProjectSetupComplete } from "~/hooks/useProjectSetupComplete"; import { projectSetupPath } from "~/utils/pathBuilder"; +import { useV2OnboardingApiKey } from "../_app.orgs.$organizationSlug.projects.$projectParam.setup/route"; type SelectionChoices = "use-existing-project" | "create-new-next-app"; @@ -33,12 +32,10 @@ export default function SetupNextjs() { const organization = useOrganization(); const project = useProject(); useProjectSetupComplete(); - const devEnvironment = useDevEnvironment(); + const { apiKey } = useV2OnboardingApiKey(); const appOrigin = useAppOrigin(); const [selectedValue, setSelectedValue] = useState(null); - invariant(devEnvironment, "devEnvironment is required"); - return (
@@ -152,7 +149,7 @@ export default function SetupNextjs() { title="Run the CLI 'init' command in your new Next.js project" /> - + Youโ€™ll notice a new folder in your project called 'jobs'. Weโ€™ve added a very simple example Job in examples.ts{" "} @@ -179,7 +176,7 @@ export default function SetupNextjs() { title="Run the CLI 'init' command in an existing Next.js project" /> - + Youโ€™ll notice a new folder in your project called 'jobs'. Weโ€™ve added a very diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.remix/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.remix/route.tsx index f1f20e7fb..620a09c4c 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.remix/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.remix/route.tsx @@ -1,5 +1,4 @@ import { ChatBubbleLeftRightIcon, Squares2X2Icon } from "@heroicons/react/20/solid"; -import invariant from "tiny-invariant"; import { RemixLogo } from "~/assets/logos/RemixLogo"; import { Feedback } from "~/components/Feedback"; import { InitCommand, RunDevCommand, TriggerDevStep } from "~/components/SetupCommands"; @@ -11,18 +10,17 @@ import { Header1 } from "~/components/primitives/Headers"; import { Paragraph } from "~/components/primitives/Paragraph"; import { StepNumber } from "~/components/primitives/StepNumber"; import { useAppOrigin } from "~/hooks/useAppOrigin"; -import { useDevEnvironment } from "~/hooks/useEnvironments"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; import { useProjectSetupComplete } from "~/hooks/useProjectSetupComplete"; import { projectSetupPath } from "~/utils/pathBuilder"; +import { useV2OnboardingApiKey } from "../_app.orgs.$organizationSlug.projects.$projectParam.setup/route"; export default function SetUpRemix() { const organization = useOrganization(); const project = useProject(); useProjectSetupComplete(); - const devEnvironment = useDevEnvironment(); - invariant(devEnvironment, "Dev environment must be defined"); + const { apiKey } = useV2OnboardingApiKey(); const appOrigin = useAppOrigin(); return ( @@ -67,7 +65,7 @@ export default function SetUpRemix() { title="Run the CLI 'init' command in an existing Remix project" /> - + Youโ€™ll notice a new folder in your project called 'jobs'. Weโ€™ve added a very simple diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.sveltekit/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.sveltekit/route.tsx index 88eeafaa5..47da85ab7 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.sveltekit/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup.sveltekit/route.tsx @@ -1,5 +1,4 @@ import { ChatBubbleLeftRightIcon, Squares2X2Icon } from "@heroicons/react/20/solid"; -import invariant from "tiny-invariant"; import { SvelteKitLogo } from "~/assets/logos/SveltekitLogo"; import { Feedback } from "~/components/Feedback"; import { RunDevCommand, TriggerDevStep } from "~/components/SetupCommands"; @@ -11,18 +10,18 @@ import { ClipboardField } from "~/components/primitives/ClipboardField"; import { Header1 } from "~/components/primitives/Headers"; import { Paragraph } from "~/components/primitives/Paragraph"; import { StepNumber } from "~/components/primitives/StepNumber"; -import { useDevEnvironment } from "~/hooks/useEnvironments"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; import { useProjectSetupComplete } from "~/hooks/useProjectSetupComplete"; import { projectSetupPath } from "~/utils/pathBuilder"; +import { useV2OnboardingApiKey } from "../_app.orgs.$organizationSlug.projects.$projectParam.setup/route"; export default function SetUpSveltekit() { const organization = useOrganization(); const project = useProject(); useProjectSetupComplete(); - const devEnvironment = useDevEnvironment(); - invariant(devEnvironment, "Dev environment must be defined"); + const { apiKey } = useV2OnboardingApiKey(); + return (
@@ -70,7 +69,7 @@ export default function SetUpSveltekit() { Server} /> diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup/route.tsx index 23c24e589..031e790ac 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.setup/route.tsx @@ -1,4 +1,48 @@ import { Outlet } from "@remix-run/react"; +import { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { typedjson } from "remix-typedjson"; +import { prisma } from "~/db.server"; +import { useTypedMatchData, useTypedMatchesData } from "~/hooks/useTypedMatchData"; +import { requireUserId } from "~/services/session.server"; +import { ProjectParamSchema } from "~/utils/pathBuilder"; + +export const loader = async ({ request, params }: LoaderFunctionArgs) => { + const userId = await requireUserId(request); + const { organizationSlug, projectParam } = ProjectParamSchema.parse(params); + + const environment = await prisma.runtimeEnvironment.findFirst({ + where: { + organization: { + slug: organizationSlug, + }, + project: { + slug: projectParam, + }, + orgMember: { + userId, + }, + }, + }); + + if (!environment) { + throw new Response("Not Found", { status: 404 }); + } + + return typedjson({ + apiKey: environment.apiKey, + }); +}; + +export function useV2OnboardingApiKey() { + const routeMatch = useTypedMatchesData({ + id: "routes/_app.orgs.$organizationSlug.projects.$projectParam.setup", + }); + if (!routeMatch) { + throw new Error("Route match not found"); + } + + return routeMatch; +} export default function Page() { return ( diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam._index/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam._index/route.tsx index a7f2cac49..7a0753de3 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam._index/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam._index/route.tsx @@ -1,21 +1,24 @@ -import { ChatBubbleLeftRightIcon } from "@heroicons/react/20/solid"; +import { ChatBubbleLeftRightIcon, ChevronDownIcon, ChevronUpIcon } from "@heroicons/react/20/solid"; import { useRevalidator } from "@remix-run/react"; import { LoaderFunctionArgs } from "@remix-run/server-runtime"; -import { TaskRunAttemptStatus, TaskRunStatus } from "@trigger.dev/database"; -import { useEffect } from "react"; -import { typedjson, useTypedLoaderData } from "remix-typedjson"; -import invariant from "tiny-invariant"; +import { formatDuration, formatDurationMilliseconds } from "@trigger.dev/core/v3"; +import { TaskRunStatus } from "@trigger.dev/database"; +import { Fragment, Suspense, useEffect, useState } from "react"; +import { Bar, BarChart, ResponsiveContainer, Tooltip, TooltipProps, XAxis, YAxis } from "recharts"; +import { TypedAwait, typeddefer, useTypedLoaderData } from "remix-typedjson"; import { Feedback } from "~/components/Feedback"; -import { InitCommandV3, TriggerDevStepV3 } from "~/components/SetupCommands"; +import { InitCommandV3, TriggerDevStepV3, TriggerLoginStepV3 } from "~/components/SetupCommands"; import { StepContentContainer } from "~/components/StepContentContainer"; import { InlineCode } from "~/components/code/InlineCode"; import { EnvironmentLabel } from "~/components/environments/EnvironmentLabel"; import { MainCenteredContainer, PageBody, PageContainer } from "~/components/layout/AppLayout"; import { Button } from "~/components/primitives/Buttons"; -import { DateTime } from "~/components/primitives/DateTime"; -import { Header1 } from "~/components/primitives/Headers"; +import { Callout } from "~/components/primitives/Callout"; +import { DateTime, formatDateTime } from "~/components/primitives/DateTime"; +import { Header1, Header2, Header3 } from "~/components/primitives/Headers"; import { NavBar, PageTitle } from "~/components/primitives/PageHeader"; import { Paragraph } from "~/components/primitives/Paragraph"; +import { Spinner } from "~/components/primitives/Spinner"; import { StepNumber } from "~/components/primitives/StepNumber"; import { Table, @@ -28,18 +31,22 @@ import { TableRow, } from "~/components/primitives/Table"; import { SimpleTooltip } from "~/components/primitives/Tooltip"; -import { TaskFunctionName, TaskPath } from "~/components/runs/v3/TaskPath"; -import { TaskRunStatusCombo } from "~/components/runs/v3/TaskRunStatus"; +import { TaskFunctionName } from "~/components/runs/v3/TaskPath"; +import { + TaskRunStatusCombo, + TaskRunStatusIcon, + runStatusClassNameColor, + runStatusTitle, +} from "~/components/runs/v3/TaskRunStatus"; import { TaskTriggerSourceIcon, taskTriggerSourceDescription, } from "~/components/runs/v3/TaskTriggerSource"; -import { useDevEnvironment } from "~/hooks/useEnvironments"; import { useEventSource } from "~/hooks/useEventSource"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; import { useUser } from "~/hooks/useUser"; -import { TaskListPresenter } from "~/presenters/v3/TaskListPresenter.server"; +import { TaskActivity, TaskListPresenter } from "~/presenters/v3/TaskListPresenter.server"; import { requireUserId } from "~/services/session.server"; import { cn } from "~/utils/cn"; import { ProjectParamSchema, v3RunsPath, v3TasksStreamingPath } from "~/utils/pathBuilder"; @@ -50,14 +57,18 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => { try { const presenter = new TaskListPresenter(); - const tasks = await presenter.call({ + const { tasks, userHasTasks, activity, runningStats, durations } = await presenter.call({ userId, organizationSlug, projectSlug: projectParam, }); - return typedjson({ + return typeddefer({ tasks, + userHasTasks, + activity, + runningStats, + durations, }); } catch (error) { console.error(error); @@ -71,8 +82,8 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => { export default function Page() { const organization = useOrganization(); const project = useProject(); - const user = useUser(); - const { tasks } = useTypedLoaderData(); + const { tasks, userHasTasks, activity, runningStats, durations } = + useTypedLoaderData(); const hasTasks = tasks.length > 0; //live reload the page when the tasks change @@ -97,35 +108,30 @@ export default function Page() {
{hasTasks ? ( -
+
+ {!userHasTasks && } Task ID Task - Path - Environment + Running + Queued + Activity (7d) + Avg. duration + Environments Last run - -
Last run status
-
- Created at Go to page
{tasks.length > 0 ? ( tasks.map((task) => { - const usernameForEnv = - user.id !== task.environment.userId - ? task.environment.userName - : undefined; const path = v3RunsPath(organization, project, { tasks: [task.slug], - environments: [task.environment.id], }); return ( - +
{task.slug}
- + - {task.filePath} + + + + + } + > + + {(data) => { + const taskData = data[task.slug]; + return taskData?.running ?? "0"; + }} + + + + + }> + + {(data) => { + const taskData = data[task.slug]; + return taskData?.queued ?? "0"; + }} + + + + + }> + + {(data) => { + const taskData = data[task.slug]; + return ( + <> + {taskData !== undefined ? ( +
+ +
+ ) : ( + + )} + + ); + }} +
+
+
+ + }> + + {(data) => { + const taskData = data[task.slug]; + return taskData + ? formatDurationMilliseconds(taskData * 1000, { + style: "short", + }) + : "โ€“"; + }} + + + - +
+ {task.environments.map((environment) => ( + + ))} +
- {task.latestRun ? (
+
) : ( "Never run" )}
- - {task.latestRun ? ( - - ) : ( - "โ€“" - )} - - - -
); @@ -188,7 +251,9 @@ export default function Page() {
) : ( - + + + )}
@@ -197,19 +262,9 @@ export default function Page() { ); } -function classForTaskRunStatus(status: TaskRunStatus) { - switch (status) { - case "SYSTEM_FAILURE": - case "COMPLETED_WITH_ERRORS": - return "text-error"; - default: - return ""; - } -} - function CreateTaskInstructions() { return ( - +
Get setup in 3 minutes
@@ -240,6 +295,150 @@ function CreateTaskInstructions() { This page will automatically refresh. - +
); } + +function UserHasNoTasks() { + const [open, setOpen] = useState(false); + + return ( + setOpen((o) => !o)} + > + {open ? "Close" : "Setup your dev environment"} + + } + > + {open ? ( +
+ Get setup in 3 minutes + + + + You'll need to open a terminal at the root of your project. + + + + + + + + + + + + This page will automatically refresh. + +
+ ) : ( + "Your DEV environment isn't setup yet." + )} +
+ ); +} + +function TaskActivityGraph({ activity }: { activity: TaskActivity }) { + return ( + + + } + allowEscapeViewBox={{ x: true, y: true }} + wrapperStyle={{ zIndex: 1000 }} + /> + {/* The background */} + + + + + + + + + + + + + + + + ); +} + +function TaskActivityBlankState() { + return ( +
+ {[...Array(7)].map((_, i) => ( +
+ ))} +
+ ); +} + +const CustomTooltip = ({ active, payload, label }: TooltipProps) => { + if (active && payload) { + const items = payload.map((p) => ({ + status: p.dataKey as TaskRunStatus, + value: p.value, + })); + const title = payload[0].payload.day as string; + const formattedDate = formatDateTime(new Date(title), "UTC", [], false, false); + return ( +
+ {formattedDate} +
+ {items.map((item) => ( + + +

{item.value}

+
+ ))} +
+
+ ); + } + + return null; +}; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.environment-variables.new/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.environment-variables.new/route.tsx index b9fc82245..2502c4586 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.environment-variables.new/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.environment-variables.new/route.tsx @@ -208,7 +208,7 @@ export default function Page() { - Dev environment variables specified here will be overriden by ones in your{" "} + Dev environment variables specified here will be overridden by ones in your{" "} .env file when running locally. diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.environment-variables/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.environment-variables/route.tsx index 1f1866cbd..ef9712496 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.environment-variables/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.environment-variables/route.tsx @@ -247,7 +247,7 @@ export default function Page() { - Dev environment variables specified here will be overriden by ones in your .env file + Dev environment variables specified here will be overridden by ones in your .env file when running locally.
diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.runs._index/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.runs._index/route.tsx index 4e0fd2001..976390e46 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.runs._index/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.runs._index/route.tsx @@ -34,6 +34,7 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => { const presenter = new RunListPresenter(); const list = await presenter.call({ + userId, projectSlug: projectParam, tasks, versions, @@ -88,7 +89,6 @@ export default function Page() { filters={list.filters} runs={list.runs} isLoading={isLoading} - currentUser={user} />
diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.schedules.$scheduleParam/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.schedules.$scheduleParam/route.tsx index 4de4deafd..760cbe783 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.schedules.$scheduleParam/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.schedules.$scheduleParam/route.tsx @@ -247,7 +247,6 @@ export default function Page() { }} runs={schedule.runs} isLoading={false} - currentUser={user} />
diff --git a/apps/webapp/app/services/environmentSort.server.ts b/apps/webapp/app/services/environmentSort.server.ts index 71dab2703..a1e22d70f 100644 --- a/apps/webapp/app/services/environmentSort.server.ts +++ b/apps/webapp/app/services/environmentSort.server.ts @@ -1,4 +1,5 @@ import { RuntimeEnvironmentType } from "@trigger.dev/database"; +import { logger } from "./logger.server"; const environmentSortOrder: RuntimeEnvironmentType[] = [ "DEVELOPMENT", @@ -9,12 +10,23 @@ const environmentSortOrder: RuntimeEnvironmentType[] = [ type SortType = { type: RuntimeEnvironmentType; + userName?: string | null; }; export function sortEnvironments(environments: T[]): T[] { return environments.sort((a, b) => { const aIndex = environmentSortOrder.indexOf(a.type); const bIndex = environmentSortOrder.indexOf(b.type); - return aIndex - bIndex; + + const difference = aIndex - bIndex; + + if (difference === 0) { + //same environment so sort by name + const usernameA = a.userName || ""; + const usernameB = b.userName || ""; + return usernameA.localeCompare(usernameB); + } + + return difference; }); } diff --git a/apps/webapp/package.json b/apps/webapp/package.json index 0fefac87e..3f1f54e1e 100644 --- a/apps/webapp/package.json +++ b/apps/webapp/package.json @@ -139,7 +139,7 @@ "react-resizable-panels": "^2.0.9", "react-stately": "^3.29.1", "react-use": "^17.4.0", - "recharts": "^2.8.0", + "recharts": "^2.12.6", "remix-auth": "^3.6.0", "remix-auth-email-link": "2.0.2", "remix-auth-github": "^1.6.0", diff --git a/packages/database/prisma/migrations/20240425114134_task_run_compound_index_for_project_id_created_at_and_task_identifier/migration.sql b/packages/database/prisma/migrations/20240425114134_task_run_compound_index_for_project_id_created_at_and_task_identifier/migration.sql new file mode 100644 index 000000000..500138b5e --- /dev/null +++ b/packages/database/prisma/migrations/20240425114134_task_run_compound_index_for_project_id_created_at_and_task_identifier/migration.sql @@ -0,0 +1,2 @@ +-- CreateIndex +CREATE INDEX "TaskRun_projectId_createdAt_taskIdentifier_idx" ON "TaskRun"("projectId", "createdAt", "taskIdentifier"); diff --git a/packages/database/prisma/schema.prisma b/packages/database/prisma/schema.prisma index 1036562c5..1afa7b1c3 100644 --- a/packages/database/prisma/schema.prisma +++ b/packages/database/prisma/schema.prisma @@ -1636,6 +1636,8 @@ model TaskRun { scheduleId String? @@unique([runtimeEnvironmentId, idempotencyKey]) + // Task activity graph + @@index([projectId, createdAt, taskIdentifier]) } enum TaskRunStatus { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1e5d12889..0fcd667aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -535,8 +535,8 @@ importers: specifier: ^17.4.0 version: 17.4.0(react-dom@18.2.0)(react@18.2.0) recharts: - specifier: ^2.8.0 - version: 2.8.0(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) + specifier: ^2.12.6 + version: 2.12.6(react-dom@18.2.0)(react@18.2.0) remix-auth: specifier: ^3.6.0 version: 3.6.0(@remix-run/react@2.1.0)(@remix-run/server-runtime@2.1.0) @@ -17070,10 +17070,6 @@ packages: typescript: 5.2.2 dev: false - /classnames@2.3.2: - resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} - dev: false - /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -18300,10 +18296,11 @@ packages: resolution: {integrity: sha512-8o+oVqLQZoruQPYy3uAAQtc6YbtSiRq5aPJBhJ82YTJRHvI6ofhYAkC81WmjFTnfUbqg6T3aCglIpU9p/5e7Cw==} dev: true - /dom-helpers@3.4.0: - resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==} + /dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: '@babel/runtime': 7.22.5 + csstype: 3.1.1 dev: false /dom-serializer@2.0.0: @@ -28359,10 +28356,6 @@ packages: /react-is@18.1.0: resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} - /react-lifecycles-compat@3.0.4: - resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} - dev: false - /react-query@3.39.3(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==} peerDependencies: @@ -28443,17 +28436,6 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /react-resize-detector@8.1.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-S7szxlaIuiy5UqLhLL1KY3aoyGHbZzsTpYal9eYMwCyKqoqoVLCmIgAgNyIM1FhnP2KyBygASJxdhejrzjMb+w==} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 - dependencies: - lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /react-router-dom@6.14.2(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==} engines: {node: '>=14'} @@ -28498,18 +28480,17 @@ packages: '@remix-run/router': 1.10.0 react: 18.2.0 - /react-smooth@2.0.4(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-OkFsrrMBTvQUwEJthE1KXSOj79z57yvEWeFefeXPib+RmQEI9B1Ub1PgzlzzUyBOvl/TjXt5nF2hmD4NsgAh8A==} + /react-smooth@4.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==} peerDependencies: - prop-types: ^15.6.0 - react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: fast-equals: 5.0.1 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-transition-group: 2.9.0(react-dom@18.2.0)(react@18.2.0) + react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false /react-stately@3.29.1(react@18.2.0): @@ -28560,18 +28541,18 @@ packages: tslib: 2.6.2 dev: false - /react-transition-group@2.9.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==} + /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} peerDependencies: - react: '>=15.0.0' - react-dom: '>=15.0.0' + react: '>=16.6.0' + react-dom: '>=16.6.0' dependencies: - dom-helpers: 3.4.0 + '@babel/runtime': 7.22.5 + dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-lifecycles-compat: 3.0.4 dev: false /react-universal-interface@0.6.2(react@18.2.0)(tslib@2.5.0): @@ -28731,25 +28712,22 @@ packages: decimal.js-light: 2.5.1 dev: false - /recharts@2.8.0(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-nciXqQDh3aW8abhwUlA4EBOBusRHLNiKHfpRZiG/yjups1x+auHb2zWPuEcTn/IMiN47vVMMuF8Sr+vcQJtsmw==} - engines: {node: '>=12'} + /recharts@2.12.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-D+7j9WI+D0NHauah3fKHuNNcRK8bOypPW7os1DERinogGBGaHI7i6tQKJ0aUF3JXyBZ63dyfKIW2WTOPJDxJ8w==} + engines: {node: '>=14'} peerDependencies: - prop-types: ^15.6.0 react: ^16.0.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: - classnames: 2.3.2 + clsx: 2.0.0 eventemitter3: 4.0.7 lodash: 4.17.21 - prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-is: 16.13.1 - react-resize-detector: 8.1.0(react-dom@18.2.0)(react@18.2.0) - react-smooth: 2.0.4(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) + react-smooth: 4.0.1(react-dom@18.2.0)(react@18.2.0) recharts-scale: 0.4.5 - reduce-css-calc: 2.1.8 + tiny-invariant: 1.3.1 victory-vendor: 36.6.11 dev: false From de188a22c5a1bbec6aee490fbce9f11fd61eac2e Mon Sep 17 00:00:00 2001 From: Matt Aitken Date: Fri, 26 Apr 2024 11:29:20 +0100 Subject: [PATCH 05/10] Option for users to opt-in to a staging environment (#1064) --- apps/webapp/app/models/organization.server.ts | 4 +- apps/webapp/app/models/project.server.ts | 7 +- .../presenters/v3/ApiKeysPresenter.server.ts | 1 + .../route.tsx | 101 ++++++++++++++++-- 4 files changed, 103 insertions(+), 10 deletions(-) diff --git a/apps/webapp/app/models/organization.server.ts b/apps/webapp/app/models/organization.server.ts index b773617c6..e2dd1d87d 100644 --- a/apps/webapp/app/models/organization.server.ts +++ b/apps/webapp/app/models/organization.server.ts @@ -87,8 +87,8 @@ export async function createOrganization( } export async function createEnvironment( - organization: Organization, - project: Project, + organization: Pick, + project: Pick, type: RuntimeEnvironment["type"], member?: OrgMember, prismaClient: PrismaClientOrTransaction = prisma diff --git a/apps/webapp/app/models/project.server.ts b/apps/webapp/app/models/project.server.ts index e565b8394..47d9097ca 100644 --- a/apps/webapp/app/models/project.server.ts +++ b/apps/webapp/app/models/project.server.ts @@ -84,9 +84,12 @@ export async function createProject( }, }); - // Create the dev, staging and prod environments + // Create the dev and prod environments await createEnvironment(organization, project, "PRODUCTION"); - await createEnvironment(organization, project, "STAGING"); + + if (version === "v2") { + await createEnvironment(organization, project, "STAGING"); + } for (const member of project.organization.members) { await createEnvironment(organization, project, "DEVELOPMENT", member); diff --git a/apps/webapp/app/presenters/v3/ApiKeysPresenter.server.ts b/apps/webapp/app/presenters/v3/ApiKeysPresenter.server.ts index 2c783b0f5..406bb13b2 100644 --- a/apps/webapp/app/presenters/v3/ApiKeysPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/ApiKeysPresenter.server.ts @@ -74,6 +74,7 @@ export class ApiKeysPresenter { environmentVariableCount: environment._count.environmentVariableValues, })) ), + hasStaging: environments.some((environment) => environment.type === "STAGING"), }; } } diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.apikeys/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.apikeys/route.tsx index f837c2bd6..a151ca312 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.apikeys/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.apikeys/route.tsx @@ -1,10 +1,12 @@ import { BookOpenIcon } from "@heroicons/react/20/solid"; -import { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { Form } from "@remix-run/react"; +import { ActionFunctionArgs, LoaderFunctionArgs } from "@remix-run/server-runtime"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { EnvironmentLabel, environmentTitle } from "~/components/environments/EnvironmentLabel"; import { RegenerateApiKeyModal } from "~/components/environments/RegenerateApiKeyModal"; import { PageBody, PageContainer } from "~/components/layout/AppLayout"; -import { LinkButton } from "~/components/primitives/Buttons"; +import { Button, LinkButton } from "~/components/primitives/Buttons"; +import { Callout } from "~/components/primitives/Callout"; import { ClipboardField } from "~/components/primitives/ClipboardField"; import { DateTime } from "~/components/primitives/DateTime"; import { Header3 } from "~/components/primitives/Headers"; @@ -20,11 +22,15 @@ import { TableRow, } from "~/components/primitives/Table"; import { TextLink } from "~/components/primitives/TextLink"; +import { prisma } from "~/db.server"; +import { useFeatures } from "~/hooks/useFeatures"; import { useProject } from "~/hooks/useProject"; +import { redirectWithErrorMessage, redirectWithSuccessMessage } from "~/models/message.server"; +import { createEnvironment } from "~/models/organization.server"; import { ApiKeysPresenter } from "~/presenters/v3/ApiKeysPresenter.server"; import { requireUserId } from "~/services/session.server"; import { cn } from "~/utils/cn"; -import { ProjectParamSchema, docsPath } from "~/utils/pathBuilder"; +import { ProjectParamSchema, docsPath, v3ApiKeysPath } from "~/utils/pathBuilder"; export const loader = async ({ request, params }: LoaderFunctionArgs) => { const userId = await requireUserId(request); @@ -32,13 +38,14 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => { try { const presenter = new ApiKeysPresenter(); - const { environments } = await presenter.call({ + const { environments, hasStaging } = await presenter.call({ userId, projectSlug: projectParam, }); return typedjson({ environments, + hasStaging, }); } catch (error) { console.error(error); @@ -49,9 +56,76 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => { } }; +export const action = async ({ request, params }: ActionFunctionArgs) => { + const userId = await requireUserId(request); + const { organizationSlug, projectParam } = ProjectParamSchema.parse(params); + + if (request.method.toUpperCase() !== "POST") { + return { status: 405, body: "Method Not Allowed" }; + } + + const project = await prisma.project.findUnique({ + where: { + slug: params.projectParam, + organization: { + members: { + some: { + userId, + }, + }, + }, + }, + select: { + id: true, + organizationId: true, + environments: { + select: { + type: true, + }, + }, + }, + }); + + if (!project) { + return redirectWithErrorMessage( + v3ApiKeysPath({ slug: organizationSlug }, { slug: projectParam }), + request, + "Project not found" + ); + } + + if (project.environments.some((env) => env.type === "STAGING")) { + return redirectWithErrorMessage( + v3ApiKeysPath({ slug: organizationSlug }, { slug: projectParam }), + request, + "You already have a staging environment" + ); + } + + const environment = await createEnvironment( + { id: project.organizationId }, + { id: project.id }, + "STAGING" + ); + + if (!environment) { + return redirectWithErrorMessage( + v3ApiKeysPath({ slug: organizationSlug }, { slug: projectParam }), + request, + "Failed to create staging environment" + ); + } + + return redirectWithSuccessMessage( + v3ApiKeysPath({ slug: organizationSlug }, { slug: projectParam }), + request, + "Staging environment created" + ); +}; + export default function Page() { - const { environments } = useTypedLoaderData(); - const project = useProject(); + const { environments, hasStaging } = useTypedLoaderData(); + const { isManagedCloud } = useFeatures(); return ( @@ -127,6 +201,21 @@ export default function Page() { ))} + + {!hasStaging && ( + + + + } + > + {isManagedCloud + ? "The Staging environment will be a paid feature when we add billing. In the interim you can enable it for free." + : "You can add a Staging environment to your project."} + + )}
From 38770a91c7fc86469410a1633ff7457767005ef0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 26 Apr 2024 14:35:30 +0100 Subject: [PATCH 06/10] chore: Update version for release (beta) (#1061) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 + integrations/airtable/CHANGELOG.md | 8 +++ integrations/airtable/package.json | 6 +- integrations/github/CHANGELOG.md | 8 +++ integrations/github/package.json | 6 +- integrations/linear/CHANGELOG.md | 8 +++ integrations/linear/package.json | 6 +- integrations/openai/CHANGELOG.md | 8 +++ integrations/openai/package.json | 6 +- integrations/plain/CHANGELOG.md | 8 +++ integrations/plain/package.json | 6 +- integrations/replicate/CHANGELOG.md | 8 +++ integrations/replicate/package.json | 6 +- integrations/resend/CHANGELOG.md | 8 +++ integrations/resend/package.json | 6 +- integrations/sendgrid/CHANGELOG.md | 8 +++ integrations/sendgrid/package.json | 6 +- integrations/shopify/CHANGELOG.md | 8 +++ integrations/shopify/package.json | 6 +- integrations/slack/CHANGELOG.md | 7 +++ integrations/slack/package.json | 4 +- integrations/stripe/CHANGELOG.md | 8 +++ integrations/stripe/package.json | 6 +- integrations/supabase/CHANGELOG.md | 8 +++ integrations/supabase/package.json | 6 +- integrations/typeform/CHANGELOG.md | 8 +++ integrations/typeform/package.json | 6 +- packages/astro/CHANGELOG.md | 7 +++ packages/astro/package.json | 4 +- packages/cli-v3/CHANGELOG.md | 88 +++++++++++++++++++++++++++ packages/cli-v3/package.json | 4 +- packages/cli/CHANGELOG.md | 9 +++ packages/cli/package.json | 2 +- packages/core-apps/CHANGELOG.md | 2 + packages/core-apps/package.json | 2 +- packages/core-backend/CHANGELOG.md | 2 + packages/core-backend/package.json | 2 +- packages/core/CHANGELOG.md | 84 +++++++++++++++++++++++++ packages/core/package.json | 2 +- packages/eslint-plugin/CHANGELOG.md | 2 + packages/eslint-plugin/package.json | 2 +- packages/express/CHANGELOG.md | 7 +++ packages/express/package.json | 6 +- packages/hono/CHANGELOG.md | 7 +++ packages/hono/package.json | 4 +- packages/integration-kit/CHANGELOG.md | 8 +++ packages/integration-kit/package.json | 2 +- packages/nestjs/CHANGELOG.md | 7 +++ packages/nestjs/package.json | 6 +- packages/nextjs/CHANGELOG.md | 7 +++ packages/nextjs/package.json | 4 +- packages/otlp-importer/CHANGELOG.md | 2 + packages/otlp-importer/package.json | 2 +- packages/react/CHANGELOG.md | 8 +++ packages/react/package.json | 4 +- packages/remix/CHANGELOG.md | 7 +++ packages/remix/package.json | 4 +- packages/sveltekit/CHANGELOG.md | 7 +++ packages/sveltekit/package.json | 4 +- packages/testing/CHANGELOG.md | 9 +++ packages/testing/package.json | 2 +- packages/trigger-sdk/CHANGELOG.md | 10 +++ packages/trigger-sdk/package.json | 6 +- packages/yalt/CHANGELOG.md | 2 + packages/yalt/package.json | 2 +- 65 files changed, 450 insertions(+), 70 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 8ea9d6b98..521b9b1ee 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -50,6 +50,7 @@ "chilled-hornets-move", "clean-pianos-listen", "clever-apes-collect", + "clever-carrots-travel", "cool-glasses-bake", "cuddly-feet-approve", "dry-walls-check", @@ -68,6 +69,7 @@ "loud-actors-remember", "many-ligers-pump", "mighty-camels-joke", + "mighty-flowers-train", "nasty-jars-pump", "new-rivers-tell", "ninety-pets-travel", diff --git a/integrations/airtable/CHANGELOG.md b/integrations/airtable/CHANGELOG.md index 16fe54065..cb4d49d30 100644 --- a/integrations/airtable/CHANGELOG.md +++ b/integrations/airtable/CHANGELOG.md @@ -1,5 +1,13 @@ # @trigger.dev/airtable +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + - @trigger.dev/integration-kit@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/integrations/airtable/package.json b/integrations/airtable/package.json index 0b6d83504..76a733ee7 100644 --- a/integrations/airtable/package.json +++ b/integrations/airtable/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/airtable", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.20", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.21", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", "airtable": "^0.12.1", "zod": "3.22.3" }, diff --git a/integrations/github/CHANGELOG.md b/integrations/github/CHANGELOG.md index dc3515a4e..7873581a5 100644 --- a/integrations/github/CHANGELOG.md +++ b/integrations/github/CHANGELOG.md @@ -1,5 +1,13 @@ # @trigger.dev/github +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + - @trigger.dev/integration-kit@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/integrations/github/package.json b/integrations/github/package.json index 2c5be9895..12b2d873b 100644 --- a/integrations/github/package.json +++ b/integrations/github/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/github", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.20", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.21", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", "zod": "3.22.3" }, "engines": { diff --git a/integrations/linear/CHANGELOG.md b/integrations/linear/CHANGELOG.md index 625c5d218..a6fa4ba94 100644 --- a/integrations/linear/CHANGELOG.md +++ b/integrations/linear/CHANGELOG.md @@ -1,5 +1,13 @@ # @trigger.dev/linear +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + - @trigger.dev/integration-kit@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/integrations/linear/package.json b/integrations/linear/package.json index 3687084eb..24dbddb0e 100644 --- a/integrations/linear/package.json +++ b/integrations/linear/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/linear", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.20", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.21", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", "zod": "3.22.3" }, "engines": { diff --git a/integrations/openai/CHANGELOG.md b/integrations/openai/CHANGELOG.md index 7a3e36cb5..3d4c8e768 100644 --- a/integrations/openai/CHANGELOG.md +++ b/integrations/openai/CHANGELOG.md @@ -1,5 +1,13 @@ # @trigger.dev/slack +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + - @trigger.dev/integration-kit@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/integrations/openai/package.json b/integrations/openai/package.json index 1cd751eb7..8a368d9c5 100644 --- a/integrations/openai/package.json +++ b/integrations/openai/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/openai", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20", - "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.20" + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.21" }, "engines": { "node": ">=18.0.0" diff --git a/integrations/plain/CHANGELOG.md b/integrations/plain/CHANGELOG.md index 1fd3ebdb5..2bd4a2e2f 100644 --- a/integrations/plain/CHANGELOG.md +++ b/integrations/plain/CHANGELOG.md @@ -1,5 +1,13 @@ # @trigger.dev/plain +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + - @trigger.dev/integration-kit@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/integrations/plain/package.json b/integrations/plain/package.json index 79bad93c5..7ca67403c 100644 --- a/integrations/plain/package.json +++ b/integrations/plain/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/plain", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.20", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.21", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", "@team-plain/typescript-sdk": "^2.7.0" }, "engines": { diff --git a/integrations/replicate/CHANGELOG.md b/integrations/replicate/CHANGELOG.md index 60c916f5d..4eece1931 100644 --- a/integrations/replicate/CHANGELOG.md +++ b/integrations/replicate/CHANGELOG.md @@ -1,5 +1,13 @@ # @trigger.dev/replicate +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + - @trigger.dev/integration-kit@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/integrations/replicate/package.json b/integrations/replicate/package.json index 077e2385d..c21b545ea 100644 --- a/integrations/replicate/package.json +++ b/integrations/replicate/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/replicate", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.20", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.21", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", "replicate": "^0.18.1", "zod": "3.22.3" }, diff --git a/integrations/resend/CHANGELOG.md b/integrations/resend/CHANGELOG.md index f33d7c942..eee06addb 100644 --- a/integrations/resend/CHANGELOG.md +++ b/integrations/resend/CHANGELOG.md @@ -1,5 +1,13 @@ # @trigger.dev/resend +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + - @trigger.dev/integration-kit@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/integrations/resend/package.json b/integrations/resend/package.json index 2561c0075..d01e9b0d5 100644 --- a/integrations/resend/package.json +++ b/integrations/resend/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/resend", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "description": "The official Resend.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:^3.0.0-beta.20", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.20", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.21", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", "resend": "^2.1.0" }, "engines": { diff --git a/integrations/sendgrid/CHANGELOG.md b/integrations/sendgrid/CHANGELOG.md index 08e04baef..92bb58eec 100644 --- a/integrations/sendgrid/CHANGELOG.md +++ b/integrations/sendgrid/CHANGELOG.md @@ -1,5 +1,13 @@ # @trigger.dev/sendgrid +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + - @trigger.dev/integration-kit@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/integrations/sendgrid/package.json b/integrations/sendgrid/package.json index 2c532e16b..a9631c1dd 100644 --- a/integrations/sendgrid/package.json +++ b/integrations/sendgrid/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/sendgrid", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20", - "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.20" + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.21" }, "engines": { "node": ">=16.8.0" diff --git a/integrations/shopify/CHANGELOG.md b/integrations/shopify/CHANGELOG.md index 3e49bbc0b..a76f1cbc5 100644 --- a/integrations/shopify/CHANGELOG.md +++ b/integrations/shopify/CHANGELOG.md @@ -1,5 +1,13 @@ # @trigger.dev/shopify +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + - @trigger.dev/integration-kit@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/integrations/shopify/package.json b/integrations/shopify/package.json index a5e9c669e..ee7754c62 100644 --- a/integrations/shopify/package.json +++ b/integrations/shopify/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/shopify", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20", - "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.20", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.21", "zod": "3.22.3" }, "engines": { diff --git a/integrations/slack/CHANGELOG.md b/integrations/slack/CHANGELOG.md index 98fbfa9ec..84538d03b 100644 --- a/integrations/slack/CHANGELOG.md +++ b/integrations/slack/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/slack +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/integrations/slack/package.json b/integrations/slack/package.json index 665af2fcf..247258c44 100644 --- a/integrations/slack/package.json +++ b/integrations/slack/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/slack", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", "zod": "3.22.3" }, "engines": { diff --git a/integrations/stripe/CHANGELOG.md b/integrations/stripe/CHANGELOG.md index 253a51760..bd6da7f6b 100644 --- a/integrations/stripe/CHANGELOG.md +++ b/integrations/stripe/CHANGELOG.md @@ -1,5 +1,13 @@ # @trigger.dev/stripe +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + - @trigger.dev/integration-kit@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/integrations/stripe/package.json b/integrations/stripe/package.json index 41acf648c..e6d387cad 100644 --- a/integrations/stripe/package.json +++ b/integrations/stripe/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/stripe", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.20", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.21", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", "stripe": "^12.14.0", "zod": "3.22.3" }, diff --git a/integrations/supabase/CHANGELOG.md b/integrations/supabase/CHANGELOG.md index 0d67bfc51..92499ad20 100644 --- a/integrations/supabase/CHANGELOG.md +++ b/integrations/supabase/CHANGELOG.md @@ -1,5 +1,13 @@ # @trigger.dev/supabase +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + - @trigger.dev/integration-kit@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/integrations/supabase/package.json b/integrations/supabase/package.json index 1051b3b32..e7dd55882 100644 --- a/integrations/supabase/package.json +++ b/integrations/supabase/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/supabase", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.20", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.21", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", "supabase-management-js": "^1.0.0", "zod": "3.22.3" }, diff --git a/integrations/typeform/CHANGELOG.md b/integrations/typeform/CHANGELOG.md index 2ecd4d671..103f6d73c 100644 --- a/integrations/typeform/CHANGELOG.md +++ b/integrations/typeform/CHANGELOG.md @@ -1,5 +1,13 @@ # @trigger.dev/typeform +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + - @trigger.dev/integration-kit@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/integrations/typeform/package.json b/integrations/typeform/package.json index a1ed5ca72..9830bdd26 100644 --- a/integrations/typeform/package.json +++ b/integrations/typeform/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/typeform", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.20", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.21", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", "@typeform/api-client": "^1.8.0", "zod": "3.22.3" }, diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index cd1321c6e..0db388600 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/astro +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/packages/astro/package.json b/packages/astro/package.json index 45b7da9ef..746bfe7f5 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,7 +1,7 @@ { "name": "@trigger.dev/astro", "description": "An Astro-native integration for Trigger.dev background jobs platform", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "main": "./dist/index.js", "types": "./dist/index.d.ts", "files": [ @@ -20,7 +20,7 @@ "build:tsup": "tsup" }, "peerDependencies": { - "@trigger.dev/sdk": "workspace:^3.0.0-beta.20" + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21" }, "devDependencies": { "astro": "^3.0.12", diff --git a/packages/cli-v3/CHANGELOG.md b/packages/cli-v3/CHANGELOG.md index 1927aa80f..eace3405a 100644 --- a/packages/cli-v3/CHANGELOG.md +++ b/packages/cli-v3/CHANGELOG.md @@ -1,5 +1,93 @@ # trigger.dev +## 3.0.0-beta.21 + +### Patch Changes + +- 9491a1649: Implement task.onSuccess/onFailure and config.onSuccess/onFailure +- 9491a1649: Adds support for `emitDecoratorMetadata: true` and `experimentalDecorators: true` in your tsconfig using the [`@anatine/esbuild-decorators`](https://github.com/anatine/esbuildnx/tree/main/packages/esbuild-decorators) package. This allows you to use libraries like TypeORM: + + ```ts orm/index.ts + import "reflect-metadata"; + import { DataSource } from "typeorm"; + import { Entity, Column, PrimaryColumn } from "typeorm"; + + @Entity() + export class Photo { + @PrimaryColumn() + id!: number; + + @Column() + name!: string; + + @Column() + description!: string; + + @Column() + filename!: string; + + @Column() + views!: number; + + @Column() + isPublished!: boolean; + } + + export const AppDataSource = new DataSource({ + type: "postgres", + host: "localhost", + port: 5432, + username: "postgres", + password: "postgres", + database: "v3-catalog", + entities: [Photo], + synchronize: true, + logging: false, + }); + ``` + + And then in your trigger.config.ts file you can initialize the datasource using the new `init` option: + + ```ts trigger.config.ts + import type { TriggerConfig } from "@trigger.dev/sdk/v3"; + import { AppDataSource } from "@/trigger/orm"; + + export const config: TriggerConfig = { + // ... other options here + init: async (payload, { ctx }) => { + await AppDataSource.initialize(); + }, + }; + ``` + + Now you are ready to use this in your tasks: + + ```ts + import { task } from "@trigger.dev/sdk/v3"; + import { AppDataSource, Photo } from "./orm"; + + export const taskThatUsesDecorators = task({ + id: "taskThatUsesDecorators", + run: async (payload: { message: string }) => { + console.log("Creating a photo..."); + + const photo = new Photo(); + photo.id = 2; + photo.name = "Me and Bears"; + photo.description = "I am near polar bears"; + photo.filename = "photo-with-bears.jpg"; + photo.views = 1; + photo.isPublished = true; + + await AppDataSource.manager.save(photo); + }, + }); + ``` + +- Updated dependencies [9491a1649] +- Updated dependencies [9491a1649] + - @trigger.dev/core@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/packages/cli-v3/package.json b/packages/cli-v3/package.json index f1287ad6b..b4ee80e34 100644 --- a/packages/cli-v3/package.json +++ b/packages/cli-v3/package.json @@ -1,6 +1,6 @@ { "name": "trigger.dev", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "description": "A Command-Line Interface for Trigger.dev (v3) projects", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -86,7 +86,7 @@ "@opentelemetry/sdk-trace-base": "^1.22.0", "@opentelemetry/sdk-trace-node": "^1.22.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@trigger.dev/core": "workspace:3.0.0-beta.20", + "@trigger.dev/core": "workspace:3.0.0-beta.21", "@types/degit": "^2.8.3", "chalk": "^5.2.0", "chokidar": "^3.5.3", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 99120fac9..2ddeb749a 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,14 @@ # create-trigger +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] +- Updated dependencies [9491a1649] + - @trigger.dev/core@3.0.0-beta.21 + - @trigger.dev/yalt@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 66b38f4d7..4a974ba9b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/cli", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "description": "The Trigger.dev CLI", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/core-apps/CHANGELOG.md b/packages/core-apps/CHANGELOG.md index 9bf77c902..f9fc180bd 100644 --- a/packages/core-apps/CHANGELOG.md +++ b/packages/core-apps/CHANGELOG.md @@ -1,5 +1,7 @@ # @trigger.dev/core-apps +## 3.0.0-beta.21 + ## 3.0.0-beta.20 ## 3.0.0-beta.19 diff --git a/packages/core-apps/package.json b/packages/core-apps/package.json index 89e1ca054..ef1fd6610 100644 --- a/packages/core-apps/package.json +++ b/packages/core-apps/package.json @@ -1,7 +1,7 @@ { "name": "@trigger.dev/core-apps", "description": "Backend core code used across apps", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "private": true, "license": "MIT", "main": "./dist/index.js", diff --git a/packages/core-backend/CHANGELOG.md b/packages/core-backend/CHANGELOG.md index 2cb476ac9..952eeca04 100644 --- a/packages/core-backend/CHANGELOG.md +++ b/packages/core-backend/CHANGELOG.md @@ -1,5 +1,7 @@ # @trigger.dev/core-backend +## 3.0.0-beta.21 + ## 3.0.0-beta.20 ## 3.0.0-beta.19 diff --git a/packages/core-backend/package.json b/packages/core-backend/package.json index e46f1eb7a..64eac789e 100644 --- a/packages/core-backend/package.json +++ b/packages/core-backend/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/core-backend", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "description": "Core code used across `@trigger.dev/sdk` and Trigger.dev server", "license": "MIT", "main": "./dist/index.js", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 52304949e..3c5fd418b 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,89 @@ # internal-platform +## 3.0.0-beta.21 + +### Patch Changes + +- 9491a1649: Implement task.onSuccess/onFailure and config.onSuccess/onFailure +- 9491a1649: Adds support for `emitDecoratorMetadata: true` and `experimentalDecorators: true` in your tsconfig using the [`@anatine/esbuild-decorators`](https://github.com/anatine/esbuildnx/tree/main/packages/esbuild-decorators) package. This allows you to use libraries like TypeORM: + + ```ts orm/index.ts + import "reflect-metadata"; + import { DataSource } from "typeorm"; + import { Entity, Column, PrimaryColumn } from "typeorm"; + + @Entity() + export class Photo { + @PrimaryColumn() + id!: number; + + @Column() + name!: string; + + @Column() + description!: string; + + @Column() + filename!: string; + + @Column() + views!: number; + + @Column() + isPublished!: boolean; + } + + export const AppDataSource = new DataSource({ + type: "postgres", + host: "localhost", + port: 5432, + username: "postgres", + password: "postgres", + database: "v3-catalog", + entities: [Photo], + synchronize: true, + logging: false, + }); + ``` + + And then in your trigger.config.ts file you can initialize the datasource using the new `init` option: + + ```ts trigger.config.ts + import type { TriggerConfig } from "@trigger.dev/sdk/v3"; + import { AppDataSource } from "@/trigger/orm"; + + export const config: TriggerConfig = { + // ... other options here + init: async (payload, { ctx }) => { + await AppDataSource.initialize(); + }, + }; + ``` + + Now you are ready to use this in your tasks: + + ```ts + import { task } from "@trigger.dev/sdk/v3"; + import { AppDataSource, Photo } from "./orm"; + + export const taskThatUsesDecorators = task({ + id: "taskThatUsesDecorators", + run: async (payload: { message: string }) => { + console.log("Creating a photo..."); + + const photo = new Photo(); + photo.id = 2; + photo.name = "Me and Bears"; + photo.description = "I am near polar bears"; + photo.filename = "photo-with-bears.jpg"; + photo.views = 1; + photo.isPublished = true; + + await AppDataSource.manager.save(photo); + }, + }); + ``` + ## 3.0.0-beta.20 ### Patch Changes diff --git a/packages/core/package.json b/packages/core/package.json index 181ace193..711cf01d7 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/core", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "description": "Core code used across the Trigger.dev SDK and platform", "license": "MIT", "main": "./dist/index.js", diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 841a877ca..00dbca705 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -1,5 +1,7 @@ # @trigger.dev/eslint-plugin +## 3.0.0-beta.21 + ## 3.0.0-beta.20 ## 3.0.0-beta.19 diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index bcb271872..2426db01b 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/eslint-plugin", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "description": "ESLint plugin with trigger.dev best practices", "keywords": [ "eslint", diff --git a/packages/express/CHANGELOG.md b/packages/express/CHANGELOG.md index 1cfb78989..57ad68207 100644 --- a/packages/express/CHANGELOG.md +++ b/packages/express/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/express +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/packages/express/package.json b/packages/express/package.json index 3845f42be..39487b873 100644 --- a/packages/express/package.json +++ b/packages/express/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/express", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", "@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:^3.0.0-beta.20" + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21" }, "dependencies": { "debug": "^4.3.4", diff --git a/packages/hono/CHANGELOG.md b/packages/hono/CHANGELOG.md index a131b3a28..08cd4bf7f 100644 --- a/packages/hono/CHANGELOG.md +++ b/packages/hono/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/hono +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/packages/hono/package.json b/packages/hono/package.json index 6db8a0e78..33027f092 100644 --- a/packages/hono/package.json +++ b/packages/hono/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/hono", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20" + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21" }, "devDependencies": { "@trigger.dev/tsconfig": "workspace:*", diff --git a/packages/integration-kit/CHANGELOG.md b/packages/integration-kit/CHANGELOG.md index 50d0971e8..178594dfa 100644 --- a/packages/integration-kit/CHANGELOG.md +++ b/packages/integration-kit/CHANGELOG.md @@ -1,5 +1,13 @@ # @trigger.dev/integration-kit +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] +- Updated dependencies [9491a1649] + - @trigger.dev/core@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/packages/integration-kit/package.json b/packages/integration-kit/package.json index 5bcc0609c..4ac2d8ac5 100644 --- a/packages/integration-kit/package.json +++ b/packages/integration-kit/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/integration-kit", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "description": "Trigger.dev Integration Kit has helpers to make creating integrations easier", "license": "MIT", "main": "./dist/index.js", diff --git a/packages/nestjs/CHANGELOG.md b/packages/nestjs/CHANGELOG.md index b794bb2b5..e89a4fb22 100644 --- a/packages/nestjs/CHANGELOG.md +++ b/packages/nestjs/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/nestjs +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/packages/nestjs/package.json b/packages/nestjs/package.json index 801ae66f2..147aaeb1f 100644 --- a/packages/nestjs/package.json +++ b/packages/nestjs/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/nestjs", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", "@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:^3.0.0-beta.20" + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21" }, "dependencies": { "@nestjs/common": "^10.2.4", diff --git a/packages/nextjs/CHANGELOG.md b/packages/nextjs/CHANGELOG.md index 59583e365..5c6bcbcc6 100644 --- a/packages/nextjs/CHANGELOG.md +++ b/packages/nextjs/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/nextjs +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 3cd1cc25a..eb76e35d1 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/nextjs", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "description": "Trigger.dev Next.js integration", "license": "MIT", "main": "./dist/index.js", @@ -41,7 +41,7 @@ "build:tsup": "tsup" }, "peerDependencies": { - "@trigger.dev/sdk": "workspace:^3.0.0-beta.20", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", "next": ">=12.0.0" }, "dependencies": { diff --git a/packages/otlp-importer/CHANGELOG.md b/packages/otlp-importer/CHANGELOG.md index 4daf086f9..4072c93cf 100644 --- a/packages/otlp-importer/CHANGELOG.md +++ b/packages/otlp-importer/CHANGELOG.md @@ -1,5 +1,7 @@ # @trigger.dev/otlp-importer +## 3.0.0-beta.21 + ## 3.0.0-beta.20 ## 3.0.0-beta.19 diff --git a/packages/otlp-importer/package.json b/packages/otlp-importer/package.json index 92c1f56cd..4d7ebeed8 100644 --- a/packages/otlp-importer/package.json +++ b/packages/otlp-importer/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/otlp-importer", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "description": "OpenTelemetry OTLP Importer for Node.js written in TypeScript", "license": "MIT", "main": "./dist/index.js", diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 8caaa6cf7..af69c38d1 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,5 +1,13 @@ # @trigger.dev/react +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] +- Updated dependencies [9491a1649] + - @trigger.dev/core@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/packages/react/package.json b/packages/react/package.json index 9ed35ab1c..fff769838 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/react", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "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:^3.0.0-beta.20", + "@trigger.dev/core": "workspace:^3.0.0-beta.21", "debug": "^4.3.4", "zod": "3.22.3" }, diff --git a/packages/remix/CHANGELOG.md b/packages/remix/CHANGELOG.md index 7c34bb281..be935f826 100644 --- a/packages/remix/CHANGELOG.md +++ b/packages/remix/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/remix +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/packages/remix/package.json b/packages/remix/package.json index 95c6f77ff..3e07e9bc3 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/remix", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "description": "Trigger.dev Remix integration", "license": "MIT", "main": "./dist/index.js", @@ -39,7 +39,7 @@ "build:tsup": "tsup" }, "peerDependencies": { - "@trigger.dev/sdk": "workspace:^3.0.0-beta.20", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", "@remix-run/server-runtime": ">1.19.0" }, "dependencies": { diff --git a/packages/sveltekit/CHANGELOG.md b/packages/sveltekit/CHANGELOG.md index 3ef158f1b..2168f5c47 100644 --- a/packages/sveltekit/CHANGELOG.md +++ b/packages/sveltekit/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/sveltekit +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index 792e7e960..ba6074b17 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/sveltekit", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "description": "Trigger.dev svelteKit integration", "license": "MIT", "main": "./dist/index.js", @@ -39,7 +39,7 @@ "build:tsup": "tsup" }, "peerDependencies": { - "@trigger.dev/sdk": "workspace:^3.0.0-beta.20" + "@trigger.dev/sdk": "workspace:^3.0.0-beta.21" }, "dependencies": { "debug": "^4.3.4" diff --git a/packages/testing/CHANGELOG.md b/packages/testing/CHANGELOG.md index 5defb6b0e..8ac183374 100644 --- a/packages/testing/CHANGELOG.md +++ b/packages/testing/CHANGELOG.md @@ -1,5 +1,14 @@ # @trigger.dev/testing +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [9491a1649] +- Updated dependencies [9491a1649] + - @trigger.dev/sdk@3.0.0-beta.21 + - @trigger.dev/core@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/packages/testing/package.json b/packages/testing/package.json index 88cba9627..f6612ae65 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -1,7 +1,7 @@ { "name": "@trigger.dev/testing", "description": "A collection of useful tools to write tests for Trigger.dev.", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "license": "MIT", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/trigger-sdk/CHANGELOG.md b/packages/trigger-sdk/CHANGELOG.md index ddf2e3ee8..3e16565cc 100644 --- a/packages/trigger-sdk/CHANGELOG.md +++ b/packages/trigger-sdk/CHANGELOG.md @@ -1,5 +1,15 @@ # @trigger.dev/sdk +## 3.0.0-beta.21 + +### Patch Changes + +- 9491a1649: Implement task.onSuccess/onFailure and config.onSuccess/onFailure +- Updated dependencies [9491a1649] +- Updated dependencies [9491a1649] + - @trigger.dev/core@3.0.0-beta.21 + - @trigger.dev/core-backend@3.0.0-beta.21 + ## 3.0.0-beta.20 ### Patch Changes diff --git a/packages/trigger-sdk/package.json b/packages/trigger-sdk/package.json index bea323fca..f6caa234c 100644 --- a/packages/trigger-sdk/package.json +++ b/packages/trigger-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/sdk", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "description": "trigger.dev Node.JS SDK", "license": "MIT", "main": "./dist/index.js", @@ -48,8 +48,8 @@ "@opentelemetry/api": "^1.8.0", "@opentelemetry/api-logs": "^0.48.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@trigger.dev/core": "workspace:3.0.0-beta.20", - "@trigger.dev/core-backend": "workspace:3.0.0-beta.20", + "@trigger.dev/core": "workspace:3.0.0-beta.21", + "@trigger.dev/core-backend": "workspace:3.0.0-beta.21", "chalk": "^5.2.0", "cronstrue": "^2.21.0", "debug": "^4.3.4", diff --git a/packages/yalt/CHANGELOG.md b/packages/yalt/CHANGELOG.md index 59a8847a4..224f69e47 100644 --- a/packages/yalt/CHANGELOG.md +++ b/packages/yalt/CHANGELOG.md @@ -1,5 +1,7 @@ # @trigger.dev/yalt +## 3.0.0-beta.21 + ## 3.0.0-beta.20 ## 3.0.0-beta.19 diff --git a/packages/yalt/package.json b/packages/yalt/package.json index 960d27f7c..03a31cf37 100644 --- a/packages/yalt/package.json +++ b/packages/yalt/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/yalt", - "version": "3.0.0-beta.20", + "version": "3.0.0-beta.21", "description": "yalt.dev client library", "license": "MIT", "main": "./dist/index.js", From e765240370c974b27c7b8fe3ea62232fa3d7cf64 Mon Sep 17 00:00:00 2001 From: Matt Aitken Date: Fri, 26 Apr 2024 14:37:46 +0100 Subject: [PATCH 07/10] Latest lockfile --- pnpm-lock.yaml | 70 +++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0fcd667aa..2e051940b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -836,10 +836,10 @@ importers: integrations/airtable: dependencies: '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/trigger-sdk airtable: specifier: ^0.12.1 @@ -879,10 +879,10 @@ importers: specifier: ^12.0.10 version: 12.0.10 '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/trigger-sdk octokit: specifier: ^3.1.2 @@ -922,10 +922,10 @@ importers: specifier: ^8.0.0 version: 8.0.0 '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/trigger-sdk zod: specifier: 3.22.3 @@ -953,10 +953,10 @@ importers: integrations/openai: dependencies: '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/trigger-sdk openai: specifier: ^4.16.1 @@ -996,10 +996,10 @@ importers: specifier: ^2.7.0 version: 2.7.0 '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/trigger-sdk devDependencies: '@trigger.dev/tsconfig': @@ -1024,10 +1024,10 @@ importers: integrations/replicate: dependencies: '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/trigger-sdk replicate: specifier: ^0.18.1 @@ -1058,10 +1058,10 @@ importers: integrations/resend: dependencies: '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/trigger-sdk resend: specifier: ^2.1.0 @@ -1092,10 +1092,10 @@ importers: specifier: ^7.7.0 version: 7.7.0 '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/trigger-sdk devDependencies: '@trigger.dev/tsconfig': @@ -1123,10 +1123,10 @@ importers: specifier: ^8.0.2 version: 8.0.2 '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/trigger-sdk zod: specifier: 3.22.3 @@ -1157,7 +1157,7 @@ importers: specifier: ^6.8.1 version: 6.8.1 '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/trigger-sdk zod: specifier: 3.22.3 @@ -1185,10 +1185,10 @@ importers: integrations/stripe: dependencies: '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/trigger-sdk stripe: specifier: ^12.14.0 @@ -1222,10 +1222,10 @@ importers: specifier: ^2.26.0 version: 2.31.0 '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/trigger-sdk supabase-management-js: specifier: ^1.0.0 @@ -1256,10 +1256,10 @@ importers: integrations/typeform: dependencies: '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../../packages/trigger-sdk '@typeform/api-client': specifier: ^1.8.0 @@ -1287,7 +1287,7 @@ importers: packages/astro: dependencies: '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../trigger-sdk debug: specifier: ^4.3.4 @@ -1505,7 +1505,7 @@ importers: specifier: ^1.22.0 version: 1.22.0 '@trigger.dev/core': - specifier: workspace:3.0.0-beta.20 + specifier: workspace:3.0.0-beta.21 version: link:../core '@types/degit': specifier: ^2.8.3 @@ -1947,7 +1947,7 @@ importers: version: 4.18.2 devDependencies: '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../trigger-sdk '@trigger.dev/tsconfig': specifier: workspace:* @@ -2042,7 +2042,7 @@ importers: version: 4.3.4(supports-color@8.1.1) devDependencies: '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../trigger-sdk '@trigger.dev/tsconfig': specifier: workspace:* @@ -2075,7 +2075,7 @@ importers: packages/nextjs: dependencies: '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../trigger-sdk debug: specifier: ^4.3.4 @@ -2161,7 +2161,7 @@ importers: specifier: 5.0.0-beta.2 version: 5.0.0-beta.2(react@18.2.0) '@trigger.dev/core': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../core debug: specifier: ^4.3.4 @@ -2204,7 +2204,7 @@ importers: packages/remix: dependencies: '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../trigger-sdk debug: specifier: ^4.3.4 @@ -2241,7 +2241,7 @@ importers: packages/sveltekit: dependencies: '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.20 + specifier: workspace:^3.0.0-beta.21 version: link:../trigger-sdk debug: specifier: ^4.3.4 @@ -2315,10 +2315,10 @@ importers: specifier: ^1.22.0 version: 1.22.0 '@trigger.dev/core': - specifier: workspace:3.0.0-beta.20 + specifier: workspace:3.0.0-beta.21 version: link:../core '@trigger.dev/core-backend': - specifier: workspace:3.0.0-beta.20 + specifier: workspace:3.0.0-beta.21 version: link:../core-backend chalk: specifier: ^5.2.0 From ebeb7905229392337838faf751308dd9820c4bd1 Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Fri, 26 Apr 2024 17:00:14 +0100 Subject: [PATCH 08/10] Add typescript as a dependency so the esbuild-decorator will work even when running in npx --- .changeset/purple-garlics-shop.md | 5 ++ packages/cli-v3/package.json | 3 +- pnpm-lock.yaml | 96 +++++++++++++++++++++++-------- 3 files changed, 78 insertions(+), 26 deletions(-) create mode 100644 .changeset/purple-garlics-shop.md diff --git a/.changeset/purple-garlics-shop.md b/.changeset/purple-garlics-shop.md new file mode 100644 index 000000000..0d4be024f --- /dev/null +++ b/.changeset/purple-garlics-shop.md @@ -0,0 +1,5 @@ +--- +"trigger.dev": patch +--- + +Add typescript as a dependency so the esbuild-decorator will work even when running in npx diff --git a/packages/cli-v3/package.json b/packages/cli-v3/package.json index b4ee80e34..a14d41c66 100644 --- a/packages/cli-v3/package.json +++ b/packages/cli-v3/package.json @@ -125,7 +125,8 @@ "url": "^0.11.1", "ws": "^8.12.0", "zod": "3.22.3", - "zod-validation-error": "^1.5.0" + "zod-validation-error": "^1.5.0", + "typescript": "^5.4.0" }, "engines": { "node": ">=18.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e051940b..96aaafb6f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1609,6 +1609,9 @@ importers: tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 + typescript: + specifier: ^5.4.0 + version: 5.4.5 update-check: specifier: ^1.5.4 version: 1.5.4 @@ -1672,13 +1675,10 @@ importers: version: 3.0.2 tsup: specifier: ^8.0.1 - version: 8.0.1(patch_hash=a5ztaafw5l4qfghy2hjjuynb34)(postcss@8.4.27)(typescript@5.3.3) + version: 8.0.1(patch_hash=a5ztaafw5l4qfghy2hjjuynb34)(postcss@8.4.27)(typescript@5.4.5) type-fest: specifier: ^3.6.0 version: 3.13.0 - typescript: - specifier: ^5.3.3 - version: 5.3.3 vitest: specifier: ^0.34.4 version: 0.34.4 @@ -1923,7 +1923,7 @@ importers: version: 8.45.0 eslint-doc-generator: specifier: ^1.0.0 - version: 1.4.3(eslint@8.45.0)(typescript@5.3.3) + version: 1.4.3(eslint@8.45.0)(typescript@5.4.5) eslint-plugin-eslint-plugin: specifier: ^5.0.0 version: 5.1.1(eslint@8.45.0) @@ -2847,7 +2847,7 @@ importers: version: 8.42.0 eslint-config-next: specifier: 13.4.6 - version: 13.4.6(eslint@8.42.0)(typescript@5.3.3) + version: 13.4.6(eslint@8.42.0)(typescript@5.4.5) wait-on: specifier: ^7.0.1 version: 7.0.1 @@ -14548,7 +14548,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.59.6(eslint@8.42.0)(typescript@5.3.3): + /@typescript-eslint/parser@5.59.6(eslint@8.42.0)(typescript@5.4.5): resolution: {integrity: sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -14560,10 +14560,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.59.6 '@typescript-eslint/types': 5.59.6 - '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.4.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 - typescript: 5.3.3 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -14835,7 +14835,7 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@5.59.6(typescript@5.3.3): + /@typescript-eslint/typescript-estree@5.59.6(typescript@5.4.5): resolution: {integrity: sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -14850,8 +14850,8 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 + tsutils: 3.21.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -14937,7 +14937,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.6(eslint@8.45.0)(typescript@5.3.3): + /@typescript-eslint/utils@5.59.6(eslint@8.45.0)(typescript@5.4.5): resolution: {integrity: sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -14948,7 +14948,7 @@ packages: '@types/semver': 7.3.13 '@typescript-eslint/scope-manager': 5.59.6 '@typescript-eslint/types': 5.59.6 - '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.4.5) eslint: 8.45.0 eslint-scope: 5.1.1 semver: 7.5.4 @@ -19216,7 +19216,7 @@ packages: - supports-color dev: true - /eslint-config-next@13.4.6(eslint@8.42.0)(typescript@5.3.3): + /eslint-config-next@13.4.6(eslint@8.42.0)(typescript@5.4.5): resolution: {integrity: sha512-nlv4FYish1RYYHILbQwM5/rD37cOvEqtMfDjtQCYbXdE2O3MggqHu2q6IDeLE2Z6u8ZJyNPgWOA6OimWcxj3qw==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -19227,7 +19227,7 @@ packages: dependencies: '@next/eslint-plugin-next': 13.4.6 '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/parser': 5.59.6(eslint@8.42.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.59.6(eslint@8.42.0)(typescript@5.4.5) eslint: 8.42.0 eslint-import-resolver-node: 0.3.7 eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.6)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.42.0) @@ -19235,7 +19235,7 @@ packages: eslint-plugin-jsx-a11y: 6.7.1(eslint@8.42.0) eslint-plugin-react: 7.32.2(eslint@8.42.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.42.0) - typescript: 5.3.3 + typescript: 5.4.5 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color @@ -19277,14 +19277,14 @@ packages: eslint-plugin-turbo: 1.13.0(eslint@8.31.0) dev: true - /eslint-doc-generator@1.4.3(eslint@8.45.0)(typescript@5.3.3): + /eslint-doc-generator@1.4.3(eslint@8.45.0)(typescript@5.4.5): resolution: {integrity: sha512-cn9KXE7xuKlxKi/9VbirR3cbz7W1geRObwWzZjJAnpTeNBoqA8Rj+lD8/HHHJ7PnOdaTrRyhhoYdCtxqq3U7Bw==} engines: {node: ^14.18.0 || ^16.0.0 || >=18.0.0} hasBin: true peerDependencies: eslint: '>= 7' dependencies: - '@typescript-eslint/utils': 5.59.6(eslint@8.45.0)(typescript@5.3.3) + '@typescript-eslint/utils': 5.59.6(eslint@8.45.0)(typescript@5.4.5) ajv: 8.12.0 boolean: 3.2.0 commander: 10.0.1 @@ -30730,8 +30730,8 @@ packages: picocolors: 1.0.0 sade: 1.8.1 svelte: 4.2.1 - svelte-preprocess: 5.0.4(postcss@8.4.29)(svelte@4.2.1)(typescript@5.3.3) - typescript: 5.3.3 + svelte-preprocess: 5.0.4(postcss@8.4.29)(svelte@4.2.1)(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -30770,7 +30770,7 @@ packages: svelte: 4.2.1 dev: true - /svelte-preprocess@5.0.4(postcss@8.4.29)(svelte@4.2.1)(typescript@5.3.3): + /svelte-preprocess@5.0.4(postcss@8.4.29)(svelte@4.2.1)(typescript@5.4.5): resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} engines: {node: '>= 14.10.0'} requiresBuild: true @@ -30815,7 +30815,7 @@ packages: sorcery: 0.11.0 strip-indent: 3.0.0 svelte: 4.2.1 - typescript: 5.3.3 + typescript: 5.4.5 dev: true /svelte@4.2.1: @@ -31844,6 +31844,47 @@ packages: dev: true patched: true + /tsup@8.0.1(patch_hash=a5ztaafw5l4qfghy2hjjuynb34)(postcss@8.4.27)(typescript@5.4.5): + resolution: {integrity: sha512-hvW7gUSG96j53ZTSlT4j/KL0q1Q2l6TqGBFc6/mu/L46IoNWqLLUzLRLP1R8Q7xrJTmkDxxDoojV5uCVs1sVOg==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + bundle-require: 4.0.1(esbuild@0.19.11) + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + esbuild: 0.19.11 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss: 8.4.27 + postcss-load-config: 4.0.1(postcss@8.4.27) + resolve-from: 5.0.0 + rollup: 4.6.1 + source-map: 0.8.0-beta.0 + sucrase: 3.32.0 + tree-kill: 1.2.2 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + patched: true + /tsup@8.0.2(postcss@8.4.27)(typescript@5.3.2): resolution: {integrity: sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==} engines: {node: '>=18'} @@ -31923,14 +31964,14 @@ packages: typescript: 5.2.2 dev: true - /tsutils@3.21.0(typescript@5.3.3): + /tsutils@3.21.0(typescript@5.4.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.3.3 + typescript: 5.4.5 dev: true /tsx@3.12.2: @@ -32272,6 +32313,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + /ufo@1.3.0: resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} From 469c8a25327652d5a474da5a4901c1c548c35eaf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 26 Apr 2024 17:13:20 +0100 Subject: [PATCH 09/10] chore: Update version for release (beta) (#1067) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + integrations/airtable/CHANGELOG.md | 7 +++++++ integrations/airtable/package.json | 6 +++--- integrations/github/CHANGELOG.md | 7 +++++++ integrations/github/package.json | 6 +++--- integrations/linear/CHANGELOG.md | 7 +++++++ integrations/linear/package.json | 6 +++--- integrations/openai/CHANGELOG.md | 7 +++++++ integrations/openai/package.json | 6 +++--- integrations/plain/CHANGELOG.md | 7 +++++++ integrations/plain/package.json | 6 +++--- integrations/replicate/CHANGELOG.md | 7 +++++++ integrations/replicate/package.json | 6 +++--- integrations/resend/CHANGELOG.md | 7 +++++++ integrations/resend/package.json | 6 +++--- integrations/sendgrid/CHANGELOG.md | 7 +++++++ integrations/sendgrid/package.json | 6 +++--- integrations/shopify/CHANGELOG.md | 7 +++++++ integrations/shopify/package.json | 6 +++--- integrations/slack/CHANGELOG.md | 6 ++++++ integrations/slack/package.json | 4 ++-- integrations/stripe/CHANGELOG.md | 7 +++++++ integrations/stripe/package.json | 6 +++--- integrations/supabase/CHANGELOG.md | 7 +++++++ integrations/supabase/package.json | 6 +++--- integrations/typeform/CHANGELOG.md | 7 +++++++ integrations/typeform/package.json | 6 +++--- packages/astro/CHANGELOG.md | 6 ++++++ packages/astro/package.json | 4 ++-- packages/cli-v3/CHANGELOG.md | 7 +++++++ packages/cli-v3/package.json | 4 ++-- packages/cli/CHANGELOG.md | 7 +++++++ packages/cli/package.json | 2 +- packages/core-apps/CHANGELOG.md | 2 ++ packages/core-apps/package.json | 2 +- packages/core-backend/CHANGELOG.md | 2 ++ packages/core-backend/package.json | 2 +- packages/core/CHANGELOG.md | 2 ++ packages/core/package.json | 2 +- packages/eslint-plugin/CHANGELOG.md | 2 ++ packages/eslint-plugin/package.json | 2 +- packages/express/CHANGELOG.md | 6 ++++++ packages/express/package.json | 6 +++--- packages/hono/CHANGELOG.md | 6 ++++++ packages/hono/package.json | 4 ++-- packages/integration-kit/CHANGELOG.md | 6 ++++++ packages/integration-kit/package.json | 2 +- packages/nestjs/CHANGELOG.md | 6 ++++++ packages/nestjs/package.json | 6 +++--- packages/nextjs/CHANGELOG.md | 6 ++++++ packages/nextjs/package.json | 4 ++-- packages/otlp-importer/CHANGELOG.md | 2 ++ packages/otlp-importer/package.json | 2 +- packages/react/CHANGELOG.md | 6 ++++++ packages/react/package.json | 4 ++-- packages/remix/CHANGELOG.md | 6 ++++++ packages/remix/package.json | 4 ++-- packages/sveltekit/CHANGELOG.md | 6 ++++++ packages/sveltekit/package.json | 4 ++-- packages/testing/CHANGELOG.md | 7 +++++++ packages/testing/package.json | 2 +- packages/trigger-sdk/CHANGELOG.md | 7 +++++++ packages/trigger-sdk/package.json | 6 +++--- packages/yalt/CHANGELOG.md | 2 ++ packages/yalt/package.json | 2 +- 65 files changed, 255 insertions(+), 70 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 521b9b1ee..197e7c8ee 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -77,6 +77,7 @@ "polite-ducks-switch", "polite-rockets-matter", "poor-flowers-cross", + "purple-garlics-shop", "rare-roses-float", "real-planets-stare", "rich-kangaroos-unite", diff --git a/integrations/airtable/CHANGELOG.md b/integrations/airtable/CHANGELOG.md index cb4d49d30..75cb63363 100644 --- a/integrations/airtable/CHANGELOG.md +++ b/integrations/airtable/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/airtable +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/integration-kit@3.0.0-beta.22 +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/integrations/airtable/package.json b/integrations/airtable/package.json index 76a733ee7..c70928999 100644 --- a/integrations/airtable/package.json +++ b/integrations/airtable/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/airtable", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", "airtable": "^0.12.1", "zod": "3.22.3" }, diff --git a/integrations/github/CHANGELOG.md b/integrations/github/CHANGELOG.md index 7873581a5..241ca7ea4 100644 --- a/integrations/github/CHANGELOG.md +++ b/integrations/github/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/github +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/integration-kit@3.0.0-beta.22 +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/integrations/github/package.json b/integrations/github/package.json index 12b2d873b..bf145fd6a 100644 --- a/integrations/github/package.json +++ b/integrations/github/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/github", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", "zod": "3.22.3" }, "engines": { diff --git a/integrations/linear/CHANGELOG.md b/integrations/linear/CHANGELOG.md index a6fa4ba94..98bc8ab34 100644 --- a/integrations/linear/CHANGELOG.md +++ b/integrations/linear/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/linear +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/integration-kit@3.0.0-beta.22 +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/integrations/linear/package.json b/integrations/linear/package.json index 24dbddb0e..f141adf89 100644 --- a/integrations/linear/package.json +++ b/integrations/linear/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/linear", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", "zod": "3.22.3" }, "engines": { diff --git a/integrations/openai/CHANGELOG.md b/integrations/openai/CHANGELOG.md index 3d4c8e768..3e38b31e7 100644 --- a/integrations/openai/CHANGELOG.md +++ b/integrations/openai/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/slack +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/integration-kit@3.0.0-beta.22 +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/integrations/openai/package.json b/integrations/openai/package.json index 8a368d9c5..601ba3a54 100644 --- a/integrations/openai/package.json +++ b/integrations/openai/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/openai", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21", - "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.21" + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22" }, "engines": { "node": ">=18.0.0" diff --git a/integrations/plain/CHANGELOG.md b/integrations/plain/CHANGELOG.md index 2bd4a2e2f..8d2f9b2ea 100644 --- a/integrations/plain/CHANGELOG.md +++ b/integrations/plain/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/plain +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/integration-kit@3.0.0-beta.22 +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/integrations/plain/package.json b/integrations/plain/package.json index 7ca67403c..afe2ca44a 100644 --- a/integrations/plain/package.json +++ b/integrations/plain/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/plain", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", "@team-plain/typescript-sdk": "^2.7.0" }, "engines": { diff --git a/integrations/replicate/CHANGELOG.md b/integrations/replicate/CHANGELOG.md index 4eece1931..861f43242 100644 --- a/integrations/replicate/CHANGELOG.md +++ b/integrations/replicate/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/replicate +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/integration-kit@3.0.0-beta.22 +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/integrations/replicate/package.json b/integrations/replicate/package.json index c21b545ea..a6040dcf2 100644 --- a/integrations/replicate/package.json +++ b/integrations/replicate/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/replicate", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", "replicate": "^0.18.1", "zod": "3.22.3" }, diff --git a/integrations/resend/CHANGELOG.md b/integrations/resend/CHANGELOG.md index eee06addb..e599fbe41 100644 --- a/integrations/resend/CHANGELOG.md +++ b/integrations/resend/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/resend +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/integration-kit@3.0.0-beta.22 +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/integrations/resend/package.json b/integrations/resend/package.json index d01e9b0d5..6d3262a8b 100644 --- a/integrations/resend/package.json +++ b/integrations/resend/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/resend", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "description": "The official Resend.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:^3.0.0-beta.21", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", "resend": "^2.1.0" }, "engines": { diff --git a/integrations/sendgrid/CHANGELOG.md b/integrations/sendgrid/CHANGELOG.md index 92bb58eec..3df4e79e3 100644 --- a/integrations/sendgrid/CHANGELOG.md +++ b/integrations/sendgrid/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/sendgrid +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/integration-kit@3.0.0-beta.22 +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/integrations/sendgrid/package.json b/integrations/sendgrid/package.json index a9631c1dd..1305840e4 100644 --- a/integrations/sendgrid/package.json +++ b/integrations/sendgrid/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/sendgrid", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21", - "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.21" + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22" }, "engines": { "node": ">=16.8.0" diff --git a/integrations/shopify/CHANGELOG.md b/integrations/shopify/CHANGELOG.md index a76f1cbc5..c7e1d62a3 100644 --- a/integrations/shopify/CHANGELOG.md +++ b/integrations/shopify/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/shopify +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/integration-kit@3.0.0-beta.22 +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/integrations/shopify/package.json b/integrations/shopify/package.json index ee7754c62..39e005a13 100644 --- a/integrations/shopify/package.json +++ b/integrations/shopify/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/shopify", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21", - "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.21", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22", "zod": "3.22.3" }, "engines": { diff --git a/integrations/slack/CHANGELOG.md b/integrations/slack/CHANGELOG.md index 84538d03b..bba779c61 100644 --- a/integrations/slack/CHANGELOG.md +++ b/integrations/slack/CHANGELOG.md @@ -1,5 +1,11 @@ # @trigger.dev/slack +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/integrations/slack/package.json b/integrations/slack/package.json index 247258c44..745a2af45 100644 --- a/integrations/slack/package.json +++ b/integrations/slack/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/slack", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", "zod": "3.22.3" }, "engines": { diff --git a/integrations/stripe/CHANGELOG.md b/integrations/stripe/CHANGELOG.md index bd6da7f6b..6f2defde9 100644 --- a/integrations/stripe/CHANGELOG.md +++ b/integrations/stripe/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/stripe +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/integration-kit@3.0.0-beta.22 +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/integrations/stripe/package.json b/integrations/stripe/package.json index e6d387cad..810e0f555 100644 --- a/integrations/stripe/package.json +++ b/integrations/stripe/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/stripe", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", "stripe": "^12.14.0", "zod": "3.22.3" }, diff --git a/integrations/supabase/CHANGELOG.md b/integrations/supabase/CHANGELOG.md index 92499ad20..ae0425f1a 100644 --- a/integrations/supabase/CHANGELOG.md +++ b/integrations/supabase/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/supabase +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/integration-kit@3.0.0-beta.22 +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/integrations/supabase/package.json b/integrations/supabase/package.json index e7dd55882..3907d8a0e 100644 --- a/integrations/supabase/package.json +++ b/integrations/supabase/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/supabase", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", "supabase-management-js": "^1.0.0", "zod": "3.22.3" }, diff --git a/integrations/typeform/CHANGELOG.md b/integrations/typeform/CHANGELOG.md index 103f6d73c..9c7e3d8e3 100644 --- a/integrations/typeform/CHANGELOG.md +++ b/integrations/typeform/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/typeform +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/integration-kit@3.0.0-beta.22 +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/integrations/typeform/package.json b/integrations/typeform/package.json index 9830bdd26..ee266d7c1 100644 --- a/integrations/typeform/package.json +++ b/integrations/typeform/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/typeform", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21", - "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", + "@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", "@typeform/api-client": "^1.8.0", "zod": "3.22.3" }, diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index 0db388600..00f9c61b6 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -1,5 +1,11 @@ # @trigger.dev/astro +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/packages/astro/package.json b/packages/astro/package.json index 746bfe7f5..6ebbc82fa 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,7 +1,7 @@ { "name": "@trigger.dev/astro", "description": "An Astro-native integration for Trigger.dev background jobs platform", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "main": "./dist/index.js", "types": "./dist/index.d.ts", "files": [ @@ -20,7 +20,7 @@ "build:tsup": "tsup" }, "peerDependencies": { - "@trigger.dev/sdk": "workspace:^3.0.0-beta.21" + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22" }, "devDependencies": { "astro": "^3.0.12", diff --git a/packages/cli-v3/CHANGELOG.md b/packages/cli-v3/CHANGELOG.md index eace3405a..52c728180 100644 --- a/packages/cli-v3/CHANGELOG.md +++ b/packages/cli-v3/CHANGELOG.md @@ -1,5 +1,12 @@ # trigger.dev +## 3.0.0-beta.22 + +### Patch Changes + +- ebeb79052: Add typescript as a dependency so the esbuild-decorator will work even when running in npx + - @trigger.dev/core@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/packages/cli-v3/package.json b/packages/cli-v3/package.json index a14d41c66..73bec575e 100644 --- a/packages/cli-v3/package.json +++ b/packages/cli-v3/package.json @@ -1,6 +1,6 @@ { "name": "trigger.dev", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "description": "A Command-Line Interface for Trigger.dev (v3) projects", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -86,7 +86,7 @@ "@opentelemetry/sdk-trace-base": "^1.22.0", "@opentelemetry/sdk-trace-node": "^1.22.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@trigger.dev/core": "workspace:3.0.0-beta.21", + "@trigger.dev/core": "workspace:3.0.0-beta.22", "@types/degit": "^2.8.3", "chalk": "^5.2.0", "chokidar": "^3.5.3", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 2ddeb749a..d2ad9ebcb 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,12 @@ # create-trigger +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/core@3.0.0-beta.22 +- @trigger.dev/yalt@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 4a974ba9b..0e4c12447 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/cli", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "description": "The Trigger.dev CLI", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/core-apps/CHANGELOG.md b/packages/core-apps/CHANGELOG.md index f9fc180bd..9eeb4ea27 100644 --- a/packages/core-apps/CHANGELOG.md +++ b/packages/core-apps/CHANGELOG.md @@ -1,5 +1,7 @@ # @trigger.dev/core-apps +## 3.0.0-beta.22 + ## 3.0.0-beta.21 ## 3.0.0-beta.20 diff --git a/packages/core-apps/package.json b/packages/core-apps/package.json index ef1fd6610..85c444372 100644 --- a/packages/core-apps/package.json +++ b/packages/core-apps/package.json @@ -1,7 +1,7 @@ { "name": "@trigger.dev/core-apps", "description": "Backend core code used across apps", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "private": true, "license": "MIT", "main": "./dist/index.js", diff --git a/packages/core-backend/CHANGELOG.md b/packages/core-backend/CHANGELOG.md index 952eeca04..42d69e538 100644 --- a/packages/core-backend/CHANGELOG.md +++ b/packages/core-backend/CHANGELOG.md @@ -1,5 +1,7 @@ # @trigger.dev/core-backend +## 3.0.0-beta.22 + ## 3.0.0-beta.21 ## 3.0.0-beta.20 diff --git a/packages/core-backend/package.json b/packages/core-backend/package.json index 64eac789e..e9c365beb 100644 --- a/packages/core-backend/package.json +++ b/packages/core-backend/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/core-backend", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "description": "Core code used across `@trigger.dev/sdk` and Trigger.dev server", "license": "MIT", "main": "./dist/index.js", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 3c5fd418b..5116d795d 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,7 @@ # internal-platform +## 3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/packages/core/package.json b/packages/core/package.json index 711cf01d7..b4a8ddcf3 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/core", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "description": "Core code used across the Trigger.dev SDK and platform", "license": "MIT", "main": "./dist/index.js", diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 00dbca705..cf5d78174 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -1,5 +1,7 @@ # @trigger.dev/eslint-plugin +## 3.0.0-beta.22 + ## 3.0.0-beta.21 ## 3.0.0-beta.20 diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 2426db01b..b9e34bf32 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/eslint-plugin", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "description": "ESLint plugin with trigger.dev best practices", "keywords": [ "eslint", diff --git a/packages/express/CHANGELOG.md b/packages/express/CHANGELOG.md index 57ad68207..e7c8d92be 100644 --- a/packages/express/CHANGELOG.md +++ b/packages/express/CHANGELOG.md @@ -1,5 +1,11 @@ # @trigger.dev/express +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/packages/express/package.json b/packages/express/package.json index 39487b873..b1c010cbf 100644 --- a/packages/express/package.json +++ b/packages/express/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/express", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", "@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:^3.0.0-beta.21" + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22" }, "dependencies": { "debug": "^4.3.4", diff --git a/packages/hono/CHANGELOG.md b/packages/hono/CHANGELOG.md index 08cd4bf7f..fb9258602 100644 --- a/packages/hono/CHANGELOG.md +++ b/packages/hono/CHANGELOG.md @@ -1,5 +1,11 @@ # @trigger.dev/hono +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/packages/hono/package.json b/packages/hono/package.json index 33027f092..71c066982 100644 --- a/packages/hono/package.json +++ b/packages/hono/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/hono", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21" + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22" }, "devDependencies": { "@trigger.dev/tsconfig": "workspace:*", diff --git a/packages/integration-kit/CHANGELOG.md b/packages/integration-kit/CHANGELOG.md index 178594dfa..c2b111017 100644 --- a/packages/integration-kit/CHANGELOG.md +++ b/packages/integration-kit/CHANGELOG.md @@ -1,5 +1,11 @@ # @trigger.dev/integration-kit +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/core@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/packages/integration-kit/package.json b/packages/integration-kit/package.json index 4ac2d8ac5..83caa6082 100644 --- a/packages/integration-kit/package.json +++ b/packages/integration-kit/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/integration-kit", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "description": "Trigger.dev Integration Kit has helpers to make creating integrations easier", "license": "MIT", "main": "./dist/index.js", diff --git a/packages/nestjs/CHANGELOG.md b/packages/nestjs/CHANGELOG.md index e89a4fb22..362305090 100644 --- a/packages/nestjs/CHANGELOG.md +++ b/packages/nestjs/CHANGELOG.md @@ -1,5 +1,11 @@ # @trigger.dev/nestjs +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/packages/nestjs/package.json b/packages/nestjs/package.json index 147aaeb1f..1cf08a410 100644 --- a/packages/nestjs/package.json +++ b/packages/nestjs/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/nestjs", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", "@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:^3.0.0-beta.21" + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22" }, "dependencies": { "@nestjs/common": "^10.2.4", diff --git a/packages/nextjs/CHANGELOG.md b/packages/nextjs/CHANGELOG.md index 5c6bcbcc6..3e5126f04 100644 --- a/packages/nextjs/CHANGELOG.md +++ b/packages/nextjs/CHANGELOG.md @@ -1,5 +1,11 @@ # @trigger.dev/nextjs +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index eb76e35d1..2f077310d 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/nextjs", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "description": "Trigger.dev Next.js integration", "license": "MIT", "main": "./dist/index.js", @@ -41,7 +41,7 @@ "build:tsup": "tsup" }, "peerDependencies": { - "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", "next": ">=12.0.0" }, "dependencies": { diff --git a/packages/otlp-importer/CHANGELOG.md b/packages/otlp-importer/CHANGELOG.md index 4072c93cf..6c7cf0c48 100644 --- a/packages/otlp-importer/CHANGELOG.md +++ b/packages/otlp-importer/CHANGELOG.md @@ -1,5 +1,7 @@ # @trigger.dev/otlp-importer +## 3.0.0-beta.22 + ## 3.0.0-beta.21 ## 3.0.0-beta.20 diff --git a/packages/otlp-importer/package.json b/packages/otlp-importer/package.json index 4d7ebeed8..f8df22b92 100644 --- a/packages/otlp-importer/package.json +++ b/packages/otlp-importer/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/otlp-importer", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "description": "OpenTelemetry OTLP Importer for Node.js written in TypeScript", "license": "MIT", "main": "./dist/index.js", diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index af69c38d1..94871ecec 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,5 +1,11 @@ # @trigger.dev/react +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/core@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/packages/react/package.json b/packages/react/package.json index fff769838..12b27e7b0 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/react", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "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:^3.0.0-beta.21", + "@trigger.dev/core": "workspace:^3.0.0-beta.22", "debug": "^4.3.4", "zod": "3.22.3" }, diff --git a/packages/remix/CHANGELOG.md b/packages/remix/CHANGELOG.md index be935f826..aef9cde1a 100644 --- a/packages/remix/CHANGELOG.md +++ b/packages/remix/CHANGELOG.md @@ -1,5 +1,11 @@ # @trigger.dev/remix +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/packages/remix/package.json b/packages/remix/package.json index 3e07e9bc3..bea20bb4c 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/remix", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "description": "Trigger.dev Remix integration", "license": "MIT", "main": "./dist/index.js", @@ -39,7 +39,7 @@ "build:tsup": "tsup" }, "peerDependencies": { - "@trigger.dev/sdk": "workspace:^3.0.0-beta.21", + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22", "@remix-run/server-runtime": ">1.19.0" }, "dependencies": { diff --git a/packages/sveltekit/CHANGELOG.md b/packages/sveltekit/CHANGELOG.md index 2168f5c47..dbd580306 100644 --- a/packages/sveltekit/CHANGELOG.md +++ b/packages/sveltekit/CHANGELOG.md @@ -1,5 +1,11 @@ # @trigger.dev/sveltekit +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index ba6074b17..4746f628e 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/sveltekit", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "description": "Trigger.dev svelteKit integration", "license": "MIT", "main": "./dist/index.js", @@ -39,7 +39,7 @@ "build:tsup": "tsup" }, "peerDependencies": { - "@trigger.dev/sdk": "workspace:^3.0.0-beta.21" + "@trigger.dev/sdk": "workspace:^3.0.0-beta.22" }, "dependencies": { "debug": "^4.3.4" diff --git a/packages/testing/CHANGELOG.md b/packages/testing/CHANGELOG.md index 8ac183374..f78c82e17 100644 --- a/packages/testing/CHANGELOG.md +++ b/packages/testing/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/testing +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/core@3.0.0-beta.22 +- @trigger.dev/sdk@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/packages/testing/package.json b/packages/testing/package.json index f6612ae65..f8bbb1632 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -1,7 +1,7 @@ { "name": "@trigger.dev/testing", "description": "A collection of useful tools to write tests for Trigger.dev.", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "license": "MIT", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/trigger-sdk/CHANGELOG.md b/packages/trigger-sdk/CHANGELOG.md index 3e16565cc..7aafd9e52 100644 --- a/packages/trigger-sdk/CHANGELOG.md +++ b/packages/trigger-sdk/CHANGELOG.md @@ -1,5 +1,12 @@ # @trigger.dev/sdk +## 3.0.0-beta.22 + +### Patch Changes + +- @trigger.dev/core@3.0.0-beta.22 +- @trigger.dev/core-backend@3.0.0-beta.22 + ## 3.0.0-beta.21 ### Patch Changes diff --git a/packages/trigger-sdk/package.json b/packages/trigger-sdk/package.json index f6caa234c..2475542d7 100644 --- a/packages/trigger-sdk/package.json +++ b/packages/trigger-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/sdk", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "description": "trigger.dev Node.JS SDK", "license": "MIT", "main": "./dist/index.js", @@ -48,8 +48,8 @@ "@opentelemetry/api": "^1.8.0", "@opentelemetry/api-logs": "^0.48.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@trigger.dev/core": "workspace:3.0.0-beta.21", - "@trigger.dev/core-backend": "workspace:3.0.0-beta.21", + "@trigger.dev/core": "workspace:3.0.0-beta.22", + "@trigger.dev/core-backend": "workspace:3.0.0-beta.22", "chalk": "^5.2.0", "cronstrue": "^2.21.0", "debug": "^4.3.4", diff --git a/packages/yalt/CHANGELOG.md b/packages/yalt/CHANGELOG.md index 224f69e47..24a4f1696 100644 --- a/packages/yalt/CHANGELOG.md +++ b/packages/yalt/CHANGELOG.md @@ -1,5 +1,7 @@ # @trigger.dev/yalt +## 3.0.0-beta.22 + ## 3.0.0-beta.21 ## 3.0.0-beta.20 diff --git a/packages/yalt/package.json b/packages/yalt/package.json index 03a31cf37..5e66fbb0b 100644 --- a/packages/yalt/package.json +++ b/packages/yalt/package.json @@ -1,6 +1,6 @@ { "name": "@trigger.dev/yalt", - "version": "3.0.0-beta.21", + "version": "3.0.0-beta.22", "description": "yalt.dev client library", "license": "MIT", "main": "./dist/index.js", From 2c68473cc8c52e61f3c890590b17f2b9928309df Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Fri, 26 Apr 2024 17:14:11 +0100 Subject: [PATCH 10/10] Fix pnpm lock file --- pnpm-lock.yaml | 70 +++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 96aaafb6f..598801951 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -836,10 +836,10 @@ importers: integrations/airtable: dependencies: '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/trigger-sdk airtable: specifier: ^0.12.1 @@ -879,10 +879,10 @@ importers: specifier: ^12.0.10 version: 12.0.10 '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/trigger-sdk octokit: specifier: ^3.1.2 @@ -922,10 +922,10 @@ importers: specifier: ^8.0.0 version: 8.0.0 '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/trigger-sdk zod: specifier: 3.22.3 @@ -953,10 +953,10 @@ importers: integrations/openai: dependencies: '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/trigger-sdk openai: specifier: ^4.16.1 @@ -996,10 +996,10 @@ importers: specifier: ^2.7.0 version: 2.7.0 '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/trigger-sdk devDependencies: '@trigger.dev/tsconfig': @@ -1024,10 +1024,10 @@ importers: integrations/replicate: dependencies: '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/trigger-sdk replicate: specifier: ^0.18.1 @@ -1058,10 +1058,10 @@ importers: integrations/resend: dependencies: '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/trigger-sdk resend: specifier: ^2.1.0 @@ -1092,10 +1092,10 @@ importers: specifier: ^7.7.0 version: 7.7.0 '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/trigger-sdk devDependencies: '@trigger.dev/tsconfig': @@ -1123,10 +1123,10 @@ importers: specifier: ^8.0.2 version: 8.0.2 '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/trigger-sdk zod: specifier: 3.22.3 @@ -1157,7 +1157,7 @@ importers: specifier: ^6.8.1 version: 6.8.1 '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/trigger-sdk zod: specifier: 3.22.3 @@ -1185,10 +1185,10 @@ importers: integrations/stripe: dependencies: '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/trigger-sdk stripe: specifier: ^12.14.0 @@ -1222,10 +1222,10 @@ importers: specifier: ^2.26.0 version: 2.31.0 '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/trigger-sdk supabase-management-js: specifier: ^1.0.0 @@ -1256,10 +1256,10 @@ importers: integrations/typeform: dependencies: '@trigger.dev/integration-kit': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/integration-kit '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../../packages/trigger-sdk '@typeform/api-client': specifier: ^1.8.0 @@ -1287,7 +1287,7 @@ importers: packages/astro: dependencies: '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../trigger-sdk debug: specifier: ^4.3.4 @@ -1505,7 +1505,7 @@ importers: specifier: ^1.22.0 version: 1.22.0 '@trigger.dev/core': - specifier: workspace:3.0.0-beta.21 + specifier: workspace:3.0.0-beta.22 version: link:../core '@types/degit': specifier: ^2.8.3 @@ -1947,7 +1947,7 @@ importers: version: 4.18.2 devDependencies: '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../trigger-sdk '@trigger.dev/tsconfig': specifier: workspace:* @@ -2042,7 +2042,7 @@ importers: version: 4.3.4(supports-color@8.1.1) devDependencies: '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../trigger-sdk '@trigger.dev/tsconfig': specifier: workspace:* @@ -2075,7 +2075,7 @@ importers: packages/nextjs: dependencies: '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../trigger-sdk debug: specifier: ^4.3.4 @@ -2161,7 +2161,7 @@ importers: specifier: 5.0.0-beta.2 version: 5.0.0-beta.2(react@18.2.0) '@trigger.dev/core': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../core debug: specifier: ^4.3.4 @@ -2204,7 +2204,7 @@ importers: packages/remix: dependencies: '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../trigger-sdk debug: specifier: ^4.3.4 @@ -2241,7 +2241,7 @@ importers: packages/sveltekit: dependencies: '@trigger.dev/sdk': - specifier: workspace:^3.0.0-beta.21 + specifier: workspace:^3.0.0-beta.22 version: link:../trigger-sdk debug: specifier: ^4.3.4 @@ -2315,10 +2315,10 @@ importers: specifier: ^1.22.0 version: 1.22.0 '@trigger.dev/core': - specifier: workspace:3.0.0-beta.21 + specifier: workspace:3.0.0-beta.22 version: link:../core '@trigger.dev/core-backend': - specifier: workspace:3.0.0-beta.21 + specifier: workspace:3.0.0-beta.22 version: link:../core-backend chalk: specifier: ^5.2.0