Commit Graph

119 Commits

Author SHA1 Message Date
Bereket Engida
9cc2e3d8ab feat: MCP plugin (#2666)
* chore: wip

* wip

* feat: mcp plugin

* wip

* chore: fix lock file

* clean up

* schema

* docs

* chore: lint

* chore: release v1.2.9-beta.1

* blog

* chore: lint
2025-05-23 12:44:51 -07:00
KinfeMichael Tariku
1f319519c7 chore: logo updates (#2745) 2025-05-22 02:14:41 -07:00
KinfeMichael Tariku
581ce7263f docs: clerk migrations guide (#2741)
* docs: typo in admin plugin

* docs: added clerk migration guide

* clean ups

* handling null

* added the icon

* lint

* unnessary options

* improve guide

---------

Co-authored-by: Bereket Engida <bekacru@gmail.com>
2025-05-22 00:23:36 -07:00
Anthony
5c9c5f5ef7 docs: fix grammar and spelling mistakes (#2300)
* Next.js

* ID

* Punctuation, code

* SQLite

* Capitalization

* Various corrections in "JWT"
2025-05-13 13:26:51 -07:00
Bereket Engida
defadb3b72 docs: change banner style 2025-05-06 13:35:55 -07:00
Bereket Engida
ae18f021c9 docs: add dub plugin docs 2025-05-06 10:23:50 -07:00
Samson Tesfaye
9e70836d12 docs: add Fastify integration guide 2025-05-02 05:37:18 -07:00
KinfeMichael Tariku
c140af64f9 docs: resource reference page (#2357) 2025-04-20 00:53:50 +03:00
Kinfe123
03d4429712 misalignment due to icon size 2025-04-17 06:31:00 +03:00
KinfeMichael Tariku
3c56085621 docs: minor updates to docs 2025-04-14 13:35:07 +03:00
Bereket Engida
46ff537535 chore: update lock file 2025-04-13 23:10:21 +03:00
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
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
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
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
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
KinfeMichael Tariku
84ef00c8d2 docs: add tiktok (#1615) 2025-03-02 02:01:20 +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
Maxwell
8fb25bdd6a docs(rename): node to express in integration docs (#1535) 2025-02-23 09:18:41 +03:00
Bereket Engida
cb691e78bc docs: update captcha docs and fix sidebar svg 2025-02-14 10:18:21 +03:00
Rizvan Nukhtarov
700d392759 feat: add VK ID social provider (#1013)
* feat: add VK ID social provider

* lint

* remove data

* fix emailVerified property

---------

Co-authored-by: Bereket Engida <86073083+Bekacru@users.noreply.github.com>
2025-02-14 09:17:14 +03:00
Oscar
363ca39db7 feat: Captcha Plugin with multiple providers (#957)
* feat: create Cloudflare Turnstile middleware plugin

* fix: middleware returns new Response & working unit tests

* chore: renamed plugin to cloudflare-turnstile

* docs: adds Cloudflare Turnstile plugin documentation

* docs: improves Cloudflare Turnstile's docs

* feat: move to generic captcha plugin, supporting multiple providers
2025-02-14 09:11:19 +03:00
Bereket Engida
9243529cc0 chore:lint 2025-02-06 15:10:29 +03:00
Maxwell
095661f387 docs: add other-social-providers page (#1340)
* add(docs): other-social-providers page

* add: missing social provider URLs and scopes
2025-02-03 17:16:05 +03:00
Bereket Engida
d75d8b6baa chore: lint 2025-01-29 15:05:35 +03:00
Maxwell
47f14a22cb docs: new contribution category (#1174) 2025-01-21 11:05:17 +03:00
Quan Pham
b1c6b5a5e4 docs: prop names and react key warnings (#1234)
* fix: docs component props

* fix: props name
2025-01-17 10:47:58 +03:00
Maxwell
b036061263 docs: guide for optimizing for performance (#1199)
* add(docs): guide for optimizing for performance

* update: reworded some areas
2025-01-14 11:02:25 +03:00
Denys
028bc59b1f docs: add spotify provider to the sidebar (#1147)
* fix: add spotify provider to the sidebar

* fix: formatting
2025-01-12 10:46:39 +03:00
Bereket Engida
9f2e45b8c7 chore: cleanup 2025-01-06 14:30:39 +03:00
Multinite
95344a6784 Browser extensions example & guide (#1117)
* init: plasmo example project

* feat: add example for browser extension with BetterAuth

- Introduced a basic browser extension example using Plasmo framework and BetterAuth for authentication.
- Updated .env.example with BetterAuth configuration.
- Removed unnecessary GitHub workflow file for submitting to Web Store.
- Updated .gitignore to exclude local env files.
- Improved README documentation for the example.
- Included BetterAuth dependency in the package.json and updated the pnpm-lock.yaml.

* add: browser-extension example complete

* fix: content.tsx

* remove: browser-extension package as that isn't needed

* add: browser extension buide

* docs: added references in the guide to the examples code

* remove(dep): unused dependency

* refactor: package.json - remove author & update description

* wip

* chore: update lock file

* docs: update icon

---------

Co-authored-by: Bereket Engida <bekacru@gmail.com>
2025-01-04 18:14:59 +03:00
Bereket Engida
4555f92063 feat: OIDC Plugin (#765) 2024-12-21 02:12:04 +03:00
Bereket Engida
384ef1c344 feat: hooks (#916) 2024-12-20 21:00:14 +03:00
Bereket Engida
f9102b1542 feat: OpenID SSO Provider (#951) 2024-12-20 20:08:42 +03:00
Multinite
bf522217d7 docs: add FAQ page to docs (#875) 2024-12-14 21:30:42 +03:00
Behon Baker
534cf8a607 docs: nitro Integration (#694) 2024-12-12 11:27:31 +03:00