@revojs/auth 0.2.8 → 0.2.10

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 (42) hide show
  1. package/dist/index.d.ts +167 -16
  2. package/dist/index.js +232 -33
  3. package/dist/module/index.d.ts +1 -0
  4. package/dist/module/index.js +55 -52
  5. package/dist/organization/routes/auth/invitations/accept/post.d.ts +4 -0
  6. package/dist/organization/routes/auth/invitations/accept/post.js +46 -0
  7. package/dist/organization/routes/auth/organizations/[organizationId]/get.d.ts +4 -0
  8. package/dist/organization/routes/auth/organizations/[organizationId]/get.js +14 -0
  9. package/dist/organization/routes/auth/organizations/[organizationId]/invitations/[invitationId]/delete.d.ts +4 -0
  10. package/dist/organization/routes/auth/organizations/[organizationId]/invitations/[invitationId]/delete.js +34 -0
  11. package/dist/organization/routes/auth/organizations/[organizationId]/invitations/get.d.ts +4 -0
  12. package/dist/organization/routes/auth/organizations/[organizationId]/invitations/get.js +22 -0
  13. package/dist/organization/routes/auth/organizations/[organizationId]/invitations/post.d.ts +4 -0
  14. package/dist/organization/routes/auth/organizations/[organizationId]/invitations/post.js +56 -0
  15. package/dist/organization/routes/auth/organizations/[organizationId]/memberships/[membershipId]/delete.d.ts +4 -0
  16. package/dist/organization/routes/auth/organizations/[organizationId]/memberships/[membershipId]/delete.js +30 -0
  17. package/dist/organization/routes/auth/organizations/[organizationId]/memberships/[membershipId]/patch.d.ts +4 -0
  18. package/dist/organization/routes/auth/organizations/[organizationId]/memberships/[membershipId]/patch.js +35 -0
  19. package/dist/organization/routes/auth/organizations/[organizationId]/memberships/get.d.ts +4 -0
  20. package/dist/organization/routes/auth/organizations/[organizationId]/memberships/get.js +14 -0
  21. package/dist/organization/routes/auth/organizations/[organizationId]/ownership/post.d.ts +4 -0
  22. package/dist/organization/routes/auth/organizations/[organizationId]/ownership/post.js +38 -0
  23. package/dist/organization/routes/auth/organizations/[organizationId]/patch.d.ts +4 -0
  24. package/dist/organization/routes/auth/organizations/[organizationId]/patch.js +36 -0
  25. package/dist/organization/routes/auth/organizations/[organizationId]/traces/get.d.ts +4 -0
  26. package/dist/organization/routes/auth/organizations/[organizationId]/traces/get.js +26 -0
  27. package/dist/organization/routes/auth/organizations/get.d.ts +4 -0
  28. package/dist/organization/routes/auth/organizations/get.js +11 -0
  29. package/dist/organization/routes/auth/organizations/post.d.ts +4 -0
  30. package/dist/organization/routes/auth/organizations/post.js +40 -0
  31. package/dist/routes/auth/+middleware.d.ts +4 -0
  32. package/dist/routes/auth/+middleware.js +9 -0
  33. package/dist/routes/auth/sessions/delete.js +2 -3
  34. package/dist/routes/auth/sessions/get.js +3 -5
  35. package/dist/routes/auth/sessions/post.js +4 -6
  36. package/dist/storage/mysql.d.ts +272 -0
  37. package/dist/storage/mysql.js +184 -0
  38. package/dist/storage/postgresql.d.ts +272 -0
  39. package/dist/storage/postgresql.js +184 -0
  40. package/dist/storage/sqlite.d.ts +272 -0
  41. package/dist/storage/sqlite.js +184 -0
  42. package/package.json +15 -1
