convex-helpers 0.1.65 → 0.1.66

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.
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAC7C,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EACtD,cAAc,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GACjE,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAEpD;AAED,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AAE/C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAKhE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAC1E,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,IAAI,GAIL,GACF,CAAiB,IAAZ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAC1B,CACF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAC1E,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,IAAI,GAIL,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CACjC;AAGD,QAAA,MAAM,KAAK,eAAW,CAAC;AACvB,MAAM,MAAM,YAAY,CAAC,MAAM,SAAS,MAAM,IAAI,MAAM,GAAG;IACzD,OAAO,EAAE,OAAO,KAAK,CAAC;CACvB,CAAC;AAGF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAChD;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI;KAC5C,QAAQ,IAAI,MAAM,CAAC,IAAI,QAAQ,SAAS,CAAC,GAAG,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;CAC5E,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,MAAM,CAAC,UAAU,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IACpD,UAAU,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAC/B;KACG,GAAG,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC;CAC3C,GACD,KAAK,CAAC;AAEZ;;GAEG;AACH;;;;GAIG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IACrB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAC/D,IAAI,GACJ,KAAK,CAAC;AAEZ;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,QAI7C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAC7C,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EACtD,cAAc,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GACjE,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAEpD;AAED,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AAE/C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAKhE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAC1E,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,IAAI,GAIL,GACF,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAC1B,CACF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAC1E,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,IAAI,GAIL,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CACjC;AAGD,QAAA,MAAM,KAAK,eAAW,CAAC;AACvB,MAAM,MAAM,YAAY,CAAC,MAAM,SAAS,MAAM,IAAI,MAAM,GAAG;IACzD,OAAO,EAAE,OAAO,KAAK,CAAC;CACvB,CAAC;AAGF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAChD;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI;KAC5C,QAAQ,IAAI,MAAM,CAAC,IAAI,QAAQ,SAAS,CAAC,GAAG,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;CAC5E,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,MAAM,CAAC,UAAU,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IACpD,UAAU,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAC/B;KACG,GAAG,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC;CAC3C,GACD,KAAK,CAAC;AAEZ;;GAEG;AACH;;;;GAIG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IACrB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAC/D,IAAI,GACJ,KAAK,CAAC;AAEZ;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,QAI7C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "convex-helpers",
3
- "version": "0.1.65",
3
+ "version": "0.1.66",
4
4
  "description": "A collection of useful code to complement the official convex package.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -388,10 +388,10 @@ test("custom function with user auth", async () => {
388
388
  const authed = t.withIdentity({ tokenIdentifier: "foo" });
389
389
 
390
390
  // Make sure the custom function is protected by auth.
