@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.
- package/CHANGELOG.md +7 -0
- package/LICENSE +100 -0
- package/README.md +24 -0
- package/dist/auth-db/src/index.d.ts +2732 -0
- package/dist/auth-db/src/index.d.ts.map +1 -0
- package/dist/auth-db/src/index.js +54 -0
- package/dist/auth-db/src/index.js.map +1 -0
- package/dist/auth-db/src/schema.d.ts +2700 -0
- package/dist/auth-db/src/schema.d.ts.map +1 -0
- package/dist/auth-db/src/schema.js +142 -0
- package/dist/auth-db/src/schema.js.map +1 -0
- package/dist/foundation-db/src/index.d.ts +16 -0
- package/dist/foundation-db/src/index.d.ts.map +1 -0
- package/dist/foundation-db/src/index.js +33 -0
- package/dist/foundation-db/src/index.js.map +1 -0
- package/package.json +38 -0
|
@@ -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
|
+
}
|