@transloadit/convex 0.0.5 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +31 -212
  2. package/dist/client/index.d.ts +39 -92
  3. package/dist/client/index.d.ts.map +1 -1
  4. package/dist/client/index.js +34 -104
  5. package/dist/client/index.js.map +1 -1
  6. package/dist/component/_generated/component.d.ts +18 -0
  7. package/dist/component/_generated/component.d.ts.map +1 -1
  8. package/dist/component/apiUtils.d.ts +1 -32
  9. package/dist/component/apiUtils.d.ts.map +1 -1
  10. package/dist/component/apiUtils.js.map +1 -1
  11. package/dist/component/lib.d.ts +33 -90
  12. package/dist/component/lib.d.ts.map +1 -1
  13. package/dist/component/lib.js +48 -157
  14. package/dist/component/lib.js.map +1 -1
  15. package/dist/component/schema.d.ts +4 -4
  16. package/dist/component/schema.d.ts.map +1 -1
  17. package/dist/component/schema.js +3 -31
  18. package/dist/component/schema.js.map +1 -1
  19. package/dist/shared/schemas.d.ts +419 -0
  20. package/dist/shared/schemas.d.ts.map +1 -0
  21. package/dist/shared/schemas.js +194 -0
  22. package/dist/shared/schemas.js.map +1 -0
  23. package/dist/test/index.d.ts +4 -4
  24. package/package.json +6 -16
  25. package/src/client/index.ts +68 -123
  26. package/src/component/_generated/component.ts +17 -0
  27. package/src/component/apiUtils.ts +7 -38
  28. package/src/component/lib.test.ts +19 -0
  29. package/src/component/lib.ts +80 -180
  30. package/src/component/schema.ts +3 -31
  31. package/src/shared/schemas.ts +279 -0
  32. package/dist/react/index.d.ts +0 -281
  33. package/dist/react/index.d.ts.map +0 -1
  34. package/dist/react/index.js +0 -784
  35. package/dist/react/index.js.map +0 -1
  36. package/dist/shared/tusUpload.d.ts +0 -13
  37. package/dist/shared/tusUpload.d.ts.map +0 -1
  38. package/dist/shared/tusUpload.js +0 -32
  39. package/dist/shared/tusUpload.js.map +0 -1
  40. package/src/react/index.test.tsx +0 -340
  41. package/src/react/index.tsx +0 -1245
  42. package/src/react/uploadWithTus.test.tsx +0 -192
  43. package/src/shared/tusUpload.ts +0 -59
@@ -1,10 +1,33 @@
1
1
  import type { AssemblyStatus } from "@transloadit/zod/v3/assemblyStatus";
2
2
  import type { AssemblyInstructionsInput } from "@transloadit/zod/v3/template";
3
3
  import { anyApi, type FunctionReference } from "convex/server";
4
- import { type Infer, v } from "convex/values";
4
+ import { v } from "convex/values";
5
5
  import { parseAssemblyStatus } from "../shared/assemblyUrls.ts";
6
6
  import { transloaditError } from "../shared/errors.ts";
7
7
  import { getResultUrl } from "../shared/resultUtils.ts";
