{"id":51405288,"url":"https://github.com/alyldas/uniauth-better-auth-bridge","last_synced_at":"2026-07-04T10:31:42.245Z","repository":{"id":360700160,"uuid":"1250378244","full_name":"alyldas/uniauth-better-auth-bridge","owner":"alyldas","description":"Better Auth bridge helpers for UniAuth provider sign-in assertions.","archived":false,"fork":false,"pushed_at":"2026-05-27T14:22:10.000Z","size":43,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T15:15:38.073Z","etag":null,"topics":["auth","authentication","better-auth","bridge","oauth","typescript","uniauth"],"latest_commit_sha":null,"homepage":"https://github.com/alyldas/uniauth-better-auth-bridge#readme","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alyldas.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-26T15:13:16.000Z","updated_at":"2026-05-27T14:21:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/alyldas/uniauth-better-auth-bridge","commit_stats":null,"previous_names":["alyldas/uniauth-better-auth-bridge"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/alyldas/uniauth-better-auth-bridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alyldas%2Funiauth-better-auth-bridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alyldas%2Funiauth-better-auth-bridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alyldas%2Funiauth-better-auth-bridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alyldas%2Funiauth-better-auth-bridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alyldas","download_url":"https://codeload.github.com/alyldas/uniauth-better-auth-bridge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alyldas%2Funiauth-better-auth-bridge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35118970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-04T02:00:05.987Z","response_time":113,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auth","authentication","better-auth","bridge","oauth","typescript","uniauth"],"created_at":"2026-07-04T10:31:41.712Z","updated_at":"2026-07-04T10:31:42.240Z","avatar_url":"https://github.com/alyldas.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UniAuth Better Auth Bridge\n\n[![GitHub Packages](https://img.shields.io/static/v1?label=GitHub%20Packages\u0026message=%40alyldas%2Funiauth-better-auth-bridge\u0026color=24292f\u0026logo=github)](https://github.com/users/alyldas/packages/npm/package/uniauth-better-auth-bridge)\n\n`@alyldas/uniauth-better-auth-bridge` maps Better Auth OAuth account and profile data into a UniAuth\n`ProviderIdentityAssertion`.\n\n## Runtime Boundary\n\nThis package does not own Better Auth setup, routes, callbacks, cookies, framework sessions, token\nstorage, token refresh, or provider SDK runtime. Use it only after Better Auth has already validated\nthe provider response.\n\n## Install\n\nConfigure the GitHub Packages registry for the package scope before installing:\n\n```ini\n@alyldas:registry=https://npm.pkg.github.com\n```\n\nGitHub Packages can require authentication for package reads. Use a token with `read:packages` in local npm config or CI secrets; do not commit tokens.\n\n```bash\nnpm install @alyldas/uniauth-core @alyldas/uniauth-better-auth-bridge\n```\n\n## Usage\n\n```ts\nimport { mapBetterAuthOAuthToAssertion } from '@alyldas/uniauth-better-auth-bridge'\n\nconst assertion = mapBetterAuthOAuthToAssertion({\n  providerId: 'discord-app',\n  account: {\n    providerId: account.providerId,\n    accountId: account.accountId,\n  },\n  profile: oauthProfile\n    ? {\n        id: oauthProfile.id,\n        email: oauthProfile.email,\n        emailVerified: oauthProfile.emailVerified,\n        name: oauthProfile.name,\n        image: oauthProfile.image,\n      }\n    : undefined,\n  user: frameworkUser\n    ? {\n        email: frameworkUser.email,\n        emailVerified: frameworkUser.emailVerified,\n        name: frameworkUser.name,\n        image: frameworkUser.image,\n      }\n    : undefined,\n  metadata: {\n    tenantId,\n  },\n})\n\nawait auth.public.provider.signIn({ assertion })\n```\n\nThe helper accepts either `account.accountId` or `profile.id`. If both are present and disagree, the\nhelper rejects the input.\n\nPass `providerId` when the UniAuth provider namespace should differ from the Better Auth provider\nid. The original Better Auth provider id is then kept as `metadata.frameworkProviderId`.\n\n## Security Notes\n\n- Do not pass raw Better Auth account, profile, token, request, or session objects as metadata.\n- Access tokens, refresh tokens, and ID tokens are never copied by this bridge.\n- Token storage remains application-owned.\n- UniAuth policy invariants still apply after mapping.\n\n## Local Checks\n\n```bash\nnpm run check\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falyldas%2Funiauth-better-auth-bridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falyldas%2Funiauth-better-auth-bridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falyldas%2Funiauth-better-auth-bridge/lists"}