@transloadit/convex 0.0.1

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 (61) hide show
  1. package/README.md +235 -0
  2. package/dist/client/index.d.ts +244 -0
  3. package/dist/client/index.d.ts.map +1 -0
  4. package/dist/client/index.js +196 -0
  5. package/dist/client/index.js.map +1 -0
  6. package/dist/client/types.d.ts +24 -0
  7. package/dist/client/types.d.ts.map +1 -0
  8. package/dist/client/types.js +2 -0
  9. package/dist/client/types.js.map +1 -0
  10. package/dist/component/_generated/api.d.ts +20 -0
  11. package/dist/component/_generated/api.d.ts.map +1 -0
  12. package/dist/component/_generated/api.js +15 -0
  13. package/dist/component/_generated/api.js.map +1 -0
  14. package/dist/component/_generated/component.d.ts +101 -0
  15. package/dist/component/_generated/component.d.ts.map +1 -0
  16. package/dist/component/_generated/component.js +11 -0
  17. package/dist/component/_generated/component.js.map +1 -0
  18. package/dist/component/_generated/dataModel.d.ts +16 -0
  19. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  20. package/dist/component/_generated/dataModel.js +11 -0
  21. package/dist/component/_generated/dataModel.js.map +1 -0
  22. package/dist/component/_generated/server.d.ts +31 -0
  23. package/dist/component/_generated/server.d.ts.map +1 -0
  24. package/dist/component/_generated/server.js +18 -0
  25. package/dist/component/_generated/server.js.map +1 -0
  26. package/dist/component/apiUtils.d.ts +31 -0
  27. package/dist/component/apiUtils.d.ts.map +1 -0
  28. package/dist/component/apiUtils.js +94 -0
  29. package/dist/component/apiUtils.js.map +1 -0
  30. package/dist/component/convex.config.d.ts +3 -0
  31. package/dist/component/convex.config.d.ts.map +1 -0
  32. package/dist/component/convex.config.js +3 -0
  33. package/dist/component/convex.config.js.map +1 -0
  34. package/dist/component/lib.d.ts +226 -0
  35. package/dist/component/lib.d.ts.map +1 -0
  36. package/dist/component/lib.js +383 -0
  37. package/dist/component/lib.js.map +1 -0
  38. package/dist/component/schema.d.ts +67 -0
  39. package/dist/component/schema.d.ts.map +1 -0
  40. package/dist/component/schema.js +45 -0
  41. package/dist/component/schema.js.map +1 -0
  42. package/dist/package.json +3 -0
  43. package/dist/react/index.d.ts +85 -0
  44. package/dist/react/index.d.ts.map +1 -0
  45. package/dist/react/index.js +163 -0
  46. package/dist/react/index.js.map +1 -0
  47. package/package.json +86 -0
  48. package/src/client/index.ts +260 -0
  49. package/src/client/types.ts +64 -0
  50. package/src/component/_generated/api.ts +32 -0
  51. package/src/component/_generated/component.ts +122 -0
  52. package/src/component/_generated/dataModel.ts +30 -0
  53. package/src/component/_generated/server.ts +72 -0
  54. package/src/component/apiUtils.test.ts +48 -0
  55. package/src/component/apiUtils.ts +156 -0
  56. package/src/component/convex.config.ts +3 -0
  57. package/src/component/lib.test.ts +63 -0
  58. package/src/component/lib.ts +466 -0
  59. package/src/component/schema.ts +48 -0
  60. package/src/component/setup.test.ts +6 -0
  61. package/src/react/index.tsx +292 -0
