Commit Graph

270 Commits

Author SHA1 Message Date
Anthony DePasquale
0e12a5cb7a SvelteKit, Next.js, SolidStart 2025-04-13 14:11:08 +02:00
Anthony DePasquale
25d517e99e TypeScript 2025-04-13 14:11:08 +02:00
gandan
e077be39a2 docs: correct Svelte Kit to SvelteKit (#2246) 2025-04-13 14:59:47 +03:00
Kinfe123
c8b52765e2 lint 2025-04-13 14:05:39 +03:00
Bereket Engida
acf3f89445 docs(hero): remove outdated changelog link for v1.2 2025-04-13 01:59:32 +03:00
Bereket Engida
a927461ae5 fix: ipAddress and userAgent missing on server authentication (#2121)
* fix: ipAddress and userAgent missing on server authentication

* update craeteSession to use headers

* chore: revert version
2025-04-11 13:51:30 +03:00
John Tanzer
99ffacc251 feat: have-i-been-pwned plugin (#1978)
* feat: add have i been pwned first draft plugin

* fix: remove error being thrown when no password or body

* fix: return the ctx and ctx body check

* feat: add custom message option

* feat: add first draft docs for plugin

* fix: import in docs

* fix: big typo

* fix: typo

* fix: typo and correct error message

* fix: typo and options optional

* fix: small fixes import and safe options

* feat: add tests - not sure i totaly understand getTestInstance :(

* fix: lint

* simplify checks and fix tests

* feat: add "Have I Been Pwned" plugin to sidebar and update documentation

* build

---------

Co-authored-by: Bereket Engida <bekacru@gmail.com>
2025-04-11 12:39:41 +03:00
Khiet Tam Nguyen
4590b5b456 feat: zoom social provider (#1671)
* feat: zoom oauth

* docs: zoom oauth instructions

* docs: notes on adding more zoom scopes depending on use case

* chore: remove console.log

* update zoom icon

* update zoom icon

* fix: zoom export

* chore: lint

---------

Co-authored-by: KinfeMichael Tariku <65047246+Kinfe123@users.noreply.github.com>
Co-authored-by: Bereket Engida <bekacru@gmail.com>
2025-04-11 10:40:54 +03:00
Maxwell
986614b241 feat: createAdapter and useNumberId (#1926)
* refactor(adapter): `createAdapter` helper

* update: Kysely adapter support

* update: memory adapter

* chore: cleanup

* update: MongoDB adapter supported

* update: mongodb adapter file names

* update: support for prisma adapter

- also fixed memory adapter with `getField`
- disabled all debug logs by default

* chore: lint

* fix: generate an `id` if it isn't already provided

* update(test): init config snapshot

* update: existing adapters tests to include an `id` existence check

* fix: renamed prisma adapter file names

* ^

* update(mongo): Removed `disableIdGeneration` for mongo adapter

* fix: dont add `id` from fields if `disableIdGeneration` is false

* fix: adapter converting dates to string using the wrong value data

* add: create-adapter tests

* update: moved `adapter` to `create-adapter` under the existing `adapters` folder

* WIP: docs

* fix: create-adapter test importing from wrong path

* WIP: docs

* update: key transformation map options are now objs not fns

* chore: lint

* update: cleanup & added debugLogs/usePlural option to some adapters

* update: tests

* chore: cleanup

* update: fields name & made customTransforminput/output to run after supportsDates/supportsBoolean/SupportsJSON to run

* chore: lint

* Update: docs

* update: update-many to not use transformOutput

* chore: lint

* fix: adapter options breaking

* update: set the default limit on findMany

* update: docs

* update: docs & cleaned up code

* update: create schema comes with `tables` now

* This is useless

* fix: api-key shouldn't handle id gen in row creation

* chore: lint

* WIP: useNumberId

* chore: cleanup

* removed all cases of `id` during adapter.create call

* update: useNumberId

* update: drizzle adapter schema generation

- update: pg now sets `id` field to use `uuid`.
- fix: sets the correct reference `onDelete` action.
- refactor: cleaned up the code a lot more

* update: added `supportNumericIds` in create adapter options

* chore: cleanup

* update(tests): added option to disable any adapter tests & created a `useNumberId` test

* fix: skip tests options were using old method

* chore: lint

* WIP: Drizzle tests with number id

* chore: lint

* fix: memory adapter failing on number id adapter tests

* chore: cleanup

* fix: adapter tests fail due to emails needing to be unique

* update: support drizzle adapter use-number-id

* fix: cleanup Drizzle Adapter tests

* fix: drizzle schema generation for reference id fields

* fix: type errs in memory adapter tests

* fix: memory adapter tests

* Update init.test.ts.snap

* fix: prisma tests correctly uses the right primsa client per schema

* Delete run-vitest.ts

* update: create-adapter to support `getDefaultFieldName`

* update: create-adapter adapter options updated

* fix: adapters using older function names

* fix: create-adapter now converts where clauses & added tests

* update: new `getFieldAttributes` option in create-adapter, and fixed convert where clause fn

* chore: cleanup

* update: convertWhereClause in create-adapter improved

* update: BAOptions to start using `database` & updated adapter tests

* fix: type errors

* chore: lint

* update: default config values for the create-adapter config

* fix: getModelName doesnt take into account of plural

* chore: cleanup

* update: improved getDefaultModelname

* fix: create-adapter transform input doesn't take into account reference IDs

* fix: transformInput on reference IDs doesn't take into account of array IDs

* chore: lint

* fix: prisma tests

* fix: Prisma adapter tests running one after another

* fix: init snapshot should state supportJSON as `false`

* fix: drizzle adapter tests

* update: adapter test options to allow passing a test prefix

* chore: add state.txt to gitignore

* remove: state.txt from gitignore, it's useless

* chore: lint

* Update adapter.prisma.numberid.test.ts

* fix: get-migration for mysql & mssql `id` fields to use varchar

* chore: cleanup

* update: adapter comes with adapter-test-debug-log functions

* update: made adapterTestDebugLog functions only be in adapter if config enabled it

* fix: transactionId for debug logs not working correctly

This was due to the adapter being reinitialized each test case

* update: Added colors to debug logs

* update: adapter tests a little more refined

* add: deepmerge dev deps to deep merge better auth options config for adapters

* fix: create-adapter types

* update: revert back to old types

* fix: prisma adapter tests now run one after another

* fix: kysely adapter to work when no `id` is provided

* update: mongoDB to set `supportNumericids` to false

* update(docs): discuss new `database` object in BetterAuthOptions

* add: support for custom ID generation

* fix: docs had incorrect default value for `supportsJSON`

* update(docs): added number id adapter test documentation

* fix: drizzle-adapter mysql tests

* update: drizzle-adapter tests to use deepmerge

* add: drizzle-adapter mysql tests to test useNumberId

* add: Prisma generate to support number id

* update: support the old `generateId` option, but warn the user for deprecation

* update: init test snapshot

* update: adapter tests not included in normal tests

* Update pnpm-lock.yaml

* fix: typo in file names for kysley test files

* update: separated adapter tests

* Update pnpm-lock.yaml

* fix: please tell me I actually fixed this

* fix: pnpm-lock merge conflict

* chore: lint

* fix: sveltekit pkg.json merge conflicts (hopefully)

* Delete pnpm-lock.yaml

* update: createSchema takes into account of rate-limit and secondaryStorage

* improve docs

* add drizzle returning id retriver

* chore: fix test script

---------

Co-authored-by: Bereket Engida <bekacru@gmail.com>
2025-04-11 09:04:49 +03:00
Bereket Engida
155d9486ae feat: one-time token plugin (#2151) 2025-04-08 20:50:13 +03:00
Bereket Engida
2b38023928 chore: update nizzy profession 2025-04-02 19:21:25 +03:00
Kinfe123
f9d735fb0e lint 2025-04-01 14:15:56 +03:00
Kinfe123
1c605cebde fix: tooltip arrow 2025-04-01 14:15:35 +03:00
Bereket Engida
cad6470b87 docs: fix incorrect field labels and remove database tables container 2025-03-31 07:26:18 +03:00
Zerubbabel
df41406acb docs(builder): ensure password confirmation field has type='password' (#2021) 2025-03-30 10:21:10 +03:00
its_Exey_
58564fd5ca docs : default export sign-up component in the box builder (#1776) 2025-03-26 23:52:15 +03:00
KinfeMichael Tariku
e0835c9d38 docs: fix ui builder code block (#1999) 2025-03-26 21:38:40 +03:00
KinfeMichael Tariku
46e39415a2 docs: 404 page (#2005) 2025-03-26 09:42:11 +03:00
Bereket Engida
8ecdff9c15 docs: improve docs search bar look 2025-03-25 18:17:53 +03:00
Bereket Engida
889b51df5e docs: fix logo layout width 2025-03-22 20:41:50 +03:00
KinfeMichael Tariku
80d5a5de0b docs: add branding assets (#1900)
* feat: branding with multiple variant
---------
Co-authored-by: Bereket Engida <bekacru@gmail.com>
2025-03-21 15:41:10 +03:00
Thomas Kaul
fa2cd17ff7 docs: fix typo in features sections (#1878) 2025-03-19 22:08:01 +03:00
Fuma Nama
00ad781427 docs: improve layout consistency (#1831)
* Fix sidebar tabs pre-rendering

* Improve sidebar consistency

* improve searchbar alignment

* improve animation
2025-03-15 19:54:27 +03:00
Bereket Engida
6b4e20c61b docs: add supabase migration guide (#1829) 2025-03-15 16:10:47 +03:00
deestt
440784d3e1 feat: add Kick social provider (#1702)
* Add kick social provider

* Custom implementation `getUserInfo`

* Fix token endpoint URL

* add kick docs

* Update kick.mdx

* docs: update icon sizes to 1.2em, add "Kick"

* chore: lint

---------

Co-authored-by: Bereket Engida <bekacru@gmail.com>
2025-03-13 23:56:59 +03:00
Bereket Engida
c72941299f docs: update contributing guide and sidebar links 2025-03-13 09:15:06 +03:00
Bereket Engida
35fe939de9 fix(stripe): rely on subscription Id instead of reference ID for subscriptions (#1789) 2025-03-12 15:42:14 +03:00
Bereket Engida
dd31d6c9e3 docs: refine UI components and styling 2025-03-08 22:09:19 +03:00
Bereket Engida
ebcf8c907c docs: refine UI styling and remove loglib 2025-03-08 20:05:50 +03:00
Bereket Engida
b5f638ca45 docs: upgrade to tailwind v4, react 19, fuma docs 15 (#1735) 2025-03-08 19:33:31 +03:00
Maxwell
84258eb9f9 docs(fix): Polar icon breaking on mobile devices (#1718) 2025-03-07 19:50:29 +03:00
Bereket Engida
fe82021db3 docs: add Polar plugin documentation and sidebar entry 2025-03-04 18:43:32 +03:00
Bereket Engida
70c379179e docs: fix typo (3d->3rd) 2025-03-03 11:25:45 +03:00
Bereket Engida
c3be8155f8 docs: improve hero section dark mode styling 2025-03-03 08:09:05 +03:00
Maged Ibrahim
e42a4e0bdb docs: add tiktok to UI builder (#1635) 2025-03-02 18:56:09 +03:00
Bereket Engida
25de4b5f4f docs(hero): update changelog badge styling and layout 2025-03-02 12:49:00 +03:00
Bereket Engida
1c91294e23 fix(stripe): improve subscription cancellation handling and add callback endpoint 2025-03-02 11:40:01 +03:00
Bereket Engida
6f2b9d46ad docs: update "new" badge styling in sidebar 2025-03-02 10:20:24 +03:00
Maxwell
789a42b5b8 docs: "new" badge in sidebar (#1624)
* add(docs): "new" badge in sidebar

* update: made badge place at the end of the div

* add: roblox, tiktok & VK badges

* update: removed border from badge

- also readjusted roblox position

* remove: new badge from "other social providers"
2025-03-02 10:15:10 +03:00
Maxwell
8a68ed7b65 docs: move landing page's testimonial avatars locally (#1623) 2025-03-02 09:42:35 +03:00
KinfeMichael Tariku
84ef00c8d2 docs: add tiktok (#1615) 2025-03-02 02:01:20 +03:00
KinfeMichael Tariku
86db0c2039 docs: fix metadata theming (#1613)
* fix: light theme issue

* fix: metadata issue

* cleanup the layout

* changelog-layout default clean up
2025-03-02 01:45:19 +03:00
KinfeMichael Tariku
d76d621feb docs: v1.2 banner (#1608) 2025-03-01 23:47:34 +03:00
Bereket Engida
51e756e91e docs(landing):update avatar 2025-03-01 22:00:27 +03:00
Bereket Engida
68e0f46bdb docs: replace oslo with @better-auth/utils 2025-03-01 03:44:07 +03:00
Bereket Engida
86cbf70684 docs: v1.2 release notes (#1602) 2025-03-01 02:22:32 +03:00
Bereket Engida
43cae44617 chore: lint 2025-03-01 01:27:18 +03:00
Bereket Engida
4f56078e4b feat: stripe plugin to handle subscriptions and customers (#1588)
* init

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* feat(stripe): enable subscription support and update pricing plans

* feat(stripe): add Vitest configuration and initial tests for Stripe integration

* feat(stripe): implement setCookieToHeader function and update tests for customer creation and subscription handling

* feat(stripe): add seats support for subscriptions and update related endpoints

* feat(stripe): update schema to include unique referenceId, stripeSubscriptionId, and periodEnd fields

* wip docs

* docs

* docs: imporves

* fix(stripe): update webhook handlers to use correct subscription identification

* refactor(stripe): simplify customer management by storing Stripe customer ID directly on user

* chore(stripe): update package configuration and build setup

- Migrated from tsup to unbuild for build configuration
- Updated package.json with improved export and dependency management
- Added build configuration for better module support
- Removed tsup configuration file

* chore(stripe): update pnpm lockfile dependencies

- Moved `better-auth` from devDependencies to dependencies
- Added `zod` as a direct dependency
- Reorganized package dependencies in the lockfile

* feat(stripe): enhance subscription management and error handling

- Added toast error handling for subscription upgrades in the dashboard
- Updated Stripe price IDs for different plans
- Improved Stripe plugin documentation with beta warning and team subscription details
- Implemented intermediate redirect for checkout success to handle race conditions
- Added support for fetching and updating subscription status after checkout
- Fixed Next.js cookie handling and build configuration

* chore: update snapshot
2025-03-01 01:20:17 +03:00
Maxwell
b6d18ce16f docs(add): database category (#1315)
* docs: sidebar updated for new category

* fix: icons to use fill version

* add: the rest of the pages for the database category

* update: MySQL done

* update: SQLite done. (and updated MySQL)

* update: PostgreSQL

* update: mssql done

* update: added callout to Kysley docs for each core dialect

* update: other relational databases page

* update: drizzle

* docs(fix): wrong words on drizzle page

* update: mongo docs

* update: prisma done

* update: community adapter page

* update: concept/database to refer to the documentation for each dialect in the docs category

* update: drizzle to mention the schema definitions

---------

Co-authored-by: Bereket Engida <86073083+Bekacru@users.noreply.github.com>
2025-03-01 00:32:46 +03:00
Maxwell
ec9edc357a feat: API Key plugin (#1515)
* feat: API-key plugin

* add: `deleteAllExpiredApiKeys` functionality

* fix: fetching sessions from headers

* update: types & create-api-key now checks for min & max expiresIn values

* tests: Started working on tests

* add: features

- added list functionality
- added min & max prefix length
- added min & max name length
- added metadata enable/disable option
- added `disableSessionForAPIKeys` option
- verify API key now checks for expiration & refills
- added regex to check prefix of api key

* fix: create-api-key's expiration using `/` instead of `*`

* update: schema `metadata` transforms invalid values as `null`

* fix: create-api-key metadata should go through transformation

* fix: missing metadata wouldn't have `'null'` as value

* update: error types

* fix: remove console.logs from verify

* fix: rate-limit not working

* fix: rate-limit plugin options types

* chore: remove logs

* update: removed `key` field from result apiKey type of the update-api-key endpoint

* fix: typo

* update: create & update if checks

- create now checks if custom expiration times are allowed
- update now allows name values & checks if name is within length range
- update now also checks for custom expiration times are allowed

* update(WIP): tests

* fix: added the missing error throw when there is no values to update

* fix: update-api-key checks expiresIn in days, not ms

- also updated create-api-key & update-api-key to have more detailed event logging

* fix: update api key's remaining count's min & max checks

- also added more detail to the events

* fix: update-api-key can now update refillInterval & refillAmount properly

* fix: metadata in update-api-key transforms between string & obj correctly

* add: all of the `update` tests

* update: get-api-key metadata is now obj instead of string

* add: listApiKeys functionality

* fix: get-session to use mock session based on header API keys

* update: tests to test against get-session, get-api-key, and list-api-key

* add: `start` field to show the first few characters of an API key

* fix: very silly mistake

* update: tests to validate `start` property

* update: create-api-key checks if properties are set from server & allows for custom rate-limit rules

- also updated tests to check against this

* update: verify-api-key to check if a row has the right user-id

- this also should speed up the DB process too. (I'm pretty sure)

* update: `delete-all-expired-api-keys` endpoint added & updated list-api-keys endpoint function name

* add: customAPIKeyValidator fn, and fixed verification `remaining` and `lastRefillAt` values updating DB incorrectly

* update: documentation

* add: rate-limiting enable/disable on a per-key level

* update: docs

* fix: correct expiration time units and improve error messages in API key handling

* fix: allow creating apiKeys by providing userId on the server

* fix: user userId instead of headers to differ server vs client calls on create api key

* wip

* fix: JSDoc comment

* fix: tests not passing due to invalid expiresIn value

Since the expiresIn got changed from `ms` to `sec`, this needed to be changed as well.

* wip

* fix(api-key): update tests and error messages for API key verification

* fix(api-key): update API key fixes

* refactor tests and remove events

* refactor(api-key): remove unused event handling and clean up type definitions

* add: minimum values to `create-api-key` numeric input options

* fix: remove `opts.events` in delete-api-key route

* refactor: all returning routes which can contain `key`

- more performant
- better typed
- cleaner code

:D

* update: added minimum values to update-api-key endpoint as well

* fix: removed `maximumRemaining` & `minimumRemaining` default values in `opts`

* docs: ready (unless I make minor adjustments later) 🫡

* fix(docs): links & invalid code examples

* fix: output transform of metadata to use ParseJSON

* fix: tests failing due to async metadata transform output

* fix: return types for verify-api-key endpoint

* fix: tests failing due to invalid expiresIn minimum value

* docs: reorder sidebar items for API Key

* wip

* docs(api-key): enhance documentation with permissions and usage details

- Updated API key documentation with comprehensive permissions explanation
- Added examples for setting default permissions, creating, verifying, and updating API keys with permissions
- Clarified API key creation, verification, and update processes
- Improved code examples and descriptions for better understanding

* chore: lint

* fix(docs): incorrect wording / explanation on refillInterval/refillAmount

* add(docs): missing permissions info in docs

---------

Co-authored-by: Bereket Engida <bekacru@gmail.com>
2025-02-28 17:11:03 +03:00