@fengsoft/auth-db 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/schema.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYhB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBnB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBnB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWxB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcxB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBlB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBtB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiClB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAStB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,UAAU,CAAC"}
@@ -0,0 +1,142 @@
1
+ import { createIdColumn } from "@fengsoft/foundation-db";
2
+ import { boolean, index, integer, pgTable, text, timestamp, uniqueIndex, } from "drizzle-orm/pg-core";
3
+ const createdAt = (name = "created_at") => timestamp(name, { withTimezone: true }).notNull().defaultNow();
4
+ const updatedAt = (name = "updated_at") => timestamp(name, { withTimezone: true }).notNull().defaultNow();
5
+ export const user = pgTable("auth_users", {
6
+ id: createIdColumn().primaryKey(),
7
+ name: text("name").notNull(),
8
+ email: text("email").notNull(),
9
+ emailVerified: boolean("email_verified").notNull().default(false),
10
+ image: text("image"),
11
+ createdAt: createdAt(),
12
+ updatedAt: updatedAt(),
13
+ }, (table) => [uniqueIndex("auth_users_email_key").on(table.email)]);
14
+ export const session = pgTable("auth_sessions", {
15
+ id: createIdColumn().primaryKey(),
16
+ expiresAt: timestamp("expires_at", { withTimezone: true }).notNull(),
17
+ token: text("token").notNull(),
18
+ createdAt: createdAt(),
19
+ updatedAt: updatedAt(),
20
+ ipAddress: text("ip_address"),
21
+ userAgent: text("user_agent"),
22
+ userId: text("user_id")
23
+ .notNull()
24
+ .references(() => user.id, { onDelete: "cascade" }),
25
+ activeOrganizationId: text("active_organization_id"),
26
+ }, (table) => [
27
+ uniqueIndex("auth_sessions_token_key").on(table.token),
28
+ index("auth_sessions_user_id_idx").on(table.userId),
29
+ ]);
30
+ export const account = pgTable("auth_accounts", {
31
+ id: createIdColumn().primaryKey(),
32
+ accountId: text("account_id").notNull(),
33
+ providerId: text("provider_id").notNull(),
34
+ userId: text("user_id")
35
+ .notNull()
36
+ .references(() => user.id, { onDelete: "cascade" }),
37
+ accessToken: text("access_token"),
38
+ refreshToken: text("refresh_token"),
39
+ idToken: text("id_token"),
40
+ accessTokenExpiresAt: timestamp("access_token_expires_at", {
41
+ withTimezone: true,
42
+ }),
43
+ refreshTokenExpiresAt: timestamp("refresh_token_expires_at", {
44
+ withTimezone: true,
45
+ }),
46
+ scope: text("scope"),
47
+ password: text("password"),
48
+ createdAt: createdAt(),
49
+ updatedAt: updatedAt(),
50
+ }, (table) => [index("auth_accounts_user_id_idx").on(table.userId)]);
51
+ export const verification = pgTable("auth_verifications", {
52
+ id: createIdColumn().primaryKey(),
53
+ identifier: text("identifier").notNull(),
54
+ value: text("value").notNull(),
55
+ expiresAt: timestamp("expires_at", { withTimezone: true }).notNull(),
56
+ createdAt: createdAt(),
57
+ updatedAt: updatedAt(),
58
+ }, (table) => [index("auth_verifications_identifier_idx").on(table.identifier)]);
59
+ export const organization = pgTable("auth_organizations", {
60
+ id: createIdColumn().primaryKey(),
61
+ name: text("name").notNull(),
62
+ slug: text("slug").notNull(),
63
+ logo: text("logo"),
64
+ createdAt: createdAt(),
65
+ metadata: text("metadata"),
66
+ }, (table) => [
67
+ uniqueIndex("auth_organizations_slug_key").on(table.slug),
68
+ index("auth_organizations_slug_idx").on(table.slug),
69
+ ]);
70
+ export const member = pgTable("auth_members", {
71
+ id: createIdColumn().primaryKey(),
72
+ organizationId: text("organization_id")
73
+ .notNull()
74
+ .references(() => organization.id),
75
+ userId: text("user_id")
76
+ .notNull()
77
+ .references(() => user.id),
78
+ role: text("role").notNull().default("member"),
79
+ createdAt: createdAt(),
80
+ }, (table) => [
81
+ index("auth_members_organization_id_idx").on(table.organizationId),
82
+ index("auth_members_user_id_idx").on(table.userId),
83
+ uniqueIndex("auth_members_organization_user_key").on(table.organizationId, table.userId),
84
+ ]);
85
+ export const invitation = pgTable("auth_invitations", {
86
+ id: createIdColumn().primaryKey(),
87
+ organizationId: text("organization_id")
88
+ .notNull()
89
+ .references(() => organization.id),
90
+ email: text("email").notNull(),
91
+ role: text("role"),
92
+ status: text("status").notNull().default("pending"),
93
+ expiresAt: timestamp("expires_at", { withTimezone: true }).notNull(),
94
+ createdAt: createdAt(),
95
+ inviterId: text("inviter_id")
96
+ .notNull()
97
+ .references(() => user.id),
98
+ }, (table) => [
99
+ index("auth_invitations_organization_id_idx").on(table.organizationId),
100
+ index("auth_invitations_email_idx").on(table.email),
101
+ ]);
102
+ export const apikey = pgTable("auth_api_keys", {
103
+ id: createIdColumn().primaryKey(),
104
+ configId: text("config_id").notNull().default("default"),
105
+ name: text("name"),
106
+ start: text("start"),
107
+ referenceId: text("reference_id").notNull(),
108
+ prefix: text("prefix"),
109
+ key: text("key").notNull(),
110
+ refillInterval: integer("refill_interval"),
111
+ refillAmount: integer("refill_amount"),
112
+ lastRefillAt: timestamp("last_refill_at", { withTimezone: true }),
113
+ enabled: boolean("enabled").notNull().default(true),
114
+ rateLimitEnabled: boolean("rate_limit_enabled").notNull().default(true),
115
+ rateLimitTimeWindow: integer("rate_limit_time_window")
116
+ .notNull()
117
+ .default(86_400_000),
118
+ rateLimitMax: integer("rate_limit_max").notNull().default(10),
119
+ requestCount: integer("request_count").notNull().default(0),
120
+ remaining: integer("remaining"),
121
+ lastRequest: timestamp("last_request", { withTimezone: true }),
122
+ expiresAt: timestamp("expires_at", { withTimezone: true }),
123
+ createdAt: createdAt(),
124
+ updatedAt: updatedAt(),
125
+ permissions: text("permissions"),
126
+ metadata: text("metadata"),
127
+ }, (table) => [
128
+ index("auth_api_keys_config_id_idx").on(table.configId),
129
+ index("auth_api_keys_reference_id_idx").on(table.referenceId),
130
+ index("auth_api_keys_key_idx").on(table.key),
131
+ ]);
132
+ export const authSchema = {
133
+ account,
134
+ apikey,
135
+ invitation,
136
+ member,
137
+ organization,
138
+ session,
139
+ user,
140
+ verification,
141
+ };
142
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Pool, type PoolConfig } from "pg";
2
+ export type DatabaseRuntimeConfig = {
3
+ connectionString: string;
4
+ maxConnections?: number;
5
+ ssl?: PoolConfig["ssl"];
6
+ };
7
+ export declare function createPgPool(config: DatabaseRuntimeConfig): Pool;
8
+ export declare function createDrizzleDatabase<TSchema extends Record<string, unknown>>(pool: Pool, schema?: TSchema): import("drizzle-orm/node-postgres").NodePgDatabase<TSchema> & {
9
+ $client: Pool;
10
+ };
11
+ export declare function createIdColumn(name?: string): import("drizzle-orm").HasRuntimeDefault<import("drizzle-orm").HasDefault<import("drizzle-orm").NotNull<import("drizzle-orm/pg-core").PgTextBuilderInitial<string, [string, ...string[]]>>>>;
12
+ export declare function createTimestampColumns(): {
13
+ createdAt: import("drizzle-orm").HasDefault<import("drizzle-orm").NotNull<import("drizzle-orm/pg-core").PgTimestampBuilderInitial<"created_at">>>;
14
+ updatedAt: import("drizzle-orm").HasDefault<import("drizzle-orm").NotNull<import("drizzle-orm/pg-core").PgTimestampBuilderInitial<"updated_at">>>;
15
+ };
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../foundation-db/src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,IAAI,CAAC;AAE3C,MAAM,MAAM,qBAAqB,GAAG;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;CACxB,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAMhE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5E,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,OAAO;;EAMhB;AAED,wBAAgB,cAAc,CAAC,IAAI,SAAO,+LAIzC;AAED,wBAAgB,sBAAsB;;;EASrC"}
@@ -0,0 +1,33 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { drizzle } from "drizzle-orm/node-postgres";
3
+ import { text, timestamp } from "drizzle-orm/pg-core";
4
+ import { Pool } from "pg";
5
+ export function createPgPool(config) {
6
+ return new Pool({
7
+ connectionString: config.connectionString,
8
+ max: config.maxConnections,
9
+ ssl: config.ssl,
10
+ });
11
+ }
12
+ export function createDrizzleDatabase(pool, schema) {
13
+ return drizzle({
14
+ client: pool,
15
+ schema,
16
+ });
17
+ }
18
+ export function createIdColumn(name = "id") {
19
+ return text(name)
20
+ .notNull()
21
+ .$defaultFn(() => randomUUID());
22
+ }
23
+ export function createTimestampColumns() {
24
+ return {
25
+ createdAt: timestamp("created_at", { withTimezone: true })
26
+ .notNull()
27
+ .defaultNow(),
28
+ updatedAt: timestamp("updated_at", { withTimezone: true })
29
+ .notNull()
30
+ .defaultNow(),
31
+ };
32
+ }
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../foundation-db/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAmB,MAAM,IAAI,CAAC;AAQ3C,MAAM,UAAU,YAAY,CAAC,MAA6B;IACzD,OAAO,IAAI,IAAI,CAAC;QACf,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,GAAG,EAAE,MAAM,CAAC,cAAc;QAC1B,GAAG,EAAE,MAAM,CAAC,GAAG;KACf,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACpC,IAAU,EACV,MAAgB;IAEhB,OAAO,OAAO,CAAC;QACd,MAAM,EAAE,IAAI;QACZ,MAAM;KACN,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAI,GAAG,IAAI;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC;SACf,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,sBAAsB;IACrC,OAAO;QACN,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;aACxD,OAAO,EAAE;aACT,UAAU,EAAE;QACd,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;aACxD,OAAO,EAAE;aACT,UAAU,EAAE;KACd,CAAC;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@fengsoft/auth-db",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ }
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "README.md",
16
+ "CHANGELOG.md",
17
+ "LICENSE"
18
+ ],
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "dependencies": {
23
+ "@better-auth/api-key": "^1.5.6",
24
+ "better-auth": "^1.5.6",
25
+ "drizzle-orm": "^0.45.2",
26
+ "@fengsoft/foundation-db": "0.1.0"
27
+ },
28
+ "devDependencies": {
29
+ "drizzle-kit": "^0.31.7"
30
+ },
31
+ "scripts": {
32
+ "build": "tsc -p tsconfig.json",
33
+ "db:generate": "drizzle-kit generate --config drizzle.config.ts",
34
+ "db:migrate": "drizzle-kit migrate --config drizzle.config.ts",
35
+ "typecheck": "tsc --noEmit -p tsconfig.json",
36
+ "lint": "biome check src drizzle.config.ts package.json tsconfig.json"
37
+ }
38
+ }