* 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>
* 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>
* 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"
* 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
* 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>
* 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>