Skip to content

Commit 222b108

Browse files
committed
Fix regression that broke superjson behavior for the replay flow
1 parent 8690878 commit 222b108

2 files changed

Lines changed: 32 additions & 13 deletions

File tree

apps/webapp/app/v3/replayTask.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ export const ReplayRunData = z
99
.optional()
1010
.transform((val, ctx) => {
1111
if (!val) {
12-
return {};
12+
return "{}";
1313
}
1414

1515
try {
16-
return JSON.parse(val);
16+
JSON.parse(val);
17+
return val;
1718
} catch {
1819
ctx.addIssue({
1920
code: z.ZodIssueCode.custom,

apps/webapp/app/v3/services/replayTaskRun.server.ts

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,19 @@ import {
22
type MachinePresetName,
33
conditionallyImportPacket,
44
parsePacket,
5+
stringifyIO,
56
} from "@trigger.dev/core/v3";
67
import { type TaskRun } from "@trigger.dev/database";
78
import { findEnvironmentById } from "~/models/runtimeEnvironment.server";
8-
import { getTagsForRunId } from "~/models/taskRunTag.server";
99
import { logger } from "~/services/logger.server";
1010
import { BaseService } from "./baseService.server";
1111
import { OutOfEntitlementError, TriggerTaskService } from "./triggerTask.server";
1212
import { type RunOptionsData } from "../testTask";
13+
import { replaceSuperJsonPayload } from "@trigger.dev/core/v3/utils/ioSerialization";
1314

1415
type OverrideOptions = {
1516
environmentId?: string;
16-
payload?: unknown;
17+
payload?: string;
1718
metadata?: unknown;
1819
bulkActionId?: string;
1920
} & RunOptionsData;
@@ -36,7 +37,15 @@ export class ReplayTaskRunService extends BaseService {
3637
taskRunFriendlyId: existingTaskRun.friendlyId,
3738
});
3839

39-
const payload = overrideOptions.payload ?? (await this.getExistingPayload(existingTaskRun));
40+
const payloadPacket = await this.overrideExistingPayloadPacket(
41+
existingTaskRun,
42+
overrideOptions.payload
43+
);
44+
const parsedPayload =
45+
payloadPacket.dataType === "application/json"
46+
? await parsePacket(payloadPacket)
47+
: payloadPacket.data;
48+
const payloadType = payloadPacket.dataType;
4049
const metadata = overrideOptions.metadata ?? (await this.getExistingMetadata(existingTaskRun));
4150
const tags = overrideOptions.tags ?? existingTaskRun.runTags;
4251

@@ -53,8 +62,9 @@ export class ReplayTaskRunService extends BaseService {
5362
existingTaskRun.taskIdentifier,
5463
authenticatedEnvironment,
5564
{
56-
payload,
65+
payload: parsedPayload,
5766
options: {
67+
payloadType,
5868
queue: taskQueue
5969
? {
6070
name: taskQueue.name,
@@ -108,15 +118,23 @@ export class ReplayTaskRunService extends BaseService {
108118
}
109119
}
110120

111-
private async getExistingPayload(existingTaskRun: TaskRun) {
112-
const existingPayloadPacket = await conditionallyImportPacket({
113-
data: existingTaskRun.payload,
121+
private async overrideExistingPayloadPacket(
122+
existingTaskRun: TaskRun,
123+
stringifiedPayloadOverride: string | undefined
124+
) {
125+
if (stringifiedPayloadOverride && existingTaskRun.payloadType === "application/super+json") {
126+
const newPayload = await replaceSuperJsonPayload(
127+
existingTaskRun.payload,
128+
stringifiedPayloadOverride
129+
);
130+
131+
return stringifyIO(newPayload);
132+
}
133+
134+
return conditionallyImportPacket({
135+
data: stringifiedPayloadOverride ?? existingTaskRun.payload,
114136
dataType: existingTaskRun.payloadType,
115137
});
116-
117-
return existingPayloadPacket.dataType === "application/json"
118-
? await parsePacket(existingPayloadPacket)
119-
: existingPayloadPacket.data;
120138
}
121139

122140
private async getExistingMetadata(existingTaskRun: TaskRun) {

0 commit comments

Comments
 (0)