@absolutejs/auth 0.26.0-beta.3 → 0.26.0-beta.4

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.
@@ -0,0 +1,46 @@
1
+ import type { AuditEmitter } from '../audit/config';
2
+ import type { AuthSessionStore } from '../session/types';
3
+ import type { OrganizationId } from '../tenancy';
4
+ import type { RouteString } from '../types';
5
+ import type { OrganizationMembership, OrganizationStore } from './types';
6
+ export declare const DEFAULT_INVITATION_TTL_MS: number;
7
+ export declare const DEFAULT_ORGANIZATIONS_ROUTE: RouteString;
8
+ export declare const DEFAULT_OWNER_ROLES: string[];
9
+ export type OrganizationInvitationMessage = {
10
+ email: string;
11
+ expiresAt: number;
12
+ inviterUserId?: string;
13
+ organizationId: OrganizationId;
14
+ token: string;
15
+ };
16
+ export type OrganizationsConfig<UserType> = {
17
+ getUserId: (user: UserType) => string;
18
+ organizationStore: OrganizationStore;
19
+ canCreateOrganization?: (user: UserType) => boolean | Promise<boolean>;
20
+ canManageMembers?: (context: {
21
+ membership?: OrganizationMembership;
22
+ organizationId: OrganizationId;
23
+ user: UserType;
24
+ }) => boolean | Promise<boolean>;
25
+ invitationDurationMs?: number;
26
+ onMembershipAdded?: (context: {
27
+ organizationId: OrganizationId;
28
+ roles: string[];
29
+ userId: string;
30
+ }) => void | Promise<void>;
31
+ onMembershipRemoved?: (context: {
32
+ organizationId: OrganizationId;
33
+ userId: string;
34
+ }) => void | Promise<void>;
35
+ onOrganizationCreated?: (context: {
36
+ organizationId: OrganizationId;
37
+ ownerUserId: string;
38
+ }) => void | Promise<void>;
39
+ onSendInvitation?: (message: OrganizationInvitationMessage) => void | Promise<void>;
40
+ organizationsRoute?: RouteString;
41
+ ownerRoles?: string[];
42
+ };
43
+ export type OrganizationsRouteProps<UserType> = OrganizationsConfig<UserType> & {
44
+ authSessionStore?: AuthSessionStore<UserType>;
45
+ emit?: AuditEmitter;
46
+ };
@@ -0,0 +1,2 @@
1
+ import type { OrganizationStore } from './types';
2
+ export declare const createInMemoryOrganizationStore: () => OrganizationStore;
@@ -0,0 +1,32 @@
1
+ import type { OrganizationId } from '../tenancy';
2
+ import type { Organization, OrganizationInvitation, OrganizationMembership, OrganizationStore } from './types';
3
+ export declare const acceptInvitation: ({ organizationStore, token, userId }: {
4
+ organizationStore: OrganizationStore;
5
+ token: string;
6
+ userId: string;
7
+ }) => Promise<OrganizationMembership | undefined>;
8
+ export declare const createOrganization: ({ metadata, name, organizationStore, ownerRoles, ownerUserId }: {
9
+ metadata?: Record<string, unknown>;
10
+ name: string;
11
+ organizationStore: OrganizationStore;
12
+ ownerRoles?: string[];
13
+ ownerUserId: string;
14
+ }) => Promise<Organization>;
15
+ export declare const inviteToOrganization: ({ email, invitationDurationMs, inviterUserId, organizationId, organizationStore, roles }: {
16
+ email: string;
17
+ invitationDurationMs?: number;
18
+ inviterUserId?: string;
19
+ organizationId: OrganizationId;
20
+ organizationStore: OrganizationStore;
21
+ roles?: string[];
22
+ }) => Promise<{
23
+ invitation: OrganizationInvitation;
24
+ token: string;
25
+ }>;
26
+ export declare const listUserOrganizations: ({ organizationStore, userId }: {
27
+ organizationStore: OrganizationStore;
28
+ userId: string;
29
+ }) => Promise<{
30
+ membership: OrganizationMembership;
31
+ organization: Organization | undefined;
32
+ }[]>;
@@ -0,0 +1,412 @@
1
+ import { type AnyPgDatabase } from '../stores/postgres';
2
+ import type { InvitationState, MembershipStatus, OrganizationStore } from './types';
3
+ export declare const organizationInvitationsTable: import("drizzle-orm/pg-core").PgTableWithColumns<{
4
+ name: "auth_organization_invitations";
5
+ schema: undefined;
6
+ columns: {
7
+ accepted_at_ms: import("drizzle-orm/pg-core").PgColumn<{
8
+ name: "accepted_at_ms";
9
+ tableName: "auth_organization_invitations";
10
+ dataType: "number";
11
+ columnType: "PgBigInt53";
12
+ data: number;
13
+ driverParam: string | number;
14
+ notNull: false;
15
+ hasDefault: false;
16
+ isPrimaryKey: false;
17
+ isAutoincrement: false;
18
+ hasRuntimeDefault: false;
19
+ enumValues: undefined;
20
+ baseColumn: never;
21
+ identity: undefined;
22
+ generated: undefined;
23
+ }, {}, {}>;
24
+ created_at_ms: import("drizzle-orm/pg-core").PgColumn<{
25
+ name: "created_at_ms";
26
+ tableName: "auth_organization_invitations";
27
+ dataType: "number";
28
+ columnType: "PgBigInt53";
29
+ data: number;
30
+ driverParam: string | number;
31
+ notNull: true;
32
+ hasDefault: false;
33
+ isPrimaryKey: false;
34
+ isAutoincrement: false;
35
+ hasRuntimeDefault: false;
36
+ enumValues: undefined;
37
+ baseColumn: never;
38
+ identity: undefined;
39
+ generated: undefined;
40
+ }, {}, {}>;
41
+ email: import("drizzle-orm/pg-core").PgColumn<{
42
+ name: "email";
43
+ tableName: "auth_organization_invitations";
44
+ dataType: "string";
45
+ columnType: "PgVarchar";
46
+ data: string;
47
+ driverParam: string;
48
+ notNull: true;
49
+ hasDefault: false;
50
+ isPrimaryKey: false;
51
+ isAutoincrement: false;
52
+ hasRuntimeDefault: false;
53
+ enumValues: [string, ...string[]];
54
+ baseColumn: never;
55
+ identity: undefined;
56
+ generated: undefined;
57
+ }, {}, {
58
+ length: 255;
59
+ }>;
60
+ expires_at_ms: import("drizzle-orm/pg-core").PgColumn<{
61
+ name: "expires_at_ms";
62
+ tableName: "auth_organization_invitations";
63
+ dataType: "number";
64
+ columnType: "PgBigInt53";
65
+ data: number;
66
+ driverParam: string | number;
67
+ notNull: true;
68
+ hasDefault: false;
69
+ isPrimaryKey: false;
70
+ isAutoincrement: false;
71
+ hasRuntimeDefault: false;
72
+ enumValues: undefined;
73
+ baseColumn: never;
74
+ identity: undefined;
75
+ generated: undefined;
76
+ }, {}, {}>;
77
+ invitation_id: import("drizzle-orm/pg-core").PgColumn<{
78
+ name: "invitation_id";
79
+ tableName: "auth_organization_invitations";
80
+ dataType: "string";
81
+ columnType: "PgVarchar";
82
+ data: string;
83
+ driverParam: string;
84
+ notNull: true;
85
+ hasDefault: false;
86
+ isPrimaryKey: true;
87
+ isAutoincrement: false;
88
+ hasRuntimeDefault: false;
89
+ enumValues: [string, ...string[]];
90
+ baseColumn: never;
91
+ identity: undefined;
92
+ generated: undefined;
93
+ }, {}, {
94
+ length: 255;
95
+ }>;
96
+ inviter_user_id: import("drizzle-orm/pg-core").PgColumn<{
97
+ name: "inviter_user_id";
98
+ tableName: "auth_organization_invitations";
99
+ dataType: "string";
100
+ columnType: "PgVarchar";
101
+ data: string;
102
+ driverParam: string;
103
+ notNull: false;
104
+ hasDefault: false;
105
+ isPrimaryKey: false;
106
+ isAutoincrement: false;
107
+ hasRuntimeDefault: false;
108
+ enumValues: [string, ...string[]];
109
+ baseColumn: never;
110
+ identity: undefined;
111
+ generated: undefined;
112
+ }, {}, {
113
+ length: 255;
114
+ }>;
115
+ organization_id: import("drizzle-orm/pg-core").PgColumn<{
116
+ name: "organization_id";
117
+ tableName: "auth_organization_invitations";
118
+ dataType: "string";
119
+ columnType: "PgVarchar";
120
+ data: string;
121
+ driverParam: string;
122
+ notNull: true;
123
+ hasDefault: false;
124
+ isPrimaryKey: false;
125
+ isAutoincrement: false;
126
+ hasRuntimeDefault: false;
127
+ enumValues: [string, ...string[]];
128
+ baseColumn: never;
129
+ identity: undefined;
130
+ generated: undefined;
131
+ }, {}, {
132
+ length: 255;
133
+ }>;
134
+ roles: import("drizzle-orm/pg-core").PgColumn<{
135
+ name: "roles";
136
+ tableName: "auth_organization_invitations";
137
+ dataType: "json";
138
+ columnType: "PgJsonb";
139
+ data: string[];
140
+ driverParam: unknown;
141
+ notNull: true;
142
+ hasDefault: true;
143
+ isPrimaryKey: false;
144
+ isAutoincrement: false;
145
+ hasRuntimeDefault: false;
146
+ enumValues: undefined;
147
+ baseColumn: never;
148
+ identity: undefined;
149
+ generated: undefined;
150
+ }, {}, {
151
+ $type: string[];
152
+ }>;
153
+ state: import("drizzle-orm/pg-core").PgColumn<{
154
+ name: "state";
155
+ tableName: "auth_organization_invitations";
156
+ dataType: "string";
157
+ columnType: "PgVarchar";
158
+ data: InvitationState;
159
+ driverParam: string;
160
+ notNull: true;
161
+ hasDefault: true;
162
+ isPrimaryKey: false;
163
+ isAutoincrement: false;
164
+ hasRuntimeDefault: false;
165
+ enumValues: [string, ...string[]];
166
+ baseColumn: never;
167
+ identity: undefined;
168
+ generated: undefined;
169
+ }, {}, {
170
+ length: 16;
171
+ $type: InvitationState;
172
+ }>;
173
+ token_hash: import("drizzle-orm/pg-core").PgColumn<{
174
+ name: "token_hash";
175
+ tableName: "auth_organization_invitations";
176
+ dataType: "string";
177
+ columnType: "PgVarchar";
178
+ data: string;
179
+ driverParam: string;
180
+ notNull: true;
181
+ hasDefault: false;
182
+ isPrimaryKey: false;
183
+ isAutoincrement: false;
184
+ hasRuntimeDefault: false;
185
+ enumValues: [string, ...string[]];
186
+ baseColumn: never;
187
+ identity: undefined;
188
+ generated: undefined;
189
+ }, {}, {
190
+ length: 255;
191
+ }>;
192
+ };
193
+ dialect: "pg";
194
+ }>;
195
+ export declare const organizationMembershipsTable: import("drizzle-orm/pg-core").PgTableWithColumns<{
196
+ name: "auth_organization_memberships";
197
+ schema: undefined;
198
+ columns: {
199
+ created_at_ms: import("drizzle-orm/pg-core").PgColumn<{
200
+ name: "created_at_ms";
201
+ tableName: "auth_organization_memberships";
202
+ dataType: "number";
203
+ columnType: "PgBigInt53";
204
+ data: number;
205
+ driverParam: string | number;
206
+ notNull: true;
207
+ hasDefault: false;
208
+ isPrimaryKey: false;
209
+ isAutoincrement: false;
210
+ hasRuntimeDefault: false;
211
+ enumValues: undefined;
212
+ baseColumn: never;
213
+ identity: undefined;
214
+ generated: undefined;
215
+ }, {}, {}>;
216
+ organization_id: import("drizzle-orm/pg-core").PgColumn<{
217
+ name: "organization_id";
218
+ tableName: "auth_organization_memberships";
219
+ dataType: "string";
220
+ columnType: "PgVarchar";
221
+ data: string;
222
+ driverParam: string;
223
+ notNull: true;
224
+ hasDefault: false;
225
+ isPrimaryKey: false;
226
+ isAutoincrement: false;
227
+ hasRuntimeDefault: false;
228
+ enumValues: [string, ...string[]];
229
+ baseColumn: never;
230
+ identity: undefined;
231
+ generated: undefined;
232
+ }, {}, {
233
+ length: 255;
234
+ }>;
235
+ roles: import("drizzle-orm/pg-core").PgColumn<{
236
+ name: "roles";
237
+ tableName: "auth_organization_memberships";
238
+ dataType: "json";
239
+ columnType: "PgJsonb";
240
+ data: string[];
241
+ driverParam: unknown;
242
+ notNull: true;
243
+ hasDefault: true;
244
+ isPrimaryKey: false;
245
+ isAutoincrement: false;
246
+ hasRuntimeDefault: false;
247
+ enumValues: undefined;
248
+ baseColumn: never;
249
+ identity: undefined;
250
+ generated: undefined;
251
+ }, {}, {
252
+ $type: string[];
253
+ }>;
254
+ status: import("drizzle-orm/pg-core").PgColumn<{
255
+ name: "status";
256
+ tableName: "auth_organization_memberships";
257
+ dataType: "string";
258
+ columnType: "PgVarchar";
259
+ data: MembershipStatus;
260
+ driverParam: string;
261
+ notNull: true;
262
+ hasDefault: true;
263
+ isPrimaryKey: false;
264
+ isAutoincrement: false;
265
+ hasRuntimeDefault: false;
266
+ enumValues: [string, ...string[]];
267
+ baseColumn: never;
268
+ identity: undefined;
269
+ generated: undefined;
270
+ }, {}, {
271
+ length: 16;
272
+ $type: MembershipStatus;
273
+ }>;
274
+ updated_at_ms: import("drizzle-orm/pg-core").PgColumn<{
275
+ name: "updated_at_ms";
276
+ tableName: "auth_organization_memberships";
277
+ dataType: "number";
278
+ columnType: "PgBigInt53";
279
+ data: number;
280
+ driverParam: string | number;
281
+ notNull: true;
282
+ hasDefault: false;
283
+ isPrimaryKey: false;
284
+ isAutoincrement: false;
285
+ hasRuntimeDefault: false;
286
+ enumValues: undefined;
287
+ baseColumn: never;
288
+ identity: undefined;
289
+ generated: undefined;
290
+ }, {}, {}>;
291
+ user_id: import("drizzle-orm/pg-core").PgColumn<{
292
+ name: "user_id";
293
+ tableName: "auth_organization_memberships";
294
+ dataType: "string";
295
+ columnType: "PgVarchar";
296
+ data: string;
297
+ driverParam: string;
298
+ notNull: true;
299
+ hasDefault: false;
300
+ isPrimaryKey: false;
301
+ isAutoincrement: false;
302
+ hasRuntimeDefault: false;
303
+ enumValues: [string, ...string[]];
304
+ baseColumn: never;
305
+ identity: undefined;
306
+ generated: undefined;
307
+ }, {}, {
308
+ length: 255;
309
+ }>;
310
+ };
311
+ dialect: "pg";
312
+ }>;
313
+ export declare const organizationsTable: import("drizzle-orm/pg-core").PgTableWithColumns<{
314
+ name: "auth_organizations";
315
+ schema: undefined;
316
+ columns: {
317
+ created_at_ms: import("drizzle-orm/pg-core").PgColumn<{
318
+ name: "created_at_ms";
319
+ tableName: "auth_organizations";
320
+ dataType: "number";
321
+ columnType: "PgBigInt53";
322
+ data: number;
323
+ driverParam: string | number;
324
+ notNull: true;
325
+ hasDefault: false;
326
+ isPrimaryKey: false;
327
+ isAutoincrement: false;
328
+ hasRuntimeDefault: false;
329
+ enumValues: undefined;
330
+ baseColumn: never;
331
+ identity: undefined;
332
+ generated: undefined;
333
+ }, {}, {}>;
334
+ metadata: import("drizzle-orm/pg-core").PgColumn<{
335
+ name: "metadata";
336
+ tableName: "auth_organizations";
337
+ dataType: "json";
338
+ columnType: "PgJsonb";
339
+ data: Record<string, unknown>;
340
+ driverParam: unknown;
341
+ notNull: false;
342
+ hasDefault: false;
343
+ isPrimaryKey: false;
344
+ isAutoincrement: false;
345
+ hasRuntimeDefault: false;
346
+ enumValues: undefined;
347
+ baseColumn: never;
348
+ identity: undefined;
349
+ generated: undefined;
350
+ }, {}, {
351
+ $type: Record<string, unknown>;
352
+ }>;
353
+ name: import("drizzle-orm/pg-core").PgColumn<{
354
+ name: "name";
355
+ tableName: "auth_organizations";
356
+ dataType: "string";
357
+ columnType: "PgVarchar";
358
+ data: string;
359
+ driverParam: string;
360
+ notNull: true;
361
+ hasDefault: false;
362
+ isPrimaryKey: false;
363
+ isAutoincrement: false;
364
+ hasRuntimeDefault: false;
365
+ enumValues: [string, ...string[]];
366
+ baseColumn: never;
367
+ identity: undefined;
368
+ generated: undefined;
369
+ }, {}, {
370
+ length: 255;
371
+ }>;
372
+ organization_id: import("drizzle-orm/pg-core").PgColumn<{
373
+ name: "organization_id";
374
+ tableName: "auth_organizations";
375
+ dataType: "string";
376
+ columnType: "PgVarchar";
377
+ data: string;
378
+ driverParam: string;
379
+ notNull: true;
380
+ hasDefault: false;
381
+ isPrimaryKey: true;
382
+ isAutoincrement: false;
383
+ hasRuntimeDefault: false;
384
+ enumValues: [string, ...string[]];
385
+ baseColumn: never;
386
+ identity: undefined;
387
+ generated: undefined;
388
+ }, {}, {
389
+ length: 255;
390
+ }>;
391
+ updated_at_ms: import("drizzle-orm/pg-core").PgColumn<{
392
+ name: "updated_at_ms";
393
+ tableName: "auth_organizations";
394
+ dataType: "number";
395
+ columnType: "PgBigInt53";
396
+ data: number;
397
+ driverParam: string | number;
398
+ notNull: true;
399
+ hasDefault: false;
400
+ isPrimaryKey: false;
401
+ isAutoincrement: false;
402
+ hasRuntimeDefault: false;
403
+ enumValues: undefined;
404
+ baseColumn: never;
405
+ identity: undefined;
406
+ generated: undefined;
407
+ }, {}, {}>;
408
+ };
409
+ dialect: "pg";
410
+ }>;
411
+ export declare const createNeonOrganizationStore: (databaseUrl: string) => OrganizationStore;
412
+ export declare const createPostgresOrganizationStore: (db: AnyPgDatabase) => OrganizationStore;