8
+ import {
9
+ type ProcessWebhookResult,
10
+ vAssembly,
11
+ vAssemblyBaseArgs,
12
+ vAssemblyIdArgs,
13
+ vAssemblyOptions,
14
+ vAssemblyResult,
15
+ vCreateAssemblyReturn,
16
+ vHandleWebhookArgs,
17
+ vListAlbumResultsArgs,
18
+ vListAssembliesArgs,
19
+ vListResultsArgs,
20
+ vPurgeAlbumArgs,
21
+ vPurgeAlbumResponse,
22
+ vQueueWebhookResponse,
23
+ vRefreshAssemblyArgs,
24
+ vReplaceResultsArgs,
25
+ vStoreAssemblyMetadataArgs,
26
+ vTransloaditConfig,
27
+ vUpsertAssemblyArgs,
28
+ vWebhookArgs,
29
+ vWebhookResponse,
30
+ } from "../shared/schemas.ts";
8
31
  import {
9
32
  action,
10
33
  internalAction,
@@ -21,12 +44,8 @@ import {
21
44
 
22
45
  const TRANSLOADIT_ASSEMBLY_URL = "https://api2.transloadit.com/assemblies";
23
46
 
24
- type ProcessWebhookResult = {
25
- assemblyId: string;
26
- resultCount: number;
27
- ok?: string;
28
- status?: string;
29
- };
47
+ export { vAssembly, vAssemblyResult, vTransloaditConfig };
48
+ export type { Assembly, AssemblyResult } from "../shared/schemas.ts";
30
49
 
31
50
  type InternalApi = {
32
51
  lib: {
@@ -147,78 +166,8 @@ const applyAssemblyStatus = async (
147
166
  };
148
167
  };
149
168
 
150
- export const vAssembly = v.object({
151
- _id: v.id("assemblies"),
152
- _creationTime: v.number(),
153
- assemblyId: v.string(),
154
- status: v.optional(v.string()),
155
- ok: v.optional(v.string()),
156
- message: v.optional(v.string()),
157
- templateId: v.optional(v.string()),
158
- notifyUrl: v.optional(v.string()),
159
- numExpectedUploadFiles: v.optional(v.number()),
160
- fields: v.optional(v.record(v.string(), v.any())),
161
- uploads: v.optional(v.array(v.any())),
162
- results: v.optional(v.record(v.string(), v.array(v.any()))),
163
- error: v.optional(v.any()),
164
- raw: v.optional(v.any()),
165
- createdAt: v.number(),
166
- updatedAt: v.number(),
167
- userId: v.optional(v.string()),
168
- });
169
-
170
- export type Assembly = Infer<typeof vAssembly>;
171
-
172
- export const vAssemblyResult = v.object({
173
- _id: v.id("results"),
174
- _creationTime: v.number(),
175
- assemblyId: v.string(),
176
- album: v.optional(v.string()),
177
- userId: v.optional(v.string()),
178
- stepName: v.string(),
179
- resultId: v.optional(v.string()),
180
- sslUrl: v.optional(v.string()),
181
- name: v.optional(v.string()),
182
- size: v.optional(v.number()),
183
- mime: v.optional(v.string()),
184
- raw: v.any(),
185
- createdAt: v.number(),
186
- });
187
-
188
- export type AssemblyResult = Infer<typeof vAssemblyResult>;
189
-
190
- export const vTransloaditConfig = v.object({
191
- authKey: v.string(),
192
- authSecret: v.string(),
193
- });
194
-
195
- const vAssemblyBaseArgs = {
196
- templateId: v.optional(v.string()),
197
- steps: v.optional(v.record(v.string(), v.any())),
198
- fields: v.optional(v.record(v.string(), v.any())),
199
- notifyUrl: v.optional(v.string()),
200
- numExpectedUploadFiles: v.optional(v.number()),
201
- expires: v.optional(v.string()),
202
- additionalParams: v.optional(v.record(v.string(), v.any())),
203
- userId: v.optional(v.string()),
204
- };
205
-
206
169
  export const upsertAssembly = internalMutation({
207
- args: {
208
- assemblyId: v.string(),
209
- status: v.optional(v.string()),
210
- ok: v.optional(v.string()),
211
- message: v.optional(v.string()),
212
- templateId: v.optional(v.string()),
213
- notifyUrl: v.optional(v.string()),
214
- numExpectedUploadFiles: v.optional(v.number()),
215
- fields: v.optional(v.record(v.string(), v.any())),
216
- uploads: v.optional(v.array(v.any())),
217
- results: v.optional(v.record(v.string(), v.array(v.any()))),
218
- error: v.optional(v.any()),
219
- raw: v.optional(v.any()),
220
- userId: v.optional(v.string()),
221
- },
170
+ args: vUpsertAssemblyArgs,
222
171
  returns: v.id("assemblies"),
223
172
  handler: async (ctx, args) => {
224
173
  // Note: we persist full `raw` + `results` for debugging/fidelity. Large
@@ -272,15 +221,7 @@ export const upsertAssembly = internalMutation({
272
221
  });
273
222
 
274
223
  export const replaceResultsForAssembly = internalMutation({
275
- args: {
276
- assemblyId: v.string(),
277
- results: v.array(
278
- v.object({
279
- stepName: v.string(),
280
- result: v.any(),
281
- }),
282
- ),
283
- },
224
+ args: vReplaceResultsArgs,
284
225
  returns: v.null(),
285
226
  handler: async (ctx, args) => {
286
227
  // We store raw result payloads for fidelity. For very large assemblies,
@@ -334,10 +275,7 @@ export const createAssembly = action({
334
275
  config: vTransloaditConfig,
335
276
  ...vAssemblyBaseArgs,
336
277
  },
337
- returns: v.object({
338
- assemblyId: v.string(),
339
- data: v.any(),
340
- }),
278
+ returns: vCreateAssemblyReturn,
341
279
  handler: async (ctx, args) => {
342
280
  const { paramsString, params } = buildTransloaditParams({
343
281
  authKey: args.config.authKey,
@@ -345,7 +283,7 @@ export const createAssembly = action({
345
283
  steps: args.steps as AssemblyInstructionsInput["steps"],
346
284
  fields: args.fields as AssemblyInstructionsInput["fields"],
347
285
  notifyUrl: args.notifyUrl,
348
- numExpectedUploadFiles: undefined,
286
+ numExpectedUploadFiles: args.numExpectedUploadFiles,
349
287
  expires: args.expires,
350
288
  additionalParams: args.additionalParams as
351
289
  | Record<string, unknown>
@@ -414,29 +352,47 @@ export const createAssembly = action({
414
352
  },
415
353
  });
416
354
 
417
- const vWebhookArgs = {
418
- payload: v.any(),
419
- rawBody: v.optional(v.string()),
420
- signature: v.optional(v.string()),
421
- verifySignature: v.optional(v.boolean()),
422
- authSecret: v.optional(v.string()),
423
- };
355
+ export const createAssemblyOptions = action({
356
+ args: {
357
+ config: vTransloaditConfig,
358
+ ...vAssemblyBaseArgs,
359
+ },
360
+ returns: vAssemblyOptions,
361
+ handler: async (_ctx, args) => {
362
+ const { paramsString, params } = buildTransloaditParams({
363
+ authKey: args.config.authKey,
364
+ templateId: args.templateId,
365
+ steps: args.steps as AssemblyInstructionsInput["steps"],
366
+ fields: args.fields as AssemblyInstructionsInput["fields"],
367
+ notifyUrl: args.notifyUrl,
368
+ numExpectedUploadFiles: args.numExpectedUploadFiles,
369
+ expires: args.expires,
370
+ additionalParams: args.additionalParams as
371
+ | Record<string, unknown>
372
+ | undefined,
373
+ });
424
374
 
425
- const vPublicWebhookArgs = {
426
- payload: v.any(),
427
- rawBody: v.optional(v.string()),
428
- signature: v.optional(v.string()),
429
- verifySignature: v.optional(v.boolean()),
430
- };
375
+ const signature = await signTransloaditParams(
376
+ paramsString,
377
+ args.config.authSecret,
378
+ );
379
+
380
+ const fields =
381
+ params && typeof params.fields === "object" && params.fields
382
+ ? (params.fields as Record<string, unknown>)
383
+ : undefined;
384
+
385
+ return {
386
+ params: paramsString,
387
+ signature,
388
+ fields,
389
+ };
390
+ },
391
+ });
431
392
 
432
393
  export const processWebhook = internalAction({
433
394
  args: vWebhookArgs,
434
- returns: v.object({
435
- assemblyId: v.string(),
436
- resultCount: v.number(),
437
- ok: v.optional(v.string()),
438
- status: v.optional(v.string()),
439
- }),
395
+ returns: vWebhookResponse,
440
396
  handler: async (ctx, args) => {
441
397
  const rawBody = resolveWebhookRawBody(args);
442
398
  const shouldVerify = args.verifySignature ?? true;
@@ -474,20 +430,8 @@ export const processWebhook = internalAction({
474
430
  });
475
431
 
476
432
  export const handleWebhook = action({
477
- args: {
478
- ...vPublicWebhookArgs,
479
- config: v.optional(
480
- v.object({
481
- authSecret: v.string(),
482
- }),
483
- ),
484
- },
485
- returns: v.object({
486
- assemblyId: v.string(),
487
- resultCount: v.number(),
488
- ok: v.optional(v.string()),
489
- status: v.optional(v.string()),
490
- }),
433
+ args: vHandleWebhookArgs,
434
+ returns: vWebhookResponse,
491
435
  handler: async (ctx, args) => {
492
436
  const verifySignature = args.verifySignature ?? true;
493
437
  return ctx.runAction(internal.lib.processWebhook, {
@@ -501,18 +445,8 @@ export const handleWebhook = action({
501
445
  });
502
446
 
503
447
  export const queueWebhook = action({
504
- args: {
505
- ...vPublicWebhookArgs,
506
- config: v.optional(
507
- v.object({
508
- authSecret: v.string(),
509
- }),
510
- ),
511
- },
512
- returns: v.object({
513
- assemblyId: v.string(),
514
- queued: v.boolean(),
515
- }),
448
+ args: vHandleWebhookArgs,
449
+ returns: vQueueWebhookResponse,
516
450
  handler: async (ctx, args) => {
517
451
  const rawBody = resolveWebhookRawBody(args);
518
452
  const shouldVerify = args.verifySignature ?? true;
@@ -564,21 +498,8 @@ export const queueWebhook = action({
564
498
  });
565
499
 
566
500
  export const refreshAssembly = action({
567
- args: {
568
- assemblyId: v.string(),
569
- config: v.optional(
570
- v.object({
571
- authKey: v.string(),
572
- authSecret: v.string(),
573
- }),
574
- ),
575
- },
576
- returns: v.object({
577
- assemblyId: v.string(),
578
- resultCount: v.number(),
579
- ok: v.optional(v.string()),
580
- status: v.optional(v.string()),
581
- }),
501
+ args: vRefreshAssemblyArgs,
502
+ returns: vWebhookResponse,
582
503
  handler: async (ctx, args) => {
583
504
  const { assemblyId } = args;
584
505
  const authKey = args.config?.authKey ?? process.env.TRANSLOADIT_KEY;
@@ -603,7 +524,7 @@ export const refreshAssembly = action({
603
524
  });
604
525
 
605
526
  export const getAssemblyStatus = query({
606
- args: { assemblyId: v.string() },
527
+ args: vAssemblyIdArgs,
607
528
  returns: v.union(vAssembly, v.null()),
608
529
  handler: async (ctx, args) => {
609
530
  return await ctx.db
@@ -614,11 +535,7 @@ export const getAssemblyStatus = query({
614
535
  });
615
536
 
616
537
  export const listAssemblies = query({
617
- args: {
618
- status: v.optional(v.string()),
619
- userId: v.optional(v.string()),
620
- limit: v.optional(v.number()),
621
- },
538
+ args: vListAssembliesArgs,
622
539
  returns: v.array(vAssembly),
623
540
  handler: async (ctx, args) => {
624
541
  if (args.userId) {
@@ -644,11 +561,7 @@ export const listAssemblies = query({
644
561
  });
645
562
 
646
563
  export const listResults = query({
647
- args: {
648
- assemblyId: v.string(),
649
- stepName: v.optional(v.string()),
650
- limit: v.optional(v.number()),
651
- },
564
+ args: vListResultsArgs,
652
565
  returns: v.array(vAssemblyResult),
653
566
  handler: async (ctx, args) => {
654
567
  if (args.stepName) {
@@ -671,10 +584,7 @@ export const listResults = query({
671
584
  });
672
585
 
673
586
  export const listAlbumResults = query({
674
- args: {
675
- album: v.string(),
676
- limit: v.optional(v.number()),
677
- },
587
+ args: vListAlbumResultsArgs,
678
588
  returns: v.array(vAssemblyResult),
679
589
  handler: async (ctx, args) => {
680
590
  return ctx.db
@@ -686,14 +596,8 @@ export const listAlbumResults = query({
686
596
  });
687
597
 
688
598
  export const purgeAlbum = mutation({
689
- args: {
690
- album: v.string(),
691
- deleteAssemblies: v.optional(v.boolean()),
692
- },
693
- returns: v.object({
694
- deletedResults: v.number(),
695
- deletedAssemblies: v.number(),
696
- }),
599
+ args: vPurgeAlbumArgs,
600
+ returns: vPurgeAlbumResponse,
697
601
  handler: async (ctx, args) => {
698
602
  const results = await ctx.db
699
603
  .query("results")
@@ -725,11 +629,7 @@ export const purgeAlbum = mutation({
725
629
  });
726
630
 
727
631
  export const storeAssemblyMetadata = mutation({
728
- args: {
729
- assemblyId: v.string(),
730
- userId: v.optional(v.string()),
731
- fields: v.optional(v.record(v.string(), v.any())),
732
- },
632
+ args: vStoreAssemblyMetadataArgs,
733
633
  returns: v.union(vAssembly, v.null()),
734
634
  handler: async (ctx, args) => {
735
635
  const existing = await ctx.db
@@ -1,40 +1,12 @@
1
1
  import { defineSchema, defineTable } from "convex/server";
2
- import { v } from "convex/values";
2
+ import { vAssemblyFields, vAssemblyResultFields } from "../shared/schemas.ts";
3
3
 
4
4
  export default defineSchema({
5
- assemblies: defineTable({
6
- assemblyId: v.string(),
7
- status: v.optional(v.string()),
8
- ok: v.optional(v.string()),
9
- message: v.optional(v.string()),
10
- templateId: v.optional(v.string()),
11
- notifyUrl: v.optional(v.string()),
12
- numExpectedUploadFiles: v.optional(v.number()),
13
- fields: v.optional(v.record(v.string(), v.any())),
14
- uploads: v.optional(v.array(v.any())),
15
- results: v.optional(v.record(v.string(), v.array(v.any()))),
16
- error: v.optional(v.any()),
17
- raw: v.optional(v.any()),
18
- createdAt: v.number(),
19
- updatedAt: v.number(),
20
- userId: v.optional(v.string()),
21
- })
5
+ assemblies: defineTable(vAssemblyFields)
22
6
  .index("by_assemblyId", ["assemblyId"])
23
7
  .index("by_status", ["status"])
24
8
  .index("by_userId", ["userId"]),
25
- results: defineTable({
26
- assemblyId: v.string(),
27
- album: v.optional(v.string()),
28
- userId: v.optional(v.string()),
29
- stepName: v.string(),
30
- resultId: v.optional(v.string()),
31
- sslUrl: v.optional(v.string()),
32
- name: v.optional(v.string()),
33
- size: v.optional(v.number()),
34
- mime: v.optional(v.string()),
35
- raw: v.any(),
36
- createdAt: v.number(),
37
- })
9
+ results: defineTable(vAssemblyResultFields)
38
10
  .index("by_assemblyId", ["assemblyId"])
39
11
  .index("by_assemblyId_and_step", ["assemblyId", "stepName"])
40
12
  .index("by_album", ["album"]),
@@ -0,0 +1,279 @@
1
+ import type { AssemblyInstructionsInput } from "@transloadit/zod/v3/template";
2
+ import { type Infer, v } from "convex/values";
3
+
4
+ export const vAssemblyFields = {
5
+ assemblyId: v.string(),
6
+ status: v.optional(v.string()),
7
+ ok: v.optional(v.string()),
8
+ message: v.optional(v.string()),
9
+ templateId: v.optional(v.string()),
10
+ notifyUrl: v.optional(v.string()),
11
+ numExpectedUploadFiles: v.optional(v.number()),
12
+ fields: v.optional(v.record(v.string(), v.any())),
13
+ uploads: v.optional(v.array(v.any())),
14
+ results: v.optional(v.record(v.string(), v.array(v.any()))),
15
+ error: v.optional(v.any()),
16
+ raw: v.optional(v.any()),
17
+ createdAt: v.number(),
18
+ updatedAt: v.number(),
19
+ userId: v.optional(v.string()),
20
+ };
21
+
22
+ export const vAssemblyResultFields = {
23
+ assemblyId: v.string(),
24
+ album: v.optional(v.string()),
25
+ userId: v.optional(v.string()),
26
+ stepName: v.string(),
27
+ resultId: v.optional(v.string()),
28
+ sslUrl: v.optional(v.string()),
29
+ name: v.optional(v.string()),
30
+ size: v.optional(v.number()),
31
+ mime: v.optional(v.string()),
32
+ raw: v.any(),
33
+ createdAt: v.number(),
34
+ };
35
+
36
+ export const vAssembly = v.object({
37
+ _id: v.id("assemblies"),
38
+ _creationTime: v.number(),
39
+ ...vAssemblyFields,
40
+ });
41
+
42
+ export type Assembly = Infer<typeof vAssembly>;
43
+
44
+ export const vAssemblyResponse = v.object({
45
+ _id: v.string(),
46
+ _creationTime: v.number(),
47
+ ...vAssemblyFields,
48
+ });
49
+
50
+ export type AssemblyResponse = Infer<typeof vAssemblyResponse>;
51
+
52
+ export const vAssemblyResult = v.object({
53
+ _id: v.id("results"),
54
+ _creationTime: v.number(),
55
+ ...vAssemblyResultFields,
56
+ });
57
+
58
+ export type AssemblyResult = Infer<typeof vAssemblyResult>;
59
+
60
+ export const vAssemblyResultResponse = v.object({
61
+ _id: v.string(),
62
+ _creationTime: v.number(),
63
+ ...vAssemblyResultFields,
64
+ });
65
+
66
+ export type AssemblyResultResponse = Infer<typeof vAssemblyResultResponse>;
67
+
68
+ export const vTransloaditConfig = v.object({
69
+ authKey: v.string(),
70
+ authSecret: v.string(),
71
+ });
72
+
73
+ export type TransloaditConfig = Infer<typeof vTransloaditConfig>;
74
+
75
+ export const vAssemblyBaseArgs = {
76
+ templateId: v.optional(v.string()),
77
+ steps: v.optional(v.record(v.string(), v.any())),
78
+ fields: v.optional(v.record(v.string(), v.any())),
79
+ notifyUrl: v.optional(v.string()),
80
+ numExpectedUploadFiles: v.optional(v.number()),
81
+ expires: v.optional(v.string()),
82
+ additionalParams: v.optional(v.record(v.string(), v.any())),
83
+ userId: v.optional(v.string()),
84
+ };
85
+
86
+ export const vCreateAssemblyArgs = v.object(vAssemblyBaseArgs);
87
+
88
+ export type CreateAssemblyArgs = Omit<
89
+ Infer<typeof vCreateAssemblyArgs>,
90
+ "steps" | "fields"
91
+ > & {
92
+ steps?: AssemblyInstructionsInput["steps"];
93
+ fields?: AssemblyInstructionsInput["fields"];
94
+ };
95
+
96
+ export const vCreateAssemblyReturn = v.object({
97
+ assemblyId: v.string(),
98
+ data: v.any(),
99
+ });
100
+
101
+ export type CreateAssemblyReturn = Infer<typeof vCreateAssemblyReturn>;
102
+
103
+ export const vAssemblyOptions = v.object({
104
+ params: v.string(),
105
+ signature: v.string(),
106
+ fields: v.optional(v.record(v.string(), v.any())),
107
+ });
108
+
109
+ export type AssemblyOptions = Infer<typeof vAssemblyOptions>;
110
+
111
+ export const vWebhookArgs = {
112
+ payload: v.any(),
113
+ rawBody: v.optional(v.string()),
114
+ signature: v.optional(v.string()),
115
+ verifySignature: v.optional(v.boolean()),
116
+ authSecret: v.optional(v.string()),
117
+ };
118
+
119
+ export const vPublicWebhookArgs = {
120
+ payload: v.any(),
121
+ rawBody: v.optional(v.string()),
122
+ signature: v.optional(v.string()),
123
+ verifySignature: v.optional(v.boolean()),
124
+ };
125
+
126
+ export const vWebhookActionArgs = v.object({
127
+ payload: v.any(),
128
+ rawBody: v.optional(v.string()),
129
+ signature: v.optional(v.string()),
130
+ });
131
+
132
+ export type WebhookActionArgs = Infer<typeof vWebhookActionArgs>;
133
+
134
+ export const vWebhookResponse = v.object({
135
+ assemblyId: v.string(),
136
+ resultCount: v.number(),
137
+ ok: v.optional(v.string()),
138
+ status: v.optional(v.string()),
139
+ });
140
+
141
+ export type WebhookResponse = Infer<typeof vWebhookResponse>;
142
+
143
+ export const vQueueWebhookResponse = v.object({
144
+ assemblyId: v.string(),
145
+ queued: v.boolean(),
146
+ });
147
+
148
+ export type QueueWebhookResponse = Infer<typeof vQueueWebhookResponse>;
149
+
150
+ export const vAssemblyIdArgs = {
151
+ assemblyId: v.string(),
152
+ };
153
+
154
+ export const vListAssembliesArgs = {
155
+ status: v.optional(v.string()),
156
+ userId: v.optional(v.string()),
157
+ limit: v.optional(v.number()),
158
+ };
159
+
160
+ export const vListResultsArgs = {
161
+ assemblyId: v.string(),
162
+ stepName: v.optional(v.string()),
163
+ limit: v.optional(v.number()),
164
+ };
165
+
166
+ export const vListAlbumResultsArgs = {
167
+ album: v.string(),
168
+ limit: v.optional(v.number()),
169
+ };
170
+
171
+ export const vPurgeAlbumArgs = {
172
+ album: v.string(),
173
+ deleteAssemblies: v.optional(v.boolean()),
174
+ };
175
+
176
+ export const vPurgeAlbumResponse = v.object({
177
+ deletedResults: v.number(),
178
+ deletedAssemblies: v.number(),
179
+ });
180
+
181
+ export type PurgeAlbumResponse = Infer<typeof vPurgeAlbumResponse>;
182
+
183
+ export const vStoreAssemblyMetadataArgs = {
184
+ assemblyId: v.string(),
185
+ userId: v.optional(v.string()),
186
+ fields: v.optional(v.record(v.string(), v.any())),
187
+ };
188
+
189
+ export const vRefreshAssemblyArgs = {
190
+ assemblyId: v.string(),
191
+ config: v.optional(
192
+ v.object({
193
+ authKey: v.string(),
194
+ authSecret: v.string(),
195
+ }),
196
+ ),
197
+ };
198
+
199
+ export const vHandleWebhookArgs = {
200
+ ...vPublicWebhookArgs,
201
+ config: v.optional(
202
+ v.object({
203
+ authSecret: v.string(),
204
+ }),
205
+ ),
206
+ };
207
+
208
+ export const vProcessWebhookResult = vWebhookResponse;
209
+
210
+ export type ProcessWebhookResult = Infer<typeof vProcessWebhookResult>;
211
+
212
+ export const vReplaceResultsArgs = {
213
+ assemblyId: v.string(),
214
+ results: v.array(
215
+ v.object({
216
+ stepName: v.string(),
217
+ result: v.any(),
218
+ }),
219
+ ),
220
+ };
221
+
222
+ export const vUpsertAssemblyArgs = {
223
+ assemblyId: v.string(),
224
+ status: v.optional(v.string()),
225
+ ok: v.optional(v.string()),
226
+ message: v.optional(v.string()),
227
+ templateId: v.optional(v.string()),
228
+ notifyUrl: v.optional(v.string()),
229
+ numExpectedUploadFiles: v.optional(v.number()),
230
+ fields: v.optional(v.record(v.string(), v.any())),
231
+ uploads: v.optional(v.array(v.any())),
232
+ results: v.optional(v.record(v.string(), v.array(v.any()))),
233
+ error: v.optional(v.any()),
234
+ raw: v.optional(v.any()),
235
+ userId: v.optional(v.string()),
236
+ };
237
+
238
+ export const vBuildParamsOptions = v.object({
239
+ authKey: v.string(),
240
+ templateId: v.optional(v.string()),
241
+ steps: v.optional(v.any()),
242
+ fields: v.optional(v.any()),
243
+ notifyUrl: v.optional(v.string()),
244
+ numExpectedUploadFiles: v.optional(v.number()),
245
+ expires: v.optional(v.string()),
246
+ additionalParams: v.optional(v.record(v.string(), v.any())),
247
+ });
248
+
249
+ export type BuildParamsOptions = Omit<
250
+ Infer<typeof vBuildParamsOptions>,
251
+ "steps" | "fields"
252
+ > & {
253
+ steps?: AssemblyInstructionsInput["steps"];
254
+ fields?: AssemblyInstructionsInput["fields"];
255
+ };
256
+
257
+ export const vBuildParamsResult = v.object({
258
+ params: v.record(v.string(), v.any()),
259
+ paramsString: v.string(),
260
+ });
261
+
262
+ export type BuildParamsResult = Infer<typeof vBuildParamsResult>;
263
+
264
+ const vParsedWebhookFields = {
265
+ payload: v.any(),
266
+ rawBody: v.string(),
267
+ signature: v.optional(v.string()),
268
+ };
269
+
270
+ export const vParsedWebhookRequest = v.object(vParsedWebhookFields);
271
+
272
+ export type ParsedWebhookRequest = Infer<typeof vParsedWebhookRequest>;
273
+
274
+ export const vVerifiedWebhookRequest = v.object({
275
+ ...vParsedWebhookFields,
276
+ verified: v.boolean(),
277
+ });
278
+
279
+ export type VerifiedWebhookRequest = Infer<typeof vVerifiedWebhookRequest>;