better-auth-evp 0.1.0 → 1.0.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/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ ## [1.0.1](https://github.com/qamarq/better-auth-evp/compare/v1.0.0...v1.0.1) (2026-08-31)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * rely on better-auth client auto-inference instead of a custom getActions ([dc49d4e](https://github.com/qamarq/better-auth-evp/commit/dc49d4e125ace25e76d4b31cca167e5937d061b8))
7
+
8
+ # 1.0.0 (2026-08-31)
9
+
10
+
11
+ ### Features
12
+
13
+ * initial Email Verification Protocol plugin for Better Auth ([753fcb6](https://github.com/qamarq/better-auth-evp/commit/753fcb66bc34cc6acb9273bacbce69bb1fecdb5e))
package/dist/client.d.ts CHANGED
@@ -1,59 +1,8 @@
1
1
  import type { emailVerificationProtocol } from "./index";
2
- import type { EvpNonceResponse, EvpVerifyResponse } from "./types";
3
- /**
4
- * `autocomplete` value for the visible email `<input>`. Required by the
5
- * protocol so the browser can offer verified addresses.
6
- */
7
2
  export declare const EVP_EMAIL_AUTOCOMPLETE = "email";
8
- /**
9
- * `autocomplete` value for the hidden token `<input>` the browser fills in
10
- * with the signed Email Verification Token.
11
- */
12
3
  export declare const EVP_TOKEN_AUTOCOMPLETE = "email-verification-token";
13
4
  export declare function emailVerificationProtocolClient(): {
14
5
  id: "email-verification-protocol";
15
6
  $InferServerPlugin: ReturnType<typeof emailVerificationProtocol>;
16
- getActions: ($fetch: import("better-auth/client").BetterFetch) => {
17
- evp: {
18
- /**
19
- * Fetches a fresh, single-use nonce. Call this once per sign-in
20
- * attempt and bind the result to the hidden token input's `nonce`
21
- * attribute before the user submits the form.
22
- */
23
- getNonce: () => Promise<{
24
- data: EvpNonceResponse;
25
- error: null;
26
- } | {
27
- data: null;
28
- error: {
29
- message?: string | undefined;
30
- status: number;
31
- statusText: string;
32
- };
33
- }>;
34
- /**
35
- * Verifies the token the browser filled into the hidden input and,
36
- * on success, signs the user in. Always check `data.verified`
37
- * (or the presence of `error`) and fall back to a normal sign-in
38
- * method when it's falsy - this is expected for the vast majority
39
- * of browsers/users today.
40
- */
41
- verify: (data: {
42
- email: string;
43
- token: string;
44
- nonce: string;
45
- }) => Promise<{
46
- data: null;
47
- error: {
48
- message?: string | undefined;
49
- status: number;
50
- statusText: string;
51
- };
52
- } | {
53
- data: EvpVerifyResponse;
54
- error: null;
55
- }>;
56
- };
57
- };
58
7
  };
59
8
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,6BAA6B,CAAC;AAEjE,wBAAgB,+BAA+B;;wBAGjB,UAAU,CAAC,OAAO,yBAAyB,CAAC;;;YAGlE;;;;eAIG;;;;;;;;;;;;YAIH;;;;;;eAMG;2BACkB;gBACnB,KAAK,EAAE,MAAM,CAAC;gBACd,KAAK,EAAE,MAAM,CAAC;gBACd,KAAK,EAAE,MAAM,CAAC;aACf;;;;;;;;;;;;;EASR"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEzD,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAC9C,eAAO,MAAM,sBAAsB,6BAA6B,CAAC;AAEjE,wBAAgB,+BAA+B;;wBAGjB,UAAU,CAAC,OAAO,yBAAyB,CAAC;EAEzE"}
package/dist/client.js CHANGED
@@ -1,41 +1,8 @@
1
- /**
2
- * `autocomplete` value for the visible email `<input>`. Required by the
3
- * protocol so the browser can offer verified addresses.
4
- */
5
1
  export const EVP_EMAIL_AUTOCOMPLETE = "email";
6
- /**
7
- * `autocomplete` value for the hidden token `<input>` the browser fills in
8
- * with the signed Email Verification Token.
9
- */
10
2
  export const EVP_TOKEN_AUTOCOMPLETE = "email-verification-token";
11
3
  export function emailVerificationProtocolClient() {
12
4
  return {
13
5
  id: "email-verification-protocol",
14
6
  $InferServerPlugin: {},
15
- getActions: ($fetch) => ({
16
- evp: {
17
- /**
18
- * Fetches a fresh, single-use nonce. Call this once per sign-in
19
- * attempt and bind the result to the hidden token input's `nonce`
20
- * attribute before the user submits the form.
21
- */
22
- getNonce: async () => {
23
- return $fetch("/evp/nonce", { method: "GET" });
24
- },
25
- /**
26
- * Verifies the token the browser filled into the hidden input and,
27
- * on success, signs the user in. Always check `data.verified`
28
- * (or the presence of `error`) and fall back to a normal sign-in
29
- * method when it's falsy - this is expected for the vast majority
30
- * of browsers/users today.
31
- */
32
- verify: async (data) => {
33
- return $fetch("/evp/verify", {
34
- method: "POST",
35
- body: data,
36
- });
37
- },
38
- },
39
- }),
40
7
  };
41
8
  }
package/dist/index.d.ts CHANGED
@@ -1,66 +1,15 @@
1
1
  import * as z from "zod";
2
2
  import type { EvpPluginOptions } from "./types";
3
3
  export * from "./types";
4
- /**
5
- * [Email Verification Protocol](https://developer.chrome.com/blog/email-verification-protocol-origin-trial)
6
- * plugin for Better Auth.
7
- *
8
- * EVP lets a browser that supports the (Chrome-only, origin-trial-gated)
9
- * protocol prove a user owns the email address they typed into a form,
10
- * without sending an OTP or magic link. It is entirely progressive
11
- * enhancement: unsupported browsers, mailbox providers that haven't
12
- * implemented the issuer side, or a user simply not signed into their
13
- * mailbox all result in an empty/unverifiable token. Callers MUST treat
14
- * `verified: false` (or the nonce/verify endpoints being unreachable) as a
15
- * normal, expected outcome and fall back to whatever sign-in method the
16
- * app already uses (email OTP, magic link, password, ...) - this plugin
17
- * does not implement a fallback itself, it only adds the EVP fast path.
18
- *
19
- * @see https://github.com/philnash/email-verification-api
20
- */
21
4
  export declare function emailVerificationProtocol<T extends Record<string, any> = {}>(options: EvpPluginOptions<T>): {
22
5
  id: "email-verification-protocol";
23
6
  endpoints: {
24
- /**
25
- * ### Endpoint
26
- *
27
- * GET `/evp/nonce`
28
- *
29
- * ### API Methods
30
- *
31
- * **server:** `auth.api.evpNonce`
32
- *
33
- * **client:** `authClient.evp.getNonce`
34
- *
35
- * Issues a single-use nonce to bind into the hidden
36
- * `email-verification-token` input's `nonce` attribute. Call this
37
- * once per sign-in attempt, right before rendering the form.
38
- */
39
- evpNonce: import("better-auth").StrictEndpoint<"/evp/nonce", {
7
+ evpGetNonce: import("better-auth").StrictEndpoint<"/evp/get-nonce", {
40
8
  method: "GET";
41
9
  }, {
42
10
  nonce: string;
43
11
  expiresIn: number;
44
12
  }>;
45
- /**
46
- * ### Endpoint
47
- *
48
- * POST `/evp/verify`
49
- *
50
- * ### API Methods
51
- *
52
- * **server:** `auth.api.evpVerify`
53
- *
54
- * **client:** `authClient.evp.verify`
55
- *
56
- * Verifies the browser-issued Email Verification Token. On success,
57
- * signs the user in (creating an account first if none exists and
58
- * sign-up isn't disabled) exactly like any other passwordless method
59
- * and returns `{ verified: true }`. On any failure it returns
60
- * `{ verified: false, reason }` instead of throwing, since a failure
61
- * here is an expected, common outcome that the caller should recover
62
- * from by falling back to a different sign-in method.
63
- */
64
13
  evpVerify: import("better-auth").StrictEndpoint<"/evp/verify", {
65
14
  method: "POST";
66
15
  body: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,SAAS,CAAC;AAEjB,cAAc,SAAS,CAAC;AAUxB;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EAC1E,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;;;QAcxB;;;;;;;;;;;;;;WAcG;;;;;;;QAcH;;;;;;;;;;;;;;;;;;WAkBG;;;;;;;;;;;;;;;;;;;;;;;;;;0BA2FiB,MAAM;;;;EAQ/B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,SAAS,CAAC;AAEjB,cAAc,SAAS,CAAC;AAUxB,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EAC1E,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAqHJ,MAAM;;;;EAQ/B"}
package/dist/index.js CHANGED
@@ -10,23 +10,6 @@ const evpVerifyBodySchema = z.object({
10
10
  token: z.string(),
11
11
  nonce: z.string(),
12
12
  });
13
- /**
14
- * [Email Verification Protocol](https://developer.chrome.com/blog/email-verification-protocol-origin-trial)
15
- * plugin for Better Auth.
16
- *
17
- * EVP lets a browser that supports the (Chrome-only, origin-trial-gated)
18
- * protocol prove a user owns the email address they typed into a form,
19
- * without sending an OTP or magic link. It is entirely progressive
20
- * enhancement: unsupported browsers, mailbox providers that haven't
21
- * implemented the issuer side, or a user simply not signed into their
22
- * mailbox all result in an empty/unverifiable token. Callers MUST treat
23
- * `verified: false` (or the nonce/verify endpoints being unreachable) as a
24
- * normal, expected outcome and fall back to whatever sign-in method the
25
- * app already uses (email OTP, magic link, password, ...) - this plugin
26
- * does not implement a fallback itself, it only adds the EVP fast path.
27
- *
28
- * @see https://github.com/philnash/email-verification-api
29
- */
30
13
  export function emailVerificationProtocol(options) {
31
14
  if (!options.origin) {
32
15
  throw new Error("emailVerificationProtocol plugin requires an `origin` option (this relying party's absolute origin)");
@@ -36,22 +19,7 @@ export function emailVerificationProtocol(options) {
36
19
  return {
37
20
  id: "email-verification-protocol",
38
21
  endpoints: {
39
- /**
40
- * ### Endpoint
41
- *
42
- * GET `/evp/nonce`
43
- *
44
- * ### API Methods
45
- *
46
- * **server:** `auth.api.evpNonce`
47
- *
48
- * **client:** `authClient.evp.getNonce`
49
- *
50
- * Issues a single-use nonce to bind into the hidden
51
- * `email-verification-token` input's `nonce` attribute. Call this
52
- * once per sign-in attempt, right before rendering the form.
53
- */
54
- evpNonce: createAuthEndpoint("/evp/nonce", { method: "GET" }, async (ctx) => {
22
+ evpGetNonce: createAuthEndpoint("/evp/get-nonce", { method: "GET" }, async (ctx) => {
55
23
  const nonce = generateRandomString(24, "a-z", "A-Z", "0-9");
56
24
  await ctx.context.internalAdapter.createVerificationValue({
57
25
  identifier: `${NONCE_IDENTIFIER_PREFIX}${nonce}`,
@@ -60,25 +28,6 @@ export function emailVerificationProtocol(options) {
60
28
  });
61
29
  return ctx.json({ nonce, expiresIn: nonceExpiresIn });
62
30
  }),
63
- /**
64
- * ### Endpoint
65
- *
66
- * POST `/evp/verify`
67
- *
68
- * ### API Methods
69
- *
70
- * **server:** `auth.api.evpVerify`
71
- *
72
- * **client:** `authClient.evp.verify`
73
- *
74
- * Verifies the browser-issued Email Verification Token. On success,
75
- * signs the user in (creating an account first if none exists and
76
- * sign-up isn't disabled) exactly like any other passwordless method
77
- * and returns `{ verified: true }`. On any failure it returns
78
- * `{ verified: false, reason }` instead of throwing, since a failure
79
- * here is an expected, common outcome that the caller should recover
80
- * from by falling back to a different sign-in method.
81
- */
82
31
  evpVerify: createAuthEndpoint("/evp/verify", { method: "POST", body: evpVerifyBodySchema }, async (ctx) => {
83
32
  const email = ctx.body.email.trim().toLowerCase();
84
33
  const { token, nonce } = ctx.body;
package/dist/types.d.ts CHANGED
@@ -1,21 +1,13 @@
1
1
  export interface EvpVerifiedEmail {
2
- /** The mailbox address the issuer vouched for. */
3
2
  email: string;
4
- /** The issuer that signed the Email Verification Token. */
5
3
  issuer: string;
6
- /** The relying-party origin the token was bound to. */
7
4
  audience: string;
8
- /** Timestamps reported by the verification library, if any. */
9
5
  issuedAt?: unknown;
10
- /** Any additional claims the issuer included in the token. */
11
6
  claims?: Record<string, unknown>;
12
7
  }
13
8
  export interface EvpVerificationError {
14
- /** Which stage of verification failed (DNS lookup, signature check, ...). */
15
9
  stage?: string;
16
- /** Machine-readable error code. */
17
10
  code: string;
18
- /** Human-readable message, safe to log. */
19
11
  message: string;
20
12
  cause?: unknown;
21
13
  }
@@ -27,48 +19,19 @@ export type EvpVerificationResult = {
27
19
  error: EvpVerificationError;
28
20
  };
29
21
  export interface EvpVerifyParams {
30
- /** The SD-JWT+KB presentation the browser put in the hidden form field. */
31
22
  token: string;
32
- /** The nonce this relying party issued for the current attempt. */
33
23
  nonce: string;
34
- /** The email address the user typed into the form. */
35
24
  email: string;
36
- /** This relying party's absolute HTTP(S) origin. */
37
25
  audience: string;
38
26
  }
39
27
  export interface EvpPluginOptions<T extends Record<string, any> = {}> {
40
- /**
41
- * This relying party's absolute origin, e.g. `https://example.com`. Sent
42
- * to the verifier as the `audience` and must match the origin the Chrome
43
- * origin-trial token (and the DNS/issuer records) were issued for.
44
- */
45
28
  origin: string;
46
- /**
47
- * How long an issued nonce stays valid for, in seconds.
48
- * @default 120
49
- */
50
29
  nonceExpiresIn?: number;
51
- /**
52
- * When true, a verified email that has no existing account is rejected
53
- * instead of provisioning a new user.
54
- * @default false
55
- */
56
30
  disableSignUp?: boolean;
57
- /**
58
- * Additional fields to set on a newly created user.
59
- */
60
31
  userFields?: (verified: EvpVerifiedEmail) => T;
61
- /**
62
- * Called after a session has been created for a successfully verified
63
- * email. Useful for analytics/logging.
64
- */
65
32
  onVerified?: (verified: EvpVerifiedEmail & {
66
33
  userId: string;
67
34
  }) => void | Promise<void>;
68
- /**
69
- * Overrides the verification call - mainly useful for tests. Defaults to
70
- * `verifyEmailToken` from the `email-verification-api` package.
71
- */
72
35
  verify?: (params: EvpVerifyParams) => Promise<EvpVerificationResult>;
73
36
  }
74
37
  export interface EvpNonceResponse {
@@ -77,12 +40,6 @@ export interface EvpNonceResponse {
77
40
  }
78
41
  export interface EvpVerifyResponse {
79
42
  verified: boolean;
80
- /**
81
- * Present when `verified` is false. Callers should treat any failure as
82
- * a signal to fall back to a normal sign-in method (OTP, magic link,
83
- * password, ...) - this is an experimental, Chrome-only capability and
84
- * is expected to fail for most users.
85
- */
86
43
  reason?: string;
87
44
  token?: string;
88
45
  user?: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,GACrC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE;IAClE;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,CAAC,CAAC;IAE/C;;;OAGG;IACH,UAAU,CAAC,EAAE,CACX,QAAQ,EAAE,gBAAgB,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAC5C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,GACrC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,CAAC,CAAC;IAC/C,UAAU,CAAC,EAAE,CACX,QAAQ,EAAE,gBAAgB,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAC5C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "better-auth-evp",
3
- "version": "0.1.0",
3
+ "version": "1.0.1",
4
4
  "description": "Email Verification Protocol (Chrome origin trial) plugin for Better Auth, with automatic fallback to any other sign-in method",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
Binary file