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 +1 -1
- package/package.json +1 -1
- package/server/customFunctions.test.ts +11 -11
- package/server/hono.d.ts +1 -1
- package/server/hono.d.ts.map +1 -1
- package/server/hono.js +6 -2
- package/server/hono.ts +8 -3
- package/server/rateLimit.test.ts +3 -3
- package/server/relationships.js +1 -1
- package/server/relationships.ts +1 -1
- package/server/rowLevelSecurity.test.ts +1 -1
- package/server/validators.test.ts +3 -3
- package/server/zod.d.ts +17 -1
- package/server/zod.d.ts.map +1 -1
- package/server/zod.js +29 -0
- package/server/zod.test.ts +27 -6
- package/server/zod.ts +61 -5
- package/server.d.ts +2 -2
- package/validators.d.ts +1 -1
- package/validators.d.ts.map +1 -1
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,
|
|
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
|
@@ -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(() =>
|
|
392
|
-
"
|
|
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(() =>
|
|
528
|
-
|
|
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",
|
|
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
|
*
|
package/server/hono.d.ts.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
135
|
+
handler,
|
|
131
136
|
]);
|
|
132
137
|
}
|
|
133
138
|
}
|
package/server/rateLimit.test.ts
CHANGED
|
@@ -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 });
|
package/server/relationships.js
CHANGED
|
@@ -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.
|
package/server/relationships.ts
CHANGED
|
@@ -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,
|
|
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
|
package/server/zod.d.ts.map
CHANGED
|
@@ -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
|
+
}
|
package/server/zod.test.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
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
|
|
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
|
|
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, { [
|
|
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
|
/**
|
package/validators.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|