better-auth
Version:
The most comprehensive authentication framework for TypeScript.
1 lines • 2.81 kB
Source Map (JSON)
{"version":3,"file":"base.mjs","names":[],"sources":["../../src/auth/base.ts"],"sourcesContent":["import type { AuthContext, BetterAuthOptions } from \"@better-auth/core\";\nimport { runWithAdapter } from \"@better-auth/core/context\";\nimport { BASE_ERROR_CODES, BetterAuthError } from \"@better-auth/core/error\";\nimport { getEndpoints, router } from \"../api\";\nimport { getTrustedOrigins } from \"../context/helpers\";\nimport type { Auth } from \"../types\";\nimport { getBaseURL, getOrigin } from \"../utils/url\";\n\nexport const createBetterAuth = <Options extends BetterAuthOptions>(\n\toptions: Options &\n\t\t// fixme(alex): do we need Record<never, never> here?\n\t\tRecord<never, never>,\n\tinitFn: (options: Options) => Promise<AuthContext>,\n): Auth<Options> => {\n\tconst authContext = initFn(options);\n\tconst { api } = getEndpoints(authContext, options);\n\tconst errorCodes = options.plugins?.reduce((acc, plugin) => {\n\t\tif (plugin.$ERROR_CODES) {\n\t\t\treturn {\n\t\t\t\t...acc,\n\t\t\t\t...plugin.$ERROR_CODES,\n\t\t\t};\n\t\t}\n\t\treturn acc;\n\t}, {});\n\treturn {\n\t\thandler: async (request: Request) => {\n\t\t\tconst ctx = await authContext;\n\t\t\tconst basePath = ctx.options.basePath || \"/api/auth\";\n\t\t\tif (!ctx.options.baseURL) {\n\t\t\t\tconst baseURL = getBaseURL(\n\t\t\t\t\tundefined,\n\t\t\t\t\tbasePath,\n\t\t\t\t\trequest,\n\t\t\t\t\tundefined,\n\t\t\t\t\tctx.options.advanced?.trustedProxyHeaders,\n\t\t\t\t);\n\t\t\t\tif (baseURL) {\n\t\t\t\t\tctx.baseURL = baseURL;\n\t\t\t\t\tctx.options.baseURL = getOrigin(ctx.baseURL) || undefined;\n\t\t\t\t} else {\n\t\t\t\t\tthrow new BetterAuthError(\n\t\t\t\t\t\t\"Could not get base URL from request. Please provide a valid base URL.\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tctx.trustedOrigins = await getTrustedOrigins(ctx.options, request);\n\t\t\tconst { handler } = router(ctx, options);\n\t\t\treturn runWithAdapter(ctx.adapter, () => handler(request));\n\t\t},\n\t\tapi,\n\t\toptions: options,\n\t\t$context: authContext,\n\t\t$ERROR_CODES: {\n\t\t\t...errorCodes,\n\t\t\t...BASE_ERROR_CODES,\n\t\t},\n\t} as any;\n};\n"],"mappings":";;;;;;;AAQA,MAAa,oBACZ,SAGA,WACmB;CACnB,MAAM,cAAc,OAAO,QAAQ;CACnC,MAAM,EAAE,QAAQ,aAAa,aAAa,QAAQ;AAUlD,QAAO;EACN,SAAS,OAAO,YAAqB;GACpC,MAAM,MAAM,MAAM;GAClB,MAAM,WAAW,IAAI,QAAQ,YAAY;AACzC,OAAI,CAAC,IAAI,QAAQ,SAAS;IACzB,MAAM,UAAU,WACf,QACA,UACA,SACA,QACA,IAAI,QAAQ,UAAU,oBACtB;AACD,QAAI,SAAS;AACZ,SAAI,UAAU;AACd,SAAI,QAAQ,UAAU,UAAU,IAAI,QAAQ,IAAI;UAEhD,OAAM,IAAI,gBACT,wEACA;;AAGH,OAAI,iBAAiB,MAAM,kBAAkB,IAAI,SAAS,QAAQ;GAClE,MAAM,EAAE,YAAY,OAAO,KAAK,QAAQ;AACxC,UAAO,eAAe,IAAI,eAAe,QAAQ,QAAQ,CAAC;;EAE3D;EACS;EACT,UAAU;EACV,cAAc;GACb,GAtCiB,QAAQ,SAAS,QAAQ,KAAK,WAAW;AAC3D,QAAI,OAAO,aACV,QAAO;KACN,GAAG;KACH,GAAG,OAAO;KACV;AAEF,WAAO;MACL,EAAE,CAAC;GA+BJ,GAAG;GACH;EACD"}