@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.
- package/dist/index.d.ts +167 -16
- package/dist/index.js +232 -33
- package/dist/module/index.d.ts +1 -0
- package/dist/module/index.js +55 -52
- package/dist/organization/routes/auth/invitations/accept/post.d.ts +4 -0
- package/dist/organization/routes/auth/invitations/accept/post.js +46 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/get.d.ts +4 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/get.js +14 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/invitations/[invitationId]/delete.d.ts +4 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/invitations/[invitationId]/delete.js +34 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/invitations/get.d.ts +4 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/invitations/get.js +22 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/invitations/post.d.ts +4 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/invitations/post.js +56 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/memberships/[membershipId]/delete.d.ts +4 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/memberships/[membershipId]/delete.js +30 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/memberships/[membershipId]/patch.d.ts +4 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/memberships/[membershipId]/patch.js +35 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/memberships/get.d.ts +4 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/memberships/get.js +14 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/ownership/post.d.ts +4 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/ownership/post.js +38 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/patch.d.ts +4 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/patch.js +36 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/traces/get.d.ts +4 -0
- package/dist/organization/routes/auth/organizations/[organizationId]/traces/get.js +26 -0
- package/dist/organization/routes/auth/organizations/get.d.ts +4 -0
- package/dist/organization/routes/auth/organizations/get.js +11 -0
- package/dist/organization/routes/auth/organizations/post.d.ts +4 -0
- package/dist/organization/routes/auth/organizations/post.js +40 -0
- package/dist/routes/auth/+middleware.d.ts +4 -0
- package/dist/routes/auth/+middleware.js +9 -0
- package/dist/routes/auth/sessions/delete.js +2 -3
- package/dist/routes/auth/sessions/get.js +3 -5
- package/dist/routes/auth/sessions/post.js +4 -6
- package/dist/storage/mysql.d.ts +272 -0
- package/dist/storage/mysql.js +184 -0
- package/dist/storage/postgresql.d.ts +272 -0
- package/dist/storage/postgresql.js +184 -0
- package/dist/storage/sqlite.d.ts +272 -0
- package/dist/storage/sqlite.js +184 -0
- 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 };
|