From 1b56c21bebe83133e20dfd18ddcc28005914ee7d Mon Sep 17 00:00:00 2001 From: Bereket Engida Date: Sun, 1 Sep 2024 00:31:02 +0300 Subject: [PATCH] feat: fm integrations --- .vscode/settings.json | 3 + dev/bc-fe/hono/db.sqlite | Bin 69632 -> 69632 bytes dev/next-app/src/app/api/[...auth]/route.ts | 10 +- dev/next-app/src/lib/auth-client.ts | 5 +- dev/solidjs/.gitignore | 28 + dev/solidjs/README.md | 32 + .../app.config.timestamp_1725139690308.js | 6 + dev/solidjs/app.config.ts | 3 + dev/solidjs/db.sqlite | Bin 0 -> 45056 bytes dev/solidjs/package.json | 22 + dev/solidjs/postcss.config.cjs | 6 + dev/solidjs/public/favicon.ico | Bin 0 -> 664 bytes dev/solidjs/src/app.css | 20 + dev/solidjs/src/app.tsx | 19 + dev/solidjs/src/components/Counter.tsx | 13 + dev/solidjs/src/components/Nav.tsx | 19 + dev/solidjs/src/entry-client.tsx | 4 + dev/solidjs/src/entry-server.tsx | 21 + dev/solidjs/src/global.d.ts | 1 + dev/solidjs/src/lib/auth.ts | 15 + dev/solidjs/src/lib/client.ts | 2 + dev/solidjs/src/routes/[...404].tsx | 25 + dev/solidjs/src/routes/about.tsx | 25 + dev/solidjs/src/routes/api/auth/*auth.ts | 4 + dev/solidjs/src/routes/index.tsx | 31 + dev/solidjs/tailwind.config.cjs | 8 + dev/solidjs/tsconfig.json | 19 + dev/svelte/.gitignore | 21 + dev/svelte/.npmrc | 1 + dev/svelte/README.md | 38 + dev/svelte/db.sqlite | Bin 0 -> 61440 bytes dev/svelte/package.json | 25 + dev/svelte/src/app.d.ts | 13 + dev/svelte/src/app.html | 12 + dev/svelte/src/hooks.server.ts | 6 + dev/svelte/src/lib/auth.ts | 16 + dev/svelte/src/lib/client.ts | 7 + dev/svelte/src/lib/index.ts | 1 + dev/svelte/src/routes/+page.svelte | 79 + dev/svelte/static/favicon.png | Bin 0 -> 1571 bytes dev/svelte/svelte.config.js | 18 + dev/svelte/tsconfig.json | 19 + dev/svelte/vite.config.ts | 6 + packages/better-auth/package.json | 5 + .../better-auth/src/api/routes/sign-in.ts | 6 + packages/better-auth/src/client/base.ts | 5 +- .../src/client/create-client-plugin.ts | 1 + packages/better-auth/src/client/solid.ts | 17 + packages/better-auth/src/client/svelte.ts | 37 + packages/better-auth/src/client/type.ts | 1 + .../better-auth/src/integrations/next-js.ts | 11 + .../src/integrations/solid-start.ts | 15 + .../src/integrations/svelte-kit.ts | 37 + .../src/plugins/organization/client.ts | 146 + packages/better-auth/src/utils/base-url.ts | 20 +- packages/better-auth/tsup.config.ts | 5 + pnpm-lock.yaml | 3057 ++++++++++++++++- 57 files changed, 3918 insertions(+), 48 deletions(-) create mode 100644 dev/solidjs/.gitignore create mode 100644 dev/solidjs/README.md create mode 100644 dev/solidjs/app.config.timestamp_1725139690308.js create mode 100644 dev/solidjs/app.config.ts create mode 100644 dev/solidjs/db.sqlite create mode 100644 dev/solidjs/package.json create mode 100644 dev/solidjs/postcss.config.cjs create mode 100644 dev/solidjs/public/favicon.ico create mode 100644 dev/solidjs/src/app.css create mode 100644 dev/solidjs/src/app.tsx create mode 100644 dev/solidjs/src/components/Counter.tsx create mode 100644 dev/solidjs/src/components/Nav.tsx create mode 100644 dev/solidjs/src/entry-client.tsx create mode 100644 dev/solidjs/src/entry-server.tsx create mode 100644 dev/solidjs/src/global.d.ts create mode 100644 dev/solidjs/src/lib/auth.ts create mode 100644 dev/solidjs/src/lib/client.ts create mode 100644 dev/solidjs/src/routes/[...404].tsx create mode 100644 dev/solidjs/src/routes/about.tsx create mode 100644 dev/solidjs/src/routes/api/auth/*auth.ts create mode 100644 dev/solidjs/src/routes/index.tsx create mode 100644 dev/solidjs/tailwind.config.cjs create mode 100644 dev/solidjs/tsconfig.json create mode 100644 dev/svelte/.gitignore create mode 100644 dev/svelte/.npmrc create mode 100644 dev/svelte/README.md create mode 100644 dev/svelte/db.sqlite create mode 100644 dev/svelte/package.json create mode 100644 dev/svelte/src/app.d.ts create mode 100644 dev/svelte/src/app.html create mode 100644 dev/svelte/src/hooks.server.ts create mode 100644 dev/svelte/src/lib/auth.ts create mode 100644 dev/svelte/src/lib/client.ts create mode 100644 dev/svelte/src/lib/index.ts create mode 100644 dev/svelte/src/routes/+page.svelte create mode 100644 dev/svelte/static/favicon.png create mode 100644 dev/svelte/svelte.config.js create mode 100644 dev/svelte/tsconfig.json create mode 100644 dev/svelte/vite.config.ts create mode 100644 packages/better-auth/src/client/solid.ts create mode 100644 packages/better-auth/src/client/svelte.ts create mode 100644 packages/better-auth/src/integrations/next-js.ts create mode 100644 packages/better-auth/src/integrations/solid-start.ts create mode 100644 packages/better-auth/src/integrations/svelte-kit.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 1b972bfc68..ac72937d35 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,5 +6,8 @@ }, "[jsonc]": { "editor.defaultFormatter": "biomejs.biome" + }, + "[svelte]": { + "editor.defaultFormatter": "svelte.svelte-vscode" } } diff --git a/dev/bc-fe/hono/db.sqlite b/dev/bc-fe/hono/db.sqlite index ce459eab41b859fa91e2424299151f3a4880b63f..6474cce883e885c2228b79ed49f8d97181b5e4c7 100644 GIT binary patch delta 307 zcmZozz|ydQWr8%L@}*S?w9HJuOd|s$6I}xfU1P%#LklYd z6Clzvu{4;xt9FJxE6kAa61TEk=du)cPe-Sa5Vy>bfTED>9HZ<=p9~|XiYjlch8RrV zSvzy`q8d|fb1PF*D^p87GfP8|xtptMyO;#n_>~#>mHD^xd+<-<&*i_fS { - return handler(req); -}; - -export { handler as GET }; +export const { GET, POST } = toNextJsHandler(auth); diff --git a/dev/next-app/src/lib/auth-client.ts b/dev/next-app/src/lib/auth-client.ts index b3c82c06d7..9d11b16704 100644 --- a/dev/next-app/src/lib/auth-client.ts +++ b/dev/next-app/src/lib/auth-client.ts @@ -1,8 +1,9 @@ import { createAuthClient } from "better-auth/react"; -import type { auth } from "./auth"; +import { organization } from "better-auth/client"; -export const authClient = createAuthClient({ +export const authClient = createAuthClient({ baseURL: "http://localhost:3000/api/auth", + authPlugins: [organization], }); export const { diff --git a/dev/solidjs/.gitignore b/dev/solidjs/.gitignore new file mode 100644 index 0000000000..ff04496935 --- /dev/null +++ b/dev/solidjs/.gitignore @@ -0,0 +1,28 @@ + +dist +.solid +.output +.vercel +.netlify +.vinxi + +# Environment +.env +.env*.local + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +*.launch +.settings/ + +# Temp +gitignore + +# System Files +.DS_Store +Thumbs.db diff --git a/dev/solidjs/README.md b/dev/solidjs/README.md new file mode 100644 index 0000000000..a84af3943c --- /dev/null +++ b/dev/solidjs/README.md @@ -0,0 +1,32 @@ +# SolidStart + +Everything you need to build a Solid project, powered by [`solid-start`](https://start.solidjs.com); + +## Creating a project + +```bash +# create a new project in the current directory +npm init solid@latest + +# create a new project in my-app +npm init solid@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +Solid apps are built with _presets_, which optimise your project for deployment to different environments. + +By default, `npm run build` will generate a Node app that you can run with `npm start`. To use a different preset, add it to the `devDependencies` in `package.json` and specify in your `app.config.js`. + +## This project was created with the [Solid CLI](https://solid-cli.netlify.app) diff --git a/dev/solidjs/app.config.timestamp_1725139690308.js b/dev/solidjs/app.config.timestamp_1725139690308.js new file mode 100644 index 0000000000..8515eb3ffd --- /dev/null +++ b/dev/solidjs/app.config.timestamp_1725139690308.js @@ -0,0 +1,6 @@ +// app.config.ts +import { defineConfig } from "@solidjs/start/config"; +var app_config_default = defineConfig({}); +export { + app_config_default as default +}; diff --git a/dev/solidjs/app.config.ts b/dev/solidjs/app.config.ts new file mode 100644 index 0000000000..de7f83103a --- /dev/null +++ b/dev/solidjs/app.config.ts @@ -0,0 +1,3 @@ +import { defineConfig } from "@solidjs/start/config"; + +export default defineConfig({}); diff --git a/dev/solidjs/db.sqlite b/dev/solidjs/db.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..b99b72d02d2b8e0ed1b81fd02b907abd61718737 GIT binary patch literal 45056 zcmeI*+i&97831qyxseRetu%_NdGTah?Vyfj1BqSlLs+BwYdE&8se0=Qh zcMOEjhU8Dul8%VFqP7K{U>sj@IGv7<2*TlTyu#xq9;d?!o>`tQ;HmT4{C%^p9D%E@ z$M<)~#zx-Z{ipAjo)=#Bg)ecy&q4gw$m0w4eaAOHd&@P8vP`i^^T z>*-VH51;8mwS^1~sphy5%kj|yPZXm2X`a|Ni?)du+mg6V=xC@D9R-g@t3`BGsV%6N zgp4j<5!)T1jc(PzrKl}Pt$T_~NR{dm!tF{O9W{_TYZ`Ben{HU`;ia021RaS{eVY*R z%=L;!*DRS|<^Nz~b?d{YPKVSH(NOEP@UPDm!O)fQa>Wd*LYe<>jtXmQThE?3-~M3i zpdn3@l#Vr7zo}uBJ_ZC0yON5uyN+4vMnw^?(`!UaV}of#@_0JAr57E0pHVcIjqgT$gtw_W<(jIWRyMd+0XqXU_r?1CQ=u#Wu18H}+i94(N zQ%kE`mB<%VxCg+6UrpA{R}>E(U0&YdqrJbw6Bs}M1V8`;KmY_l00ck)1V8`;K;V9X z@4J>qC$Fgx%~4E<3x#PmSQRuhNrsv4fS+s6^__9f?(?~6n(lcOuN$Z3@VffWEG73` z#O1RroVoNpnxxqsGQ7i31)ALB=shkH2!*I~d1-m{@{avalTovj*|^PFmTbJgS%z%3 zloZW_ynAQC@cAg^Tz)IxvA1d7#hOl<+4(#hWwyFANkENfalL6GX}s_2DWGwIl|UNL zU#mPz58-I)JJ+|mxn`O)GPl1cn&9~c?p2rf#|~f0`!_s+0R%t*1V8`;KmY_l00ck) z1V8`;{s#gLoJVl}_wxv@0?rrQv7i4aU$8V{a9+SYfAqG_3z*mcoxZ;~@DB_i00JNY z0w4eaAOHd&00JNY0w4ea?}EU4PM3du_K}bACqB&U|4!du9ryfv91lsZ?_5W>P*)gn71@D0K4edMZ=U)q`F>hrf`Oq=&`y)xqTYKivOs>yrZx z4g^2|1V8`;KmY_l00ck)1V8`;zKFnAT`%3Yatr45f1m56!}ksEp+|Z0v&~O7{#C|6ReCG2tml6a93YWVLHDO&SGB8mS_QH#I@L^e;H z5)@gXxJt-RM7!MzC^9~8&Cuw`9vcpX znUI}B^H`y&J)=}q2FYAEVzkR#Dlt5WRePP2{!#R@k*f`Eg~sl2Tp$$T>>Sz?E41V= zlSlPqj_svcE=m@9igv|^j_Sc`HGEbq>vN$o_*7vdb`EXR3aywghD&{&j@NjV@5P(a zA!X!@_SMCHnnjrdVLmh}KytPYZNmz!a8)|EXw_t4*f7Y>arD^G&TCa3Wx8a%l|%C< zBuxislC^WMxu>D&GSz3KaGy;I*%;3T8^VEJN*B)hZ<1^>b~4v%G#Loew(hlcE40(9 z&WR_bvX<4*S$tUSC(d&5UcZ@?s5XD5i*un-!9aux+qu`)tk7ae)`zWZw^TkJ(sDN) z)w>S#v6DU<2r=0HCy9pnsI7uiIFDWviW zey+UzlFjTf!9b9+b!bj2G%j?MDdjmfq-SC!v7SoBjTBkV9GylaRZNO+=6a2!?fv9$ zUjO%bK6Uthcls;TFD=kXIt(cV-rL>mKN{f<1F0<02G|STau8ez8!ea9I z|09R*$gbxy92W?H00@8p2!H?xfB*=900@8p2-r(`ID?RFojNJcur zcN&r?RFN#yRO6#YTaa3Tn$m9SdRN=q-4*(RE~r{ya_hdKA+@I9JBB;DS!vhUoqj*S zxB9QyTQ?w(du%8`v+V6VWoG4*&;Nhs@O@@COE?}7009sH0T2KI5C8!X009sH0T2Lz OMFJnVitfjxApQ-O&N#OK literal 0 HcmV?d00001 diff --git a/dev/solidjs/package.json b/dev/solidjs/package.json new file mode 100644 index 0000000000..c57cdad105 --- /dev/null +++ b/dev/solidjs/package.json @@ -0,0 +1,22 @@ +{ + "name": "example-with-tailwindcss", + "type": "module", + "scripts": { + "dev": "vinxi dev", + "build": "vinxi build", + "start": "vinxi start" + }, + "dependencies": { + "@solidjs/router": "^0.14.1", + "@solidjs/start": "^1.0.6", + "autoprefixer": "^10.4.19", + "better-auth": "workspace:0.0.2-beta.8", + "postcss": "^8.4.38", + "solid-js": "^1.8.18", + "tailwindcss": "^3.4.3", + "vinxi": "^0.4.1" + }, + "engines": { + "node": ">=18" + } +} diff --git a/dev/solidjs/postcss.config.cjs b/dev/solidjs/postcss.config.cjs new file mode 100644 index 0000000000..33ad091d26 --- /dev/null +++ b/dev/solidjs/postcss.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/dev/solidjs/public/favicon.ico b/dev/solidjs/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..fb282da0719ef6ab4c1732df93be6216b0d85520 GIT binary patch literal 664 zcmV;J0%!e+P)m9ebk1R zejT~~6f_`?;`cEd!+`7(hw@%%2;?RN8gX-L?z6cM( zKoG@&w+0}f@Pfvwc+deid)qgE!L$ENKYjViZC_Zcr>L(`2oXUT8f0mRQ(6-=HN_Ai zeBBEz3WP+1Cw`m!49Wf!MnZzp5bH8VkR~BcJ1s-j90TAS2Yo4j!J|KodxYR%3Numw zA?gq6e`5@!W~F$_De3yt&uspo&2yLb$(NwcPPI-4LGc!}HdY%jfq@AFs8LiZ4k(p} zZ!c9o+qbWYs-Mg zgdyTALzJX&7QXHdI_DPTFL33;w}88{e6Zk)MX0kN{3DX9uz#O_L58&XRH$Nvvu;fO zf&)7@?C~$z1K<>j0ga$$MIg+5xN;eQ?1-CA=`^Y169@Ab6!vcaNP=hxfKN%@Ly^R* zK1iv*s1Yl6_dVyz8>ZqYhz6J4|3fQ@2LQeX@^%W(B~8>=MoEmBEGGD1;gHXlpX>!W ym)!leA2L@`cpb^hy)P75=I!`pBYxP7<2VfQ3j76qLgzIA0000 ( + <> + {props.children} + + )} + > + + + ); +} diff --git a/dev/solidjs/src/components/Counter.tsx b/dev/solidjs/src/components/Counter.tsx new file mode 100644 index 0000000000..c4c9912940 --- /dev/null +++ b/dev/solidjs/src/components/Counter.tsx @@ -0,0 +1,13 @@ +import { createSignal } from "solid-js"; + +export default function Counter() { + const [count, setCount] = createSignal(0); + return ( + + ); +} diff --git a/dev/solidjs/src/components/Nav.tsx b/dev/solidjs/src/components/Nav.tsx new file mode 100644 index 0000000000..5bd0a7835f --- /dev/null +++ b/dev/solidjs/src/components/Nav.tsx @@ -0,0 +1,19 @@ +import { useLocation } from "@solidjs/router"; + +export default function Nav() { + const location = useLocation(); + const active = (path: string) => + path == location.pathname ? "border-sky-600" : "border-transparent hover:border-sky-600"; + return ( + + ); +} diff --git a/dev/solidjs/src/entry-client.tsx b/dev/solidjs/src/entry-client.tsx new file mode 100644 index 0000000000..0ca4e3c300 --- /dev/null +++ b/dev/solidjs/src/entry-client.tsx @@ -0,0 +1,4 @@ +// @refresh reload +import { mount, StartClient } from "@solidjs/start/client"; + +mount(() => , document.getElementById("app")!); diff --git a/dev/solidjs/src/entry-server.tsx b/dev/solidjs/src/entry-server.tsx new file mode 100644 index 0000000000..401eff83fd --- /dev/null +++ b/dev/solidjs/src/entry-server.tsx @@ -0,0 +1,21 @@ +// @refresh reload +import { createHandler, StartServer } from "@solidjs/start/server"; + +export default createHandler(() => ( + ( + + + + + + {assets} + + +
{children}
+ {scripts} + + + )} + /> +)); diff --git a/dev/solidjs/src/global.d.ts b/dev/solidjs/src/global.d.ts new file mode 100644 index 0000000000..dc6f10c226 --- /dev/null +++ b/dev/solidjs/src/global.d.ts @@ -0,0 +1 @@ +/// diff --git a/dev/solidjs/src/lib/auth.ts b/dev/solidjs/src/lib/auth.ts new file mode 100644 index 0000000000..31211a051c --- /dev/null +++ b/dev/solidjs/src/lib/auth.ts @@ -0,0 +1,15 @@ +import { betterAuth } from "better-auth"; +import { github } from "better-auth/social-providers"; + +export const auth = betterAuth({ + database: { + provider: "sqlite", + url: "./db.sqlite", + }, + socialProvider: [ + github({ + clientId: process.env.GITHUB_CLIENT_ID as string, + clientSecret: process.env.GITHUB_CLIENT_SECRET as string, + }), + ], +}); diff --git a/dev/solidjs/src/lib/client.ts b/dev/solidjs/src/lib/client.ts new file mode 100644 index 0000000000..1179f4a635 --- /dev/null +++ b/dev/solidjs/src/lib/client.ts @@ -0,0 +1,2 @@ +import { createAuthClient } from "better-auth/solid"; +export const client = createAuthClient(); diff --git a/dev/solidjs/src/routes/[...404].tsx b/dev/solidjs/src/routes/[...404].tsx new file mode 100644 index 0000000000..03e9484e69 --- /dev/null +++ b/dev/solidjs/src/routes/[...404].tsx @@ -0,0 +1,25 @@ +import { A } from "@solidjs/router"; + +export default function NotFound() { + return ( +
+

Not Found

+

+ Visit{" "} + + solidjs.com + {" "} + to learn how to build Solid apps. +

+

+ + Home + + {" - "} + + About Page + +

+
+ ); +} diff --git a/dev/solidjs/src/routes/about.tsx b/dev/solidjs/src/routes/about.tsx new file mode 100644 index 0000000000..1321ac3cdf --- /dev/null +++ b/dev/solidjs/src/routes/about.tsx @@ -0,0 +1,25 @@ +import { A } from "@solidjs/router"; +import Counter from "~/components/Counter"; + +export default function About() { + return ( +
+

About Page

+ +

+ Visit{" "} + + solidjs.com + {" "} + to learn how to build Solid apps. +

+

+ + Home + + {" - "} + About Page +

+
+ ); +} diff --git a/dev/solidjs/src/routes/api/auth/*auth.ts b/dev/solidjs/src/routes/api/auth/*auth.ts new file mode 100644 index 0000000000..8666b416ce --- /dev/null +++ b/dev/solidjs/src/routes/api/auth/*auth.ts @@ -0,0 +1,4 @@ +import { auth } from "~/lib/auth"; +import { toSolidStartHandler } from "better-auth/solid-start"; + +export const { GET, POST } = toSolidStartHandler(auth); diff --git a/dev/solidjs/src/routes/index.tsx b/dev/solidjs/src/routes/index.tsx new file mode 100644 index 0000000000..ce01ac54d0 --- /dev/null +++ b/dev/solidjs/src/routes/index.tsx @@ -0,0 +1,31 @@ +import { client } from "~/lib/client"; + + +export default function Home() { + const session = client.useSession() + return ( +
+ { + session() ?
+

+ {session()?.user.name} +

+

+ {session()?.user.email} +

+ +
: + } +
+ ); +} diff --git a/dev/solidjs/tailwind.config.cjs b/dev/solidjs/tailwind.config.cjs new file mode 100644 index 0000000000..14d3e24e3b --- /dev/null +++ b/dev/solidjs/tailwind.config.cjs @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ["./src/**/*.{html,js,jsx,ts,tsx}"], + theme: { + extend: {} + }, + plugins: [] +}; diff --git a/dev/solidjs/tsconfig.json b/dev/solidjs/tsconfig.json new file mode 100644 index 0000000000..3ad477f77c --- /dev/null +++ b/dev/solidjs/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "jsx": "preserve", + "jsxImportSource": "solid-js", + "allowJs": true, + "noEmit": true, + "strict": true, + "types": ["vinxi/types/client"], + "isolatedModules": true, + "paths": { + "~/*": ["./src/*"] + } + } +} diff --git a/dev/svelte/.gitignore b/dev/svelte/.gitignore new file mode 100644 index 0000000000..79518f7164 --- /dev/null +++ b/dev/svelte/.gitignore @@ -0,0 +1,21 @@ +node_modules + +# Output +.output +.vercel +/.svelte-kit +/build + +# OS +.DS_Store +Thumbs.db + +# Env +.env +.env.* +!.env.example +!.env.test + +# Vite +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/dev/svelte/.npmrc b/dev/svelte/.npmrc new file mode 100644 index 0000000000..b6f27f1359 --- /dev/null +++ b/dev/svelte/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/dev/svelte/README.md b/dev/svelte/README.md new file mode 100644 index 0000000000..5ce676612e --- /dev/null +++ b/dev/svelte/README.md @@ -0,0 +1,38 @@ +# create-svelte + +Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npm create svelte@latest + +# create a new project in my-app +npm create svelte@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. diff --git a/dev/svelte/db.sqlite b/dev/svelte/db.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..2396d8fdefadf7e4a32c481957ac40c5bee260fa GIT binary patch literal 61440 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 + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/dev/svelte/src/hooks.server.ts b/dev/svelte/src/hooks.server.ts new file mode 100644 index 0000000000..bec86f40c1 --- /dev/null +++ b/dev/svelte/src/hooks.server.ts @@ -0,0 +1,6 @@ +import { auth } from "$lib/auth"; +import { svelteKitHandler } from "better-auth/svelte-kit"; + +export async function handle({ event, resolve }) { + return svelteKitHandler({ event, resolve, auth }); +} diff --git a/dev/svelte/src/lib/auth.ts b/dev/svelte/src/lib/auth.ts new file mode 100644 index 0000000000..1bb842ae64 --- /dev/null +++ b/dev/svelte/src/lib/auth.ts @@ -0,0 +1,16 @@ +import { env } from "$env/dynamic/private"; +import { betterAuth } from "better-auth"; +import { github } from "better-auth/social-providers"; + +export const auth = betterAuth({ + database: { + provider: "sqlite", + url: "./db.sqlite", + }, + socialProvider: [ + github({ + clientId: env.GITHUB_CLIENT_ID, + clientSecret: env.GITHUB_CLIENT_SECRET, + }), + ], +}); diff --git a/dev/svelte/src/lib/client.ts b/dev/svelte/src/lib/client.ts new file mode 100644 index 0000000000..c94ea55125 --- /dev/null +++ b/dev/svelte/src/lib/client.ts @@ -0,0 +1,7 @@ +import { createAuthClient } from "better-auth/svelte"; +import { organization } from "better-auth/client"; + +export const client = createAuthClient({ + baseURL: "http://localhost:3000/api/auth", + authPlugins: [organization], +}); diff --git a/dev/svelte/src/lib/index.ts b/dev/svelte/src/lib/index.ts new file mode 100644 index 0000000000..856f2b6c38 --- /dev/null +++ b/dev/svelte/src/lib/index.ts @@ -0,0 +1 @@ +// place files you want to import through the `$lib` alias in this folder. diff --git a/dev/svelte/src/routes/+page.svelte b/dev/svelte/src/routes/+page.svelte new file mode 100644 index 0000000000..9b900ffe49 --- /dev/null +++ b/dev/svelte/src/routes/+page.svelte @@ -0,0 +1,79 @@ + + +
+
+
+ {#if $session} +
+

+ {$session?.user.name} +

+

+ {$session?.user.email} +

+ +
+ {:else} + + {/if} +
+
+
+ + diff --git a/dev/svelte/static/favicon.png b/dev/svelte/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..825b9e65af7c104cfb07089bb28659393b4f2097 GIT binary patch literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH p.id === c.body.provider, ); if (!provider) { + c.context.logger.error( + "Provider not found. Make sure to add the provider to your auth config", + { + provider: c.body.provider, + }, + ); throw new APIError("NOT_FOUND"); } const cookie = c.context.authCookies; diff --git a/packages/better-auth/src/client/base.ts b/packages/better-auth/src/client/base.ts index 2d31191f27..7ce5275857 100644 --- a/packages/better-auth/src/client/base.ts +++ b/packages/better-auth/src/client/base.ts @@ -31,10 +31,7 @@ export const createAuthClient = ( /** * used for plugins only */ - const $baseFetch = createFetch({ - ...options, - baseURL: getBaseURL(options?.baseURL).withPath, - }); + const $baseFetch = createFetch(); const $fetch = createFetch({ method: "GET", ...options, diff --git a/packages/better-auth/src/client/create-client-plugin.ts b/packages/better-auth/src/client/create-client-plugin.ts index 16626933ba..ecfd6bcfaf 100644 --- a/packages/better-auth/src/client/create-client-plugin.ts +++ b/packages/better-auth/src/client/create-client-plugin.ts @@ -15,6 +15,7 @@ export const createClientPlugin = () => { react?: (useStore: typeof reactStore) => Record; vue?: (useStore: typeof vueStore) => Record; preact?: (useStore: typeof preactStore) => Record; + svelte?: () => Record; }, >( $fn: ($fetch: BetterFetch) => { diff --git a/packages/better-auth/src/client/solid.ts b/packages/better-auth/src/client/solid.ts new file mode 100644 index 0000000000..84d6259a75 --- /dev/null +++ b/packages/better-auth/src/client/solid.ts @@ -0,0 +1,17 @@ +import type { ClientOptions } from "./type"; +import { createAuthClient as createClient } from "./base"; +import { useStore } from "@nanostores/solid"; +import type * as SolidJS from "solid-js"; //to fix ts error: This is likely not portable. A type annotation is necessary. +export const createAuthClient =