@relkit/better-auth 0.0.4 → 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/dist/index.d.ts +42 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +93 -15
- package/dist/index.js.map +1 -1
- package/package.json +8 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,24 +1,51 @@
|
|
|
1
|
+
import { createDescriptorBase } from "@relkit/contracts";
|
|
2
|
+
import { type DrizzleActivation, type DrizzleServiceDescriptor } from "@relkit/drizzle/internal";
|
|
1
3
|
import type { RawHttpHandler } from "@relkit/routes";
|
|
4
|
+
import { type Auth, type BetterAuthOptions } from "better-auth";
|
|
5
|
+
import { type DrizzleAdapterConfig } from "better-auth/adapters/drizzle";
|
|
2
6
|
export declare const BETTER_AUTH_HANDLER: unique symbol;
|
|
3
|
-
export
|
|
4
|
-
readonly
|
|
5
|
-
readonly
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
export interface BetterAuthRegistration<Session = unknown> {
|
|
7
|
+
export type BetterAuthServiceOptions = Omit<BetterAuthOptions, "database" | "basePath"> & {
|
|
8
|
+
readonly database?: never;
|
|
9
|
+
readonly basePath?: never;
|
|
10
|
+
readonly drizzle?: Omit<DrizzleAdapterConfig, "provider">;
|
|
11
|
+
};
|
|
12
|
+
export interface BetterAuthRegistration {
|
|
12
13
|
readonly kind: "better-auth";
|
|
13
|
-
readonly
|
|
14
|
-
readonly protected: readonly string[];
|
|
14
|
+
readonly service: BetterAuthServiceDescriptor<any>;
|
|
15
15
|
}
|
|
16
16
|
export type BetterAuthHandler<Session = unknown> = RawHttpHandler & {
|
|
17
|
-
readonly [BETTER_AUTH_HANDLER]: BetterAuthRegistration
|
|
17
|
+
readonly [BETTER_AUTH_HANDLER]: BetterAuthRegistration;
|
|
18
|
+
readonly __session?: Session;
|
|
18
19
|
};
|
|
19
20
|
export type InferBetterAuthSession<Handler> = Handler extends BetterAuthHandler<infer Session> ? Session : never;
|
|
20
|
-
export interface
|
|
21
|
-
readonly
|
|
21
|
+
export interface BetterAuthServiceDescriptor<Options extends BetterAuthServiceOptions> extends ReturnType<typeof createDescriptorBase<"service", string>> {
|
|
22
|
+
readonly capability: {
|
|
23
|
+
readonly kind: "better-auth";
|
|
24
|
+
};
|
|
25
|
+
readonly handler: BetterAuthHandler<Auth<Options>["$Infer"]["Session"]>;
|
|
22
26
|
}
|
|
23
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Defines a lazy Better Auth domain service using the application's Drizzle database.
|
|
29
|
+
*
|
|
30
|
+
* Mount `handler` with a filesystem `ALL` catch-all route. RELKIT supplies `database`
|
|
31
|
+
* and derives `basePath` from that route; neither option can be set here. Other
|
|
32
|
+
* options follow Better Auth, with optional `drizzle` adapter settings. The
|
|
33
|
+
* descriptor is not the native auth instance and does not expose `auth.api`.
|
|
34
|
+
* Supply BETTER_AUTH_SECRET through the server process environment before startup.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* import { defineBetterAuthService } from "@relkit/better-auth"
|
|
39
|
+
*
|
|
40
|
+
* const auth = defineBetterAuthService({
|
|
41
|
+
* baseURL: "http://127.0.0.1:3000",
|
|
42
|
+
* emailAndPassword: { enabled: true },
|
|
43
|
+
* })
|
|
44
|
+
* const handler = auth.handler
|
|
45
|
+
* ```
|
|
46
|
+
* @category Services
|
|
47
|
+
* @since 0.0.5
|
|
48
|
+
*/
|
|
49
|
+
export declare function defineBetterAuthService<const Options extends BetterAuthServiceOptions>(options: Options): BetterAuthServiceDescriptor<Options>;
|
|
50
|
+
export declare function activateBetterAuthService<Options extends BetterAuthServiceOptions, Database extends DrizzleServiceDescriptor<any, any, any, any>>(service: BetterAuthServiceDescriptor<Options>, database: DrizzleActivation<Database>, basePath: string): Promise<Auth<any>>;
|
|
24
51
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC9B,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAc,KAAK,IAAI,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAkB,KAAK,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEzF,eAAO,MAAM,mBAAmB,eAA2C,CAAC;AAG5E,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;IACxF,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;CAC3D,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,2BAA2B,CAAC,GAAG,CAAC,CAAC;CACpD;AAED,MAAM,MAAM,iBAAiB,CAAC,OAAO,GAAG,OAAO,IAAI,cAAc,GAAG;IAClE,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,sBAAsB,CAAC;IACvD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAAC,OAAO,IACxC,OAAO,SAAS,iBAAiB,CAAC,MAAM,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC;AAErE,MAAM,WAAW,2BAA2B,CAC1C,OAAO,SAAS,wBAAwB,CACxC,SAAQ,UAAU,CAAC,OAAO,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAClE,QAAQ,CAAC,UAAU,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;KAAE,CAAC;IACtD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;CACzE;AAOD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,OAAO,SAAS,wBAAwB,EACpF,OAAO,EAAE,OAAO,GACf,2BAA2B,CAAC,OAAO,CAAC,CAyBtC;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,SAAS,wBAAwB,EACxC,QAAQ,SAAS,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAE7D,OAAO,EAAE,2BAA2B,CAAC,OAAO,CAAC,EAC7C,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EACrC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAqBpB"}
|
package/dist/index.js
CHANGED
|
@@ -1,23 +1,101 @@
|
|
|
1
|
+
import { createDescriptorBase } from "@relkit/contracts";
|
|
2
|
+
import { drizzleRuntimeOf, } from "@relkit/drizzle/internal";
|
|
3
|
+
import { createUnboundIdentity } from "@relkit/invocation";
|
|
4
|
+
import { betterAuth } from "better-auth";
|
|
5
|
+
import { drizzleAdapter } from "better-auth/adapters/drizzle";
|
|
1
6
|
export const BETTER_AUTH_HANDLER = Symbol.for("relkit.better-auth.handler");
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
7
|
+
const BETTER_AUTH_RUNTIME = Symbol.for("relkit.better-auth.runtime");
|
|
8
|
+
/**
|
|
9
|
+
* Defines a lazy Better Auth domain service using the application's Drizzle database.
|
|
10
|
+
*
|
|
11
|
+
* Mount `handler` with a filesystem `ALL` catch-all route. RELKIT supplies `database`
|
|
12
|
+
* and derives `basePath` from that route; neither option can be set here. Other
|
|
13
|
+
* options follow Better Auth, with optional `drizzle` adapter settings. The
|
|
14
|
+
* descriptor is not the native auth instance and does not expose `auth.api`.
|
|
15
|
+
* Supply BETTER_AUTH_SECRET through the server process environment before startup.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { defineBetterAuthService } from "@relkit/better-auth"
|
|
20
|
+
*
|
|
21
|
+
* const auth = defineBetterAuthService({
|
|
22
|
+
* baseURL: "http://127.0.0.1:3000",
|
|
23
|
+
* emailAndPassword: { enabled: true },
|
|
24
|
+
* })
|
|
25
|
+
* const handler = auth.handler
|
|
26
|
+
* ```
|
|
27
|
+
* @category Services
|
|
28
|
+
* @since 0.0.5
|
|
29
|
+
*/
|
|
30
|
+
export function defineBetterAuthService(options) {
|
|
31
|
+
if (!isRecord(options))
|
|
32
|
+
throw new TypeError("Better Auth service options must be an object");
|
|
33
|
+
if (Object.hasOwn(options, "database")) {
|
|
34
|
+
throw new TypeError("Better Auth service database is provided by the Drizzle service");
|
|
5
35
|
}
|
|
6
|
-
|
|
7
|
-
|
|
36
|
+
if (Object.hasOwn(options, "basePath")) {
|
|
37
|
+
throw new TypeError("Better Auth basePath is derived from its ALL route");
|
|
38
|
+
}
|
|
39
|
+
const runtime = { options, activation: undefined };
|
|
40
|
+
const handler = (async (request) => {
|
|
41
|
+
const auth = await runtime.activation;
|
|
42
|
+
if (auth === undefined)
|
|
43
|
+
return new Response("Service Unavailable", { status: 503 });
|
|
44
|
+
return auth.handler(request);
|
|
45
|
+
});
|
|
46
|
+
const descriptor = {
|
|
47
|
+
...createDescriptorBase("service", createUnboundIdentity()),
|
|
48
|
+
capability: Object.freeze({ kind: "better-auth" }),
|
|
49
|
+
handler,
|
|
50
|
+
};
|
|
8
51
|
Object.defineProperty(handler, BETTER_AUTH_HANDLER, {
|
|
9
|
-
value: Object.freeze({ kind: "better-auth",
|
|
10
|
-
enumerable: false,
|
|
52
|
+
value: Object.freeze({ kind: "better-auth", service: descriptor }),
|
|
11
53
|
});
|
|
12
|
-
|
|
54
|
+
Object.defineProperty(descriptor, BETTER_AUTH_RUNTIME, { value: runtime });
|
|
55
|
+
Object.freeze(handler);
|
|
56
|
+
return Object.freeze(descriptor);
|
|
13
57
|
}
|
|
14
|
-
function
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
58
|
+
export async function activateBetterAuthService(service, database, basePath) {
|
|
59
|
+
const runtime = runtimeOf(service);
|
|
60
|
+
if (runtime.activation !== undefined)
|
|
61
|
+
return runtime.activation;
|
|
62
|
+
validateBasePath(basePath);
|
|
63
|
+
runtime.activation = Promise.resolve().then(() => {
|
|
64
|
+
const drizzle = drizzleRuntimeOf(databaseServiceOf(database));
|
|
65
|
+
const { drizzle: adapterOptions, ...options } = runtime.options;
|
|
66
|
+
return betterAuth({
|
|
67
|
+
...options,
|
|
68
|
+
basePath,
|
|
69
|
+
database: drizzleAdapter(database.client, {
|
|
70
|
+
...(adapterOptions ?? {}),
|
|
71
|
+
schema: adapterOptions?.schema ?? drizzle.schema,
|
|
72
|
+
provider: drizzle.dialect,
|
|
73
|
+
}),
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
runtime.activation.catch(() => {
|
|
77
|
+
runtime.activation = undefined;
|
|
78
|
+
});
|
|
79
|
+
return runtime.activation;
|
|
80
|
+
}
|
|
81
|
+
function runtimeOf(service) {
|
|
82
|
+
const runtime = service[BETTER_AUTH_RUNTIME];
|
|
83
|
+
if (!isRecord(runtime))
|
|
84
|
+
throw new TypeError("Invalid Better Auth service descriptor");
|
|
85
|
+
return runtime;
|
|
86
|
+
}
|
|
87
|
+
function databaseServiceOf(activation) {
|
|
88
|
+
const service = activation[Symbol.for("relkit.drizzle.service")];
|
|
89
|
+
if (!isRecord(service))
|
|
90
|
+
throw new TypeError("Drizzle activation is missing its service");
|
|
91
|
+
return service;
|
|
92
|
+
}
|
|
93
|
+
function validateBasePath(value) {
|
|
94
|
+
if (!value.startsWith("/") || value.endsWith("/") || value.includes("*") || value.includes("[")) {
|
|
95
|
+
throw new TypeError(`Invalid Better Auth base path "${value}"`);
|
|
20
96
|
}
|
|
21
|
-
|
|
97
|
+
}
|
|
98
|
+
function isRecord(value) {
|
|
99
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
22
100
|
}
|
|
23
101
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,gBAAgB,GAGjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAqC,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,cAAc,EAA6B,MAAM,8BAA8B,CAAC;AAEzF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAC5E,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAiCrE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAgB;IAEhB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;IAC7F,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,SAAS,CAAC,iEAAiE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,OAAO,GAA+B,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAC/E,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,OAAgB,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,QAAQ,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAA0D,CAAC;IAC5D,MAAM,UAAU,GAAG;QACjB,GAAG,oBAAoB,CAAC,SAAS,EAAE,qBAAqB,EAAE,CAAC;QAC3D,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAsB,EAAE,CAAC;QAC3D,OAAO;KACR,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,EAAE;QAClD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;KACnE,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAyC,CAAC;AAC3E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAI7C,OAA6C,EAC7C,QAAqC,EACrC,QAAgB;IAEhB,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,UAAU,CAAC;IAChE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC3B,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAC/C,MAAM,OAAO,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9D,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QAChE,OAAO,UAAU,CAAC;YAChB,GAAG,OAAO;YACV,QAAQ;YACR,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACxC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;gBACzB,MAAM,EAAE,cAAc,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM;gBAChD,QAAQ,EAAE,OAAO,CAAC,OAAO;aAC1B,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE;QAC5B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,UAAU,CAAC;AAC5B,CAAC;AAED,SAAS,SAAS,CAChB,OAA6C;IAE7C,MAAM,OAAO,GAAI,OAAmD,CAAC,mBAAmB,CAAC,CAAC;IAC1F,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;IACtF,OAAO,OAAgD,CAAC;AAC1D,CAAC;AAED,SAAS,iBAAiB,CACxB,UAA2E;IAE3E,MAAM,OAAO,GAAI,UAAsD,CACrE,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CACrC,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;IACzF,OAAO,OAAuD,CAAC;AACjE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAChG,MAAM,IAAI,SAAS,CAAC,kCAAkC,KAAK,GAAG,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@relkit/better-auth",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "Better Auth integration for RELKIT routes.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -29,9 +29,15 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@relkit/
|
|
32
|
+
"@relkit/contracts": "0.1.0",
|
|
33
|
+
"@relkit/drizzle": "0.1.0",
|
|
34
|
+
"@relkit/invocation": "0.1.0",
|
|
35
|
+
"@relkit/routes": "0.1.0",
|
|
33
36
|
"better-auth": "1.7.1"
|
|
34
37
|
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"drizzle-orm": "1.0.0-rc.5-169397b"
|
|
40
|
+
},
|
|
35
41
|
"scripts": {
|
|
36
42
|
"build": "tsc -b",
|
|
37
43
|
"check": "tsc -b --pretty false",
|