@robelest/convex-auth 0.0.4-preview.32 → 0.0.4-preview.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/component/_generated/component.d.ts +1611 -2039
  2. package/dist/component/account.js +3 -0
  3. package/dist/component/convex.config.d.ts +2 -2
  4. package/dist/component/factor/device.js +3 -0
  5. package/dist/component/factor/passkey.js +3 -0
  6. package/dist/component/factor/totp.js +3 -0
  7. package/dist/component/group/invite.js +3 -0
  8. package/dist/component/group/member.js +3 -0
  9. package/dist/component/group.js +3 -0
  10. package/dist/component/model.d.ts +342 -30
  11. package/dist/component/model.js +22 -4
  12. package/dist/component/modules.js +24 -21
  13. package/dist/component/public/factors/devices.js +37 -106
  14. package/dist/component/public/factors/passkeys.js +29 -149
  15. package/dist/component/public/factors/totp.js +32 -159
  16. package/dist/component/public/groups/core.js +19 -82
  17. package/dist/component/public/groups/invites.js +15 -104
  18. package/dist/component/public/groups/members.js +26 -149
  19. package/dist/component/public/identity/accounts.js +12 -94
  20. package/dist/component/public/identity/codes.js +13 -73
  21. package/dist/component/public/identity/sessions.js +5 -107
  22. package/dist/component/public/identity/tokens.js +13 -103
  23. package/dist/component/public/identity/users.js +188 -185
  24. package/dist/component/public/identity/verifiers.js +17 -80
  25. package/dist/component/public/security/keys.js +13 -120
  26. package/dist/component/public/security/limits.js +0 -43
  27. package/dist/component/public/sso/audit.js +0 -28
  28. package/dist/component/public/sso/core.js +31 -104
  29. package/dist/component/public/sso/domains.js +0 -71
  30. package/dist/component/public/sso/scim.js +63 -239
  31. package/dist/component/public/sso/secrets.js +0 -30
  32. package/dist/component/public/sso/webhooks.js +23 -128
  33. package/dist/component/rateLimit.js +3 -0
  34. package/dist/component/schema.d.ts +378 -342
  35. package/dist/component/schema.js +11 -1
  36. package/dist/component/session.js +3 -0
  37. package/dist/component/sso/audit.js +3 -0
  38. package/dist/component/sso/connection/domain/verification.js +3 -0
  39. package/dist/component/sso/connection/domain.js +3 -0
  40. package/dist/component/sso/connection/scim/config.js +3 -0
  41. package/dist/component/sso/connection/scim/identity.js +3 -0
  42. package/dist/component/sso/connection/secret.js +3 -0
  43. package/dist/component/sso/connection.js +3 -0
  44. package/dist/component/sso/webhook/delivery.js +3 -0
  45. package/dist/component/sso/webhook/endpoint.js +3 -0
  46. package/dist/component/token/pkce.js +3 -0
  47. package/dist/component/token/refresh.js +3 -0
  48. package/dist/component/token/verification.js +3 -0
  49. package/dist/component/user/email.js +3 -0
  50. package/dist/component/user/key.js +3 -0
  51. package/dist/component/user.js +62 -0
  52. package/dist/core/index.d.ts +131 -28
  53. package/dist/core/index.js +2 -0
  54. package/dist/model.js +391 -0
  55. package/dist/providers/credentials.d.ts +1 -1
  56. package/dist/providers/github.js +6 -0
  57. package/dist/providers/password.js +1 -2
  58. package/dist/server/auth.d.ts +73 -7
  59. package/dist/server/auth.js +4 -1
  60. package/dist/server/context.js +30 -3
  61. package/dist/server/contract.js +42 -42
  62. package/dist/server/core.js +224 -86
  63. package/dist/server/db.js +45 -37
  64. package/dist/server/facade.d.ts +39 -0
  65. package/dist/server/facade.js +16 -0
  66. package/dist/server/index.d.ts +5 -3
  67. package/dist/server/index.js +3 -1
  68. package/dist/server/mounts.d.ts +101 -101
  69. package/dist/server/mutations/credentials/signin.js +3 -7
  70. package/dist/server/mutations/oauth.js +9 -6
  71. package/dist/server/runtime.d.ts +147 -46
  72. package/dist/server/runtime.js +10 -8
  73. package/dist/server/services/group.js +9 -9
  74. package/dist/server/sso/domain.d.ts +1 -1
  75. package/dist/server/sso/domain.js +40 -40
  76. package/dist/server/sso/http.js +18 -18
  77. package/dist/server/sso/oidc.js +1 -1
  78. package/dist/server/sso/policies.js +3 -3
  79. package/dist/server/sso/policy.js +12 -4
  80. package/dist/server/sso/provision.js +9 -9
  81. package/dist/server/sso/validators.js +2 -2
  82. package/dist/server/sso/webhook.js +8 -8
  83. package/dist/server/types.d.ts +185 -124
  84. package/dist/server/types.js +29 -24
  85. package/dist/server/users.js +49 -2
  86. package/dist/server/validators.d.ts +745 -0
  87. package/dist/server/validators.js +60 -0
  88. package/package.json +1 -1
  89. package/dist/component/public.js +0 -22
