UNPKG

@speckle/shared

Version:

Shared code between various Speckle JS packages

71 lines 2.59 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.previewResultPayload = exports.jobPayload = exports.fromJobId = exports.toJobId = exports.jobIdSchema = void 0; const zod_1 = __importDefault(require("zod")); const JobIdSeparator = '.'; exports.jobIdSchema = zod_1.default .string() .refine((data) => data.split(JobIdSeparator).length === 2, { message: 'jobId must be in the format "projectId.objectId"' }); const toJobId = (params) => { return `${params.projectId}${JobIdSeparator}${params.objectId}`; }; exports.toJobId = toJobId; const fromJobId = (jobId) => { return exports.jobIdSchema .transform((data) => { return { projectId: data.split(JobIdSeparator)[0], objectId: data.split(JobIdSeparator)[1] }; }) .parse(jobId); }; exports.fromJobId = fromJobId; const job = zod_1.default.object({ jobId: exports.jobIdSchema }); exports.jobPayload = job.merge(zod_1.default.object({ url: zod_1.default.string(), token: zod_1.default.string(), responseQueue: zod_1.default.string() })); const previewPageResult = zod_1.default.object({ durationSeconds: zod_1.default.number().describe('Duration to generate the preview, in seconds'), screenshots: zod_1.default.record(zod_1.default.string(), zod_1.default.string()) }); const durationDetail = zod_1.default.object({ loadDurationSeconds: zod_1.default .number() .describe('Duration to load the object from the server in seconds') .optional(), renderDurationSeconds: zod_1.default .number() .describe('Duration to render the preview images in seconds') .optional() }); const previewJobResult = previewPageResult.merge(durationDetail); const previewSuccessPayload = job.merge(zod_1.default.object({ status: zod_1.default.literal('success'), result: previewJobResult })); const previewErrorPayload = job.merge(zod_1.default.object({ status: zod_1.default.literal('error'), reason: zod_1.default.string(), result: zod_1.default .object({ durationSeconds: zod_1.default .number() .describe('Duration spent processing the job before erroring, in seconds') }) .merge(durationDetail) })); exports.previewResultPayload = zod_1.default.discriminatedUnion('status', [ previewSuccessPayload, previewErrorPayload ]); //# sourceMappingURL=job.js.map