@@ -0,0 +1,272 @@
1
+ import { type Database, type InferInsertModel, type InferSelectModel } from "@revojs/storage";
2
+ import type { Scope } from "revojs";
3
+ import type { AccountStorage, InvitationStatus, MembershipStatus, OrganizationStorage, TraceAction } from "../index";
4
+ export type Account = InferSelectModel<typeof accounts>;
5
+ export type Identity = InferSelectModel<typeof identities>;
6
+ export type Session = InferSelectModel<typeof sessions>;
7
+ export type AccountInsert = InferInsertModel<typeof accounts>;
8
+ export type IdentityInsert = InferInsertModel<typeof identities>;
9
+ export type SessionInsert = InferInsertModel<typeof sessions>;
10
+ export type Organization = InferSelectModel<typeof organizations>;
11
+ export type Membership = InferSelectModel<typeof memberships>;
12
+ export type Invitation = InferSelectModel<typeof invitations>;
13
+ export type Trace = InferSelectModel<typeof traces>;
14
+ export type OrganizationInsert = InferInsertModel<typeof organizations>;
15
+ export type MembershipInsert = InferInsertModel<typeof memberships>;
16
+ export type InvitationInsert = InferInsertModel<typeof invitations>;
17
+ export type TraceInsert = InferInsertModel<typeof traces>;
18
+ export declare function useServerAuth(scope: Scope): {
19
+ getAccountByEmail: (email: string) => Promise<import("../index").Account | undefined>;
20
+ getAccountById: (id: string) => Promise<import("../index").Account | undefined>;
21
+ createAccount: (account: import("../index").Account) => Promise<import("../index").Account | undefined>;
22
+ deleteAccount: (id: string) => Promise<void>;
23
+ getIdentity: (provider: string, credential: string) => Promise<import("../index").Identity | undefined>;
24
+ createIdentity: (identity: import("../index").Identity) => Promise<import("../index").Identity | undefined>;
25
+ getSession: (id: string, accountId: string) => Promise<import("../index").Session | undefined>;
26
+ createSession: (session: import("../index").Session) => Promise<import("../index").Session | undefined>;
27
+ deleteSession: (id: string, accountId: string) => Promise<void>;
28
+ transaction: <T>(run: (storage: import("../index").AuthStorage) => Promise<T>) => Promise<T>;
29
+ getOrganization: (id: string) => Promise<import("../index").Organization | undefined>;
30
+ listOrganizations: (accountId: string) => Promise<Array<import("../index").Organization>>;
31
+ createOrganization: (organization: import("../index").Organization) => Promise<void>;
32
+ updateOrganization: (id: string, values: Pick<import("../index").Organization, "name" | "accountId">) => Promise<void>;
33
+ getMembership: (organizationId: string, accountId: string) => Promise<import("../index").Membership | undefined>;
34
+ getMembershipById: (organizationId: string, id: string) => Promise<import("../index").Membership | undefined>;
35
+ listMemberships: (organizationId: string) => Promise<Array<import("../index").Membership>>;
36
+ createMembership: (membership: import("../index").Membership) => Promise<void>;
37
+ updateMembership: (organizationId: string, id: string, status: MembershipStatus) => Promise<void>;
38
+ deleteMembership: (organizationId: string, id: string) => Promise<void>;
39
+ getInvitation: (organizationId: string, id: string) => Promise<import("../index").Invitation | undefined>;
40
+ getInvitationByHash: (hash: string) => Promise<import("../index").Invitation | undefined>;
41
+ listInvitations: (organizationId: string) => Promise<Array<import("../index").Invitation>>;
42
+ createInvitation: (invitation: import("../index").Invitation) => Promise<void>;
43
+ updateInvitation: (organizationId: string, id: string, status: InvitationStatus) => Promise<void>;
44
+ createTrace: (trace: import("../index").Trace) => Promise<void>;
45
+ listTraces: (organizationId: string, limit: number, before?: import("../index").TraceCursor) => Promise<Array<import("../index").Trace>>;
46
+ };
47
+ export declare function useAccountStorage(scope: Scope, database?: Database<{
48
+ accounts: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Accounts", {
49
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
50
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
51
+ password: import("@revojs/storage/protocols/postgresql").TextColumn;
52
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
53
+ }> & {
54
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
55
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
56
+ password: import("@revojs/storage/protocols/postgresql").TextColumn;
57
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
58
+ };
59
+ identities: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Identities", {
60
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
61
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", string>;
62
+ credential: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
63
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
64
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
65
+ }> & {
66
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
67
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", string>;
68
+ credential: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
69
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
70
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
71
+ };
72
+ sessions: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Sessions", {
73
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
74
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
75
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
76
+ }> & {
77
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
78
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
79
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
80
+ };
81
+ }>): AccountStorage;
82
+ export declare function useOrganizationStorage(scope: Scope, database?: Database<typeof accountSchema & typeof organizationSchema>): OrganizationStorage;
83
+ export declare const accounts: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Accounts", {
84
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
85
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
86
+ password: import("@revojs/storage/protocols/postgresql").TextColumn;
87
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
88
+ }> & {
89
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
90
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
91
+ password: import("@revojs/storage/protocols/postgresql").TextColumn;
92
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
93
+ };
94
+ export declare const identities: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Identities", {
95
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
96
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", string>;
97
+ credential: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
98
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
99
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
100
+ }> & {
101
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
102
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", string>;
103
+ credential: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
104
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
105
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
106
+ };
107
+ export declare const sessions: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Sessions", {
108
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
109
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
110
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
111
+ }> & {
112
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
113
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
114
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
115
+ };
116
+ export declare const organizations: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Organizations", {
117
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
118
+ name: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
119
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
120
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
121
+ }> & {
122
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
123
+ name: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
124
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
125
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
126
+ };
127
+ export declare const memberships: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Memberships", {
128
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
129
+ status: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", MembershipStatus>;
130
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
131
+ organizationId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
132
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
133
+ }> & {
134
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
135
+ status: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", MembershipStatus>;
136
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
137
+ organizationId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
138
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
139
+ };
140
+ export declare const invitations: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Invitations", {
141
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
142
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
143
+ tokenHash: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"unique", never>;
144
+ invitedBy: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never>;
145
+ status: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", InvitationStatus>;
146
+ expiresAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never>;
147
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
148
+ organizationId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
149
+ }> & {
150
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
151
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
152
+ tokenHash: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"unique", never>;
153
+ invitedBy: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never>;
154
+ status: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", InvitationStatus>;
155
+ expiresAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never>;
156
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
157
+ organizationId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
158
+ };
159
+ export declare const traces: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Traces", {
160
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
161
+ action: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"$type", TraceAction> & Record<"notNull", never>;
162
+ subjectId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
163
+ content: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
164
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
165
+ organizationId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
166
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never>;
167
+ }> & {
168
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
169
+ action: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"$type", TraceAction> & Record<"notNull", never>;
170
+ subjectId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
171
+ content: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
172
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
173
+ organizationId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
174
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never>;
175
+ };
176
+ export declare const accountSchema: {
177
+ accounts: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Accounts", {
178
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
179
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
180
+ password: import("@revojs/storage/protocols/postgresql").TextColumn;
181
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
182
+ }> & {
183
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
184
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
185
+ password: import("@revojs/storage/protocols/postgresql").TextColumn;
186
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
187
+ };
188
+ identities: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Identities", {
189
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
190
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", string>;
191
+ credential: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
192
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
193
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
194
+ }> & {
195
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
196
+ provider: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", string>;
197
+ credential: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
198
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
199
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
200
+ };
201
+ sessions: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Sessions", {
202
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
203
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
204
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
205
+ }> & {
206
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
207
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
208
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
209
+ };
210
+ };
211
+ export declare const organizationSchema: {
212
+ organizations: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Organizations", {
213
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
214
+ name: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
215
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
216
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
217
+ }> & {
218
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
219
+ name: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
220
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
221
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
222
+ };
223
+ memberships: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Memberships", {
224
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
225
+ status: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", MembershipStatus>;
226
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
227
+ organizationId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
228
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
229
+ }> & {
230
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
231
+ status: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", MembershipStatus>;
232
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
233
+ organizationId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
234
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
235
+ };
236
+ invitations: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Invitations", {
237
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
238
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
239
+ tokenHash: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"unique", never>;
240
+ invitedBy: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never>;
241
+ status: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", InvitationStatus>;
242
+ expiresAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never>;
243
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
244
+ organizationId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
245
+ }> & {
246
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
247
+ email: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
248
+ tokenHash: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"unique", never>;
249
+ invitedBy: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never>;
250
+ status: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never> & Record<"$type", InvitationStatus>;
251
+ expiresAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never>;
252
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
253
+ organizationId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
254
+ };
255
+ traces: import("@revojs/storage/protocols/postgresql").PostgresqlTable<"Traces", {
256
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
257
+ action: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"$type", TraceAction> & Record<"notNull", never>;
258
+ subjectId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
259
+ content: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
260
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
261
+ organizationId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
262
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never>;
263
+ }> & {
264
+ id: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"primaryKey", never> & Record<"default", never>;
265
+ action: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"$type", TraceAction> & Record<"notNull", never>;
266
+ subjectId: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
267
+ content: import("@revojs/storage/protocols/postgresql").TextColumn & Record<"notNull", never>;
268
+ createdAt: import("@revojs/storage/protocols/postgresql").TimestampColumn & Record<"notNull", never> & Record<"default", never>;
269
+ organizationId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never> & Record<"references", never>;
270
+ accountId: import("@revojs/storage/protocols/postgresql").UuidColumn & Record<"notNull", never>;
271
+ };
272
+ };
@@ -0,0 +1,184 @@
1
+ import config from "#config/auth";
2
+ import { and, desc, equals, exists, lower, or, toParameter, useReferenceStorage } from "@revojs/storage";
3
+ import { index, table, text, timestamp, unique, uuid } from "@revojs/storage/protocols/postgresql";
4
+ //#region src/storage/postgresql.ts
5
+ function useServerAuth(scope) {
6
+ return {
7
+ ...useAccountStorage(scope),
8
+ ...useOrganizationStorage(scope)
9
+ };
10
+ }
11
+ function useAccountStorage(scope, database = useReferenceStorage(scope, accountSchema)) {
12
+ const schema = database.$schema;
13
+ return {
14
+ async getAccountByEmail(email) {
15
+ return database.select(schema.accounts).from(schema.accounts).where(equals(schema.accounts.email, email)).first();
16
+ },
17
+ async getAccountById(id) {
18
+ return database.select(schema.accounts).from(schema.accounts).where(equals(schema.accounts.id, id)).first();
19
+ },
20
+ async createAccount(account) {
21
+ const [created] = await database.insert(schema.accounts).values(account).returning();
22
+ return created;
23
+ },
24
+ async deleteAccount(id) {
25
+ await database.delete(schema.accounts).where(equals(schema.accounts.id, id)).run();
26
+ },
27
+ async getIdentity(provider, credential) {
28
+ return database.select(schema.identities).from(schema.identities).where(and(equals(schema.identities.provider, provider), equals(schema.identities.credential, credential))).first();
29
+ },
30
+ async createIdentity(identity) {
31
+ const [created] = await database.insert(schema.identities).values(identity).returning();
32
+ return created;
33
+ },
34
+ async getSession(id, accountId) {
35
+ return database.select(schema.sessions).from(schema.sessions).where(and(equals(schema.sessions.id, id), equals(schema.sessions.accountId, accountId))).first();
36
+ },
37
+ async createSession(session) {
38
+ const [created] = await database.insert(schema.sessions).values(session).returning();
39
+ return created;
40
+ },
41
+ async deleteSession(id, accountId) {
42
+ await database.delete(schema.sessions).where(and(equals(schema.sessions.id, id), equals(schema.sessions.accountId, accountId))).run();
43
+ }
44
+ };
45
+ }
46
+ function useOrganizationStorage(scope, database) {
47
+ if (!config.organizations) throw new Error("Organizations is disabled. Set auth.organizations to true to use Organizations storage.");
48
+ database ??= useReferenceStorage(scope, {
49
+ ...accountSchema,
50
+ ...organizationSchema
51
+ });
52
+ const schema = database.$schema;
53
+ return {
54
+ async transaction(run) {
55
+ return database.transaction((transaction) => {
56
+ return run({
57
+ ...useAccountStorage(scope, transaction),
58
+ ...useOrganizationStorage(scope, transaction)
59
+ });
60
+ });
61
+ },
62
+ async getOrganization(id) {
63
+ return database.select(schema.organizations).from(schema.organizations).where(equals(schema.organizations.id, id)).first();
64
+ },
65
+ async listOrganizations(accountId) {
66
+ const membership = database.select({ id: schema.memberships.id }).from(schema.memberships).where(and(equals(schema.memberships.organizationId, schema.organizations.id), equals(schema.memberships.accountId, accountId), equals(schema.memberships.status, "active")));
67
+ return database.select(schema.organizations).from(schema.organizations).where(exists(membership));
68
+ },
69
+ async createOrganization(value) {
70
+ await database.insert(schema.organizations).values(value).run();
71
+ },
72
+ async updateOrganization(id, values) {
73
+ await database.update(schema.organizations).set(values).where(equals(schema.organizations.id, id)).run();
74
+ },
75
+ async getMembership(organizationId, accountId) {
76
+ return database.select(schema.memberships).from(schema.memberships).where(and(equals(schema.memberships.organizationId, organizationId), equals(schema.memberships.accountId, accountId))).first();
77
+ },
78
+ async getMembershipById(organizationId, id) {
79
+ return database.select(schema.memberships).from(schema.memberships).where(and(equals(schema.memberships.organizationId, organizationId), equals(schema.memberships.id, id))).first();
80
+ },
81
+ async listMemberships(organizationId) {
82
+ return database.select(schema.memberships).from(schema.memberships).where(equals(schema.memberships.organizationId, organizationId));
83
+ },
84
+ async createMembership(value) {
85
+ await database.insert(schema.memberships).values(value).run();
86
+ },
87
+ async updateMembership(organizationId, id, status) {
88
+ await database.update(schema.memberships).set({ status }).where(and(equals(schema.memberships.organizationId, organizationId), equals(schema.memberships.id, id))).run();
89
+ },
90
+ async deleteMembership(organizationId, id) {
91
+ await database.delete(schema.memberships).where(and(equals(schema.memberships.organizationId, organizationId), equals(schema.memberships.id, id))).run();
92
+ },
93
+ async getInvitation(organizationId, id) {
94
+ return database.select(schema.invitations).from(schema.invitations).where(and(equals(schema.invitations.organizationId, organizationId), equals(schema.invitations.id, id))).first();
95
+ },
96
+ async getInvitationByHash(hash) {
97
+ return database.select(schema.invitations).from(schema.invitations).where(equals(schema.invitations.tokenHash, hash)).first();
98
+ },
99
+ async listInvitations(organizationId) {
100
+ return database.select(schema.invitations).from(schema.invitations).where(equals(schema.invitations.organizationId, organizationId));
101
+ },
102
+ async createInvitation(value) {
103
+ await database.insert(schema.invitations).values(value).run();
104
+ },
105
+ async updateInvitation(organizationId, id, status) {
106
+ await database.update(schema.invitations).set({ status }).where(and(equals(schema.invitations.organizationId, organizationId), equals(schema.invitations.id, id))).run();
107
+ },
108
+ async createTrace(value) {
109
+ await database.insert(schema.traces).values(value).run();
110
+ },
111
+ async listTraces(organizationId, limit, before) {
112
+ let condition = equals(schema.traces.organizationId, organizationId);
113
+ if (before) {
114
+ const timestamp = toParameter(schema.traces.createdAt, before.createdAt);
115
+ const sameTime = and(equals(schema.traces.createdAt, timestamp), lower(schema.traces.id, before.id));
116
+ condition = and(condition, or(lower(schema.traces.createdAt, timestamp), sameTime));
117
+ }
118
+ return database.select(schema.traces).from(schema.traces).where(condition).orderBy(desc(schema.traces.createdAt), desc(schema.traces.id)).limit(limit);
119
+ }
120
+ };
121
+ }
122
+ var accounts = table("Accounts", {
123
+ id: uuid("Id").primaryKey().default(() => crypto.randomUUID()),
124
+ email: text("Email").notNull(),
125
+ password: text("Password"),
126
+ createdAt: timestamp("CreatedAt").notNull().default(() => /* @__PURE__ */ new Date())
127
+ });
128
+ var identities = table("Identities", {
129
+ id: uuid("Id").primaryKey().default(() => crypto.randomUUID()),
130
+ provider: text("Provider").notNull().type(),
131
+ credential: text("Credential").notNull(),
132
+ createdAt: timestamp("CreatedAt").notNull().default(() => /* @__PURE__ */ new Date()),
133
+ accountId: uuid("AccountId").notNull().references(() => accounts.id, { onDelete: "cascade" })
134
+ });
135
+ var sessions = table("Sessions", {
136
+ id: uuid("Id").primaryKey().default(() => crypto.randomUUID()),
137
+ createdAt: timestamp("CreatedAt").notNull().default(() => /* @__PURE__ */ new Date()),
138
+ accountId: uuid("AccountId").notNull().references(() => accounts.id, { onDelete: "cascade" })
139
+ });
140
+ var organizations = table("Organizations", {
141
+ id: uuid("Id").primaryKey().default(() => crypto.randomUUID()),
142
+ name: text("Name").notNull(),
143
+ accountId: uuid("AccountId").notNull().references(() => accounts.id, { onDelete: "restrict" }),
144
+ createdAt: timestamp("CreatedAt").notNull().default(() => /* @__PURE__ */ new Date())
145
+ });
146
+ var memberships = table("Memberships", {
147
+ id: uuid("Id").primaryKey().default(() => crypto.randomUUID()),
148
+ status: text("Status").notNull().type(),
149
+ createdAt: timestamp("CreatedAt").notNull().default(() => /* @__PURE__ */ new Date()),
150
+ organizationId: uuid("OrganizationId").notNull().references(() => organizations.id, { onDelete: "cascade" }),
151
+ accountId: uuid("AccountId").notNull().references(() => accounts.id, { onDelete: "cascade" })
152
+ }, (columns) => [unique(columns.organizationId, columns.accountId), index(columns.accountId)]);
153
+ var invitations = table("Invitations", {
154
+ id: uuid("Id").primaryKey().default(() => crypto.randomUUID()),
155
+ email: text("Email").notNull(),
156
+ tokenHash: text("TokenHash").notNull().unique(),
157
+ invitedBy: uuid("InvitedBy").notNull(),
158
+ status: text("Status").notNull().type(),
159
+ expiresAt: timestamp("ExpiresAt").notNull(),
160
+ createdAt: timestamp("CreatedAt").notNull().default(() => /* @__PURE__ */ new Date()),
161
+ organizationId: uuid("OrganizationId").notNull().references(() => organizations.id, { onDelete: "cascade" })
162
+ }, (columns) => [index(columns.organizationId)]);
163
+ var traces = table("Traces", {
164
+ id: uuid("Id").primaryKey().default(() => crypto.randomUUID()),
165
+ action: text("Action").type().notNull(),
166
+ subjectId: text("SubjectId").notNull(),
167
+ content: text("Content").notNull(),
168
+ createdAt: timestamp("CreatedAt").notNull().default(() => /* @__PURE__ */ new Date()),
169
+ organizationId: uuid("OrganizationId").notNull().references(() => organizations.id, { onDelete: "restrict" }),
170
+ accountId: uuid("AccountId").notNull()
171
+ }, (columns) => [index(columns.organizationId, columns.createdAt, columns.id)]);
172
+ var accountSchema = {
173
+ accounts,
174
+ identities,
175
+ sessions
176
+ };
177
+ var organizationSchema = {
178
+ organizations,
179
+ memberships,
180
+ invitations,
181
+ traces
182
+ };
183
+ //#endregion
184
+ export { accountSchema, accounts, identities, invitations, memberships, organizationSchema, organizations, sessions, traces, useAccountStorage, useOrganizationStorage, useServerAuth };