@amerged/ohmyhost-auth 0.1.24 → 0.1.26

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @amerged/ohmyhost-auth
2
2
 
3
- ohmyho.st auth client, version 0.1.24.
3
+ ohmyho.st auth client, version 0.1.26.
4
4
 
5
5
  ```sh
6
6
  npm install @amerged/ohmyhost-auth
package/dist/runtime.d.ts CHANGED
@@ -17,7 +17,7 @@ export interface CustomerAuthRuntimeInput {
17
17
  readonly publicOrigin: string;
18
18
  readonly database: Pool;
19
19
  readonly secret: string;
20
- readonly email: CustomerAuthEmailSender;
20
+ readonly email?: CustomerAuthEmailSender;
21
21
  }
22
22
  export declare function createCustomerAuthOptions(input: CustomerAuthRuntimeInput): BetterAuthOptions;
23
23
  export declare function createCustomerAuth(input: CustomerAuthRuntimeInput): import("better-auth").Auth<BetterAuthOptions>;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":";AACA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAM1B,OAAO,QAAQ,qBAAqB,CAAC;IACnC,KAAK,KAAK,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,gBAAgB,GAAG,cAAc,CAAC;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;CACzC;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,wBAAwB,GAAG,iBAAiB,CAyE5F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,wBAAwB,iDAEjE;AAED,wBAAgB,8BAA8B,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAG7E;AAyBD,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":";AACA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAa1B,OAAO,QAAQ,qBAAqB,CAAC;IACnC,KAAK,KAAK,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,gBAAgB,GAAG,cAAc,CAAC;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,uBAAuB,CAAC;CAC1C;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,wBAAwB,GAAG,iBAAiB,CA2F5F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,wBAAwB,iDAEjE;AAED,wBAAgB,8BAA8B,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAG7E;AAyBD,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
package/dist/runtime.js CHANGED
@@ -1,7 +1,14 @@
1
1
  /// <reference types="bun-types/sqlite.d.ts" preserve="true" />
2
2
  import { betterAuth } from "better-auth";
3
+ import { APIError, createAuthMiddleware } from "better-auth/api";
3
4
  import { Pool } from "pg";
4
5
  import { CUSTOMER_AUTH_INSTALLATION_CONTRACT } from "./installation-contract.js";
6
+ const MAIL_OPERATION_PATHS = new Set([
7
+ "/sign-up/email",
8
+ "/send-verification-email",
9
+ "/request-password-reset",
10
+ "/reset-password",
11
+ ]);
5
12
  export function createCustomerAuthOptions(input) {
6
13
  const publicOrigin = parsePublicOrigin(input.publicOrigin);
7
14
  const authBasePath = CUSTOMER_AUTH_INSTALLATION_CONTRACT.http.routePath;
@@ -13,10 +20,16 @@ export function createCustomerAuthOptions(input) {
13
20
  typeof input.secret !== "string" ||
14
21
  input.secret.length < 32 ||
15
22
  input.secret.length > 512 ||
16
- typeof input.email?.send !== "function") {
23
+ (input.email !== undefined && typeof input.email?.send !== "function")) {
17
24
  throw new TypeError("Customer auth runtime input is invalid");
18
25
  }
19
26
  const send = async (kind, email, url) => {
27
+ if (input.email === undefined) {
28
+ throw APIError.from("SERVICE_UNAVAILABLE", {
29
+ code: "AUTH_EMAIL_SENDER_NOT_CONFIGURED",
30
+ message: "Configure an email sender for this authentication operation",
31
+ });
32
+ }
20
33
  await input.email.send({
21
34
  kind,
22
35
  to: email,
@@ -32,6 +45,16 @@ export function createCustomerAuthOptions(input) {
32
45
  trustedOrigins: [publicOrigin],
33
46
  secret: input.secret,
34
47
  database: input.database,
48
+ hooks: {
49
+ before: createAuthMiddleware(async (context) => {
50
+ if (input.email === undefined && MAIL_OPERATION_PATHS.has(context.path)) {
51
+ throw APIError.from("SERVICE_UNAVAILABLE", {
52
+ code: "AUTH_EMAIL_SENDER_NOT_CONFIGURED",
53
+ message: "Configure an email sender for this authentication operation",
54
+ });
55
+ }
56
+ }),
57
+ },
35
58
  emailAndPassword: {
36
59
  enabled: true,
37
60
  requireEmailVerification: true,
@@ -45,7 +68,7 @@ export function createCustomerAuthOptions(input) {
45
68
  },
46
69
  emailVerification: {
47
70
  sendOnSignUp: true,
48
- sendOnSignIn: true,
71
+ sendOnSignIn: input.email !== undefined,
49
72
  autoSignInAfterVerification: false,
50
73
  expiresIn: 3_600,
51
74
  sendVerificationEmail: ({ user, url }) => send("verification", user.email, url),
@@ -63,6 +86,8 @@ export function createCustomerAuthOptions(input) {
63
86
  },
64
87
  },
65
88
  advanced: {
89
+ disableCSRFCheck: false,
90
+ disableOriginCheck: false,
66
91
  useSecureCookies: true,
67
92
  database: {
68
93
  generateId: CUSTOMER_AUTH_INSTALLATION_CONTRACT.database.idGeneration,
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amerged/ohmyhost-auth",
3
- "version": "0.1.24",
3
+ "version": "0.1.26",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=22"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ohmyhost/customer-auth-better-auth",
3
- "version": "0.1.24",
3
+ "version": "0.1.26",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "exports": {
@@ -1,9 +1,17 @@
1
1
  /// <reference types="bun-types/sqlite.d.ts" preserve="true" />
2
2
  import { betterAuth, type BetterAuthOptions } from "better-auth";
3
+ import { APIError, createAuthMiddleware } from "better-auth/api";
3
4
  import { Pool } from "pg";
4
5
 
5
6
  import { CUSTOMER_AUTH_INSTALLATION_CONTRACT } from "./installation-contract.js";
6
7
 
8
+ const MAIL_OPERATION_PATHS = new Set([
9
+ "/sign-up/email",
10
+ "/send-verification-email",
11
+ "/request-password-reset",
12
+ "/reset-password",
13
+ ]);
14
+
7
15
  // Better Fetch 1.3.1 exposes an unbound Timer name; keep its type local to that module.
8
16
  // Referencing only Bun's SQLite declarations above avoids changing Node's global APIs.
9
17
  declare module "@better-fetch/fetch" {
@@ -25,7 +33,7 @@ export interface CustomerAuthRuntimeInput {
25
33
  readonly publicOrigin: string;
26
34
  readonly database: Pool;
27
35
  readonly secret: string;
28
- readonly email: CustomerAuthEmailSender;
36
+ readonly email?: CustomerAuthEmailSender;
29
37
  }
30
38
 
31
39
  export function createCustomerAuthOptions(input: CustomerAuthRuntimeInput): BetterAuthOptions {
@@ -40,11 +48,17 @@ export function createCustomerAuthOptions(input: CustomerAuthRuntimeInput): Bett
40
48
  typeof input.secret !== "string" ||
41
49
  input.secret.length < 32 ||
42
50
  input.secret.length > 512 ||
43
- typeof input.email?.send !== "function"
51
+ (input.email !== undefined && typeof input.email?.send !== "function")
44
52
  ) {
45
53
  throw new TypeError("Customer auth runtime input is invalid");
46
54
  }
47
55
  const send = async (kind: CustomerAuthEmail["kind"], email: string, url: string) => {
56
+ if (input.email === undefined) {
57
+ throw APIError.from("SERVICE_UNAVAILABLE", {
58
+ code: "AUTH_EMAIL_SENDER_NOT_CONFIGURED",
59
+ message: "Configure an email sender for this authentication operation",
60
+ });
61
+ }
48
62
  await input.email.send({
49
63
  kind,
50
64
  to: email,
@@ -61,6 +75,16 @@ export function createCustomerAuthOptions(input: CustomerAuthRuntimeInput): Bett
61
75
  trustedOrigins: [publicOrigin],
62
76
  secret: input.secret,
63
77
  database: input.database,
78
+ hooks: {
79
+ before: createAuthMiddleware(async (context) => {
80
+ if (input.email === undefined && MAIL_OPERATION_PATHS.has(context.path)) {
81
+ throw APIError.from("SERVICE_UNAVAILABLE", {
82
+ code: "AUTH_EMAIL_SENDER_NOT_CONFIGURED",
83
+ message: "Configure an email sender for this authentication operation",
84
+ });
85
+ }
86
+ }),
87
+ },
64
88
  emailAndPassword: {
65
89
  enabled: true,
66
90
  requireEmailVerification: true,
@@ -74,7 +98,7 @@ export function createCustomerAuthOptions(input: CustomerAuthRuntimeInput): Bett
74
98
  },
75
99
  emailVerification: {
76
100
  sendOnSignUp: true,
77
- sendOnSignIn: true,
101
+ sendOnSignIn: input.email !== undefined,
78
102
  autoSignInAfterVerification: false,
79
103
  expiresIn: 3_600,
80
104
  sendVerificationEmail: ({ user, url }) => send("verification", user.email, url),
@@ -92,6 +116,8 @@ export function createCustomerAuthOptions(input: CustomerAuthRuntimeInput): Bett
92
116
  },
93
117
  },
94
118
  advanced: {
119
+ disableCSRFCheck: false,
120
+ disableOriginCheck: false,
95
121
  useSecureCookies: true,
96
122
  database: {
97
123
  generateId: CUSTOMER_AUTH_INSTALLATION_CONTRACT.database.idGeneration,