@@ -0,0 +1,226 @@
1
+ import { type Infer } from "convex/values";
2
+ export declare const vAssembly: import("convex/values").VObject<{
3
+ status?: string | undefined;
4
+ ok?: string | undefined;
5
+ message?: string | undefined;
6
+ templateId?: string | undefined;
7
+ notifyUrl?: string | undefined;
8
+ numExpectedUploadFiles?: number | undefined;
9
+ fields?: any;
10
+ uploads?: any;
11
+ results?: any;
12
+ error?: any;
13
+ raw?: any;
14
+ userId?: string | undefined;
15
+ assemblyId: string;
16
+ _id: import("convex/values").GenericId<"assemblies">;
17
+ _creationTime: number;
18
+ createdAt: number;
19
+ updatedAt: number;
20
+ }, {
21
+ _id: import("convex/values").VId<import("convex/values").GenericId<"assemblies">, "required">;
22
+ _creationTime: import("convex/values").VFloat64<number, "required">;
23
+ assemblyId: import("convex/values").VString<string, "required">;
24
+ status: import("convex/values").VString<string | undefined, "optional">;
25
+ ok: import("convex/values").VString<string | undefined, "optional">;
26
+ message: import("convex/values").VString<string | undefined, "optional">;
27
+ templateId: import("convex/values").VString<string | undefined, "optional">;
28
+ notifyUrl: import("convex/values").VString<string | undefined, "optional">;
29
+ numExpectedUploadFiles: import("convex/values").VFloat64<number | undefined, "optional">;
30
+ fields: import("convex/values").VAny<any, "optional", string>;
31
+ uploads: import("convex/values").VAny<any, "optional", string>;
32
+ results: import("convex/values").VAny<any, "optional", string>;
33
+ error: import("convex/values").VAny<any, "optional", string>;
34
+ raw: import("convex/values").VAny<any, "optional", string>;
35
+ createdAt: import("convex/values").VFloat64<number, "required">;
36
+ updatedAt: import("convex/values").VFloat64<number, "required">;
37
+ userId: import("convex/values").VString<string | undefined, "optional">;
38
+ }, "required", "assemblyId" | "status" | "ok" | "message" | "templateId" | "notifyUrl" | "numExpectedUploadFiles" | "fields" | "uploads" | "results" | "error" | "raw" | "userId" | "_id" | "_creationTime" | "createdAt" | "updatedAt" | `fields.${string}` | `uploads.${string}` | `results.${string}` | `error.${string}` | `raw.${string}`>;
39
+ export type Assembly = Infer<typeof vAssembly>;
40
+ export declare const vAssemblyResult: import("convex/values").VObject<{
41
+ resultId?: string | undefined;
42
+ sslUrl?: string | undefined;
43
+ name?: string | undefined;
44
+ size?: number | undefined;
45
+ mime?: string | undefined;
46
+ assemblyId: string;
47
+ raw: any;
48
+ stepName: string;
49
+ _id: import("convex/values").GenericId<"results">;
50
+ _creationTime: number;
51
+ createdAt: number;
52
+ }, {
53
+ _id: import("convex/values").VId<import("convex/values").GenericId<"results">, "required">;
54
+ _creationTime: import("convex/values").VFloat64<number, "required">;
55
+ assemblyId: import("convex/values").VString<string, "required">;
56
+ stepName: import("convex/values").VString<string, "required">;
57
+ resultId: import("convex/values").VString<string | undefined, "optional">;
58
+ sslUrl: import("convex/values").VString<string | undefined, "optional">;
59
+ name: import("convex/values").VString<string | undefined, "optional">;
60
+ size: import("convex/values").VFloat64<number | undefined, "optional">;
61
+ mime: import("convex/values").VString<string | undefined, "optional">;
62
+ raw: import("convex/values").VAny<any, "required", string>;
63
+ createdAt: import("convex/values").VFloat64<number, "required">;
64
+ }, "required", "assemblyId" | "raw" | "stepName" | "_id" | "_creationTime" | "createdAt" | `raw.${string}` | "resultId" | "sslUrl" | "name" | "size" | "mime">;
65
+ export type AssemblyResult = Infer<typeof vAssemblyResult>;
66
+ export declare const vTransloaditConfig: import("convex/values").VObject<{
67
+ authKey: string;
68
+ authSecret: string;
69
+ }, {
70
+ authKey: import("convex/values").VString<string, "required">;
71
+ authSecret: import("convex/values").VString<string, "required">;
72
+ }, "required", "authKey" | "authSecret">;
73
+ export declare const upsertAssembly: import("convex/server").RegisteredMutation<"internal", {
74
+ status?: string | undefined;
75
+ ok?: string | undefined;
76
+ message?: string | undefined;
77
+ templateId?: string | undefined;
78
+ notifyUrl?: string | undefined;
79
+ numExpectedUploadFiles?: number | undefined;
80
+ fields?: any;
81
+ uploads?: any;
82
+ results?: any;
83
+ error?: any;
84
+ raw?: any;
85
+ userId?: string | undefined;
86
+ assemblyId: string;
87
+ }, Promise<import("convex/values").GenericId<"assemblies">>>;
88
+ export declare const replaceResultsForAssembly: import("convex/server").RegisteredMutation<"internal", {
89
+ assemblyId: string;
90
+ results: {
91
+ stepName: string;
92
+ result: any;
93
+ }[];
94
+ }, Promise<null>>;
95
+ export declare const createAssembly: import("convex/server").RegisteredAction<"public", {
96
+ templateId?: string | undefined;
97
+ notifyUrl?: string | undefined;
98
+ numExpectedUploadFiles?: number | undefined;
99
+ fields?: any;
100
+ userId?: string | undefined;
101
+ steps?: any;
102
+ expires?: string | undefined;
103
+ additionalParams?: any;
104
+ config: {
105
+ authKey: string;
106
+ authSecret: string;
107
+ };
108
+ }, Promise<{
109
+ assemblyId: string;
110
+ data: Record<string, unknown>;
111
+ }>>;
112
+ export declare const generateUploadParams: import("convex/server").RegisteredAction<"public", {
113
+ templateId?: string | undefined;
114
+ notifyUrl?: string | undefined;
115
+ numExpectedUploadFiles?: number | undefined;
116
+ fields?: any;
117
+ userId?: string | undefined;
118
+ steps?: any;
119
+ expires?: string | undefined;
120
+ additionalParams?: any;
121
+ config: {
122
+ authKey: string;
123
+ authSecret: string;
124
+ };
125
+ }, Promise<{
126
+ params: string;
127
+ signature: string;
128
+ url: string;
129
+ }>>;
130
+ export declare const handleWebhook: import("convex/server").RegisteredAction<"public", {
131
+ config?: {
132
+ authSecret: string;
133
+ } | undefined;
134
+ rawBody?: string | undefined;
135
+ signature?: string | undefined;
136
+ verifySignature?: boolean | undefined;
137
+ payload: any;
138
+ }, Promise<{
139
+ assemblyId: string;
140
+ resultCount: number;
141
+ }>>;
142
+ export declare const getAssemblyStatus: import("convex/server").RegisteredQuery<"public", {
143
+ assemblyId: string;
144
+ }, Promise<{
145
+ _id: import("convex/values").GenericId<"assemblies">;
146
+ _creationTime: number;
147
+ status?: string | undefined;
148
+ ok?: string | undefined;
149
+ message?: string | undefined;
150
+ templateId?: string | undefined;
151
+ notifyUrl?: string | undefined;
152
+ numExpectedUploadFiles?: number | undefined;
153
+ fields?: any;
154
+ uploads?: any;
155
+ results?: any;
156
+ error?: any;
157
+ raw?: any;
158
+ userId?: string | undefined;
159
+ assemblyId: string;
160
+ createdAt: number;
161
+ updatedAt: number;
162
+ } | null>>;
163
+ export declare const listAssemblies: import("convex/server").RegisteredQuery<"public", {
164
+ status?: string | undefined;
165
+ userId?: string | undefined;
166
+ limit?: number | undefined;
167
+ }, Promise<{
168
+ _id: import("convex/values").GenericId<"assemblies">;
169
+ _creationTime: number;
170
+ status?: string | undefined;
171
+ ok?: string | undefined;
172
+ message?: string | undefined;
173
+ templateId?: string | undefined;
174
+ notifyUrl?: string | undefined;
175
+ numExpectedUploadFiles?: number | undefined;
176
+ fields?: any;
177
+ uploads?: any;
178
+ results?: any;
179
+ error?: any;
180
+ raw?: any;
181
+ userId?: string | undefined;
182
+ assemblyId: string;
183
+ createdAt: number;
184
+ updatedAt: number;
185
+ }[]>>;
186
+ export declare const listResults: import("convex/server").RegisteredQuery<"public", {
187
+ limit?: number | undefined;
188
+ stepName?: string | undefined;
189
+ assemblyId: string;
190
+ }, Promise<{
191
+ _id: import("convex/values").GenericId<"results">;
192
+ _creationTime: number;
193
+ resultId?: string | undefined;
194
+ sslUrl?: string | undefined;
195
+ name?: string | undefined;
196
+ size?: number | undefined;
197
+ mime?: string | undefined;
198
+ assemblyId: string;
199
+ raw: any;
200
+ stepName: string;
201
+ createdAt: number;
202
+ }[]>>;
203
+ export declare const storeAssemblyMetadata: import("convex/server").RegisteredMutation<"public", {
204
+ fields?: any;
205
+ userId?: string | undefined;
206
+ assemblyId: string;
207
+ }, Promise<{
208
+ userId: string | undefined;
209
+ fields: any;
210
+ _id: import("convex/values").GenericId<"assemblies">;
211
+ _creationTime: number;
212
+ status?: string | undefined;
213
+ ok?: string | undefined;
214
+ message?: string | undefined;
215
+ templateId?: string | undefined;
216
+ notifyUrl?: string | undefined;
217
+ numExpectedUploadFiles?: number | undefined;
218
+ uploads?: any;
219
+ results?: any;
220
+ error?: any;
221
+ raw?: any;
222
+ assemblyId: string;
223
+ createdAt: number;
224
+ updatedAt: number;
225
+ } | null>>;
226
+ //# sourceMappingURL=lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/component/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAK,MAAM,eAAe,CAAC;AAkB9C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+UAkBpB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAE/C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;8JAY1B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE3D,eAAO,MAAM,kBAAkB;;;;;;wCAG7B,CAAC;AAaH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;4DA+DzB,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;iBAuCpC,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;GAyEzB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;GAmC/B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;GA4ExB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;UAS5B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;KA4BzB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;KAyBtB,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;UA6BhC,CAAC"}
@@ -0,0 +1,383 @@
1
+ import { v } from "convex/values";
2
+ import { internal } from "./_generated/api.js";
3
+ import { action, internalMutation, mutation, query, } from "./_generated/server.js";
4
+ import { buildTransloaditParams, flattenResults, signTransloaditParams, verifyWebhookSignature, } from "./apiUtils.js";
5
+ const TRANSLOADIT_ASSEMBLY_URL = "https://api2.transloadit.com/assemblies";
6
+ export const vAssembly = v.object({
7
+ _id: v.id("assemblies"),
8
+ _creationTime: v.number(),
9
+ assemblyId: v.string(),
10
+ status: v.optional(v.string()),
11
+ ok: v.optional(v.string()),
12
+ message: v.optional(v.string()),
13
+ templateId: v.optional(v.string()),
14
+ notifyUrl: v.optional(v.string()),
15
+ numExpectedUploadFiles: v.optional(v.number()),
16
+ fields: v.optional(v.any()),
17
+ uploads: v.optional(v.any()),
18
+ results: v.optional(v.any()),
19
+ error: v.optional(v.any()),
20
+ raw: v.optional(v.any()),
21
+ createdAt: v.number(),
22
+ updatedAt: v.number(),
23
+ userId: v.optional(v.string()),
24
+ });
25
+ export const vAssemblyResult = v.object({
26
+ _id: v.id("results"),
27
+ _creationTime: v.number(),
28
+ assemblyId: 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
+ });
38
+ export const vTransloaditConfig = v.object({
39
+ authKey: v.string(),
40
+ authSecret: v.string(),
41
+ });
42
+ const vAssemblyBaseArgs = {
43
+ templateId: v.optional(v.string()),
44
+ steps: v.optional(v.any()),
45
+ fields: v.optional(v.any()),
46
+ notifyUrl: v.optional(v.string()),
47
+ numExpectedUploadFiles: v.optional(v.number()),
48
+ expires: v.optional(v.string()),
49
+ additionalParams: v.optional(v.any()),
50
+ userId: v.optional(v.string()),
51
+ };
52
+ export const upsertAssembly = internalMutation({
53
+ args: {
54
+ assemblyId: v.string(),
55
+ status: v.optional(v.string()),
56
+ ok: v.optional(v.string()),
57
+ message: v.optional(v.string()),
58
+ templateId: v.optional(v.string()),
59
+ notifyUrl: v.optional(v.string()),
60
+ numExpectedUploadFiles: v.optional(v.number()),
61
+ fields: v.optional(v.any()),
62
+ uploads: v.optional(v.any()),
63
+ results: v.optional(v.any()),
64
+ error: v.optional(v.any()),
65
+ raw: v.optional(v.any()),
66
+ userId: v.optional(v.string()),
67
+ },
68
+ returns: v.id("assemblies"),
69
+ handler: async (ctx, args) => {
70
+ const existing = await ctx.db
71
+ .query("assemblies")
72
+ .withIndex("by_assemblyId", (q) => q.eq("assemblyId", args.assemblyId))
73
+ .unique();
74
+ const now = Date.now();
75
+ if (!existing) {
76
+ return await ctx.db.insert("assemblies", {
77
+ assemblyId: args.assemblyId,
78
+ status: args.status,
79
+ ok: args.ok,
80
+ message: args.message,
81
+ templateId: args.templateId,
82
+ notifyUrl: args.notifyUrl,
83
+ numExpectedUploadFiles: args.numExpectedUploadFiles,
84
+ fields: args.fields,
85
+ uploads: args.uploads,
86
+ results: args.results,
87
+ error: args.error,
88
+ raw: args.raw,
89
+ userId: args.userId,
90
+ createdAt: now,
91
+ updatedAt: now,
92
+ });
93
+ }
94
+ await ctx.db.patch(existing._id, {
95
+ status: args.status ?? existing.status,
96
+ ok: args.ok ?? existing.ok,
97
+ message: args.message ?? existing.message,
98
+ templateId: args.templateId ?? existing.templateId,
99
+ notifyUrl: args.notifyUrl ?? existing.notifyUrl,
100
+ numExpectedUploadFiles: args.numExpectedUploadFiles ?? existing.numExpectedUploadFiles,
101
+ fields: args.fields ?? existing.fields,
102
+ uploads: args.uploads ?? existing.uploads,
103
+ results: args.results ?? existing.results,
104
+ error: args.error ?? existing.error,
105
+ raw: args.raw ?? existing.raw,
106
+ userId: args.userId ?? existing.userId,
107
+ updatedAt: now,
108
+ });
109
+ return existing._id;
110
+ },
111
+ });
112
+ export const replaceResultsForAssembly = internalMutation({
113
+ args: {
114
+ assemblyId: v.string(),
115
+ results: v.array(v.object({
116
+ stepName: v.string(),
117
+ result: v.any(),
118
+ })),
119
+ },
120
+ returns: v.null(),
121
+ handler: async (ctx, args) => {
122
+ const existingResults = await ctx.db
123
+ .query("results")
124
+ .withIndex("by_assemblyId", (q) => q.eq("assemblyId", args.assemblyId))
125
+ .collect();
126
+ for (const existing of existingResults) {
127
+ await ctx.db.delete(existing._id);
128
+ }
129
+ const now = Date.now();
130
+ for (const entry of args.results) {
131
+ const raw = entry.result;
132
+ await ctx.db.insert("results", {
133
+ assemblyId: args.assemblyId,
134
+ stepName: entry.stepName,
135
+ resultId: typeof raw.id === "string" ? raw.id : undefined,
136
+ sslUrl: typeof raw.ssl_url === "string" ? raw.ssl_url : undefined,
137
+ name: typeof raw.name === "string" ? raw.name : undefined,
138
+ size: typeof raw.size === "number" ? raw.size : undefined,
139
+ mime: typeof raw.mime === "string" ? raw.mime : undefined,
140
+ raw,
141
+ createdAt: now,
142
+ });
143
+ }
144
+ return null;
145
+ },
146
+ });
147
+ export const createAssembly = action({
148
+ args: {
149
+ config: vTransloaditConfig,
150
+ ...vAssemblyBaseArgs,
151
+ },
152
+ returns: v.object({
153
+ assemblyId: v.string(),
154
+ data: v.any(),
155
+ }),
156
+ handler: async (ctx, args) => {
157
+ const { paramsString, params } = buildTransloaditParams({
158
+ authKey: args.config.authKey,
159
+ templateId: args.templateId,
160
+ steps: args.steps,
161
+ fields: args.fields,
162
+ notifyUrl: args.notifyUrl,
163
+ numExpectedUploadFiles: args.numExpectedUploadFiles,
164
+ expires: args.expires,
165
+ additionalParams: args.additionalParams,
166
+ });
167
+ const signature = await signTransloaditParams(paramsString, args.config.authSecret);
168
+ const formData = new FormData();
169
+ formData.append("params", paramsString);
170
+ formData.append("signature", signature);
171
+ const response = await fetch(TRANSLOADIT_ASSEMBLY_URL, {
172
+ method: "POST",
173
+ body: formData,
174
+ });
175
+ const data = (await response.json());
176
+ if (!response.ok) {
177
+ throw new Error(`Transloadit error ${response.status}: ${JSON.stringify(data)}`);
178
+ }
179
+ const assemblyId = typeof data.assembly_id === "string"
180
+ ? data.assembly_id
181
+ : typeof data.assemblyId === "string"
182
+ ? data.assemblyId
183
+ : "";
184
+ if (!assemblyId) {
185
+ throw new Error("Transloadit response missing assembly_id");
186
+ }
187
+ await ctx.runMutation(internal.lib.upsertAssembly, {
188
+ assemblyId,
189
+ status: typeof data.ok === "string" ? data.ok : undefined,
190
+ ok: typeof data.ok === "string" ? data.ok : undefined,
191
+ message: typeof data.message === "string" ? data.message : undefined,
192
+ templateId: args.templateId,
193
+ notifyUrl: args.notifyUrl,
194
+ numExpectedUploadFiles: args.numExpectedUploadFiles,
195
+ fields: params.fields,
196
+ uploads: data.uploads,
197
+ results: data.results,
198
+ error: data.error,
199
+ raw: data,
200
+ userId: args.userId,
201
+ });
202
+ return { assemblyId, data };
203
+ },
204
+ });
205
+ export const generateUploadParams = action({
206
+ args: {
207
+ config: vTransloaditConfig,
208
+ ...vAssemblyBaseArgs,
209
+ },
210
+ returns: v.object({
211
+ params: v.string(),
212
+ signature: v.string(),
213
+ url: v.string(),
214
+ }),
215
+ handler: async (ctx, args) => {
216
+ const { paramsString } = buildTransloaditParams({
217
+ authKey: args.config.authKey,
218
+ templateId: args.templateId,
219
+ steps: args.steps,
220
+ fields: args.fields,
221
+ notifyUrl: args.notifyUrl,
222
+ numExpectedUploadFiles: args.numExpectedUploadFiles,
223
+ expires: args.expires,
224
+ additionalParams: args.additionalParams,
225
+ });
226
+ const signature = await signTransloaditParams(paramsString, args.config.authSecret);
227
+ return {
228
+ params: paramsString,
229
+ signature,
230
+ url: TRANSLOADIT_ASSEMBLY_URL,
231
+ };
232
+ },
233
+ });
234
+ export const handleWebhook = action({
235
+ args: {
236
+ payload: v.any(),
237
+ rawBody: v.optional(v.string()),
238
+ signature: v.optional(v.string()),
239
+ verifySignature: v.optional(v.boolean()),
240
+ config: v.optional(v.object({
241
+ authSecret: v.string(),
242
+ })),
243
+ },
244
+ returns: v.object({
245
+ assemblyId: v.string(),
246
+ resultCount: v.number(),
247
+ }),
248
+ handler: async (ctx, args) => {
249
+ const rawBody = args.rawBody ?? JSON.stringify(args.payload ?? {});
250
+ const shouldVerify = args.verifySignature ?? true;
251
+ const authSecret = args.config?.authSecret ??
252
+ process.env.TRANSLOADIT_AUTH_SECRET ??
253
+ process.env.TRANSLOADIT_SECRET;
254
+ if (shouldVerify) {
255
+ if (!authSecret) {
256
+ throw new Error("Missing TRANSLOADIT_AUTH_SECRET for webhook validation");
257
+ }
258
+ const verified = await verifyWebhookSignature({
259
+ rawBody,
260
+ signatureHeader: args.signature,
261
+ authSecret,
262
+ });
263
+ if (!verified) {
264
+ throw new Error("Invalid Transloadit webhook signature");
265
+ }
266
+ }
267
+ const payload = args.payload;
268
+ const assemblyId = typeof payload.assembly_id === "string"
269
+ ? payload.assembly_id
270
+ : typeof payload.assemblyId === "string"
271
+ ? payload.assemblyId
272
+ : "";
273
+ if (!assemblyId) {
274
+ throw new Error("Webhook payload missing assembly_id");
275
+ }
276
+ const results = flattenResults(payload.results ??
277
+ undefined);
278
+ await ctx.runMutation(internal.lib.upsertAssembly, {
279
+ assemblyId,
280
+ status: typeof payload.ok === "string" ? payload.ok : undefined,
281
+ ok: typeof payload.ok === "string" ? payload.ok : undefined,
282
+ message: typeof payload.message === "string" ? payload.message : undefined,
283
+ uploads: payload.uploads,
284
+ results: payload.results,
285
+ error: payload.error,
286
+ raw: payload,
287
+ });
288
+ await ctx.runMutation(internal.lib.replaceResultsForAssembly, {
289
+ assemblyId,
290
+ results,
291
+ });
292
+ return { assemblyId, resultCount: results.length };
293
+ },
294
+ });
295
+ export const getAssemblyStatus = query({
296
+ args: { assemblyId: v.string() },
297
+ returns: v.union(vAssembly, v.null()),
298
+ handler: async (ctx, args) => {
299
+ return await ctx.db
300
+ .query("assemblies")
301
+ .withIndex("by_assemblyId", (q) => q.eq("assemblyId", args.assemblyId))
302
+ .unique();
303
+ },
304
+ });
305
+ export const listAssemblies = query({
306
+ args: {
307
+ status: v.optional(v.string()),
308
+ userId: v.optional(v.string()),
309
+ limit: v.optional(v.number()),
310
+ },
311
+ returns: v.array(vAssembly),
312
+ handler: async (ctx, args) => {
313
+ if (args.userId) {
314
+ return ctx.db
315
+ .query("assemblies")
316
+ .withIndex("by_userId", (q) => q.eq("userId", args.userId))
317
+ .order("desc")
318
+ .take(args.limit ?? 50);
319
+ }
320
+ if (args.status) {
321
+ return ctx.db
322
+ .query("assemblies")
323
+ .withIndex("by_status", (q) => q.eq("status", args.status))
324
+ .order("desc")
325
+ .take(args.limit ?? 50);
326
+ }
327
+ return ctx.db
328
+ .query("assemblies")
329
+ .order("desc")
330
+ .take(args.limit ?? 50);
331
+ },
332
+ });
333
+ export const listResults = query({
334
+ args: {
335
+ assemblyId: v.string(),
336
+ stepName: v.optional(v.string()),
337
+ limit: v.optional(v.number()),
338
+ },
339
+ returns: v.array(vAssemblyResult),
340
+ handler: async (ctx, args) => {
341
+ if (args.stepName) {
342
+ const stepName = args.stepName;
343
+ return ctx.db
344
+ .query("results")
345
+ .withIndex("by_assemblyId_and_step", (q) => q.eq("assemblyId", args.assemblyId).eq("stepName", stepName))
346
+ .order("desc")
347
+ .take(args.limit ?? 200);
348
+ }
349
+ return ctx.db
350
+ .query("results")
351
+ .withIndex("by_assemblyId", (q) => q.eq("assemblyId", args.assemblyId))
352
+ .order("desc")
353
+ .take(args.limit ?? 200);
354
+ },
355
+ });
356
+ export const storeAssemblyMetadata = mutation({
357
+ args: {
358
+ assemblyId: v.string(),
359
+ userId: v.optional(v.string()),
360
+ fields: v.optional(v.any()),
361
+ },
362
+ returns: v.union(vAssembly, v.null()),
363
+ handler: async (ctx, args) => {
364
+ const existing = await ctx.db
365
+ .query("assemblies")
366
+ .withIndex("by_assemblyId", (q) => q.eq("assemblyId", args.assemblyId))
367
+ .unique();
368
+ if (!existing) {
369
+ return null;
370
+ }
371
+ await ctx.db.patch(existing._id, {
372
+ userId: args.userId ?? existing.userId,
373
+ fields: args.fields ?? existing.fields,
374
+ updatedAt: Date.now(),
375
+ });
376
+ return {
377
+ ...existing,
378
+ userId: args.userId ?? existing.userId,
379
+ fields: args.fields ?? existing.fields,
380
+ };
381
+ },
382
+ });
383
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/component/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,CAAC,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,QAAQ,EACR,KAAK,GACN,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAEvB,MAAM,wBAAwB,GAAG,yCAAyC,CAAC;AAE3E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC;IACvB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC1B,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACxB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC/B,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;IACpB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IACZ,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG;IACxB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACrC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;IAC7C,IAAI,EAAE;QACJ,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9B,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/B,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAClC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACjC,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9C,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC5B,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC1B,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACxB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC/B;IACD,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC;IAC3B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,EAAE;aAC1B,KAAK,CAAC,YAAY,CAAC;aACnB,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;aACtE,MAAM,EAAE,CAAC;QAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE;gBACvC,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;gBACnD,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;aACf,CAAC,CAAC;QACL,CAAC;QAED,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM;YACtC,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE;YAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;YACzC,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU;YAClD,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS;YAC/C,sBAAsB,EACpB,IAAI,CAAC,sBAAsB,IAAI,QAAQ,CAAC,sBAAsB;YAChE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM;YACtC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;YACzC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;YACzC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;YACnC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM;YACtC,SAAS,EAAE,GAAG;SACf,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,GAAG,CAAC;IACtB,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,gBAAgB,CAAC;IACxD,IAAI,EAAE;QACJ,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,CAAC,CAAC,KAAK,CACd,CAAC,CAAC,MAAM,CAAC;YACP,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;YACpB,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE;SAChB,CAAC,CACH;KACF;IACD,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE;IACjB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,EAAE;aACjC,KAAK,CAAC,SAAS,CAAC;aAChB,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;aACtE,OAAO,EAAE,CAAC;QAEb,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;YACvC,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAiC,CAAC;YACpD,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,QAAQ,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;gBACzD,MAAM,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;gBACjE,IAAI,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBACzD,IAAI,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBACzD,IAAI,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBACzD,GAAG;gBACH,SAAS,EAAE,GAAG;aACf,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;IACnC,IAAI,EAAE;QACJ,MAAM,EAAE,kBAAkB;QAC1B,GAAG,iBAAiB;KACrB;IACD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE;KACd,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,sBAAsB,CAAC;YACtD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAA4C;YACxD,MAAM,EAAE,IAAI,CAAC,MAA6C;YAC1D,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,gBAAgB,EAAE,IAAI,CAAC,gBAEV;SACd,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAC3C,YAAY,EACZ,IAAI,CAAC,MAAM,CAAC,UAAU,CACvB,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACxC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAExC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,wBAAwB,EAAE;YACrD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAChE,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GACd,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;YAClC,CAAC,CAAC,IAAI,CAAC,WAAW;YAClB,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;gBACnC,CAAC,CAAC,IAAI,CAAC,UAAU;gBACjB,CAAC,CAAC,EAAE,CAAC;QAEX,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE;YACjD,UAAU;YACV,MAAM,EAAE,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YACzD,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YACrD,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACpE,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;IACzC,IAAI,EAAE;QACJ,MAAM,EAAE,kBAAkB;QAC1B,GAAG,iBAAiB;KACrB;IACD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;KAChB,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,EAAE,YAAY,EAAE,GAAG,sBAAsB,CAAC;YAC9C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAA4C;YACxD,MAAM,EAAE,IAAI,CAAC,MAA6C;YAC1D,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,gBAAgB,EAAE,IAAI,CAAC,gBAEV;SACd,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAC3C,YAAY,EACZ,IAAI,CAAC,MAAM,CAAC,UAAU,CACvB,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,YAAY;YACpB,SAAS;YACT,GAAG,EAAE,wBAAwB;SAC9B,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;IAClC,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/B,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACjC,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAChB,CAAC,CAAC,MAAM,CAAC;YACP,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;SACvB,CAAC,CACH;KACF;IACD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;KACxB,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACnE,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;QAClD,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,EAAE,UAAU;YACvB,OAAO,CAAC,GAAG,CAAC,uBAAuB;YACnC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAEjC,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CACb,wDAAwD,CACzD,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC;gBAC5C,OAAO;gBACP,eAAe,EAAE,IAAI,CAAC,SAAS;gBAC/B,UAAU;aACX,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAkC,CAAC;QACxD,MAAM,UAAU,GACd,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ;YACrC,CAAC,CAAC,OAAO,CAAC,WAAW;YACrB,CAAC,CAAC,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;gBACtC,CAAC,CAAC,OAAO,CAAC,UAAU;gBACpB,CAAC,CAAC,EAAE,CAAC;QAEX,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,OAAO,GAAG,cAAc,CAC3B,OAAO,CAAC,OAA0D;YACjE,SAAS,CACZ,CAAC;QAEF,MAAM,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE;YACjD,UAAU;YACV,MAAM,EAAE,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YAC/D,EAAE,EAAE,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YAC3D,OAAO,EACL,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACnE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,EAAE,OAAO;SACb,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,yBAAyB,EAAE;YAC5D,UAAU;YACV,OAAO;SACR,CAAC,CAAC;QAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IACrD,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;IACrC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,OAAO,MAAM,GAAG,CAAC,EAAE;aAChB,KAAK,CAAC,YAAY,CAAC;aACnB,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;aACtE,MAAM,EAAE,CAAC;IACd,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;IAClC,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9B,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC9B;IACD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,GAAG,CAAC,EAAE;iBACV,KAAK,CAAC,YAAY,CAAC;iBACnB,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;iBAC1D,KAAK,CAAC,MAAM,CAAC;iBACb,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,GAAG,CAAC,EAAE;iBACV,KAAK,CAAC,YAAY,CAAC;iBACnB,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;iBAC1D,KAAK,CAAC,MAAM,CAAC;iBACb,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,GAAG,CAAC,EAAE;aACV,KAAK,CAAC,YAAY,CAAC;aACnB,KAAK,CAAC,MAAM,CAAC;aACb,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;IAC/B,IAAI,EAAE;QACJ,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAChC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC9B;IACD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACjC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/B,OAAO,GAAG,CAAC,EAAE;iBACV,KAAK,CAAC,SAAS,CAAC;iBAChB,SAAS,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,EAAE,CACzC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAC7D;iBACA,KAAK,CAAC,MAAM,CAAC;iBACb,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,GAAG,CAAC,EAAE;aACV,KAAK,CAAC,SAAS,CAAC;aAChB,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;aACtE,KAAK,CAAC,MAAM,CAAC;aACb,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;IAC7B,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC5C,IAAI,EAAE;QACJ,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;KAC5B;IACD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,EAAE;aAC1B,KAAK,CAAC,YAAY,CAAC;aACnB,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;aACtE,MAAM,EAAE,CAAC;QAEZ,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM;YACtC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM;YACtC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,QAAQ;YACX,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM;YACtC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM;SACvC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}