391
- expect(() => t.query(testApi.getSomething, { foo: "foo" })).rejects.toThrow(
392
- "Unauthenticated",
393
- );
394
- expect(() =>
391
+ await expect(() =>
392
+ t.query(testApi.getSomething, { foo: "foo" }),
393
+ ).rejects.toThrow("Unauthenticated");
394
+ await expect(() =>
395
395
  t
396
396
  .withIdentity({ tokenIdentifier: "bar" })
397
397
  .query(testApi.getSomething, { foo: "foo" }),
@@ -407,13 +407,13 @@ test("custom function with user auth", async () => {
407
407
  tokenIdentifier: "foo",
408
408
  sessionId: "bar" as SessionId,
409
409
  });
410
- expect(() =>
410
+ await expect(() =>
411
411
  authed.mutation(testApi.create, {
412
412
  tokenIdentifier: "bar",
413
413
  sessionId: "bar" as SessionId,
414
414
  }),
415
415
  ).rejects.toThrow("insert access not allowed");
416
- expect(() =>
416
+ await expect(() =>
417
417
  authed.mutation(testApi.create, {
418
418
  tokenIdentifier: "bar",
419
419
  sessionId: "" as SessionId,
@@ -436,7 +436,7 @@ describe("custom functions with api auth", () => {
436
436
  apiKey,
437
437
  tokenIdentifier: "bar",
438
438
  });
439
- expect(() =>
439
+ await expect(() =>
440
440
  t.mutation(testApi.fnCalledFromMyBackend, {
441
441
  apiKey: "",
442
442
  tokenIdentifier: "bar",
@@ -524,9 +524,9 @@ describe("custom functions", () => {
524
524
 
525
525
  test("still validates args", async () => {
526
526
  const t = convexTest(schema, modules);
527
- expect(() => t.query(testApi.redefine, { a: 3 as any })).rejects.toThrow(
528
- "Validator error: Expected `string`",
529
- );
527
+ await expect(() =>
528
+ t.query(testApi.redefine, { a: 3 as any }),
529
+ ).rejects.toThrow("Validator error: Expected `string`");
530
530
  });
531
531
  });
532
532
 
@@ -553,7 +553,7 @@ describe("nested custom functions", () => {
553
553
 
554
554
  test("still validates args", async () => {
555
555
  const t = convexTest(schema, modules);
556
- expect(() =>
556
+ await expect(() =>
557
557
  t.query(testApi.outerAdds, { a: 3 as any, outer: "" }),
558
558
  ).rejects.toThrow("Validator error: Expected `string`");
559
559
  });
package/server/hono.d.ts CHANGED
@@ -80,7 +80,7 @@ export declare class HttpRouterWithHono<ActionCtx extends GenericActionCtx<any>>
80
80
  *
81
81
  * @returns - an array of [path, method, endpoint] tuples.
82
82
  */
83
- getRoutes: () => [string, "GET" | "POST" | "PUT" | "DELETE" | "OPTIONS" | "PATCH", (...args: any) => any][];
83
+ getRoutes: () => [string, "GET" | "POST" | "PUT" | "DELETE" | "OPTIONS" | "PATCH", PublicHttpAction][];
84
84
  /**
85
85
  * Returns the appropriate HTTP endpoint and its routed request path and method.
86
86
  *
@@ -1 +1 @@
1
- {"version":3,"file":"hono.d.ts","sourceRoot":"","sources":["hono.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAEL,UAAU,EACV,gBAAgB,EAChB,cAAc,EAEd,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB;;;;;GAKG;AACH,OAAO,CAAC,MAAM,CAAC;IACb,KAAK,UAAU,GAAG,GAAG,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,SAAS,SAAS,gBAAgB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACzE,QAAQ,EAAE;SACP,IAAI,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;KAC3C,CAAC;CACH,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,kBAAkB,CAC7B,SAAS,SAAS,gBAAgB,CAAC,GAAG,CAAC,CACvC,SAAQ,UAAU;IAClB,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,iBAAiB,CAAqD;gBAElE,GAAG,EAAE,cAAc,CAAC,SAAS,CAAC;IAW1C;;;;;;OAMG;IACM,SAAS,oFACuC,GAAG,KAAK,GAAG,IA6BlE;IAEF;;;;;;;;;;;;;;;OAeG;IACM,MAAM,SAAU,MAAM,UAAU,cAAc,GAAG,MAAM,kGA8B9D;CACH;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,GAAG,MAAM,GAC9B,cAAc,CAIhB"}
1
+ {"version":3,"file":"hono.d.ts","sourceRoot":"","sources":["hono.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAEL,UAAU,EACV,gBAAgB,EAChB,cAAc,EAEd,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB;;;;;GAKG;AACH,OAAO,CAAC,MAAM,CAAC;IACb,KAAK,UAAU,GAAG,GAAG,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,SAAS,SAAS,gBAAgB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACzE,QAAQ,EAAE;SACP,IAAI,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;KAC3C,CAAC;CACH,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,kBAAkB,CAC7B,SAAS,SAAS,gBAAgB,CAAC,GAAG,CAAC,CACvC,SAAQ,UAAU;IAClB,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,iBAAiB,CAAqD;gBAElE,GAAG,EAAE,cAAc,CAAC,SAAS,CAAC;IAW1C;;;;;;OAMG;IACM,SAAS,8FAmChB;IAEF;;;;;;;;;;;;;;;OAeG;IACM,MAAM,SAAU,MAAM,UAAU,cAAc,GAAG,MAAM,kGA8B9D;CACH;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,GAAG,MAAM,GAC9B,cAAc,CAIhB"}
package/server/hono.js CHANGED
@@ -77,6 +77,10 @@ export class HttpRouterWithHono extends HttpRouter {
77
77
  // name (i.e. for middleware), so de-duplicate so we don't show multiple routes in the dashboard.
78
78
  const seen = new Set();
79
79
  this._app.routes.forEach((route) => {
80
+ // The (internal) field _handler on PublicHttpAction is used to look up the function's line number.
81
+ const handler = route.handler;
82
+ handler._handler = route.handler;
83
+ handler.isHttp = true;
80
84
  // Hono uses "ALL" in its router, which is not supported by the Convex router.
81
85
  // Expand this into a route for every routable method supported by Convex.
82
86
  if (route.method === "ALL") {
@@ -84,7 +88,7 @@ export class HttpRouterWithHono extends HttpRouter {
84
88
  const name = `${method} ${route.path}`;
85
89
  if (!seen.has(name)) {
86
90
  seen.add(name);
87
- convexRoutes.push([route.path, method, route.handler]);
91
+ convexRoutes.push([route.path, method, handler]);
88
92
  }
89
93
  }
90
94
  }
@@ -95,7 +99,7 @@ export class HttpRouterWithHono extends HttpRouter {
95
99
  convexRoutes.push([
96
100
  route.path,
97
101
  route.method,
98
- route.handler,
102
+ handler,
99
103
  ]);
100
104
  }
101
105
  }
package/server/hono.ts CHANGED
@@ -104,12 +104,17 @@ export class HttpRouterWithHono<
104
104
  * @returns - an array of [path, method, endpoint] tuples.
105
105
  */
106
106
  override getRoutes = () => {
107
- const convexRoutes: [string, RoutableMethod, (...args: any) => any][] = [];
107
+ const convexRoutes: [string, RoutableMethod, PublicHttpAction][] = [];
108
108
 
109
109
  // Likely a better way to do this, but hono will have multiple handlers with the same
110
110
  // name (i.e. for middleware), so de-duplicate so we don't show multiple routes in the dashboard.
111
111
  const seen = new Set();
112
112
  this._app.routes.forEach((route) => {
113
+ // The (internal) field _handler on PublicHttpAction is used to look up the function's line number.
114
+ const handler = route.handler as any;
115
+ handler._handler = route.handler;
116
+ handler.isHttp = true;
117
+
113
118
  // Hono uses "ALL" in its router, which is not supported by the Convex router.
114
119
  // Expand this into a route for every routable method supported by Convex.
115
120
  if (route.method === "ALL") {
@@ -117,7 +122,7 @@ export class HttpRouterWithHono<
117
122
  const name = `${method} ${route.path}`;
118
123
  if (!seen.has(name)) {
119
124
  seen.add(name);
120
- convexRoutes.push([route.path, method, route.handler]);
125
+ convexRoutes.push([route.path, method, handler]);
121
126
  }
122
127
  }
123
128
  } else {
@@ -127,7 +132,7 @@ export class HttpRouterWithHono<
127
132
  convexRoutes.push([
128
133
  route.path,
129
134
  route.method as RoutableMethod,
130
- route.handler,
135
+ handler,
131
136
  ]);
132
137
  }
133
138
  }
@@ -82,7 +82,7 @@ describe.each(["token bucket", "fixed window"] as const)(
82
82
 
83
83
  test("consume too much", async () => {
84
84
  const t = convexTest(schema, modules);
85
- expect(() =>
85
+ await expect(() =>
86
86
  t.run(async (ctx) => {
87
87
  await rateLimit(ctx, {
88
88
  name: "simple",
@@ -220,7 +220,7 @@ describe.each(["token bucket", "fixed window"] as const)(
220
220
 
221
221
  test("consume too much reserved", async () => {
222
222
  const t = convexTest(schema, modules);
223
- expect(() =>
223
+ await expect(() =>
224
224
  t.run(async (ctx) => {
225
225
  await rateLimit(ctx, {
226
226
  name: "simple",
@@ -242,7 +242,7 @@ describe.each(["token bucket", "fixed window"] as const)(
242
242
  const { rateLimit } = defineRateLimits({
243
243
  simple: { kind, rate: 1, period: Second },
244
244
  });
245
- expect(() =>
245
+ await expect(() =>
246
246
  t.run(async (ctx) => {
247
247
  await rateLimit(ctx, { name: "simple" });
248
248
  await rateLimit(ctx, { name: "simple", throws: true });
@@ -21,7 +21,7 @@ export async function getOrThrow(ctx, id) {
21
21
  * @returns The Documents referenced by the Ids, in order. `null` if not found.
22
22
  */
23
23
  export async function getAll(db, ids) {
24
- return asyncMap(ids, db.get);
24
+ return asyncMap(ids, (id) => db.get(id));
25
25
  }
26
26
  /**
27
27
  * getAllOrThrow returns a list of Documents for the `Id`s passed in.
@@ -48,7 +48,7 @@ export async function getAll<
48
48
  db: GenericDatabaseReader<DataModel>,
49
49
  ids: Iterable<GenericId<TableName>> | Promise<Iterable<GenericId<TableName>>>,
50
50
  ): Promise<(DocumentByName<DataModel, TableName> | null)[]> {
51
- return asyncMap(ids, db.get);
51
+ return asyncMap(ids, (id) => db.get(id));
52
52
  }
53
53
 
54
54
  /**
@@ -87,7 +87,7 @@ describe("row level security", () => {
87
87
  });
88
88
  const asA = t.withIdentity({ tokenIdentifier: "Person A" });
89
89
  const asB = t.withIdentity({ tokenIdentifier: "Person B" });
90
- expect(() =>
90
+ await expect(() =>
91
91
  asB.run(async (ctx) => {
92
92
  const rls = await withRLS(ctx);
93
93
  return rls.db.delete(noteId);
@@ -153,18 +153,18 @@ test("validators allow things when they're unset", async () => {
153
153
 
154
154
  test("validators disallow things when they're wrong", async () => {
155
155
  const t = convexTest(schema, modules);
156
- expect(async () => {
156
+ await expect(async () => {
157
157
  await t.query(testApi.echo, {} as ExampleFields);
158
158
  }).rejects.toThrowError("Validator error");
159
159
  // extra field
160
- expect(async () => {
160
+ await expect(async () => {
161
161
  await t.query(testApi.echo, {
162
162
  ...valid,
163
163
  unknown: 3,
164
164
  } as ExampleFields);
165
165
  }).rejects.toThrowError("Validator error");
166
166
  // pretend required shouldn't allow other types
167
- expect(async () => {
167
+ await expect(async () => {
168
168
  await t.query(testApi.echo, {
169
169
  ...valid,
170
170
  maybeNotSetYet: true as unknown as string,
package/server/zod.d.ts CHANGED
@@ -225,7 +225,7 @@ type ConvexValidatorFromZod<Z extends z.ZodTypeAny> = Z extends Zid<infer TableN
225
225
  ], "required", ConvexValidatorFromZod<Inner>["fieldPaths"]> : ConvexValidatorFromZod<Inner> extends Validator<infer T, "optional", infer F> ? VUnion<null | Exclude<ConvexValidatorFromZod<Inner>["type"], undefined>, [
226
226
  Validator<T, "required", F>,
227
227
  VNull
228
- ], "optional", ConvexValidatorFromZod<Inner>["fieldPaths"]> : never : Z extends z.ZodBranded<infer Inner, any> ? ConvexValidatorFromZod<Inner> : Z extends z.ZodDefault<infer Inner> ? ConvexValidatorFromZod<Inner> extends GenericValidator ? VOptional<ConvexValidatorFromZod<Inner>> : never : Z extends z.ZodRecord<infer K, infer V> ? K extends z.ZodString | Zid<string> | z.ZodUnion<[
228
+ ], "optional", ConvexValidatorFromZod<Inner>["fieldPaths"]> : never : Z extends z.ZodBranded<infer Inner, infer Brand> | ZodBrandedInputAndOutput<infer Inner, infer Brand> ? Inner extends z.ZodString ? VString<string & z.BRAND<Brand>> : Inner extends z.ZodNumber ? VFloat64<number & z.BRAND<Brand>> : Inner extends z.ZodBigInt ? VInt64<bigint & z.BRAND<Brand>> : ConvexValidatorFromZod<Inner> : Z extends z.ZodDefault<infer Inner> ? ConvexValidatorFromZod<Inner> extends GenericValidator ? VOptional<ConvexValidatorFromZod<Inner>> : never : Z extends z.ZodRecord<infer K, infer V> ? K extends z.ZodString | Zid<string> | z.ZodUnion<[
229
229
  (z.ZodString | Zid<string>),
230
230
  (z.ZodString | Zid<string>),
231
231
  ...(z.ZodString | Zid<string>)[]
@@ -264,5 +264,21 @@ export declare const withSystemFields: <Table extends string, T extends {
264
264
  _id: Zid<Table>;
265
265
  _creationTime: z.ZodNumber;
266
266
  };
267
+ export declare class ZodBrandedInputAndOutput<T extends z.ZodTypeAny, B extends string | number | symbol> extends z.ZodType<T["_output"] & z.BRAND<B>, z.ZodBrandedDef<T>, T["_input"] & z.BRAND<B>> {
268
+ _parse(input: z.ParseInput): z.ParseReturnType<any>;
269
+ unwrap(): T;
270
+ }
271
+ /**
272
+ * Add a brand to a zod validator. Used like `zBrand(z.string(), "MyBrand")`.
273
+ * Compared to zod's `.brand`, this also brands the input type, so if you use
274
+ * the branded validator as an argument to a function, the input type will also
275
+ * be branded. The normal `.brand` only brands the output type, so only the type
276
+ * returned by validation would be branded.
277
+ *
278
+ * @param validator A zod validator - generally a string, number, or bigint
279
+ * @param brand A string, number, or symbol to brand the validator with
280
+ * @returns A zod validator that brands both the input and output types.
281
+ */
282
+ export declare function zBrand<T extends z.ZodTypeAny, B extends string | number | symbol>(validator: T, brand?: B): ZodBrandedInputAndOutput<T, B>;
267
283
  export {};
268
284
  //# sourceMappingURL=zod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["zod.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["zod.ts"],"names":[],"mappings":"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"}
package/server/zod.js CHANGED
@@ -352,3 +352,32 @@ export class Zid extends z.ZodType {
352
352
  export const withSystemFields = (tableName, zObject) => {
353
353
  return { ...zObject, _id: zid(tableName), _creationTime: z.number() };
354
354
  };
355
+ // This is a copy of zod's ZodBranded which also brands the input.
356
+ export class ZodBrandedInputAndOutput extends z.ZodType {
357
+ _parse(input) {
358
+ const { ctx } = this._processInputParams(input);
359
+ const data = ctx.data;
360
+ return this._def.type._parse({
361
+ data,
362
+ path: ctx.path,
363
+ parent: ctx,
364
+ });
365
+ }
366
+ unwrap() {
367
+ return this._def.type;
368
+ }
369
+ }
370
+ /**
371
+ * Add a brand to a zod validator. Used like `zBrand(z.string(), "MyBrand")`.
372
+ * Compared to zod's `.brand`, this also brands the input type, so if you use
373
+ * the branded validator as an argument to a function, the input type will also
374
+ * be branded. The normal `.brand` only brands the output type, so only the type
375
+ * returned by validation would be branded.
376
+ *
377
+ * @param validator A zod validator - generally a string, number, or bigint
378
+ * @param brand A string, number, or symbol to brand the validator with
379
+ * @returns A zod validator that brands both the input and output types.
380
+ */
381
+ export function zBrand(validator, brand) {
382
+ return validator.brand(brand);
383
+ }
@@ -11,9 +11,9 @@ import { Equals, assert, omit } from "../index.js";
11
11
  import { convexTest } from "convex-test";
12
12
  import { describe, expect, test } from "vitest";
13
13
  import { modules } from "./setup.test.js";
14
- import { zCustomQuery, zid, zodToConvexFields } from "./zod.js";
14
+ import { zBrand, zCustomQuery, zid, zodToConvexFields } from "./zod.js";
15
15
  import { customCtx } from "./customFunctions.js";
16
- import { v } from "convex/values";
16
+ import { v, VString } from "convex/values";
17
17
  import { z } from "zod";
18
18
 
19
19
  // This is an example of how to make a version of `zid` that
@@ -58,7 +58,8 @@ export const kitchenSinkValidator = {
58
58
  nullableOptional: z.nullable(z.string().optional()),
59
59
  optionalNullable: z.nullable(z.string()).optional(),
60
60
  nullable: z.nullable(z.string()),
61
- branded: z.string().brand("branded"),
61
+ // z.string().brand("branded") also works, but zBrand also brands the input
62
+ branded: zBrand(z.string(), "branded"),
62
63
  default: z.string().default("default"),
63
64
  readonly: z.object({ a: z.string(), b: z.number() }).readonly(),
64
65
  pipeline: z.number().pipe(z.coerce.string()),
@@ -317,7 +318,7 @@ test("zod kitchen sink", async () => {
317
318
  effect: "effect",
318
319
  optional: undefined,
319
320
  nullable: null,
320
- branded: "branded",
321
+ branded: "branded" as string & z.BRAND<"branded">,
321
322
  default: undefined,
322
323
  readonly: { a: "1", b: 2 },
323
324
  pipeline: 0,
@@ -544,7 +545,7 @@ describe("zod functions", () => {
544
545
 
545
546
  test("bad redefinition", async () => {
546
547
  const t = convexTest(schema, modules);
547
- expect(() =>
548
+ await expect(() =>
548
549
  t.query(testApi.badRedefine, {
549
550
  a: "foo" as never,
550
551
  b: 0,
@@ -587,7 +588,7 @@ assert(
587
588
  bi: v.int64(),
588
589
  bool: v.boolean(),
589
590
  literal: v.literal("hi"),
590
- branded: v.string(),
591
+ branded: v.string() as VString<string & z.BRAND<"branded">>,
591
592
  },
592
593
  ),
593
594
  );
@@ -646,6 +647,26 @@ assert(
646
647
  },
647
648
  ),
648
649
  );
650
+ // Validate that our double-branded type is correct.
651
+ assert(
652
+ sameType(
653
+ zodToConvexFields({
654
+ branded2: zBrand(z.string(), "branded2"),
655
+ }),
656
+ {
657
+ branded2: v.string() as VString<string & z.BRAND<"branded2">>,
658
+ },
659
+ ),
660
+ );
661
+ const s = zBrand(z.string(), "brand");
662
+ const n = zBrand(z.number(), "brand");
663
+ const i = zBrand(z.bigint(), "brand");
664
+ assert(true as Equals<z.input<typeof s>, string & z.BRAND<"brand">>);
665
+ assert(true as Equals<z.output<typeof s>, string & z.BRAND<"brand">>);
666
+ assert(true as Equals<z.input<typeof n>, number & z.BRAND<"brand">>);
667
+ assert(true as Equals<z.output<typeof n>, number & z.BRAND<"brand">>);
668
+ assert(true as Equals<z.input<typeof i>, bigint & z.BRAND<"brand">>);
669
+ assert(true as Equals<z.output<typeof i>, bigint & z.BRAND<"brand">>);
649
670
 
650
671
  function sameType<T, U>(_t: T, _u: U): Equals<T, U> {
651
672
  return true as any;
package/server/zod.ts CHANGED
@@ -571,11 +571,26 @@ type ConvexValidatorFromZod<Z extends z.ZodTypeAny> =
571
571
  ConvexValidatorFromZod<Inner>["fieldPaths"]
572
572
  >
573
573
  : never
574
- : Z extends z.ZodBranded<
575
- infer Inner,
576
- any
577
- >
578
- ? ConvexValidatorFromZod<Inner>
574
+ : Z extends
575
+ | z.ZodBranded<
576
+ infer Inner,
577
+ infer Brand
578
+ >
579
+ | ZodBrandedInputAndOutput<
580
+ infer Inner,
581
+ infer Brand
582
+ >
583
+ ? Inner extends z.ZodString
584
+ ? VString<string & z.BRAND<Brand>>
585
+ : Inner extends z.ZodNumber
586
+ ? VFloat64<
587
+ number & z.BRAND<Brand>
588
+ >
589
+ : Inner extends z.ZodBigInt
590
+ ? VInt64<
591
+ bigint & z.BRAND<Brand>
592
+ >
593
+ : ConvexValidatorFromZod<Inner>
579
594
  : Z extends z.ZodDefault<
580
595
  infer Inner
581
596
  > // Treat like optional
@@ -812,3 +827,44 @@ export const withSystemFields = <
812
827
  ) => {
813
828
  return { ...zObject, _id: zid(tableName), _creationTime: z.number() };
814
829
  };
830
+
831
+ // This is a copy of zod's ZodBranded which also brands the input.
832
+ export class ZodBrandedInputAndOutput<
833
+ T extends z.ZodTypeAny,
834
+ B extends string | number | symbol,
835
+ > extends z.ZodType<
836
+ T["_output"] & z.BRAND<B>,
837
+ z.ZodBrandedDef<T>,
838
+ T["_input"] & z.BRAND<B>
839
+ > {
840
+ _parse(input: z.ParseInput) {
841
+ const { ctx } = this._processInputParams(input);
842
+ const data = ctx.data;
843
+ return this._def.type._parse({
844
+ data,
845
+ path: ctx.path,
846
+ parent: ctx,
847
+ });
848
+ }
849
+ unwrap() {
850
+ return this._def.type;
851
+ }
852
+ }
853
+
854
+ /**
855
+ * Add a brand to a zod validator. Used like `zBrand(z.string(), "MyBrand")`.
856
+ * Compared to zod's `.brand`, this also brands the input type, so if you use
857
+ * the branded validator as an argument to a function, the input type will also
858
+ * be branded. The normal `.brand` only brands the output type, so only the type
859
+ * returned by validation would be branded.
860
+ *
861
+ * @param validator A zod validator - generally a string, number, or bigint
862
+ * @param brand A string, number, or symbol to brand the validator with
863
+ * @returns A zod validator that brands both the input and output types.
864
+ */
865
+ export function zBrand<
866
+ T extends z.ZodTypeAny,
867
+ B extends string | number | symbol,
868
+ >(validator: T, brand?: B): ZodBrandedInputAndOutput<T, B> {
869
+ return validator.brand(brand);
870
+ }
package/server.d.ts CHANGED
@@ -37,7 +37,7 @@ export declare function Table<T extends Record<string, Validator<any, any, any>>
37
37
  }>, (Expand<T & {
38
38
  _id: import("convex/values").VId<GenericId<TableName>, "required">;
39
39
  _creationTime: import("convex/values").VFloat64<number, "required">;
40
- }> extends infer T_1 extends Record<string, import("convex/values").GenericValidator> ? { [Property_4 in keyof T_1]: Expand<T & {
40
+ }> extends infer T_2 extends Record<string, import("convex/values").GenericValidator> ? { [Property_4 in keyof T_2]: Expand<T & {
41
41
  _id: import("convex/values").VId<GenericId<TableName>, "required">;
42
42
  _creationTime: import("convex/values").VFloat64<number, "required">;
43
43
  }>[Property_4]["isOptional"] extends "optional" ? Property_4 : never; } : never)[keyof Expand<T & {
@@ -52,7 +52,7 @@ export declare function Table<T extends Record<string, Validator<any, any, any>>
52
52
  }>, "required", (Expand<T & {
53
53
  _id: import("convex/values").VId<GenericId<TableName>, "required">;
54
54
  _creationTime: import("convex/values").VFloat64<number, "required">;
55
- }> extends infer T_2 extends import("convex/values").PropertyValidators ? { [Property_2_1 in keyof T_2]: Property_2_1 | `${Property_2_1 & string}.${Expand<T & {
55
+ }> extends infer T_3 extends import("convex/values").PropertyValidators ? { [Property_2_1 in keyof T_3]: Property_2_1 | `${Property_2_1 & string}.${Expand<T & {
56
56
  _id: import("convex/values").VId<GenericId<TableName>, "required">;
57
57
  _creationTime: import("convex/values").VFloat64<number, "required">;
58
58
  }>[Property_2_1]["fieldPaths"]}`; } : never)[keyof Expand<T & {
package/validators.d.ts CHANGED
@@ -52,7 +52,7 @@ export declare const any: import("convex/values").VAny<any, "required", string>;
52
52
  /** Null value. Underscore is so it doesn't shadow the null builtin */
53
53
  export declare const null_: import("convex/values").VNull<null, "required">;
54
54
  /** Re-export values from v without having to do v.* */
55
- export declare const id: <TableName extends string>(tableName: TableName) => import("convex/values").VId<import("convex/values").GenericId<TableName>, "required">, object: <T_2 extends PropertyValidators>(fields: T_2) => import("convex/values").VObject<import("convex/server").Expand<{ [Property in { [Property_1 in keyof T_2]: T_2[Property_1]["isOptional"] extends "optional" ? Property_1 : never; }[keyof T_2]]?: Exclude<import("convex/values").Infer<T_2[Property]>, undefined> | undefined; } & { [Property_1 in Exclude<keyof T_2, { [Property_1 in keyof T_2]: T_2[Property_1]["isOptional"] extends "optional" ? Property_1 : never; }[keyof T_2]>]: import("convex/values").Infer<T_2[Property_1]>; }>, T_2, "required", { [Property_2 in keyof T_2]: Property_2 | `${Property_2 & string}.${T_2[Property_2]["fieldPaths"]}`; }[keyof T_2] & string>, array: <T_1 extends Validator<any, "required", any>>(element: T_1) => import("convex/values").VArray<T_1["type"][], T_1, "required">, bytes: () => import("convex/values").VBytes<ArrayBuffer, "required">, literal: <T extends string | number | bigint | boolean>(literal: T) => import("convex/values").VLiteral<T, "required">, optional: <T_4 extends GenericValidator>(value: T_4) => VOptional<T_4>, union: <T_3 extends Validator<any, "required", any>[]>(...members: T_3) => VUnion<T_3[number]["type"], T_3, "required", T_3[number]["fieldPaths"]>;
55
+ export declare const id: <TableName extends string>(tableName: TableName) => import("convex/values").VId<import("convex/values").GenericId<TableName>, "required">, object: <T_2 extends PropertyValidators>(fields: T_2) => import("convex/values").VObject<import("convex/server").Expand<{ [Property in { [Property_1 in keyof T_2]: T_2[Property_1]["isOptional"] extends "optional" ? Property_1 : never; }[keyof T_2]]?: Exclude<import("convex/values").Infer<T_2[Property]>, undefined> | undefined; } & { [Property_1 in Exclude<keyof T_2, { [Property in keyof T_2]: T_2[Property]["isOptional"] extends "optional" ? Property : never; }[keyof T_2]>]: import("convex/values").Infer<T_2[Property_1]>; }>, T_2, "required", { [Property_2 in keyof T_2]: Property_2 | `${Property_2 & string}.${T_2[Property_2]["fieldPaths"]}`; }[keyof T_2] & string>, array: <T_1 extends Validator<any, "required", any>>(element: T_1) => import("convex/values").VArray<T_1["type"][], T_1, "required">, bytes: () => import("convex/values").VBytes<ArrayBuffer, "required">, literal: <T extends string | number | bigint | boolean>(literal: T) => import("convex/values").VLiteral<T, "required">, optional: <T_4 extends GenericValidator>(value: T_4) => VOptional<T_4>, union: <T_3 extends Validator<any, "required", any>[]>(...members: T_3) => VUnion<T_3[number]["type"], T_3, "required", T_3[number]["fieldPaths"]>;
56
56
  /** ArrayBuffer validator. */
57
57
  export declare const arrayBuffer: () => import("convex/values").VBytes<ArrayBuffer, "required">;
58
58
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["validators.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,EACT,OAAO,EACP,MAAM,EACN,SAAS,EAEV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,QAAQ,GACnB,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAC5C,CAAC,SAAS,CAAC,EAAE,WAEJ,CAAC,KACT,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAMvB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,iNAClD,CAAC;AAEvB;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,kBAAkB,OAAO,CAAC,KAMrD,GACF,CAAY,IAAP,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAElC,CAAC;AAIF,wBAAwB;AACxB,eAAO,MAAM,MAAM,6BAAa,CAAC;AACjC,mEAAmE;AACnE,eAAO,MAAM,MAAM,sDAAc,CAAC;AAClC,mEAAmE;AACnE,eAAO,MAAM,OAAO,sDAAc,CAAC;AACnC,+DAA+D;AAC/D,eAAO,MAAM,OAAO,uDAAc,CAAC;AACnC,yDAAyD;AACzD,eAAO,MAAM,MAAM,oDAAY,CAAC;AAChC,yDAAyD;AACzD,eAAO,MAAM,KAAK,oDAAY,CAAC;AAC/B,uBAAuB;AACvB,eAAO,MAAM,GAAG,uDAAU,CAAC;AAC3B,sEAAsE;AACtE,eAAO,MAAM,KAAK,iDAAW,CAAC;AAC9B,uDAAuD;AACvD,eAAO,MAAQ,EAAE,6IAAE,MAAM,kPAYW,CAAC,qXASA,eAAe,0CArBzB,KAAK,iIAAE,KAAK,iEAAE,OAAO,iHAAE,QAAQ,gEAAE,KAAK,6EA+CF,WAE7D,2BAA2B,WAAW,eAjD+B,CAAC;AACxE,6BAA6B;AAC7B,eAAO,MAAM,WAAW,+DAAQ,CAAC;AAEjC;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,SAAS,MAAM,aACxC,SAAS;;;CAIpB,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,SAAS,MAAM,EACxB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,aAE/B,SAAS,UACZ,CAAC,KAMJ,MAAM,CAAC,CAAC;;;CAAgB,CAC9B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,UAAU,CAAC,KACzC,OAAO,CAAC,MAAM,GAAG;IAAE,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,UAAU,EAA0B,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,gBAAgB,mBAAmB,CAAC,KAAG,CAC/C,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,gBACzD,CAAC,KACd,CAA6C,CAAC"}
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["validators.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,EACT,OAAO,EACP,MAAM,EACN,SAAS,EAEV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,QAAQ,GACnB,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAC5C,CAAC,SAAS,CAAC,EAAE,WAEJ,CAAC,KACT,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAMvB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,iNAClD,CAAC;AAEvB;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,kBAAkB,OAAO,CAAC,KAMrD,GACF,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAElC,CAAC;AAIF,wBAAwB;AACxB,eAAO,MAAM,MAAM,6BAAa,CAAC;AACjC,mEAAmE;AACnE,eAAO,MAAM,MAAM,sDAAc,CAAC;AAClC,mEAAmE;AACnE,eAAO,MAAM,OAAO,sDAAc,CAAC;AACnC,+DAA+D;AAC/D,eAAO,MAAM,OAAO,uDAAc,CAAC;AACnC,yDAAyD;AACzD,eAAO,MAAM,MAAM,oDAAY,CAAC;AAChC,yDAAyD;AACzD,eAAO,MAAM,KAAK,oDAAY,CAAC;AAC/B,uBAAuB;AACvB,eAAO,MAAM,GAAG,uDAAU,CAAC;AAC3B,sEAAsE;AACtE,eAAO,MAAM,KAAK,iDAAW,CAAC;AAC9B,uDAAuD;AACvD,eAAO,MAAQ,EAAE,6IAAE,MAAM,kPAYW,CAAC,+WASA,eAAe,0CArBzB,KAAK,iIAAE,KAAK,iEAAE,OAAO,iHAAE,QAAQ,gEAAE,KAAK,6EA+CF,WAE7D,2BAA2B,WAAW,eAjD+B,CAAC;AACxE,6BAA6B;AAC7B,eAAO,MAAM,WAAW,+DAAQ,CAAC;AAEjC;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,SAAS,MAAM,aACxC,SAAS;;;CAIpB,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,SAAS,MAAM,EACxB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,aAE/B,SAAS,UACZ,CAAC,KAMJ,MAAM,CAAC,CAAC;;;CAAgB,CAC9B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,UAAU,CAAC,KACzC,OAAO,CAAC,MAAM,GAAG;IAAE,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,UAAU,EAA0B,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,gBAAgB,mBAAmB,CAAC,KAAG,CAC/C,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,gBACzD,CAAC,KACd,CAA6C,CAAC"}