convex 1.36.0 → 1.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +50 -27
- package/dist/browser.bundle.js +1 -1
- package/dist/browser.bundle.js.map +1 -1
- package/dist/cjs/cli/codegen_templates/agentsmd.js +8 -2
- package/dist/cjs/cli/codegen_templates/agentsmd.js.map +2 -2
- package/dist/cjs/cli/codegen_templates/claudemd.js +2 -0
- package/dist/cjs/cli/codegen_templates/claudemd.js.map +2 -2
- package/dist/cjs/cli/configure.js +0 -8
- package/dist/cjs/cli/configure.js.map +2 -2
- package/dist/cjs/cli/deployment.js +2 -1
- package/dist/cjs/cli/deployment.js.map +2 -2
- package/dist/cjs/cli/deploymentToken.js +30 -0
- package/dist/cjs/cli/deploymentToken.js.map +7 -0
- package/dist/cjs/cli/deploymentTokenCreate.js +109 -0
- package/dist/cjs/cli/deploymentTokenCreate.js.map +7 -0
- package/dist/cjs/cli/deploymentTokenDelete.js +87 -0
- package/dist/cjs/cli/deploymentTokenDelete.js.map +7 -0
- package/dist/cjs/cli/envDefault.js +130 -41
- package/dist/cjs/cli/envDefault.js.map +3 -3
- package/dist/cjs/cli/generatedApi.js.map +1 -1
- package/dist/cjs/cli/lib/command.js +1 -1
- package/dist/cjs/cli/lib/command.js.map +1 -1
- package/dist/cjs/cli/lib/generatedFunctionLogsApi.js.map +1 -1
- package/dist/cjs/cli/lib/login.js +51 -0
- package/dist/cjs/cli/lib/login.js.map +3 -3
- package/dist/cjs/cli/lib/usage.js +13 -6
- package/dist/cjs/cli/lib/usage.js.map +2 -2
- package/dist/cjs/cli/lib/workos/environmentApi.js +6 -12
- package/dist/cjs/cli/lib/workos/environmentApi.js.map +3 -3
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/react/client.js +40 -42
- package/dist/cjs/react/client.js.map +2 -2
- package/dist/cjs/react/index.js +1 -0
- package/dist/cjs/react/index.js.map +2 -2
- package/dist/cjs/react/use_paginated_query.js +5 -46
- package/dist/cjs/react/use_paginated_query.js.map +2 -2
- package/dist/cjs/react/use_paginated_query2.js.map +2 -2
- package/dist/cjs/server/audit_logging.js +67 -0
- package/dist/cjs/server/audit_logging.js.map +7 -0
- package/dist/cjs/server/impl/meta_impl.js +27 -3
- package/dist/cjs/server/impl/meta_impl.js.map +2 -2
- package/dist/cjs/server/impl/registration_impl.js +2 -0
- package/dist/cjs/server/impl/registration_impl.js.map +2 -2
- package/dist/cjs/server/index.js +2 -0
- package/dist/cjs/server/index.js.map +2 -2
- package/dist/cjs/server/log.js +30 -0
- package/dist/cjs/server/log.js.map +7 -0
- package/dist/cjs/server/logVars.js +48 -0
- package/dist/cjs/server/logVars.js.map +7 -0
- package/dist/cjs/server/meta.js.map +1 -1
- package/dist/cjs/server/registration.js.map +1 -1
- package/dist/cjs-types/cli/codegen_templates/agentsmd.d.ts.map +1 -1
- package/dist/cjs-types/cli/codegen_templates/claudemd.d.ts.map +1 -1
- package/dist/cjs-types/cli/configure.d.ts.map +1 -1
- package/dist/cjs-types/cli/deployment.d.ts.map +1 -1
- package/dist/cjs-types/cli/deploymentToken.d.ts +3 -0
- package/dist/cjs-types/cli/deploymentToken.d.ts.map +1 -0
- package/dist/cjs-types/cli/deploymentToken.test.d.ts +2 -0
- package/dist/cjs-types/cli/deploymentToken.test.d.ts.map +1 -0
- package/dist/cjs-types/cli/deploymentTokenCreate.d.ts +13 -0
- package/dist/cjs-types/cli/deploymentTokenCreate.d.ts.map +1 -0
- package/dist/cjs-types/cli/deploymentTokenDelete.d.ts +11 -0
- package/dist/cjs-types/cli/deploymentTokenDelete.d.ts.map +1 -0
- package/dist/cjs-types/cli/envDefault.d.ts +2 -2
- package/dist/cjs-types/cli/envDefault.d.ts.map +1 -1
- package/dist/cjs-types/cli/envDefault.test.d.ts +2 -0
- package/dist/cjs-types/cli/envDefault.test.d.ts.map +1 -0
- package/dist/cjs-types/cli/generatedApi.d.ts +1 -1
- package/dist/cjs-types/cli/generatedApi.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts +1 -0
- package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/login.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/usage.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/workos/environmentApi.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/workos/environmentApi.test.d.ts +2 -0
- package/dist/cjs-types/cli/lib/workos/environmentApi.test.d.ts.map +1 -0
- package/dist/cjs-types/index.d.ts +1 -1
- package/dist/cjs-types/react/client.d.ts +52 -0
- package/dist/cjs-types/react/client.d.ts.map +1 -1
- package/dist/cjs-types/react/index.d.ts +2 -2
- package/dist/cjs-types/react/index.d.ts.map +1 -1
- package/dist/cjs-types/react/use_paginated_query.d.ts.map +1 -1
- package/dist/cjs-types/react/use_paginated_query2.d.ts +63 -1
- package/dist/cjs-types/react/use_paginated_query2.d.ts.map +1 -1
- package/dist/cjs-types/server/api.intersect.test.d.ts +2 -0
- package/dist/cjs-types/server/api.intersect.test.d.ts.map +1 -0
- package/dist/cjs-types/server/audit_logging.d.ts +19 -0
- package/dist/cjs-types/server/audit_logging.d.ts.map +1 -0
- package/dist/cjs-types/server/audit_logging.test.d.ts +2 -0
- package/dist/cjs-types/server/audit_logging.test.d.ts.map +1 -0
- package/dist/cjs-types/server/impl/meta_impl.d.ts.map +1 -1
- package/dist/cjs-types/server/impl/registration_impl.d.ts.map +1 -1
- package/dist/cjs-types/server/index.d.ts +2 -2
- package/dist/cjs-types/server/index.d.ts.map +1 -1
- package/dist/cjs-types/server/log.d.ts +2 -0
- package/dist/cjs-types/server/log.d.ts.map +1 -0
- package/dist/cjs-types/server/logVars.d.ts +20 -0
- package/dist/cjs-types/server/logVars.d.ts.map +1 -0
- package/dist/cjs-types/server/meta.d.ts +40 -0
- package/dist/cjs-types/server/meta.d.ts.map +1 -1
- package/dist/cjs-types/server/registration.d.ts +5 -2
- package/dist/cjs-types/server/registration.d.ts.map +1 -1
- package/dist/cli.bundle.cjs +362 -74
- package/dist/cli.bundle.cjs.map +4 -4
- package/dist/esm/cli/codegen_templates/agentsmd.js +8 -2
- package/dist/esm/cli/codegen_templates/agentsmd.js.map +2 -2
- package/dist/esm/cli/codegen_templates/claudemd.js +2 -0
- package/dist/esm/cli/codegen_templates/claudemd.js.map +2 -2
- package/dist/esm/cli/configure.js +0 -8
- package/dist/esm/cli/configure.js.map +2 -2
- package/dist/esm/cli/deployment.js +2 -1
- package/dist/esm/cli/deployment.js.map +2 -2
- package/dist/esm/cli/deploymentToken.js +8 -0
- package/dist/esm/cli/deploymentToken.js.map +7 -0
- package/dist/esm/cli/deploymentTokenCreate.js +91 -0
- package/dist/esm/cli/deploymentTokenCreate.js.map +7 -0
- package/dist/esm/cli/deploymentTokenDelete.js +68 -0
- package/dist/esm/cli/deploymentTokenDelete.js.map +7 -0
- package/dist/esm/cli/envDefault.js +131 -42
- package/dist/esm/cli/envDefault.js.map +3 -3
- package/dist/esm/cli/lib/command.js +1 -1
- package/dist/esm/cli/lib/command.js.map +1 -1
- package/dist/esm/cli/lib/login.js +52 -0
- package/dist/esm/cli/lib/login.js.map +3 -3
- package/dist/esm/cli/lib/usage.js +15 -8
- package/dist/esm/cli/lib/usage.js.map +2 -2
- package/dist/esm/cli/lib/workos/environmentApi.js +6 -12
- package/dist/esm/cli/lib/workos/environmentApi.js.map +3 -3
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/react/client.js +38 -41
- package/dist/esm/react/client.js.map +2 -2
- package/dist/esm/react/index.js +4 -1
- package/dist/esm/react/index.js.map +2 -2
- package/dist/esm/react/use_paginated_query.js +5 -46
- package/dist/esm/react/use_paginated_query.js.map +2 -2
- package/dist/esm/react/use_paginated_query2.js.map +2 -2
- package/dist/esm/server/audit_logging.js +44 -0
- package/dist/esm/server/audit_logging.js.map +7 -0
- package/dist/esm/server/impl/meta_impl.js +27 -3
- package/dist/esm/server/impl/meta_impl.js.map +2 -2
- package/dist/esm/server/impl/registration_impl.js +2 -0
- package/dist/esm/server/impl/registration_impl.js.map +2 -2
- package/dist/esm/server/index.js +1 -0
- package/dist/esm/server/index.js.map +2 -2
- package/dist/esm/server/log.js +8 -0
- package/dist/esm/server/log.js.map +7 -0
- package/dist/esm/server/logVars.js +25 -0
- package/dist/esm/server/logVars.js.map +7 -0
- package/dist/esm-types/cli/codegen_templates/agentsmd.d.ts.map +1 -1
- package/dist/esm-types/cli/codegen_templates/claudemd.d.ts.map +1 -1
- package/dist/esm-types/cli/configure.d.ts.map +1 -1
- package/dist/esm-types/cli/deployment.d.ts.map +1 -1
- package/dist/esm-types/cli/deploymentToken.d.ts +3 -0
- package/dist/esm-types/cli/deploymentToken.d.ts.map +1 -0
- package/dist/esm-types/cli/deploymentToken.test.d.ts +2 -0
- package/dist/esm-types/cli/deploymentToken.test.d.ts.map +1 -0
- package/dist/esm-types/cli/deploymentTokenCreate.d.ts +13 -0
- package/dist/esm-types/cli/deploymentTokenCreate.d.ts.map +1 -0
- package/dist/esm-types/cli/deploymentTokenDelete.d.ts +11 -0
- package/dist/esm-types/cli/deploymentTokenDelete.d.ts.map +1 -0
- package/dist/esm-types/cli/envDefault.d.ts +2 -2
- package/dist/esm-types/cli/envDefault.d.ts.map +1 -1
- package/dist/esm-types/cli/envDefault.test.d.ts +2 -0
- package/dist/esm-types/cli/envDefault.test.d.ts.map +1 -0
- package/dist/esm-types/cli/generatedApi.d.ts +1 -1
- package/dist/esm-types/cli/generatedApi.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts +1 -0
- package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/login.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/usage.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/workos/environmentApi.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/workos/environmentApi.test.d.ts +2 -0
- package/dist/esm-types/cli/lib/workos/environmentApi.test.d.ts.map +1 -0
- package/dist/esm-types/index.d.ts +1 -1
- package/dist/esm-types/react/client.d.ts +52 -0
- package/dist/esm-types/react/client.d.ts.map +1 -1
- package/dist/esm-types/react/index.d.ts +2 -2
- package/dist/esm-types/react/index.d.ts.map +1 -1
- package/dist/esm-types/react/use_paginated_query.d.ts.map +1 -1
- package/dist/esm-types/react/use_paginated_query2.d.ts +63 -1
- package/dist/esm-types/react/use_paginated_query2.d.ts.map +1 -1
- package/dist/esm-types/server/api.intersect.test.d.ts +2 -0
- package/dist/esm-types/server/api.intersect.test.d.ts.map +1 -0
- package/dist/esm-types/server/audit_logging.d.ts +19 -0
- package/dist/esm-types/server/audit_logging.d.ts.map +1 -0
- package/dist/esm-types/server/audit_logging.test.d.ts +2 -0
- package/dist/esm-types/server/audit_logging.test.d.ts.map +1 -0
- package/dist/esm-types/server/impl/meta_impl.d.ts.map +1 -1
- package/dist/esm-types/server/impl/registration_impl.d.ts.map +1 -1
- package/dist/esm-types/server/index.d.ts +2 -2
- package/dist/esm-types/server/index.d.ts.map +1 -1
- package/dist/esm-types/server/log.d.ts +2 -0
- package/dist/esm-types/server/log.d.ts.map +1 -0
- package/dist/esm-types/server/logVars.d.ts +20 -0
- package/dist/esm-types/server/logVars.d.ts.map +1 -0
- package/dist/esm-types/server/meta.d.ts +40 -0
- package/dist/esm-types/server/meta.d.ts.map +1 -1
- package/dist/esm-types/server/registration.d.ts +5 -2
- package/dist/esm-types/server/registration.d.ts.map +1 -1
- package/dist/react.bundle.js +45 -88
- package/dist/react.bundle.js.map +2 -2
- package/package.json +4 -4
- package/src/cli/codegen_templates/agentsmd.ts +8 -2
- package/src/cli/codegen_templates/claudemd.ts +2 -0
- package/src/cli/configure.ts +0 -9
- package/src/cli/deployment.ts +3 -1
- package/src/cli/deploymentToken.test.ts +372 -0
- package/src/cli/deploymentToken.ts +11 -0
- package/src/cli/deploymentTokenCreate.ts +113 -0
- package/src/cli/deploymentTokenDelete.ts +91 -0
- package/src/cli/envDefault.test.ts +495 -0
- package/src/cli/envDefault.ts +222 -107
- package/src/cli/generatedApi.ts +1 -1
- package/src/cli/lib/command.ts +1 -1
- package/src/cli/lib/generatedFunctionLogsApi.ts +1 -0
- package/src/cli/lib/login.ts +67 -0
- package/src/cli/lib/usage.ts +18 -8
- package/src/cli/lib/workos/environmentApi.test.ts +107 -0
- package/src/cli/lib/workos/environmentApi.ts +12 -19
- package/src/index.ts +1 -1
- package/src/react/client.test.tsx +10 -8
- package/src/react/client.ts +88 -96
- package/src/react/index.ts +6 -1
- package/src/react/use_paginated_query.test.tsx +215 -132
- package/src/react/use_paginated_query.ts +8 -142
- package/src/react/use_paginated_query2.ts +78 -5
- package/src/react/use_query_object_options.test.ts +8 -7
- package/src/react/use_query_result.test.ts +40 -7
- package/src/server/api.intersect.test.ts +109 -0
- package/src/server/audit_logging.test.ts +129 -0
- package/src/server/audit_logging.ts +75 -0
- package/src/server/impl/meta_impl.ts +28 -0
- package/src/server/impl/registration_impl.ts +2 -0
- package/src/server/index.ts +12 -0
- package/src/server/log.ts +16 -0
- package/src/server/logVars.ts +34 -0
- package/src/server/meta.ts +53 -1
- package/src/server/registration.ts +10 -8
|
@@ -35,15 +35,11 @@ export async function createRedirectURI(
|
|
|
35
35
|
);
|
|
36
36
|
|
|
37
37
|
if (!response.ok) {
|
|
38
|
-
if (response.status === 422) {
|
|
39
|
-
const errorText = await response.text();
|
|
40
|
-
if (errorText.includes("already exists")) {
|
|
41
|
-
// This redirect URI already exists.
|
|
42
|
-
return { modified: false };
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
38
|
const errorText = await response.text();
|
|
39
|
+
if (response.status === 422 && errorText.includes("already exists")) {
|
|
40
|
+
// This redirect URI already exists.
|
|
41
|
+
return { modified: false };
|
|
42
|
+
}
|
|
47
43
|
return await ctx.crash({
|
|
48
44
|
exitCode: 1,
|
|
49
45
|
errorType: "fatal",
|
|
@@ -109,18 +105,15 @@ export async function createCORSOrigin(
|
|
|
109
105
|
);
|
|
110
106
|
|
|
111
107
|
if (!response.ok) {
|
|
112
|
-
if (response.status === 409) {
|
|
113
|
-
const errorText = await response.text();
|
|
114
|
-
if (
|
|
115
|
-
errorText.includes("duplicate_cors_origin") ||
|
|
116
|
-
errorText.includes("already exists")
|
|
117
|
-
) {
|
|
118
|
-
// This CORS origin already exists.
|
|
119
|
-
return { modified: false };
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
108
|
const errorText = await response.text();
|
|
109
|
+
if (
|
|
110
|
+
response.status === 409 &&
|
|
111
|
+
(errorText.includes("duplicate_cors_origin") ||
|
|
112
|
+
errorText.includes("already exists"))
|
|
113
|
+
) {
|
|
114
|
+
// This CORS origin already exists.
|
|
115
|
+
return { modified: false };
|
|
116
|
+
}
|
|
124
117
|
return await ctx.crash({
|
|
125
118
|
exitCode: 1,
|
|
126
119
|
errorType: "fatal",
|
package/src/index.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = "1.
|
|
1
|
+
export const version = "1.37.0";
|
|
@@ -4,7 +4,12 @@
|
|
|
4
4
|
import { test, expect, describe, vi } from "vitest";
|
|
5
5
|
import ws from "ws";
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
ConvexReactClient,
|
|
9
|
+
createMutation,
|
|
10
|
+
useQuery,
|
|
11
|
+
useQuery_experimental,
|
|
12
|
+
} from "./client.js";
|
|
8
13
|
import { convexQueryOptions } from "../browser/query_options.js";
|
|
9
14
|
import { ConvexProvider } from "./index.js";
|
|
10
15
|
import React from "react";
|
|
@@ -114,14 +119,14 @@ describe("useQuery", () => {
|
|
|
114
119
|
expect(result.current).toStrictEqual(undefined);
|
|
115
120
|
});
|
|
116
121
|
|
|
117
|
-
test("object form returns success result", () => {
|
|
122
|
+
test("useQuery_experimental object form returns success result", () => {
|
|
118
123
|
const client = createClientWithQuery();
|
|
119
124
|
const wrapper = ({ children }: any) => (
|
|
120
125
|
<ConvexProvider client={client}>{children}</ConvexProvider>
|
|
121
126
|
);
|
|
122
127
|
const { result } = renderHook(
|
|
123
128
|
() =>
|
|
124
|
-
|
|
129
|
+
useQuery_experimental({
|
|
125
130
|
query: anyApi.myQuery.default,
|
|
126
131
|
args: {},
|
|
127
132
|
}),
|
|
@@ -129,27 +134,24 @@ describe("useQuery", () => {
|
|
|
129
134
|
);
|
|
130
135
|
expect(result.current).toStrictEqual({
|
|
131
136
|
data: "queryResult",
|
|
132
|
-
error: undefined,
|
|
133
137
|
status: "success",
|
|
134
138
|
});
|
|
135
139
|
});
|
|
136
140
|
|
|
137
|
-
test("object form returns pending when skipped", () => {
|
|
141
|
+
test("useQuery_experimental object form returns pending when skipped", () => {
|
|
138
142
|
const client = createClientWithQuery();
|
|
139
143
|
const wrapper = ({ children }: any) => (
|
|
140
144
|
<ConvexProvider client={client}>{children}</ConvexProvider>
|
|
141
145
|
);
|
|
142
146
|
const { result } = renderHook(
|
|
143
147
|
() =>
|
|
144
|
-
|
|
148
|
+
useQuery_experimental({
|
|
145
149
|
query: anyApi.myQuery.default,
|
|
146
150
|
args: "skip",
|
|
147
151
|
}),
|
|
148
152
|
{ wrapper },
|
|
149
153
|
);
|
|
150
154
|
expect(result.current).toStrictEqual({
|
|
151
|
-
data: undefined,
|
|
152
|
-
error: undefined,
|
|
153
155
|
status: "pending",
|
|
154
156
|
});
|
|
155
157
|
});
|
package/src/react/client.ts
CHANGED
|
@@ -800,31 +800,22 @@ export type OptionalRestArgsOrSkip<FuncRef extends FunctionReference<any>> =
|
|
|
800
800
|
: [args: FuncRef["_args"] | "skip"];
|
|
801
801
|
|
|
802
802
|
/**
|
|
803
|
-
* Result returned by object-form {@link
|
|
803
|
+
* Result returned by object-form {@link useQuery_experimental}.
|
|
804
804
|
*
|
|
805
|
-
* @
|
|
805
|
+
* @public
|
|
806
806
|
*/
|
|
807
|
-
export type UseQueryResult<QueryResult> =
|
|
808
|
-
| {
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
status: "error";
|
|
817
|
-
}
|
|
818
|
-
| {
|
|
819
|
-
data: undefined;
|
|
820
|
-
error: undefined;
|
|
821
|
-
status: "pending";
|
|
822
|
-
};
|
|
823
|
-
|
|
824
|
-
type UseQueryOptions<Query extends FunctionReference<"query">> = {
|
|
807
|
+
export type UseQueryResult<QueryResult, ThrowOnError extends boolean = false> =
|
|
808
|
+
| { status: "pending" }
|
|
809
|
+
| { status: "success"; data: QueryResult }
|
|
810
|
+
| (ThrowOnError extends true ? never : { status: "error"; error: Error });
|
|
811
|
+
|
|
812
|
+
type UseQueryOptions<
|
|
813
|
+
Query extends FunctionReference<"query">,
|
|
814
|
+
ThrowOnError extends boolean,
|
|
815
|
+
> = {
|
|
825
816
|
query: Query;
|
|
826
817
|
args: FunctionArgs<Query> | "skip";
|
|
827
|
-
throwOnError?:
|
|
818
|
+
throwOnError?: ThrowOnError;
|
|
828
819
|
};
|
|
829
820
|
|
|
830
821
|
/**
|
|
@@ -873,18 +864,50 @@ type UseQueryOptions<Query extends FunctionReference<"query">> = {
|
|
|
873
864
|
export function useQuery<Query extends FunctionReference<"query">>(
|
|
874
865
|
query: Query,
|
|
875
866
|
...args: OptionalRestArgsOrSkip<Query>
|
|
876
|
-
): Query["_returnType"] | undefined
|
|
867
|
+
): Query["_returnType"] | undefined {
|
|
868
|
+
const skip = args[0] === "skip";
|
|
869
|
+
const argsObject = args[0] === "skip" ? {} : parseArgs(args[0]);
|
|
870
|
+
const queryReference =
|
|
871
|
+
typeof query === "string"
|
|
872
|
+
? makeFunctionReference<"query", any, any>(query)
|
|
873
|
+
: query;
|
|
874
|
+
|
|
875
|
+
const queryName = getFunctionName(queryReference);
|
|
876
|
+
|
|
877
|
+
const queries = useMemo(
|
|
878
|
+
() =>
|
|
879
|
+
skip
|
|
880
|
+
? ({} as RequestForQueries)
|
|
881
|
+
: { query: { query: queryReference, args: argsObject } },
|
|
882
|
+
// Stringify args so args that are semantically the same don't trigger a
|
|
883
|
+
// rerender. Saves developers from adding `useMemo` on every args usage.
|
|
884
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
885
|
+
[JSON.stringify(convexToJson(argsObject)), queryName, skip],
|
|
886
|
+
);
|
|
887
|
+
|
|
888
|
+
const results = useQueries(queries);
|
|
889
|
+
const result = results["query"];
|
|
890
|
+
|
|
891
|
+
if (result instanceof Error) {
|
|
892
|
+
throw result;
|
|
893
|
+
}
|
|
894
|
+
return result;
|
|
895
|
+
}
|
|
877
896
|
|
|
878
897
|
/**
|
|
879
898
|
* Load a reactive query within a React component using an options object.
|
|
880
899
|
*
|
|
881
|
-
* This is an
|
|
900
|
+
* This is an experimental form of {@link useQuery} that accepts a single
|
|
882
901
|
* {@link UseQueryOptions} object instead of positional arguments.
|
|
883
|
-
*
|
|
902
|
+
*
|
|
903
|
+
* Consumers are expected to check the returned object `status` field to
|
|
904
|
+
* make proper use of the result. If an error occurs, it will be present
|
|
905
|
+
* in the result object unless `throwOnError` is `true`, in which case
|
|
906
|
+
* the error will be thrown instead.
|
|
884
907
|
*
|
|
885
908
|
* @example
|
|
886
909
|
* ```tsx
|
|
887
|
-
* import { useQuery } from "convex/react";
|
|
910
|
+
* import { useQuery_experimental as useQuery } from "convex/react";
|
|
888
911
|
* import { api } from "../convex/_generated/api";
|
|
889
912
|
*
|
|
890
913
|
* function TaskList() {
|
|
@@ -900,55 +923,35 @@ export function useQuery<Query extends FunctionReference<"query">>(
|
|
|
900
923
|
* @returns the current query state as a {@link UseQueryResult} object.
|
|
901
924
|
*
|
|
902
925
|
* @see https://docs.convex.dev/client/react#fetching-data
|
|
903
|
-
* @
|
|
926
|
+
* @public
|
|
904
927
|
*/
|
|
905
|
-
export function
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
: query;
|
|
930
|
-
if (queryOrOptions.args !== "skip") {
|
|
931
|
-
argsObject = parseArgs(queryOrOptions.args as Record<string, Value>);
|
|
932
|
-
}
|
|
933
|
-
} else {
|
|
934
|
-
const query = queryOrOptions;
|
|
935
|
-
queryReference =
|
|
936
|
-
typeof query === "string"
|
|
937
|
-
? (makeFunctionReference<"query", any, any>(query) as Query)
|
|
938
|
-
: query;
|
|
939
|
-
argsObject = args[0] === "skip" ? {} : parseArgs(args[0] as Query["_args"]);
|
|
940
|
-
}
|
|
941
|
-
|
|
942
|
-
const queryName = queryReference
|
|
943
|
-
? getFunctionName(queryReference)
|
|
944
|
-
: undefined;
|
|
945
|
-
const skip =
|
|
946
|
-
(isObjectOptions && queryOrOptions.args === "skip") ||
|
|
947
|
-
(!isObjectOptions && args[0] === "skip");
|
|
948
|
-
|
|
928
|
+
export function useQuery_experimental<
|
|
929
|
+
Query extends FunctionReference<"query">,
|
|
930
|
+
ThrowOnError extends boolean = false,
|
|
931
|
+
>(
|
|
932
|
+
options: UseQueryOptions<Query, ThrowOnError>,
|
|
933
|
+
): UseQueryResult<Query["_returnType"], ThrowOnError>;
|
|
934
|
+
|
|
935
|
+
export function useQuery_experimental<
|
|
936
|
+
Query extends FunctionReference<"query">,
|
|
937
|
+
ThrowOnError extends boolean = false,
|
|
938
|
+
>(
|
|
939
|
+
options: UseQueryOptions<Query, ThrowOnError>,
|
|
940
|
+
): UseQueryResult<Query["_returnType"], false> {
|
|
941
|
+
const throwOnError = options.throwOnError ?? false;
|
|
942
|
+
const queryReference =
|
|
943
|
+
typeof options.query === "string"
|
|
944
|
+
? (makeFunctionReference<"query", any, any>(options.query) as Query)
|
|
945
|
+
: options.query;
|
|
946
|
+
const skip = options.args === "skip";
|
|
947
|
+
const argsObject = !skip
|
|
948
|
+
? parseArgs(options.args as Record<string, Value>)
|
|
949
|
+
: {};
|
|
950
|
+
|
|
951
|
+
const queryName = getFunctionName(queryReference);
|
|
949
952
|
const queries = useMemo(
|
|
950
953
|
() =>
|
|
951
|
-
skip
|
|
954
|
+
skip
|
|
952
955
|
? ({} as RequestForQueries)
|
|
953
956
|
: { query: { query: queryReference, args: argsObject } },
|
|
954
957
|
// Stringify args so args that are semantically the same don't trigger a
|
|
@@ -960,37 +963,26 @@ export function useQuery<Query extends FunctionReference<"query">>(
|
|
|
960
963
|
const results = useQueries(queries);
|
|
961
964
|
const result = results["query"];
|
|
962
965
|
|
|
963
|
-
if (
|
|
964
|
-
if (
|
|
965
|
-
|
|
966
|
-
throw result;
|
|
967
|
-
}
|
|
968
|
-
return {
|
|
969
|
-
data: undefined,
|
|
970
|
-
error: result,
|
|
971
|
-
status: "error",
|
|
972
|
-
};
|
|
973
|
-
}
|
|
974
|
-
|
|
975
|
-
if (result === undefined) {
|
|
976
|
-
return {
|
|
977
|
-
data: undefined,
|
|
978
|
-
error: undefined,
|
|
979
|
-
status: "pending",
|
|
980
|
-
};
|
|
966
|
+
if (result instanceof Error) {
|
|
967
|
+
if (throwOnError) {
|
|
968
|
+
throw result;
|
|
981
969
|
}
|
|
982
|
-
|
|
983
970
|
return {
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
status: "success",
|
|
971
|
+
error: result,
|
|
972
|
+
status: "error",
|
|
987
973
|
};
|
|
988
974
|
}
|
|
989
975
|
|
|
990
|
-
if (result
|
|
991
|
-
|
|
976
|
+
if (result === undefined) {
|
|
977
|
+
return {
|
|
978
|
+
status: "pending",
|
|
979
|
+
};
|
|
992
980
|
}
|
|
993
|
-
|
|
981
|
+
|
|
982
|
+
return {
|
|
983
|
+
data: result,
|
|
984
|
+
status: "success",
|
|
985
|
+
};
|
|
994
986
|
}
|
|
995
987
|
|
|
996
988
|
/**
|
package/src/react/index.ts
CHANGED
|
@@ -61,7 +61,11 @@
|
|
|
61
61
|
* @module
|
|
62
62
|
*/
|
|
63
63
|
export * from "./use_paginated_query.js";
|
|
64
|
-
export {
|
|
64
|
+
export {
|
|
65
|
+
usePaginatedQuery_experimental,
|
|
66
|
+
type UsePaginatedQueryOptions,
|
|
67
|
+
type UsePaginatedQueryObjectReturnType,
|
|
68
|
+
} from "./use_paginated_query2.js";
|
|
65
69
|
export { usePaginatedQuery } from "./use_paginated_query.js";
|
|
66
70
|
export { useQueries, type RequestForQueries } from "./use_queries.js";
|
|
67
71
|
export type { AuthTokenFetcher } from "../browser/sync/client.js";
|
|
@@ -82,6 +86,7 @@ export {
|
|
|
82
86
|
useConvex,
|
|
83
87
|
ConvexProvider,
|
|
84
88
|
useQuery,
|
|
89
|
+
useQuery_experimental,
|
|
85
90
|
useMutation,
|
|
86
91
|
useAction,
|
|
87
92
|
useConvexConnectionState,
|