own-auth 0.1.0 → 0.1.1
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/postgres/hosted-projects.d.ts +88 -0
- package/dist/postgres/hosted-projects.d.ts.map +1 -0
- package/dist/postgres/hosted-projects.js +454 -0
- package/dist/postgres/hosted-projects.js.map +1 -0
- package/dist/postgres/index.d.ts +20 -0
- package/dist/postgres/index.d.ts.map +1 -0
- package/dist/postgres/index.js +18 -0
- package/dist/postgres/index.js.map +1 -0
- package/dist/postgres/postgres-storage.d.ts +55 -0
- package/dist/postgres/postgres-storage.d.ts.map +1 -0
- package/dist/postgres/postgres-storage.js +648 -0
- package/dist/postgres/postgres-storage.js.map +1 -0
- package/migrations/001_initial.sql +227 -0
- package/migrations/002_hosted_projects.sql +38 -0
- package/package.json +14 -3
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { type JsonRecord, type OwnAuth, type OwnAuthOptions } from "../index.js";
|
|
2
|
+
import { type PostgresQueryable, type PostgresQueryResult } from "./postgres-storage.js";
|
|
3
|
+
export type HostedProjectKeyStatus = "active" | "revoked";
|
|
4
|
+
export interface HostedProject {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
slug: string;
|
|
8
|
+
ownerUserId: string;
|
|
9
|
+
schemaName: string;
|
|
10
|
+
metadata: JsonRecord;
|
|
11
|
+
createdAt: Date;
|
|
12
|
+
updatedAt: Date;
|
|
13
|
+
disabledAt: Date | null;
|
|
14
|
+
}
|
|
15
|
+
export interface HostedProjectKey {
|
|
16
|
+
id: string;
|
|
17
|
+
projectId: string;
|
|
18
|
+
keyPrefix: string;
|
|
19
|
+
keyHash: string;
|
|
20
|
+
name: string;
|
|
21
|
+
scopes: string[];
|
|
22
|
+
status: HostedProjectKeyStatus;
|
|
23
|
+
expiresAt: Date | null;
|
|
24
|
+
lastUsedAt: Date | null;
|
|
25
|
+
createdAt: Date;
|
|
26
|
+
revokedAt: Date | null;
|
|
27
|
+
revokedBy: string | null;
|
|
28
|
+
metadata: JsonRecord;
|
|
29
|
+
}
|
|
30
|
+
export interface CreatedHostedProjectKey {
|
|
31
|
+
key: HostedProjectKey;
|
|
32
|
+
rawKey: string;
|
|
33
|
+
}
|
|
34
|
+
export interface VerifiedHostedProjectKey {
|
|
35
|
+
project: HostedProject;
|
|
36
|
+
key: HostedProjectKey;
|
|
37
|
+
}
|
|
38
|
+
export interface CreateHostedProjectInput {
|
|
39
|
+
name: string;
|
|
40
|
+
slug?: string;
|
|
41
|
+
ownerUserId: string;
|
|
42
|
+
metadata?: JsonRecord;
|
|
43
|
+
}
|
|
44
|
+
export interface CreateHostedProjectKeyInput {
|
|
45
|
+
projectId: string;
|
|
46
|
+
ownerUserId: string;
|
|
47
|
+
name: string;
|
|
48
|
+
scopes?: string[];
|
|
49
|
+
expiresAt?: Date;
|
|
50
|
+
metadata?: JsonRecord;
|
|
51
|
+
}
|
|
52
|
+
export interface PostgresClientLike extends PostgresQueryable {
|
|
53
|
+
release?: () => void;
|
|
54
|
+
}
|
|
55
|
+
export interface PostgresConnectable extends PostgresQueryable {
|
|
56
|
+
connect(): Promise<PostgresClientLike>;
|
|
57
|
+
}
|
|
58
|
+
export interface PostgresHostedProjectServiceOptions {
|
|
59
|
+
db: PostgresQueryable | PostgresConnectable;
|
|
60
|
+
keyPepper?: string;
|
|
61
|
+
authOptions?: Omit<OwnAuthOptions, "storage">;
|
|
62
|
+
authMigrationSql?: string;
|
|
63
|
+
}
|
|
64
|
+
export declare class PostgresHostedProjectService {
|
|
65
|
+
private readonly db;
|
|
66
|
+
private readonly keyPepper;
|
|
67
|
+
private readonly authOptions;
|
|
68
|
+
private readonly authMigrationSql;
|
|
69
|
+
private readonly authCache;
|
|
70
|
+
constructor(options: PostgresHostedProjectServiceOptions);
|
|
71
|
+
createProject(input: CreateHostedProjectInput): Promise<HostedProject>;
|
|
72
|
+
listProjects(ownerUserId: string): Promise<HostedProject[]>;
|
|
73
|
+
getProjectById(projectId: string): Promise<HostedProject | null>;
|
|
74
|
+
createProjectKey(input: CreateHostedProjectKeyInput): Promise<CreatedHostedProjectKey>;
|
|
75
|
+
verifyProjectKey(projectId: string, rawKey: string, requiredScopes?: string[]): Promise<VerifiedHostedProjectKey>;
|
|
76
|
+
createProjectAuth(projectOrId: HostedProject | string): Promise<OwnAuth>;
|
|
77
|
+
private requireOwnedProject;
|
|
78
|
+
private uniqueProjectSlug;
|
|
79
|
+
private projectSlugExists;
|
|
80
|
+
}
|
|
81
|
+
export declare class SchemaScopedPostgresQueryable implements PostgresQueryable {
|
|
82
|
+
private readonly db;
|
|
83
|
+
private readonly schemaName;
|
|
84
|
+
constructor(db: PostgresQueryable | PostgresConnectable, schemaName: string);
|
|
85
|
+
query<Row = Record<string, unknown>>(sql: string, params?: readonly unknown[]): Promise<PostgresQueryResult<Row>>;
|
|
86
|
+
}
|
|
87
|
+
export declare function createPostgresHostedProjectService(options: PostgresHostedProjectServiceOptions): PostgresHostedProjectService;
|
|
88
|
+
//# sourceMappingURL=hosted-projects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-projects.d.ts","sourceRoot":"","sources":["../../src/postgres/hosted-projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { createHash, createHmac, randomBytes, timingSafeEqual } from "node:crypto";
|
|
3
|
+
import { AuthError, ConsoleEmailProvider, ConsoleSmsProvider, createOwnAuth } from "../index.js";
|
|
4
|
+
import { PostgresAuthStorage } from "./postgres-storage.js";
|
|
5
|
+
const initialMigrationSql = readFileSync(new URL("../../migrations/001_initial.sql", import.meta.url), "utf8");
|
|
6
|
+
const defaultHostedProjectScopes = ["auth:read", "auth:write"];
|
|
7
|
+
export class PostgresHostedProjectService {
|
|
8
|
+
db;
|
|
9
|
+
keyPepper;
|
|
10
|
+
authOptions;
|
|
11
|
+
authMigrationSql;
|
|
12
|
+
authCache = new Map();
|
|
13
|
+
constructor(options) {
|
|
14
|
+
this.db = options.db;
|
|
15
|
+
this.keyPepper = options.keyPepper ?? "";
|
|
16
|
+
this.authOptions = {
|
|
17
|
+
emailProvider: new ConsoleEmailProvider(),
|
|
18
|
+
smsProvider: new ConsoleSmsProvider(),
|
|
19
|
+
...options.authOptions
|
|
20
|
+
};
|
|
21
|
+
this.authMigrationSql = options.authMigrationSql ?? initialMigrationSql;
|
|
22
|
+
}
|
|
23
|
+
async createProject(input) {
|
|
24
|
+
const owner = await this.db.query("select id from public.own_auth_users where id = $1", [input.ownerUserId]);
|
|
25
|
+
if (!owner.rows[0]) {
|
|
26
|
+
throw new AuthError("user_not_found", "Owner user not found", 404);
|
|
27
|
+
}
|
|
28
|
+
const slug = await this.uniqueProjectSlug(slugify(input.slug ?? input.name));
|
|
29
|
+
const schemaName = `own_auth_project_${randomBytes(12).toString("hex")}`;
|
|
30
|
+
const now = new Date();
|
|
31
|
+
let project = null;
|
|
32
|
+
await withTransaction(this.db, async (client) => {
|
|
33
|
+
await client.query(`create schema ${quoteIdentifier(schemaName)}`);
|
|
34
|
+
await client.query(`set local search_path to ${quoteIdentifier(schemaName)}, public`);
|
|
35
|
+
await client.query(this.authMigrationSql);
|
|
36
|
+
const result = await client.query(`insert into public.own_auth_hosted_projects (
|
|
37
|
+
id,
|
|
38
|
+
name,
|
|
39
|
+
slug,
|
|
40
|
+
owner_user_id,
|
|
41
|
+
schema_name,
|
|
42
|
+
metadata,
|
|
43
|
+
created_at,
|
|
44
|
+
updated_at,
|
|
45
|
+
disabled_at
|
|
46
|
+
) values ($1, $2, $3, $4, $5, $6, $7, $8, $9)
|
|
47
|
+
returning ${projectReturning}`, [
|
|
48
|
+
createId("hpr"),
|
|
49
|
+
input.name,
|
|
50
|
+
slug,
|
|
51
|
+
input.ownerUserId,
|
|
52
|
+
schemaName,
|
|
53
|
+
JSON.stringify(input.metadata ?? {}),
|
|
54
|
+
now,
|
|
55
|
+
now,
|
|
56
|
+
null
|
|
57
|
+
]);
|
|
58
|
+
project = mapProject(expectOne(result.rows));
|
|
59
|
+
});
|
|
60
|
+
if (!project) {
|
|
61
|
+
throw new Error("Hosted project creation returned no project");
|
|
62
|
+
}
|
|
63
|
+
return project;
|
|
64
|
+
}
|
|
65
|
+
async listProjects(ownerUserId) {
|
|
66
|
+
const result = await this.db.query(`select ${projectReturning}
|
|
67
|
+
from public.own_auth_hosted_projects
|
|
68
|
+
where owner_user_id = $1
|
|
69
|
+
order by created_at desc`, [ownerUserId]);
|
|
70
|
+
return result.rows.map(mapProject);
|
|
71
|
+
}
|
|
72
|
+
async getProjectById(projectId) {
|
|
73
|
+
const result = await this.db.query(`select ${projectReturning}
|
|
74
|
+
from public.own_auth_hosted_projects
|
|
75
|
+
where id = $1`, [projectId]);
|
|
76
|
+
return result.rows[0] ? mapProject(result.rows[0]) : null;
|
|
77
|
+
}
|
|
78
|
+
async createProjectKey(input) {
|
|
79
|
+
const project = await this.requireOwnedProject(input.projectId, input.ownerUserId);
|
|
80
|
+
const prefix = randomBytes(6).toString("hex");
|
|
81
|
+
const rawKey = `oh_${prefix}_${randomBytes(32).toString("base64url")}`;
|
|
82
|
+
const now = new Date();
|
|
83
|
+
const scopes = input.scopes && input.scopes.length > 0 ? input.scopes : defaultHostedProjectScopes;
|
|
84
|
+
const result = await this.db.query(`insert into public.own_auth_hosted_project_keys (
|
|
85
|
+
id,
|
|
86
|
+
project_id,
|
|
87
|
+
key_prefix,
|
|
88
|
+
key_hash,
|
|
89
|
+
name,
|
|
90
|
+
scopes,
|
|
91
|
+
status,
|
|
92
|
+
expires_at,
|
|
93
|
+
last_used_at,
|
|
94
|
+
created_at,
|
|
95
|
+
revoked_at,
|
|
96
|
+
revoked_by,
|
|
97
|
+
metadata
|
|
98
|
+
) values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)
|
|
99
|
+
returning ${projectKeyReturning}`, [
|
|
100
|
+
createId("hpk"),
|
|
101
|
+
project.id,
|
|
102
|
+
prefix,
|
|
103
|
+
hashSecret(rawKey, this.keyPepper),
|
|
104
|
+
input.name,
|
|
105
|
+
scopes,
|
|
106
|
+
"active",
|
|
107
|
+
input.expiresAt ?? null,
|
|
108
|
+
null,
|
|
109
|
+
now,
|
|
110
|
+
null,
|
|
111
|
+
null,
|
|
112
|
+
JSON.stringify(input.metadata ?? {})
|
|
113
|
+
]);
|
|
114
|
+
return {
|
|
115
|
+
key: mapProjectKey(expectOne(result.rows)),
|
|
116
|
+
rawKey
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
async verifyProjectKey(projectId, rawKey, requiredScopes = []) {
|
|
120
|
+
const prefix = extractProjectKeyPrefix(rawKey);
|
|
121
|
+
if (!prefix) {
|
|
122
|
+
throw new AuthError("api_key_invalid", "Invalid project API key", 401);
|
|
123
|
+
}
|
|
124
|
+
const result = await this.db.query(`select
|
|
125
|
+
${prefixedProjectReturning("p")},
|
|
126
|
+
${prefixedProjectKeyReturning("k")}
|
|
127
|
+
from public.own_auth_hosted_project_keys k
|
|
128
|
+
join public.own_auth_hosted_projects p on p.id = k.project_id
|
|
129
|
+
where k.project_id = $1 and k.key_prefix = $2`, [projectId, prefix]);
|
|
130
|
+
const row = result.rows[0];
|
|
131
|
+
if (!row) {
|
|
132
|
+
throw new AuthError("api_key_invalid", "Invalid project API key", 401);
|
|
133
|
+
}
|
|
134
|
+
const project = mapPrefixedProject(row);
|
|
135
|
+
const key = mapPrefixedProjectKey(row);
|
|
136
|
+
if (!safeEqual(hashSecret(rawKey, this.keyPepper), key.keyHash)) {
|
|
137
|
+
throw new AuthError("api_key_invalid", "Invalid project API key", 401);
|
|
138
|
+
}
|
|
139
|
+
if (project.disabledAt) {
|
|
140
|
+
throw new AuthError("project_disabled", "Hosted project is disabled", 403);
|
|
141
|
+
}
|
|
142
|
+
if (key.status === "revoked" || key.revokedAt) {
|
|
143
|
+
throw new AuthError("api_key_revoked", "Project API key has been revoked", 401);
|
|
144
|
+
}
|
|
145
|
+
if (key.expiresAt && key.expiresAt.getTime() <= Date.now()) {
|
|
146
|
+
throw new AuthError("api_key_expired", "Project API key has expired", 401);
|
|
147
|
+
}
|
|
148
|
+
const hasAllScopes = requiredScopes.every((scope) => key.scopes.includes("*") || key.scopes.includes(scope));
|
|
149
|
+
if (!hasAllScopes) {
|
|
150
|
+
throw new AuthError("insufficient_scope", "Project API key does not have the required scope", 403);
|
|
151
|
+
}
|
|
152
|
+
const updated = await this.db.query(`update public.own_auth_hosted_project_keys
|
|
153
|
+
set last_used_at = $1
|
|
154
|
+
where id = $2
|
|
155
|
+
returning ${projectKeyReturning}`, [new Date(), key.id]);
|
|
156
|
+
return {
|
|
157
|
+
project,
|
|
158
|
+
key: updated.rows[0] ? mapProjectKey(updated.rows[0]) : key
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
async createProjectAuth(projectOrId) {
|
|
162
|
+
const project = typeof projectOrId === "string" ? await this.getProjectById(projectOrId) : projectOrId;
|
|
163
|
+
if (!project) {
|
|
164
|
+
throw new AuthError("project_not_found", "Hosted project not found", 404);
|
|
165
|
+
}
|
|
166
|
+
if (project.disabledAt) {
|
|
167
|
+
throw new AuthError("project_disabled", "Hosted project is disabled", 403);
|
|
168
|
+
}
|
|
169
|
+
const cached = this.authCache.get(project.id);
|
|
170
|
+
if (cached) {
|
|
171
|
+
return cached;
|
|
172
|
+
}
|
|
173
|
+
const auth = createOwnAuth({
|
|
174
|
+
...this.authOptions,
|
|
175
|
+
storage: new PostgresAuthStorage(new SchemaScopedPostgresQueryable(this.db, project.schemaName))
|
|
176
|
+
});
|
|
177
|
+
this.authCache.set(project.id, auth);
|
|
178
|
+
return auth;
|
|
179
|
+
}
|
|
180
|
+
async requireOwnedProject(projectId, ownerUserId) {
|
|
181
|
+
const result = await this.db.query(`select ${projectReturning}
|
|
182
|
+
from public.own_auth_hosted_projects
|
|
183
|
+
where id = $1 and owner_user_id = $2`, [projectId, ownerUserId]);
|
|
184
|
+
const project = result.rows[0] ? mapProject(result.rows[0]) : null;
|
|
185
|
+
if (!project) {
|
|
186
|
+
throw new AuthError("project_not_found", "Hosted project not found", 404);
|
|
187
|
+
}
|
|
188
|
+
if (project.disabledAt) {
|
|
189
|
+
throw new AuthError("project_disabled", "Hosted project is disabled", 403);
|
|
190
|
+
}
|
|
191
|
+
return project;
|
|
192
|
+
}
|
|
193
|
+
async uniqueProjectSlug(baseSlug) {
|
|
194
|
+
const fallback = baseSlug || "project";
|
|
195
|
+
let slug = fallback;
|
|
196
|
+
let suffix = 2;
|
|
197
|
+
while (await this.projectSlugExists(slug)) {
|
|
198
|
+
slug = `${fallback}-${suffix}`;
|
|
199
|
+
suffix += 1;
|
|
200
|
+
}
|
|
201
|
+
return slug;
|
|
202
|
+
}
|
|
203
|
+
async projectSlugExists(slug) {
|
|
204
|
+
const result = await this.db.query("select id from public.own_auth_hosted_projects where slug = $1", [slug]);
|
|
205
|
+
return Boolean(result.rows[0]);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
export class SchemaScopedPostgresQueryable {
|
|
209
|
+
db;
|
|
210
|
+
schemaName;
|
|
211
|
+
constructor(db, schemaName) {
|
|
212
|
+
this.db = db;
|
|
213
|
+
this.schemaName = schemaName;
|
|
214
|
+
quoteIdentifier(schemaName);
|
|
215
|
+
}
|
|
216
|
+
async query(sql, params = []) {
|
|
217
|
+
return withTransaction(this.db, async (client) => {
|
|
218
|
+
await client.query(`set local search_path to ${quoteIdentifier(this.schemaName)}, public`);
|
|
219
|
+
return client.query(sql, params);
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
export function createPostgresHostedProjectService(options) {
|
|
224
|
+
return new PostgresHostedProjectService(options);
|
|
225
|
+
}
|
|
226
|
+
async function withTransaction(db, callback) {
|
|
227
|
+
const connectable = isConnectable(db);
|
|
228
|
+
const client = connectable ? await db.connect() : db;
|
|
229
|
+
try {
|
|
230
|
+
await client.query("begin");
|
|
231
|
+
const result = await callback(client);
|
|
232
|
+
await client.query("commit");
|
|
233
|
+
return result;
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
await client.query("rollback").catch(() => undefined);
|
|
237
|
+
throw error;
|
|
238
|
+
}
|
|
239
|
+
finally {
|
|
240
|
+
if (connectable) {
|
|
241
|
+
client.release?.();
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
function isConnectable(db) {
|
|
246
|
+
return "connect" in db && typeof db.connect === "function";
|
|
247
|
+
}
|
|
248
|
+
function quoteIdentifier(identifier) {
|
|
249
|
+
if (!/^[a-z_][a-z0-9_]*$/.test(identifier)) {
|
|
250
|
+
throw new Error("Invalid Postgres identifier");
|
|
251
|
+
}
|
|
252
|
+
return `"${identifier}"`;
|
|
253
|
+
}
|
|
254
|
+
function createId(prefix) {
|
|
255
|
+
return `${prefix}_${randomBytes(16).toString("base64url")}`;
|
|
256
|
+
}
|
|
257
|
+
function hashSecret(secret, pepper) {
|
|
258
|
+
if (pepper && pepper.length > 0) {
|
|
259
|
+
return createHmac("sha256", pepper).update(secret).digest("hex");
|
|
260
|
+
}
|
|
261
|
+
return createHash("sha256").update(secret).digest("hex");
|
|
262
|
+
}
|
|
263
|
+
function safeEqual(a, b) {
|
|
264
|
+
const left = Buffer.from(a);
|
|
265
|
+
const right = Buffer.from(b);
|
|
266
|
+
if (left.length !== right.length) {
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
return timingSafeEqual(left, right);
|
|
270
|
+
}
|
|
271
|
+
function extractProjectKeyPrefix(rawKey) {
|
|
272
|
+
const match = /^oh_([a-f0-9]{12})_[A-Za-z0-9_-]+$/.exec(rawKey);
|
|
273
|
+
return match?.[1] ?? null;
|
|
274
|
+
}
|
|
275
|
+
function slugify(value) {
|
|
276
|
+
return value
|
|
277
|
+
.trim()
|
|
278
|
+
.toLowerCase()
|
|
279
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
280
|
+
.replace(/^-+|-+$/g, "")
|
|
281
|
+
.slice(0, 80);
|
|
282
|
+
}
|
|
283
|
+
function expectOne(rows) {
|
|
284
|
+
const row = rows[0];
|
|
285
|
+
if (!row) {
|
|
286
|
+
throw new Error("Postgres query returned no rows");
|
|
287
|
+
}
|
|
288
|
+
return row;
|
|
289
|
+
}
|
|
290
|
+
function mapProject(row) {
|
|
291
|
+
return {
|
|
292
|
+
id: stringValue(row.id),
|
|
293
|
+
name: stringValue(row.name),
|
|
294
|
+
slug: stringValue(row.slug),
|
|
295
|
+
ownerUserId: stringValue(row.owner_user_id),
|
|
296
|
+
schemaName: stringValue(row.schema_name),
|
|
297
|
+
metadata: jsonRecord(row.metadata),
|
|
298
|
+
createdAt: dateValue(row.created_at),
|
|
299
|
+
updatedAt: dateValue(row.updated_at),
|
|
300
|
+
disabledAt: nullableDate(row.disabled_at)
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
function mapProjectKey(row) {
|
|
304
|
+
return {
|
|
305
|
+
id: stringValue(row.id),
|
|
306
|
+
projectId: stringValue(row.project_id),
|
|
307
|
+
keyPrefix: stringValue(row.key_prefix),
|
|
308
|
+
keyHash: stringValue(row.key_hash),
|
|
309
|
+
name: stringValue(row.name),
|
|
310
|
+
scopes: stringArray(row.scopes),
|
|
311
|
+
status: keyStatus(row.status),
|
|
312
|
+
expiresAt: nullableDate(row.expires_at),
|
|
313
|
+
lastUsedAt: nullableDate(row.last_used_at),
|
|
314
|
+
createdAt: dateValue(row.created_at),
|
|
315
|
+
revokedAt: nullableDate(row.revoked_at),
|
|
316
|
+
revokedBy: nullableString(row.revoked_by),
|
|
317
|
+
metadata: jsonRecord(row.metadata)
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
function mapPrefixedProject(row) {
|
|
321
|
+
return {
|
|
322
|
+
id: stringValue(row.project_id),
|
|
323
|
+
name: stringValue(row.project_name),
|
|
324
|
+
slug: stringValue(row.project_slug),
|
|
325
|
+
ownerUserId: stringValue(row.project_owner_user_id),
|
|
326
|
+
schemaName: stringValue(row.project_schema_name),
|
|
327
|
+
metadata: jsonRecord(row.project_metadata),
|
|
328
|
+
createdAt: dateValue(row.project_created_at),
|
|
329
|
+
updatedAt: dateValue(row.project_updated_at),
|
|
330
|
+
disabledAt: nullableDate(row.project_disabled_at)
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
function mapPrefixedProjectKey(row) {
|
|
334
|
+
return {
|
|
335
|
+
id: stringValue(row.key_id),
|
|
336
|
+
projectId: stringValue(row.key_project_id),
|
|
337
|
+
keyPrefix: stringValue(row.key_key_prefix),
|
|
338
|
+
keyHash: stringValue(row.key_key_hash),
|
|
339
|
+
name: stringValue(row.key_name),
|
|
340
|
+
scopes: stringArray(row.key_scopes),
|
|
341
|
+
status: keyStatus(row.key_status),
|
|
342
|
+
expiresAt: nullableDate(row.key_expires_at),
|
|
343
|
+
lastUsedAt: nullableDate(row.key_last_used_at),
|
|
344
|
+
createdAt: dateValue(row.key_created_at),
|
|
345
|
+
revokedAt: nullableDate(row.key_revoked_at),
|
|
346
|
+
revokedBy: nullableString(row.key_revoked_by),
|
|
347
|
+
metadata: jsonRecord(row.key_metadata)
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
function dateValue(value) {
|
|
351
|
+
if (value instanceof Date) {
|
|
352
|
+
return value;
|
|
353
|
+
}
|
|
354
|
+
if (typeof value === "string" || typeof value === "number") {
|
|
355
|
+
return new Date(value);
|
|
356
|
+
}
|
|
357
|
+
throw new Error("Expected Postgres date value");
|
|
358
|
+
}
|
|
359
|
+
function nullableDate(value) {
|
|
360
|
+
return value == null ? null : dateValue(value);
|
|
361
|
+
}
|
|
362
|
+
function nullableString(value) {
|
|
363
|
+
return typeof value === "string" ? value : null;
|
|
364
|
+
}
|
|
365
|
+
function stringValue(value) {
|
|
366
|
+
if (typeof value !== "string") {
|
|
367
|
+
throw new Error("Expected Postgres string value");
|
|
368
|
+
}
|
|
369
|
+
return value;
|
|
370
|
+
}
|
|
371
|
+
function jsonRecord(value) {
|
|
372
|
+
if (!value) {
|
|
373
|
+
return {};
|
|
374
|
+
}
|
|
375
|
+
if (typeof value === "string") {
|
|
376
|
+
return JSON.parse(value);
|
|
377
|
+
}
|
|
378
|
+
if (typeof value === "object" && !Array.isArray(value)) {
|
|
379
|
+
return value;
|
|
380
|
+
}
|
|
381
|
+
return {};
|
|
382
|
+
}
|
|
383
|
+
function stringArray(value) {
|
|
384
|
+
if (!value) {
|
|
385
|
+
return [];
|
|
386
|
+
}
|
|
387
|
+
if (Array.isArray(value)) {
|
|
388
|
+
return value.filter((item) => typeof item === "string");
|
|
389
|
+
}
|
|
390
|
+
return [];
|
|
391
|
+
}
|
|
392
|
+
function keyStatus(value) {
|
|
393
|
+
if (value === "active" || value === "revoked") {
|
|
394
|
+
return value;
|
|
395
|
+
}
|
|
396
|
+
throw new Error("Expected hosted project key status");
|
|
397
|
+
}
|
|
398
|
+
const projectReturning = [
|
|
399
|
+
"id",
|
|
400
|
+
"name",
|
|
401
|
+
"slug",
|
|
402
|
+
"owner_user_id",
|
|
403
|
+
"schema_name",
|
|
404
|
+
"metadata",
|
|
405
|
+
"created_at",
|
|
406
|
+
"updated_at",
|
|
407
|
+
"disabled_at"
|
|
408
|
+
].join(", ");
|
|
409
|
+
const projectKeyReturning = [
|
|
410
|
+
"id",
|
|
411
|
+
"project_id",
|
|
412
|
+
"key_prefix",
|
|
413
|
+
"key_hash",
|
|
414
|
+
"name",
|
|
415
|
+
"scopes",
|
|
416
|
+
"status",
|
|
417
|
+
"expires_at",
|
|
418
|
+
"last_used_at",
|
|
419
|
+
"created_at",
|
|
420
|
+
"revoked_at",
|
|
421
|
+
"revoked_by",
|
|
422
|
+
"metadata"
|
|
423
|
+
].join(", ");
|
|
424
|
+
function prefixedProjectReturning(alias) {
|
|
425
|
+
return [
|
|
426
|
+
`${alias}.id as project_id`,
|
|
427
|
+
`${alias}.name as project_name`,
|
|
428
|
+
`${alias}.slug as project_slug`,
|
|
429
|
+
`${alias}.owner_user_id as project_owner_user_id`,
|
|
430
|
+
`${alias}.schema_name as project_schema_name`,
|
|
431
|
+
`${alias}.metadata as project_metadata`,
|
|
432
|
+
`${alias}.created_at as project_created_at`,
|
|
433
|
+
`${alias}.updated_at as project_updated_at`,
|
|
434
|
+
`${alias}.disabled_at as project_disabled_at`
|
|
435
|
+
].join(", ");
|
|
436
|
+
}
|
|
437
|
+
function prefixedProjectKeyReturning(alias) {
|
|
438
|
+
return [
|
|
439
|
+
`${alias}.id as key_id`,
|
|
440
|
+
`${alias}.project_id as key_project_id`,
|
|
441
|
+
`${alias}.key_prefix as key_key_prefix`,
|
|
442
|
+
`${alias}.key_hash as key_key_hash`,
|
|
443
|
+
`${alias}.name as key_name`,
|
|
444
|
+
`${alias}.scopes as key_scopes`,
|
|
445
|
+
`${alias}.status as key_status`,
|
|
446
|
+
`${alias}.expires_at as key_expires_at`,
|
|
447
|
+
`${alias}.last_used_at as key_last_used_at`,
|
|
448
|
+
`${alias}.created_at as key_created_at`,
|
|
449
|
+
`${alias}.revoked_at as key_revoked_at`,
|
|
450
|
+
`${alias}.revoked_by as key_revoked_by`,
|
|
451
|
+
`${alias}.metadata as key_metadata`
|
|
452
|
+
].join(", ");
|
|
453
|
+
}
|
|
454
|
+
//# sourceMappingURL=hosted-projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-projects.js","sourceRoot":"","sources":["../../src/postgres/hosted-projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { PostgresAuthStorage, createPostgresAuthStorage } from "./postgres-storage.js";
|
|
2
|
+
export type { PostgresQueryable, PostgresQueryResult } from "./postgres-storage.js";
|
|
3
|
+
export { PostgresHostedProjectService, SchemaScopedPostgresQueryable, createPostgresHostedProjectService } from "./hosted-projects.js";
|
|
4
|
+
export type { CreatedHostedProjectKey, CreateHostedProjectInput, CreateHostedProjectKeyInput, HostedProject, HostedProjectKey, HostedProjectKeyStatus, PostgresClientLike, PostgresConnectable, PostgresHostedProjectServiceOptions, VerifiedHostedProjectKey } from "./hosted-projects.js";
|
|
5
|
+
export declare const initialMigration = "001_initial.sql";
|
|
6
|
+
export declare const hostedProjectsMigration = "002_hosted_projects.sql";
|
|
7
|
+
export declare const tables: {
|
|
8
|
+
readonly users: "own_auth_users";
|
|
9
|
+
readonly accounts: "own_auth_accounts";
|
|
10
|
+
readonly sessions: "own_auth_sessions";
|
|
11
|
+
readonly tokens: "own_auth_tokens";
|
|
12
|
+
readonly smsOtps: "own_auth_sms_otps";
|
|
13
|
+
readonly apiKeys: "own_auth_api_keys";
|
|
14
|
+
readonly organisations: "own_auth_organisations";
|
|
15
|
+
readonly organisationMembers: "own_auth_organisation_members";
|
|
16
|
+
readonly invitations: "own_auth_invitations";
|
|
17
|
+
readonly auditEvents: "own_auth_audit_events";
|
|
18
|
+
readonly rateLimits: "own_auth_rate_limits";
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,kCAAkC,EACnC,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,mCAAmC,EACnC,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAClD,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AAEjE,eAAO,MAAM,MAAM;;;;;;;;;;;;CAYT,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { PostgresAuthStorage, createPostgresAuthStorage } from "./postgres-storage.js";
|
|
2
|
+
export { PostgresHostedProjectService, SchemaScopedPostgresQueryable, createPostgresHostedProjectService } from "./hosted-projects.js";
|
|
3
|
+
export const initialMigration = "001_initial.sql";
|
|
4
|
+
export const hostedProjectsMigration = "002_hosted_projects.sql";
|
|
5
|
+
export const tables = {
|
|
6
|
+
users: "own_auth_users",
|
|
7
|
+
accounts: "own_auth_accounts",
|
|
8
|
+
sessions: "own_auth_sessions",
|
|
9
|
+
tokens: "own_auth_tokens",
|
|
10
|
+
smsOtps: "own_auth_sms_otps",
|
|
11
|
+
apiKeys: "own_auth_api_keys",
|
|
12
|
+
organisations: "own_auth_organisations",
|
|
13
|
+
organisationMembers: "own_auth_organisation_members",
|
|
14
|
+
invitations: "own_auth_invitations",
|
|
15
|
+
auditEvents: "own_auth_audit_events",
|
|
16
|
+
rateLimits: "own_auth_rate_limits"
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,kCAAkC,EACnC,MAAM,sBAAsB,CAAC;AAc9B,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAClD,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAEjE,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,gBAAgB;IACvB,QAAQ,EAAE,mBAAmB;IAC7B,QAAQ,EAAE,mBAAmB;IAC7B,MAAM,EAAE,iBAAiB;IACzB,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,mBAAmB;IAC5B,aAAa,EAAE,wBAAwB;IACvC,mBAAmB,EAAE,+BAA+B;IACpD,WAAW,EAAE,sBAAsB;IACnC,WAAW,EAAE,uBAAuB;IACpC,UAAU,EAAE,sBAAsB;CAC1B,CAAC"}
|