From fd4c905ffd12ba4330700e15fd6ca962283700bd Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Thu, 6 Mar 2025 11:23:18 +0000 Subject: [PATCH] Add attempt metrics in dev (prod WIP). Added max concurrent runs setting to dev using p-limit --- apps/webapp/app/env.server.ts | 3 + .../webapp/app/routes/engine.v1.dev.config.ts | 1 + .../run-engine/src/engine/index.ts | 1 + packages/cli-v3/package.json | 1 + packages/cli-v3/src/commands/dev.ts | 5 + packages/cli-v3/src/dev/devSupervisor.ts | 34 +++++- .../src/entryPoints/dev-run-controller.ts | 36 +++++- .../cli-v3/src/entryPoints/dev-run-worker.ts | 31 +++++- .../src/entryPoints/managed-run-worker.ts | 31 ++++-- packages/core/src/v3/schemas/api.ts | 1 + packages/core/src/v3/schemas/runEngine.ts | 1 + pnpm-lock.yaml | 105 ++++++------------ references/v3-catalog/package.json | 4 +- 13 files changed, 161 insertions(+), 93 deletions(-) diff --git a/apps/webapp/app/env.server.ts b/apps/webapp/app/env.server.ts index c6d2465186..9a108a9406 100644 --- a/apps/webapp/app/env.server.ts +++ b/apps/webapp/app/env.server.ts @@ -571,6 +571,9 @@ const EnvironmentSchema = z.object({ /** The max number of runs per API call that we'll dequeue in DEV */ DEV_DEQUEUE_MAX_RUNS_PER_PULL: z.coerce.number().int().default(10), + /** The maximum concurrent local run processes executing at once in dev */ + DEV_MAX_CONCURRENT_RUNS: z.coerce.number().int().default(25), + LEGACY_RUN_ENGINE_WORKER_ENABLED: z.string().default(process.env.WORKER_ENABLED ?? "true"), LEGACY_RUN_ENGINE_WORKER_CONCURRENCY_WORKERS: z.coerce.number().int().default(2), LEGACY_RUN_ENGINE_WORKER_CONCURRENCY_TASKS_PER_WORKER: z.coerce.number().int().default(1), diff --git a/apps/webapp/app/routes/engine.v1.dev.config.ts b/apps/webapp/app/routes/engine.v1.dev.config.ts index 501b6e80de..0a4c8e4ba5 100644 --- a/apps/webapp/app/routes/engine.v1.dev.config.ts +++ b/apps/webapp/app/routes/engine.v1.dev.config.ts @@ -20,6 +20,7 @@ export const loader = createLoaderApiRoute( environmentId: authentication.environment.id, dequeueIntervalWithRun: env.DEV_DEQUEUE_INTERVAL_WITH_RUN, dequeueIntervalWithoutRun: env.DEV_DEQUEUE_INTERVAL_WITHOUT_RUN, + maxConcurrentRuns: env.DEV_MAX_CONCURRENT_RUNS, }); } catch (error) { logger.error("Failed to get dev settings", { diff --git a/internal-packages/run-engine/src/engine/index.ts b/internal-packages/run-engine/src/engine/index.ts index 1e8ada42a7..a3e358a359 100644 --- a/internal-packages/run-engine/src/engine/index.ts +++ b/internal-packages/run-engine/src/engine/index.ts @@ -914,6 +914,7 @@ export class RunEngine { return { version: "1" as const, + dequeuedAt: new Date(), snapshot: { id: newSnapshot.id, friendlyId: newSnapshot.friendlyId, diff --git a/packages/cli-v3/package.json b/packages/cli-v3/package.json index 7e7c422315..1992498e5b 100644 --- a/packages/cli-v3/package.json +++ b/packages/cli-v3/package.json @@ -110,6 +110,7 @@ "nypm": "^0.3.9", "object-hash": "^3.0.0", "open": "^10.0.3", + "p-limit": "^6.2.0", "p-retry": "^6.1.0", "partysocket": "^1.0.2", "pkg-types": "^1.1.3", diff --git a/packages/cli-v3/src/commands/dev.ts b/packages/cli-v3/src/commands/dev.ts index 7a9726dc56..479a472171 100644 --- a/packages/cli-v3/src/commands/dev.ts +++ b/packages/cli-v3/src/commands/dev.ts @@ -19,6 +19,7 @@ const DevCommandOptions = CommonCommandOptions.extend({ skipUpdateCheck: z.boolean().default(false), envFile: z.string().optional(), keepTmpFiles: z.boolean().default(false), + maxConcurrentRuns: z.coerce.number().optional(), }); export type DevCommandOptions = z.infer; @@ -37,6 +38,10 @@ export function configureDevCommand(program: Command) { "--env-file ", "Path to the .env file to use for the dev session. Defaults to .env in the project directory." ) + .option( + "--max-concurrent-runs ", + "The maximum number of concurrent runs to allow in the dev session" + ) .option("--debug-otel", "Enable OpenTelemetry debugging") .option("--skip-update-check", "Skip checking for @trigger.dev package updates") .option( diff --git a/packages/cli-v3/src/dev/devSupervisor.ts b/packages/cli-v3/src/dev/devSupervisor.ts index 0c74d2ab51..75865cc1f3 100644 --- a/packages/cli-v3/src/dev/devSupervisor.ts +++ b/packages/cli-v3/src/dev/devSupervisor.ts @@ -24,6 +24,7 @@ import { WorkerClientToServerEvents, WorkerServerToClientEvents, } from "@trigger.dev/core/v3/workers"; +import pLimit from "p-limit"; export type WorkerRuntimeOptions = { name: string | undefined; @@ -65,6 +66,8 @@ class DevSupervisor implements WorkerRuntime { private socketConnections = new Set(); + private runLimiter?: ReturnType; + constructor(public readonly options: WorkerRuntimeOptions) {} async init(): Promise { @@ -81,6 +84,15 @@ class DevSupervisor implements WorkerRuntime { logger.debug("[DevSupervisor] Got dev settings", { settings: settings.data }); this.config = settings.data; + const maxConcurrentRuns = Math.min( + this.config.maxConcurrentRuns, + this.options.args.maxConcurrentRuns ?? this.config.maxConcurrentRuns + ); + + logger.debug("[DevSupervisor] Using maxConcurrentRuns", { maxConcurrentRuns }); + + this.runLimiter = pLimit(maxConcurrentRuns); + this.#createSocket(); //start an SSE connection for presence @@ -178,6 +190,14 @@ class DevSupervisor implements WorkerRuntime { return; } + if ( + this.runLimiter && + this.runLimiter.activeCount + this.runLimiter.pendingCount > this.runLimiter.concurrency + ) { + logger.debug(`[DevSupervisor] dequeueRuns. Run limit reached, trying again later`); + setTimeout(() => this.#dequeueRuns(), this.config.dequeueIntervalWithoutRun); + } + //get relevant versions //ignore deprecated and the latest worker const oldWorkerIds = this.#getActiveOldWorkers(); @@ -287,10 +307,16 @@ class DevSupervisor implements WorkerRuntime { this.runControllers.set(message.run.friendlyId, runController); - //don't await for run completion, we want to dequeue more runs - runController.start(message).then(() => { - logger.debug("[DevSupervisor] Run started", { runId: message.run.friendlyId }); - }); + if (this.runLimiter) { + this.runLimiter(() => runController.start(message)).then(() => { + logger.debug("[DevSupervisor] Run started", { runId: message.run.friendlyId }); + }); + } else { + //don't await for run completion, we want to dequeue more runs + runController.start(message).then(() => { + logger.debug("[DevSupervisor] Run started", { runId: message.run.friendlyId }); + }); + } } setTimeout(() => this.#dequeueRuns(), this.config.dequeueIntervalWithRun); diff --git a/packages/cli-v3/src/entryPoints/dev-run-controller.ts b/packages/cli-v3/src/entryPoints/dev-run-controller.ts index 46cfdfc0a8..68c051d8f0 100644 --- a/packages/cli-v3/src/entryPoints/dev-run-controller.ts +++ b/packages/cli-v3/src/entryPoints/dev-run-controller.ts @@ -5,6 +5,7 @@ import { LogLevel, RunExecutionData, TaskRunExecution, + TaskRunExecutionMetrics, TaskRunExecutionResult, TaskRunFailedExecutionResult, } from "@trigger.dev/core/v3"; @@ -475,10 +476,12 @@ export class DevRunController { private async startAndExecuteRunAttempt({ runFriendlyId, snapshotFriendlyId, + dequeuedAt, isWarmStart = false, }: { runFriendlyId: string; snapshotFriendlyId: string; + dequeuedAt?: Date; isWarmStart?: boolean; }) { this.subscribeToRunNotifications({ @@ -486,6 +489,8 @@ export class DevRunController { snapshot: { friendlyId: snapshotFriendlyId }, }); + const attemptStartedAt = Date.now(); + const start = await this.httpClient.dev.startRunAttempt(runFriendlyId, snapshotFriendlyId); if (!start.success) { @@ -495,6 +500,8 @@ export class DevRunController { return; } + const attemptDuration = Date.now() - attemptStartedAt; + const { run, snapshot, execution, envVars } = start.data; eventBus.emit("runStarted", this.opts.worker, execution); @@ -508,8 +515,28 @@ export class DevRunController { // This is the only case where incrementing the attempt number is allowed this.enterRunPhase(run, snapshot); + const metrics = [ + { + name: "start", + event: "create_attempt", + timestamp: attemptStartedAt, + duration: attemptDuration, + }, + ].concat( + dequeuedAt + ? [ + { + name: "start", + event: "dequeue", + timestamp: dequeuedAt.getTime(), + duration: 0, + }, + ] + : [] + ); + try { - return await this.executeRun({ run, snapshot, execution, envVars }); + return await this.executeRun({ run, snapshot, execution, envVars, metrics }); } catch (error) { // TODO: Handle the case where we're in the warm start phase or executing a new run // This can happen if we kill the run while it's still executing, e.g. after receiving an attempt number mismatch @@ -566,7 +593,10 @@ export class DevRunController { snapshot, execution, envVars, - }: WorkloadRunAttemptStartResponseBody) { + metrics, + }: WorkloadRunAttemptStartResponseBody & { + metrics?: TaskRunExecutionMetrics; + }) { if (!this.opts.worker.serverWorker) { throw new Error(`No server worker for Dev ${run.friendlyId}`); } @@ -594,6 +624,7 @@ export class DevRunController { payload: { execution, traceContext: execution.run.traceContext ?? {}, + metrics, }, messageId: run.friendlyId, }); @@ -753,6 +784,7 @@ export class DevRunController { await this.startAndExecuteRunAttempt({ runFriendlyId: dequeueMessage.run.friendlyId, snapshotFriendlyId: dequeueMessage.snapshot.friendlyId, + dequeuedAt: dequeueMessage.dequeuedAt, }).finally(async () => {}); } diff --git a/packages/cli-v3/src/entryPoints/dev-run-worker.ts b/packages/cli-v3/src/entryPoints/dev-run-worker.ts index d196707ec0..30ff92ddc3 100644 --- a/packages/cli-v3/src/entryPoints/dev-run-worker.ts +++ b/packages/cli-v3/src/entryPoints/dev-run-worker.ts @@ -17,6 +17,7 @@ import { waitUntil, WorkerManifest, WorkerToExecutorMessageCatalog, + runTimelineMetrics, } from "@trigger.dev/core/v3"; import { TriggerTracer } from "@trigger.dev/core/v3/tracer"; import { @@ -36,6 +37,7 @@ import { TracingSDK, usage, UsageTimeoutManager, + StandardRunTimelineMetricsManager, } from "@trigger.dev/core/v3/workers"; import { ZodIpcConnection } from "@trigger.dev/core/v3/zodIpc"; import { readFile } from "node:fs/promises"; @@ -87,6 +89,10 @@ process.on("uncaughtException", function (error, origin) { const heartbeatIntervalMs = getEnvVar("HEARTBEAT_INTERVAL_MS"); +const standardRunTimelineMetricsManager = new StandardRunTimelineMetricsManager(); +runTimelineMetrics.setGlobalManager(standardRunTimelineMetricsManager); +standardRunTimelineMetricsManager.seedMetricsFromEnvironment(); + const devUsageManager = new DevUsageManager(); usage.setGlobalUsageManager(devUsageManager); timeout.setGlobalManager(new UsageTimeoutManager(devUsageManager)); @@ -189,9 +195,11 @@ const zodIpc = new ZodIpcConnection({ emitSchema: ExecutorToWorkerMessageCatalog, process, handlers: { - EXECUTE_TASK_RUN: async ({ execution, traceContext, metadata }, sender) => { + EXECUTE_TASK_RUN: async ({ execution, traceContext, metadata, metrics }, sender) => { log(`[${new Date().toISOString()}] Received EXECUTE_TASK_RUN`, execution); + standardRunTimelineMetricsManager.registerMetricsFromExecution(metrics); + if (_isRunning) { logError("Worker is already running a task"); @@ -246,11 +254,22 @@ const zodIpc = new ZodIpcConnection({ } try { - const beforeImport = performance.now(); - await import(normalizeImportPath(taskManifest.entryPoint)); - const durationMs = performance.now() - beforeImport; - - log(`Imported task ${execution.task.id} [${taskManifest.entryPoint}] in ${durationMs}ms`); + await runTimelineMetrics.measureMetric( + "trigger.dev/start", + "import", + { + entryPoint: taskManifest.entryPoint, + }, + async () => { + const beforeImport = performance.now(); + await import(normalizeImportPath(taskManifest.entryPoint)); + const durationMs = performance.now() - beforeImport; + + log( + `Imported task ${execution.task.id} [${taskManifest.entryPoint}] in ${durationMs}ms` + ); + } + ); } catch (err) { logError(`Failed to import task ${execution.task.id}`, err); diff --git a/packages/cli-v3/src/entryPoints/managed-run-worker.ts b/packages/cli-v3/src/entryPoints/managed-run-worker.ts index c196f3ca0d..8749801b4d 100644 --- a/packages/cli-v3/src/entryPoints/managed-run-worker.ts +++ b/packages/cli-v3/src/entryPoints/managed-run-worker.ts @@ -17,6 +17,7 @@ import { runMetadata, waitUntil, apiClientManager, + runTimelineMetrics, } from "@trigger.dev/core/v3"; import { TriggerTracer } from "@trigger.dev/core/v3/tracer"; import { @@ -37,6 +38,7 @@ import { StandardMetadataManager, StandardWaitUntilManager, ManagedRuntimeManager, + StandardRunTimelineMetricsManager, } from "@trigger.dev/core/v3/workers"; import { ZodIpcConnection } from "@trigger.dev/core/v3/zodIpc"; import { readFile } from "node:fs/promises"; @@ -91,6 +93,10 @@ const usageEventUrl = getEnvVar("USAGE_EVENT_URL"); const triggerJWT = getEnvVar("TRIGGER_JWT"); const heartbeatIntervalMs = getEnvVar("HEARTBEAT_INTERVAL_MS"); +const standardRunTimelineMetricsManager = new StandardRunTimelineMetricsManager(); +runTimelineMetrics.setGlobalManager(standardRunTimelineMetricsManager); +standardRunTimelineMetricsManager.seedMetricsFromEnvironment(); + const devUsageManager = new DevUsageManager(); const prodUsageManager = new ProdUsageManager(devUsageManager, { heartbeatIntervalMs: usageIntervalMs ? parseInt(usageIntervalMs, 10) : undefined, @@ -199,7 +205,9 @@ const zodIpc = new ZodIpcConnection({ emitSchema: ExecutorToWorkerMessageCatalog, process, handlers: { - EXECUTE_TASK_RUN: async ({ execution, traceContext, metadata }, sender) => { + EXECUTE_TASK_RUN: async ({ execution, traceContext, metadata, metrics }, sender) => { + standardRunTimelineMetricsManager.registerMetricsFromExecution(metrics); + console.log(`[${new Date().toISOString()}] Received EXECUTE_TASK_RUN`, execution); if (_isRunning) { @@ -256,12 +264,21 @@ const zodIpc = new ZodIpcConnection({ } try { - const beforeImport = performance.now(); - await import(normalizeImportPath(taskManifest.entryPoint)); - const durationMs = performance.now() - beforeImport; - - console.log( - `Imported task ${execution.task.id} [${taskManifest.entryPoint}] in ${durationMs}ms` + await runTimelineMetrics.measureMetric( + "trigger.dev/start", + "import", + { + entryPoint: taskManifest.entryPoint, + }, + async () => { + const beforeImport = performance.now(); + await import(normalizeImportPath(taskManifest.entryPoint)); + const durationMs = performance.now() - beforeImport; + + console.log( + `Imported task ${execution.task.id} [${taskManifest.entryPoint}] in ${durationMs}ms` + ); + } ); } catch (err) { console.error(`Failed to import task ${execution.task.id}`, err); diff --git a/packages/core/src/v3/schemas/api.ts b/packages/core/src/v3/schemas/api.ts index 205d9b6a78..ff2028f7c3 100644 --- a/packages/core/src/v3/schemas/api.ts +++ b/packages/core/src/v3/schemas/api.ts @@ -427,6 +427,7 @@ export const DevConfigResponseBody = z.object({ environmentId: z.string(), dequeueIntervalWithRun: z.number(), dequeueIntervalWithoutRun: z.number(), + maxConcurrentRuns: z.number(), }); export type DevConfigResponseBody = z.infer; diff --git a/packages/core/src/v3/schemas/runEngine.ts b/packages/core/src/v3/schemas/runEngine.ts index a93ca96a13..397630cb69 100644 --- a/packages/core/src/v3/schemas/runEngine.ts +++ b/packages/core/src/v3/schemas/runEngine.ts @@ -139,6 +139,7 @@ export type ExecutionResult = z.infer; export const DequeuedMessage = z.object({ version: z.literal("1"), snapshot: ExecutionSnapshot, + dequeuedAt: z.coerce.date(), image: z.string().optional(), checkpoint: z .object({ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f23720ce36..6258ccfb09 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -654,7 +654,7 @@ importers: version: link:../../internal-packages/testcontainers '@remix-run/dev': specifier: 2.1.0 - version: 2.1.0(@remix-run/serve@2.1.0)(@types/node@18.11.18)(ts-node@10.9.1)(typescript@5.5.4) + version: 2.1.0(@remix-run/serve@2.1.0)(@types/node@20.14.14)(ts-node@10.9.1)(typescript@5.5.4) '@remix-run/eslint-config': specifier: 2.1.0 version: 2.1.0(eslint@8.31.0)(react@18.2.0)(typescript@5.5.4) @@ -825,7 +825,7 @@ importers: version: 3.4.1(ts-node@10.9.1) ts-node: specifier: ^10.7.0 - version: 10.9.1(@swc/core@1.3.26)(@types/node@18.11.18)(typescript@5.5.4) + version: 10.9.1(@swc/core@1.3.26)(@types/node@20.14.14)(typescript@5.5.4) tsconfig-paths: specifier: ^3.14.1 version: 3.14.1 @@ -834,7 +834,7 @@ importers: version: 4.0.5(typescript@5.5.4) vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@18.11.18) + version: 1.4.0(@types/node@20.14.14) docs: {} @@ -1184,6 +1184,9 @@ importers: open: specifier: ^10.0.3 version: 10.0.3 + p-limit: + specifier: ^6.2.0 + version: 6.2.0 p-retry: specifier: ^6.1.0 version: 6.1.0 @@ -1990,7 +1993,7 @@ importers: version: link:../../packages/cli-v3 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.4.2)(typescript@5.5.4) + version: 10.9.2(@types/node@20.14.14)(typescript@5.5.4) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 @@ -14829,7 +14832,7 @@ packages: - encoding dev: false - /@remix-run/dev@2.1.0(@remix-run/serve@2.1.0)(@types/node@18.11.18)(ts-node@10.9.1)(typescript@5.5.4): + /@remix-run/dev@2.1.0(@remix-run/serve@2.1.0)(@types/node@20.14.14)(ts-node@10.9.1)(typescript@5.5.4): resolution: {integrity: sha512-Hn5lw46F+a48dp5uHKe68ckaHgdStW4+PmLod+LMFEqrMbkF0j4XD1ousebxlv989o0Uy/OLgfRMgMy4cBOvHg==} engines: {node: '>=18.0.0'} hasBin: true @@ -14854,7 +14857,7 @@ packages: '@remix-run/serve': 2.1.0(typescript@5.5.4) '@remix-run/server-runtime': 2.1.0(typescript@5.5.4) '@types/mdx': 2.0.5 - '@vanilla-extract/integration': 6.2.1(@types/node@18.11.18) + '@vanilla-extract/integration': 6.2.1(@types/node@20.14.14) arg: 5.0.2 cacache: 17.1.4 chalk: 4.1.2 @@ -17041,9 +17044,6 @@ packages: /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - /@types/node@18.11.18: - resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} - /@types/node@18.19.20: resolution: {integrity: sha512-SKXZvI375jkpvAj8o+5U2518XQv76mAsixqfXiVyWyXZbVWQK25RurFovYpVIxVzul0rZoH58V/3SkEnm7s3qA==} dependencies: @@ -17066,9 +17066,6 @@ packages: dependencies: undici-types: 5.26.5 - /@types/node@20.4.2: - resolution: {integrity: sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==} - /@types/nodemailer@6.4.17: resolution: {integrity: sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww==} dependencies: @@ -17622,7 +17619,7 @@ packages: outdent: 0.8.0 dev: true - /@vanilla-extract/integration@6.2.1(@types/node@18.11.18): + /@vanilla-extract/integration@6.2.1(@types/node@20.14.14): resolution: {integrity: sha512-+xYJz07G7TFAMZGrOqArOsURG+xcYvqctujEkANjw2McCBvGEK505RxQqOuNiA9Mi9hgGdNp2JedSa94f3eoLg==} dependencies: '@babel/core': 7.22.17 @@ -17636,8 +17633,8 @@ packages: lodash: 4.17.21 mlly: 1.7.1 outdent: 0.8.0 - vite: 4.4.9(@types/node@18.11.18) - vite-node: 0.28.5(@types/node@18.11.18) + vite: 4.4.9(@types/node@20.14.14) + vite-node: 0.28.5(@types/node@20.14.14) transitivePeerDependencies: - '@types/node' - less @@ -27068,7 +27065,7 @@ packages: dependencies: lilconfig: 2.1.0 postcss: 8.4.29 - ts-node: 10.9.1(@swc/core@1.3.26)(@types/node@18.11.18)(typescript@5.5.4) + ts-node: 10.9.1(@swc/core@1.3.26)(@types/node@20.14.14)(typescript@5.5.4) yaml: 2.3.1 dev: true @@ -27086,7 +27083,7 @@ packages: dependencies: lilconfig: 2.1.0 postcss: 8.4.44 - ts-node: 10.9.1(@swc/core@1.3.26)(@types/node@18.11.18)(typescript@5.5.4) + ts-node: 10.9.1(@swc/core@1.3.26)(@types/node@20.14.14)(typescript@5.5.4) yaml: 2.3.1 /postcss-loader@8.1.1(postcss@8.4.44)(typescript@5.5.4)(webpack@5.88.2): @@ -30831,7 +30828,7 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - /ts-node@10.9.1(@swc/core@1.3.26)(@types/node@18.11.18)(typescript@5.5.4): + /ts-node@10.9.1(@swc/core@1.3.26)(@types/node@20.14.14)(typescript@5.5.4): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -30851,7 +30848,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.11.18 + '@types/node': 20.14.14 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -30862,7 +30859,7 @@ packages: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - /ts-node@10.9.2(@types/node@20.4.2)(typescript@5.5.4): + /ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -30881,7 +30878,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 20.4.2 + '@types/node': 20.14.14 acorn: 8.12.1 acorn-walk: 8.3.2 arg: 4.1.3 @@ -31335,7 +31332,7 @@ packages: 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.5.4) + ts-node: 10.9.2(@types/node@20.14.14)(typescript@5.5.4) tslib: 2.6.2 uuid: 9.0.0 yargs: 17.7.2 @@ -31897,7 +31894,7 @@ packages: d3-timer: 3.0.1 dev: false - /vite-node@0.28.5(@types/node@18.11.18): + /vite-node@0.28.5(@types/node@18.19.20): resolution: {integrity: sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==} engines: {node: '>=v14.16.0'} hasBin: true @@ -31909,7 +31906,7 @@ packages: picocolors: 1.1.1 source-map: 0.6.1 source-map-support: 0.5.21 - vite: 4.4.9(@types/node@18.11.18) + vite: 4.4.9(@types/node@18.19.20) transitivePeerDependencies: - '@types/node' - less @@ -31921,7 +31918,7 @@ packages: - terser dev: true - /vite-node@0.28.5(@types/node@18.19.20): + /vite-node@0.28.5(@types/node@20.14.14): resolution: {integrity: sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==} engines: {node: '>=v14.16.0'} hasBin: true @@ -31933,7 +31930,7 @@ packages: picocolors: 1.1.1 source-map: 0.6.1 source-map-support: 0.5.21 - vite: 4.4.9(@types/node@18.19.20) + vite: 4.4.9(@types/node@20.14.14) transitivePeerDependencies: - '@types/node' - less @@ -31945,7 +31942,7 @@ packages: - terser dev: true - /vite-node@1.4.0(@types/node@18.11.18): + /vite-node@1.4.0(@types/node@20.14.14): resolution: {integrity: sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -31954,7 +31951,7 @@ packages: debug: 4.3.7 pathe: 1.1.2 picocolors: 1.1.1 - vite: 5.2.7(@types/node@18.11.18) + vite: 5.2.7(@types/node@20.14.14) transitivePeerDependencies: - '@types/node' - less @@ -32087,7 +32084,7 @@ packages: fsevents: 2.3.3 dev: true - /vite@4.4.9(@types/node@18.11.18): + /vite@4.4.9(@types/node@18.19.20): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -32115,7 +32112,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.11.18 + '@types/node': 18.19.20 esbuild: 0.18.11 postcss: 8.4.44 rollup: 3.29.1 @@ -32123,7 +32120,7 @@ packages: fsevents: 2.3.3 dev: true - /vite@4.4.9(@types/node@18.19.20): + /vite@4.4.9(@types/node@20.14.14): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -32151,7 +32148,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.19.20 + '@types/node': 20.14.14 esbuild: 0.18.11 postcss: 8.4.44 rollup: 3.29.1 @@ -32159,42 +32156,6 @@ packages: fsevents: 2.3.3 dev: true - /vite@5.2.7(@types/node@18.11.18): - resolution: {integrity: sha512-k14PWOKLI6pMaSzAuGtT+Cf0YmIx12z9YGon39onaJNy8DLBfBJrzg9FQEmkAM5lpHBZs9wksWAsyF/HkpEwJA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 18.11.18 - esbuild: 0.20.2 - postcss: 8.4.44 - rollup: 4.13.2 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /vite@5.2.7(@types/node@20.14.14): resolution: {integrity: sha512-k14PWOKLI6pMaSzAuGtT+Cf0YmIx12z9YGon39onaJNy8DLBfBJrzg9FQEmkAM5lpHBZs9wksWAsyF/HkpEwJA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -32287,7 +32248,7 @@ packages: - terser dev: true - /vitest@1.4.0(@types/node@18.11.18): + /vitest@1.4.0(@types/node@20.14.14): resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -32312,7 +32273,7 @@ packages: jsdom: optional: true dependencies: - '@types/node': 18.11.18 + '@types/node': 20.14.14 '@vitest/expect': 1.4.0 '@vitest/runner': 1.4.0 '@vitest/snapshot': 1.4.0 @@ -32330,8 +32291,8 @@ packages: strip-literal: 2.1.0 tinybench: 2.6.0 tinypool: 0.8.3 - vite: 5.2.7(@types/node@18.11.18) - vite-node: 1.4.0(@types/node@18.11.18) + vite: 5.2.7(@types/node@20.14.14) + vite-node: 1.4.0(@types/node@20.14.14) why-is-node-running: 2.2.2 transitivePeerDependencies: - less diff --git a/references/v3-catalog/package.json b/references/v3-catalog/package.json index 52732b334e..ee15d2e5e9 100644 --- a/references/v3-catalog/package.json +++ b/references/v3-catalog/package.json @@ -6,7 +6,7 @@ "schema": "./prisma/schema.zmodel" }, "scripts": { - "dev:trigger": "trigger dev", + "dev": "trigger dev", "deploy": "trigger deploy --self-hosted --load-image", "management": "tsx -r dotenv/config ./src/management.ts", "queues": "ts-node -r dotenv/config -r tsconfig-paths/register ./src/queues.ts", @@ -84,4 +84,4 @@ "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0" } -} +} \ No newline at end of file