@convex-dev/workos-authkit 0.2.10 → 0.3.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/README.md +10 -0
- package/dist/component/lib.js +2 -2
- package/dist/component/lib.js.map +1 -1
- package/package.json +4 -4
- package/src/component/lib.test.ts +57 -1
- package/src/component/lib.ts +2 -2
- package/src/test.ts +4 -1
package/README.md
CHANGED
|
@@ -129,6 +129,16 @@ By default the component will handle the following events:
|
|
|
129
129
|
- `user.updated`
|
|
130
130
|
- `user.deleted`
|
|
131
131
|
|
|
132
|
+
The `user.deleted` handler also runs when the component never stored the user, for
|
|
133
|
+
example when WorkOS delivers the deletion before the creation. `event.data` is then
|
|
134
|
+
the webhook payload as sent, so only `id` is guaranteed, even though it is typed as
|
|
135
|
+
a full user. When the component has the user stored, its fields fill any gaps.
|
|
136
|
+
|
|
137
|
+
**If your app has no record of the user, be sure to return rather than throw.**
|
|
138
|
+
Throwing fails the webhook and rolls back the component's record of the deletion,
|
|
139
|
+
so a `user.created` that arrives before WorkOS retries recreates the user in the
|
|
140
|
+
component and your app.
|
|
141
|
+
|
|
132
142
|
```ts
|
|
133
143
|
// convex/auth.ts
|
|
134
144
|
import { AuthKit, type AuthFunctions } from "@convex-dev/workos-authkit";
|
package/dist/component/lib.js
CHANGED
|
@@ -107,8 +107,8 @@ async function processEventHandler(ctx, args) {
|
|
|
107
107
|
.withIndex("id", (q) => q.eq("id", id))
|
|
108
108
|
.unique();
|
|
109
109
|
if (!user) {
|
|
110
|
-
console.warn("user not found,
|
|
111
|
-
|
|
110
|
+
console.warn("user not found, forwarding deletion", id);
|
|
111
|
+
break;
|
|
112
112
|
}
|
|
113
113
|
await ctx.db.delete("users", user._id);
|
|
114
114
|
// The callback data is typed as a whole user, so fill anything the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/component/lib.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/component/lib.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"bugs": {
|
|
7
7
|
"url": "https://github.com/get-convex/workos-authkit/issues"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.3.0",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"keywords": [
|
|
12
12
|
"convex",
|
|
@@ -76,8 +76,8 @@
|
|
|
76
76
|
"@types/react-dom": "19.2.3",
|
|
77
77
|
"@vitejs/plugin-react": "6.0.4",
|
|
78
78
|
"chokidar-cli": "3.0.0",
|
|
79
|
-
"convex": "1.
|
|
80
|
-
"convex-test": "0.0.
|
|
79
|
+
"convex": "1.46.0",
|
|
80
|
+
"convex-test": "0.0.62",
|
|
81
81
|
"eslint": "9.39.5",
|
|
82
82
|
"eslint-plugin-react": "7.37.5",
|
|
83
83
|
"eslint-plugin-react-hooks": "7.1.1",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"@convex-dev/workflow": "^0.4.0",
|
|
99
99
|
"@convex-dev/workos": "^0.0.3",
|
|
100
100
|
"@convex-dev/workpool": "^0.4.4",
|
|
101
|
-
"convex-helpers": "^0.1.
|
|
101
|
+
"convex-helpers": "^0.1.128",
|
|
102
102
|
"type-fest": "^5.1.0"
|
|
103
103
|
}
|
|
104
104
|
}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
/// <reference types="vite/client" />
|
|
2
2
|
import { convexTest } from "convex-test";
|
|
3
|
-
import {
|
|
3
|
+
import { createFunctionHandle, makeFunctionReference } from "convex/server";
|
|
4
|
+
import { describe, test, expect, vi } from "vitest";
|
|
4
5
|
import { modules } from "./setup.test.js";
|
|
5
6
|
import schema from "./schema.js";
|
|
6
7
|
import workflow from "@convex-dev/workflow/test";
|
|
7
8
|
import { api } from "./_generated/api.js";
|
|
9
|
+
import { mutation } from "./_generated/server.js";
|
|
10
|
+
import { vEvent } from "./lib.js";
|
|
11
|
+
import { v } from "convex/values";
|
|
8
12
|
|
|
9
13
|
/** Default test user values. */
|
|
10
14
|
const defaultUser = {
|
|
@@ -285,6 +289,58 @@ describe("onWebhookEvent", () => {
|
|
|
285
289
|
expect(dbDeletedUsers[0].id).toBe(user.id);
|
|
286
290
|
});
|
|
287
291
|
|
|
292
|
+
test.each([
|
|
293
|
+
{ payload: "a full user", data: { object: "user", ...makeUser() } },
|
|
294
|
+
{ payload: "only an id", data: { id: defaultUser.id } },
|
|
295
|
+
])(
|
|
296
|
+
"user.deleted forwards $payload without a stored user",
|
|
297
|
+
async ({ data }) => {
|
|
298
|
+
const onEvent = vi.fn();
|
|
299
|
+
const t = convexTest(schema, {
|
|
300
|
+
...modules,
|
|
301
|
+
"./callbacks.ts": async () => ({
|
|
302
|
+
onEvent: mutation({
|
|
303
|
+
args: { event: vEvent.fields.event, data: vEvent.fields.data },
|
|
304
|
+
returns: v.null(),
|
|
305
|
+
handler: async (_ctx, args) => {
|
|
306
|
+
onEvent(args);
|
|
307
|
+
return null;
|
|
308
|
+
},
|
|
309
|
+
}),
|
|
310
|
+
}),
|
|
311
|
+
});
|
|
312
|
+
const onEventHandle = await t.run(async () =>
|
|
313
|
+
createFunctionHandle(
|
|
314
|
+
makeFunctionReference<"mutation">("callbacks:onEvent")
|
|
315
|
+
)
|
|
316
|
+
);
|
|
317
|
+
const event = makeRawEvent("user.deleted", data);
|
|
318
|
+
|
|
319
|
+
await t.mutation(api.lib.onWebhookEvent, { event, onEventHandle });
|
|
320
|
+
|
|
321
|
+
expect(onEvent).toHaveBeenCalledExactlyOnceWith({
|
|
322
|
+
event: "user.deleted",
|
|
323
|
+
data,
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
await t.mutation(api.lib.onWebhookEvent, { event, onEventHandle });
|
|
327
|
+
for (const eventType of ["user.created", "user.updated"]) {
|
|
328
|
+
await t.mutation(api.lib.onWebhookEvent, {
|
|
329
|
+
event: makeEvent(eventType, makeUser()),
|
|
330
|
+
onEventHandle,
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
expect(onEvent).toHaveBeenCalledTimes(1);
|
|
335
|
+
const { dbUsers, dbDeletedUsers } = await t.run(async (ctx) => ({
|
|
336
|
+
dbUsers: await ctx.db.query("users").collect(),
|
|
337
|
+
dbDeletedUsers: await ctx.db.query("deletedUsers").collect(),
|
|
338
|
+
}));
|
|
339
|
+
expect(dbUsers).toHaveLength(0);
|
|
340
|
+
expect(dbDeletedUsers).toMatchObject([{ id: data.id }]);
|
|
341
|
+
}
|
|
342
|
+
);
|
|
343
|
+
|
|
288
344
|
test("user.created after user.deleted is skipped", async () => {
|
|
289
345
|
const t = initConvexTest();
|
|
290
346
|
const user = makeUser();
|
package/src/component/lib.ts
CHANGED
|
@@ -119,8 +119,8 @@ async function processEventHandler(
|
|
|
119
119
|
.withIndex("id", (q) => q.eq("id", id))
|
|
120
120
|
.unique();
|
|
121
121
|
if (!user) {
|
|
122
|
-
console.warn("user not found,
|
|
123
|
-
|
|
122
|
+
console.warn("user not found, forwarding deletion", id);
|
|
123
|
+
break;
|
|
124
124
|
}
|
|
125
125
|
await ctx.db.delete("users", user._id);
|
|
126
126
|
// The callback data is typed as a whole user, so fill anything the
|
package/src/test.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { TestConvex } from "convex-test";
|
|
2
2
|
import type { GenericSchema, SchemaDefinition } from "convex/server";
|
|
3
3
|
import workflow from "@convex-dev/workflow/test";
|
|
4
|
+
import type { ComponentApi } from "./component/_generated/component.js";
|
|
4
5
|
import schema from "./component/schema.js";
|
|
5
6
|
const modules = import.meta.glob("./component/**/*.ts");
|
|
6
7
|
|
|
@@ -8,12 +9,14 @@ const modules = import.meta.glob("./component/**/*.ts");
|
|
|
8
9
|
* Register the component with the test convex instance.
|
|
9
10
|
* @param t - The test convex instance, e.g. from calling `convexTest`.
|
|
10
11
|
* @param name - The name of the component, as registered in convex.config.ts.
|
|
12
|
+
* @returns a component api to test via ctx.runMutation or for thick client
|
|
13
|
+
* usage. Also provides types for convex-test's defineTestApp.
|
|
11
14
|
*/
|
|
12
15
|
function register(
|
|
13
16
|
t: TestConvex<SchemaDefinition<GenericSchema, boolean>>,
|
|
14
17
|
name: string = "workOSAuthKit"
|
|
15
18
|
) {
|
|
16
|
-
t.registerComponent(name, schema, modules);
|
|
17
19
|
workflow.register(t, `${name}/backfillWorkflow`);
|
|
20
|
+
return t.registerComponent(name, schema, modules) as unknown as ComponentApi;
|
|
18
21
|
}
|
|
19
22
|
export default { register, schema, modules };
|