@@ -0,0 +1,745 @@
1
+ import * as convex_values54 from "convex/values";
2
+ import { Infer, Validator, v } from "convex/values";
3
+ import * as convex_server13 from "convex/server";
4
+
5
+ //#region src/server/validators.d.ts
6
+ /**
7
+ * Validators a consumer may supply for the `extend` field of each table.
8
+ *
9
+ * Passed as `createAuth({ extend })`. Every entry is optional; a missing
10
+ * entry falls back to `v.any()`, preserving the untyped default.
11
+ */
12
+ type AuthExtendValidators = {
13
+ /** Shape of `User.extend`. */User?: Validator<any, any, any>; /** Shape of `Group.extend`. */
14
+ Group?: Validator<any, any, any>; /** Shape of `GroupMember.extend`. */
15
+ GroupMember?: Validator<any, any, any>;
16
+ };
17
+ type ExtendFor<TExtend extends AuthExtendValidators, K extends keyof AuthExtendValidators> = TExtend[K] extends Validator<any, any, any> ? TExtend[K] : ReturnType<typeof v.any>;
18
+ /**
19
+ * Build the `auth.v.*` validator namespace from the consumer's `extend`
20
+ * config.
21
+ *
22
+ * `vUserDoc`/`vGroupDoc`/`vGroupMemberDoc` already declare an
23
+ * `extend: v.optional(v.any())` field; this rebuilds each with the
24
+ * supplied validator so the inferred type carries the real shape while
25
+ * the runtime validator still accepts the stored document.
26
+ *
27
+ * @typeParam TExtend - The consumer's per-table `extend` validators.
28
+ * @param extend - The `extend` map from `createAuth` config. Defaults to
29
+ * an empty object (all `extend` fields stay `v.any()`).
30
+ * @returns The `auth.v` namespace: `user`, `group`, `member`, `invite`,
31
+ * `viewer`, `viewerWithGroups`, and the `list` page-wrapper helper.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const av = buildAuthValidators({
36
+ * User: v.object({ stripeCustomerId: v.optional(v.string()) }),
37
+ * });
38
+ * // Infer<typeof av.viewer> -> User document with typed `extend`
39
+ * ```
40
+ */
41
+ declare function buildAuthValidators<TExtend extends AuthExtendValidators>(extend?: TExtend): {
42
+ /** Single User document validator (extend-aware). */user: convex_values54.VObject<convex_server13.Expand<{ [Property in "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)]?: Exclude<Infer<(Omit<{
43
+ name: convex_values54.VString<string | undefined, "optional">;
44
+ image: convex_values54.VString<string | undefined, "optional">;
45
+ email: convex_values54.VString<string | undefined, "optional">;
46
+ emailVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
47
+ phone: convex_values54.VString<string | undefined, "optional">;
48
+ phoneVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
49
+ isAnonymous: convex_values54.VBoolean<boolean | undefined, "optional">;
50
+ lastActiveGroup: convex_values54.VId<convex_values54.GenericId<"Group"> | undefined, "optional">;
51
+ extend: convex_values54.VAny<any, "optional", string>;
52
+ _id: convex_values54.VId<convex_values54.GenericId<"User">, "required">;
53
+ _creationTime: convex_values54.VFloat64<number, "required">;
54
+ }, "extend"> & {
55
+ extend: convex_values54.VOptional<ExtendFor<TExtend, "User">>;
56
+ })[Property]>, undefined> | undefined } & { [Property_1 in Exclude<"email", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"_creationTime", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"name", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"image", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"extend", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"emailVerificationTime", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"phone", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"phoneVerificationTime", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"isAnonymous", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"lastActiveGroup", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"_id", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)>]: Infer<(Omit<{
57
+ name: convex_values54.VString<string | undefined, "optional">;
58
+ image: convex_values54.VString<string | undefined, "optional">;
59
+ email: convex_values54.VString<string | undefined, "optional">;
60
+ emailVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
61
+ phone: convex_values54.VString<string | undefined, "optional">;
62
+ phoneVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
63
+ isAnonymous: convex_values54.VBoolean<boolean | undefined, "optional">;
64
+ lastActiveGroup: convex_values54.VId<convex_values54.GenericId<"Group"> | undefined, "optional">;
65
+ extend: convex_values54.VAny<any, "optional", string>;
66
+ _id: convex_values54.VId<convex_values54.GenericId<"User">, "required">;
67
+ _creationTime: convex_values54.VFloat64<number, "required">;
68
+ }, "extend"> & {
69
+ extend: convex_values54.VOptional<ExtendFor<TExtend, "User">>;
70
+ })[Property_1]> }>, Omit<{
71
+ name: convex_values54.VString<string | undefined, "optional">;
72
+ image: convex_values54.VString<string | undefined, "optional">;
73
+ email: convex_values54.VString<string | undefined, "optional">;
74
+ emailVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
75
+ phone: convex_values54.VString<string | undefined, "optional">;
76
+ phoneVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
77
+ isAnonymous: convex_values54.VBoolean<boolean | undefined, "optional">;
78
+ lastActiveGroup: convex_values54.VId<convex_values54.GenericId<"Group"> | undefined, "optional">;
79
+ extend: convex_values54.VAny<any, "optional", string>;
80
+ _id: convex_values54.VId<convex_values54.GenericId<"User">, "required">;
81
+ _creationTime: convex_values54.VFloat64<number, "required">;
82
+ }, "extend"> & {
83
+ extend: convex_values54.VOptional<ExtendFor<TExtend, "User">>;
84
+ }, "required", "email" | "_creationTime" | "name" | "image" | "extend" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | "_id" | `extend.${convex_values54.VOptional<ExtendFor<TExtend, "User">>["fieldPaths"]}`>; /** Single Group document validator (extend-aware). */
85
+ group: convex_values54.VObject<convex_server13.Expand<{ [Property_2 in "type" | "slug" | "parentGroupId" | "rootGroupId" | "isRoot" | "tags" | "policy" | (convex_values54.VOptional<ExtendFor<TExtend, "Group">>["isOptional"] extends "optional" ? "extend" : never)]?: Exclude<Infer<(Omit<{
86
+ name: convex_values54.VString<string, "required">;
87
+ slug: convex_values54.VString<string | undefined, "optional">;
88
+ type: convex_values54.VString<string | undefined, "optional">;
89
+ parentGroupId: convex_values54.VId<convex_values54.GenericId<"Group"> | undefined, "optional">;
90
+ rootGroupId: convex_values54.VId<convex_values54.GenericId<"Group"> | undefined, "optional">;
91
+ isRoot: convex_values54.VBoolean<boolean | undefined, "optional">;
92
+ tags: convex_values54.VArray<{
93
+ value: string;
94
+ key: string;
95
+ }[] | undefined, convex_values54.VObject<{
96
+ value: string;
97
+ key: string;
98
+ }, {
99
+ key: convex_values54.VString<string, "required">;
100
+ value: convex_values54.VString<string, "required">;
101
+ }, "required", "value" | "key">, "optional">;
102
+ policy: convex_values54.VObject<{
103
+ extend?: any;
104
+ identity: {
105
+ accountLinking: {
106
+ saml: "verifiedEmail" | "none" | "sameConnection";
107
+ oidc: "verifiedEmail" | "none" | "sameConnection";
108
+ };
109
+ };
110
+ version: 1;
111
+ provisioning: {
112
+ user: {
113
+ createOnSignIn: boolean;
114
+ updateProfileOnLogin: "never" | "missing" | "always";
115
+ updateProfileFromScim: "never" | "missing" | "always";
116
+ authority: "app" | "sso" | "scim";
117
+ };
118
+ scimReuse: {
119
+ user: "none" | "externalId";
120
+ };
121
+ jit: {
122
+ defaultRole?: string | undefined;
123
+ defaultRoleIds?: string[] | undefined;
124
+ mode: "off" | "createUser" | "createUserAndMembership";
125
+ };
126
+ deprovision: {
127
+ mode: "soft" | "hard";
128
+ };
129
+ groups: {
130
+ mapping?: Record<string, string[]> | undefined;
131
+ mode: "ignore" | "sync";
132
+ source: "protocol";
133
+ };
134
+ roles: {
135
+ mapping?: Record<string, string[]> | undefined;
136
+ mode: "map" | "ignore";
137
+ source: "protocol";
138
+ };
139
+ };
140
+ } | undefined, {
141
+ version: convex_values54.VLiteral<1, "required">;
142
+ identity: convex_values54.VObject<{
143
+ accountLinking: {
144
+ saml: "verifiedEmail" | "none" | "sameConnection";
145
+ oidc: "verifiedEmail" | "none" | "sameConnection";
146
+ };
147
+ }, {
148
+ accountLinking: convex_values54.VObject<{
149
+ saml: "verifiedEmail" | "none" | "sameConnection";
150
+ oidc: "verifiedEmail" | "none" | "sameConnection";
151
+ }, {
152
+ oidc: convex_values54.VUnion<"verifiedEmail" | "none" | "sameConnection", [convex_values54.VLiteral<"verifiedEmail", "required">, convex_values54.VLiteral<"none", "required">, convex_values54.VLiteral<"sameConnection", "required">], "required", never>;
153
+ saml: convex_values54.VUnion<"verifiedEmail" | "none" | "sameConnection", [convex_values54.VLiteral<"verifiedEmail", "required">, convex_values54.VLiteral<"none", "required">, convex_values54.VLiteral<"sameConnection", "required">], "required", never>;
154
+ }, "required", "saml" | "oidc">;
155
+ }, "required", "accountLinking" | "accountLinking.saml" | "accountLinking.oidc">;
156
+ provisioning: convex_values54.VObject<{
157
+ user: {
158
+ createOnSignIn: boolean;
159
+ updateProfileOnLogin: "never" | "missing" | "always";
160
+ updateProfileFromScim: "never" | "missing" | "always";
161
+ authority: "app" | "sso" | "scim";
162
+ };
163
+ scimReuse: {
164
+ user: "none" | "externalId";
165
+ };
166
+ jit: {
167
+ defaultRole?: string | undefined;
168
+ defaultRoleIds?: string[] | undefined;
169
+ mode: "off" | "createUser" | "createUserAndMembership";
170
+ };
171
+ deprovision: {
172
+ mode: "soft" | "hard";
173
+ };
174
+ groups: {
175
+ mapping?: Record<string, string[]> | undefined;
176
+ mode: "ignore" | "sync";
177
+ source: "protocol";
178
+ };
179
+ roles: {
180
+ mapping?: Record<string, string[]> | undefined;
181
+ mode: "map" | "ignore";
182
+ source: "protocol";
183
+ };
184
+ }, {
185
+ user: convex_values54.VObject<{
186
+ createOnSignIn: boolean;
187
+ updateProfileOnLogin: "never" | "missing" | "always";
188
+ updateProfileFromScim: "never" | "missing" | "always";
189
+ authority: "app" | "sso" | "scim";
190
+ }, {
191
+ createOnSignIn: convex_values54.VBoolean<boolean, "required">;
192
+ updateProfileOnLogin: convex_values54.VUnion<"never" | "missing" | "always", [convex_values54.VLiteral<"never", "required">, convex_values54.VLiteral<"missing", "required">, convex_values54.VLiteral<"always", "required">], "required", never>;
193
+ updateProfileFromScim: convex_values54.VUnion<"never" | "missing" | "always", [convex_values54.VLiteral<"never", "required">, convex_values54.VLiteral<"missing", "required">, convex_values54.VLiteral<"always", "required">], "required", never>;
194
+ authority: convex_values54.VUnion<"app" | "sso" | "scim", [convex_values54.VLiteral<"app", "required">, convex_values54.VLiteral<"sso", "required">, convex_values54.VLiteral<"scim", "required">], "required", never>;
195
+ }, "required", "createOnSignIn" | "updateProfileOnLogin" | "updateProfileFromScim" | "authority">;
196
+ scimReuse: convex_values54.VObject<{
197
+ user: "none" | "externalId";
198
+ }, {
199
+ user: convex_values54.VUnion<"none" | "externalId", [convex_values54.VLiteral<"externalId", "required">, convex_values54.VLiteral<"none", "required">], "required", never>;
200
+ }, "required", "user">;
201
+ jit: convex_values54.VObject<{
202
+ defaultRole?: string | undefined;
203
+ defaultRoleIds?: string[] | undefined;
204
+ mode: "off" | "createUser" | "createUserAndMembership";
205
+ }, {
206
+ mode: convex_values54.VUnion<"off" | "createUser" | "createUserAndMembership", [convex_values54.VLiteral<"off", "required">, convex_values54.VLiteral<"createUser", "required">, convex_values54.VLiteral<"createUserAndMembership", "required">], "required", never>;
207
+ defaultRole: convex_values54.VString<string | undefined, "optional">;
208
+ defaultRoleIds: convex_values54.VArray<string[] | undefined, convex_values54.VString<string, "required">, "optional">;
209
+ }, "required", "mode" | "defaultRole" | "defaultRoleIds">;
210
+ deprovision: convex_values54.VObject<{
211
+ mode: "soft" | "hard";
212
+ }, {
213
+ mode: convex_values54.VUnion<"soft" | "hard", [convex_values54.VLiteral<"soft", "required">, convex_values54.VLiteral<"hard", "required">], "required", never>;
214
+ }, "required", "mode">;
215
+ groups: convex_values54.VObject<{
216
+ mapping?: Record<string, string[]> | undefined;
217
+ mode: "ignore" | "sync";
218
+ source: "protocol";
219
+ }, {
220
+ mode: convex_values54.VUnion<"ignore" | "sync", [convex_values54.VLiteral<"ignore", "required">, convex_values54.VLiteral<"sync", "required">], "required", never>;
221
+ source: convex_values54.VLiteral<"protocol", "required">;
222
+ mapping: convex_values54.VRecord<Record<string, string[]> | undefined, convex_values54.VString<string, "required">, convex_values54.VArray<string[], convex_values54.VString<string, "required">, "required">, "optional", string>;
223
+ }, "required", "mode" | "source" | "mapping" | `mapping.${string}`>;
224
+ roles: convex_values54.VObject<{
225
+ mapping?: Record<string, string[]> | undefined;
226
+ mode: "map" | "ignore";
227
+ source: "protocol";
228
+ }, {
229
+ mode: convex_values54.VUnion<"map" | "ignore", [convex_values54.VLiteral<"ignore", "required">, convex_values54.VLiteral<"map", "required">], "required", never>;
230
+ source: convex_values54.VLiteral<"protocol", "required">;
231
+ mapping: convex_values54.VRecord<Record<string, string[]> | undefined, convex_values54.VString<string, "required">, convex_values54.VArray<string[], convex_values54.VString<string, "required">, "required">, "optional", string>;
232
+ }, "required", "mode" | "source" | "mapping" | `mapping.${string}`>;
233
+ }, "required", "user" | "scimReuse" | "jit" | "deprovision" | "groups" | "roles" | "user.createOnSignIn" | "user.updateProfileOnLogin" | "user.updateProfileFromScim" | "user.authority" | "scimReuse.user" | "jit.mode" | "jit.defaultRole" | "jit.defaultRoleIds" | "deprovision.mode" | "groups.mode" | "groups.source" | "groups.mapping" | `groups.mapping.${string}` | "roles.mode" | "roles.source" | "roles.mapping" | `roles.mapping.${string}`>;
234
+ extend: convex_values54.VAny<any, "optional", string>;
235
+ }, "optional", "identity" | "extend" | `extend.${string}` | "version" | "provisioning" | "identity.accountLinking" | "identity.accountLinking.saml" | "identity.accountLinking.oidc" | "provisioning.user" | "provisioning.scimReuse" | "provisioning.jit" | "provisioning.deprovision" | "provisioning.groups" | "provisioning.roles" | "provisioning.user.createOnSignIn" | "provisioning.user.updateProfileOnLogin" | "provisioning.user.updateProfileFromScim" | "provisioning.user.authority" | "provisioning.scimReuse.user" | "provisioning.jit.mode" | "provisioning.jit.defaultRole" | "provisioning.jit.defaultRoleIds" | "provisioning.deprovision.mode" | "provisioning.groups.mode" | "provisioning.groups.source" | "provisioning.groups.mapping" | `provisioning.groups.mapping.${string}` | "provisioning.roles.mode" | "provisioning.roles.source" | "provisioning.roles.mapping" | `provisioning.roles.mapping.${string}`>;
236
+ extend: convex_values54.VAny<any, "optional", string>;
237
+ _id: convex_values54.VId<convex_values54.GenericId<"Group">, "required">;
238
+ _creationTime: convex_values54.VFloat64<number, "required">;
239
+ }, "extend"> & {
240
+ extend: convex_values54.VOptional<ExtendFor<TExtend, "Group">>;
241
+ })[Property_2]>, undefined> | undefined } & { [Property_1_1 in Exclude<"_creationTime", "type" | "slug" | "parentGroupId" | "rootGroupId" | "isRoot" | "tags" | "policy" | (convex_values54.VOptional<ExtendFor<TExtend, "Group">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"name", "type" | "slug" | "parentGroupId" | "rootGroupId" | "isRoot" | "tags" | "policy" | (convex_values54.VOptional<ExtendFor<TExtend, "Group">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"type", "type" | "slug" | "parentGroupId" | "rootGroupId" | "isRoot" | "tags" | "policy" | (convex_values54.VOptional<ExtendFor<TExtend, "Group">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"extend", "type" | "slug" | "parentGroupId" | "rootGroupId" | "isRoot" | "tags" | "policy" | (convex_values54.VOptional<ExtendFor<TExtend, "Group">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"_id", "type" | "slug" | "parentGroupId" | "rootGroupId" | "isRoot" | "tags" | "policy" | (convex_values54.VOptional<ExtendFor<TExtend, "Group">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"slug", "type" | "slug" | "parentGroupId" | "rootGroupId" | "isRoot" | "tags" | "policy" | (convex_values54.VOptional<ExtendFor<TExtend, "Group">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"parentGroupId", "type" | "slug" | "parentGroupId" | "rootGroupId" | "isRoot" | "tags" | "policy" | (convex_values54.VOptional<ExtendFor<TExtend, "Group">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"rootGroupId", "type" | "slug" | "parentGroupId" | "rootGroupId" | "isRoot" | "tags" | "policy" | (convex_values54.VOptional<ExtendFor<TExtend, "Group">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"isRoot", "type" | "slug" | "parentGroupId" | "rootGroupId" | "isRoot" | "tags" | "policy" | (convex_values54.VOptional<ExtendFor<TExtend, "Group">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"tags", "type" | "slug" | "parentGroupId" | "rootGroupId" | "isRoot" | "tags" | "policy" | (convex_values54.VOptional<ExtendFor<TExtend, "Group">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"policy", "type" | "slug" | "parentGroupId" | "rootGroupId" | "isRoot" | "tags" | "policy" | (convex_values54.VOptional<ExtendFor<TExtend, "Group">>["isOptional"] extends "optional" ? "extend" : never)>]: Infer<(Omit<{
242
+ name: convex_values54.VString<string, "required">;
243
+ slug: convex_values54.VString<string | undefined, "optional">;
244
+ type: convex_values54.VString<string | undefined, "optional">;
245
+ parentGroupId: convex_values54.VId<convex_values54.GenericId<"Group"> | undefined, "optional">;
246
+ rootGroupId: convex_values54.VId<convex_values54.GenericId<"Group"> | undefined, "optional">;
247
+ isRoot: convex_values54.VBoolean<boolean | undefined, "optional">;
248
+ tags: convex_values54.VArray<{
249
+ value: string;
250
+ key: string;
251
+ }[] | undefined, convex_values54.VObject<{
252
+ value: string;
253
+ key: string;
254
+ }, {
255
+ key: convex_values54.VString<string, "required">;
256
+ value: convex_values54.VString<string, "required">;
257
+ }, "required", "value" | "key">, "optional">;
258
+ policy: convex_values54.VObject<{
259
+ extend?: any;
260
+ identity: {
261
+ accountLinking: {
262
+ saml: "verifiedEmail" | "none" | "sameConnection";
263
+ oidc: "verifiedEmail" | "none" | "sameConnection";
264
+ };
265
+ };
266
+ version: 1;
267
+ provisioning: {
268
+ user: {
269
+ createOnSignIn: boolean;
270
+ updateProfileOnLogin: "never" | "missing" | "always";
271
+ updateProfileFromScim: "never" | "missing" | "always";
272
+ authority: "app" | "sso" | "scim";
273
+ };
274
+ scimReuse: {
275
+ user: "none" | "externalId";
276
+ };
277
+ jit: {
278
+ defaultRole?: string | undefined;
279
+ defaultRoleIds?: string[] | undefined;
280
+ mode: "off" | "createUser" | "createUserAndMembership";
281
+ };
282
+ deprovision: {
283
+ mode: "soft" | "hard";
284
+ };
285
+ groups: {
286
+ mapping?: Record<string, string[]> | undefined;
287
+ mode: "ignore" | "sync";
288
+ source: "protocol";
289
+ };
290
+ roles: {
291
+ mapping?: Record<string, string[]> | undefined;
292
+ mode: "map" | "ignore";
293
+ source: "protocol";
294
+ };
295
+ };
296
+ } | undefined, {
297
+ version: convex_values54.VLiteral<1, "required">;
298
+ identity: convex_values54.VObject<{
299
+ accountLinking: {
300
+ saml: "verifiedEmail" | "none" | "sameConnection";
301
+ oidc: "verifiedEmail" | "none" | "sameConnection";
302
+ };
303
+ }, {
304
+ accountLinking: convex_values54.VObject<{
305
+ saml: "verifiedEmail" | "none" | "sameConnection";
306
+ oidc: "verifiedEmail" | "none" | "sameConnection";
307
+ }, {
308
+ oidc: convex_values54.VUnion<"verifiedEmail" | "none" | "sameConnection", [convex_values54.VLiteral<"verifiedEmail", "required">, convex_values54.VLiteral<"none", "required">, convex_values54.VLiteral<"sameConnection", "required">], "required", never>;
309
+ saml: convex_values54.VUnion<"verifiedEmail" | "none" | "sameConnection", [convex_values54.VLiteral<"verifiedEmail", "required">, convex_values54.VLiteral<"none", "required">, convex_values54.VLiteral<"sameConnection", "required">], "required", never>;
310
+ }, "required", "saml" | "oidc">;
311
+ }, "required", "accountLinking" | "accountLinking.saml" | "accountLinking.oidc">;
312
+ provisioning: convex_values54.VObject<{
313
+ user: {
314
+ createOnSignIn: boolean;
315
+ updateProfileOnLogin: "never" | "missing" | "always";
316
+ updateProfileFromScim: "never" | "missing" | "always";
317
+ authority: "app" | "sso" | "scim";
318
+ };
319
+ scimReuse: {
320
+ user: "none" | "externalId";
321
+ };
322
+ jit: {
323
+ defaultRole?: string | undefined;
324
+ defaultRoleIds?: string[] | undefined;
325
+ mode: "off" | "createUser" | "createUserAndMembership";
326
+ };
327
+ deprovision: {
328
+ mode: "soft" | "hard";
329
+ };
330
+ groups: {
331
+ mapping?: Record<string, string[]> | undefined;
332
+ mode: "ignore" | "sync";
333
+ source: "protocol";
334
+ };
335
+ roles: {
336
+ mapping?: Record<string, string[]> | undefined;
337
+ mode: "map" | "ignore";
338
+ source: "protocol";
339
+ };
340
+ }, {
341
+ user: convex_values54.VObject<{
342
+ createOnSignIn: boolean;
343
+ updateProfileOnLogin: "never" | "missing" | "always";
344
+ updateProfileFromScim: "never" | "missing" | "always";
345
+ authority: "app" | "sso" | "scim";
346
+ }, {
347
+ createOnSignIn: convex_values54.VBoolean<boolean, "required">;
348
+ updateProfileOnLogin: convex_values54.VUnion<"never" | "missing" | "always", [convex_values54.VLiteral<"never", "required">, convex_values54.VLiteral<"missing", "required">, convex_values54.VLiteral<"always", "required">], "required", never>;
349
+ updateProfileFromScim: convex_values54.VUnion<"never" | "missing" | "always", [convex_values54.VLiteral<"never", "required">, convex_values54.VLiteral<"missing", "required">, convex_values54.VLiteral<"always", "required">], "required", never>;
350
+ authority: convex_values54.VUnion<"app" | "sso" | "scim", [convex_values54.VLiteral<"app", "required">, convex_values54.VLiteral<"sso", "required">, convex_values54.VLiteral<"scim", "required">], "required", never>;
351
+ }, "required", "createOnSignIn" | "updateProfileOnLogin" | "updateProfileFromScim" | "authority">;
352
+ scimReuse: convex_values54.VObject<{
353
+ user: "none" | "externalId";
354
+ }, {
355
+ user: convex_values54.VUnion<"none" | "externalId", [convex_values54.VLiteral<"externalId", "required">, convex_values54.VLiteral<"none", "required">], "required", never>;
356
+ }, "required", "user">;
357
+ jit: convex_values54.VObject<{
358
+ defaultRole?: string | undefined;
359
+ defaultRoleIds?: string[] | undefined;
360
+ mode: "off" | "createUser" | "createUserAndMembership";
361
+ }, {
362
+ mode: convex_values54.VUnion<"off" | "createUser" | "createUserAndMembership", [convex_values54.VLiteral<"off", "required">, convex_values54.VLiteral<"createUser", "required">, convex_values54.VLiteral<"createUserAndMembership", "required">], "required", never>;
363
+ defaultRole: convex_values54.VString<string | undefined, "optional">;
364
+ defaultRoleIds: convex_values54.VArray<string[] | undefined, convex_values54.VString<string, "required">, "optional">;
365
+ }, "required", "mode" | "defaultRole" | "defaultRoleIds">;
366
+ deprovision: convex_values54.VObject<{
367
+ mode: "soft" | "hard";
368
+ }, {
369
+ mode: convex_values54.VUnion<"soft" | "hard", [convex_values54.VLiteral<"soft", "required">, convex_values54.VLiteral<"hard", "required">], "required", never>;
370
+ }, "required", "mode">;
371
+ groups: convex_values54.VObject<{
372
+ mapping?: Record<string, string[]> | undefined;
373
+ mode: "ignore" | "sync";
374
+ source: "protocol";
375
+ }, {
376
+ mode: convex_values54.VUnion<"ignore" | "sync", [convex_values54.VLiteral<"ignore", "required">, convex_values54.VLiteral<"sync", "required">], "required", never>;
377
+ source: convex_values54.VLiteral<"protocol", "required">;
378
+ mapping: convex_values54.VRecord<Record<string, string[]> | undefined, convex_values54.VString<string, "required">, convex_values54.VArray<string[], convex_values54.VString<string, "required">, "required">, "optional", string>;
379
+ }, "required", "mode" | "source" | "mapping" | `mapping.${string}`>;
380
+ roles: convex_values54.VObject<{
381
+ mapping?: Record<string, string[]> | undefined;
382
+ mode: "map" | "ignore";
383
+ source: "protocol";
384
+ }, {
385
+ mode: convex_values54.VUnion<"map" | "ignore", [convex_values54.VLiteral<"ignore", "required">, convex_values54.VLiteral<"map", "required">], "required", never>;
386
+ source: convex_values54.VLiteral<"protocol", "required">;
387
+ mapping: convex_values54.VRecord<Record<string, string[]> | undefined, convex_values54.VString<string, "required">, convex_values54.VArray<string[], convex_values54.VString<string, "required">, "required">, "optional", string>;
388
+ }, "required", "mode" | "source" | "mapping" | `mapping.${string}`>;
389
+ }, "required", "user" | "scimReuse" | "jit" | "deprovision" | "groups" | "roles" | "user.createOnSignIn" | "user.updateProfileOnLogin" | "user.updateProfileFromScim" | "user.authority" | "scimReuse.user" | "jit.mode" | "jit.defaultRole" | "jit.defaultRoleIds" | "deprovision.mode" | "groups.mode" | "groups.source" | "groups.mapping" | `groups.mapping.${string}` | "roles.mode" | "roles.source" | "roles.mapping" | `roles.mapping.${string}`>;
390
+ extend: convex_values54.VAny<any, "optional", string>;
391
+ }, "optional", "identity" | "extend" | `extend.${string}` | "version" | "provisioning" | "identity.accountLinking" | "identity.accountLinking.saml" | "identity.accountLinking.oidc" | "provisioning.user" | "provisioning.scimReuse" | "provisioning.jit" | "provisioning.deprovision" | "provisioning.groups" | "provisioning.roles" | "provisioning.user.createOnSignIn" | "provisioning.user.updateProfileOnLogin" | "provisioning.user.updateProfileFromScim" | "provisioning.user.authority" | "provisioning.scimReuse.user" | "provisioning.jit.mode" | "provisioning.jit.defaultRole" | "provisioning.jit.defaultRoleIds" | "provisioning.deprovision.mode" | "provisioning.groups.mode" | "provisioning.groups.source" | "provisioning.groups.mapping" | `provisioning.groups.mapping.${string}` | "provisioning.roles.mode" | "provisioning.roles.source" | "provisioning.roles.mapping" | `provisioning.roles.mapping.${string}`>;
392
+ extend: convex_values54.VAny<any, "optional", string>;
393
+ _id: convex_values54.VId<convex_values54.GenericId<"Group">, "required">;
394
+ _creationTime: convex_values54.VFloat64<number, "required">;
395
+ }, "extend"> & {
396
+ extend: convex_values54.VOptional<ExtendFor<TExtend, "Group">>;
397
+ })[Property_1_1]> }>, Omit<{
398
+ name: convex_values54.VString<string, "required">;
399
+ slug: convex_values54.VString<string | undefined, "optional">;
400
+ type: convex_values54.VString<string | undefined, "optional">;
401
+ parentGroupId: convex_values54.VId<convex_values54.GenericId<"Group"> | undefined, "optional">;
402
+ rootGroupId: convex_values54.VId<convex_values54.GenericId<"Group"> | undefined, "optional">;
403
+ isRoot: convex_values54.VBoolean<boolean | undefined, "optional">;
404
+ tags: convex_values54.VArray<{
405
+ value: string;
406
+ key: string;
407
+ }[] | undefined, convex_values54.VObject<{
408
+ value: string;
409
+ key: string;
410
+ }, {
411
+ key: convex_values54.VString<string, "required">;
412
+ value: convex_values54.VString<string, "required">;
413
+ }, "required", "value" | "key">, "optional">;
414
+ policy: convex_values54.VObject<{
415
+ extend?: any;
416
+ identity: {
417
+ accountLinking: {
418
+ saml: "verifiedEmail" | "none" | "sameConnection";
419
+ oidc: "verifiedEmail" | "none" | "sameConnection";
420
+ };
421
+ };
422
+ version: 1;
423
+ provisioning: {
424
+ user: {
425
+ createOnSignIn: boolean;
426
+ updateProfileOnLogin: "never" | "missing" | "always";
427
+ updateProfileFromScim: "never" | "missing" | "always";
428
+ authority: "app" | "sso" | "scim";
429
+ };
430
+ scimReuse: {
431
+ user: "none" | "externalId";
432
+ };
433
+ jit: {
434
+ defaultRole?: string | undefined;
435
+ defaultRoleIds?: string[] | undefined;
436
+ mode: "off" | "createUser" | "createUserAndMembership";
437
+ };
438
+ deprovision: {
439
+ mode: "soft" | "hard";
440
+ };
441
+ groups: {
442
+ mapping?: Record<string, string[]> | undefined;
443
+ mode: "ignore" | "sync";
444
+ source: "protocol";
445
+ };
446
+ roles: {
447
+ mapping?: Record<string, string[]> | undefined;
448
+ mode: "map" | "ignore";
449
+ source: "protocol";
450
+ };
451
+ };
452
+ } | undefined, {
453
+ version: convex_values54.VLiteral<1, "required">;
454
+ identity: convex_values54.VObject<{
455
+ accountLinking: {
456
+ saml: "verifiedEmail" | "none" | "sameConnection";
457
+ oidc: "verifiedEmail" | "none" | "sameConnection";
458
+ };
459
+ }, {
460
+ accountLinking: convex_values54.VObject<{
461
+ saml: "verifiedEmail" | "none" | "sameConnection";
462
+ oidc: "verifiedEmail" | "none" | "sameConnection";
463
+ }, {
464
+ oidc: convex_values54.VUnion<"verifiedEmail" | "none" | "sameConnection", [convex_values54.VLiteral<"verifiedEmail", "required">, convex_values54.VLiteral<"none", "required">, convex_values54.VLiteral<"sameConnection", "required">], "required", never>;
465
+ saml: convex_values54.VUnion<"verifiedEmail" | "none" | "sameConnection", [convex_values54.VLiteral<"verifiedEmail", "required">, convex_values54.VLiteral<"none", "required">, convex_values54.VLiteral<"sameConnection", "required">], "required", never>;
466
+ }, "required", "saml" | "oidc">;
467
+ }, "required", "accountLinking" | "accountLinking.saml" | "accountLinking.oidc">;
468
+ provisioning: convex_values54.VObject<{
469
+ user: {
470
+ createOnSignIn: boolean;
471
+ updateProfileOnLogin: "never" | "missing" | "always";
472
+ updateProfileFromScim: "never" | "missing" | "always";
473
+ authority: "app" | "sso" | "scim";
474
+ };
475
+ scimReuse: {
476
+ user: "none" | "externalId";
477
+ };
478
+ jit: {
479
+ defaultRole?: string | undefined;
480
+ defaultRoleIds?: string[] | undefined;
481
+ mode: "off" | "createUser" | "createUserAndMembership";
482
+ };
483
+ deprovision: {
484
+ mode: "soft" | "hard";
485
+ };
486
+ groups: {
487
+ mapping?: Record<string, string[]> | undefined;
488
+ mode: "ignore" | "sync";
489
+ source: "protocol";
490
+ };
491
+ roles: {
492
+ mapping?: Record<string, string[]> | undefined;
493
+ mode: "map" | "ignore";
494
+ source: "protocol";
495
+ };
496
+ }, {
497
+ user: convex_values54.VObject<{
498
+ createOnSignIn: boolean;
499
+ updateProfileOnLogin: "never" | "missing" | "always";
500
+ updateProfileFromScim: "never" | "missing" | "always";
501
+ authority: "app" | "sso" | "scim";
502
+ }, {
503
+ createOnSignIn: convex_values54.VBoolean<boolean, "required">;
504
+ updateProfileOnLogin: convex_values54.VUnion<"never" | "missing" | "always", [convex_values54.VLiteral<"never", "required">, convex_values54.VLiteral<"missing", "required">, convex_values54.VLiteral<"always", "required">], "required", never>;
505
+ updateProfileFromScim: convex_values54.VUnion<"never" | "missing" | "always", [convex_values54.VLiteral<"never", "required">, convex_values54.VLiteral<"missing", "required">, convex_values54.VLiteral<"always", "required">], "required", never>;
506
+ authority: convex_values54.VUnion<"app" | "sso" | "scim", [convex_values54.VLiteral<"app", "required">, convex_values54.VLiteral<"sso", "required">, convex_values54.VLiteral<"scim", "required">], "required", never>;
507
+ }, "required", "createOnSignIn" | "updateProfileOnLogin" | "updateProfileFromScim" | "authority">;
508
+ scimReuse: convex_values54.VObject<{
509
+ user: "none" | "externalId";
510
+ }, {
511
+ user: convex_values54.VUnion<"none" | "externalId", [convex_values54.VLiteral<"externalId", "required">, convex_values54.VLiteral<"none", "required">], "required", never>;
512
+ }, "required", "user">;
513
+ jit: convex_values54.VObject<{
514
+ defaultRole?: string | undefined;
515
+ defaultRoleIds?: string[] | undefined;
516
+ mode: "off" | "createUser" | "createUserAndMembership";
517
+ }, {
518
+ mode: convex_values54.VUnion<"off" | "createUser" | "createUserAndMembership", [convex_values54.VLiteral<"off", "required">, convex_values54.VLiteral<"createUser", "required">, convex_values54.VLiteral<"createUserAndMembership", "required">], "required", never>;
519
+ defaultRole: convex_values54.VString<string | undefined, "optional">;
520
+ defaultRoleIds: convex_values54.VArray<string[] | undefined, convex_values54.VString<string, "required">, "optional">;
521
+ }, "required", "mode" | "defaultRole" | "defaultRoleIds">;
522
+ deprovision: convex_values54.VObject<{
523
+ mode: "soft" | "hard";
524
+ }, {
525
+ mode: convex_values54.VUnion<"soft" | "hard", [convex_values54.VLiteral<"soft", "required">, convex_values54.VLiteral<"hard", "required">], "required", never>;
526
+ }, "required", "mode">;
527
+ groups: convex_values54.VObject<{
528
+ mapping?: Record<string, string[]> | undefined;
529
+ mode: "ignore" | "sync";
530
+ source: "protocol";
531
+ }, {
532
+ mode: convex_values54.VUnion<"ignore" | "sync", [convex_values54.VLiteral<"ignore", "required">, convex_values54.VLiteral<"sync", "required">], "required", never>;
533
+ source: convex_values54.VLiteral<"protocol", "required">;
534
+ mapping: convex_values54.VRecord<Record<string, string[]> | undefined, convex_values54.VString<string, "required">, convex_values54.VArray<string[], convex_values54.VString<string, "required">, "required">, "optional", string>;
535
+ }, "required", "mode" | "source" | "mapping" | `mapping.${string}`>;
536
+ roles: convex_values54.VObject<{
537
+ mapping?: Record<string, string[]> | undefined;
538
+ mode: "map" | "ignore";
539
+ source: "protocol";
540
+ }, {
541
+ mode: convex_values54.VUnion<"map" | "ignore", [convex_values54.VLiteral<"ignore", "required">, convex_values54.VLiteral<"map", "required">], "required", never>;
542
+ source: convex_values54.VLiteral<"protocol", "required">;
543
+ mapping: convex_values54.VRecord<Record<string, string[]> | undefined, convex_values54.VString<string, "required">, convex_values54.VArray<string[], convex_values54.VString<string, "required">, "required">, "optional", string>;
544
+ }, "required", "mode" | "source" | "mapping" | `mapping.${string}`>;
545
+ }, "required", "user" | "scimReuse" | "jit" | "deprovision" | "groups" | "roles" | "user.createOnSignIn" | "user.updateProfileOnLogin" | "user.updateProfileFromScim" | "user.authority" | "scimReuse.user" | "jit.mode" | "jit.defaultRole" | "jit.defaultRoleIds" | "deprovision.mode" | "groups.mode" | "groups.source" | "groups.mapping" | `groups.mapping.${string}` | "roles.mode" | "roles.source" | "roles.mapping" | `roles.mapping.${string}`>;
546
+ extend: convex_values54.VAny<any, "optional", string>;
547
+ }, "optional", "identity" | "extend" | `extend.${string}` | "version" | "provisioning" | "identity.accountLinking" | "identity.accountLinking.saml" | "identity.accountLinking.oidc" | "provisioning.user" | "provisioning.scimReuse" | "provisioning.jit" | "provisioning.deprovision" | "provisioning.groups" | "provisioning.roles" | "provisioning.user.createOnSignIn" | "provisioning.user.updateProfileOnLogin" | "provisioning.user.updateProfileFromScim" | "provisioning.user.authority" | "provisioning.scimReuse.user" | "provisioning.jit.mode" | "provisioning.jit.defaultRole" | "provisioning.jit.defaultRoleIds" | "provisioning.deprovision.mode" | "provisioning.groups.mode" | "provisioning.groups.source" | "provisioning.groups.mapping" | `provisioning.groups.mapping.${string}` | "provisioning.roles.mode" | "provisioning.roles.source" | "provisioning.roles.mapping" | `provisioning.roles.mapping.${string}`>;
548
+ extend: convex_values54.VAny<any, "optional", string>;
549
+ _id: convex_values54.VId<convex_values54.GenericId<"Group">, "required">;
550
+ _creationTime: convex_values54.VFloat64<number, "required">;
551
+ }, "extend"> & {
552
+ extend: convex_values54.VOptional<ExtendFor<TExtend, "Group">>;
553
+ }, "required", "_creationTime" | "name" | "type" | "extend" | "_id" | "slug" | "parentGroupId" | "rootGroupId" | "isRoot" | "tags" | "policy" | "policy.identity" | "policy.extend" | `policy.extend.${string}` | "policy.version" | "policy.provisioning" | "policy.identity.accountLinking" | "policy.identity.accountLinking.saml" | "policy.identity.accountLinking.oidc" | "policy.provisioning.user" | "policy.provisioning.scimReuse" | "policy.provisioning.jit" | "policy.provisioning.deprovision" | "policy.provisioning.groups" | "policy.provisioning.roles" | "policy.provisioning.user.createOnSignIn" | "policy.provisioning.user.updateProfileOnLogin" | "policy.provisioning.user.updateProfileFromScim" | "policy.provisioning.user.authority" | "policy.provisioning.scimReuse.user" | "policy.provisioning.jit.mode" | "policy.provisioning.jit.defaultRole" | "policy.provisioning.jit.defaultRoleIds" | "policy.provisioning.deprovision.mode" | "policy.provisioning.groups.mode" | "policy.provisioning.groups.source" | "policy.provisioning.groups.mapping" | `policy.provisioning.groups.mapping.${string}` | "policy.provisioning.roles.mode" | "policy.provisioning.roles.source" | "policy.provisioning.roles.mapping" | `policy.provisioning.roles.mapping.${string}` | `extend.${convex_values54.VOptional<ExtendFor<TExtend, "Group">>["fieldPaths"]}`>; /** Single GroupMember document validator (extend-aware). */
554
+ member: convex_values54.VObject<convex_server13.Expand<{ [Property_3 in "role" | "roleIds" | "status" | (convex_values54.VOptional<ExtendFor<TExtend, "GroupMember">>["isOptional"] extends "optional" ? "extend" : never)]?: Exclude<Infer<(Omit<{
555
+ groupId: convex_values54.VId<convex_values54.GenericId<"Group">, "required">;
556
+ userId: convex_values54.VId<convex_values54.GenericId<"User">, "required">;
557
+ role: convex_values54.VString<string | undefined, "optional">;
558
+ roleIds: convex_values54.VArray<string[] | undefined, convex_values54.VString<string, "required">, "optional">;
559
+ status: convex_values54.VString<string | undefined, "optional">;
560
+ extend: convex_values54.VAny<any, "optional", string>;
561
+ _id: convex_values54.VId<convex_values54.GenericId<"GroupMember">, "required">;
562
+ _creationTime: convex_values54.VFloat64<number, "required">;
563
+ }, "extend"> & {
564
+ extend: convex_values54.VOptional<ExtendFor<TExtend, "GroupMember">>;
565
+ })[Property_3]>, undefined> | undefined } & { [Property_1_2 in Exclude<"_creationTime", "role" | "roleIds" | "status" | (convex_values54.VOptional<ExtendFor<TExtend, "GroupMember">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"extend", "role" | "roleIds" | "status" | (convex_values54.VOptional<ExtendFor<TExtend, "GroupMember">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"_id", "role" | "roleIds" | "status" | (convex_values54.VOptional<ExtendFor<TExtend, "GroupMember">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"groupId", "role" | "roleIds" | "status" | (convex_values54.VOptional<ExtendFor<TExtend, "GroupMember">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"userId", "role" | "roleIds" | "status" | (convex_values54.VOptional<ExtendFor<TExtend, "GroupMember">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"role", "role" | "roleIds" | "status" | (convex_values54.VOptional<ExtendFor<TExtend, "GroupMember">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"roleIds", "role" | "roleIds" | "status" | (convex_values54.VOptional<ExtendFor<TExtend, "GroupMember">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"status", "role" | "roleIds" | "status" | (convex_values54.VOptional<ExtendFor<TExtend, "GroupMember">>["isOptional"] extends "optional" ? "extend" : never)>]: Infer<(Omit<{
566
+ groupId: convex_values54.VId<convex_values54.GenericId<"Group">, "required">;
567
+ userId: convex_values54.VId<convex_values54.GenericId<"User">, "required">;
568
+ role: convex_values54.VString<string | undefined, "optional">;
569
+ roleIds: convex_values54.VArray<string[] | undefined, convex_values54.VString<string, "required">, "optional">;
570
+ status: convex_values54.VString<string | undefined, "optional">;
571
+ extend: convex_values54.VAny<any, "optional", string>;
572
+ _id: convex_values54.VId<convex_values54.GenericId<"GroupMember">, "required">;
573
+ _creationTime: convex_values54.VFloat64<number, "required">;
574
+ }, "extend"> & {
575
+ extend: convex_values54.VOptional<ExtendFor<TExtend, "GroupMember">>;
576
+ })[Property_1_2]> }>, Omit<{
577
+ groupId: convex_values54.VId<convex_values54.GenericId<"Group">, "required">;
578
+ userId: convex_values54.VId<convex_values54.GenericId<"User">, "required">;
579
+ role: convex_values54.VString<string | undefined, "optional">;
580
+ roleIds: convex_values54.VArray<string[] | undefined, convex_values54.VString<string, "required">, "optional">;
581
+ status: convex_values54.VString<string | undefined, "optional">;
582
+ extend: convex_values54.VAny<any, "optional", string>;
583
+ _id: convex_values54.VId<convex_values54.GenericId<"GroupMember">, "required">;
584
+ _creationTime: convex_values54.VFloat64<number, "required">;
585
+ }, "extend"> & {
586
+ extend: convex_values54.VOptional<ExtendFor<TExtend, "GroupMember">>;
587
+ }, "required", "_creationTime" | "extend" | "_id" | "groupId" | "userId" | "role" | "roleIds" | "status" | `extend.${convex_values54.VOptional<ExtendFor<TExtend, "GroupMember">>["fieldPaths"]}`>; /** Single GroupInvite document validator. */
588
+ invite: convex_values54.VObject<{
589
+ email?: string | undefined;
590
+ extend?: any;
591
+ groupId?: convex_values54.GenericId<"Group"> | undefined;
592
+ role?: string | undefined;
593
+ roleIds?: string[] | undefined;
594
+ invitedByUserId?: convex_values54.GenericId<"User"> | undefined;
595
+ expiresTime?: number | undefined;
596
+ acceptedByUserId?: convex_values54.GenericId<"User"> | undefined;
597
+ acceptedTime?: number | undefined;
598
+ _creationTime: number;
599
+ _id: convex_values54.GenericId<"GroupInvite">;
600
+ status: "pending" | "accepted" | "revoked" | "expired";
601
+ tokenHash: string;
602
+ }, {
603
+ groupId: convex_values54.VId<convex_values54.GenericId<"Group"> | undefined, "optional">;
604
+ invitedByUserId: convex_values54.VId<convex_values54.GenericId<"User"> | undefined, "optional">;
605
+ email: convex_values54.VString<string | undefined, "optional">;
606
+ tokenHash: convex_values54.VString<string, "required">;
607
+ role: convex_values54.VString<string | undefined, "optional">;
608
+ roleIds: convex_values54.VArray<string[] | undefined, convex_values54.VString<string, "required">, "optional">;
609
+ status: convex_values54.VUnion<"pending" | "accepted" | "revoked" | "expired", [convex_values54.VLiteral<"pending", "required">, convex_values54.VLiteral<"accepted", "required">, convex_values54.VLiteral<"revoked", "required">, convex_values54.VLiteral<"expired", "required">], "required", never>;
610
+ expiresTime: convex_values54.VFloat64<number | undefined, "optional">;
611
+ acceptedByUserId: convex_values54.VId<convex_values54.GenericId<"User"> | undefined, "optional">;
612
+ acceptedTime: convex_values54.VFloat64<number | undefined, "optional">;
613
+ extend: convex_values54.VAny<any, "optional", string>;
614
+ _id: convex_values54.VId<convex_values54.GenericId<"GroupInvite">, "required">;
615
+ _creationTime: convex_values54.VFloat64<number, "required">;
616
+ }, "required", "email" | "_creationTime" | "extend" | "_id" | `extend.${string}` | "groupId" | "role" | "roleIds" | "status" | "invitedByUserId" | "tokenHash" | "expiresTime" | "acceptedByUserId" | "acceptedTime">; /** Single UserEmail document validator. */
617
+ email: convex_values54.VObject<{
618
+ provider?: string | undefined;
619
+ connectionId?: convex_values54.GenericId<"GroupConnection"> | undefined;
620
+ verificationTime?: number | undefined;
621
+ accountId?: convex_values54.GenericId<"Account"> | undefined;
622
+ email: string;
623
+ _creationTime: number;
624
+ _id: convex_values54.GenericId<"UserEmail">;
625
+ source: "saml" | "oidc" | "scim" | "password" | "oauth";
626
+ userId: convex_values54.GenericId<"User">;
627
+ isPrimary: boolean;
628
+ }, {
629
+ userId: convex_values54.VId<convex_values54.GenericId<"User">, "required">;
630
+ email: convex_values54.VString<string, "required">;
631
+ verificationTime: convex_values54.VFloat64<number | undefined, "optional">;
632
+ isPrimary: convex_values54.VBoolean<boolean, "required">;
633
+ source: convex_values54.VUnion<"saml" | "oidc" | "scim" | "password" | "oauth", [convex_values54.VLiteral<"password", "required">, convex_values54.VLiteral<"oauth", "required">, convex_values54.VLiteral<"oidc", "required">, convex_values54.VLiteral<"saml", "required">, convex_values54.VLiteral<"scim", "required">], "required", never>;
634
+ accountId: convex_values54.VId<convex_values54.GenericId<"Account"> | undefined, "optional">;
635
+ provider: convex_values54.VString<string | undefined, "optional">;
636
+ connectionId: convex_values54.VId<convex_values54.GenericId<"GroupConnection"> | undefined, "optional">;
637
+ _id: convex_values54.VId<convex_values54.GenericId<"UserEmail">, "required">;
638
+ _creationTime: convex_values54.VFloat64<number, "required">;
639
+ }, "required", "email" | "_creationTime" | "provider" | "connectionId" | "_id" | "source" | "userId" | "verificationTime" | "isPrimary" | "accountId">; /** `User | null` — for a `viewer`/current-user query. */
640
+ viewer: convex_values54.VUnion<convex_server13.Expand<{ [Property in "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)]?: Exclude<Infer<(Omit<{
641
+ name: convex_values54.VString<string | undefined, "optional">;
642
+ image: convex_values54.VString<string | undefined, "optional">;
643
+ email: convex_values54.VString<string | undefined, "optional">;
644
+ emailVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
645
+ phone: convex_values54.VString<string | undefined, "optional">;
646
+ phoneVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
647
+ isAnonymous: convex_values54.VBoolean<boolean | undefined, "optional">;
648
+ lastActiveGroup: convex_values54.VId<convex_values54.GenericId<"Group"> | undefined, "optional">;
649
+ extend: convex_values54.VAny<any, "optional", string>;
650
+ _id: convex_values54.VId<convex_values54.GenericId<"User">, "required">;
651
+ _creationTime: convex_values54.VFloat64<number, "required">;
652
+ }, "extend"> & {
653
+ extend: convex_values54.VOptional<ExtendFor<TExtend, "User">>;
654
+ })[Property]>, undefined> | undefined } & { [Property_1 in Exclude<"email", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"_creationTime", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"name", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"image", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"extend", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"emailVerificationTime", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"phone", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"phoneVerificationTime", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"isAnonymous", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"lastActiveGroup", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"_id", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)>]: Infer<(Omit<{
655
+ name: convex_values54.VString<string | undefined, "optional">;
656
+ image: convex_values54.VString<string | undefined, "optional">;
657
+ email: convex_values54.VString<string | undefined, "optional">;
658
+ emailVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
659
+ phone: convex_values54.VString<string | undefined, "optional">;
660
+ phoneVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
661
+ isAnonymous: convex_values54.VBoolean<boolean | undefined, "optional">;
662
+ lastActiveGroup: convex_values54.VId<convex_values54.GenericId<"Group"> | undefined, "optional">;
663
+ extend: convex_values54.VAny<any, "optional", string>;
664
+ _id: convex_values54.VId<convex_values54.GenericId<"User">, "required">;
665
+ _creationTime: convex_values54.VFloat64<number, "required">;
666
+ }, "extend"> & {
667
+ extend: convex_values54.VOptional<ExtendFor<TExtend, "User">>;
668
+ })[Property_1]> }> | null, [convex_values54.VObject<convex_server13.Expand<{ [Property in "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)]?: Exclude<Infer<(Omit<{
669
+ name: convex_values54.VString<string | undefined, "optional">;
670
+ image: convex_values54.VString<string | undefined, "optional">;
671
+ email: convex_values54.VString<string | undefined, "optional">;
672
+ emailVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
673
+ phone: convex_values54.VString<string | undefined, "optional">;
674
+ phoneVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
675
+ isAnonymous: convex_values54.VBoolean<boolean | undefined, "optional">;
676
+ lastActiveGroup: convex_values54.VId<convex_values54.GenericId<"Group"> | undefined, "optional">;
677
+ extend: convex_values54.VAny<any, "optional", string>;
678
+ _id: convex_values54.VId<convex_values54.GenericId<"User">, "required">;
679
+ _creationTime: convex_values54.VFloat64<number, "required">;
680
+ }, "extend"> & {
681
+ extend: convex_values54.VOptional<ExtendFor<TExtend, "User">>;
682
+ })[Property]>, undefined> | undefined } & { [Property_1 in Exclude<"email", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"_creationTime", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"name", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"image", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"extend", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"emailVerificationTime", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"phone", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"phoneVerificationTime", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"isAnonymous", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"lastActiveGroup", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)> | Exclude<"_id", "email" | "name" | "image" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | (convex_values54.VOptional<ExtendFor<TExtend, "User">>["isOptional"] extends "optional" ? "extend" : never)>]: Infer<(Omit<{
683
+ name: convex_values54.VString<string | undefined, "optional">;
684
+ image: convex_values54.VString<string | undefined, "optional">;
685
+ email: convex_values54.VString<string | undefined, "optional">;
686
+ emailVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
687
+ phone: convex_values54.VString<string | undefined, "optional">;
688
+ phoneVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
689
+ isAnonymous: convex_values54.VBoolean<boolean | undefined, "optional">;
690
+ lastActiveGroup: convex_values54.VId<convex_values54.GenericId<"Group"> | undefined, "optional">;
691
+ extend: convex_values54.VAny<any, "optional", string>;
692
+ _id: convex_values54.VId<convex_values54.GenericId<"User">, "required">;
693
+ _creationTime: convex_values54.VFloat64<number, "required">;
694
+ }, "extend"> & {
695
+ extend: convex_values54.VOptional<ExtendFor<TExtend, "User">>;
696
+ })[Property_1]> }>, Omit<{
697
+ name: convex_values54.VString<string | undefined, "optional">;
698
+ image: convex_values54.VString<string | undefined, "optional">;
699
+ email: convex_values54.VString<string | undefined, "optional">;
700
+ emailVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
701
+ phone: convex_values54.VString<string | undefined, "optional">;
702
+ phoneVerificationTime: convex_values54.VFloat64<number | undefined, "optional">;
703
+ isAnonymous: convex_values54.VBoolean<boolean | undefined, "optional">;
704
+ lastActiveGroup: convex_values54.VId<convex_values54.GenericId<"Group"> | undefined, "optional">;
705
+ extend: convex_values54.VAny<any, "optional", string>;
706
+ _id: convex_values54.VId<convex_values54.GenericId<"User">, "required">;
707
+ _creationTime: convex_values54.VFloat64<number, "required">;
708
+ }, "extend"> & {
709
+ extend: convex_values54.VOptional<ExtendFor<TExtend, "User">>;
710
+ }, "required", "email" | "_creationTime" | "name" | "image" | "extend" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | "_id" | `extend.${convex_values54.VOptional<ExtendFor<TExtend, "User">>["fieldPaths"]}`>, convex_values54.VNull<null, "required">], "required", "email" | "_creationTime" | "name" | "image" | "extend" | "emailVerificationTime" | "phone" | "phoneVerificationTime" | "isAnonymous" | "lastActiveGroup" | "_id" | `extend.${convex_values54.VOptional<ExtendFor<TExtend, "User">>["fieldPaths"]}`>; /** Wrap any item validator in the `{ items, nextCursor }` page shape. */
711
+ list: <V extends Validator<any, any, any>>(item: V) => convex_values54.VObject<{
712
+ items: V["type"][];
713
+ nextCursor: string | null;
714
+ }, {
715
+ items: convex_values54.VArray<V["type"][], V, "required">;
716
+ nextCursor: convex_values54.VUnion<string | null, [convex_values54.VString<string, "required">, convex_values54.VNull<null, "required">], "required", never>;
717
+ }, "required", "items" | "nextCursor">;
718
+ };
719
+ /**
720
+ * The `auth.v` namespace type, parameterized by the consumer's `extend`.
721
+ *
722
+ * @typeParam TExtend - The consumer's per-table `extend` validators.
723
+ */
724
+ type AuthValidators<TExtend extends AuthExtendValidators = {}> = ReturnType<typeof buildAuthValidators<TExtend>>;
725
+ /**
726
+ * Inferred current-user document type (extend-aware).
727
+ *
728
+ * @typeParam TExtend - The consumer's per-table `extend` validators.
729
+ */
730
+ type Viewer<TExtend extends AuthExtendValidators = {}> = Infer<AuthValidators<TExtend>["user"]>;
731
+ /**
732
+ * Inferred Group document type (extend-aware).
733
+ *
734
+ * @typeParam TExtend - The consumer's per-table `extend` validators.
735
+ */
736
+ type Group<TExtend extends AuthExtendValidators = {}> = Infer<AuthValidators<TExtend>["group"]>;
737
+ /**
738
+ * Inferred GroupMember document type (extend-aware).
739
+ *
740
+ * @typeParam TExtend - The consumer's per-table `extend` validators.
741
+ */
742
+ type Membership<TExtend extends AuthExtendValidators = {}> = Infer<AuthValidators<TExtend>["member"]>;
743
+ //#endregion
744
+ export { AuthExtendValidators, AuthValidators, Group, Membership, Viewer, buildAuthValidators };
745
+ //# sourceMappingURL=validators.d.ts.map